Skip to contents

tempest 0.0.0.9000

  • Tempest’s research tools declare their actual read, provisional-write, and web effects, including moderator delegation. Deputy >= 0.0.0.9002 can enforce its base permission policy without a permissive callback, while file writes and ambient execution remain disabled. The supported ecosystem pins use the validated merged Deputy, dsprrr, Graft, and shinymcp revisions (JamesHWade/deputy#223, JamesHWade/deputy#234).

  • tempest_app(demo = TRUE) opens an offline ecosystem demonstration with actual deputy and dsprrr execution, synthetic initial and corrected research, a shinymcp card, explicit Graft acceptance and withdrawal, and fresh-process exact-evidence reuse (#186).

  • tempest_mcp_app() presents one completed STORM or Co-STORM product as a pinned, read-only MCP App with a compact overview, exact claim-by-span evidence, and the committed report; rendering and inspection do not rerun research or record acceptance (#186).

  • Deputy-backed STORM and Co-STORM setup errors now identify safe underlying causes while redacting credential-like details (#69).

  • tempest_research_workspace(), tempest_resource(), and tempest_source_id() now provide supported workspace, fetched evidence, and source identity constructors for host retrievers passed to STORM or Co-STORM (#70).

  • Tempest’s Graft artifact consumer now uses contract 4 task-oriented APIs and typed S7 stores, references, selections, artifacts, and decisions while preserving exact research identity, reviewed predecessor checks, and current eligibility rechecks (JamesHWade/graft#91).

  • Accepted research now uses artifact selections throughout STORM and Co-STORM inputs, save, restore, resume, and daily-briefing examples. Native Graft views, graph promotion plans/receipts, compiled schemas, and snapshot sidecars are removed. Current formats are workspace 7, research manifest 5, STORM bundle 10, Co-STORM snapshot/bundle 13, and trajectory review 3; older shapes are rejected without compatibility wrappers (zf9y; Graft #50, #74).

  • Research manifests now retain the exact artifact evidence selection for STORM and Co-STORM, reject a different workspace basis, and preserve that provenance in published corrections. Manifest schema 5 requires regenerating earlier preproduction bundles (zf9y; Graft #50, #74).

  • The offline artifact correction proof now executes two complete STORM runs, reviews contradictory evidence, and verifies historical reports and supports plus current eligibility after fresh-process reopening (zf9y; Graft #50).

  • tempest_publish_artifact_research(), tempest_read_artifact_research(), and tempest_reuse_artifact_research() preserve completed research through Graft’s public artifact and decision interfaces, retain exact reports and evidence, and recheck current host eligibility at research admission (srvc).

  • tempest_session_resume() and STORM resume now require freshly supplied artifact knowledge matching the saved selection; policy callbacks and store handles remain transient (srvc).

  • tempest_trajectory_review() now projects exact input artifact selections and output publications with explicit historical acceptance decisions in schema 3; native output receipts and every other review schema are rejected (JamesHWade/graft#74).

  • Persisted workspace, STORM, and Co-STORM formats are now 7, 10, and 13. Regenerate older experimental bundles; compatibility readers are not provided.

  • tempest_artifact_knowledge() admits an exact host-selected artifact input without a Graft view and preserves its content, revision references, dependencies, and provenance across save/resume (graft #64).

  • Tempest no longer pins ellmer to a fork commit in Remotes. Released ellmer (>= 0.5.0) satisfies the dependency, so Tempest installs beside packages that require ellmer 0.5 (querychat 0.4.0 broke every dowci CI build on the old pin). When the installed ellmer lacks the ChatGPT subscription-authentication port, openai/ chats fall back to API-key authentication with a once-per-session note instead of aborting.

  • The daily briefing example preserves complete selected evidence across unchanged days and reviewed corrections, with an executable offline companion (graft #50).

  • Subscription authentication now uses the ellmer 0.5-based port of upstream subscription support, allowing current Graft dependencies to resolve (tidyverse/ellmer#1067).

  • The development package version is 0.0.0.9000 while Tempest remains unreleased. Compatibility contracts and persisted storage formats retain their independent versions.

  • Tempest now installs reviewed Deputy, dsprrr, and Graft commits for repeatable integration checks, while a weekly job checks compatibility with their current main branches (#69). dsprrr’s module() no longer takes type, and its runner requires a real ellmer Chat, so the test fakes are R6-classed environments that expose chat history (0mpk).

  • Briefing items now decide structurally whether a verified claim changes accepted knowledge: tempest_run() compares each claim’s text with the Claim records retained in the artifact selection, so an observation must be a claim that is not yet accepted and renders under “What changed”, while a no-change item must restate an accepted claim. The previous language-pattern gate for no-change claims is removed, and reloading a report re-checks the same disposition (0mpk).

  • Internal ellmer Chat clients are now governed directly by Deputy Agent objects while preserving Tempest’s exact completion and terminal-trace bindings; this removes Tempest’s parallel hand-built Chat facade and accepts real R6 ellmer clients, including shinychat attachment content (pjsd).

  • The public namespace now has 23 exports and one S3 method, print.tempest_knowledge(). Product entry points remain compact, while workspace, resource, and source-ID constructors provide a narrow supported host-retriever seam. Generic workflow, compiler, evaluation, progress, async execution, and Shiny implementation surfaces remain internal; the bundled application is reachable through tempest_app() (pjsd; #70; #83).

  • User-facing failures now inherit tempest_error and exactly one public category: tempest_input_error, tempest_execution_error, tempest_persistence_error, tempest_authority_error, or tempest_cancelled; internal subclasses remain for diagnostics, and the original provider or package condition stays reachable through the ordinary parent chain (pjsd).

  • SimulatedUser, tempest_task(), tempest_costorm_task(), tempest_compile_programs(), tempest_save_program_set(), and tempest_load_program_set() are removed without replacement; standalone evaluation and file-backed ProgramSet compilation are no longer Tempest capabilities, and resume continues to verify a supplied ProgramSet against persisted program identity (pjsd).

  • Progress callbacks now receive one canonical plain named record with exactly event_id, run_id, workflow, event_type, stage, step, status, timestamp, message, payload, parent_event_id, and correlation_id, so hosts can store and reduce progress with ordinary R code instead of event constructors, decoders, or label tables (pjsd).

  • TempestSession is reduced to six operations (warmup(), step(), suggest_questions(), add_expert(), retire_expert(), and publish()) and six read-only projections (session_id, topic, status, experts, transcript, and mindmap); publish() replaces the mutating report() method, and completion claiming, event emission, Deputy routing, mind-map maintenance, and workspace and manifest mutation are now private (pjsd).

  • tempest_app() replaces run_app() so every Tempest entry point is visibly namespaced (pjsd).

  • tempest_claim_supports() now returns the complete joined proof table, adding claim text and the exact evidence-span quote, offsets, page, and section heading to the existing support, claim, and source identities (pjsd).

  • tempest_report() is now the one read accessor for the committed Markdown report of a completed tempest_run() product or a published session, replacing tempest_report_md() and tempest_session_report_md() (pjsd).

  • tempest_run() now returns one validated product value read through tempest_report(), tempest_sources(), tempest_claims(), tempest_claim_supports(), and tempest_trajectory_review(); the raw retriever, mutable workspace, manifest, and stage state are no longer part of the supported result surface (pjsd).

  • tempest_run() now canonicalizes dsprrr’s typed tabular structured results before strict validation and renders governed briefing items: observations copy threshold-verified claims exactly, while affirmative no-change findings must also pass a conservative deterministic language gate that rejects claims asserting another change; assessments and review actions stay visibly labeled and bound to their exact claim IDs, missing or inconclusive evidence is never presented as no change, and reports reject altered or repetitive items whose hidden provenance no longer matches the visible Markdown (pjsd).

  • tempest_trajectory_review_data() exposes the validated, schema-versioned plain projection from an exact tempest_trajectory_review() value; Tempest rechecks the closed fields, nested identities and bindings, canonical-set ordering and uniqueness, bounded acceptance reconciliation, and content-bound review identity so downstream adapters do not duplicate source invariants (scans#21).

  • Tempest 0.3 begins a hard, pre-production API reset: Agent Skill and Open Knowledge Format APIs and assets, standalone tempest_suggest_questions(), permissive provider, model, and environment aliases, always-rejected STORM arguments, optional partial session recovery, and the Deputy SDK-compatibility hook have been removed without deprecation or migration shims; Graft is the sole accepted-knowledge compatibility boundary (pjsd).

  • Experimental OpenTelemetry tracing can be enabled for bounded Tempest STORM, stage-execution, retrieval search/fetch, and Co-STORM moderator-completion, turn-commit, warmup, and report operations through a host-configured provider; the bundled Shiny STORM worker forwards only a validated Boolean intent, and local OTLP/HTTP Collector setup is documented without adding provider or backend ownership; the privacy-safe projection is off by default and excludes research content, identifiers, URLs, and arbitrary progress payloads (bavj).

  • The bundled Shiny workspace settings drawer now moves keyboard focus into its named controls, keeps mobile focus inside the full-width drawer, closes with Escape, restores the exact launcher, synchronizes launcher state, and leaves the desktop chat interactive (dqyv).

  • Tempest now uses Deputy’s current constructor, drop-in Chat, hook, and policy APIs: every product-owned session identifier passes through Agent$new(session_id = ) and is verified against the live runtime, async hosting calls stream_async() directly, run limits live only in UsageLimits, retired compatibility modes and hook results are gone, and current "cost_unavailable" and "tool_loop" terminal reasons remain distinct instead of collapsing to a generic error (JamesHWade/deputy#56).

  • Co-STORM expert-session identities now bind their research run and expert owner while retaining a fresh session instance suffix; snapshot and bundle schema 13 rejects earlier formats rather than silently reinterpreting its legacy session identifiers (scans#21).

  • tempest_expert() now accepts only six authored scientific-profile fields, derives immutable identity and version from canonical content, and separates Co-STORM retirement into session-roster state; expert profile schema 2, STORM state schema 5 and bundle schema 10, and Co-STORM snapshot and bundle schema 13 have no compatibility readers (pjsd).

  • Internally, TempestResource is the only writable evidence representation: retriever fetches, provider-native evidence, caches, workspace persistence, and direct workspace insertion all require exact records, while source-shaped values remain read-only presentation projections; legacy source lists and conversion paths have been deleted without compatibility handling (pjsd).

tempest 0.2.0

  • Tempest is now explicitly scoped as a scientific-research product. Its experimental application-neutral workflow, runtime, capability, connection, skill, deliverable, artifact, and generic host-state kernel has been removed physically, including 41 public export names and two internal run restore/resume symbols; tempest_run() and tempest_session() are the supported execution paths, with no compatibility or migration layer (an7p).
  • Tempest 0.2 is a hard cut to canonical research-product contracts: ResearchWorkspace replaces SourceStore; STORM and Co-STORM expose no store aliases, legacy collection names, generic runtime injection, or generic result projections; old product bundles fail as unsupported; manifests carry exact dsprrr program, Graft snapshot, and Deputy execution identities; and the namespace contains exactly 63 exports with two registered S3 methods. Deputy identities support correlation and audit joins only, not claims of causal content provenance.
  • Current persistence is split among shared product-envelope primitives, ResearchWorkspace snapshots, Co-STORM bundles, and STORM bundles; it accepts only ResearchWorkspace snapshot schema 5, Co-STORM snapshot and bundle schema 9, STORM bundle schema 7 with state schema 4, ProgramSet schema 2, research-manifest schema 3, StageRecord output-digest payload schema 3, and promotion-bundle schema 1. Readers reject every other version, missing or extra fields, and values that only become valid after coercion.
  • The bundled Shiny app now presents Co-STORM setup as a one-time native shinychat greeting with consistently sized controls, lets users replace generated panels with up to five named expert perspectives, adds asynchronous STORM, Transcript, and bounded Run review panels, retains explicit bounded session download/upload without autosave or parallel-research controls, labels mutable progress separately from authoritative StageRecords, and announces progress and success with polite status regions and failures with alerts.
  • tempest_agent_skills() and tempest_install_agent_skills() expose and install exactly the two supported research skills; the three retired generic-workflow skill directories have been removed.
  • tempest_claim_support() and tempest_claim_supports() make each verifier judgment an explicit claim-by-evidence-span record with a deterministic identity, source binding, status, score, and rationale; tempest_verify_claims() replaces the complete pair set atomically, while claim summaries and citation audits are derived projections.
  • tempest_config() removes the obsolete artifact_store, enable_discourse_manager, node_expansion_trigger_count, and enable_unseen_surfacing controls; passing any of them is an error.
  • tempest_costorm_task() and tempest_task() now evaluate real completed Co-STORM and STORM products by default, accept exact caller datasets plus optional ProgramSet and knowledge-view controls for their built-in solvers, return exact committed reports, and expose only bounded credential-safe trajectory summaries as solver metadata; custom solvers cannot claim those unverified controls.
  • tempest_governed_procedure_ref() resolves an accepted GovernedProcedure and exact dsprrr ProgramArtifact only through a pinned Graft view. ProgramSets carrying these typed references require the matching live view before provider execution; serialized references never grant authority by themselves.
  • tempest_graft_schema() loads the immutable compiled scientific schema, while tempest_promotion_bundle(research, claim_ids = NULL), tempest_save_promotion_bundle(), tempest_read_promotion_bundle(), tempest_graft_plan(), and tempest_promotion_receipt() provide a deterministic review-only path from a completed STORM result or succeeded TempestSession to exact accepted Graft revisions. Loose Workspace, Manifest, and StageRecord tuples are rejected; reading requires the original bundle id as an out-of-band trust pin; Tempest never commits a promotion implicitly; and prior promotion formats are rejected.
  • tempest_program_set(), tempest_compile_programs(), tempest_save_program_set(), and tempest_load_program_set() make all ten STORM and Co-STORM stage programs explicitly addressable, preserve exact dsprrr artifact and evaluator identities, isolate compilation from the baseline, clear a selected stage’s stale governed reference when its artifact changes, and fail closed on incomplete, corrupt, or mismatched program bundles. tempest_run(), tempest_session(), session restore/resume, and tempest_shiny_server() accept and verify the ProgramSet before any stage executes.
  • tempest_report_md() is now explicitly a deterministic, non-authoritative renderer that cannot finalize a Manifest, publish a product, or grant promotion authority, while tempest_session_report_md() reads only the exact report already committed to a succeeded, quiescent Co-STORM session; both preserve canonical titles and citation-policy validation when callers omit the rendered References section.
  • tempest_research_manifest() records the stable run, configuration, program, knowledge-snapshot, runtime, trace, and deliverable identities for STORM and Co-STORM without serializing runtime objects or credentials (04zh).
  • tempest_research_workspace() and ResearchWorkspace define the canonical provisional run-scoped evidence boundary, including an optional real path-free graft::GraftSnapshot, its complete scalar identity, and accepted Graft references (04zh).
  • tempest_run() and tempest_session() expose correlated research manifests and authoritative workspaces using only the canonical 0.2 product vocabulary (04zh).
  • tempest_run() and tempest_session() now persist explicit product-owned execution records for every typed stage, reject unbound or malformed provider output before it can alter scientific state, commit extracted evidence and verification atomically, disclose every failure, cancellation, and fallback in the final report, and permit publication trust only when exact program, trace, claim, evidence-span, and verification provenance can be reconstructed.
  • tempest_run() continues only from an exact output_dir bundle when resume = TRUE; the internal state-only continuation seam has been removed.
  • tempest_run(parallel_research = TRUE) rejects before any provider work because every open-ended expert turn must synchronously bind one terminal Deputy completion.
  • tempest_session() now routes its moderator and every expert through persistent, permission-bounded Deputy agents. Co-STORM snapshots and bundles retain only credential-safe opaque run, session, agent, stage, role, expert, and correlation traces; provider execution and trace recording fail closed, and no Deputy Agent is serialized.
  • tempest_session_process_turn_async() accepts and commits only completion-ID-bound Deputy results; raw chat payloads and legacy execution hints are unsupported.
  • tempest_shiny_server() returns exactly ten product-specific members and tempest_shiny_store() exposes exactly thirteen product-named members, with distinct Co-STORM session/evidence/events, STORM events, authoritative report state, and a monotonic report-navigation event; the installed host example uses the same asynchronous STORM adapter as the bundled app, with no generic run, capability, connection, workflow, deliverable, or artifact accessors.
  • tempest_suggest_questions() is a deterministic projection and no longer accepts chat or configuration controls.
  • tempest_trajectory_review() returns a deterministic, bounded, non-authoritative review of one exact completed STORM or Co-STORM product, with ordered StageRecords, safe program, Deputy, evidence, and knowledge identities, explicit proposed or accepted promotion state, and non-causal join proofs; mutable progress, prompts, responses, source text, credentials, live objects, and capabilities are excluded.

tempest 0.1.0

  • Persistence bundles from before the reusable workflow-kernel cutover are intentionally unsupported: Co-STORM restore requires schema version 4, and staged STORM restore requires schema version 3 with typed artifact indexes; completed perspective stages persist fingerprinted expert profiles (vtvt, wgr8).
  • The bundled Shiny app now escapes untrusted model and source content, rejects unsafe links, isolates browser session storage behind upload/download archives with quotas and private permissions, provides cancellable STORM workers, runs Co-STORM expert generation, enrichment, suggestions, and reports asynchronously with provider-correct requests and ordered stale-safe commits, quarantines timed-out expert chats, and exposes an accessible keyboard-operable mind-map outline (da4c, 16dv, pyxm, qx4q, t593, gcg1).
  • run_app() now inherits the package-level tempest.chat default while its model fields remain untouched; editing any model field switches the app to explicit per-role models. Tempest once again declares the shinychat development dependency required by the app and reports how to update an incompatible loaded version before launching.
  • SourceStore now validates source, claim, evidence-span, and dispute mutations, rejects orphan references and source-budget overflow, and keeps reverse indexes correct when claims are replaced; the unused parallel S7 source representation was removed (67h9, y2kw).
  • SourceStore and tempest_resource() now support fingerprinted web, file, message, database, and host-defined evidence resources with opaque locators, connection provenance, redaction and retention metadata, and durable claim lineage without requiring public URLs (fr54).
  • tempest_agent_skills() and tempest_install_agent_skills() expose and install the two supported research skills; three generic-workflow directories remain only as inactive deletion inventory until T8 removes them physically (cheg).
  • tempest_artifact(), tempest_artifact_catalog(), tempest_artifact_store(), tempest_deliverable_spec(), tempest_generate_deliverable(), tempest_objective(), and tempest_operation_registry() add an application-neutral output lifecycle with versioned operation references, validation, evidence lineage, typed multi-format artifacts, approval-before-export enforcement, safe invalid-output retries, host storage adapters, and checksummed persistence shared by STORM, Co-STORM, and host-defined outcomes (xbwy).
  • tempest_artifact_codec_registry() and tempest_artifact_store() provide versioned runtime codecs and complete typed storage adapters for inline or external custom artifact representations without serializing executable codec functions (fr54).
  • tempest_config() now validates scalar model, logical, search, source, expert, query, and retrieval budgets immediately with classed errors, and provider tools cannot exceed configured search limits (y2kw).
  • tempest_config() now honors the tempest.chat R option for a default provider/model string or cloneable ellmer Chat; explicit models and chat_fn arguments still take precedence, and role-specific prompts are preserved (serz).
  • tempest_config() now creates its built-in OpenAI clients with ellmer::chat_openai(auth = "codex"), reusing file-backed ChatGPT subscription authentication managed by Codex CLI; custom chat options and factories remain available for API-key and alternative-provider access (tidyverse/ellmer#1067).
  • tempest_create_ragnar_store() preserves and validates compatible persistent stores by default; destructive replacement now requires reset = TRUE (yb8s).
  • tempest_costorm_workflow_run() and tempest_storm_workflow_run() expose the built-in research workflows as executable TempestRun specifications with shared evidence, typed checkpoints, selected expert teams, scoped connections, and an approval-gated Co-STORM dialogue boundary (vtvt).
  • tempest_execution_events() provides one cursor-based event query for TempestRun and TempestSession; Co-STORM sessions now own normalized event history directly, and persistence migrates legacy progress history out of the auxiliary artifact environment.
  • tempest_report_md() now applies strict citation actions to complete matched assertions, removes unsupported assertions under drop, gives revise distinct behavior, and no longer lets unrelated claims sharing a source determine sentence status (e9kn).
  • tempest_run_async() now executes in a real Mirai worker, preserves result and error semantics, returns without blocking, and can be stopped with tempest_run_cancel() (4303).
  • tempest_session_save() now replaces bundles atomically from a complete sibling staging directory, records SHA-256 checksums for every declared file, and tempest_session_resume() verifies manifest completeness and integrity with explicit partial_recovery support (arqh).
  • Retriever URL fetching now parses and resolves destinations structurally, rejects non-public and obfuscated IPv4/IPv6 targets, revalidates redirects, and enforces timeout, redirect, content-type, and body-size limits; cache writes are atomic, corrupt entries are quarantined, and transient fetch failures are retried instead of cached indefinitely (vbg7, cax6).
  • Search-provider, evaluation-task, app-startup, asynchronous-run, and UI integration boundaries now have deterministic fixture-based contract coverage without API keys or network access (kqgx).
  • tempest_expert(), tempest_skill(), tempest_capability_spec(), tempest_connection_ref(), and tempest_runtime() add stable expert profiles, reusable skill contracts, per-context least-privilege capability resolution, opaque host connection bindings, exact expert-session restoration, and durable per-step grant records; global all-chat tool registration and the tempest_config(tools = ) argument have been removed, so hosts should attach tool implementations through scoped runtime capabilities (wgr8).
  • tempest_artifact_store(), tempest_expert(), tempest_progress_event(), tempest_session_save(), tempest_shiny_ui(), and related host-app APIs now carry explicit experimental lifecycle badges, and the pkgdown reference groups separate core workflows, evidence, host extension points, persistence, progress, and dsprrr modules (2nzw).
  • tempest_claims() now preserves support scores from structured fact extraction, and tempest_sources() now includes derived context_text plus fallback snippets for source rows backed by content or provider-native citation context (w3fm, fmbv).
  • tempest_config() now defaults to openai/gpt-5.6-sol for coordinator and writer roles, and openai/gpt-5.6-luna for expert, mind map, and judge roles. Built-in subscription clients use lower reasoning effort for auxiliary mind-map and judge calls, and run_app() bounds provider requests to 120 seconds by default.
  • tempest_config(), tempest_retriever(), and session persistence now use catchable cli/rlang condition classes for invalid providers, missing search-provider environment variables, unsafe URLs, chat setup failures, invalid artifact stores, and invalid session objects, all sharing a common tempest_error base class (and a tempest_persistence_error base for save/load failures) so callers can catch them with a single handler (9c6a).
  • The Chat tab now suggests follow-up questions as clickable cards using shinychat’s recognized suggestion markup. A set appears when the expert panel assembles and refreshes after each answer; clicking a card sends that question to the Moderator. Toggle it off with “Suggest follow-up questions” in the sidebar. New exported helper tempest_suggest_questions().
  • tempest_config() gains max_search_queries_per_turn and retrieve_top_k controls to mirror the upstream STORM runner’s query and section-retrieval limits.
  • tempest_config(search_provider = ) now accepts upstream-style retrievers for You.com, Bing, DuckDuckGo, SearXNG, Google Custom Search, and Azure AI Search in addition to the existing native, Wikipedia, Serper, Brave, and Tavily providers.
  • tempest_config() gains cache_enabled and cache_ttl controls for retriever search/fetch caching, TempestRetriever$cache_stats() reports local cache counters, and tempest_cache_clear() clears all or stale cache entries (ryfx).
  • tempest now imports dsprrr directly for STORM structured extraction and generation modules.
  • tempest_run() now executes STORM structured steps through dsprrr modules, with ellmer fallbacks for module creation or runtime failures.
  • tempest_run_save(), tempest_run_resume(), and the tempest_run_*() accessors give host applications checksummed generic run bundles plus stable status, event, approval, per-attempt capability-grant, artifact, cancellation, strict restore-integrity, permission-narrowing, and explicit partial-recovery controls without reaching into mutable R6 internals (vtvt).
  • tempest_run_workflow(), tempest_workflow_spec(), and tempest_workflow_step() add a generic deterministic run shell with expert assignments, bounded retry history, ordered events, typed artifacts, requested-output completion checks, pre-execution policy gates, post-generation output approvals, cooperative cancellation, process-local runtime services, and explicit runtime snapshot restoration (vtvt).
  • tempest_run() and tempest_session() now pass source context into dsprrr claim extraction for provider-native citations, so optimized extraction works for native web-search turns as well as inline [S...] citations (c8jk).
  • tempest_run() and tempest_session() now expose evidence review tools for agents to inspect claims, cited sources, evidence spans, and unsupported claims without requiring write access (my3y).
  • tempest_run() and tempest_session() now expose claim-oriented add_claim and list_claims agent tools while keeping add_fact and list_facts as transitional aliases (msg3).
  • tempest_okf_concepts(), tempest_okf_context(), tempest_okf_resources(), and tempest_read_okf() read bounded Open Knowledge Format bundles as typed evidence resources and explicitly untrusted agent context without executing referenced code or granting capabilities.
  • tempest_progress_event() and tempest_progress_event_data() define a host-neutral STORM/Co-STORM progress event contract for package and host-app integrations (g7wt).
  • tempest_progress_labels() provides compact host-neutral STORM and Co-STORM progress labels for stage chips and current-step displays (a3rg).
  • tempest_progress_collector(), tempest_progress_filter(), and tempest_progress_replay() provide host-neutral in-memory progress sinks with filtering and replay helpers (wpt9).
  • tempest_progress_state() reduces recorded STORM and Co-STORM progress events to compact host-neutral workflow state for UI and telemetry adapters (7f9q).
  • tempest_run() gains output_dir, resume, and run_id arguments for persistent staged runs with JSON and Markdown artifacts.
  • tempest_run() gains parallel_writing for upstream-style concurrent section writing with mirai.
  • tempest_run() gains a progress callback that emits host-neutral STORM workflow events for stages, persistence, verification, final artifacts, and terminal failures (4fn5).
  • tempest_run() gains remove_duplicate for upstream-style duplicate removal during the polish step.
  • tempest_run(parallel_research = ) and parallel_writing now start and stop the mirai daemons they require, fall back to sequential execution when workers are unavailable, and retry any failed perspective or section so no research or content is silently dropped. A transient error during sequential research is also caught and skipped rather than aborting the whole run.
  • tempest_session() gains a progress callback that emits Co-STORM session, warmup, expert/tool, dialogue, fact extraction, mind-map, suggestion, report, artifact, and failure events (qngb).
  • tempest_session() now accepts session_id so host apps can align Co-STORM progress, persistence, and artifacts with their own project/session identity (z0e0).
  • tempest_session_process_turn_async() records completed user and moderator turns and performs evidence, mind-map, and suggestion enrichment asynchronously, returning a typed stale-safe result with host-presentable notices.
  • tempest_session_save(), tempest_session_resume(), tempest_session_snapshot(), and tempest_session_restore() provide schema-versioned Co-STORM session persistence bundles and in-memory snapshot/restore helpers (zj62). tempest_session_save(overwrite = TRUE) only replaces directories that already look like a Tempest session bundle, so a mistyped path cannot recursively delete unrelated files.
  • tempest_session_warmup_async() runs bounded expert orientations in parallel and commits transcript, evidence, and one mind-map update in deterministic order with per-expert timeouts and stale-result suppression.
  • tempest_shiny_ui(), tempest_shiny_server(), and tempest_shiny_store() provide an experimental embeddable Shiny adapter for host apps, with fake-chat example code under inst/examples/shiny-host (z0e0).
  • tempest_shiny_server() now exposes reactive generic run, event, approval, assignment, capability-grant, artifact, and evidence state; the example host app demonstrates a custom objective, selected expert, scoped connection policy, approval checkpoint, and non-report JSON deliverable (fr54).
  • tempest_config(search_provider = ) searches now apply a request timeout and retry on transient HTTP errors, and a single missing or non-public result URL no longer discards every other result for the query.
  • Co-STORM sessions now route turns, update the mind map, and summarise using the most recent dialogue turns instead of the oldest.
  • Co-STORM evidence now records expert session ids, expert ids, and progress correlation ids on claims from expert tools, warmup, chat, and STORM research runs so Facts and Sources can be traced back to the agent turn that produced them (vtz9).
  • Co-STORM moderators now receive the exact live expert roster and the real delegate_to_expert() contract, must delegate substantive research questions before answering, preserve returned source and claim IDs, and surface an explicit evidence gap when a turn cites no inspected source. Each moderator turn delegates at most one narrow question, and experts reuse shared evidence before a bounded search, preventing exhaustive research loops from blocking the chat. Moderator answers avoid generic end-of-answer next-step menus, while suggestion cards focus on topic-specific research questions tied to evidence gaps, uncertainty, and mind-map expansion (svyx).
  • Persisted runs now write artifacts atomically and write the run manifest last, so an interrupted save cannot corrupt artifacts or leave resume pointing at a stage whose output is missing.
  • The bundled Shiny app now targets shinychat’s chat_server() API for streaming, cancellation, greetings, and client state management.
  • The bundled Shiny app now saves, loads, and autosaves Co-STORM session bundles from the Chat sidebar so restored sessions repopulate the chat, sources, mind map, transcript, and report views (n64q).
  • The bundled Shiny app now renders STORM and Co-STORM workflow progress from host-neutral progress events and reducer state (e08d).
  • The bundled Shiny app now streams STORM workflow progress from the background worker so stage chips update while a run is still in flight (1fxn).
  • The bundled Shiny app now carries provider-native source context into Co-STORM fact extraction so warmup and chat turns populate Facts and Sources when sources were attached to the answer turn (b77g).
  • The bundled Shiny app now invalidates Co-STORM progress output from asynchronous warmup callbacks so progress icons render while warmup is still running (2zbg).
  • The bundled Shiny app now delegates its greeting, cancellation, suggestion cards, footer container, slash commands, attachments, and streamed tool and thinking displays to shinychat; app-generated suggestion markup crosses a narrow typed trusted boundary while model output remains escaped, native card titles and attachment types are used, restored moderator turns are preserved, session controls use bslib accordions and switches, and turn-only chat history remains disabled until it can restore complete Tempest experts, evidence, maps, progress, and reports (pkd5).
  • The bundled Shiny app now renders Tempest source citations as numbered inline links with cited-source reference panels in reports, transcript answers, and HTML report downloads (k67p, pgp9, eq7b, dq0v).
  • The bundled Shiny app now registers slash commands for /new, /new-session, /experts, /sources, /facts, /claims, /report, /system, and /tools, backed by normal chat-visible responses (t5zn).
  • The bundled Shiny app now uses a Tempest assistant icon in chat and transcript views plus deterministic expert icons for Co-STORM experts in the panel and workflow progress (q8zc, zb9y).
  • The bundled Shiny app no longer errors when async chat callbacks refresh the shared session store outside a reactive consumer.
  • The bundled Shiny app’s Co-STORM warmup now asks each capability-scoped expert for one bounded evidence-backed orientation in parallel, requires a targeted search when session evidence is absent, commits cited sources and claims in stable order before updating the shared mind map once, distinguishes evidence from scoping-only context in its summary, shows compact progress without streaming orientations into the chat, and retires timed-out expert sessions before later dialogue.
  • The bundled Shiny app was rebuilt around Shiny modules (one per tab) with a shared reactive store, runs the STORM pipeline as a background ExtendedTask bound to its task button, and adds a knowledge-stats value-box strip on the Mind Map tab, a landing welcome message, and an “About” popover linking the STORM, Co-STORM, and DSPy papers and upstream repositories.