@runfusion/fusion 0.39.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin.mjs +20 -0
- package/dist/automation-store-EKXXEE2S.js +10 -0
- package/dist/automation-store-PLNG3X72.js +10 -0
- package/dist/automation-store-RDDYZFUJ.js +10 -0
- package/dist/bin.js +63127 -33419
- package/dist/chunk-2JI3F6MG.js +948 -0
- package/dist/chunk-4L6CLWJC.js +8345 -0
- package/dist/chunk-4VNS5WPM.js +42 -0
- package/dist/chunk-5RGECGQL.js +1139 -0
- package/dist/chunk-6JDLN7IL.js +409 -0
- package/dist/chunk-AICJATVW.js +948 -0
- package/dist/chunk-AWKNRUOR.js +1148 -0
- package/dist/chunk-BHM3UYWS.js +4651 -0
- package/dist/chunk-BMUXDSBF.js +4647 -0
- package/dist/chunk-GETECT6V.js +353 -0
- package/dist/chunk-GUV4QQT3.js +1143 -0
- package/dist/chunk-JKQO7YYZ.js +8369 -0
- package/dist/chunk-LYZVU6UV.js +409 -0
- package/dist/chunk-MAN4WYHO.js +353 -0
- package/dist/chunk-MCUG2Z7M.js +4651 -0
- package/dist/chunk-PSDYB45U.js +948 -0
- package/dist/chunk-RR2HM46R.js +8345 -0
- package/dist/chunk-RXMQ5OMY.js +9226 -0
- package/dist/chunk-S2EVJUY3.js +353 -0
- package/dist/chunk-UXR5XZFZ.js +409 -0
- package/dist/client/.vite/manifest.json +458 -156
- package/dist/client/assets/AgentDetailView-krC0B2O0.js +18 -0
- package/dist/client/assets/AgentPermissionPolicyEditor-VDXL4XQc.js +6 -0
- package/dist/client/assets/AgentsView-ChXccELt.js +29 -0
- package/dist/client/assets/{AgentsView-BI_CESkd.css → AgentsView-DfznJDek.css} +1 -1
- package/dist/client/assets/ChatView-Dz_xBKit.js +6 -0
- package/dist/client/assets/DevServerView-DGOahw1o.js +1 -0
- package/dist/client/assets/{DirectoryPicker-DzKVmxOf.css → DirectoryPicker-DTKtd8L2.css} +1 -1
- package/dist/client/assets/DirectoryPicker-DgqHlxyh.js +1 -0
- package/dist/client/assets/DocumentsView-CbbZwzbH.js +1 -0
- package/dist/client/assets/DocumentsView-WfVoTZt8.css +1 -0
- package/dist/client/assets/EvalsView-BL_ue7fJ.js +1 -0
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-DoRPGkfN.js → ExperimentalAgentOnboardingModal-8H4XAu4O.js} +41 -41
- package/dist/client/assets/GoalsView-CO4FVL3E.js +2 -0
- package/dist/client/assets/GoalsView-DI66UsjT.css +1 -0
- package/dist/client/assets/InsightsView-C5vLvWVE.js +11 -0
- package/dist/client/assets/MemoryView-BL3W3yOv.js +2 -0
- package/dist/client/assets/NodesView-7VInxyf_.css +1 -0
- package/dist/client/assets/NodesView-DfBNNm9c.js +14 -0
- package/dist/client/assets/PiExtensionsManager-HvSiVeDN.js +11 -0
- package/dist/client/assets/PluginManager-DIjrlhnU.js +1 -0
- package/dist/client/assets/{PluginManager-BJQXdUmV.css → PluginManager-UHVLvWWl.css} +1 -1
- package/dist/client/assets/PullRequestView-C2jQX8xZ.js +6 -0
- package/dist/client/assets/PullRequestView-WQIS0zUC.css +1 -0
- package/dist/client/assets/ReliabilityView-DbqEwoRs.js +1 -0
- package/dist/client/assets/ReliabilityView-eoKBhBc4.css +1 -0
- package/dist/client/assets/ResearchView-C1QghmLI.js +1 -0
- package/dist/client/assets/SecretsView-Y2MQ-9n5.js +1 -0
- package/dist/client/assets/SessionTerminal-BiigPP2l.css +1 -0
- package/dist/client/assets/SessionTerminal-DaTXNT3A.js +2 -0
- package/dist/client/assets/SettingsModal-BAzm2kYd.js +31 -0
- package/dist/client/assets/{SettingsModal-Dmz2aH3c.js → SettingsModal-DabcZZ6S.js} +1 -1
- package/dist/client/assets/SettingsModal-bJvc9aHl.css +1 -0
- package/dist/client/assets/SettingsModal-nF_GaeeK.css +1 -0
- package/dist/client/assets/SetupWizardModal-CIqFbkrD.css +1 -0
- package/dist/client/assets/SetupWizardModal-Db-Rxinm.js +1 -0
- package/dist/client/assets/SkillsView-3bhGyWs1.css +1 -0
- package/dist/client/assets/SkillsView-CIEY1-DE.js +1 -0
- package/dist/client/assets/StashRecoveryView-B6iDu5tI.js +1 -0
- package/dist/client/assets/{TodoView-Cx9cVhq7.css → TodoView-7xIh-Fmi.css} +1 -1
- package/dist/client/assets/TodoView-B8IK_BPM.js +6 -0
- package/dist/client/assets/WorkflowNodeEditor-DaPyvD_R.js +8 -0
- package/dist/client/assets/WorkflowNodeEditor-Po5uv_dN.css +1 -0
- package/dist/client/assets/{addon-fit-C7jRorKK.js → addon-fit-B4jkcKk4.js} +1 -1
- package/dist/client/assets/addon-unicode11-Cdne2Sj4.js +1 -0
- package/dist/client/assets/{addon-web-links-CkJwd4cQ.js → addon-web-links-CRNLzj7m.js} +1 -1
- package/dist/client/assets/{addon-webgl-BjvOw43o.js → addon-webgl-CeCSULF1.js} +1 -1
- package/dist/client/assets/app-CTRT_hQh.js +13 -0
- package/dist/client/assets/app-CVg6W-HU.js +13 -0
- package/dist/client/assets/app-CY3pQXOr.js +13 -0
- package/dist/client/assets/app-DNh04p5I.js +13 -0
- package/dist/client/assets/app-DhHgtB9j.js +13 -0
- package/dist/client/assets/app-NL_hPGDS.js +13 -0
- package/dist/client/assets/common-BRyX4VxB.js +1 -0
- package/dist/client/assets/common-CN9QPI2d.js +1 -0
- package/dist/client/assets/common-CNbjPELi.js +1 -0
- package/dist/client/assets/common-DFDqu_n0.js +1 -0
- package/dist/client/assets/common-DgWWKG8Z.js +1 -0
- package/dist/client/assets/common-X6PzBnVA.js +1 -0
- package/dist/client/assets/{createLucideIcon-BazL2hk5.js → createLucideIcon-BYvOGRiO.js} +2 -2
- package/dist/client/assets/dashboard-view-BgiLoG1G.css +1 -0
- package/dist/client/assets/{dashboard-view-DqWnXEbq.css → dashboard-view-CuUPQZzi.css} +1 -1
- package/dist/client/assets/dashboard-view-DlKsVySD.js +3 -0
- package/dist/client/assets/dashboard-view-Dn4CztR6.js +1 -0
- package/dist/client/assets/dashboard-view-O5j3PSGY.js +8101 -0
- package/dist/client/assets/errors-07IrmOYM.js +1 -0
- package/dist/client/assets/errors-BPsCufin.js +1 -0
- package/dist/client/assets/errors-CcVDgqlA.js +1 -0
- package/dist/client/assets/errors-D-i_Bxc6.js +1 -0
- package/dist/client/assets/errors-DDdWAK-U.js +1 -0
- package/dist/client/assets/errors-DOF5Td3F.js +1 -0
- package/dist/client/assets/{folder-open-CJgBSqdA.js → folder-open-C9XAaduE.js} +1 -1
- package/dist/client/assets/index-BHGM5W8a.css +1 -0
- package/dist/client/assets/index-CgfrecpF.js +793 -0
- package/dist/client/assets/{upload-hsiV4Ixv.js → upload-BRAEugYV.js} +1 -1
- package/dist/client/assets/{users-D63HpHlZ.js → users-BlflbMZ3.js} +1 -1
- package/dist/client/assets/vendor-i18n-CV0mwX_-.js +9 -0
- package/dist/client/assets/{vendor-react-K0fH_qHe.js → vendor-react-D37HfzIf.js} +1 -1
- package/dist/client/assets/vendor-reactflow-C5ap-Sga.css +1 -0
- package/dist/client/assets/vendor-reactflow-CRZcPCXF.js +15 -0
- package/dist/client/assets/{vendor-xterm-DzcZoU0P.js → vendor-xterm-tcedd2Jt.js} +1 -1
- package/dist/client/assets/x-CqNX_9E2.js +61 -0
- package/dist/client/assets/zoom-out-CSTHbJgD.js +21 -0
- package/dist/client/index.html +7 -4
- package/dist/client/sw.js +36 -1
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +2 -2
- package/dist/extension.js +53678 -32499
- package/dist/extract-zip-WL55Z3AU.js +2497 -0
- package/dist/index.min-CHQ3ABYJ.js +2926 -0
- package/dist/memory-dreams-7USISKVE.js +32 -0
- package/dist/memory-dreams-PBPISUDD.js +32 -0
- package/dist/memory-dreams-XNO2B2QF.js +32 -0
- package/dist/migration-EH2YOCYQ.js +15 -0
- package/dist/migration-PLGTTKL5.js +15 -0
- package/dist/migration-WZEZK22R.js +15 -0
- package/dist/pi-claude-cli/package.json +2 -2
- package/dist/plugin-sdk/index.d.ts +97 -0
- package/dist/plugin-sdk/index.js +55 -0
- package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +17286 -0
- package/dist/plugins/fusion-plugin-acp-runtime/manifest.json +13 -0
- package/dist/plugins/fusion-plugin-acp-runtime/package.json +11 -0
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +2 -3
- package/dist/plugins/fusion-plugin-cli-printing-press/src/dashboard-interop.d.ts +19 -0
- package/dist/plugins/fusion-plugin-cli-printing-press/src/index.ts +0 -3
- package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +1984 -0
- package/dist/plugins/fusion-plugin-compound-engineering/manifest.json +56 -0
- package/dist/plugins/fusion-plugin-compound-engineering/package.json +11 -0
- package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +5 -0
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +5 -0
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +5 -0
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +5 -0
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +5 -0
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +5 -0
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/package.json +2 -2
- package/dist/plugins/fusion-plugin-reports/src/__tests__/review-panel.test.ts +3 -3
- package/dist/plugins/fusion-plugin-reports/src/index.ts +0 -1
- package/dist/plugins/fusion-plugin-roadmap/bundled.js +5 -0
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +2 -2
- package/dist/routine-store-GIJ6MXWY.js +10 -0
- package/dist/routine-store-HTVC2PUQ.js +10 -0
- package/dist/routine-store-KGHZBPDF.js +10 -0
- package/package.json +24 -10
- package/skill/fusion/SKILL.md +1 -1
- package/skill/fusion/references/engine-tools.md +79 -3
- package/skill/fusion/references/extension-tools.md +32 -3
- package/skill/fusion/references/fusion-capabilities.md +6 -3
- package/dist/client/assets/AgentDetailView-nS4sABBv.js +0 -18
- package/dist/client/assets/AgentPermissionPolicyEditor-DiYAo51R.js +0 -6
- package/dist/client/assets/AgentsView-VbUsJLma.js +0 -29
- package/dist/client/assets/ChatView-B1AMky9x.js +0 -6
- package/dist/client/assets/DevServerView-CyFdAcCd.js +0 -1
- package/dist/client/assets/DirectoryPicker-C7v2Esic.js +0 -1
- package/dist/client/assets/DocumentsView-P_YIsnO0.js +0 -1
- package/dist/client/assets/DocumentsView-gv4zG3aT.css +0 -1
- package/dist/client/assets/EvalsView-2zyH0dWG.js +0 -1
- package/dist/client/assets/GoalsView-Dky8vDoG.css +0 -1
- package/dist/client/assets/GoalsView-l0PVSxK4.js +0 -2
- package/dist/client/assets/InsightsView-BZKu5-C3.js +0 -11
- package/dist/client/assets/MemoryView-CYBNC_h8.js +0 -2
- package/dist/client/assets/NodesView-CQ63uWC8.js +0 -14
- package/dist/client/assets/NodesView-DT4pXowv.css +0 -1
- package/dist/client/assets/PiExtensionsManager-BNXxlpb6.js +0 -6
- package/dist/client/assets/PluginManager-DejpEyl7.js +0 -1
- package/dist/client/assets/ReliabilityView-C1C1j1SD.js +0 -1
- package/dist/client/assets/ReliabilityView-D9AsVv5l.css +0 -1
- package/dist/client/assets/ResearchView-B4u2YieX.js +0 -1
- package/dist/client/assets/SecretsView-DvMMG_rf.js +0 -1
- package/dist/client/assets/SettingsModal-986SEzVN.css +0 -1
- package/dist/client/assets/SettingsModal-C2mfeKp1.js +0 -31
- package/dist/client/assets/SettingsModal-DZrJ5PFH.css +0 -1
- package/dist/client/assets/SetupWizardModal-BiIFP3De.js +0 -1
- package/dist/client/assets/SetupWizardModal-CGYGKurR.css +0 -1
- package/dist/client/assets/SkillsView-CRARYL_G.js +0 -1
- package/dist/client/assets/SkillsView-CUbSBeZ2.css +0 -1
- package/dist/client/assets/StashRecoveryView-DHj0O6sE.js +0 -1
- package/dist/client/assets/TodoView-CjyU1h-B.js +0 -6
- package/dist/client/assets/dashboard-view-BVckVLAO.js +0 -21
- package/dist/client/assets/dashboard-view-BWGH_fAq.js +0 -63
- package/dist/client/assets/index-BonLYFW-.js +0 -742
- package/dist/client/assets/index-nzIVQsA_.css +0 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "fusion-plugin-compound-engineering",
|
|
3
|
+
"name": "Compound Engineering",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"description": "A dedicated dashboard surface for compound-engineering artifacts and interactive ce-* sessions.",
|
|
6
|
+
"author": "Fusion Team",
|
|
7
|
+
"fusionVersion": ">=0.1.0",
|
|
8
|
+
"dashboardViews": [
|
|
9
|
+
{
|
|
10
|
+
"viewId": "compound-engineering",
|
|
11
|
+
"label": "Compound Engineering",
|
|
12
|
+
"componentPath": "./dashboard-view",
|
|
13
|
+
"icon": "Sparkles",
|
|
14
|
+
"placement": "primary",
|
|
15
|
+
"order": 36
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"settingsSchema": {
|
|
19
|
+
"defaultProvider": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"label": "Default Session Provider",
|
|
22
|
+
"description": "Model provider used for CE interactive sessions (for example anthropic). Leave blank to use the host default.",
|
|
23
|
+
"group": "Sessions",
|
|
24
|
+
"defaultValue": ""
|
|
25
|
+
},
|
|
26
|
+
"defaultModelId": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"label": "Default Session Model",
|
|
29
|
+
"description": "Model ID within the provider used for CE interactive sessions. Leave blank to use the host default.",
|
|
30
|
+
"group": "Sessions",
|
|
31
|
+
"defaultValue": ""
|
|
32
|
+
},
|
|
33
|
+
"enabledStages": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"itemType": "string",
|
|
36
|
+
"label": "Enabled Stages",
|
|
37
|
+
"description": "Stage IDs that may be launched from the Compound Engineering view (for example strategy, ideate, brainstorm, plan, work).",
|
|
38
|
+
"group": "Sessions",
|
|
39
|
+
"defaultValue": ["strategy", "ideate", "brainstorm", "plan", "work"]
|
|
40
|
+
},
|
|
41
|
+
"reconcileOnHooks": {
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"label": "Reconcile on Board Changes",
|
|
44
|
+
"description": "Run the board→pipeline reconcile sweep automatically after task move/complete hooks. Disable to only reconcile on demand.",
|
|
45
|
+
"group": "Sync",
|
|
46
|
+
"defaultValue": true
|
|
47
|
+
},
|
|
48
|
+
"reconcileIntervalMinutes": {
|
|
49
|
+
"type": "number",
|
|
50
|
+
"label": "Reconcile Cadence (minutes)",
|
|
51
|
+
"description": "Cadence hint for how often an on-demand refresh surface sweeps the reconciler. Not a continuous poll loop.",
|
|
52
|
+
"group": "Sync",
|
|
53
|
+
"defaultValue": 15
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -129072,6 +129072,11 @@ var init_openai_responses = __esm({
|
|
|
129072
129072
|
});
|
|
129073
129073
|
|
|
129074
129074
|
// ../plugin-sdk/src/index.ts
|
|
129075
|
+
import {
|
|
129076
|
+
WORKFLOW_EXTENSION_SCHEMA_VERSION,
|
|
129077
|
+
workflowExtensionRegistryId,
|
|
129078
|
+
createBoardActionServices
|
|
129079
|
+
} from "@fusion/core";
|
|
129075
129080
|
function definePlugin(plugin2) {
|
|
129076
129081
|
return plugin2;
|
|
129077
129082
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion-plugin-examples/reports",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Reports plugin for Fusion",
|
|
6
6
|
"private": true,
|
|
@@ -37,6 +37,6 @@
|
|
|
37
37
|
"@types/react": "^19.0.0",
|
|
38
38
|
"@types/node": "^25.5.2",
|
|
39
39
|
"typescript": "^5.7.0",
|
|
40
|
-
"vitest": "^
|
|
40
|
+
"vitest": "^4.1.0"
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -83,9 +83,9 @@ describe("runReviewPanel", () => {
|
|
|
83
83
|
if (systemPrompt.includes("Operations")) {
|
|
84
84
|
return {
|
|
85
85
|
session: {
|
|
86
|
-
prompt: vi.fn(async () => new Promise(() => {})),
|
|
86
|
+
prompt: vi.fn(async () => new Promise<void>(() => {})),
|
|
87
87
|
state: { messages: [] },
|
|
88
|
-
dispose: vi.fn(),
|
|
88
|
+
dispose: vi.fn<() => void>(),
|
|
89
89
|
},
|
|
90
90
|
};
|
|
91
91
|
}
|
|
@@ -93,7 +93,7 @@ describe("runReviewPanel", () => {
|
|
|
93
93
|
session: {
|
|
94
94
|
prompt: vi.fn(async () => {}),
|
|
95
95
|
state: { messages: [{ role: "assistant", content: JSON.stringify({ verdict: "approve", summary: "ok", highlights: [], lowlights: [], suggestions: [] }) }] },
|
|
96
|
-
dispose: vi.fn(),
|
|
96
|
+
dispose: vi.fn<() => void>(),
|
|
97
97
|
},
|
|
98
98
|
};
|
|
99
99
|
});
|
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
} from "./settings.js";
|
|
17
17
|
import type { ReportCadence, ReportCreateInput } from "./store/report-types.js";
|
|
18
18
|
import { ReportStore } from "./store/report-store.js";
|
|
19
|
-
export { ReportsDashboardView } from "./dashboard-view.js";
|
|
20
19
|
|
|
21
20
|
const plugin = definePlugin({
|
|
22
21
|
manifest: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion-plugin-examples/whatsapp-chat",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "WhatsApp Web (Baileys) chat bridge for Fusion agents",
|
|
6
6
|
"keywords": [
|
|
@@ -29,6 +29,6 @@
|
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^25.5.2",
|
|
31
31
|
"typescript": "^5.7.0",
|
|
32
|
-
"vitest": "^
|
|
32
|
+
"vitest": "^4.1.0"
|
|
33
33
|
}
|
|
34
34
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runfusion/fusion",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Fusion CLI: HTTP API server, daemon, dashboard launcher, and task tooling for the Fusion AI coding agent.",
|
|
6
6
|
"homepage": "https://github.com/Runfusion/Fusion#readme",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
"pi-package"
|
|
13
13
|
],
|
|
14
14
|
"bin": {
|
|
15
|
-
"fn": "./
|
|
16
|
-
"fusion": "./
|
|
15
|
+
"fn": "./bin.mjs",
|
|
16
|
+
"fusion": "./bin.mjs"
|
|
17
17
|
},
|
|
18
18
|
"pi": {
|
|
19
19
|
"extensions": [
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"access": "public"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
|
+
"bin.mjs",
|
|
31
32
|
"dist/**/*.js",
|
|
32
33
|
"dist/**/*.d.ts",
|
|
33
34
|
"dist/**/*.d.ts.map",
|
|
@@ -40,17 +41,20 @@
|
|
|
40
41
|
"README.md"
|
|
41
42
|
],
|
|
42
43
|
"dependencies": {
|
|
43
|
-
"@earendil-works/pi-ai": "^0.
|
|
44
|
-
"@earendil-works/pi-coding-agent": "^0.
|
|
44
|
+
"@earendil-works/pi-ai": "^0.79.1",
|
|
45
|
+
"@earendil-works/pi-coding-agent": "^0.79.1",
|
|
45
46
|
"dockerode": "^4.0.12",
|
|
46
47
|
"express": "^5.1.0",
|
|
47
|
-
"
|
|
48
|
+
"i18next": "^26.3.1",
|
|
49
|
+
"ink": "^7.0.5",
|
|
48
50
|
"ink-spinner": "^5.0.0",
|
|
49
51
|
"ink-text-input": "^6.0.0",
|
|
50
52
|
"ioredis": "^5.6.0",
|
|
51
53
|
"multer": "^2.1.1",
|
|
52
54
|
"node-pty": "npm:@homebridge/node-pty-prebuilt-multiarch@^0.13.1",
|
|
53
|
-
"react": "^19.
|
|
55
|
+
"react": "^19.2.0",
|
|
56
|
+
"react-i18next": "^17.0.8",
|
|
57
|
+
"ws": "^8.18.0"
|
|
54
58
|
},
|
|
55
59
|
"peerDependencies": {
|
|
56
60
|
"@earendil-works/pi-ai": "*",
|
|
@@ -70,8 +74,9 @@
|
|
|
70
74
|
},
|
|
71
75
|
"devDependencies": {
|
|
72
76
|
"@types/node": "^22.0.0",
|
|
73
|
-
"@types/react": "^19.
|
|
74
|
-
"@
|
|
77
|
+
"@types/react": "^19.2.0",
|
|
78
|
+
"@types/ws": "^8.5.0",
|
|
79
|
+
"@vitest/coverage-v8": "^4.1.0",
|
|
75
80
|
"cross-env": "^7.0.0",
|
|
76
81
|
"esbuild": "^0.25.12",
|
|
77
82
|
"ink-testing-library": "^4.0.0",
|
|
@@ -79,13 +84,21 @@
|
|
|
79
84
|
"tsx": "^4.19.0",
|
|
80
85
|
"typebox": "^1.0.0",
|
|
81
86
|
"typescript": "^5.7.0",
|
|
82
|
-
"vitest": "^
|
|
87
|
+
"vitest": "^4.1.0",
|
|
83
88
|
"yaml": "^2.8.3"
|
|
84
89
|
},
|
|
85
90
|
"repository": {
|
|
86
91
|
"type": "git",
|
|
87
92
|
"url": "https://github.com/Runfusion/Fusion"
|
|
88
93
|
},
|
|
94
|
+
"exports": {
|
|
95
|
+
"./plugin-sdk": {
|
|
96
|
+
"types": "./dist/plugin-sdk/index.d.ts",
|
|
97
|
+
"import": "./dist/plugin-sdk/index.js"
|
|
98
|
+
},
|
|
99
|
+
"./dist/*": "./dist/*",
|
|
100
|
+
"./package.json": "./package.json"
|
|
101
|
+
},
|
|
89
102
|
"scripts": {
|
|
90
103
|
"dev": "tsx src/bin.ts",
|
|
91
104
|
"prebuild": "node ../../scripts/sync-fusion-skill-tools.mjs",
|
|
@@ -94,6 +107,7 @@
|
|
|
94
107
|
"build:exe:all": "bun run build.ts --all",
|
|
95
108
|
"typecheck": "tsc --noEmit",
|
|
96
109
|
"test": "vitest run --silent=passed-only --reporter=dot",
|
|
110
|
+
"test:ci-shape": "vitest run src/__tests__/ci-workflow.test.ts --silent=passed-only --reporter=dot",
|
|
97
111
|
"test:slow-cli": "cross-env FUSION_TEST_SLOW_CLI=1 vitest run src/commands/__tests__/agent-export.test.ts --silent=passed-only --reporter=dot",
|
|
98
112
|
"test:extension-integration": "cross-env FUSION_TEST_EXTENSION_INTEGRATION=1 vitest run src/__tests__/extension-integration.test.ts --silent=passed-only --reporter=dot",
|
|
99
113
|
"test:build-exe": "cross-env FUSION_TEST_BUILD_EXE=1 vitest run --config vitest.build-exe.config.ts --silent=passed-only --reporter=dot",
|
package/skill/fusion/SKILL.md
CHANGED
|
@@ -29,7 +29,7 @@ Mission → Milestone → Slice → Feature → Task
|
|
|
29
29
|
<!-- BEGIN: tool-categories (auto-generated by scripts/sync-fusion-skill-tools.mjs — do not edit by hand) -->
|
|
30
30
|
- **Task tools** — `fn_task_create`, `fn_task_update`, `fn_task_list`, `fn_task_show`, `fn_task_attach`, `fn_task_pause`, `fn_task_unpause`, `fn_task_retry`, `fn_task_duplicate`, `fn_task_refine`, `fn_task_archive`, `fn_task_unarchive`, `fn_task_delete`, `fn_task_plan`
|
|
31
31
|
- **GitHub tools** — `fn_task_import_github`, `fn_task_import_github_issue`, `fn_task_browse_github_issues`
|
|
32
|
-
- **Mission tools** — `fn_mission_create`, `fn_mission_list`, `fn_mission_show`, `fn_mission_backfill_assertions`, `fn_mission_delete`, `fn_mission_update`, `fn_milestone_add`, `fn_slice_add`, `fn_feature_add`, `fn_feature_delete`, `fn_slice_delete`, `fn_milestone_delete`, `fn_slice_activate`, `fn_feature_link_task`, `fn_feature_update`, `fn_milestone_update`
|
|
32
|
+
- **Mission tools** — `fn_mission_create`, `fn_mission_list`, `fn_mission_show`, `fn_mission_list_goals`, `fn_mission_link_goal`, `fn_mission_unlink_goal`, `fn_mission_backfill_assertions`, `fn_mission_delete`, `fn_mission_update`, `fn_milestone_add`, `fn_slice_add`, `fn_feature_add`, `fn_feature_delete`, `fn_slice_delete`, `fn_milestone_delete`, `fn_slice_activate`, `fn_feature_link_task`, `fn_feature_update`, `fn_milestone_update`
|
|
33
33
|
- **Goal tools** — `fn_goal_list`, `fn_goal_create`, `fn_goal_archive`, `fn_goal_show`
|
|
34
34
|
- **Agent tools** — `fn_agent_stop`, `fn_agent_start`, `fn_agent_create`, `fn_agent_delete`, `fn_list_agents`, `fn_delegate_task`, `fn_agent_show`, `fn_agent_org_chart`
|
|
35
35
|
- **Skills tools** — `fn_skills_search`, `fn_skills_install`
|
|
@@ -11,10 +11,27 @@ These tools are **not** part of the user-invokable extension surface. They are i
|
|
|
11
11
|
|
|
12
12
|
| Tool | Agent Types | Purpose | Parameters |
|
|
13
13
|
|---|---|---|---|
|
|
14
|
-
| `fn_task_create` | triage, executor, heartbeat | Create a follow-up task from within an agent run | `description` (string), `dependencies?` (string[]), `priority?` (`low` \| `normal` \| `high` \| `urgent`) |
|
|
14
|
+
| `fn_task_create` | triage, executor, heartbeat | Create a follow-up task from within an agent run | `description` (string), `dependencies?` (string[]), `priority?` (`low` \| `normal` \| `high` \| `urgent`), `workflow_id?` (string) |
|
|
15
15
|
| `fn_task_log` | executor, heartbeat | Write significant task log entries | `message` (string), `outcome?` (string) |
|
|
16
16
|
| `fn_task_document_write` | triage, executor, heartbeat | Save/update a named task document revision | `key` (string), `content` (string), `author?` (string) |
|
|
17
17
|
| `fn_task_document_read` | triage, executor, heartbeat | Read one task document or list all | `key?` (string) |
|
|
18
|
+
| `fn_goal_list` | triage, executor, heartbeat | List goals with concise citation-ready snippets and active-goal warning details | `status?` (`active` \| `archived` \| `all`) |
|
|
19
|
+
| `fn_goal_show` | triage, executor, heartbeat | Show one goal's full detail on demand, including the full description body | `id` (string) |
|
|
20
|
+
| `fn_workflow_list` | executor | List the project's custom workflows (read-only built-ins plus user definitions) | none |
|
|
21
|
+
| `fn_workflow_get` | executor | Fetch one workflow definition by id — name, description, builtin flag, and the full IR (nodes/edges/columns/artifacts/fields/settings) as JSON | `workflow_id` (string) |
|
|
22
|
+
| `fn_workflow_select` | executor | Assign a custom workflow to a task (defaults to the current task) | `workflow_id` (string), `task_id?` (string) |
|
|
23
|
+
| `fn_workflow_create` | executor | Create a custom workflow definition from a graph IR (validated server-side). v2 IR supports step-inversion constructs: `parse-steps`, `foreach` (mode/isolation/concurrency/maxReworkCycles), `step-execute`, `step-review`, `code` nodes, `rework` edges, plus `artifacts`, custom `fields`, and typed `settings` declarations | `name` (string), `description?` (string), `ir` (object), `layout?` (object) |
|
|
24
|
+
| `fn_workflow_update` | executor | Update a custom workflow definition's name/description/ir/layout (built-ins cannot be edited; same step-inversion IR constructs as create; editing `fields` orphans rather than destroys existing task values; editing `settings` declarations drops orphaned setting values on resolution) | `workflow_id` (string), `name?` (string), `description?` (string), `ir?` (object), `layout?` (object), `rehome_to?` (string) |
|
|
25
|
+
| `fn_workflow_delete` | executor | Delete a custom workflow definition (built-ins cannot be deleted); selecting tasks are re-homed to the default workflow's entry column | `workflow_id` (string) |
|
|
26
|
+
| `fn_workflow_settings` | executor | Read/write a workflow's per-`(workflow, project)` setting **values** (`get` returns `{stored, effective, orphaned}`; `set` writes `values` and returns `{stored, effective, orphaned}`, with `null` clearing an override — including any stored value for an orphaned key). Validated against the named workflow's declared settings; built-in **values** are writable though built-in **declarations** are not; invalid values return a typed rejection list and persist nothing | `action` (`get` \| `set`), `workflow_id` (string), `values?` (object keyed by setting id) |
|
|
27
|
+
| `fn_workflow_list` | executor, chat, planning | List the project's custom workflows (read-only built-ins plus user definitions) | none |
|
|
28
|
+
| `fn_workflow_get` | executor, chat, planning | Fetch one workflow definition by id — name, description, builtin flag, and the full IR (nodes/edges/columns/artifacts/fields) as JSON | `workflow_id` (string) |
|
|
29
|
+
| `fn_workflow_select` | executor, chat, planning | Assign a custom workflow to a task (defaults to the current task) | `workflow_id` (string), `task_id?` (string) |
|
|
30
|
+
| `fn_workflow_create` | executor, chat, planning | Create a custom workflow definition from a graph IR (validated server-side). v2 IR supports step-inversion constructs: `parse-steps`, `foreach` (mode/isolation/concurrency/maxReworkCycles), `step-execute`, `step-review`, `code` nodes, `rework` edges, plus `artifacts` and custom `fields` declarations | `name` (string), `description?` (string), `ir` (object), `layout?` (object) |
|
|
31
|
+
| `fn_workflow_update` | executor, chat, planning | Update a custom workflow definition's name/description/ir/layout (built-ins cannot be edited; same step-inversion IR constructs as create; editing `fields` orphans rather than destroys existing task values) | `workflow_id` (string), `name?` (string), `description?` (string), `ir?` (object), `layout?` (object), `rehome_to?` (string) |
|
|
32
|
+
| `fn_workflow_delete` | executor, chat, planning | Delete a custom workflow definition (built-ins cannot be deleted); selecting tasks are re-homed to the default workflow's entry column | `workflow_id` (string) |
|
|
33
|
+
| `fn_task_promote` | executor | Promote a held task out of a manual-release hold column (defaults to the current task) | `task_id?` (string) |
|
|
34
|
+
| `fn_trait_list` | executor, chat, planning | List the registered column trait catalog (built-in and plugin traits) | none |
|
|
18
35
|
| `fn_memory_search` | triage, executor, heartbeat | Search project memory plus per-agent layered memory snippets | `query` (string), `limit?` (number) |
|
|
19
36
|
| `fn_memory_get` | triage, executor, heartbeat | Read a bounded memory file window (including bounded per-agent layered paths) | `path` (string), `startLine?` (number), `lineCount?` (number) |
|
|
20
37
|
| `fn_memory_append` | executor, heartbeat (when writable backend enabled) | Append memory notes with explicit scope: `scope="agent"` for private operating context, `scope="project"` for workspace-wide durable knowledge | `scope?` (`project` \| `agent`), `layer` (`long-term` \| `daily`), `content` (string) |
|
|
@@ -27,7 +44,7 @@ These tools are **not** part of the user-invokable extension surface. They are i
|
|
|
27
44
|
| `fn_update_identity` | heartbeat | Update the current agent's own `soul`, `instructionsText`, or `memory` fields | `soul?` (string), `instructionsText?` (string), `memory?` (string) |
|
|
28
45
|
| `fn_reflect_on_performance` | executor, heartbeat (when reflection service enabled) | Generate reflection insights from prior runs | `focus_area?` (string) |
|
|
29
46
|
| `fn_list_agents` | triage, executor, heartbeat | List agents (optionally filtered) | `role?` (string), `state?` (string), `includeEphemeral?` (boolean) |
|
|
30
|
-
| `fn_delegate_task` | triage, executor, heartbeat | Create and assign a new task to a specific agent | `agent_id` (string), `description` (string), `dependencies?` (string[]), `override?` (boolean) |
|
|
47
|
+
| `fn_delegate_task` | triage, executor, heartbeat | Create and assign a new task to a specific agent | `agent_id` (string), `description` (string), `dependencies?` (string[]), `workflow_id?` (string), `override?` (boolean) |
|
|
31
48
|
| `fn_get_agent_config` | executor, heartbeat | Read full config for a direct-report agent | `agent_id` (string) |
|
|
32
49
|
| `fn_update_agent_config` | executor, heartbeat | Update config fields for a direct-report, non-ephemeral agent | `agent_id` (string), optional: `soul`, `instructions_text`, `instructions_path`, `heartbeat_procedure_path`, `heartbeat_interval_ms`, `heartbeat_timeout_ms`, `max_concurrent_runs`, `message_response_mode` |
|
|
33
50
|
| `fn_agent_create` | executor, heartbeat | Create a non-ephemeral direct-report agent | `name` (string), `role` (string), optional: `soul`, `instructions_text`, `instructions_path`, `reportsTo`, `heartbeat_interval_ms`, `heartbeat_timeout_ms`, `max_concurrent_runs`, `message_response_mode` |
|
|
@@ -51,7 +68,7 @@ Note: step-session execution (`step-session-executor.ts`) reuses executor coordi
|
|
|
51
68
|
|
|
52
69
|
| Tool | Purpose | Parameters |
|
|
53
70
|
|---|---|---|
|
|
54
|
-
| `fn_task_update` | Update a spec step status (`pending`/`in-progress`/`done`/`skipped`) | `step
|
|
71
|
+
| `fn_task_update` | Update a spec step status (`pending`/`in-progress`/`done`/`skipped`), task dependencies, and/or workflow-defined custom field values | `step?` (number, 1-indexed), `status?` (enum), `dependencies?` (string[]), `custom_fields?` (object keyed by field id; validated against the workflow field schema, `null` clears a field) |
|
|
55
72
|
| `fn_task_add_dep` | Add a dependency to current task (confirmation-gated) | `task_id` (string), `confirm?` (boolean) |
|
|
56
73
|
| `fn_task_done` | Mark task complete and optionally store summary | `summary?` (string) |
|
|
57
74
|
| `fn_review_step` | Spawn step plan/code reviewer | `step` (number), `type` (`plan` \| `code`), `step_name` (string), `baseline?` (string) |
|
|
@@ -68,3 +85,62 @@ Note: step-session execution (`step-session-executor.ts`) reuses executor coordi
|
|
|
68
85
|
| Tool | Purpose | Parameters |
|
|
69
86
|
|---|---|---|
|
|
70
87
|
| `fn_heartbeat_done` | Signal end of heartbeat run with optional summary | `summary?` (string) |
|
|
88
|
+
|
|
89
|
+
## Workflow settings: declarations vs. values
|
|
90
|
+
|
|
91
|
+
Workflow settings split into two surfaces (the same split as custom task fields, one level up):
|
|
92
|
+
|
|
93
|
+
- **Declarations** (the typed schema) live in the workflow IR's `settings` array and are authored with `fn_workflow_create` / `fn_workflow_update`. Built-in workflow declarations cannot be edited (the store's built-in guard rejects the IR edit with a `WorkflowIrError`/built-in error surfaced through the tool result).
|
|
94
|
+
- **Values** (the per-`(workflow, project)` data) are read/written with `fn_workflow_settings`. Built-in workflow **values** are writable so each project can tune `builtin:coding` differently.
|
|
95
|
+
|
|
96
|
+
Declare a setting (custom workflow):
|
|
97
|
+
|
|
98
|
+
```jsonc
|
|
99
|
+
// fn_workflow_create
|
|
100
|
+
{
|
|
101
|
+
"name": "QA",
|
|
102
|
+
"ir": {
|
|
103
|
+
"version": "v2",
|
|
104
|
+
"name": "QA",
|
|
105
|
+
"columns": [{ "id": "intake", "name": "Intake", "traits": [] }],
|
|
106
|
+
"nodes": [],
|
|
107
|
+
"edges": [],
|
|
108
|
+
"settings": [
|
|
109
|
+
{ "id": "reviewHandoffPolicy", "name": "Review handoff", "type": "enum",
|
|
110
|
+
"default": "disabled",
|
|
111
|
+
"options": [
|
|
112
|
+
{ "value": "disabled", "label": "Disabled" },
|
|
113
|
+
{ "value": "always", "label": "Always" }
|
|
114
|
+
] }
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Write a value (built-in workflow VALUE — accepted even though built-in declarations are read-only):
|
|
121
|
+
|
|
122
|
+
```jsonc
|
|
123
|
+
// fn_workflow_settings
|
|
124
|
+
{ "action": "set", "workflow_id": "builtin:coding",
|
|
125
|
+
"values": { "workflowStepTimeoutMs": 600000, "reviewHandoffPolicy": "always" } }
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
An invalid value (e.g. an enum violation) is rejected with a typed list and persists nothing:
|
|
129
|
+
|
|
130
|
+
```jsonc
|
|
131
|
+
// returns isError:true with details.rejections:
|
|
132
|
+
// [{ "code": "enum-violation", "settingId": "reviewHandoffPolicy", "message": "..." }]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Read values — `effective` is what the engine actually consumes (declaration defaults filled in, orphaned values dropped); `stored` is the raw override map; `orphaned` lists stored entries with no current declaration (or a value that no longer validates). `set` returns the same `{stored, effective, orphaned}` shape:
|
|
136
|
+
|
|
137
|
+
```jsonc
|
|
138
|
+
// fn_workflow_settings
|
|
139
|
+
{ "action": "get", "workflow_id": "builtin:coding" }
|
|
140
|
+
// → { "workflowId": "builtin:coding",
|
|
141
|
+
// "stored": { "workflowStepTimeoutMs": 600000 },
|
|
142
|
+
// "effective": { "workflowStepTimeoutMs": 600000, "reviewHandoffPolicy": "disabled", ... },
|
|
143
|
+
// "orphaned": [] }
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Patching a key to `null` clears any stored value for it — including a value left behind under an orphaned key — so `set` doubles as the way to drop orphans. To see the full declaration catalog (every setting id, type, and default) call `fn_workflow_get` on `builtin:coding`, whose IR `settings` array is the canonical catalog.
|
|
@@ -10,7 +10,7 @@ All tools are registered via the Fusion extension. They are available in any age
|
|
|
10
10
|
|
|
11
11
|
### fn_task_create
|
|
12
12
|
|
|
13
|
-
Create a new task on the Fusion task board. The task enters the planning column where the AI planning agent will plan it into a full prompt with steps, file scope, and acceptance criteria.
|
|
13
|
+
Create a new task on the Fusion task board. The task enters the planning column where the AI planning agent will plan it into a full prompt with steps, file scope, and acceptance criteria. Optionally pass workflow_id to select a workflow at creation time; use fn_workflow_list to discover valid IDs.
|
|
14
14
|
|
|
15
15
|
| Parameter | Type | Required | Description |
|
|
16
16
|
|-----------|------|----------|-------------|
|
|
@@ -18,10 +18,11 @@ Create a new task on the Fusion task board. The task enters the planning column
|
|
|
18
18
|
| `depends` | array | — | Task IDs this depends on (e.g. ['FN-001', 'FN-002']) |
|
|
19
19
|
| `agentId` | string | — | Agent ID to assign this task to (e.g. 'agent-abc123') |
|
|
20
20
|
| `priority` | string(enum) | — | Task priority (low, normal, high, urgent) |
|
|
21
|
+
| `workflow_id` | string | — | Workflow ID to select for the new task (e.g. 'WF-003' or 'builtin:coding'). |
|
|
21
22
|
|
|
22
23
|
### fn_task_update
|
|
23
24
|
|
|
24
|
-
Update fields on an existing task. Supports modifying the title, description, dependencies, assigned agent, and
|
|
25
|
+
Update fields on an existing task. Supports modifying the title, description, dependencies, assigned agent, priority, and workflow_id after task creation. Set workflow_id to a workflow ID to select it, or null to clear the workflow selection.
|
|
25
26
|
|
|
26
27
|
| Parameter | Type | Required | Description |
|
|
27
28
|
|-----------|------|----------|-------------|
|
|
@@ -32,6 +33,7 @@ Update fields on an existing task. Supports modifying the title, description, de
|
|
|
32
33
|
| `agentId` | union | — | Agent ID to assign this task to, or null to clear (e.g. 'agent-abc123') |
|
|
33
34
|
| `nodeId` | union | — | Node ID override for this task, or null to clear |
|
|
34
35
|
| `priority` | string(enum) | — | Task priority (low, normal, high, urgent) |
|
|
36
|
+
| `workflow_id` | union | — | Workflow ID to select for this task (e.g. 'WF-003' or 'builtin:coding'), |
|
|
35
37
|
|
|
36
38
|
### fn_task_list
|
|
37
39
|
|
|
@@ -196,6 +198,32 @@ Show mission details with full hierarchy: milestones → slices → features.
|
|
|
196
198
|
|-----------|------|----------|-------------|
|
|
197
199
|
| `id` | string | ✓ | Mission ID (e.g., M-001) |
|
|
198
200
|
|
|
201
|
+
### fn_mission_list_goals
|
|
202
|
+
|
|
203
|
+
List goals linked to a mission.
|
|
204
|
+
|
|
205
|
+
| Parameter | Type | Required | Description |
|
|
206
|
+
|-----------|------|----------|-------------|
|
|
207
|
+
| `missionId` | string | ✓ | Mission ID (e.g., M-001) |
|
|
208
|
+
|
|
209
|
+
### fn_mission_link_goal
|
|
210
|
+
|
|
211
|
+
Link a goal to a mission.
|
|
212
|
+
|
|
213
|
+
| Parameter | Type | Required | Description |
|
|
214
|
+
|-----------|------|----------|-------------|
|
|
215
|
+
| `missionId` | string | ✓ | Mission ID (e.g., M-001) |
|
|
216
|
+
| `goalId` | string | ✓ | Goal ID (e.g., G-001) |
|
|
217
|
+
|
|
218
|
+
### fn_mission_unlink_goal
|
|
219
|
+
|
|
220
|
+
Unlink a goal from a mission.
|
|
221
|
+
|
|
222
|
+
| Parameter | Type | Required | Description |
|
|
223
|
+
|-----------|------|----------|-------------|
|
|
224
|
+
| `missionId` | string | ✓ | Mission ID (e.g., M-001) |
|
|
225
|
+
| `goalId` | string | ✓ | Goal ID (e.g., G-001) |
|
|
226
|
+
|
|
199
227
|
### fn_mission_backfill_assertions
|
|
200
228
|
|
|
201
229
|
Backfill mission assertions by deriving and linking one store-managed assertion for each feature without linked assertions. Supports dry-run mode.
|
|
@@ -412,13 +440,14 @@ List all available agents in the system. Shows each agent's name, role, state, p
|
|
|
412
440
|
|
|
413
441
|
### fn_delegate_task
|
|
414
442
|
|
|
415
|
-
Create a new task and assign it to a specific agent for execution. The task goes to 'todo' and will be picked up by the target agent on their next heartbeat cycle. Use fn_list_agents first to find available agents and their capabilities.
|
|
443
|
+
Create a new task and assign it to a specific agent for execution. The task goes to 'todo' and will be picked up by the target agent on their next heartbeat cycle. Use fn_list_agents first to find available agents and their capabilities. Optionally pass workflow_id to select a workflow at creation time; use fn_workflow_list to discover valid IDs.
|
|
416
444
|
|
|
417
445
|
| Parameter | Type | Required | Description |
|
|
418
446
|
|-----------|------|----------|-------------|
|
|
419
447
|
| `agent_id` | string | ✓ | The agent ID to delegate work to |
|
|
420
448
|
| `description` | string | ✓ | What needs to be done |
|
|
421
449
|
| `dependencies` | array | — | Task IDs this new task depends on (e.g. [\"KB-001\"] |
|
|
450
|
+
| `workflow_id` | string | — | Workflow ID to select for the new task (e.g. 'WF-003' or 'builtin:coding'). |
|
|
422
451
|
| `override` | boolean | — | Set true to bypass executor-role assignment policy |
|
|
423
452
|
|
|
424
453
|
### fn_agent_show
|