@runfusion/fusion 0.75.1-beta.2 → 0.76.0-beta.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.
Files changed (158) hide show
  1. package/dist/bin.js +2883 -1203
  2. package/dist/child-process-worker.js +2345 -1000
  3. package/dist/client/.vite/manifest.json +260 -260
  4. package/dist/client/assets/AgentDetailView-Czb9wfC3.css +1 -0
  5. package/dist/client/assets/AgentDetailView-nsriz_Mw.js +13 -0
  6. package/dist/client/assets/{AgentPermissionPolicyEditor-CC_rrbbG.js → AgentPermissionPolicyEditor-TKuT5ryJ.js} +1 -1
  7. package/dist/client/assets/AgentsView-BBLq03lO.js +24 -0
  8. package/dist/client/assets/{ChatView-mFKfoegS.js → ChatView-BEc5SVfU.js} +1 -1
  9. package/dist/client/assets/{CommandCenter-C2wvDq_N.js → CommandCenter-DBCxo_tI.js} +1 -1
  10. package/dist/client/assets/{DevServerView-0MWEJM7o.js → DevServerView-BaLUl9De.js} +1 -1
  11. package/dist/client/assets/{DirectoryPicker-BjMPhCdh.js → DirectoryPicker-CKj8CfUJ.js} +1 -1
  12. package/dist/client/assets/{DocumentsView-ckH3rjmd.js → DocumentsView-Cu8vlXJT.js} +1 -1
  13. package/dist/client/assets/{EvalsView-NyA644VF.js → EvalsView-CbdRWRjR.js} +1 -1
  14. package/dist/client/assets/{ExperimentalAgentOnboardingModal-D0ZfbBRN.js → ExperimentalAgentOnboardingModal-BVdW0xJ3.js} +1 -1
  15. package/dist/client/assets/{GoalsView-Ctt5P_yo.js → GoalsView-CCbeAvBm.js} +1 -1
  16. package/dist/client/assets/{InsightsView-NDp0bdNB.js → InsightsView-B46ZemSm.js} +1 -1
  17. package/dist/client/assets/{MemoryView-BKbA4Bm4.js → MemoryView-JM1fFU2D.js} +1 -1
  18. package/dist/client/assets/{PiExtensionsManager-V3AFWMHm.js → PiExtensionsManager-KHsw2af9.js} +1 -1
  19. package/dist/client/assets/{PluginManager-D88G_TZh.js → PluginManager-BeKLun0C.js} +1 -1
  20. package/dist/client/assets/{PullRequestView-DQQmFFYC.js → PullRequestView-CwQW2pe4.js} +1 -1
  21. package/dist/client/assets/{ReportModal-Clh1S8RF.js → ReportModal-BC9DhvX4.js} +1 -1
  22. package/dist/client/assets/{ResearchView-kxvq4zp5.js → ResearchView-CuB7IbEB.js} +1 -1
  23. package/dist/client/assets/{SecretsView-Dm0Vk8SA.js → SecretsView-DD8uA6G7.js} +1 -1
  24. package/dist/client/assets/{SessionTerminal-DJO4JTEX.js → SessionTerminal-B0S1e8qf.js} +1 -1
  25. package/dist/client/assets/SettingsModal-BHNEJWD4.js +21 -0
  26. package/dist/client/assets/{SettingsModal-BN5mL_ym.js → SettingsModal-BxrdR4-f.js} +1 -1
  27. package/dist/client/assets/{SettingsTextareaRow-CvKszqO-.js → SettingsTextareaRow-CpJOy-rv.js} +1 -1
  28. package/dist/client/assets/{SetupWizardModal-D5hVZh1G.js → SetupWizardModal-DviAPDlf.js} +2 -2
  29. package/dist/client/assets/{SkillsView-DQVz21w2.js → SkillsView-DeoEN_K0.js} +1 -1
  30. package/dist/client/assets/{WorkflowNodeEditor-CpKIi6Tb.js → WorkflowNodeEditor-CPk8plo1.js} +3 -3
  31. package/dist/client/assets/{agent-import-generation-DGUNF3nd.js → agent-import-generation-D74gC46R.js} +1 -1
  32. package/dist/client/assets/app-64JrFN7_.js +13 -0
  33. package/dist/client/assets/app-BxMYvSHk.js +13 -0
  34. package/dist/client/assets/app-CCgIvcFy.js +5 -0
  35. package/dist/client/assets/app-CVFYXkbM.js +13 -0
  36. package/dist/client/assets/app-Cl4NLAGd.js +13 -0
  37. package/dist/client/assets/app-_gHuSFBp.js +13 -0
  38. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CV83wubP.js → architectureDiagram-3BPJPVTR-DUNXxw_k.js} +1 -1
  39. package/dist/client/assets/{blockDiagram-GPEHLZMM-CNQsA3dD.js → blockDiagram-GPEHLZMM-CTxWMFSZ.js} +1 -1
  40. package/dist/client/assets/{c4Diagram-AAUBKEIU-CXe7ii5H.js → c4Diagram-AAUBKEIU-DI15zO_G.js} +1 -1
  41. package/dist/client/assets/channel-DDHw4Vcu.js +1 -0
  42. package/dist/client/assets/{chunk-2J33WTMH-BS6W9bWv.js → chunk-2J33WTMH-D1X3sNvd.js} +1 -1
  43. package/dist/client/assets/{chunk-4BX2VUAB-DbehRhdW.js → chunk-4BX2VUAB-DYz990rf.js} +1 -1
  44. package/dist/client/assets/{chunk-55IACEB6-DMI5SR42.js → chunk-55IACEB6-BQshFTjv.js} +1 -1
  45. package/dist/client/assets/{chunk-727SXJPM-D1d-GBVj.js → chunk-727SXJPM-DiVH9Rd6.js} +1 -1
  46. package/dist/client/assets/{chunk-AQP2D5EJ-BzO6K3Uf.js → chunk-AQP2D5EJ-Bx8LBEvE.js} +1 -1
  47. package/dist/client/assets/{chunk-FMBD7UC4-BVRLV3lK.js → chunk-FMBD7UC4-7rsNdXy-.js} +1 -1
  48. package/dist/client/assets/{chunk-ND2GUHAM-DdWByQfn.js → chunk-ND2GUHAM-COOZ3ff5.js} +1 -1
  49. package/dist/client/assets/{chunk-QZHKN3VN-1ia12cRV.js → chunk-QZHKN3VN-oL-CU1gN.js} +1 -1
  50. package/dist/client/assets/classDiagram-4FO5ZUOK-C5tnFtxH.js +1 -0
  51. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-C5tnFtxH.js +1 -0
  52. package/dist/client/assets/{cose-bilkent-S5V4N54A-BPDT41HR.js → cose-bilkent-S5V4N54A-CHXhlVh-.js} +1 -1
  53. package/dist/client/assets/{dagre-BM42HDAG-Cktn26EH.js → dagre-BM42HDAG-BJVXidIK.js} +1 -1
  54. package/dist/client/assets/{dashboard-view-zd8GxC49.js → dashboard-view-B8OjndkD.js} +1 -1
  55. package/dist/client/assets/{dashboard-view-8o0EUcRX.js → dashboard-view-BOqEOmsR.js} +1 -1
  56. package/dist/client/assets/{dashboard-view-CkCerlVJ.js → dashboard-view-CCg2wkwd.js} +1 -1
  57. package/dist/client/assets/{dashboard-view-D_HC4lnr.js → dashboard-view-DOWuByTe.js} +1 -1
  58. package/dist/client/assets/{diagram-2AECGRRQ-But4Lvf-.js → diagram-2AECGRRQ-CBS8IBP_.js} +1 -1
  59. package/dist/client/assets/{diagram-5GNKFQAL-2bpQAGFc.js → diagram-5GNKFQAL-Dmyxol5P.js} +1 -1
  60. package/dist/client/assets/{diagram-KO2AKTUF-Ckn9Qd1u.js → diagram-KO2AKTUF-DVF_5fDu.js} +1 -1
  61. package/dist/client/assets/{diagram-LMA3HP47-Bjn8h84N.js → diagram-LMA3HP47-DqbOTb-t.js} +1 -1
  62. package/dist/client/assets/{diagram-OG6HWLK6-BI6541hx.js → diagram-OG6HWLK6-BIhwB3ji.js} +1 -1
  63. package/dist/client/assets/{erDiagram-TEJ5UH35-BqMiwHiM.js → erDiagram-TEJ5UH35-BcYtj6RH.js} +1 -1
  64. package/dist/client/assets/{flowDiagram-I6XJVG4X-Q_SAB10M.js → flowDiagram-I6XJVG4X-CBYrhc7v.js} +1 -1
  65. package/dist/client/assets/{folder-open-CHiAJbTN.js → folder-open-DBW3UhL6.js} +1 -1
  66. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CqWFSfPF.js → ganttDiagram-6RSMTGT7-BtFaOg92.js} +1 -1
  67. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-B1o4uEjO.js → gitGraphDiagram-PVQCEYII-BE5E5ctQ.js} +1 -1
  68. package/dist/client/assets/{index-kwRywd9M.js → index-D6J9uyUx.js} +306 -306
  69. package/dist/client/assets/index-DDdZ20Cz.css +1 -0
  70. package/dist/client/assets/{infoDiagram-5YYISTIA-BzaMa0c2.js → infoDiagram-5YYISTIA-BBpwj0Ir.js} +1 -1
  71. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-I38yge00.js → ishikawaDiagram-YF4QCWOH-CwjmjYav.js} +1 -1
  72. package/dist/client/assets/{journeyDiagram-JHISSGLW-WVQSgx4P.js → journeyDiagram-JHISSGLW-ChnMZl1o.js} +1 -1
  73. package/dist/client/assets/{kanban-definition-UN3LZRKU-BWtPQ3AH.js → kanban-definition-UN3LZRKU-BA_bNZa3.js} +1 -1
  74. package/dist/client/assets/{mermaid.core-D1hnBtbi.js → mermaid.core-CNMqiN_t.js} +4 -4
  75. package/dist/client/assets/{mindmap-definition-RKZ34NQL-DqiSLkW7.js → mindmap-definition-RKZ34NQL-D-8_lEGp.js} +1 -1
  76. package/dist/client/assets/{pieDiagram-4H26LBE5-CcgwbdIN.js → pieDiagram-4H26LBE5-Cz_dYW8h.js} +1 -1
  77. package/dist/client/assets/{puzzle-BhXUaTQl.js → puzzle-Bbsv6mZh.js} +1 -1
  78. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-MsqQQfDN.js → quadrantDiagram-W4KKPZXB-BtXzvuUT.js} +1 -1
  79. package/dist/client/assets/{requirementDiagram-4Y6WPE33-CILGjMMA.js → requirementDiagram-4Y6WPE33-CK29bQbQ.js} +1 -1
  80. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-c14fWbtR.js → sankeyDiagram-5OEKKPKP-DGxLW8W6.js} +1 -1
  81. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BD5bxMom.js → sequenceDiagram-3UESZ5HK-CPOz7wfR.js} +1 -1
  82. package/dist/client/assets/{shield-alert-C9W2WywS.js → shield-alert-BnpS5qUu.js} +1 -1
  83. package/dist/client/assets/{standing-instructions-template-CJdbDSyg.js → standing-instructions-template-jeWwq3Zh.js} +1 -1
  84. package/dist/client/assets/{stateDiagram-AJRCARHV-CZ5YqeOn.js → stateDiagram-AJRCARHV-CxpQ3AE6.js} +1 -1
  85. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-mdMN-PNX.js → stateDiagram-v2-BHNVJYJU-BSImQHUw.js} +1 -1
  86. package/dist/client/assets/{timeline-definition-PNZ67QCA-DHKay9uj.js → timeline-definition-PNZ67QCA-jt74--XQ.js} +1 -1
  87. package/dist/client/assets/{upload-DxEwowRU.js → upload-D2j8N8vC.js} +1 -1
  88. package/dist/client/assets/{users-mNFgW_Zd.js → users-BtzATmoI.js} +1 -1
  89. package/dist/client/assets/{vennDiagram-CIIHVFJN-X29K9hWM.js → vennDiagram-CIIHVFJN-3vOGHb8-.js} +1 -1
  90. package/dist/client/assets/{wardley-L42UT6IY-yEoTrfmN.js → wardley-L42UT6IY-DNuWuyr8.js} +1 -1
  91. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-ny4k3kG0.js → wardleyDiagram-YWT4CUSO-D-kFe8Uz.js} +1 -1
  92. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DC8ODtRJ.js → xychartDiagram-2RQKCTM6-DvDQ30sY.js} +1 -1
  93. package/dist/client/index.html +2 -2
  94. package/dist/client/version.json +1 -1
  95. package/dist/droid-cli/package.json +1 -1
  96. package/dist/extension.js +2702 -1117
  97. package/dist/migrations/0045_fn_8764_multi_role_workflow_agents.sql +20 -0
  98. package/dist/migrations/0046_fn_8764_workflow_principal_fence.sql +49 -0
  99. package/dist/migrations/0047_fn_8829_task_recommendations.sql +3 -0
  100. package/dist/pi-claude-cli/package.json +1 -1
  101. package/dist/plugin-sdk/index.d.ts +43 -0
  102. package/dist/plugin-sdk/index.js +357 -25
  103. package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +357 -25
  104. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  105. package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +357 -25
  106. package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
  107. package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +357 -25
  108. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  109. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +357 -25
  110. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  111. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +357 -25
  112. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  113. package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +357 -25
  114. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  115. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +357 -25
  116. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  117. package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +357 -25
  118. package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
  119. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +357 -25
  120. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  121. package/dist/plugins/fusion-plugin-linear-import/bundled.js +357 -25
  122. package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
  123. package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +357 -25
  124. package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
  125. package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +357 -25
  126. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  127. package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +357 -25
  128. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  129. package/dist/plugins/fusion-plugin-quality/bundled.js +357 -25
  130. package/dist/plugins/fusion-plugin-quality/package.json +1 -1
  131. package/dist/plugins/fusion-plugin-reports/bundled.js +357 -25
  132. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  133. package/dist/plugins/fusion-plugin-roadmap/bundled.js +357 -25
  134. package/dist/plugins/fusion-plugin-roadmap/manifest.json +11 -1
  135. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  136. package/dist/plugins/fusion-plugin-todos/bundled.js +357 -25
  137. package/dist/plugins/fusion-plugin-todos/manifest.json +11 -1
  138. package/dist/plugins/fusion-plugin-todos/package.json +1 -1
  139. package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +357 -25
  140. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  141. package/package.json +1 -1
  142. package/skill/fusion/SKILL.md +1 -1
  143. package/skill/fusion/references/extension-tools.md +16 -2
  144. package/skill/fusion/references/fusion-capabilities.md +1 -0
  145. package/dist/client/assets/AgentDetailView-C8-9_SOC.css +0 -1
  146. package/dist/client/assets/AgentDetailView-ltOG8f0-.js +0 -13
  147. package/dist/client/assets/AgentsView-DWUdi27N.js +0 -24
  148. package/dist/client/assets/SettingsModal-CTf5voEW.js +0 -21
  149. package/dist/client/assets/app-B4gkbXNS.js +0 -13
  150. package/dist/client/assets/app-BXLZYY_A.js +0 -13
  151. package/dist/client/assets/app-CNFmVt1q.js +0 -13
  152. package/dist/client/assets/app-DCERHstn.js +0 -13
  153. package/dist/client/assets/app-iKAA6v9i.js +0 -5
  154. package/dist/client/assets/app-p_Hq0vGS.js +0 -13
  155. package/dist/client/assets/channel-DoX862zl.js +0 -1
  156. package/dist/client/assets/classDiagram-4FO5ZUOK-mb2IeAGN.js +0 -1
  157. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-mb2IeAGN.js +0 -1
  158. package/dist/client/assets/index-Bdw5eNKV.css +0 -1
