Commit Graph

1907 Commits

Author SHA1 Message Date
gsxdsm
f7e20abe9f FN-7168: add Chat to the right dock
Adds Chat as an inline right-dock tool with compact dock rendering and pop-out support.

- Register Chat as a built-in right-dock overflow view with its toolbar icon and lazy-loaded view.
- Add a compact ChatView layout prop so narrow dock hosts use the mobile-style list/detail flow.
- Cover Chat dock visibility, storage fallback, lazy-load docs, and compact layout behavior with tests.
- Document the updated right-dock tool roster and add a minor changeset.

Files changed:
 .changeset/FN-7168-right-dock-chat.md              |  7 ++
 docs/dashboard-guide.md                            |  7 +-
 .../app/__tests__/lazy-loaded-views-docs.test.ts   |  6 +-
 packages/dashboard/app/components/ChatView.tsx     |  9 ++-
 packages/dashboard/app/components/RightDock.tsx    |  2 +-
 .../__tests__/ChatView.sessions-rooms.test.tsx     |  9 +++
 .../app/components/__tests__/RightDock.test.tsx    |  9 ++-
 .../__tests__/overflowViewRegistry.chat.test.tsx   | 90 ++++++++++++++++++++++
 .../__tests__/overflowViewRegistry.test.tsx        |  5 +-
 .../app/components/overflowViewRegistry.tsx        | 25 ++++++
 10 files changed, 158 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7168

Fusion-Task-Lineage: 194c66f6-bdd9-438e-b648-2a79629534a6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 23:25:19 -07:00
gsxdsm
e42679daff FN-7173: preserve stuck triage drafts on requeue
Stuck triage retries now continue from saved planning drafts instead of restarting.

- Detect non-empty PROMPT.md drafts or saved plan task documents after stuck-detector aborts.
- Requeue draft-backed stuck triage runs as replans with explicit resume feedback and bounded retry escalation.
- Cover prompt-vs-plan recovery, cold retries, approval recovery, and exhaustion behavior in engine tests.
- Document the stuck-triage preservation invariant and add a patch changeset.

Files changed:
 ...-7173-preserve-triage-draft-on-stuck-requeue.md |   7 +
 docs/architecture.md                               |   6 +-
 .../triage-stuck-requeue-preserve-draft.test.ts    | 348 +++++++++++++++++++++
 packages/engine/src/__tests__/triage.test.ts       |   2 +-
 packages/engine/src/triage.ts                      | 153 ++++++++-
 5 files changed, 499 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-7173
Fusion-Task-Lineage: 8e59b025-92cc-4902-bf88-b203b65c2c7d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 23:18:28 -07:00
gsxdsm
987abc763b FN-7162: reopen actionable steps after review bounces
Post-verdict remediation now resumes executable work before rechecking optional gates.

- Reopen the terminal verification/delivery suffix together with the nearest actionable implementation step for revision bounces.
- Cover Code Review, Browser Verification, gate-promoted revisions, and non-revision optional outcomes with regression tests.
- Document post-verdict bounce semantics and add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-7162-post-verdict-bounce-step-completion.md |   7 ++
 docs/workflow-steps.md                             |   9 +-
 packages/engine/src/__tests__/executor-step-session.test.ts    | 117 +++++++++++++++++++--
 packages/engine/src/__tests__/workflow-graph-optional-step-fix.test.ts       |  60 +++++++++++
 packages/engine/src/executor.ts                    |  51 +++++++--
 5 files changed, 222 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-7162
Fusion-Task-Lineage: 8d422fc9-54e8-431d-97bb-e7a4a6763eaa
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 23:01:10 -07:00
gsxdsm
5d9184d380 FN-7172: add right dock pin toggle
Add a persisted right-dock pin control that switches between overlay and push layouts.\n\n- Add a toolbar pin button with accessible labels and persisted pinned state.\n- Switch pinned docks into the flex row so the main project content narrows instead of being overlaid.\n- Cover pin persistence, layout classes, header toggling, mobile behavior, and expanded modal independence in tests.\n- Document the overlay/push workflow and add a minor changeset for the published CLI package.\n\nFiles changed:\n .changeset/fn-7172-right-dock-pin-push-mode.md     |   7 +\n docs/dashboard-guide.md                            |   8 +-\n packages/dashboard/app/components/RightDock.css    |   9 ++\n packages/dashboard/app/components/RightDock.tsx    |  45 +++++-\n .../app/components/__tests__/RightDock.test.tsx    | 174 +++++++++++++++++++--\n .../app/components/useRightDockController.tsx      |  21 ++-\n 6 files changed, 241 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-7172

Fusion-Task-Lineage: 1608fead-74cd-4a1e-87be-1ce27f388f34

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 22:55:40 -07:00
gsxdsm
2448447de6 FN-7161: add worktree grouping board setting
Add an opt-in project setting that controls whether board WIP columns show worktree grouping.

- Add the `showWorktreeGrouping` project setting with default-off schema, settings form wiring, and app state propagation.
- Apply the setting to board, lane, and column rendering so WIP/processing columns group by worktree only when enabled.
- Cover default persistence, settings UI, and column grouping behavior with targeted tests and document the operator-facing setting.

Files changed:
 .changeset/fn-7161-worktree-grouping-setting.md    |   7 ++
 docs/dashboard-guide.md                            |   2 +
 docs/settings-reference.md                         |   1 +
 .../core/src/__tests__/settings-defaults.test.ts   |  12 +++
 packages/core/src/__tests__/store-settings.test.ts |   8 ++
 packages/core/src/settings-schema.ts               |   1 +
 packages/core/src/types.ts                         |   7 ++
 packages/dashboard/app/App.tsx                     |   2 +
 .../app/__tests__/settings-sections.test.tsx       |  32 ++++++
 packages/dashboard/app/components/Board.tsx        |   6 +-
 packages/dashboard/app/components/Column.tsx       |  28 +++---
 packages/dashboard/app/components/Lane.tsx         |   2 +
 .../dashboard/app/components/SettingsModal.tsx     |   1 +
 .../app/components/__tests__/Column.test.tsx       | 112 ++++++++++++++++++++-
 .../app/components/dashboard/MainContent.tsx       |   3 +
 .../dashboard/app/components/dashboard/types.ts    |   1 +
 .../settings/sections/WorktreesSection.tsx         |   5 +
 packages/dashboard/app/hooks/useAppSettings.ts     |   4 +
 18 files changed, 216 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-7161
Fusion-Task-Lineage: 4482522d-ea18-4b4f-b3fb-92af5ff5b9cd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 22:37:19 -07:00
gsxdsm
e5a0273282 FN-7166: Refresh artifact lists from registration events
Artifact list surfaces now refresh from authoritative registry and artifact-message signals.\n\n- Emit an artifact:registered TaskStore event after successful registry writes and forward it over dashboard SSE.\n- Subscribe useArtifacts to artifact/message SSE events, scope refreshes by project/task, debounce duplicate signals, and avoid loading flashes when project context is missing.\n- Document live artifact refresh behavior and add regression coverage for store events and hook refresh paths.\n\nFiles changed:\n .changeset/FN-7166-artifact-live-refresh.md        |   7 +\n docs/dashboard-guide.md                            |   3 +-\n packages/core/src/__tests__/artifacts.test.ts      |  20 +-\n packages/core/src/store.ts                         |   8 +-\n .../app/hooks/__tests__/useArtifacts.test.ts       | 227 +++++++++++++++++++--\n packages/dashboard/app/hooks/useArtifacts.ts       |  83 +++++++-\n packages/dashboard/src/sse.ts                      |   7 +\n 7 files changed, 335 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-7166

Fusion-Task-Lineage: f13e254d-d65c-423e-8d9c-94c31761eac2

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 22:15:53 -07:00
gsxdsm
bee93c3e2b FN-7163: keep executor footer stable during stats refreshes
Keep the executor footer mounted while heartbeat polling refreshes stats.\n\n- Make executor stats loading initial-only per project so routine refreshes preserve populated footer state.\n- Keep the engine controls popover mounted after the first successful stats render.\n- Add regression coverage for heartbeat refreshes, project switches, and transient failures.\n- Document the stable footer behavior and add a patch changeset.\n\nFiles changed:\n .changeset/fn-7163-footer-heartbeat-blink.md       |   7 +\n docs/dashboard-guide.md                            |   3 +-\n .../dashboard/app/components/ExecutorStatusBar.tsx |  15 ++-\n .../__tests__/ExecutorStatusBar.test.tsx           |  76 +++++++++++\n .../app/hooks/__tests__/useExecutorStats.test.ts   | 147 +++++++++++++++++++++\n packages/dashboard/app/hooks/useExecutorStats.ts   |  67 +++++++---\n 6 files changed, 294 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-7163

