Commit Graph

4617 Commits

Author SHA1 Message Date
gsxdsm
e0d96712c3 Agent run fixes 2026-05-09 17:05:43 -07:00
Fusion
e07a9d4e64 feat(FN-3888): fix dependency graph plugin ESM imports for Node16
Fixed ESM import resolution in the dependency graph plugin by repointing its tsconfig to Node16 and adding compatible import extensions, with verification tests covering the raw-node plugin entrypoint resolution path.

Fusion-Task-Id: FN-3888
2026-05-09 16:57:43 -07:00
gsxdsm
47504ea0c8 fix(FN-3888): resolve dependency-graph plugin from src in dashboard build
The dashboard dynamically imports `@fusion-plugin-examples/dependency-graph/dashboard-view`, which resolved through the plugin's package.json exports to `dist/`. When plugin source was edited without rebuilding, stale `dist/` (extensionless ESM imports) made the import throw and the UI surfaced "Bundled plugin view unavailable". Add vite/vitest aliases mapping the plugin (and its `/dashboard-view` subpath) to `src/` so the dashboard never depends on `dist/`. Mirrors the existing pattern for hermes/openclaw/paperclip runtimes. Also extends the runtime-plugin alias regression test, and emits `.js` extensions from the plugin source for the CLI-bundled path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:44:44 -07:00
gsxdsm
d942c0c404 fix(engine): rescue auto-merge handoff from stale mergeActive entries
The 15s `scheduleMergeRetry` sweep was silently re-skipping in-review
tasks whose `mergeActive` entry leaked from a wedged prior attempt
(uncaught error inside `drainMergeQueue`, restart between push and
finally, etc.). FN-002, FN-004, FN-3898, FN-3899 all sat in in-review
until the 15-min maintenance loop logged "Auto-recovered: eligible
in-review task re-enqueued for merge".

Two changes:

* `reconcileStaleMergeActive()` runs before each 15s sweep. Any
  `mergeActive` taskId that isn't in `mergeQueue` and isn't the
  `activeMergeTaskId` is treated as leaked and dropped, so the next
  enqueue actually pushes through.
* The `task:moved → in-review` immediate handoff (`wireAutoMerge`) now
  logs every skip reason instead of returning silently, clears its own
  stale `mergeActive` entry before enqueueing, and identifies the task
  in its catch-block warning. `internalEnqueueMerge` also warns when a
  leaked entry causes a skip — the next regression won't be invisible.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:33:54 -07:00
Fusion
271166ad7c feat(FN-3899): add chat rooms with send routing and delete-room UI
This merge delivers chat rooms with room send routing and delete-room UI in the dashboard (FN-3899), including fixes for bundled plugin view imports and a release changeset. Supporting changes include a merger improvement that tightens scope-warning diff base when baseBranch is missing, companies.sh

Fusion-Task-Id: FN-3899
2026-05-09 16:29:11 -07:00
Fusion
1ccccdece9 fix(FN-3885): preserve mainline plugin bundling in squash merge
- Resolve squash conflict in packages/cli/tsup.config.ts using smart-prefer-main safety rules
- Keep mainline dependency-graph plugin bundling path and avoid reintroducing stale branch copy logic
- Verify merged result with mandatory pnpm test and pnpm build before finalizing
2026-05-09 16:16:17 -07:00
gsxdsm
c6b53e8842 chore(release): bump homebrew tap formula automatically after npm publish
Adds a `bumpHomebrewTap(version)` step that fetches the freshly published
tarball from registry.npmjs.org, recomputes its sha256, rewrites
homebrew-tap/Formula/fusion.rb (url + sha256), and pushes a follow-up
`chore(tap): bump fusion to vX.Y.Z` commit to main. Includes a short
retry loop because the registry can take a few seconds to surface a
just-published tarball. All failures are warnings — they don't abort
the release since the npm publish + tag are already out.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:09:57 -07:00
gsxdsm
985d51c3b3 fix(engine): tighten merger scope-warning diff base when baseBranch is missing
Mirrors dashboard `resolveDiffBase` display-recovery: when `baseBranch` is
absent, compute `merge-base(HEAD, main)` and prefer it over a stale
`baseCommitSha` only if it strictly descends that SHA. Pre-merge rebase
on legacy/imported tasks (no recorded baseBranch) was producing inflated
"N files changed outside declared File Scope" warnings — FN-3898 surfaced
17 ghost files for a 3-file change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:06:42 -07:00
Fusion
71bf70f79d feat(FN-3898): add checkout/schema self-heal and import compatibility updates
- Add self-healing for legacy tasks schema/columns and checkout-lease recovery with regression coverage
- Extend companies.sh import parsing and dashboard import routes for repo subpath handling
- Fix verification command spawning to disable Corepack download prompts in engine tooling
- Update dependency-graph plugin packaging/exports and wire CLI dashboard interop types
- Add and include follow-up changesets for FN-3856, FN-3883, FN-3896, and FN-3898

