Commit Graph

4955 Commits

Author SHA1 Message Date
Fusion
ff086b54fd feat(FN-3312): run full verification after in-merge fix
Added comprehensive test coverage for the merger module (124 lines in `merger.test.ts`), covering the in-merge fix from this branch with assertions that verify the corrected behavior.

Fusion-Task-Id: FN-3312
2026-05-08 19:51:41 -07:00
Fusion
54dd9e00de feat(FN-3510): document coverage suites in multi-project docs
Added 8 lines of documentation for coverage suites in the multi-project guide (FN-3510 Step 6).

Fusion-Task-Id: FN-3510
2026-05-08 19:36:58 -07:00
Fusion
288b8a9641 feat(FN-3164): update roadmap API architecture docs
Updated the roadmap API architecture documentation in `docs/architecture.md` as part of Step 6 of FN-3164.

Fusion-Task-Id: FN-3164
2026-05-08 19:20:58 -07:00
Fusion
3a91534f98 feat(FN-3777): add create_agent and delete_agent tools
Adds agent creation and deletion tools to the pi extension, with engine-side implementation in `agent-tools.ts`, core store integration for agent lifecycle management, and corresponding tests and documentation updates across the workspace.

Fusion-Task-Id: FN-3777
2026-05-08 19:15:10 -07:00
Fusion
e04af96d9c feat(FN-3758): align web fetch test coverage and documentation
Aligns web fetch tool test coverage across multiple test suites and updates the agents documentation, with a patch changeset for `@runfusion/fusion`.

Fusion-Task-Id: FN-3758
2026-05-08 18:59:08 -07:00
Fusion
ccefdd2c52 feat(FN-3509): document node mapping availability UI in dashboard guide
Documents the node mapping availability UI in the dashboard guide.

Fusion-Task-Id: FN-3509
2026-05-08 18:44:16 -07:00
Fusion
c0d462a12d feat(FN-3163): test suggestion route error contract in roadmap routes
Adds an assertion for the suggestion route error contract in the roadmap routes test file, completing the test coverage for that endpoint.