Fusion-Task-Lineage: ad1d7eb2-f531-42b3-b588-fbb69d09d0f3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 22:02:59 -07:00
gsxdsm
a95cfa7f92 FN-7160: unify live agent counts and fix use markers
Unifies running-agent slot accounting across engine, CLI, and dashboard surfaces.

- Add shared core helpers for identifying and counting active top-level agent tasks, including in-review reviewer, merger, fix, and PR merge states.
- Reuse the shared count in engine semaphore repair, project health displays, and dashboard project-store routes.
- Correct Command Center utilization markers to use a zero-based active/cap ratio.
- Cover the shared predicate and affected CLI, dashboard, and engine behaviors with regression tests.

Files changed:
 .changeset/fn-7160-running-agent-count.md          |  7 ++++
 docs/dashboard-guide.md                            |  2 +-
 .../cli/src/commands/__tests__/project.test.ts     | 40 ++++++++++++++----
 packages/cli/src/commands/project.ts               | 15 +++----
 .../core/src/__tests__/live-agent-count.test.ts    | 47 ++++++++++++++++++++++
 packages/core/src/index.ts                         |  2 +
 packages/core/src/live-agent-count.ts              | 30 ++++++++++++++
 packages/core/src/types.ts                         |  2 +-
 .../command-center/CommandCenterControls.tsx       | 14 ++++---
 .../__tests__/CommandCenterControls.test.tsx       | 22 +++++++++-
 .../dashboard/src/__tests__/project-routes.test.ts | 31 +++++++++-----
 .../src/__tests__/project-store-resolver.test.ts   | 20 ++++++---
 packages/dashboard/src/project-store-resolver.ts   |  9 ++---
 .../src/routes/register-project-routes.ts          |  7 ++--
 packages/engine/src/__tests__/concurrency.test.ts  | 18 +++++++++
 packages/engine/src/concurrency.ts                 | 12 +++---
 16 files changed, 220 insertions(+), 58 deletions(-)

Fusion-Task-Id: FN-7160

Fusion-Task-Lineage: f48332f8-ac5d-46eb-b975-d2f6c880ddd5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 21:39:40 -07:00
gsxdsm
d7a02c4d5b FN-7151: free scoped project concurrency slots
Free stopped or paused project engines' leaked slots without disturbing other projects.

- Add scoped semaphore accounting around the shared global agent pool.
- Return residual per-project slots after runtime stop drains aborted agents.
- Keep idle leak reconciliation scoped to the owning project so active projects retain their slots.
- Cover scoped release, reconciliation, project pause, and in-process runtime behavior with tests.

Files changed:
 .../fn-7151-free-concurrency-slots-on-stop.md      |   7 ++
 docs/architecture.md                               |   2 +-
 packages/engine/src/__tests__/concurrency.test.ts  | 126 +++++++++++++++++++++
 .../src/__tests__/project-engine-manager.test.ts   |  60 ++++++++++
 packages/engine/src/concurrency.ts                 | 123 +++++++++++++++++++-
 packages/engine/src/project-engine.ts              |   2 +-
 .../runtimes/__tests__/in-process-runtime.test.ts  |  51 +++++++++
 packages/engine/src/runtimes/in-process-runtime.ts |  22 +++-
 8 files changed, 385 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-7151

Fusion-Task-Lineage: e59e5e0c-67e8-4f80-a6b9-1ea4febaeb97

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 20:55:59 -07:00
gsxdsm
605e4d7734 FN-7158: emit reflection run-audit telemetry
Record agent reflection outcomes in run audit without persisting reflection prose.\n\n- Emit generated, skipped, and failed reflection telemetry from AgentReflectionService.\n- Add run-audit metadata contracts, diagnostics docs, and operator-facing run-audit guidance.\n- Cover telemetry payloads and best-effort audit failures in agent reflection tests.\n- Add a minor changeset for the published Fusion CLI package.\n\nFiles changed:\n .changeset/fn-7158-reflection-telemetry.md         |  7 ++\n AGENTS.md                                          |  1 +\n docs/diagnostics.md                                | 12 +++\n .../engine/src/__tests__/agent-reflection.test.ts  | 99 ++++++++++++++++++++++\n packages/engine/src/agent-reflection.ts            | 60 ++++++++++++-\n packages/engine/src/run-audit.ts                   | 41 +++++++++\n 6 files changed, 219 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-7158

Fusion-Task-Lineage: e8a83fe9-2112-4ce4-9367-a6fa38b6fbb4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 20:33:22 -07:00
gsxdsm
8b124960b8 FN-7154: prevent duplicate automation schedule runs
Add an atomic schedule claim so concurrent automation pollers execute each due window only once.

- Add AutomationStore.claimDueSchedule to CAS-advance nextRunAt before execution.
- Gate CronRunner execution on the claim across project, global, and all-scope pollers.
- Cover single-store, shared SQLite, legacy command, step, and in-process intercept deduplication paths.
- Document the claim-then-run automation invariant.

Files changed:
 docs/architecture.md                               |   1 +
 .../core/src/__tests__/automation-store.test.ts    |  77 +++++++++++++++
 packages/core/src/automation-store.ts              |  33 +++++++
 packages/engine/src/__tests__/cron-runner.test.ts  | 110 +++++++++++++++++++++
 packages/engine/src/cron-runner.ts                 |  18 +++-
 5 files changed, 237 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-7154

Fusion-Task-Lineage: 490ba154-9dd8-4e92-bacb-24b7184cb6f8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 20:09:52 -07:00
gsxdsm
6ca51185f3 FN-7152: close Quick Chat on outside clicks
Quick Chat now dismisses from page clicks while other floating windows stay persistent.

- Add an opt-in outside-pointer dismissal path to FloatingWindow with safeguards for inside clicks, nested dialogs, touch compatibility events, and active drag/resize gestures.
- Enable outside-click dismissal only for the Quick Chat floating window and document the behavior.
- Cover the opt-in behavior, default persistence, nested surfaces, gesture guards, and listener cleanup with FloatingWindow tests.
- Add a release changeset for the Quick Chat dismissal feature.

Files changed:
 .changeset/fn-7152-quick-chat-outside-click-close.md      |   7 ++
 docs/dashboard-guide.md                                    |   1 +
 packages/dashboard/app/App.tsx                             |   4 +
 packages/dashboard/app/components/FloatingWindow.css       |   5 +-
 packages/dashboard/app/components/FloatingWindow.tsx       |  45 +++++++++
 packages/dashboard/app/components/__tests__/FloatingWindow.test.tsx | 109 +++++++++++++++++++++
 6 files changed, 170 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-7152
Fusion-Task-Lineage: 5bd6c10a-3e21-4eb9-bd1e-99f3aaf9c7b6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 19:48:50 -07:00
gsxdsm
100164dc50 FN-7150: show ephemeral agent token counts
Surface task-derived token usage for ephemeral agents in dashboard agent views.

- Attribute task token totals across assigned, source, and checkout agent links.
- Backfill zero-valued agent list token totals from linked task usage.
- Allow Agent Detail token usage windows for ephemeral/task-worker agents and cover the routes with tests.
- Document the dashboard behavior and add a patch changeset.

Files changed:
 .changeset/fn-7150-ephemeral-agent-token-counts.md |  7 ++
 docs/dashboard-guide.md                            |  1 +
 .../core/src/__tests__/agent-token-usage.test.ts   | 99 ++++++++++++++++++++--
 packages/core/src/__tests__/team-analytics.test.ts | 48 +++++++++++
 packages/core/src/agent-token-usage.ts             | 83 +++++++++++++++++-
 packages/core/src/index.ts                         |  4 +-
 .../__tests__/AgentTokenStatsPanel.test.tsx        | 21 +++++
 .../src/__tests__/routes-agent-token-usage.test.ts | 20 ++++-
 .../dashboard/src/__tests__/routes-agents.test.ts  | 87 +++++++++++++++++++
 .../src/routes/register-agent-core-routes.ts       | 38 ++++++++-
 .../src/routes/register-agent-runtime-routes.ts    |  5 +-
 11 files changed, 395 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-7150
