Commit Graph

1067 Commits

Author SHA1 Message Date
Matthew Greenberg
1880db08d4 fix(engine): align computeCacheHitRatio JSDoc with stored tokenUsage format 2026-05-10 16:03:32 -04:00
Matthew Greenberg
9b6b22aa13 fix(engine): remove leading newline from reviewer memorySection — buildPromptLayers handles joining 2026-05-10 16:03:32 -04:00
Matthew Greenberg
cb4fb78d61 fix(engine): preserve memory-before-instructions ordering in dynamic layer 2026-05-10 16:03:32 -04:00
Matthew Greenberg
2706a8384b fix(engine): preserve fn_heartbeat_done at end of tool list after sorting 2026-05-10 16:03:32 -04:00
Matthew Greenberg
0bf9b9193c fix(engine): address PR review — remove dead skill scoping, fix memory layer placement, clarify JSDoc, sort builtin allowlist, remove redundant tests 2026-05-10 16:03:32 -04:00
Matthew Greenberg
441191332b test(engine): improve coverage for prompt layers wiring, backward compat, and skill scoping
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 16:03:32 -04:00
Matthew Greenberg
8570f955e8 test(engine): verify layer forwarding and cross-session cache invariant 2026-05-10 16:03:32 -04:00
Matthew Greenberg
9e5607b6c6 feat(engine): triage and heartbeat use prompt layers for caching 2026-05-10 16:03:32 -04:00
Matthew Greenberg
5d3531e0be feat(engine): executor uses prompt layers for cross-session caching 2026-05-10 16:03:32 -04:00
Matthew Greenberg
4cebf1dde0 feat(engine): add computeCacheHitRatio metric to token usage tracking 2026-05-10 16:03:32 -04:00
Matthew Greenberg
048a03b86b feat(engine): scope skill loading by session purpose to reduce token overhead 2026-05-10 16:03:32 -04:00
Matthew Greenberg
39e57cbb88 feat(engine): sort tools deterministically for prompt cache stability 2026-05-10 16:03:32 -04:00
Matthew Greenberg
00bc7cd442 feat(engine): reviewer uses prompt layers for cross-session caching 2026-05-10 16:03:32 -04:00
Matthew Greenberg
e7ea1257ff feat(engine): add systemPromptLayers to AgentRuntimeOptions and wire into DefaultResourceLoader
Extends AgentRuntimeOptions and AgentOptions with an optional
systemPromptLayers field (SystemPromptLayers) for cross-session prompt
caching. DefaultResourceLoader now uses the stable layer as
systemPromptOverride and the dynamic layer as appendSystemPromptOverride
when layers are provided, falling back to the flat systemPrompt string
for backward compatibility.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 16:03:32 -04:00
Matthew Greenberg
a53a9a0802 feat(engine): add SystemPromptLayers type and builder for cross-session caching 2026-05-10 16:03:31 -04:00
gsxdsm
5f6d998cb2 Merge pull request #65 from bluk1020/fix/stuck-detector-workflow-timeout-fallback
fix: keep stuck detector active by default
2026-05-10 10:17:00 -07:00
Berlin Luk
572e7a8f69 fix: decouple stuck detector timeout 2026-05-11 00:11:23 +08:00
gsxdsm
08e04498f5 chore(release): v0.26.0
Version bump via changesets.
2026-05-10 08:55:51 -07:00
Berlin Luk
4205309114 fix: keep stuck detector active by default 2026-05-10 23:55:36 +08:00
gsxdsm
3e1cb0603a fix(FN-3931): restore triage planning model defaults 2026-05-10 08:42:23 -07:00
Fusion
5b15f45d44 feat(FN-3924): enforce blockedBy blocker invariants in scheduler and recove
Implements invariant enforcement for blocked-by relationships in the scheduler and self-healing recovery, preventing tasks from being blocked by stale or invalid dependencies. The feature adds tests for both scheduler and self-healing behavior, updates the CLI extension and architecture docs, and sh

Fusion-Task-Id: FN-3924
2026-05-10 07:44:31 -07:00
Fusion
246b2b403c feat(FN-3922): enforce task skip on credential-failure heartbeat
Credential-missing recovery is now documented and enforced in the agent heartbeat layer, with comprehensive test coverage for both timer-triggered and assignment-triggered credential failure scenarios.

