gsxdsm
db971a91ea
fix(FN-1455): initialize git during project registration
...
Fusion-Task-Id: FN-1455
2026-06-06 00:38:28 -07:00
gsxdsm
72e320aab4
Address PR review feedback ( #1445 )
...
- applyRemoteSettings now applies the stripped global payload (moved keys can't resurrect)
- resolver error path keeps effective workflowId so builtin fallback survives identity failure
- updateWorkflowSettingValues read-merge-upsert wrapped in transactionImmediate (lost-update race)
- MergeSection directMergeCommitStrategy UI fallback aligned to schema default (always-squash)
- save-split section-routing test asserts the positive case
- setting-values routes 404 on unknown workflow ids (+ tests)
2026-06-05 16:46:04 -07:00
gsxdsm
1f68348441
merge: main (CLI agent interface #1446 ) — renumber workflow_settings migration to 112 behind main's cli_sessions(110)/adapter(111), full-workspace literal sweep, i18n union
2026-06-05 16:18:39 -07:00
gsxdsm
693ed6290a
Merge remote-tracking branch 'origin/main' into gsxdsm/cli-agent-interface
...
# Conflicts:
# CONCEPTS.md
# packages/core/src/__tests__/db-migrate.test.ts
# packages/core/src/__tests__/db.test.ts
# packages/core/src/__tests__/goals-schema.test.ts
# packages/core/src/__tests__/insight-store.test.ts
# packages/core/src/__tests__/merge-request-record.test.ts
# packages/core/src/__tests__/mission-store.test.ts
# packages/core/src/__tests__/run-audit.test.ts
# packages/core/src/__tests__/store-merge-queue.test.ts
# packages/core/src/__tests__/task-documents.test.ts
# packages/core/src/db.ts
# packages/dashboard/src/__tests__/agent-onboarding.test.ts
# packages/dashboard/src/__tests__/ai-refine.test.ts
# packages/dashboard/src/__tests__/chat-attachment-routes.test.ts
# packages/dashboard/src/__tests__/experiment-routes.finalize.test.ts
# packages/dashboard/src/__tests__/milestone-slice-interview.test.ts
# packages/dashboard/src/__tests__/mission-interview.test.ts
# packages/dashboard/src/__tests__/pr-metadata-generator.test.ts
# packages/dashboard/src/__tests__/project-pause-resume-routes.test.ts
# packages/dashboard/src/__tests__/routes-approval-sandbox-provisioning.test.ts
# packages/dashboard/src/__tests__/routes-approval-secrets.test.ts
# packages/dashboard/src/__tests__/routes-approval.test.ts
# packages/dashboard/src/__tests__/routes-worktrunk.test.ts
# packages/dashboard/src/__tests__/session-error-recovery.test.ts
# packages/dashboard/src/__tests__/session-persistence-roundtrip.test.ts
# packages/dashboard/src/__tests__/session-reconnect.test.ts
# packages/dashboard/src/__tests__/session-resume-history.test.ts
# packages/dashboard/src/__tests__/setup-routes.test.ts
# packages/dashboard/src/__tests__/subtask-breakdown.test.ts
# packages/dashboard/src/routes/__tests__/agent-avatar-routes.test.ts
# packages/dashboard/src/routes/__tests__/custom-providers.test.ts
# packages/dashboard/src/routes/__tests__/docker-node-routes.test.ts
# packages/i18n/locales/en/app.json
# plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts
2026-06-05 15:30:59 -07:00
gsxdsm
6d16c07197
merge: main (editor consolidation #1433 , fast-tests, learnings) — renumber workflow_settings migration to 110, settings panel joins the sidebar disclosures, full-workspace literal sweep
2026-06-05 15:23:15 -07:00
gsxdsm
11fb9f1325
merge main: per-column agent assignment (binding validation, policy-escalation handshake, override notes) into workflow editor consolidation
...
Resolved 4 conflicts preserving both feature sets:
- WorkflowNodeEditor.tsx: kept card-node/edge/dialog/dirty-guard/auto-layout/
onboarding/template/AI-edit features; wired main's columnAgentsEnabled flag
gate, override-column agent registry load, and policy-escalation save retry
(finishSave helper wraps both update payloads).
- WorkflowNodeEditor.test.tsx: kept U2/U4/AI-design describes plus main's U6
column-agent describe; merged api mock + import lists.
- register-workflow-routes.ts: merged import sets (design DI seam + column-agent
validators).
- agent-tools.ts: strip-approval-flags and column-agent binding assertion now
both run in create/update tools.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 14:43:02 -07:00
gsxdsm
b7fa21c25e
merge: main (column-agent assignment #1432 ) into workflow-settings — union executor/agent-tools/routes imports, both tool-description texts, both route helpers
2026-06-05 14:41:43 -07:00
gsxdsm
60f1b7fa39
Merge remote-tracking branch 'origin/main' into gsxdsm/cli-agent-interface
...
# Conflicts:
# packages/dashboard/app/components/__tests__/ListView.test.tsx
2026-06-05 14:36:42 -07:00
gsxdsm
b8eea85dc9
Merge pull request #1432 from Runfusion/feat/column-agent-assignment
...
feat: per-column agent assignment for workflow columns
2026-06-05 14:19:53 -07:00
gsxdsm
59364e7c58
Address PR review feedback round 2 ( #1432 )
...
- R10 kill-switch: workflowColumns flag now gates the execution path (resolver
installation + resume pass 2), making the documented rollback real
- resolver: skip parse candidates whose templateNodeId doesn't exist under the
foreach (disambiguation guard)
- editor: reset the project-scoped agents cache on projectId change
- tests: kill-switch inertness, defer→own-settings release, candidate skip
2026-06-05 13:59:50 -07:00
gsxdsm
563cb5b372
Address PR review feedback ( #1433 )
...
- always dispose AI design session (try/finally) + rejecting-agent test
- prune expired design rate-limit entries per check
- apply workflowId precedence in createTaskWithReservedId
- compare-and-set migrated project default (no pre-transaction snapshot)
- reject fragment ids in setDefaultWorkflowId at the write boundary
- guard stripApprovalBypassFlags against malformed template nodes
- hoist duplicate stepToFragmentIr call in migration loop
- auto-layout preserves unplaced nodes (strictColumnForY)
- second same-pair connection births a failure edge for condition-capable sources
- insertFragment expands foreach templates into child nodes (lossless round-trip)
- copyIrWithFreshIds remaps namespaced foreach child layout keys
- discard stale AI-edit results after workflow switch
- i18n: returnEmptyString:false so empty locale placeholders fall back to en
- test fixes: schema-version titles, migrate idempotency assertion, TaskForm post-resolve + cross-mode regression, deterministic waits
2026-06-05 13:56:05 -07:00
gsxdsm
2a0223472e
Address PR review feedback ( #1432 )
...
- delimiter-safe foreach instance-id resolution via IR-validated candidates
- restart watcher handles binding removal/defer-flip and re-keys the reverse
heartbeat guard on agent change/delete
- governing-node stamp owned by the pass-initiating foreach instance (race fix)
- editor: policy-escalation confirm/retry handshake on save; foreach children
inherit the override note; project-scoped agent fetches; picker disabled on
registry fetch error; column-agent strings in the canonical i18n catalog
- tests: update-tool escalation surface, PATCH escalation route, parity bound
to run-derived stages, try/finally cleanup, deterministic event waits,
symmetric defer surfaces, binding-release regression
2026-06-05 09:29:04 -07:00
gsxdsm
79d6c6a667
fix(ci): resolve lint errors (useless-escape, prefer-const, unused param)
2026-06-05 03:56:29 -07:00
gsxdsm
b9afce306e
fix(review): schema-version gate, output-filter escape-bypass, generic double-wrap, follow-up resolution
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 03:41:54 -07:00
gsxdsm
ace710633c
feat(dashboard): cli-agent hybrid chat transcript with raw-terminal toggle (U12)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 02:38:38 -07:00
gsxdsm
6c9a81a05f
fix(review): apply autofix feedback
2026-06-05 01:53:42 -07:00
gsxdsm
e208842606
chore: lint fixes and plan status flip to completed
2026-06-05 01:18:50 -07:00
gsxdsm
e2707afbd4
test(core): end-to-end workflow-settings journey + surface enumeration; docs and changeset
2026-06-05 01:16:27 -07:00
gsxdsm
a47ea3f7a1
fix(review): strip approval-bypass flags in agent workflow authoring for chat/planning lanes
2026-06-05 01:05:51 -07:00
gsxdsm
d05d5f575f
fix(review): apply autofix feedback
2026-06-05 00:57:49 -07:00
gsxdsm
243113a3cf
feat: cli-agent adapter settings, autonomy approval gate, and node editor config (U15)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 00:30:27 -07:00
gsxdsm
c1c99a9de0
feat(engine): wire cli-agent executor seam and task session lifecycle (U7)
...
Add `cli-agent` as a task-execute executor kind. A workflow node with
`config.executor === "cli-agent"` drives an engine-owned CLI coding agent
through the execute step via the new cli-agent/task-session.ts orchestration:
spawn in the worktree, issue the hook token + write hook scripts, inject the
prompt after readiness, subscribe to the state machine, and resolve on a
positive completion signal (R20 gating). Config is snapshotted at launch; the
PTY is reaped (completed) at the in-review handoff.
Executor seam: runGraphCustomNode gains a cli-agent branch delegating to
runCliAgentNode; the hard-cancel/abort path (awaitAbortInFlightTaskWork +
abortAllInFlight) claims and SIGKILLs the CLI session as a first-class surface,
marking it killed (never resume-eligible). Re-entry kills any prior live
session and launches fresh; follow-up resumes the recorded native session id
when supported. A PTY-pool ceiling surfaces as a typed task value, not a stall.
Node-config typing extended minimally (WorkflowNodeExecutorKind /
WorkflowNodeExecutorConfig in @fusion/core).
Tests: cli-agent/__tests__/task-session.test.ts (12) and
__tests__/cli-agent-executor.test.ts (9) cover AE1/AE5, hard cancel, re-entry,
follow-up, config snapshot, ceiling, and the generic-tier confirm-advance path,
using scripted adapters + a mock PTY seam. Engine typecheck clean; full
src/cli-agent suite + new tests green (144 passing).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 00:01:12 -07:00
gsxdsm
ef33d79e78
feat(core,dashboard): workflow-centric task creation with atomic workflowId materialization
2026-06-04 23:47:24 -07:00
gsxdsm
cb9a3f1cc5
feat(settings): surface sweep for the hard-move — export v2 with workflowSettings, sync moved-key filtering, CLI redirect hints, consistency guard
2026-06-04 23:41:30 -07:00
gsxdsm
e421774f6a
feat(core): column agent IR schema, validation, and effective-agent resolver
...
U1+U2 of the column-agent plan: WorkflowColumnAgent on WorkflowIrColumn
(defer/override), template-subgraph column validation, v2-only-feature
registration, plugin-sdk type parity, and the shared core resolver with
instanceNodeId format ownership moved to core.
2026-06-04 23:35:32 -07:00
gsxdsm
4fe7dbe016
feat(core): one-time hard-move migration of workflow-policy settings to workflow setting values
...
30 moved keys (step execution, review/approval, per-phase model lanes) leave
DEFAULT_PROJECT_SETTINGS; marker-gated idempotent per-project migration writes
customized values to every in-use (workflowId, projectId); stale-writer guard;
tombstone allowlist derived from the builtin catalog.
2026-06-04 23:23:48 -07:00
gsxdsm
407ce03bf2
feat(dashboard): workflow and template JSON import/export with trust-boundary stripping
2026-06-04 23:16:46 -07:00
gsxdsm
202083dcff
Merge U16: shared PTY native-asset loader in engine + redactSecrets in core
2026-06-04 22:54:01 -07:00
gsxdsm
ea18ef8d44
feat(engine): extract shared PTY native-asset loader and redactSecrets (U16)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 22:53:02 -07:00
gsxdsm
ad5205f186
feat(core): add cli_sessions table and CliSessionStore (U1)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 22:52:20 -07:00
gsxdsm
b1ebb22010
Merge current main (fast-tests quality-backfill projects) into plugin install fixes
2026-06-04 22:43:52 -07:00
gsxdsm
e8e54bf343
feat(engine): per-task effective workflow settings — resolver, two-tier entry merge, fallback alignment
2026-06-04 22:37:51 -07:00
gsxdsm
d8ff8db759
feat(core,dashboard): lazy idempotent legacy-step migration into workflow templates
2026-06-04 22:33:25 -07:00
gsxdsm
28e74f10d6
feat(core): workflow kind discriminator and steps-to-IR converter
2026-06-04 22:18:36 -07:00
gsxdsm
db4cdc6f5c
feat(core): workflow setting values store — per-(workflow,project) table, validating write authority, drop-on-orphan resolution
2026-06-04 22:12:38 -07:00
gsxdsm
04d5e66d24
feat(core): workflow IR typed settings declarations with built-in moved-key catalog
2026-06-04 22:00:04 -07:00
gsxdsm
742989c402
Merge remote branch updates (workflow-defined custom columns stream + main) into plugin install fixes
2026-06-04 21:58:26 -07:00
gsxdsm
4426eb8d74
Fix Settings plugin installs registering unloadable directory paths
...
Plugins installed from Settings → Built-in Plugins registered the
manifest directory as the plugin path, but since FN-4128 the loader
requires a loadable entry FILE (Node ESM cannot import directories),
so enabling failed with "Plugin entry must be a file, got directory".
Only the CLI startup path had been migrated to entry-file resolution,
which is why CLI-auto-installed plugins worked and Settings installs
never did.
- Add resolvePluginEntryPath (bundled.js → dist/index.js →
src/index.ts) to @fusion/core; the CLI keeps its local copy (its
test fs mocks don't reach externalized core) with sync comments
both ways.
- Register the resolved entry file in both dashboard install routes;
400 with a clear message when a package has no loadable entry.
- Heal legacy directory-path registrations on enable, mirroring the
CLI's startup heal, so existing broken rows recover from the UI
without a restart.
- Route tests: assert installs register entry files, cover the
enable-route heal, and update existing install tests to the
entry-file contract.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 21:57:46 -07:00
gsxdsm
ffc4d8a6ed
feat(dashboard): success/failure edge authoring with cycle guard and interpreter-only banner
2026-06-04 19:35:34 -07:00
gsxdsm
e5bab640f9
Merge pull request #1385 from Runfusion/gsxdsm/fast-tests
...
perf: speed up test suite across inner loop, full suite, and CI
2026-06-04 18:38:56 -07:00
gsxdsm
6f7f6860be
fix: address PR review feedback ( #1424 )
...
- restore customFields on unarchive; reconcile all occupants on field-schema edits (store.ts)
- serialize per-field saves + controlled inputs in TaskFieldsSection (race fixes)
- fn_workflow_get includes layout; Array.isArray guards in validateCodeNodeSources
- per-instance graphStepActiveContext keying; rebase in instance worktree; clear run-once memo on RETHINK
- GET /api/step-parsers + registry-backed parser select (plugin parsers reachable from editor)
- translate new workflowNodes/workflowFields strings across all 5 non-en locales
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 16:16:50 -07:00
gsxdsm
94da14cd81
fix: lazy-load esbuild via createRequire (jsdom-safe engine import) + lint cleanup of dead helpers
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 13:19:55 -07:00
gsxdsm
60e9938f5a
feat(core,engine): U7 — builtin stepwise coding workflow + trajectory parity & invariant suite; agent-tool surfaces for custom fields and IR authoring
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 13:15:49 -07:00
gsxdsm
2cfa8a3282
feat(engine,core): U5+U6+U12core — step-review verdict handler, graph-source projection discipline, pluggable step-parser registry
...
- step-review node: reviewStep seam, verdict→outcome edges, UNAVAILABLE limiter, rethink reset-on-rework, split-branch advisory-only
- updateStep source:'graph': dependency-order done guard, audit-loud suppression, auto-reinit bypass; projection-first ordering
- runGraphTaskStep: per-step step-session physics pinned for graph-owned runs (closes U3 interim)
- step-parsers.ts registry (step-headings byte-identical move + json-steps), store delegates via registry
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 12:26:05 -07:00
gsxdsm
a5023e0284
feat(core): U11 — custom task fields validation authority, orphan-not-delete reconciliation, coerce gate
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 12:03:29 -07:00
gsxdsm
0a3cc50f6f
feat(core): U4-core — schema v108 (workflow_run_step_instances + tasks.customFields), instance CRUD trio, literal sweep
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:50:45 -07:00
gsxdsm
2a3c285bae
feat(core): U1 — IR foreach/step-review/parse-steps/code kinds, rework edges, dependsOn parsing (FN step-inversion)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:33:33 -07:00
gsxdsm
afc72b6bb0
fix(core): widen Task.column to ColumnId across packages; v1-preserving IR persistence for rollback safety ( #1403 #1405 )
2026-06-04 08:00:33 -07:00
gsxdsm
cfc9bb5fd5
fix(core): shared workflow-IR resolver, prod branch persistence + pruning, latest-run JOIN, sweep reservation-leak fix ( #1402 #1407 #1412 #1413 )
2026-06-04 07:34:02 -07:00
gsxdsm
45ce189548
fix(core): transitionPending recovery sweep, flag-off evacuation, recoveryRehome on self-healing moves ( #1401 #1409 #1411 )
2026-06-04 07:14:41 -07:00