@@ -0,0 +1,20 @@
1
+ -- FNXC:WorkflowAgentRouting 2026-08-07-03:12:
2
+ -- FN-8764 changes permanent-agent capability from one role to normalized tags.
3
+ -- Keep `role` during the compatibility window, but backfill canonical `roles`
4
+ -- idempotently so upgrades preserve every legacy agent identity.
5
+ DO $$
6
+ BEGIN
7
+ -- Partial historic schemas in the upgrade harness did not yet have agents;
8
+ -- a later normal startup applies this idempotent migration after the baseline.
9
+ IF to_regclass('project.agents') IS NOT NULL THEN
10
+ ALTER TABLE project.agents
11
+ ADD COLUMN IF NOT EXISTS roles jsonb NOT NULL DEFAULT '[]'::jsonb;
12
+
13
+ UPDATE project.agents
14
+ SET roles = jsonb_build_array(role)
15
+ WHERE jsonb_typeof(roles) <> 'array'
16
+ OR jsonb_array_length(roles) = 0;
17
+
18
+ CREATE INDEX IF NOT EXISTS idx_agents_roles ON project.agents USING gin (roles);
19
+ END IF;
20
+ END $$;
@@ -0,0 +1,49 @@
1
+ -- FNXC:WorkflowAgentRouting 2026-08-07-03:25:
2
+ -- FN-8764 requires routing identity to live on the project-scoped work item,
3
+ -- not mutable task ownership. These nullable fields preserve legacy items while
4
+ -- fencing new classified session attempts and their reviewer-node boundaries.
5
+ DO $$
6
+ BEGIN
7
+ -- Very old upgrade fixtures can predate workflow work items entirely.
8
+ CREATE TABLE IF NOT EXISTS project.workflow_agent_capacity_leases (
9
+ project_id text NOT NULL DEFAULT current_setting('fusion.project_id', true),
10
+ attempt_id text NOT NULL,
11
+ agent_id text NOT NULL,
12
+ created_at text NOT NULL,
13
+ expires_at text NOT NULL,
14
+ PRIMARY KEY (project_id, attempt_id)
15
+ );
16
+ -- FNXC:WorkflowAgentRouting 2026-08-07-07:16: Existing leases gain a finite expiry so a process crash cannot consume workflow capacity indefinitely.
17
+ ALTER TABLE project.workflow_agent_capacity_leases
18
+ ADD COLUMN IF NOT EXISTS expires_at text;
19
+ UPDATE project.workflow_agent_capacity_leases
20
+ SET expires_at = created_at
21
+ WHERE expires_at IS NULL;
22
+ ALTER TABLE project.workflow_agent_capacity_leases
23
+ ALTER COLUMN expires_at SET NOT NULL;
24
+ CREATE INDEX IF NOT EXISTS idx_workflow_agent_capacity_leases_agent
25
+ ON project.workflow_agent_capacity_leases (project_id, agent_id);
26
+ CREATE INDEX IF NOT EXISTS idx_workflow_agent_capacity_leases_expiry
27
+ ON project.workflow_agent_capacity_leases (project_id, expires_at);
28
+ ALTER TABLE project.workflow_agent_capacity_leases ENABLE ROW LEVEL SECURITY;
29
+ ALTER TABLE project.workflow_agent_capacity_leases FORCE ROW LEVEL SECURITY;
30
+ DROP POLICY IF EXISTS fusion_project_isolation ON project.workflow_agent_capacity_leases;
31
+ CREATE POLICY fusion_project_isolation ON project.workflow_agent_capacity_leases
32
+ USING (current_setting('fusion.project_bypass', true) = 'on' OR project_id = current_setting('fusion.project_id', true))
33
+ WITH CHECK (current_setting('fusion.project_bypass', true) = 'on' OR project_id = current_setting('fusion.project_id', true));
34
+ DROP TRIGGER IF EXISTS fusion_assign_project_id ON project.workflow_agent_capacity_leases;
35
+ CREATE TRIGGER fusion_assign_project_id BEFORE INSERT OR UPDATE OF project_id ON project.workflow_agent_capacity_leases
36
+ FOR EACH ROW EXECUTE FUNCTION project.fusion_assign_project_id();
37
+
38
+ IF to_regclass('project.workflow_work_items') IS NOT NULL THEN
39
+ ALTER TABLE project.workflow_work_items
40
+ ADD COLUMN IF NOT EXISTS principal_agent_id text,
41
+ ADD COLUMN IF NOT EXISTS workflow_role text,
42
+ ADD COLUMN IF NOT EXISTS authority_kind text,
43
+ ADD COLUMN IF NOT EXISTS node_instance_id text;
44
+
45
+ CREATE INDEX IF NOT EXISTS idx_workflow_work_items_active_principal
46
+ ON project.workflow_work_items (project_id, principal_agent_id, state)
47
+ WHERE principal_agent_id IS NOT NULL;
48
+ END IF;
49
+ END $$;
@@ -0,0 +1,3 @@
1
+ -- FNXC:TaskRecommendations 2026-08-08-05:56: persist bounded completion suggestions without changing legacy task rows.
2
+ -- Schema-only settings stores have no task relation; remain a no-op there while materializing the column for every task-owning project.
3
+ ALTER TABLE IF EXISTS project.tasks ADD COLUMN IF NOT EXISTS recommendations jsonb;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion/pi-claude-cli",
3
- "version": "0.75.1-beta.2",
3
+ "version": "0.76.0-beta.0",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "main": "index.ts",
@@ -324,6 +324,10 @@ interface WorkflowStepResult {
324
324
  supersededAt?: string;
325
325
  supersededReason?: "dependency-change";
326
326
  planReviewAttemptCount?: number;
327
+ resumedBy?: string;
328
+ resumedAt?: string;
329
+ resumeReason?: string;
330
+ resumedFromStatus?: WorkflowStepResult["status"];
327
331
  priorAttempts?: WorkflowStepResult[];
328
332
  }