Fusion-Task-Lineage: ce2661ce-5ba5-43b0-aa5c-7fddee90a915
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 19:37:39 -07:00
gsxdsm
7ebf58ee3b FN-7147: add report-only HTML CE doc review
Enable CE document review to inspect HTML artifacts without mutating generated plans.

- Expand ce-doc-review guidance to accept markdown and HTML plan artifacts, keeping autofix/write-back only for markdown.
- Update ce-plan and brainstorm handoffs so HTML plans route through report-only findings instead of skipped-review envelopes.
- Add regression coverage that rejects legacy HTML-skip wording across the edited CE review surfaces.
- Document the compound-engineering workflow behavior and add the release changeset.

Files changed:
 .changeset/fn-7147-html-aware-ce-doc-review.md     |  7 ++
 docs/workflow-editor.md                            |  2 +-
 docs/workflow-steps.md                             |  4 +-
 .../src/__tests__/ce-doc-review-html-mode.test.ts  | 81 ++++++++++++++++++++++
 .../src/skills/ce-brainstorm/references/handoff.md | 26 ++++---
 .../ce-brainstorm/references/html-rendering.md     | 20 +++---
 .../src/skills/ce-doc-review/SKILL.md              | 37 ++++++----
 .../skills/ce-ideate/references/html-rendering.md  | 20 +++---
 .../src/skills/ce-plan/SKILL.md                    | 25 ++++---
 .../skills/ce-plan/references/html-rendering.md    | 18 ++---
 .../src/skills/ce-plan/references/plan-handoff.md  | 37 +++++-----
 11 files changed, 196 insertions(+), 81 deletions(-)

Fusion-Task-Id: FN-7147
Fusion-Task-Lineage: 1f710dd9-ced7-4026-bc74-55a4160cb1bd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 18:33:02 -07:00
gsxdsm
63d1079d44 FN-7142: show task summary token costs
Add task summary visibility into token usage, model-level costs, and locale coverage.

- Render done-task Summary token usage by model with input, output, cached, total, and estimated cost columns.
- Thread global model pricing overrides into the summary cost calculation and mark unpriced models as unavailable.
- Add responsive token-cost styling, summary-tab coverage, dashboard docs, release notes, and locale keys.

Files changed:
 .changeset/fn-7142-summary-token-cost.md           |   7 +
 docs/dashboard-guide.md                            |   2 +-
 .../dashboard/app/components/TaskDetailModal.css   | 125 +++++++++++
 .../dashboard/app/components/TaskDetailModal.tsx   |   2 +-
 .../dashboard/app/components/TaskSummaryTab.tsx    | 177 ++++++++++++++-
 .../__tests__/TaskDetailModal.summary-tab.test.tsx | 241 ++++++++++++++++++++-
 packages/i18n/locales/en/app.json                  |  11 +
 packages/i18n/locales/es/app.json                  |  52 ++++-
 packages/i18n/locales/fr/app.json                  |  52 ++++-
 packages/i18n/locales/ko/app.json                  |  52 ++++-
 packages/i18n/locales/zh-CN/app.json               |  52 ++++-
 packages/i18n/locales/zh-TW/app.json               |  52 ++++-
 12 files changed, 794 insertions(+), 31 deletions(-)

Fusion-Task-Id: FN-7142
Fusion-Task-Lineage: ec1c7244-4779-46e7-be7c-b0e00b361fd7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:56:32 -07:00
gsxdsm
e8163ab81b FN-7146: add workflow analytics to Command Center
Adds a read-only per-workflow analytics surface for Command Center operators.

- Add a core workflow analytics aggregator with token, cost, task status, and files-changed rollups.
- Expose workflow analytics through JSON and CSV Command Center routes using the scoped store default workflow.
- Add the Workflows Command Center tab, localized copy, docs, tests, and a release changeset.

Files changed:
 .changeset/fn-7146-workflow-analytics.md           |   7 +
 docs/dashboard-guide.md                            |   7 +-
 .../core/src/__tests__/workflow-analytics.test.ts  | 306 +++++++++++++++++++
 packages/core/src/index.ts                         |   7 +
 packages/core/src/workflow-analytics.ts            | 339 +++++++++++++++++++++
 .../components/command-center/CommandCenter.tsx    |   8 +
 .../__tests__/CommandCenter.test.tsx               |  51 +++-
 .../command-center/areas/WorkflowArea.tsx          | 170 +++++++++++
 .../areas/__tests__/WorkflowArea.test.tsx          | 136 +++++++++
 .../register-command-center-routes.auth.test.ts    |   5 +
 .../register-command-center-routes.test.ts         | 109 +++++++
 packages/dashboard/src/command-center-csv.ts       |  57 ++++
 .../src/routes/register-command-center-routes.ts   |  30 ++
 packages/i18n/locales/en/app.json                  |  21 ++
 packages/i18n/locales/es/app.json                  |  21 ++
 packages/i18n/locales/fr/app.json                  |  21 ++
 packages/i18n/locales/ko/app.json                  |  21 ++
 packages/i18n/locales/zh-CN/app.json               |  21 ++
 packages/i18n/locales/zh-TW/app.json               |  21 ++
 19 files changed, 1354 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-7146
Fusion-Task-Lineage: f75e40a5-9010-45d5-a729-132e547887d7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:46:17 -07:00
gsxdsm
d4137f1abc FN-7144: complete compound engineering workflow audit
Adds the missing CE document-review stage and tightens workflow docs, compilation, and tests.

- Add optional advisory ce-doc-review support to the compound engineering built-in workflow.
- Register and document the compound-engineering ce-doc-review skill for markdown CE plan review.
- Preserve optional-group workflow semantics when compiling legacy steps and cover the CE workflow seams with tests.
- Update operator docs and add a published package changeset.

Files changed:
 .changeset/fn-7144-compound-engineering-audit.md   |  7 +++
 docs/workflow-editor.md                            |  2 +-
 docs/workflow-steps.md                             |  4 +-
 .../core/src/__tests__/builtin-workflows.test.ts   | 29 +++++++++-
 packages/core/src/builtin-workflows.ts             | 62 ++++++++++++++++++++--
 packages/core/src/workflow-compiler.ts             |  3 +-
 .../__tests__/ce-workflow-step-conventions.test.ts |  8 +++
 .../src/__tests__/interpreter-merge-seam.test.ts   |  3 +-
 .../src/__tests__/manifest.test.ts                 |  1 +
 .../src/skills.ts                                  | 13 +++++
 .../src/skills/ce-doc-review/SKILL.md              | 54 +++++++++++++++++++
 11 files changed, 175 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7144
Fusion-Task-Lineage: bedbfad4-d6e8-489e-a555-803991a1ad54
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:40:42 -07:00
gsxdsm
c468c161c2 FN-7141: add chat context token budget indicator
Add a desktop Direct-chat header indicator for estimated tokens used against the active model context window.

- Estimate chat token usage client-side, including streaming text, and format compact counts.
- Render the context-window badge only for non-mobile Direct-chat threads with known model context windows.
- Cover desktop, mobile, floating-narrow, rooms, unknown-context, and streaming surfaces with tests.
- Document the dashboard behavior and add a release changeset.

Files changed:
 .changeset/fn-7141-chat-context-window.md          |   7 +
 docs/dashboard-guide.md                            |   2 +
 packages/dashboard/app/components/ChatView.css     |  22 +++
 packages/dashboard/app/components/ChatView.tsx     |  35 +++-
 .../__tests__/ChatView.context-window.test.tsx     | 193 +++++++++++++++++++++
 .../app/utils/__tests__/estimateChatTokens.test.ts |  34 ++++
 packages/dashboard/app/utils/estimateChatTokens.ts |  29 ++++
 packages/i18n/locales/en/app.json                  |   1 +
 8 files changed, 322 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-7141

Fusion-Task-Lineage: 3ede9af4-b8d6-4da6-996f-cd9277ef49ac

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:22:12 -07:00
gsxdsm
13d97b7c33 FN-7145: verify CE workflow skill loading
Add coverage and documentation for skill-backed workflow step loading.

- Derive compound-engineering skill-step expectations from the built-in workflow definition.
- Assert every skill-backed step requests namespaced and bare skills and uses injected CE skill paths.
- Cover missing FUSION_CE_SKILLS_DIR warnings, skill-less steps, and toolMode-independent skill loading.
- Document the skill-backed workflow execution invariant.

Files changed:
 docs/workflow-steps.md                             |   9 ++
 .../__tests__/ce-workflow-step-executor.test.ts    | 112 +++++++++++++++++++--
 2 files changed, 115 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-7145