Fusion-Task-Id: FN-3898
2026-05-09 16:06:42 -07:00
gsxdsm
5ee21e9f9f test(engine): stub git-shelling worktree-pool helpers in in-process runtime tests
Prevents flaky 30s subprocess-guard timeouts on `git rev-parse --git-dir`
when fake-timer tests race the kill timer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:56:19 -07:00
Fusion
89acfd0466 feat(FN-3896): support companies.sh repo subpaths in company imports
- Add secure archive subPath handling to company package parsing, including traversal/absolute-path validation
- Parse GitHub website tree URLs from companies.sh metadata to derive preferred branch and nested subPath
- Wire dashboard company import flow to download the correct branch archive and parse nested manifests with clear API errors
- Add parser and route tests for subPath success/failure cases and include changeset for @runfusion/fusion

Fusion-Task-Id: FN-3896
2026-05-09 15:56:11 -07:00
gsxdsm
00c580d388 fix(engine): disable Corepack download prompt in verification spawns
Non-TTY children spawned by the verification runner hung until the hard
timeout when Corepack prompted before fetching a pinned packageManager
version. Set COREPACK_ENABLE_DOWNLOAD_PROMPT=0 in the spawn env so the
fetch proceeds (or fails fast) without waiting on stdin.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:29:05 -07:00
Fusion
3e64668c6a feat(FN-3856): add stuck merge deadlock recovery sweep and self-healing aut
Merges deadlock recovery for stuck merge tasks (FN-3856) — the engine now runs an already-merged sweep before pausing blocked tasks, and recovers metadata alignment with MergeDetails type. Also adds memory backup CLI commands with core support, a resizable split pane to the mailbox view, peer-agent

Fusion-Task-Id: FN-3856
2026-05-09 15:26:30 -07:00
Fusion
0b69b9917e feat(FN-3883): fix dependency-graph plugin exports and add CLI bundle entry
Fixed the `@fusion-plugin/dependency-graph` plugin's exports and build entry points so it bundles correctly with the CLI, added test coverage for plugin enable success and error-state toasts, and included the plugin's dist in the CLI bundle via tsup config.

Fusion-Task-Id: FN-3883
2026-05-09 15:12:13 -07:00
Fusion
f9cba2507c fix(FN-3886): resolve peer agent names in mail and notifications
- Resolve participant display names in AgentDetailView mail tab for peer agents
- Update MailboxModal labeling to use readable agent names instead of raw IDs
- Propagate resolved agent names through notification service, notifier, and provider payloads
- Add and update dashboard/engine tests plus a changeset for @runfusion/fusion

Fusion-Task-Id: FN-3886
2026-05-09 14:58:56 -07:00
Fusion
76e6eedec0 feat(FN-3882): document clearStaleBlockedBy() in SelfHealingManager section
Added a single line documenting `clearStaleBlockedBy()` in the SelfHealingManager section of the architecture docs.

Fusion-Task-Id: FN-3882
2026-05-09 14:51:58 -07:00
Fusion
15e43360ef feat(FN-3891): document memory backup settings in settings reference
Documents the memory backup feature in the settings reference and adds a changeset to prepare for publishing.

Fusion-Task-Id: FN-3891
2026-05-09 14:41:58 -07:00
Fusion
f182aa30ad feat(FN-3885): add resizable split pane to mailbox view
Adds a resizable split-pane to the MailboxView component (FN-3885) and introduces a report archive feature to fusion-plugin-reports with a full store, schema, and types layer (FN-3784). Also adds tests for the notification dispatcher pipeline, updates the MemoryView test allowlist, and clarifies the

Fusion-Task-Id: FN-3885
2026-05-09 14:25:35 -07:00
Fusion
c995ab3d90 feat(FN-3890): include MemoryView in dashboard quality test allowlist
Adds MemoryView to the dashboard test quality gate allowlist so it participates in the curated default test run.

Fusion-Task-Id: FN-3890
2026-05-09 14:20:03 -07:00
Fusion
235ba11712 feat(FN-3784): document report archive feature in fusion-plugin-reports REA
Documents the report archive feature in the Fusion Plugin Reports README and adds a patch changeset for the release.

Fusion-Task-Id: FN-3784
2026-05-09 14:12:08 -07:00
Fusion
2864f70608 docs(FN-3887): clarify ntfy allowlist requirement for agent messages
- Update settings reference language for ntfy integration
- Clarify that agent messages require allowlisting configuration
- Keep notification setup guidance aligned with current behavior