Fusion-Task-Id: FN-3163
2026-05-08 18:36:51 -07:00
Fusion
a087aa4e57 feat(FN-3707): implement mesh auth snapshot replication across core, engine
The merge delivers two major features: mesh auth snapshot synchronization across nodes (FN-3707 steps 2/4/5, including core types, central-core plumbing, peer-exchange updates, and settings/node sync route helpers) and a bundled roadmap plugin with chat UX improvements (FN-3162, FN-3756, FN-3771, FN

Fusion-Task-Id: FN-3707
2026-05-08 18:26:14 -07:00
Fusion
992771b14b feat(FN-3761): extract roadmap UI into bundled plugin with chat fixes and m
This merge introduces a bundled roadmap plugin (extracting the roadmap UI into `plugins/fusion-plugin-roadmap`) with a new plugin-owned schema hook and store bootstrap, fixes chat scroll behavior by adding bottom-snap on open and correcting stale refs in queue flush handling for both `useChat` and `

Fusion-Task-Id: FN-3761
2026-05-08 18:12:59 -07:00
Fusion
6f0e167532 feat(FN-3771): add chat bottom-snap behavior and roadmap plugin extraction
Chat UX improvements land first: bottom-snap scrolling behavior is wired into both `ChatView` and `QuickChatFAB`, with comprehensive test coverage added for the components and their underlying hooks; stale-closure bugs in the `useChat` and `useQuickChat` queue-flush handlers are also patched. Roadna

Fusion-Task-Id: FN-3771
2026-05-08 17:59:57 -07:00
Fusion
51e42cb0b5 feat(FN-3759): fix stale refs in useChat and useQuickChat queue flush handl
Merged branch adds FN-3759 queue flush ref fixes for `useChat` and `useQuickChat` hooks (with expanded regression test coverage), extracts the roadmap UI into a standalone plugin with schema hook and store bootstrap, ships FN-3281 review revisions with dashboard/plugin integration updates, and resol

Fusion-Task-Id: FN-3759
2026-05-08 17:52:27 -07:00
Fusion
d63398148d feat(FN-3756): extract roadmap UI into bundled plugin and add autostash orp
Merges major roadmap plugin extraction (FN-3160/3161/3162), hardening the merger with autostash orphan cleanup and TOCTOU defenses (FN-3755/3756), adding shared state snapshots for mesh sync (FN-3451), shipping polling task notifications for the even realities plugin (FN-3743), defaulting non-epheme

Fusion-Task-Id: FN-3756
2026-05-08 17:43:47 -07:00
Fusion
a3299f72b0 feat(FN-3162): add plugin-owned roadmap schema hook and store bootstrap
The merge introduces a plugin-owned roadmap schema system (FN-3162), allowing plugins to define their own schema initialization hook, with tests bootstrapped in the roadmap store and documentation added to the plugin authoring guide. The parallel FN-3281 work delivers review revisions, updates the l

Fusion-Task-Id: FN-3162
2026-05-08 17:37:38 -07:00
Fusion
a4550ff4f6 feat(FN-3281): ship review revisions and dashboard/plugin integration updates
- Add same-task review revision action and lock-resume regression coverage in TaskReview flow
- Migrate built-in roadmap surface to bundled plugin registration and update lazy view wiring
- Align node-specific working-directory/runtime resolution across core, engine, and dashboard routes
- Add even-realities polling task notifications and default non-ephemeral agents to active with supporting docs/changesets

Fusion-Task-Id: FN-3281
2026-05-08 17:17:59 -07:00
Fusion
ea34afaff6 feat(FN-3508): resolve node-specific working dirs and align runtime surfaces
- Add canonical working-directory resolution with node mapping support in core and engine paths
- Update runtime/multi-project documentation and include published-package changesets for the merged work
- Migrate roadmap dashboard surface to the bundled plugin registry flow and adjust lazy-view integration/tests
- Default non-ephemeral agents to active state and extend related agent/route/executor test coverage

Fusion-Task-Id: FN-3508
2026-05-08 17:04:19 -07:00
Fusion
5d226a28ab feat(FN-3161): extract roadmap UI into plugin and remove built-in roadmaps
Merges a major roadmap plugin migration (FN-3161) that extracts the built-in roadmaps UI into `fusion-plugin-roadmap` with bundled plugin view registration, alongside three smaller features: agent default state hardening (FN-3773), polling task notifications for the even realities plugin (FN-3743),

Fusion-Task-Id: FN-3161
2026-05-08 17:01:28 -07:00
Fusion
d20d45ea58 fix(FN-3161): migrate roadmap dashboard surface to bundled plugin
- Move RoadmapsView UI, hooks, and tests from dashboard app into fusion-plugin-roadmap
- Replace the built-in roadmaps route/nav wiring with plugin view registration and host rendering
- Add bundled plugin view registration bootstrap in dashboard startup
- Update roadmap plugin build/test config and add FN-3161 removal changeset

Fusion-Task-Id: FN-3161
2026-05-08 16:51:07 -07:00
Fusion
0da7aa8c0f feat(FN-3773): default non-ephemeral agents to active and add polling task
Non-ephemeral agents now default to `active` state on creation (FN-3773), with aligned test coverage across the agent store and dashboard routes. The even-realities plugin gains a polling notification system including a notification store, card rendering, diff logic, and API routes. Review state per

Fusion-Task-Id: FN-3773
2026-05-08 16:48:44 -07:00
Fusion
89051d6f28 feat(FN-3743): add polling task notifications for even realities plugin
Commits merged:
- feat(FN-3743): add polling task notifications for even realities plugin

Files changed:
.../fusion-plugin-even-realities-glasses/README.md |  27 +++
 .../package.json                                   |   2 +
 .../src/__tests__/cards.test.ts                    |  82 +++------
 .../src/__tests__/diff.test.ts                     |  76 ++++++++
 .../src/__tests__/notification-card.test.ts        |  40 +++++
 .../src/__tests__/notification-routes.test.ts      |  78 ++++++++
 .../src/__tests__/notification-store.test.ts       |  71 ++++++++
 .../src/__tests__/notifier.test.ts                 | 138 +++++++++-----
 .../src/__tests__/transport.test.ts                |   4 +-
 .../src/agent-actions.ts                           |   4 +-
 .../src/cards.ts                                   | 127 ++++++++++---
 .../src/index.ts                                   |  22 ++-
 .../src/notifications/diff.ts                      |  77 ++++++++
 .../src/notifications/store.ts                     |  46 +++++
 .../src/notifications/types.ts                     |  19 ++
 .../src/notifier.ts                                | 199 +++++++++++++--------
 .../src/routes/notification-routes.ts              | 103 +++++++++++
 pnpm-lock.yaml                                     |  31 +++-
 18 files changed, 929 insertions(+), 217 deletions(-)

Fusion-Task-Id: FN-3743
2026-05-08 16:35:22 -07:00
Fusion
60962765bf feat(FN-3280): harden reviewState persistence, API, and PR feedback sync
Merges reviewState hardening (FN-3280 steps 2-3: hardened persistence, API fixes, and PR feedback sync), stepIndex reconciliation for task updates (FN-3757), roadmap route context extraction into the fusion-plugin-roadmap plugin (FN-3160), and shared state snapshots for mesh sync with autostash hard

Fusion-Task-Id: FN-3280
2026-05-08 16:28:03 -07:00
Fusion
d487eeaf36 feat(FN-3757): normalize stepIndex lookups in task update map to match verd
Fixes a step-index normalization bug in the task executor where update map lookups were inconsistent with the zero-indexed keys used by verdicts and checkpoints, causing reconciliation failures on review/update step pairing.

Fusion-Task-Id: FN-3757
2026-05-08 16:13:06 -07:00
Fusion
5ef3c97ed7 feat(FN-3160): move roadmap route context into fusion-plugin-roadmap plugin
The merge completes FN-3160 by making the roadmap route context plugin-owned, moving `roadmap-routes` and `roadmap-suggestions` logic from the dashboard into `fusion-plugin-roadmap` with updated plugin-loader integration. It also includes FN-3755's shared state snapshot support for mesh sync hardeni

Fusion-Task-Id: FN-3160
2026-05-08 15:43:22 -07:00
Fusion
127299f93c feat(FN-3755): add shared state snapshots for mesh sync and harden autostas
Adds shared state snapshots for mesh sync (FN-3451) along with 143-line mesh route registration, unifies agent action gating classifications (FN-3742), and patches the merger engine with two autostash fixes (capture stderr with AI fallback and TOCTOU race defense). Also ships a new quick-capture fea

Fusion-Task-Id: FN-3755
2026-05-08 15:07:08 -07:00
gsxdsm
c16b030cf3 fix(engine): capture stderr and add AI fallback for autostash hard-fail apply
When `git stash apply` exits non-zero without producing conflict markers
(typical causes: untracked-overwrite, path missing at HEAD, index-conflict
that git refuses to mark), the previous code logged the bare exception
message and abandoned the stash. Operators couldn't distinguish failure
shapes without grepping runtime logs, and the dev's uncommitted work was
left to manual recovery even when an automated path would have worked.

Three additions on top of the conflict-marker path that already exists:

1. Capture stderr from the failing `git stash apply` (execAsync attaches
   stderr/stdout to the rejection) and surface it in the task feed and
   any subsequent failure messages, so the operator sees `error: untracked
   working tree files would be overwritten by merge:` directly instead of
   hunting it in mergerLog.

2. Layer 1 fallback: extract the patch via `git stash show -p --binary`
   and try `git apply --3way`. This is more permissive than `stash apply`
   for several common shapes (notably untracked overwrites — `--3way`
   produces conflict markers we can route to the existing AI resolver
   where stash apply just refuses).

3. Layer 2 fallback: if `--3way` also hard-fails and smartConflictResolution
   is enabled, spawn `runAiAgentForAutostashHardFail` with the patch text +
   git stderr. The agent reconstructs the developer's edits on top of HEAD
   by editing files directly, then the orchestrator scans for residual
   conflict markers before declaring success and dropping the stash.

The existing conflict-marker path remains unchanged — only the previously-
abandoned hard-fail branch gains recovery. Stash is dropped on success at
every layer; on every failure path the stash is preserved for manual
recovery and the failure cause is surfaced to the task feed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 14:08:53 -07:00
gsxdsm
11ed9cb409 fix(engine): defend autostash drop against TOCTOU race
dropAutostashBySha resolved SHA→stash@{N} then ran git stash drop ${ref}
non-atomically. Any other process (interactive shell, parallel merger,
fix-agent) pushing a stash between resolve and drop shifted the index, so
we silently dropped the wrong entry while leaving ours behind. The task
log then claimed "Restored pre-merge autostash X cleanly" even though the
stash was still in the list — observed on FN-3558 (e81e922) and others.

Verify the ref still resolves to our SHA via git rev-parse before dropping;
on mismatch, re-resolve and retry up to 5x. Return success/failure so the
caller can record honest status to the task feed instead of unconditionally
logging "cleanly".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 14:05:06 -07:00
Fusion
ae6fdf9329 feat(FN-3451): add shared state snapshots for mesh sync
This merge completes the mesh sync shared-state pipeline (FN-3451 Steps 1–3) by adding agent run snapshot limits, applying inbound snapshots, and returning shared state snapshots, while hardening agent store cache initialization during sync. It also unifies agent action gating classifications across

Fusion-Task-Id: FN-3451
2026-05-08 14:03:17 -07:00
Fusion
07cd3d065c feat(FN-3742): unify agent action gating classifications across permanent a
Merges a significant refactor of agent action gating into a unified `gating-classifications.ts` module shared across permanent agents and executor gating logic, plus new glasses quick-capture support with dedicated routes and parser, and a fix restoring step progress visibility during task execution

Fusion-Task-Id: FN-3742
2026-05-08 13:59:14 -07:00
Fusion
934b706910 feat(FN-3754): unify agent action gating classifications and add even cards
The merge introduces the new `fusion-plugin-even-cards` workspace plugin providing board card endpoints and API key authentication, while also unifying agent action gating classifications across permanent agents with configurable display limits. The GitHub integration receives review state refresh i

Fusion-Task-Id: FN-3754
2026-05-08 13:53:37 -07:00
gsxdsm
a9edca6e1c fix(engine): restore step progress visibility during task execution
Revert an off-by-one regression in fn_task_update (introduced in 491097cd6)
that translated 0-indexed step numbers to step-1, mis-targeting updates and
desyncing codeReviewVerdicts/stepCheckpoints keys with fn_review_step. Also
auto-advance step state from inside fn_review_step (in-progress on entry,
done on code-review APPROVE) so the dashboard reflects progress when an
agent runtime skips the follow-up fn_task_update call — observed with
permanent-agent CEO sessions on the openai-codex transport.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 13:50:09 -07:00
Fusion
b43ec7920b feat(FN-3753): unify agent action gating classifications and add even cards
The merge adds the `fusion-plugin-even-cards` workspace plugin with board card endpoints and auth support, refactors agent action gating classifications into a unified `gating-classifications.ts` module, refreshes review state on manual triggers, repoints roadmap type imports to the plugin package,

Fusion-Task-Id: FN-3753
2026-05-08 13:49:55 -07:00
Fusion
fc34a842ac feat(FN-3751): unify agent action gating classifications across permanent a
Merges two new plugin packages — `fusion-plugin-even-cards` (board/card endpoints with API key auth) and `fusion-plugin-even-realities-glasses` (notifier, quick-capture, settings, transport, Fusion API client, and agent actions) — plus a substantial engine refactor that unifies agent action gating c

Fusion-Task-Id: FN-3751
2026-05-08 13:43:38 -07:00
Fusion
d22bae0b08 feat(FN-3741): repoint roadmap type imports to plugin package
Repointed roadmap type imports to the plugin package across the dashboard (RoadmapsView, useRoadmaps hook, legacy API). Also replaced an invalid spinner token in the TaskDetailModal CSS.

Fusion-Task-Id: FN-3741
2026-05-08 13:36:13 -07:00
Fusion
f528d7cc55 feat(FN-3749): repoint roadmap type imports to plugin package
Fixed FN-3749 by repointing roadmap type imports from their original location to the plugin package across the legacy API, RoadmapsView component, and useRoadmaps hook.

Fusion-Task-Id: FN-3749
2026-05-08 13:29:45 -07:00
Fusion
a9b796efdd feat(FN-3755): reorder task detail timestamps
Reorders timestamps in the task detail modal and adds a rendering test for the component, with a pnpm-lock bump.

Fusion-Task-Id: FN-3755
2026-05-08 13:22:28 -07:00
Fusion
eda2de83bc feat(FN-3739): add even cards plugin with board card endpoints and api key
Adds a new `fusion-plugin-even-cards` plugin that exposes read-only board card endpoints via API key authentication, including board-cards, task-cards, and format utilities, along with comprehensive test coverage and updated plugin authoring documentation.

Fusion-Task-Id: FN-3739
2026-05-08 13:15:22 -07:00
Fusion
3c6fd99584 feat(FN-3279): refresh review state on manual trigger and restore roadmap e
Adds review tab refresh UX, metadata, and API (FN-3279) alongside permanent-agent action gating coordination tools (FN-3724), and introduces two new workspace plugin packages: `fusion-plugin-even-cards` (board/task cards with auth and board-routes) and `fusion-plugin-even-realities-glasses` (cards,

Fusion-Task-Id: FN-3279
2026-05-08 13:05:27 -07:00
gsxdsm
fe5bf04b45 fix: remove unused globals directive in roadmap-suggestions.js 2026-05-08 12:50:38 -07:00
Fusion
302c378c2f feat(FN-3739): add fusion-plugin-even-cards workspace plugin
- Add a new fusion-plugin-even-cards package with typed card formatting utilities and board/task card generation
- Implement authenticated plugin routes for board card endpoints and plugin registration wiring
- Add unit tests for auth handling, board routes, and card formatting behavior
- Document plugin in PLUGIN_AUTHORING guide and register it in pnpm workspace

Fusion-Task-Id: FN-3739
2026-05-08 12:46:12 -07:00
Fusion
e2e0d4ed84 feat(FN-3752): add fusion-plugin-even-realities-glasses plugin package
This merge introduces `fusion-plugin-even-realities-glasses`, a new plugin package providing tools for cards, notifications, quick capture, settings sync, Fusion API client, and agent actions, along with corresponding tests. It also adds eval feature flags and documentation, applies UI refinements t

Fusion-Task-Id: FN-3752
2026-05-08 12:12:57 -07:00
Fusion
a6ec5b9ce6 feat(FN-3738): add fusion-plugin-even-realities-glasses plugin package with
Implements a new Fusion plugin package (`fusion-plugin-even-realities-glasses`) providing settings schema, a Fusion HTTP API client, cards, quick capture actions, a notifier, and transport stub — plus plugin routes and lifecycle hooks wired into the pi extension. The branch concludes with a small fi

Fusion-Task-Id: FN-3738
2026-05-08 12:05:46 -07:00
Fusion
ab1398eb52 feat(FN-3736): declare setTimeout global in roadmap-suggestions.js
Declares the `setTimeout` global in `roadmap-suggestions.js` to resolve a linting or runtime error in the roadmap plugin route handler.

Fusion-Task-Id: FN-3736
2026-05-08 11:47:58 -07:00
Fusion
9f5720724f feat(FN-3724): add coordination tools and permanent-agent action gating
This merge adds a direct-mode review tab to the task detail modal (FN-3278), improves mobile mailbox keyboard handling and fixes request hangs during wake dispatch (FN-3750/FN-3751), and reclassifies coordination tools with lock exemptions in the agent gating system (FN-3724), alongside GitHub route

Fusion-Task-Id: FN-3724
2026-05-08 11:43:11 -07:00
Fusion
aa548f81bf feat(FN-3278): add direct-mode review tab to task detail modal
Merges FN-3278 review tab direct-mode (data, rendering, regression tests, typing fixes, and docs across Steps 2/3/6), FN-3750 mobile keyboard stabilization for mailbox and reply composer, FN-3751 fire-and-forget wake dispatch to prevent request hangs, and FN-3748 workspace aliases for @fusion/* pack

Fusion-Task-Id: FN-3278
2026-05-08 11:36:26 -07:00
Fusion
6e644e2a77 feat(FN-3750): fix mobile mailbox layout and reply composer when keyboard o
Merges mobile mailbox keyboard handling improvements (anchoring layout to the visual viewport, keeping the reply composer focused and visible when the keyboard opens) across MailboxModal, MailboxView, and MessageComposer, with corresponding tests; also makes the wake dispatch fire-and-forget to prev

Fusion-Task-Id: FN-3750
2026-05-08 11:30:20 -07:00
Fusion
955902d761 feat(FN-3750): stabilize mailbox mobile keyboard and wake handling
- Wire mobile keyboard viewport signals into mailbox view and modal containers for anchored mobile layout
- Keep reply composer focused and visible while keyboard is open, with updated component styles and regression tests
- Make messaging wake dispatch fire-and-forget to avoid request hangs and expand route tests for async behavior
- Add desktop vitest workspace aliases for @fusion/* imports and include FN-3750/FN-3751 changesets

Fusion-Task-Id: FN-3750
2026-05-08 11:26:49 -07:00
Fusion
ceb113c680 feat(FN-3751): make wake dispatch fire-and-forget to prevent request hangs
Merges FN-3751 mailbox wake dispatch (fire-and-forget fix, async coverage tests, and gate verification) with FN-3748 workspace aliases for `@fusion/*` packages in desktop vite config. The bulk of file changes are routing refactors and agent route tests supporting the wake mechanism, plus a minor ver

Fusion-Task-Id: FN-3751
2026-05-08 11:23:53 -07:00
Fusion
bd0c8e15eb feat(FN-3748): add workspace aliases for @fusion/* packages to desktop vite
Fixes a duplicate import in the roadmap plugin and adds `@fusion/*` workspace aliases to the desktop vitest configuration so tests can resolve internal packages correctly.

Fusion-Task-Id: FN-3748
2026-05-08 10:57:47 -07:00
Fusion
d90d66538a feat(FN-3737): add even realities integration research report
Adds a new Even Realities integration research report to the documentation.

Fusion-Task-Id: FN-3737
2026-05-08 10:41:59 -07:00
Fusion
7b4cd5ed25 feat(FN-3277): add review tab reviewState persistence and enriched UI state
This merge completes a review tab feature with persistent `reviewState` — adding the core types, TaskReviewTab UI enhancements (enriched states and interactions), GitHub integration routes for refresh/address flows, and full regression coverage for both PR and non-PR modes. The architecture docs wer

Fusion-Task-Id: FN-3277
2026-05-08 10:36:22 -07:00
Fusion
6fffa830bf feat(FN-3159): move roadmap ownership from core to fusion-plugin-roadmap pl
Moves roadmap ownership from `@fusion/core` to `fusion-plugin-roadmap`, deleting ~1,800 lines of roadmap store, types, ordering, and handoff logic from core and replacing it with ~760 lines of new route handlers in the plugin. The dashboard's roadmap routes and suggestions modules are substantially

Fusion-Task-Id: FN-3159
2026-05-08 09:35:45 -07:00