Fusion-Task-Lineage: 1a344fa7-fa0c-4f04-af5a-1a90d48cd34c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:17:28 -07:00
gsxdsm
9e7c57da08 FN-7139: show task columns on agent badges
Enrich dashboard agent task indicators with linked task column context.

- Add API-side transient taskColumn enrichment for active agent task links, including an unresolved sentinel for missing tasks.
- Render shared agent task badges across agent panels, detail views, lists, and mobile surfaces.
- Extend dashboard/API coverage and document the task-column badge behavior with a published changeset.

Files changed:
 .changeset/fn-7139-agent-task-column-context.md    |  7 ++
 docs/dashboard-guide.md                            |  2 +
 packages/core/src/types.ts                         |  5 ++
 .../dashboard/app/components/ActiveAgentsPanel.tsx |  3 +-
 .../dashboard/app/components/AgentDetailView.tsx   |  5 +-
 .../dashboard/app/components/AgentListModal.tsx    |  3 +-
 .../dashboard/app/components/AgentTaskBadge.tsx    | 28 +++++++
 packages/dashboard/app/components/AgentsView.tsx   |  3 +-
 .../__tests__/ActiveAgentsPanel.test.tsx           | 55 ++++++++++---
 .../__tests__/AgentDetailView.core.test.tsx        | 65 +++++++++++++++
 .../AgentDetailView.mobile-scroll.test.tsx         | 16 +++-
 .../components/__tests__/AgentListModal.test.tsx   | 16 +++-
 .../app/components/__tests__/AgentsView.test.tsx   | 23 +++++-
 .../dashboard/src/__tests__/routes-agents.test.ts  | 92 +++++++++++++++++++++-
 packages/dashboard/src/routes.ts                   | 13 ++-
 15 files changed, 306 insertions(+), 30 deletions(-)

Fusion-Task-Id: FN-7139
Fusion-Task-Lineage: 3f6d9470-b98f-4bd3-a91e-7e69ab624d48
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:11:13 -07:00
gsxdsm
6f46fa17dd FN-7138: show task column context in agent assignments
Agent Current Task output now includes linked task column context to distinguish active execution from parked or stale links.

- Add shared Current Task formatting for active, terminal, and unresolved task links.
- Show linked task columns in engine and CLI agent list/show surfaces.
- Cover parked, active, terminal, and missing task-link display cases with tests.
- Document the durable agent task-link invariant and release the CLI fix.

Files changed:
 .changeset/fn-7138-agent-current-task-context.md   |  7 ++++
 docs/agents.md                                     |  1 +
 docs/architecture.md                               |  2 +-
 packages/cli/src/__tests__/extension.test.ts       | 44 ++++++++++++++++++++++
 packages/cli/src/extension.ts                      | 35 +++++++++++++++--
 packages/core/src/agent-store.ts                   | 30 +++++++++++++++
 packages/core/src/index.ts                         |  2 +-
 .../src/__tests__/agent-tools-delegation.test.ts   | 44 +++++++++++++++++++++-
 packages/engine/src/agent-tools.ts                 | 15 ++++++--
 9 files changed, 169 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7138
Fusion-Task-Lineage: 0ea97b4c-d4f8-4289-a5b6-e5c51b47b768
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 16:16:25 -07:00
gsxdsm
5066f90db2 FN-7137: stack queued chat messages
Stack queued chat sends above the composer and flush them in order.

- Persist pending chat sends as per-session FIFO arrays with legacy single-message restore fallback.
- Render stacked queued previews above the direct and quick chat composer with per-item dismissal.
- Flush one queued message after each completed or safely verified idle generation, preserving reconnect guards.
- Extend chat hook and composer tests for multi-message queuing, restore, dismissal, and FIFO sends.
- Document the queued stack behavior and add a published package changeset.

Files changed:
 .changeset/fn-7137-stack-queued-chat-messages.md   |   7 +
 docs/dashboard-guide.md                            |   4 +-
 packages/dashboard/app/components/ChatView.css     |  15 +-
 packages/dashboard/app/components/ChatView.tsx     |  38 ++--
 .../__tests__/ChatView.autosize.test.tsx           |   2 +-
 .../__tests__/ChatView.cli-mount.test.tsx          |   2 +-
 .../__tests__/ChatView.core-interactions.test.tsx  |  27 ++-
 .../__tests__/ChatView.default-model-icon.test.tsx |   2 +-
 .../components/__tests__/ChatView.draft.test.tsx   |   2 +-
 .../__tests__/ChatView.hash-mention.test.tsx       |   2 +-
 .../__tests__/ChatView.mobile-render.test.tsx      |   2 +-
 .../components/__tests__/ChatView.rooms.test.tsx   |   2 +-
 .../__tests__/ChatView.scroll-to-top.test.tsx      |   2 +-
 .../__tests__/ChatView.swipe-back.test.tsx         |   2 +-
 .../components/__tests__/ChatView.test-harness.tsx |   2 +-
 .../dashboard/app/hooks/__tests__/useChat.test.ts  | 247 +++++++++++++++++----
 .../app/hooks/chatPendingMessageStorage.ts         |  38 +++-
 packages/dashboard/app/hooks/useChat.ts            | 125 ++++++++---
 18 files changed, 390 insertions(+), 131 deletions(-)

Fusion-Task-Id: FN-7137

Fusion-Task-Lineage: 65dd5ed7-a8db-447b-9a50-ce73ea7b597f

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 15:56:42 -07:00
gsxdsm
a593cc7428 FN-7130: require agent-browser for browser verification
Browser Verification steps now explicitly request and log agent-browser usage.

- Mark the built-in browser verification workflow step as browser-required and document that it runs through agent-browser.
- Add executor helpers to inject the agent-browser skill, probe CLI availability, and log start/finish outcomes.
- Cover workflow metadata, browser verification execution logging, availability probing, and skill augmentation with tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .../fn-7130-browser-verification-agent-browser.md  |   7 +
 docs/workflow-steps.md                             |   4 +-
 .../__tests__/builtin-coding-workflow-ir.test.ts   |  23 ++
 .../core/src/__tests__/builtin-workflows.test.ts   |  12 +
 .../core/src/builtin-browser-verification-group.ts |   4 +
 packages/core/src/types.ts                         |   7 +
 ...iltin-coding-browser-verification-group.test.ts |   8 +-
 .../executor-browser-verification.test.ts          | 267 +++++++++++++++++++++
 packages/engine/src/executor.ts                    | 118 +++++++++
 9 files changed, 447 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-7130

Fusion-Task-Lineage: 3a76522e-70e1-4445-ad18-b9e1b9b355fc

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 14:27:06 -07:00
gsxdsm
c1613ad7f6 FN-7122: expose MCP servers as pi session tools
Connect configured MCP servers during pi chat and agent session startup so their discovered tools are available as namespaced custom tools.

- Add MCP session tool connection, tool-name sanitization, result mapping, and disposal handling.
- Merge discovered MCP tools into pi customTools while skipping readonly sessions and avoiding secret-bearing logs.
- Cover MCP tool wrapping and pi session integration with targeted tests.
- Document MCP forwarding behavior and promote the MCP SDK to an engine runtime dependency.

Files changed:
 .changeset/fn-7122-mcp-session-tools.md            |   7 +
 docs/mcp.md                                        |   2 +
 packages/engine/package.json                       |   2 +-
 .../engine/src/__tests__/mcp-session-tools.test.ts | 105 ++++++++
 .../src/__tests__/pi-mcp-session-tools.test.ts     |  24 ++
 packages/engine/src/mcp-session-tools.ts           | 262 ++++++++++++++++++++
 packages/engine/src/pi.ts                          |  71 +++++-
 pnpm-lock.yaml                                     | 264 ++++++++++++++++++++-
 8 files changed, 713 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-7122

Fusion-Task-Lineage: e7ff57e7-9bfb-41a4-9ebd-6c868bac2745

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 14:09:47 -07:00
gsxdsm
39d20be05f FN-7129: add per-step optional revision budgets
Add optional workflow-step revision budgets that can cap or unbound remediation loops.

- Add optional-group maxRevisions parsing, validation, exports, and docs.
- Expose numeric and unbounded revision budget controls in the workflow node editor.
- Apply per-step budgets in executor and self-healing fix loops with regression coverage.