329
333
  type WorkflowRunStepInstanceStatus = "pending" | "in-progress" | "awaiting-integration" | "completed" | "failed";
@@ -369,6 +373,7 @@ interface WorkflowIrNode {
369
373
  column?: string;
370
374
  extensions?: Record<string, Record<string, unknown>>;
371
375
  config?: Record<string, unknown>;
376
+ reviewerAgentId?: string;
372
377
  }
373
378
  interface WorkflowIrEdge {
374
379
  from: string;
@@ -699,6 +704,10 @@ interface WorkflowWorkItem {
699
704
  sourceColumn: string | null;
700
705
  targetColumn: string | null;
701
706
  irHash: string | null;
707
+ principalAgentId: string | null;
708
+ workflowRole: "triage" | "executor" | "reviewer" | "merger" | null;
709
+ authorityKind: "task-assignee" | "review-node-override" | "column-binding" | "role-pool" | null;
710
+ nodeInstanceId: string | null;
702
711
  createdAt: string;
703
712
  updatedAt: string;
704
713
  }
@@ -721,6 +730,10 @@ interface WorkflowWorkItemUpsertInput {
721
730
  sourceColumn?: string | null;
722
731
  targetColumn?: string | null;
723
732
  irHash?: string | null;
733
+ principalAgentId?: string | null;
734
+ workflowRole?: "triage" | "executor" | "reviewer" | "merger" | null;
735
+ authorityKind?: "task-assignee" | "review-node-override" | "column-binding" | "role-pool" | null;
736
+ nodeInstanceId?: string | null;
724
737
  now?: string;
725
738
  }
726
739
  interface WorkflowWorkItemTransitionPatch {
@@ -730,10 +743,15 @@ interface WorkflowWorkItemTransitionPatch {
730
743
  leaseExpiresAt?: string | null;
731
744
  lastError?: string | null;
732
745
  blockedReason?: string | null;
746
+ principalAgentId?: string | null;
747
+ workflowRole?: "triage" | "executor" | "reviewer" | "merger" | null;
748
+ authorityKind?: "task-assignee" | "review-node-override" | "column-binding" | "role-pool" | null;
749
+ nodeInstanceId?: string | null;
733
750
  now?: string;
734
751
  expectedState?: WorkflowWorkItemState;
735
752
  }
736
753
  interface WorkflowWorkItemDueFilter {
754
+ projectId?: string;
737
755
  now?: string;
738
756
  limit?: number;
739
757
  kinds?: WorkflowWorkItemKind[];
@@ -1447,6 +1465,7 @@ declare class MissionStore extends EventEmitter<MissionStoreEvents> {
1447
1465
  updateSlice(id: string, updates: Partial<Slice>): Slice;
1448
1466
  deleteSlice(id: string, force?: boolean): void;
1449
1467
  reorderSlices(milestoneId: string, orderedIds: string[]): void;
1468
+ tryActivateNextPendingSlice(missionId: string): Promise<Slice | undefined>;
1450
1469
  activateSlice(id: string): Promise<Slice>;
1451
1470
  findNextPendingSlice(missionId: string): Slice | undefined;
1452
1471
  addFeature(sliceId: string, input: FeatureCreateInput): MissionFeature;
@@ -1593,6 +1612,7 @@ declare class AsyncMissionStore extends EventEmitter<MissionStoreEvents> {
1593
1612
  updateSlice(id: string, updates: Partial<Slice>): Promise<Slice>;
1594
1613
  deleteSlice(id: string, force?: boolean): Promise<void>;
1595
1614
  reorderSlices(milestoneId: string, orderedIds: string[]): Promise<void>;
1615
+ tryActivateNextPendingSlice(missionId: string): Promise<Slice | undefined>;
1596
1616
  activateSlice(id: string): Promise<Slice>;
1597
1617
  findNextPendingSlice(missionId: string): Promise<Slice | undefined>;
1598
1618
  addFeature(sliceId: string, input: FeatureCreateInput, handle?: QueryHandle): Promise<MissionFeature>;
@@ -3605,6 +3625,7 @@ interface TaskRow {
3605
3625
  nextRecoveryAt: string | null;
3606
3626
  error: string | null;
3607
3627
  summary: string | null;
3628
+ recommendations: string | null;
3608
3629
  thinkingLevel: string | null;
3609
3630
  validatorThinkingLevel: string | null;
3610
3631
  planningThinkingLevel: string | null;
@@ -3955,6 +3976,10 @@ interface WorkflowWorkItemRow {
3955
3976
  sourceColumn: string | null;
3956
3977
  targetColumn: string | null;
3957
3978
  irHash: string | null;
3979
+ principalAgentId: string | null;
3980
+ workflowRole: string | null;
3981
+ authorityKind: string | null;
3982
+ nodeInstanceId: string | null;
3958
3983
  createdAt: string;
3959
3984
  updatedAt: string;
3960
3985
  }
@@ -4667,6 +4692,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
4667
4692
  mergerThinkingLevel?: string | null;
4668
4693
  error?: string | null;
4669
4694
  summary?: string | null;
4695
+ recommendations?: TaskRecommendation[];
4670
4696
  sessionFile?: string | null;
4671
4697
  firstExecutionAt?: string | null;
4672
4698
  cumulativeActiveMs?: number | null;
@@ -4698,6 +4724,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
4698
4724
  claimNextToolFailureRetry(taskId: string, expectedCursor: number, maxRetries: number): Promise<ToolFailureRetryClaim>;
4699
4725
  markToolFailureRetryExhaustedAudit(taskId: string): Promise<boolean>;
4700
4726
  updateTaskAtomic(id: string, updater: (current: Task) => Parameters<TaskStore["updateTask"]>[1] | null | undefined | Promise<Parameters<TaskStore["updateTask"]>[1] | null | undefined>, runContext?: RunMutationContext): Promise<Task>;
4727
+ linkTaskRecommendation(id: string, recommendationId: string, createdTaskId: string, completeColumns?: ReadonlySet<string>): Promise<Task>;
4701
4728
  resolveTaskWedgeNotificationEpisode(id: string, episodeId: string): Promise<{
4702
4729
  task: Task;
4703
4730
  resolved: boolean;
@@ -4733,6 +4760,11 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
4733
4760
  reason: string;
4734
4761
  actor: string;
4735
4762
  }): Promise<Task>;
4763
+ resumeWorkflowStep(id: string, options: {
4764
+ stepId: string;
4765
+ reason: string;
4766
+ actor: string;
4767
+ }): Promise<Task>;
4736
4768
  emit<E extends string | symbol>(event: E, ...args: any[]): boolean;
4737
4769
  updateStep(id: string, stepIndex: number, status: StepStatus, options?: {
4738
4770
  source?: "graph";
@@ -6489,6 +6521,14 @@ interface TaskWedgeNotificationState {
6489
6521
  transitionedAt: string;
6490
6522
  lastNotifiedAtByReason?: Record<string, string>;
6491
6523
  }
6524
+ type TaskRecommendationCategory = "improvement" | "feature" | "bug" | "other";
6525
+ interface TaskRecommendation {
6526
+ id: string;
6527
+ title: string;
6528
+ description: string;
6529
+ category: TaskRecommendationCategory;
6530
+ createdTaskId?: string;
6531
+ }
6492
6532
  interface Task {
6493
6533
  id: string;
6494
6534
  lineageId?: string;
@@ -6653,6 +6693,7 @@ interface Task {
6653
6693
  sessionFile?: string;
6654
6694
  error?: string;
6655
6695
  summary?: string;
6696
+ recommendations?: TaskRecommendation[];
6656
6697
  columnMovedAt?: string;
6657
6698
  firstExecutionAt?: string;
6658
6699
  cumulativeActiveMs?: number;
@@ -6836,6 +6877,7 @@ interface AgentPermissionPolicy {
6836
6877
  interface Agent {
6837
6878
  id: string;
6838
6879
  name: string;
6880
+ roles: AgentCapability[];
6839
6881
  role: AgentCapability;
6840
6882
  state: AgentState;
6841
6883
  taskId?: string;
@@ -7252,6 +7294,7 @@ type ReportMode = "draft-review" | "auto-file";
7252
7294
  type ReportActionType = "bug" | "feedback" | "idea" | "help";
7253
7295
  type ReportTarget = "issue" | "discussion";
7254
7296
  interface ProjectSettings {
7297
+ maxRecommendationsPerTask?: number;
7255
7298
  globalPause?: boolean;
7256
7299
  globalPauseReason?: string;
7257
7300
  defaultWorkflowId?: string;