Fusion-Task-Id: FN-3887
2026-05-09 14:04:01 -07:00
gsxdsm
13a3e15367 chore(release): v0.24.0
Version bump via changesets.
2026-05-09 13:56:53 -07:00
gsxdsm
07e197adbc docs(FN-3882): document clearStaleBlockedBy() in architecture.md SelfHealingManager section 2026-05-09 13:55:51 -07:00
Fusion
f4967162c9 feat(FN-3889): emit shutdown event when Fusion session is disposed
Emit a session shutdown event when a Fusion session is disposed, with a matching test update in the engine package.

Fusion-Task-Id: FN-3889
2026-05-09 13:55:05 -07:00
Fusion
1e800594d5 feat(FN-3884): anchor QuickChatFAB and chat messages to latest on layout sh
Merges FN-3884 chat scroll anchoring — ChatView now re-scrolls to the latest message when reopened or when activation transitions occur, with a bounded bottom-anchor helper preventing layout-shift overshoots. QuickChatFAB was updated to wire the new anchoring behavior, and both components gained com

Fusion-Task-Id: FN-3884
2026-05-09 13:49:11 -07:00
Fusion
d2d1aad727 feat(FN-3866): add changeset for clearing stale blocked-by relationships
Merges the changeset for a patch release of `@runfusion/fusion` related to clearing stale blocked-by relationships (FN-3864).

Fusion-Task-Id: FN-3866
2026-05-09 13:37:20 -07:00
Fusion
03a6108833 feat(FN-3865): complete Step 8 — documentation and delivery 2026-05-09 13:21:47 -07:00
Fusion
5d0b109cf9 fix(FN-3865): align merge recovery types and real-git fixtures 2026-05-09 13:21:47 -07:00
Fusion
6a92d62923 feat(FN-3865): complete Steps 3-6 — recover already-merged review tasks 2026-05-09 13:21:47 -07:00
Fusion
a1f89a1d31 feat(FN-3865): complete Step 2 — add already-merged detection helpers 2026-05-09 13:21:47 -07:00
Fusion
b47f6ff288 feat(FN-3878): add restore-merge-sha script for commitSha restoration
Adds a new merge commitSha restoration script (`scripts/restore-merge-sha-fn-3878.mjs`) with test coverage to handle a specific FN-3878 merge case, along with a changeset for publishing and a minor plugin vitest config governance alignment across three plugins.

Fusion-Task-Id: FN-3878
2026-05-09 13:21:47 -07:00
Fusion
e7acd2788b feat(FN-3879): add chat room management in ChatView
- Add useChatRooms hook with room lifecycle state and API integration
- Wire ChatView UI for room selection/creation and update room-focused tests
- Tokenize ChatView and TaskCard color usage to align with dashboard design tokens
- Update architecture docs and include FN-3879 changesets for published CLI package

Fusion-Task-Id: FN-3879
2026-05-09 13:21:47 -07:00
Fusion
003e51aef6 feat(FN-3783): add review panel plugin for fusion reports with type definit
The merge delivers the **Reports Review Panel** (FN-3783) as a multi-step plugin feature — defining review panel types, implementing orchestration logic, and wiring them through the fusion-plugin-reports entry point — alongside a collection of complementary improvements: section-aware prompt compact

Fusion-Task-Id: FN-3783
2026-05-09 13:21:47 -07:00
Fusion
37913bcf8c feat(FN-3877): add section-aware prompt compaction for triage task specific
The merge adds section-aware prompt compaction for task triage (reducing spec payload size by intelligently trimming planning context), enriches the Settings modal with GitHub tracking configuration, and improves the engine's self-healing behavior.

Fusion-Task-Id: FN-3877
2026-05-09 13:21:47 -07:00
Fusion
4b6a14974b feat(FN-3868): add changeset for github tracking settings
Adds a changeset for the GitHub tracking settings feature (FN-3868), preparing it for the next release. The feature itself was implemented in earlier steps; this changeset marks it for publication to npm.

Fusion-Task-Id: FN-3868
2026-05-09 13:21:47 -07:00
Fusion
ac0606daaf feat(FN-3862): add merge attribution changeset
Completes Step 6 of FN-3862 with documentation and delivery, including a changeset for the `@runfusion/fusion` package. Also removes an unused line from the self-healing module.

Fusion-Task-Id: FN-3862
2026-05-09 13:21:47 -07:00
Fusion
f75488d51d feat(FN-3867): add changeset for paused scope exclusion feature
Completes Step 4 by adding a patch changeset for `@runfusion/fusion`, signaling that the FN-3864 scope-exclusion work is ready for the next release.

