gsxdsm
02e53b24b6
Merge pull request #1425 from tomdurrant/fix/opencode-go-api-key-env
...
Fix opencode-go model sync — pass API key to CLI and strip prefix from model IDs
2026-06-04 22:36:08 -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
d05226f054
Merge pull request #1424 from Runfusion/gsxdsm/step-inversion
...
feat: step inversion — steps as workflow-modelable nodes (foreach/step-review/parse-steps/code, parallel execution, custom task fields)
2026-06-04 18:17:55 -07:00
Tom Durrant
978d07c96c
Address PR review comments
...
- Update test assertions for bare model IDs
- Add deduplication guard for models with same bare ID
- Add validation for empty model IDs after prefix stripping
- Add test for API key forwarded as env var to spawn
- Add test for deduplication and empty model ID guard
- Extract shared handleOpencodeGoApiKeySaved helper
- Add changeset for the published package
2026-06-05 11:12:40 +10:00
Tom Durrant
1ae2555dd4
fix: strip provider prefix from opencode-go model IDs
...
normalizeOpencodeGoModel was prefixing model IDs with 'opencode-go/'
(e.g. 'opencode-go/deepseek-v4-flash'), but the Pi SDK sends the model
id field as the model name in API requests. The OpenCode API expects
bare model names (e.g. 'deepseek-v4-flash'), not prefixed ones.
Now strips the 'opencode/' or 'opencode-go/' prefix entirely so the
registered model ID matches what the API expects.
2026-06-05 10:40:01 +10:00
Tom Durrant
295d726768
fix: pass OPENCODE_API_KEY env var when syncing opencode-go models
...
discoverOpencodeGoModels() spawns 'opencode models opencode --refresh' but
never passed the saved API key as OPENCODE_API_KEY. The opencode CLI's
internal OpencodePlugin checks this env var to decide whether to show
paid models; without it, only free (cost.input === 0) models appear.
Now threads the apiKey from auth storage through to the spawned process
environment, so the CLI sees the user's Go subscription and returns the
full model catalog including paid models like Claude, GPT-5.x, Gemini, etc.
Callers in serve.ts, daemon.ts, and dashboard.ts all updated to read
the key from dashboardAuthStorage and pass it to refreshOpencodeGoModels.
syncStartupModels reads from authStorage in StartupSyncOptions.
2026-06-05 10:07:27 +10: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
2471eb6c6f
docs(solutions): browser-testing the dashboard from a worktree safely (no engine, fresh bundle, free port)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 15:56:04 -07:00
gsxdsm
86867c57b0
fix(ci): deflake seam-in-branch badge test — wait for graph hydration before Save, extend badge waitFor timeout
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 15:51:29 -07:00
gsxdsm
8f3d8a2c55
Merge pull request #1423 from Runfusion/gsxdsm/compound-plugin
...
Fix Compound Engineering plugin install failing from Settings
2026-06-04 15:47:26 -07:00
gsxdsm
43e5601740
ci: trigger pr-checks after retarget to main
2026-06-04 15:34:58 -07:00
gsxdsm
82f40a86b9
Merge branch 'main' into gsxdsm/compound-plugin
2026-06-04 15:34:31 -07:00
gsxdsm
632404dc54
merge main: pick up #1418 (custom columns track) post-merge
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 15:32:18 -07:00
gsxdsm
806ab72a6e
Merge pull request #1418 from Runfusion/gsxdsm/custom-columns
...
feat: workflow-defined custom columns via composable traits
2026-06-04 15:30:49 -07:00
gsxdsm
0451172bfa
fix(ci): theme-token conventions in field badges (white keyword, --text-muted) + roadmap plugin schema literal 107→108
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 14:43:54 -07:00
gsxdsm
021409d445
test(dashboard): regression tests for stepwise builtin editor render path (foreach group + template children + rework edges)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 14:34:53 -07:00
gsxdsm
19236a4bdd
Document bundled-plugin registration drift learning
...
Capture the 4-list registration requirement for bundled plugins
(Settings catalog, dashboard fallback set, CLI auto-install list,
tsup staging) in docs/solutions/, and add the Bundled Plugin concept
to CONCEPTS.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 14:33:14 -07:00
gsxdsm
12560c4211
docs(review): record residual review findings for step-inversion
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 14:03:13 -07:00
gsxdsm
3ebaa321f8
fix(review): apply code-review fixes — runId/foreachNodeId wiring, worktree-leak cleanup, rework re-execution, instance pruning, SIGKILL fallback, type dedup, board memo split, agent-native field-schema context + fn_workflow_get
...
17 findings from 12-reviewer code review applied:
- P1 runId trio (pin-probe/resume/markIntegrated used placeholder runId; 4-reviewer corroboration) + production-wiring tests
- P1 worktree/branch release on instance failure/exhaustion/abort
- P2 runGraphTaskStep no longer masks step-session failures; rejected memo cleared so rework re-executes
- P2 clearStaleInstanceStates wired at run start/end (mirrors branch pruning)
- P2 code-node timeout killSignal SIGKILL; dead template-recursion removed
- P1/P2 field-type re-declarations replaced with @fusion/core imports (stale comments removed)
- P2 Board memo split + TaskCard comparator stringify guard + modal prop-driven field defs
- HIGH agent-native: executor prompt injects custom-field schema/values; self-correcting rejection text; fn_workflow_get; fn_task_update bare-call guard; integration-conflict task log
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 14:01:55 -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
7076dd4516
feat(sdk,dashboard,docs): U9 — save-time code validation route, SDK type exports, skill doc, step-inversion docs + changeset
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 13:15:50 -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
af7c141976
feat(engine): U10 — parallel step execution: dependency scheduler, per-instance worktrees, ordered integration, conflict→rework (KTD-11)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 13:04:15 -07:00
gsxdsm
e87e745379
feat(dashboard): WorkflowFieldsPanel — field-definition authoring with live badge preview (U13 completion)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 12:44:43 -07:00
gsxdsm
14758f8edb
feat(engine): U12e+U14 — parse-steps node handler, plugin parser adapter, code node runner (esbuild + child-process harness)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 12:44:43 -07:00
gsxdsm
4c3a226050
Fix Compound Engineering plugin install failing from Settings
...
Installing the Compound Engineering plugin from Settings → Built-in
Plugins failed with "Plugin manifest not found": the dashboard's
bundled-plugin fallback set (BUNDLED_PLUGIN_IDS in routes.ts) was
missing fusion-plugin-compound-engineering, so when the relative
./plugins/... path missed the server cwd, the bundled lookup was never
attempted. fusion-plugin-cli-printing-press had the same gap.
- Add both ids to the dashboard's BUNDLED_PLUGIN_IDS fallback set.
- Stage fusion-plugin-compound-engineering into dist/plugins via
bundlePluginEntry in the CLI tsup config so packaged installs can
resolve the bundled copy (every other bundled plugin already had a
staging block).
- Add route tests that actually exercise the bundled fallback (the
existing ones let cwd resolution succeed, so the fallback path was
untested).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 12:31:08 -07:00
gsxdsm
5fa5740afc
feat(dashboard,cli): U13 — schema-driven task fields UI (TaskFieldsSection, card badges, PATCH route, board-workflows fields payload, TUI chips)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 12:26:05 -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
a782e5c04c
feat(engine): U3 — foreach expansion, iterative instance sub-walk, bounded rework cycles, step-execute seam
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 12:03:29 -07:00
gsxdsm
ad5cd579be
feat(dashboard): U8 — node editor authoring for foreach/step-review/parse-steps/code, rework edge inspector, template round-trip
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:50:45 -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
3d03505a62
feat(engine): U2 — runTaskStep/resetStepToBaseline substrate seams with blast-radius guard (RETHINK extraction)
...
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
d0b5dcbfbe
docs(plan): pluggable step parsers (plugin runtime) + code node for arbitrary TypeScript (KTD-15, U14)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:20:50 -07:00
gsxdsm
ef4e1f8a63
docs(plan): summary wording — parse-steps node
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:16:13 -07:00
gsxdsm
1dd831003d
docs(plan): step parsing becomes a parse-steps graph node (artifact + registry parser, no-steps/parse-error outcomes)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:16:02 -07:00
gsxdsm
0f15938414
docs(plan): scope in workflow-defined task shape — artifacts/step-source registry, custom fields, dynamic task UI (KTD-12/13/14, U11-U13)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 11:11:30 -07:00
gsxdsm
8abdefcad1
docs(plan): step inversion — steps as workflow-modelable nodes (foreach/step-review/rework + parallel execution axes)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 10:56:47 -07:00
gsxdsm
0257bdf9d6
fix(ci): align tests/docs with issue-fix commits (recoveryRehome args, pi-ai mock Unknown/Record, new agent tools doc, hex-pattern comment reword)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 10:56:47 -07:00
gsxdsm
0b1c8fb56b
fix(ci): widen Column to ColumnId in plugins + drop unused import after #1403 widening
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-04 08:40:10 -07:00
gsxdsm
eea18802fe
docs(review): mark all residual findings fixed
2026-06-04 08:01:01 -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
gsxdsm
010976cee2
test: promote/board-workflows routes, concurrent sweep, canDropTask, migration forward paths ( #1404 #1414 #1415 #1416 #1417 )
2026-06-04 07:12:46 -07:00
gsxdsm
c21485a65a
feat(engine): agent-native workflow tools — promote, reconcile-aware select, CRUD, trait catalog ( #1408 )
2026-06-04 07:03:53 -07:00
gsxdsm
571768f03a
fix(dashboard): workflow:updated SSE invalidation + inline capacity feedback clears on task changes ( #1406 , #1410 )
2026-06-04 07:03:43 -07:00
gsxdsm
b446403ea6
fix(ci): bump remaining schema-version assertions to 107
2026-06-04 04:58:04 -07:00
gsxdsm
d9b5bb4b4e
fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test
2026-06-04 04:32:46 -07:00