gsxdsm
1ea185daa5
FN-7911: add workflow validate dry-run command, tool, and API route
Adds a non-mutating `fn workflow validate` dry-run path across CLI, agent tools, and dashboard API so custom workflow IR can be checked before create/update.
- Add `packages/cli/src/commands/workflow.ts` implementing `fn workflow validate <id> | --file <path>` with JSON/text output, wired into `bin.ts`.
- Add `fn_workflow_validate` agent tool (`agent-tools.ts`, `index.ts`) reusing the existing parseWorkflowIr/trait/code-node/column-agent validation used by create/update, performing no persistence.
- Add `POST /api/workflows/validate` route in `register-workflow-routes.ts` plus dashboard route test coverage.
- Extend heartbeat tool-gating/exposure tests and gating classifications to include `fn_workflow_validate` alongside the other workflow tools.
- Update CLI/agent extension docs (`docs/cli-reference.md`, `docs/agents.md`, `docs/workflow-steps.md`, fusion skill references) to document the new command/tool.
- Add changeset `.changeset/fn-7911-workflow-validate.md` (minor) describing the new capability.
Files changed:
.changeset/fn-7911-workflow-validate.md | 7 ++
docs/agents.md | 5 +-
docs/cli-reference.md | 13 ++
docs/workflow-steps.md | 3 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 10 ++
.../skill/fusion/references/fusion-capabilities.md | 1 +
.../src/__tests__/extension-workflow-tools.test.ts | 1 +
packages/cli/src/__tests__/extension.test.ts | 1 +
.../src/__tests__/workflow-docs-current.test.ts | 1 +
packages/cli/src/bin.ts | 22 ++++
packages/cli/src/commands/workflow.ts | 80 ++++++++++++
packages/cli/src/extension.ts | 10 ++
.../dashboard/src/__tests__/chat-manager.test.ts | 1 +
.../dashboard/src/__tests__/chat.rooms.test.ts | 1 +
.../planning-document-tools-exposure.test.ts | 1 +
.../__tests__/workflow-validate-route.test.ts | 101 +++++++++++++++
.../src/routes/register-workflow-routes.ts | 27 +++-
.../engine/src/__tests__/agent-action-gate.test.ts | 2 +-
.../agent-workflow-tools-exposure.test.ts | 70 ++++++++++-
.../src/__tests__/gating-classifications.test.ts | 3 +-
.../src/__tests__/heartbeat-executor.test.ts | 37 +++---
.../src/__tests__/heartbeat-session-prompt.test.ts | 5 +-
.../src/__tests__/permanent-agent-gating.test.ts | 2 +-
packages/engine/src/agent-heartbeat.ts | 5 +-
packages/engine/src/agent-tools.ts | 140 ++++++++++++++++++++-
packages/engine/src/executor.ts | 6 +
packages/engine/src/gating-classifications.ts | 2 +
packages/engine/src/index.ts | 4 +
29 files changed, 532 insertions(+), 31 deletions(-)
Fusion-Task-Id: FN-7911
Fusion-Task-Lineage: 903d15fe-a7ec-458f-aa34-8f2e895a9603
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-12 21:39:23 -07:00
..
2026-07-12 21:39:23 -07:00
2026-07-11 23:50:00 -07:00
2026-07-12 21:33:50 -07:00
2026-07-12 21:39:23 -07:00
2026-07-12 14:42:09 -07:00
2026-07-11 23:50:00 -07:00
2026-07-12 21:39:23 -07:00
2026-07-12 21:33:50 -07:00
2026-07-11 23:50:00 -07:00
2026-07-11 23:50:00 -07:00
2026-06-08 15:19:27 -07:00
2026-07-11 23:50:00 -07:00