Fusion-Task-Id: FN-3867
2026-05-09 13:21:47 -07:00
Fusion
45a9bdbbdc feat(FN-3855): add chat stream reattach, hybrid room responder policy, mesh
This merge introduces a model selector to the Insights view with favorites, provider filtering, and configured-only options (FN-3842/3843), alongside chat stream reattach support for dashboard chat recovery. It adds mesh lease recovery semantics and a manager to the engine for improved node resilien

Fusion-Task-Id: FN-3855
2026-05-09 13:21:47 -07:00
Fusion
ad7eb51460 feat(FN-3859): add hybrid room chat responder policy helper
Adds a room responder policy helper for hybrid room chat across the core type definitions and dashboard implementation, with corresponding tests in the core package.

Fusion-Task-Id: FN-3859
2026-05-09 13:21:47 -07:00
Fusion
72f5c59494 feat(FN-3810): define room responder policy helper for hybrid room chat
Defines a room responder policy helper in `@fusion/core` with corresponding types, implements supporting logic in the dashboard chat module, and adds comprehensive tests for the hybrid room manager scenario (FN-3810 step 2).

Fusion-Task-Id: FN-3810
2026-05-09 13:21:47 -07:00
Fusion
be539b7623 feat(FN-3782): enforce mobile touch target for settings star action
Enforces the 44px mobile touch target on the settings star action in `SettingsModal.css`, fixing an accessibility regression introduced in FN-3782.

Fusion-Task-Id: FN-3782
2026-05-09 13:21:47 -07:00
Fusion
e86b4c2774 feat(FN-3864): add mesh lease recovery and compact assigned-agent badge
- Add mesh lease manager integration so engine/self-healing can recover and reconcile stale lease state
- Extend core store/agent-store types, DB handling, and tests to track lease recovery semantics across runtimes
- Collapse TaskCard assigned-agent badge label in narrow cards while preserving accessible labeling behavior
- Update dashboard and engine test coverage for lease recovery flows and assigned-agent badge accessibility
- Document mesh lease recovery behavior in architecture, multi-project, and agents docs

Fusion-Task-Id: FN-3864
2026-05-09 11:31:57 -07:00
Fusion
80e40455aa feat(FN-3452): document mesh lease recovery semantics
Documents mesh lease recovery semantics across the agents, architecture, and multi-project reference files, adding 32 lines of clarifying documentation to explain how mesh leases are recovered in the system.

Fusion-Task-Id: FN-3452
2026-05-09 11:31:57 -07:00
Fusion
90e9dde569 feat(FN-3855): bypass send-message binding in gate wrappers
- Remove hard dependency on sendMessage in pi agent wrappers so no-approval gates can run without chat bindings
- Add regression coverage for createFnAgent behavior when sendMessage is absent and when tool calls still execute
- Add changeset for @runfusion/fusion documenting the no-approval gate send-message fix

Fusion-Task-Id: FN-3855
2026-05-09 11:31:57 -07:00
gsxdsm
b95e5cc6f2 Delete .fusion/tasks/FN-3568 directory 2026-05-09 11:22:03 -07:00
Fusion
b326385c0a fix(FN-3825): surface inline notification test feedback in settings
- Persist per-provider notification test results and render inline success/error feedback blocks
- Add ntfy "Test message notification" action wired to message-event test payload
- Keep toast notifications while also showing provider-specific status text with aria-live feedback
- Update SettingsModal tests to verify ntfy message-event call path and inline webhook/ntfy feedback rendering

Fusion-Task-Id: FN-3825
2026-05-09 11:02:12 -07:00
gsxdsm
b8455ec91e Merge pull request #61 from bluk1020/fix/pr-retry-missing-task-branch
Fix PR retry handling for missing task branches
2026-05-09 11:00:57 -07:00
gsxdsm
434e216cc2 Merge pull request #56 from timothyjlaurent/timothyjlaurent/Anthropic-error
fix: settings scope leak, insights model selector & provider filtering
2026-05-09 10:58:48 -07:00
Fusion
36b21af7d0 feat(FN-3842): finalize dashboard chat reattach and cleanup merge
- Isolate DocumentsView mobile styling while preserving dashboard UI behavior
- Add legacy chat stream reattach support across API routes and chat hooks with updated tests
- Remove tracked hermes runtime dist artifacts to prevent plugin autostash conflicts
- Rename the FN-3842 merge finalize changeset file and keep related changeset updates

Fusion-Task-Id: FN-3842
2026-05-09 10:46:52 -07:00
Fusion
df6956cec6 feat(FN-3843): add chat stream reattach support
Adds the changeset for FN-3843, completing the chat stream reattach feature for the `@runfusion/fusion` CLI package.

Fusion-Task-Id: FN-3843
2026-05-09 10:44:29 -07:00