Files changed:
 .changeset/fn-7129-per-step-revision-budget.md     |  7 ++
 docs/dashboard-guide.md                            |  1 +
 docs/settings-reference.md                         |  2 +-
 docs/workflow-steps.md                             | 10 ++-
 .../__tests__/workflow-ir-optional-group.test.ts   | 29 ++++++-
 packages/core/src/index.ts                         |  2 +
 packages/core/src/workflow-ir-types.ts             | 37 +++++++++
 packages/core/src/workflow-ir.ts                   | 15 ++++
 .../app/components/WorkflowNodeEditor.tsx          | 87 ++++++++++++++++----
 .../__tests__/WorkflowNodeEditor.test.tsx          | 95 ++++++++++++++++++++++
 packages/engine/src/__tests__/self-healing.test.ts | 63 ++++++++++++++
 .../workflow-graph-optional-group.test.ts          | 30 ++++++-
 .../workflow-graph-optional-step-fix.test.ts       | 53 ++++++++++++
 packages/engine/src/executor.ts                    | 15 ++--
 packages/engine/src/self-healing.ts                | 64 +++++++++++----
 packages/engine/src/workflow-graph-executor.ts     |  6 +-
 16 files changed, 469 insertions(+), 47 deletions(-)

Fusion-Task-Id: FN-7129

Fusion-Task-Lineage: dbde94e5-3c99-4f67-aed9-458563e845ae

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 13:05:50 -07:00
gsxdsm
c3c4216f76 FN-7132: classify task creation as a gated mutation
Classify fn_task_create as a task-agent mutation so permanent-agent policies can require approval or block task creation.

- Move fn_task_create out of the permanent-agent read-only tool set and into the shared task mutation classification.
- Add parity tests covering permanent-agent and action-gate decisions for fn_task_create.
- Preserve delegate and GitHub import tools as permanent-agent read-only coordination tools while documenting the distinction.
- Add a patch changeset for the published Fusion package.

Files changed:
 .../fn-7132-task-create-mutation-classification.md |  7 +++
 docs/agents.md                                     |  6 +--
 .../src/__tests__/gating-classifications.test.ts   | 58 +++++++++++++++++++++-
 .../src/__tests__/permanent-agent-gating.test.ts   |  3 +-
 packages/engine/src/gating-classifications.ts      | 10 ++--
 5 files changed, 75 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-7132

Fusion-Task-Lineage: 6e32ed9d-f0fa-46f2-a749-c5dbe863fb1f

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 12:44:50 -07:00
gsxdsm
3d26d4e74b FN-7127: standardize task show tool naming
Unify task-show references so planning, triage, docs, and telemetry use fn_task_show consistently.

- Replace legacy fn_task_get guidance and examples with fn_task_show across agent prompts, mission planning, triage, and docs.
- Keep fn_task_get as a deprecated read-only recognition alias for historical or in-flight calls.
- Update tests and changesets to cover the unified tool name and usage telemetry.

Files changed:
 .changeset/FN-7118-shared-task-read-tools.md       |  2 +-
 .changeset/FN-7127-unify-task-show-tool-name.md    |  7 ++++++
 docs/cli-reference.md                              |  2 +-
 docs/missions.md                                   |  2 +-
 .../cli/skill/fusion/references/engine-tools.md    |  2 +-
 packages/core/src/__tests__/usage-events.test.ts   |  1 +
 packages/core/src/agent-prompts.ts                 | 12 +++++-----
 .../__tests__/milestone-slice-interview.test.ts    |  2 +-
 .../src/__tests__/mission-interview.test.ts        |  2 +-
 .../src/__tests__/planning-board-tools.test.ts     |  6 ++---
 .../dashboard/src/milestone-slice-interview.ts     |  4 ++--
 packages/dashboard/src/mission-interview.ts        |  2 +-
 packages/dashboard/src/planning-board-tools.ts     | 10 +++++---
 packages/dashboard/src/planning.ts                 |  2 +-
 .../src/__tests__/agent-task-read-tools.test.ts    | 28 +++++++++++++++-------
 packages/engine/src/__tests__/triage.test.ts       |  6 ++---
 packages/engine/src/agent-tools.ts                 |  5 +++-
 packages/engine/src/gating-classifications.ts      |  8 +++++--
 packages/engine/src/triage.ts                      | 12 ++++++----
 19 files changed, 74 insertions(+), 41 deletions(-)

Fusion-Task-Id: FN-7127

Fusion-Task-Lineage: adf5a127-2741-4c88-97b3-aab239ab3960

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 12:25:53 -07:00
gsxdsm
59803c243d FN-7123: use workflow settings for task models
Task model displays now resolve task-scoped workflow settings consistently with execution.

- Add a shared workflow settings overlay helper for stored workflow values and declaration defaults.
- Expose task effective settings through the dashboard API and consume them in TaskDetail model surfaces.
- Cover core overlay behavior, route output, and Workflow tab model rendering with regression tests.
- Document workflow model lane precedence and add a published package changeset.

Files changed:
 .changeset/fn-7123-workflow-tab-project-model.md   |   7 ++
 docs/settings-reference.md                         |  14 ++-
 .../__tests__/effective-settings-overlay.test.ts   |  70 ++++++++++++++
 packages/core/src/effective-settings-overlay.ts    |  27 ++++++
 packages/core/src/index.ts                         |   4 +
 packages/dashboard/app/api/legacy.ts               |   5 +
 .../dashboard/app/components/TaskDetailModal.tsx   |  13 ++-
 ...skDetailModal.models-progress-workflow.test.tsx |  46 +++++++++
 .../__tests__/TaskDetailModal.test-helpers.ts      |   1 +
 .../__tests__/WorkflowResultsTab.test.tsx          |  33 +++++++
 packages/dashboard/app/test/mockApi.ts             |   9 ++
 .../task-effective-settings-route.test.ts          | 107 +++++++++++++++++++++
 .../src/routes/register-task-workflow-routes.ts    |  21 ++++
 packages/engine/src/effective-settings.ts          |  25 ++---
 14 files changed, 355 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-7123

Fusion-Task-Lineage: 5fa9d338-c886-44aa-bdba-0d361b3602d5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 12:20:42 -07:00
gsxdsm
a19df338ad FN-7131: add done-task summary tab
Done task details now open to a read-only Summary tab before Chat.

- Add TaskSummaryTab with completion summary markdown, landed-file stats, completed steps, workflow results, and retry context.
- Default done-task detail entrypoints to Summary while preserving explicit tab selections and plugin tab typing.
- Style and localize the Summary tab, document it, and add dashboard coverage for defaulting and tab content.
- Add a minor changeset for the published CLI package.

Files changed:
 .changeset/fn-7131-summary-tab.md                  |   7 +
 docs/dashboard-guide.md                            |   1 +
 packages/dashboard/app/App.tsx                     |   2 +-
 .../dashboard/app/components/TaskDetailModal.css   | 181 +++++++++++++++++
 .../dashboard/app/components/TaskDetailModal.tsx   |  63 ++++--
 .../dashboard/app/components/TaskSummaryTab.tsx    | 160 +++++++++++++++
 .../TaskDetailModal.definition-actions.test.tsx    |  56 +++---
 .../__tests__/TaskDetailModal.summary-tab.test.tsx | 222 +++++++++++++++++++++
 .../dashboard/app/components/dashboard/types.ts    |   2 +-
 .../app/hooks/__tests__/useModalManager.test.ts    |  10 +-
 .../dashboard/app/hooks/useMainPanelTaskDetail.ts  |   9 +-
 packages/dashboard/app/hooks/useModalManager.ts    |  12 +-
 packages/dashboard/app/plugins/types.ts            |   2 +-
 packages/i18n/locales/en/app.json                  |  16 ++
 14 files changed, 687 insertions(+), 56 deletions(-)

Fusion-Task-Id: FN-7131

Fusion-Task-Lineage: e8ca4ade-9904-4705-a151-d9e55f67b398

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 12:15:42 -07:00
gsxdsm
45e27f8875 FN-7126: govern task creation with action gate
Task creation and delegation now honor task-agent mutation policies in action-gate evaluation.

- Classify task creation, delegation, and import tools as task_agent_mutation for action-gate policy decisions.
- Preserve permanent-agent recognition for coordination paths while documenting the split semantics.
- Update permission policy examples, regression tests, and release note metadata.

Files changed:
 .changeset/fn-7126-task-create-action-gate.md      |  7 +++++++
 docs/agents.md                                     |  2 +-
 packages/core/src/types.ts                         |  2 +-
 .../engine/src/__tests__/agent-action-gate.test.ts | 24 ++++++++++++++++++----
 .../src/__tests__/gating-classifications.test.ts   | 16 +++++++++++++--
 packages/engine/src/gating-classifications.ts      | 10 ++++++---
 6 files changed, 50 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7126