Fusion-Task-Id: FN-3922
2026-05-10 05:58:46 -07:00
Fusion
26af49a35e feat(FN-3914): add durable heartbeat model fallback
Adds durable heartbeat model fallback logic to the engine's heartbeat subsystem (`agent-heartbeat.ts`, `agent-session-helpers.ts`, `pi.ts`), allowing heartbeats to gracefully use alternative AI models when the primary model is unavailable, with documentation updates to `agents.md` and `settings-refe

Fusion-Task-Id: FN-3914
2026-05-10 02:54:30 -07:00
Fusion
bcb79d8b57 feat(FN-3217): honor resolved merge target across completion flows
- Add merge target branch resolver contract to core types and exports
- Update task lifecycle completion path to resolve and propagate merge target branch
- Use resolved merge target in merger execution instead of stale/default branch assumptions
- Expand core and CLI tests for merge-target resolution behavior and add changeset for @runfusion/fusion

Fusion-Task-Id: FN-3217
2026-05-09 23:06:21 -07:00
Fusion
4051dabe4d feat(FN-3892): honor assigned runtime model for merger sessions
- Add resolveMergerSessionModel helper to centralize merger model selection precedence
- Route merger session creation paths through the helper for commit, push/rebase, and autostash recovery flows
- Add comprehensive engine tests for merger model resolution and fallback behavior
- Document merger model hierarchy in settings reference and add a patch changeset for @runfusion/fusion

Fusion-Task-Id: FN-3892
2026-05-09 21:41:20 -07:00
Fusion
7e8541b92d feat(FN-3863): add stash recovery dashboard surface and API routes
Merged FN-3863 brings stash recovery to the dashboard via three coordinated steps: engine-side orphan stash surfacing API in `merger.ts`, dashboard API routes for stash recovery data, and a new `StashRecoveryView` component with mobile support and inspect-diff row actions, integrated into the header

Fusion-Task-Id: FN-3863
2026-05-09 19:49:02 -07:00
Fusion
d25e8cbfa9 feat(FN-3901): add builtin research web-search provider as default
The merge adds a builtin web-search research provider as the default, replacing the need for external research provider configuration and removing the setup gate for builtin defaults. Dashboard settings UX for research defaults was aligned (ResearchView, SettingsModal), CLI research commands were up

Fusion-Task-Id: FN-3901
2026-05-09 19:41:09 -07:00
Fusion
1caed5c586 test(FN-3900): add stale mergeActive rescue regression coverage
- Add engine project tests covering stale mergeActive state recovery paths
- Verify merge flow can continue when stale merge metadata is detected
- Protect against regressions in merge task rescue behavior

Fusion-Task-Id: FN-3900
2026-05-09 19:22:32 -07:00
Fusion
ff9fb551e3 feat(FN-3895): add event-driven unblock for scheduler startup recovery when
Adds an event-driven unblock path that automatically releases agents when their blocked-by dependencies complete, including startup recovery logic for any tasks still blocked at engine initialization; covered by scheduler and self-healing test suites with a minor CSS fix for the compact mobile impor

Fusion-Task-Id: FN-3895
2026-05-09 19:01:52 -07:00
Fusion
6240afe52f feat(FN-3827): sweep stale autostashes after merge completion
Merger now properly cleans up autostash git refs that survive past their useful lifetime, fixing race conditions during restore/cleanup and adding scheduled stale-sweep runs in the engine. The feature includes docs for the autostash lifecycle, new test coverage for the cleanup and sweep paths, and a

Fusion-Task-Id: FN-3827
2026-05-09 18:46:29 -07:00
Fusion
10e7e53850 feat(FN-3890): add no-git-subprocess regression test
Adds regression tests for the in-process runtime's git subprocess isolation, including hardening git helper mocks and a new no-git-subprocess test case.

Fusion-Task-Id: FN-3890
2026-05-09 18:22:49 -07:00
gsxdsm
e0d5af504e chore(release): v0.25.0
Version bump via changesets.
2026-05-09 17:07:29 -07:00
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
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
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
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
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
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
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
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
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
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