Fusion-Task-Lineage: 0e5d2aea-6670-4f9c-9ee8-5a135774c784

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 11:54:06 -07:00
gsxdsm
68282769e6 FN-7128: raise optional-step fix cycle budget
Code Review and Browser Verification now rerun through bounded fix passes until they pass.

- Raise the shared maxPostReviewFixes default and fallbacks from 1 to 3.
- Document the built-in optional-step fix cycle and release-note the operator-facing behavior.
- Update workflow graph, settings, and fallback tests for repeated optional-step remediation.

Files changed:
 .changeset/fn-7128-optional-step-cycle-default.md  |   7 ++
 docs/settings-reference.md                         |   2 +-
 docs/workflow-steps.md                             |   2 +-
 .../src/__tests__/workflow-ir-settings.test.ts     |   2 +-
 packages/core/src/builtin-workflow-settings.ts     |   8 +-
 packages/core/src/types.ts                         |   8 +-
 .../workflow-graph-optional-group.test.ts          | 112 +++++++++++++++++----
 .../workflow-graph-optional-step-fix.test.ts       |  35 +++++++
 .../workflow-settings-fallback-alignment.test.ts   |   2 +-
 packages/engine/src/executor.ts                    |   2 +-
 packages/engine/src/self-healing.ts                |   4 +-
 11 files changed, 152 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-7128
Fusion-Task-Lineage: 8165f746-3828-453a-8ca4-8134c8d33c8f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 11:42:01 -07:00
gsxdsm
b5378d232c FN-7124: add engine-controls popover dismiss button
Add an explicit dismiss affordance for the footer engine-controls popover while preserving pending slider saves.

- Add a visible, localized Close engine controls X button inside the engine-control popover.
- Flush pending project concurrency debounce writes before closing via button, Escape, outside-click, or trigger toggle.
- Cover the dismiss affordance and flush behavior with dashboard tests and docs.
- Add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-7124-engine-controls-close.md        |  6 ++
 docs/dashboard-guide.md                            |  2 +-
 .../dashboard/app/components/EngineControlMenu.css | 19 +++++
 .../dashboard/app/components/EngineControlMenu.tsx | 87 +++++++++++++++++-----
 .../__tests__/EngineControlMenu.test.tsx           | 42 +++++++++++
 packages/i18n/locales/en/app.json                  |  1 +
 packages/i18n/locales/es/app.json                  |  1 +
 packages/i18n/locales/fr/app.json                  |  1 +
 packages/i18n/locales/ko/app.json                  |  1 +
 packages/i18n/locales/zh-CN/app.json               |  1 +
 packages/i18n/locales/zh-TW/app.json               |  1 +
 11 files changed, 142 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-7124

Fusion-Task-Lineage: cdd052e7-d4f1-4d4e-8348-002f7702a170

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 11:27:17 -07:00
gsxdsm
c15d1294eb FN-7115: expose governed heartbeat workflow tools
Expose the missing governed workflow and promotion tools to heartbeat agent sessions.\n\n- Add workflow authoring/settings, research cancellation, and task promotion/select tools to the shared heartbeat work surface.\n- Keep task-read discovery and executor-only worktree tools correctly scoped while documenting the heartbeat lane surface.\n- Cover tool injection, permission-gate behavior, and workflow factory exposure with regression tests.\n\nFiles changed:\n .changeset/FN-7115-heartbeat-tool-injection.md     |  7 ++\n docs/agents.md                                     |  6 +-\n .../engine/src/__tests__/agent-action-gate.test.ts | 86 +++++++++++++++++++++-\n .../agent-workflow-tools-exposure.test.ts          | 16 ++--\n .../src/__tests__/heartbeat-executor.test.ts       | 31 +++++---\n .../src/__tests__/heartbeat-session-prompt.test.ts | 69 ++++++++++++++++-\n packages/engine/src/agent-heartbeat.ts             | 22 ++++--\n 7 files changed, 207 insertions(+), 30 deletions(-)

Fusion-Task-Id: FN-7115

Fusion-Task-Lineage: 0883767b-7982-4f10-a466-1467b867dea1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 11:17:03 -07:00
gsxdsm
8f0f020caa FN-7118: add shared task read tool factories
Add reusable heartbeat-safe task read tools for agents.\n\n- Add shared fn_task_list, fn_task_show, and fn_task_search factories with text-safe formatting.\n- Wire the task read tools into permanent/custom heartbeat work tooling and prompts.\n- Classify task read surfaces as read-only coordination exemptions and export the factories.\n- Cover cross-surface task read behavior with engine tests and document the agent surface.\n\nFiles changed:\n .changeset/FN-7118-shared-task-read-tools.md       |   7 +\n docs/agents.md                                     |   2 +-\n .../src/__tests__/agent-task-read-tools.test.ts    | 160 ++++++++++++++++++++\n .../src/__tests__/gating-classifications.test.ts   |  15 ++\n .../src/__tests__/heartbeat-executor.test.ts       |  31 ++--\n .../src/__tests__/heartbeat-session-prompt.test.ts |   8 +-\n packages/engine/src/agent-heartbeat.ts             |  16 +-\n packages/engine/src/agent-tools.ts                 | 161 ++++++++++++++++++++-\n packages/engine/src/gating-classifications.ts      |  11 ++\n packages/engine/src/index.ts                       |   7 +\n 10 files changed, 396 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-7118

Fusion-Task-Lineage: 89a5b3a2-9295-435f-8bb9-f66f8ec73cc1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 11:08:09 -07:00
gsxdsm
5ab4a5961c FN-7119: rescue quarantined engine and CLI tests
Restore quarantined scheduler/reliability coverage while preserving override column-agent model selection.

- remove rescued engine and CLI tests from quarantine configs and the ledger
- add scheduler fake updateSettings coverage so heartbeat writes do not skew call-count assertions
- preserve override column-agent runtime models during initial execution and mid-flight task edits
- update the stale user-configured command guard registry and add a patch changeset

Files changed:
 .changeset/fn-7119-column-agent-model.md           |  7 +++
 docs/testing.md                                    |  2 +
 packages/cli/vitest.config.ts                      |  6 +-
 .../executor-column-agent-principal.test.ts        | 34 +++++++++-
 .../lease-recovery-central-claim.test.ts           |  5 ++
 .../owning-node-unavailable-interactions.test.ts   |  5 ++
 .../todo-inprogress-flapping.test.ts               |  5 ++
 .../src/__tests__/restart.integration.test.ts      |  8 +++
 .../__tests__/scheduler-ephemeral-toggle.test.ts   |  5 ++
 .../scheduler-node-unreachable-audit.test.ts       |  5 ++
 .../__tests__/scheduler-overlap-starvation.test.ts |  5 ++
 .../user-configured-command-no-execsync.test.ts    | 12 +---
 packages/engine/src/executor.ts                    | 18 ++++--
 packages/engine/vitest.config.ts                   | 26 +++-----
 scripts/lib/test-quarantine.json                   | 73 +---------------------
 15 files changed, 106 insertions(+), 110 deletions(-)

Fusion-Task-Id: FN-7119
Fusion-Task-Lineage: 7dc033c8-29d1-4c0e-bfc1-b0ff0d325f43
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 10:50:33 -07:00
gsxdsm
92436d031b FN-7120: add mobile New Chat switcher action
Adds a mobile direct-chat shortcut for starting a new chat from the session switcher.

- Add a New Chat menuitem to the mobile direct-chat session dropdown using the existing NewChatDialog flow.
- Style the new mobile switcher action with touch-friendly spacing and focus handling.
- Extend mobile ChatView tests and docs, and add a changeset for the published CLI package.

Files changed:
 .changeset/fn-7120-mobile-new-chat.md              |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/ChatView.css     |  31 ++++++
 packages/dashboard/app/components/ChatView.tsx     |  17 +++
 .../components/__tests__/ChatView.mobile.test.tsx  | 115 +++++++++++++++++++--
 5 files changed, 162 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-7120

Fusion-Task-Lineage: 5d066667-20c1-4015-9b84-a9e558eecd48

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 10:45:31 -07:00
gsxdsm
e909d41fed FN-7116: suppress transient footer connecting flashes
Keep executor footer stats stable through a one-off suspension-like fetch blip.

- Debounce transient executor stats failures after a successful poll while retaining last-good stats.
- Preserve explicit error reporting for first-load, non-transient, and sustained failures.
- Cover desktop and mobile footer behavior plus hook retry and visibility-resume cases.
- Document the footer behavior and add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-7116-footer-connecting-flash.md      |   7 ++
 docs/dashboard-guide.md                            |   2 +
 .../__tests__/ExecutorStatusBar.test.tsx           |  24 +++-
 .../app/hooks/__tests__/useExecutorStats.test.ts   | 132 ++++++++++++++++++++-
 packages/dashboard/app/hooks/useExecutorStats.ts   |  24 +++-
 5 files changed, 179 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-7116

Fusion-Task-Lineage: 617b91a3-3d7c-42f1-8a44-ba3245eaf0dc

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 10:38:23 -07:00
gsxdsm
368f1e0e45 FN-7117: show all token models in Command Center
Show full-fidelity model token breakdowns in Command Center while keeping Overview compact.

- Remove the Tokens detail chart cap so bars, pies, and tables include every analytics model bucket.
- Keep Overview model summaries explicitly limited to the top consumers with a named cap.
- Add dashboard coverage and docs for full Tokens attribution versus Overview summaries.
- Add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-7117-tokens-by-model.md              |  7 ++
 docs/dashboard-guide.md                            |  5 +-
 .../components/command-center/CommandCenter.tsx    |  8 ++-
 .../__tests__/CommandCenter.test.tsx               | 78 +++++++++++++++++++++-
 .../components/command-center/areas/TokensArea.tsx | 38 ++++++-----
 .../areas/__tests__/TokensArea.test.tsx            | 68 +++++++++++++++++++
 6 files changed, 182 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-7117

Fusion-Task-Lineage: 7bf4c090-1054-40d0-97bf-e0e495077af5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 10:34:15 -07:00
gsxdsm
c61217e71a FN-7121: show queued chat previews above composer
Show queued Chat messages above the composer with a clear divider and covered placement behavior.

- Move the queued-message indicator out of the textarea wrapper so it spans above the input row.
- Add divider styling and responsive pending-message alignment for the composer.
- Extend ChatView coverage for placement, dismissal, and divider removal.
- Document the queued-message preview behavior and add a patch changeset.

Files changed:
 .changeset/fn-7121-queued-message-above-input.md   |  7 ++++
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/ChatView.css     | 19 +++++++++--
 packages/dashboard/app/components/ChatView.tsx     | 35 ++++++++++++--------
 .../__tests__/ChatView.core-interactions.test.tsx  | 37 +++++++++++++++++++---
 5 files changed, 77 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-7121

Fusion-Task-Lineage: b5cb0577-ca4e-459b-9b9e-5c60efd7bdfd

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 10:29:36 -07:00
gsxdsm
e1dba3fcc9 FN-7113: validate workflow graph integrity before execution
Reject malformed workflow graphs at save and run boundaries.

- Add central IR validation for duplicate top-level node ids, unregistered extension keys, and unreachable required nodes.
- Re-validate resolved workflow IR in the graph runner before side effects and fail closed on invalid graphs.
- Expand graph integrity tests and document save/run validation behavior with a release changeset.

Files changed:
 .changeset/FN-7113-workflow-graph-integrity.md     |   7 +
 docs/custom-workflow-reliability-acceptance-map.md |   7 +-
 docs/workflow-steps.md                             |  20 +++
 .../workflow-ir-extension-metadata.test.ts         |  49 ++++++-
 packages/core/src/__tests__/workflow-ir.test.ts    | 106 +++++++++++++++-
 packages/core/src/workflow-ir.ts                   |  51 +++++++-
 .../__tests__/workflow-graph-task-runner.test.ts   | 141 +++++++++++++++++----
 packages/engine/src/workflow-graph-task-runner.ts  |  46 +++++--
 8 files changed, 386 insertions(+), 41 deletions(-)

Fusion-Task-Id: FN-7113

Fusion-Task-Lineage: f41e0d81-7cdf-497a-96ab-fe42504d0be4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:31 -07:00
gsxdsm
2b9e383e18 FN-7111: classify heartbeat tool parity gaps
Classify remaining heartbeat-agent tool gaps so permission gates enforce mutating and network behaviors consistently.

- Add shared classifications for workflow mutators, task update/promote/refine, verification/worktree acquisition, and research cancellation.
- Apply command-execution classifications in both action-gate and permanent-agent gating paths.
- Update operator docs, permission-policy examples, parity tests, and the published package changeset.

Files changed:
 .changeset/FN-7111-tool-classification-parity.md   |  7 ++
 docs/agents.md                                     |  8 +-
 packages/core/src/types.ts                         | 12 ++-
 .../engine/src/__tests__/agent-action-gate.test.ts | 11 ++-
 .../src/__tests__/gating-classifications.test.ts   | 93 +++++++++++++++++++++-
 .../src/__tests__/permanent-agent-gating.test.ts   | 44 ++++++++++
 packages/engine/src/agent-action-gate.ts           |  6 ++
 packages/engine/src/gating-classifications.ts      | 36 ++++++++-
 packages/engine/src/permanent-agent-gating.ts      |  5 ++
 9 files changed, 206 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-7111
Fusion-Task-Lineage: d2f5ee71-c742-4f10-af55-fec380f08f64
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:31 -07:00
gsxdsm
1a30ddd6e8 FN-7108: broaden heartbeat agent tool access
Heartbeat agents now receive safe coordination and discovery tools while risky calls remain permission-gated.

- Add shared heartbeat workflow, research, and clarification tools for task-scoped and no-task runs.
- Give no-task permanent agents artifact registry access alongside existing delegation, messaging, memory, goal, and identity tools.
- Cover the expanded tool surface and action-gate behavior with heartbeat and permission-policy tests.
- Document the permission-governed heartbeat tool model and add a minor changeset.

Files changed:
 .changeset/FN-7108-agent-tool-access.md            |  7 ++
 docs/agents.md                                     |  9 ++-
 .../src/__tests__/heartbeat-executor.test.ts       | 24 +++---
 .../src/__tests__/heartbeat-session-prompt.test.ts | 89 +++++++++++++++++++++-
 .../src/__tests__/pi-create-fn-agent.test.ts       | 67 ++++++++++++++++
 packages/engine/src/agent-heartbeat.ts             | 41 +++++++++-
 6 files changed, 221 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-7108

Fusion-Task-Lineage: 83302055-72be-47f8-a41d-70164d12f010

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:31 -07:00
gsxdsm
c17d745665 FN-7109: notify operators when CLI agents await input
Notify external providers when terminal-backed CLI agents pause for tool permission or user input.

- Add a dedicated cli-agent-awaiting-input notification event to settings, schema defaults, dashboard options, and provider tests.
- Dispatch CLI-agent waiting-on-input notifications from the in-process runtime with task context and prompt-scoped dedupe keys.
- Document the operator behavior and add a published package changeset for the new notification surface.

Files changed:
 .changeset/fn-7109-cli-agent-notification.md       |   7 ++
 docs/agents.md                                     |   4 +
 docs/settings-reference.md                         |   4 +-
 .../cli-agent-permission-notifications.md          |  13 +++
 .../core/src/__tests__/global-settings.test.ts     |   1 +
 packages/core/src/settings-schema.ts               |   1 +
 packages/core/src/types.ts                         |   6 ++
 .../SettingsModal.remote-notifications.test.tsx    |   1 +
 .../components/__tests__/settings-mobile.test.tsx  |   2 +-
 .../settings/sections/NotificationsSection.tsx     |   3 +
 .../src/__tests__/in-process-runtime.test.ts       |  56 ++++++++++-
 packages/engine/src/__tests__/notifier.test.ts     |   6 +-
 .../engine/src/__tests__/ntfy-provider.test.ts     |   4 +
 .../engine/src/__tests__/webhook-provider.test.ts  |   2 +
 .../engine/src/cli-agent/__tests__/runtime.test.ts |  39 +++++++-
 .../__tests__/notification-service.test.ts         |  56 ++++++++++-
 .../src/notification/notification-service.ts       |   9 +-
 packages/engine/src/notification/ntfy-provider.ts  |   7 ++
 .../engine/src/notification/webhook-provider.ts    |   2 +
 packages/engine/src/notifier.ts                    |   1 +
 packages/engine/src/runtimes/in-process-runtime.ts | 111 +++++++++++++++++++++
 21 files changed, 326 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-7109

Fusion-Task-Lineage: 636c1875-92a2-46a7-847e-1f4955c0822f

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:31 -07:00
gsxdsm
04f8fe5d59 FN-7107: load CE stage skills for interactive sessions
Ensure Compound Engineering stages request and expose their registered skills when launching interactive sessions.

- Add plugin-local skill resolution checks that warn when a stage skill install is missing.
- Pass a stable additional skill path and requested stage skill into every CE interactive session.
- Add coverage for stage skill loading options and update skill reachability expectations.

Files changed:
 ...d-skills-not-loading-in-interactive-sessions.md |  1 +
 .../src/__tests__/skill-reachability.test.ts       | 71 +++++++++++++---------
 .../src/__tests__/stage-skill-loading.test.ts      | 69 +++++++++++++++++++++
 .../src/session/orchestrator.ts                    | 48 ++++++++++++++-
 4 files changed, 157 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-7107

Fusion-Task-Lineage: 0504e9ba-c2e7-4317-9c90-55693baf8170

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
b69dd8eb14 FN-7103: alias brainstorm artifacts to unified plans
Compound Engineering now treats brainstorm output as the requirements-only form of unified plan artifacts.

- Point the brainstorm stage at docs/plans while keeping the existing stage and skill identifiers for compatibility.
- Surface CE plan frontmatter metadata during artifact discovery and reading.
- Harden CE artifact discovery against symlink escapes for conventional artifact paths.
- Update docs, tests, and changeset coverage for the unified brainstorm/plan artifact flow.

Files changed:
 .changeset/fn-7103-ce-plan-alias.md                |   7 ++
 docs/plugins/compound-engineering.md               |  21 +++-
 .../fusion-plugin-compound-engineering/README.md   |  36 ++++--
 .../orchestrator-interrupt-resume.test.ts          |   8 +-
 .../src/__tests__/session-store.test.ts            |  38 ++++++
 .../src/__tests__/stage-registry.test.ts           |  18 +++
 .../src/__tests__/sync.test.ts                     |  36 +++++-
 .../src/artifacts/__tests__/discovery.test.ts      | 133 +++++++++++++++++++-
 .../src/artifacts/discovery.ts                     | 136 +++++++++++++++++++--
 .../src/session/stage-registry.ts                  |  10 +-
 .../src/sync/reconciler.ts                         |   2 +-
 11 files changed, 413 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-7103

Fusion-Task-Lineage: 284a5c5c-40f7-44b2-8e3e-1de671dde36a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
28cdd1c215 FN-7099: add project plan approval mode
Add a project-wide plan approval mode that can override workflow approval gates.

- Add core plan approval resolution for workflow, auto-approve-all, and require-all modes.
- Apply the resolved approval mode in triage recovery and planning finalization.
- Expose the mode in settings UI with translations, docs, tests, and a changeset.

Files changed:
 .changeset/fn-7099-plan-approval-mode.md           |  7 +++
 docs/settings-reference.md                         |  3 +-
 docs/storage.md                                    |  5 +-
 packages/core/src/__tests__/plan-approval.test.ts  | 37 ++++++++++++++
 packages/core/src/index.ts                         |  2 +
 packages/core/src/plan-approval.ts                 | 21 ++++++++
 packages/core/src/settings-schema.ts               |  3 +-
 packages/core/src/types.ts                         |  5 ++
 .../dashboard/app/components/SettingsModal.tsx     |  1 +
 .../SettingsModal.scheduling-merge.test.tsx        | 17 +++++++
 .../__tests__/SettingsModal.test-harness.tsx       |  1 +
 .../components/settings/sections/MergeSection.tsx  | 19 +++++++
 .../MergeSection.legacy-automerge-cleanup.test.tsx | 23 ++++++++-
 packages/engine/src/__tests__/triage.test.ts       | 58 ++++++++++++++++++++++
 packages/engine/src/triage.ts                      | 10 +++-
 packages/i18n/locales/en/app.json                  |  5 ++
 packages/i18n/src/resources.d.ts                   |  5 ++
 17 files changed, 215 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-7099
Fusion-Task-Lineage: 8b276000-1df3-41e4-a94d-724aac559954
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
9e2fb5d62c FN-7102: count active triage planners in project health
Align project health in-flight readouts with live agent slot holders.\n\n- Count non-paused triage planning tasks alongside in-progress executors for dashboard health and CLI project displays.\n- Keep persisted projectHealth.inFlightAgentCount as bookkeeping while deriving user-facing counts from live task state.\n- Cover CLI and dashboard health routes for paused, inactive, and per-project triage planner cases.\n- Document the live count behavior and add a patch changeset.\n\nFiles changed:\n .changeset/fn-7102-health-triage-inflight.md       |  7 +++\n docs/cli-reference.md                              |  2 +\n docs/multi-project.md                              |  4 +-\n .../cli/src/commands/__tests__/project.test.ts     | 59 +++++++++++++++---\n packages/cli/src/commands/project.ts               | 35 +++++++----\n packages/cli/src/project-resolver.ts               | 17 ++++--\n packages/core/src/types.ts                         |  4 +-\n .../dashboard/src/__tests__/project-routes.test.ts | 71 ++++++++++++++++++----\n .../src/routes/register-project-routes.ts          |  9 ++-\n 9 files changed, 163 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-7102

Fusion-Task-Lineage: ebcba74c-238d-4ca7-aa77-df0d329c0ea9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:30 -07:00
gsxdsm
a8f51e9423 FN-7098: clarify prompt settings ownership
Clarify where Settings and Workflow Editor prompt editing responsibilities live.

- Add explanatory Prompts settings copy and a Workflow Editor navigation affordance.
- Thread the workflow settings opener into the Prompts section while keeping agent prompt tabs available.
- Document prompt ownership and add regression coverage for the new Prompts section behavior.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-7098-prompts-workflow-alignment.md   |   7 ++
 docs/settings-reference.md                         |  11 +-
 .../dashboard/app/components/SettingsModal.tsx     |   9 +-
 .../__tests__/SettingsModal.prompts.test.tsx       | 118 +++++++++++++++++++++
 .../settings/sections/PromptsSection.tsx           |  23 +++-
 5 files changed, 164 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-7098
Fusion-Task-Lineage: 57ac1f1b-77f8-4180-abe9-f6752768b17b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:29 -07:00
gsxdsm
f34b62cef9 FN-7097: count triage planners in running agents
Include active triage planners in live running-agent counts so global concurrency readouts match slot usage.

- Count unpaused triage tasks with planning status alongside in-progress tasks.
- Add resolver coverage for triage-only, mixed, and multi-project running-agent counts.
- Document that concurrency readouts include active triage planners and add a patch changeset.

Files changed:
 .changeset/fn-7097-triage-running-count.md         |  7 +++
 docs/dashboard-guide.md                            |  3 +-
 docs/multi-project.md                              |  3 +-
 .../src/__tests__/project-store-resolver.test.ts   | 73 ++++++++++++++++++++--
 packages/dashboard/src/project-store-resolver.ts   | 11 +++-
 5 files changed, 87 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-7097

Fusion-Task-Lineage: 705daf65-0883-40cd-b620-3be8c0f38543

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:29 -07:00
gsxdsm
ee3a06ecfd FN-7095: add actionable backup failure details
Database Backup automation failures now expose the affected database, paths, and root cause.

- Add DB-qualified error formatting for project and central backup creation, verification, schedule validation, and command failures.
- Normalize routine and cron in-process backup failures so empty or opaque errors become actionable AutomationRunResult errors.
- Cover missing database files, backup directory failures, central copy failures, corrupt backup quarantine, and runner normalization with regression tests.
- Document backup failure detail behavior and add a patch changeset.

Files changed:
 .changeset/fn-7095-backup-detail.md                |   7 ++
 docs/storage.md                                    |   2 +
 packages/core/src/__tests__/backup.test.ts         | 114 ++++++++++++++++++++-
 packages/core/src/backup.ts                        | 112 +++++++++++++++-----
 packages/engine/src/__tests__/cron-runner.test.ts  |  35 +++++++
 .../engine/src/__tests__/routine-runner.test.ts    |  45 ++++++++-
 packages/engine/src/cron-runner.ts                 |  20 +++-
 packages/engine/src/routine-runner.ts              |  20 +++-
 8 files changed, 324 insertions(+), 31 deletions(-)

Fusion-Task-Id: FN-7095

Fusion-Task-Lineage: 368e3edf-20d3-4756-97be-75734dbff703

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 09:28:29 -07:00