@runfusion/fusion 0.75.0-beta.0 → 0.75.0-beta.2

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 (138) hide show
  1. package/dist/bin.js +2858 -1801
  2. package/dist/child-process-worker.js +2650 -1824
  3. package/dist/client/.vite/manifest.json +249 -249
  4. package/dist/client/assets/{AgentDetailView-lS4k3-0w.js → AgentDetailView-C4Xpag_i.js} +1 -1
  5. package/dist/client/assets/{AgentPermissionPolicyEditor-D7LB_f1m.js → AgentPermissionPolicyEditor-D-Fp7-sy.js} +1 -1
  6. package/dist/client/assets/{AgentsView-DwCNc9_x.js → AgentsView-BmFsoY1Q.js} +3 -3
  7. package/dist/client/assets/{ChatView-CVxDxKOu.js → ChatView-5KsB3BVO.js} +1 -1
  8. package/dist/client/assets/{CommandCenter-Da3AiDs-.js → CommandCenter-CacGI8AV.js} +1 -1
  9. package/dist/client/assets/{DevServerView-C0UWmEhO.js → DevServerView-DufjauVn.js} +1 -1
  10. package/dist/client/assets/{DirectoryPicker-JH2ahFj8.js → DirectoryPicker-DvwqfQDS.js} +1 -1
  11. package/dist/client/assets/{DocumentsView-BA4Pqnfr.js → DocumentsView-BbYJFIQ1.js} +1 -1
  12. package/dist/client/assets/{EvalsView-DW88MPta.js → EvalsView-NBC8kOc-.js} +1 -1
  13. package/dist/client/assets/{ExperimentalAgentOnboardingModal-DOih_5nN.js → ExperimentalAgentOnboardingModal-C809yXXY.js} +1 -1
  14. package/dist/client/assets/{GoalsView-DDIorLyM.js → GoalsView-CpNO9eI0.js} +1 -1
  15. package/dist/client/assets/{InsightsView-B5VUUsmJ.js → InsightsView-Cahy5FcR.js} +1 -1
  16. package/dist/client/assets/{MemoryView-sDMj6cEL.js → MemoryView-BNJAQjqn.js} +1 -1
  17. package/dist/client/assets/{PiExtensionsManager-SpcPEzpg.js → PiExtensionsManager-DCHTyOmJ.js} +1 -1
  18. package/dist/client/assets/{PluginManager-lIMMAJYt.js → PluginManager-CBt-CqUz.js} +1 -1
  19. package/dist/client/assets/{PullRequestView-BfAHOr3-.js → PullRequestView-Dsb9RwmX.js} +1 -1
  20. package/dist/client/assets/{ReportModal-6RDeUqQG.js → ReportModal-8FjZOcbC.js} +1 -1
  21. package/dist/client/assets/{ResearchView-BUGq2GsN.js → ResearchView-DlSG7dOd.js} +1 -1
  22. package/dist/client/assets/{SecretsView-CTwukpAq.js → SecretsView-BSajNE-f.js} +1 -1
  23. package/dist/client/assets/{SessionTerminal-Dspbb2NO.js → SessionTerminal-M2fIpHrL.js} +1 -1
  24. package/dist/client/assets/{SettingsModal-B6guaVe8.js → SettingsModal-DLcvlp44.js} +3 -3
  25. package/dist/client/assets/{SettingsModal-D2DahTWc.js → SettingsModal-z6gOf7dG.js} +1 -1
  26. package/dist/client/assets/{SettingsTextareaRow-BZZnVXGb.js → SettingsTextareaRow-DeC19053.js} +1 -1
  27. package/dist/client/assets/{SetupWizardModal-xTlxjulj.js → SetupWizardModal-BOjMePFh.js} +2 -2
  28. package/dist/client/assets/{SkillsView-CMG1fM0H.js → SkillsView-BSBEC-Xm.js} +1 -1
  29. package/dist/client/assets/{WorkflowNodeEditor-BBrY5D7F.js → WorkflowNodeEditor-DZ9-RBqo.js} +1 -1
  30. package/dist/client/assets/{agent-import-generation-DV3YE8Rc.js → agent-import-generation-COItiXMT.js} +1 -1
  31. package/dist/client/assets/{architectureDiagram-3BPJPVTR-gMbSnyDo.js → architectureDiagram-3BPJPVTR-BwlCePoB.js} +1 -1
  32. package/dist/client/assets/{blockDiagram-GPEHLZMM-BRPa9ADn.js → blockDiagram-GPEHLZMM-KKrLi9v4.js} +1 -1
  33. package/dist/client/assets/{c4Diagram-AAUBKEIU-BZhZDOqG.js → c4Diagram-AAUBKEIU-CkIDt_8M.js} +1 -1
  34. package/dist/client/assets/channel-CeYcnOtQ.js +1 -0
  35. package/dist/client/assets/{chunk-2J33WTMH-bcODs8jt.js → chunk-2J33WTMH-D9sbdaqY.js} +1 -1
  36. package/dist/client/assets/{chunk-4BX2VUAB-BRVq7S5r.js → chunk-4BX2VUAB-D3DtFoAY.js} +1 -1
  37. package/dist/client/assets/{chunk-55IACEB6-Cl7bhvca.js → chunk-55IACEB6-gxblxRIN.js} +1 -1
  38. package/dist/client/assets/{chunk-727SXJPM-B9loHJy3.js → chunk-727SXJPM-D0AEDoHN.js} +1 -1
  39. package/dist/client/assets/{chunk-AQP2D5EJ-CFA8hWsC.js → chunk-AQP2D5EJ-BweoM7qY.js} +1 -1
  40. package/dist/client/assets/{chunk-FMBD7UC4-Buu3h7wx.js → chunk-FMBD7UC4-sjblhrjI.js} +1 -1
  41. package/dist/client/assets/{chunk-ND2GUHAM-DN_GDbIs.js → chunk-ND2GUHAM-CYuRENSs.js} +1 -1
  42. package/dist/client/assets/{chunk-QZHKN3VN-1t7Gs0aF.js → chunk-QZHKN3VN-CFKJr4kG.js} +1 -1
  43. package/dist/client/assets/classDiagram-4FO5ZUOK-CZwh2k1X.js +1 -0
  44. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CZwh2k1X.js +1 -0
  45. package/dist/client/assets/{cose-bilkent-S5V4N54A-QqcFhiY1.js → cose-bilkent-S5V4N54A-6Jb6SgHM.js} +1 -1
  46. package/dist/client/assets/{dagre-BM42HDAG-DjGM9BIi.js → dagre-BM42HDAG-FQJ87Ol3.js} +1 -1
  47. package/dist/client/assets/{dashboard-view-BO_R8jyX.js → dashboard-view-B1Rq2-73.js} +1 -1
  48. package/dist/client/assets/{dashboard-view-CxXlYApd.js → dashboard-view-DH1Zo0m4.js} +1 -1
  49. package/dist/client/assets/{dashboard-view-UqmC6VTb.js → dashboard-view-DVMZNVoc.js} +1 -1
  50. package/dist/client/assets/{dashboard-view-C6rmfIOU.js → dashboard-view-DgLbkn5n.js} +1 -1
  51. package/dist/client/assets/{diagram-2AECGRRQ-BmCGpU8P.js → diagram-2AECGRRQ-CKYOu9to.js} +1 -1
  52. package/dist/client/assets/{diagram-5GNKFQAL-CKRL1dki.js → diagram-5GNKFQAL-DPwjFnde.js} +1 -1
  53. package/dist/client/assets/{diagram-KO2AKTUF-DE9deYyi.js → diagram-KO2AKTUF-DzZS9Nk3.js} +1 -1
  54. package/dist/client/assets/{diagram-LMA3HP47-BmUGF67J.js → diagram-LMA3HP47-DW9e5YSP.js} +1 -1
  55. package/dist/client/assets/{diagram-OG6HWLK6-DLUATSuY.js → diagram-OG6HWLK6-C7V3Mj63.js} +1 -1
  56. package/dist/client/assets/{erDiagram-TEJ5UH35-nl31ZyQ8.js → erDiagram-TEJ5UH35-DSQzBA0e.js} +1 -1
  57. package/dist/client/assets/{flowDiagram-I6XJVG4X-BZdpCw1-.js → flowDiagram-I6XJVG4X-BUuOq9tO.js} +1 -1
  58. package/dist/client/assets/{folder-open-DKvxGzrx.js → folder-open-DXNu4ED4.js} +1 -1
  59. package/dist/client/assets/{ganttDiagram-6RSMTGT7-DLsqztRx.js → ganttDiagram-6RSMTGT7-Bc32G_Ef.js} +1 -1
  60. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-Dk_Sy9NG.js → gitGraphDiagram-PVQCEYII-Cvfa0W6a.js} +1 -1
  61. package/dist/client/assets/index-C5YdAqNQ.js +2767 -0
  62. package/dist/client/assets/index-DHk_s6rA.css +1 -0
  63. package/dist/client/assets/{infoDiagram-5YYISTIA-DoQ0ID21.js → infoDiagram-5YYISTIA-TqRUTfvy.js} +1 -1
  64. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-By5pgTzr.js → ishikawaDiagram-YF4QCWOH-D33iop1_.js} +1 -1
  65. package/dist/client/assets/{journeyDiagram-JHISSGLW-296a-u4u.js → journeyDiagram-JHISSGLW-DH-TDR5Y.js} +1 -1
  66. package/dist/client/assets/{kanban-definition-UN3LZRKU-CgcRr3lQ.js → kanban-definition-UN3LZRKU-CAcebzyW.js} +1 -1
  67. package/dist/client/assets/{mermaid.core-BMcqO-oY.js → mermaid.core-C3Nh1Sak.js} +4 -4
  68. package/dist/client/assets/{mindmap-definition-RKZ34NQL-C6poaNyh.js → mindmap-definition-RKZ34NQL-CSIccWV8.js} +1 -1
  69. package/dist/client/assets/{pieDiagram-4H26LBE5-D5kkHa4c.js → pieDiagram-4H26LBE5-hXJ3G3MR.js} +1 -1
  70. package/dist/client/assets/{puzzle-Dn0zAogb.js → puzzle-DI3elldh.js} +1 -1
  71. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-XYE61FOQ.js → quadrantDiagram-W4KKPZXB-B3wpvneC.js} +1 -1
  72. package/dist/client/assets/{requirementDiagram-4Y6WPE33-ChSV14Ej.js → requirementDiagram-4Y6WPE33-DPpYL2ca.js} +1 -1
  73. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-ToxhxAPY.js → sankeyDiagram-5OEKKPKP-BS9QXSEF.js} +1 -1
  74. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-shNTGnMF.js → sequenceDiagram-3UESZ5HK-C_fqU0MW.js} +1 -1
  75. package/dist/client/assets/{shield-alert-DoqrZ4qS.js → shield-alert-CzZYSqmH.js} +1 -1
  76. package/dist/client/assets/{standing-instructions-template-CbBEfZ8s.js → standing-instructions-template-CsXA4WMZ.js} +1 -1
  77. package/dist/client/assets/{stateDiagram-AJRCARHV-CRNXfwiP.js → stateDiagram-AJRCARHV-DbSZrprS.js} +1 -1
  78. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-atxeIHh0.js → stateDiagram-v2-BHNVJYJU-Cf_ckwmM.js} +1 -1
  79. package/dist/client/assets/{timeline-definition-PNZ67QCA-CguHqKR6.js → timeline-definition-PNZ67QCA-B1ohvKjs.js} +1 -1
  80. package/dist/client/assets/{upload-BF3YtpBl.js → upload-D7nNe9wD.js} +1 -1
  81. package/dist/client/assets/{users-CN7wFV_l.js → users-B79Dvre4.js} +1 -1
  82. package/dist/client/assets/{vennDiagram-CIIHVFJN-BpgXesnN.js → vennDiagram-CIIHVFJN-CxZYCQ72.js} +1 -1
  83. package/dist/client/assets/{wardley-L42UT6IY-4QN1B18l.js → wardley-L42UT6IY-clJem8VU.js} +1 -1
  84. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BuYjCimN.js → wardleyDiagram-YWT4CUSO-zE8lyaWe.js} +1 -1
  85. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DL8viWGe.js → xychartDiagram-2RQKCTM6-DsdjuSxQ.js} +1 -1
  86. package/dist/client/index.html +2 -2
  87. package/dist/client/version.json +1 -1
  88. package/dist/droid-cli/package.json +1 -1
  89. package/dist/extension.js +2594 -1746
  90. package/dist/migrations/0000_initial.sql +1 -0
  91. package/dist/migrations/0043_fn8768_dispatch_dedupe.sql +17 -0
  92. package/dist/migrations/0044_fn_8785_queued_episode_signature.sql +3 -0
  93. package/dist/pi-claude-cli/package.json +1 -1
  94. package/dist/plugin-sdk/index.d.ts +38 -1
  95. package/dist/plugin-sdk/index.js +71 -20
  96. package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +71 -20
  97. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  98. package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +71 -20
  99. package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
  100. package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +71 -20
  101. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  102. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +71 -20
  103. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  104. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +71 -20
  105. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  106. package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +71 -20
  107. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  108. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +71 -20
  109. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  110. package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +71 -20
  111. package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
  112. package/dist/plugins/fusion-plugin-hermes-runtime/.bundled.reload-3.js +19167 -0
  113. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +71 -20
  114. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  115. package/dist/plugins/fusion-plugin-linear-import/bundled.js +71 -20
  116. package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
  117. package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +71 -20
  118. package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
  119. package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +71 -20
  120. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  121. package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +71 -20
  122. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  123. package/dist/plugins/fusion-plugin-quality/bundled.js +71 -20
  124. package/dist/plugins/fusion-plugin-quality/package.json +1 -1
  125. package/dist/plugins/fusion-plugin-reports/bundled.js +71 -20
  126. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  127. package/dist/plugins/fusion-plugin-roadmap/bundled.js +71 -20
  128. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  129. package/dist/plugins/fusion-plugin-todos/bundled.js +71 -20
  130. package/dist/plugins/fusion-plugin-todos/package.json +1 -1
  131. package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +71 -20
  132. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  133. package/package.json +1 -1
  134. package/dist/client/assets/channel-CcVVD2V-.js +0 -1
  135. package/dist/client/assets/classDiagram-4FO5ZUOK-Bdeei39Q.js +0 -1
  136. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Bdeei39Q.js +0 -1
  137. package/dist/client/assets/index-DTimvpMD.js +0 -2685
  138. package/dist/client/assets/index-DjY0GTMz.css +0 -1
@@ -163060,6 +163060,7 @@ __export(project_exports, {
163060
163060
  tasks: () => tasks,
163061
163061
  todoItems: () => todoItems,
163062
163062
  todoLists: () => todoLists,
163063
+ unplannedExecutionBlocks: () => unplannedExecutionBlocks,
163063
163064
  usageEvents: () => usageEvents,
163064
163065
  verificationCache: () => verificationCache,
163065
163066
  workflowPromptOverrides: () => workflowPromptOverrides,
@@ -163099,6 +163100,7 @@ var tasks = projectSchema.table("tasks", {
163099
163100
  worktree: text("worktree"),
163100
163101
  blockedBy: text("blocked_by"),
163101
163102
  overlapBlockedBy: text("overlap_blocked_by"),
163103
+ queuedLogEpisodeSignature: text("queued_log_episode_signature"),
163102
163104
  paused: integer("paused").default(0),
163103
163105
  userPaused: integer("user_paused").default(0),
163104
163106
  pausedReason: text("paused_reason"),
@@ -163904,6 +163906,14 @@ var workflowWorkItems = projectSchema.table("workflow_work_items", {
163904
163906
  index("idx_workflow_work_items_task_run").on(t.taskId, t.runId),
163905
163907
  uniqueIndex("idx_workflow_work_items_one_active_task_continuation").on(t.projectId, t.taskId).where(sql`${t.kind} = 'task' AND ${t.state} IN ('runnable', 'running', 'held', 'retrying')`)
163906
163908
  ]);
163909
+ var unplannedExecutionBlocks = projectSchema.table("unplanned_execution_blocks", {
163910
+ projectId: text("project_id").notNull().default(sql`current_setting('fusion.project_id', true)`),
163911
+ taskId: text("task_id").notNull(),
163912
+ episode: text("episode").notNull(),
163913
+ createdAt: text("created_at").notNull()
163914
+ }, (t) => [
163915
+ primaryKey({ columns: [t.projectId, t.taskId, t.episode] })
163916
+ ]);
163907
163917
  var workflowRunBranches = projectSchema.table("workflow_run_branches", {
163908
163918
  projectId: text("project_id").notNull().default(sql`current_setting('fusion.project_id', true)`),
163909
163919
  taskId: text("task_id").notNull(),
@@ -169429,6 +169439,37 @@ var TRIAGE_POLICY_DEFAULTS = new Map(
169429
169439
  BUILTIN_TRIAGE_POLICY_SETTINGS.map((setting) => [setting.id, setting.default])
169430
169440
  );
169431
169441
 
169442
+ // ../core/src/agents/planning-review-policy.ts
169443
+ var PLANNING_COMPLETENESS_POLICY = `## Mandatory Planning Completeness Procedure
169444
+
169445
+ Before writing the final PROMPT.md:
169446
+
169447
+ 1. Build an internal **planning ledger** from the Original Description, user comments, project instructions, cited issue/report, and any saved planning document. Preserve every requirement, settled decision, explicit non-goal, and acceptance outcome; do not silently replace the reporter's contract with a narrower reproduction.
169448
+ 2. Research before structuring the plan. Trace the affected behavior through its real production entry points, callers, writers/readers, shared consumers, persistence boundaries, recovery paths, and existing tests. Resolve planning-time facts from the repository now; defer only details that genuinely require implementation-time discovery, and label those explicitly.
169449
+ 3. For stateful, lifecycle, persistence, or concurrency work, enumerate the participant graph and both relevant orderings: stale-work cancellation/fencing, lock order and reentrancy, transaction boundaries, pool/transport limits, competing recovery paths, configuration/deployment identities, bypass/force paths, and failure cleanup. Every stated invariant must name the surfaces that preserve it.
169450
+ 4. Map every ledger row to concrete File Scope entries, dependency-ordered implementation steps, and verification. Each feature-bearing step must name specific automated test scenarios with the input/state, action or ordering, and expected observable result; helper-only tests do not prove production reachability.
169451
+ 5. Keep scope disciplined. Reuse current architecture and documented patterns unless the reporter contract requires a redesign. Put optional cleanup and adjacent ideas outside the active steps.
169452
+ 6. Before persisting PROMPT.md, perform a fresh holistic completeness pass across the whole ledger. Try to disprove the plan by checking referenced paths and patterns, missing consumers, contradictory steps, uncovered failure orderings, and acceptance criteria without tests. Fix all gaps in one pass.
169453
+
169454
+ On a revision, treat the cumulative revision ledger as durable decisions unless a later entry explicitly supersedes one: preserve resolved items, address every unresolved item surgically, and rerun the complete procedure instead of checking only the latest comment.`;
169455
+ var FAST_PLANNING_COMPLETENESS_POLICY = `## Fast Planning Completeness Check
169456
+
169457
+ Before writing PROMPT.md, build a compact internal ledger from the Original Description, user comments, project rules, and acceptance outcomes. Inspect the real production callers/consumers, persistence or recovery paths, and nearby tests before choosing File Scope. For stateful or concurrent work, enumerate every participant plus both relevant orderings and failure cleanup. Map each requirement to a concrete step, file, and automated test scenario, then reread the whole plan once for missing surfaces, contradictions, and unproved outcomes. On revision, preserve prior decisions and address the complete cumulative ledger, not only the latest note.`;
169458
+ var PLAN_REVIEW_COMPLETENESS_POLICY = `## Mandatory Plan Review Procedure
169459
+
169460
+ Apply this procedure to plan/spec reviews only. Code reviews use their dedicated procedure.
169461
+
169462
+ Before choosing a verdict:
169463
+
169464
+ 1. Build one **review ledger** for the entire PROMPT.md: Original Description and user comments; Mission and Completion Criteria; Surface Enumeration and Symptom Verification when required; every implementation step, File Scope entry, dependency, risk, and test/verification promise.
169465
+ 2. Complete the full review before reporting. Check coherence and requirement traceability, feasibility against the current repository, scope discipline, execution ordering, and verification quality. When relevant, also inspect security/data integrity, state transitions, concurrency orderings, deployment/configuration boundaries, recovery competitors, and force/bypass paths.
169466
+ 3. Review at specification altitude. Block when a required behavior, surface, ordering, safety constraint, or proof is missing or the stated approach cannot work. Keep optional implementation detail, wording polish, and nonessential improvements advisory.
169467
+ 4. If REVISE is necessary, batch **all independently discoverable blocking findings** into this one verdict; do not stop after the first defect. Give each blocker a stable ID, cite the affected section or repository evidence, and state the concrete PROMPT.md correction. Put advisory observations in a separate list.
169468
+ 5. On re-review, use the supplied prior-review ledger as a decision primer. Verify every prior blocker, do not re-raise resolved or rejected semantic duplicates, and preserve accepted decisions. A newly blocking finding must say whether the revision introduced it, which prior blocker genuinely masked it, or why it is independently delivery-blocking for correctness, security, data safety, or executability. Record an earlier reviewer miss explicitly; never demote a critical defect merely because it was missed before.
169469
+ 6. After any same-session PROMPT.md edit, distrust the edit: reread the complete artifact, rebuild the ledger, and perform a fresh holistic pass before APPROVE.
169470
+
169471
+ APPROVE when the plan is executable and verifiable, not when it is cosmetically perfect. If returning REVISE, the verdict notes must contain the complete blocking checklist because those notes are the durable input to the next planning round.`;
169472
+
169432
169473
  // ../core/src/agents/agent-prompts.ts
169433
169474
  var FUSION_RUNTIME_SELF_AWARENESS = `## Runtime Self-Awareness
169434
169475
 
@@ -169635,6 +169676,8 @@ The tool prevents your session from being killed by the inactivity watchdog duri
169635
169676
  - If a verification command times out, do NOT blindly retry \u2014 investigate. Check for hung subprocesses, infinite test loops, or tests waiting on missing dependencies. Use \`node_modules/.modules.yaml\` presence to confirm bootstrap.`;
169636
169677
  var FAST_TRIAGE_PROMPT_TEXT = `You are a task specification agent for "fn". This task is running in **fast mode**.
169637
169678
 
169679
+ ${FAST_PLANNING_COMPLETENESS_POLICY}
169680
+
169638
169681
  Write a lean, executable PROMPT.md quickly. Preserve safety gates, but skip heavyweight ceremony, review scoring, and proactive subtask analysis.
169639
169682
 
169640
169683
  ## Fast-mode priorities
@@ -169643,7 +169686,7 @@ Write a lean, executable PROMPT.md quickly. Preserve safety gates, but skip heav
169643
169686
  - Preserve required safety sections for bugs, workflow routing, forensic tasks, and decision-only work.
169644
169687
 
169645
169688
  ## Duplicate check
169646
- Before writing a spec, call \`fn_task_list\` for active work, then call \`fn_task_search\` with 2-4 targeted keyword phrases from the title/description, such as file paths, symptoms, and symbols. For any likely match in \`done\` or \`archived\`, call \`fn_task_show\` and inspect it before deciding. If an existing task covers the same work, do not write a spec \u2014 but still write PROMPT.md, with its entire contents being the single line \`DUPLICATE: {existing-task-id}\` and nothing else. That file is how the duplicate is recorded; announcing it only in your reply leaves no plan behind and re-plans the task in a loop.
169689
+ Before writing a spec, call \`fn_task_list\` for active work, then call \`fn_task_search\` with \`includeDone: false\` and \`includeArchived: false\` for 2-4 targeted keyword phrases from the title/description, such as file paths, symptoms, and symbols. Do not search completed or archived work for duplicate candidates. When an active match is a duplicate, do not write a spec \u2014 but still write PROMPT.md, with its entire contents being the single line \`DUPLICATE: {existing-task-id}\` and nothing else. That file is how the duplicate is recorded; announcing it only in your reply leaves no plan behind and re-plans the task in a loop.
169647
169690
 
169648
169691
  ## Required PROMPT.md shape
169649
169692
  Write PROMPT.md with Original Description, Before \u2192 After Transformation, Mission, Dependencies, Context to Read First, File Scope, Steps, Documentation Requirements, Completion Criteria, Git Commit Convention, and Do NOT. Put \`## Original Description\` immediately after the title/\`Created\`/\`Size\` metadata with the operator's original task description copied **verbatim** (do not paraphrase). Put \`## Before \u2192 After Transformation\` next, before \`## Mission\`, with concise Before/After bullets: current state, target state, why it satisfies the user's request at a glance. In \`## Steps\`, every executable heading MUST use \`### Step N: <name>\` (e.g. \`### Step 1: Preflight\`). Do not write bare \`### Preflight\` / \`### Implementation\` headings, and do not add review-level, triage subtask, or proactive subtask headings.
@@ -169685,6 +169728,8 @@ If the requested outcome is only to decide, route, or coordinate work, include \
169685
169728
  Write PROMPT.md directly and stop. Do not call \`fn_review_spec()\`; workflow Plan Review is the single optional plan review gate before execution.`;
169686
169729
  var TRIAGE_PROMPT_TEXT = `You are a task specification agent for "fn", an AI-orchestrated task board.
169687
169730
 
169731
+ ${PLANNING_COMPLETENESS_POLICY}
169732
+
169688
169733
  ## Your Role
169689
169734
  You are the specification quality gate for implementation success.
169690
169735
  Your job: take a rough task description and produce a fully specified PROMPT.md that another AI agent can execute autonomously in a fresh context with zero memory of this conversation.
@@ -169909,9 +169954,9 @@ Verified facts about this codebase's storage \u2014 cite these correctly so Plan
169909
169954
  - New Postgres migrations must be **registered explicitly** in \`packages/core/src/postgres/schema-applier.ts\` (version constant + bookkeeping check); a \`.sql\` file dropped in the migrations dir that is not wired there silently never runs.
169910
169955
 
169911
169956
  ## Duplicate check
169912
- Before writing a spec, first call \`fn_task_list\` to see active tasks, then call \`fn_task_search\` with 2-4 distinct keyword phrases from the task title and description (for example file paths, error symptoms, and symbol names).
169913
- For any likely match in \`done\` or \`archived\`, call \`fn_task_show\` to inspect details before deciding.
169914
- If a task already covers the same work (even if worded differently), do not write a spec.
169957
+ Before writing a spec, first call \`fn_task_list\` to see active tasks, then call \`fn_task_search\` with \`includeDone: false\` and \`includeArchived: false\` for 2-4 distinct keyword phrases from the task title and description (for example file paths, error symptoms, and symbol names).
169958
+ Do not search completed or archived work for duplicate candidates.
169959
+ If an actionable task already covers the same work (even if worded differently), do not write a spec.
169915
169960
  Instead you MUST still write PROMPT.md, with its ENTIRE contents being this one line and nothing else:
169916
169961
  \`DUPLICATE: {existing-task-id}\`
169917
169962
  Writing that file IS how you report the duplicate. Reporting it only in your reply is not recorded:
@@ -169942,7 +169987,7 @@ Workflow policy can disable proactive oversized-task splitting for operators who
169942
169987
  ## Triage tools
169943
169988
  You have these extra tools during triage:
169944
169989
  - \`fn_task_list\` \u2014 list existing active tasks
169945
- - \`fn_task_search\` \u2014 keyword search across tasks, including done and archived tasks
169990
+ - \`fn_task_search\` \u2014 keyword search across active tasks by default; history is opt-in for non-duplicate research
169946
169991
  - \`fn_task_show\` \u2014 inspect a task and its PROMPT.md
169947
169992
  - \`fn_task_create\` \u2014 create a child/follow-up task while triaging
169948
169993
  - \`fn_task_document_write\` \u2014 save a planning document (e.g., key="plan")
@@ -170169,20 +170214,6 @@ Concrete examples:
170169
170214
  - [Optional improvements, not blocking]
170170
170215
  \`\`\`
170171
170216
 
170172
- ## Spec / Plan Review Convergence
170173
-
170174
- Specs and pre-execution Plan Review share this gate. Prefer **APPROVE** / **APPROVE_WITH_NOTES** when the plan is executable enough for an agent to implement. Put optional polish only under **Suggestions**.
170175
-
170176
- When you must **REVISE**:
170177
- - List each blocking issue as a concrete PROMPT.md edit (which section, what to add/change/remove).
170178
- - Do not demand a full rewrite unless the approach is fundamentally wrong (**RETHINK**).
170179
- - Prefer fixing local PROMPT.md defects in-session when you have write tools, then **APPROVE**, instead of bouncing the task through another full replan cycle.
170180
-
170181
- **Converging on re-review (when the request includes your prior feedback + a Plan Review attempt number):**
170182
- - This is a spec you already reviewed. VERIFY each issue you previously raised was addressed. REVISE only for (a) a PRIOR blocking issue still unresolved, or (b) a genuinely NEW problem THIS revision introduced.
170183
- - Do NOT introduce a new blocking issue that ALSO applied to the version you previously reviewed \u2014 that is your own earlier miss. Record it under **Suggestions**, not REVISE.
170184
- - **Severity ratchet at attempt 3+:** gate ONLY on \`critical\` (delivery-blocking) issues. Downgrade lone \`important\`/\`minor\` spec-wording nits to **Suggestions** and APPROVE. Rationale: the executor and downstream code review are later gates \u2014 a spec need not be perfect to be executable, only executable.
170185
-
170186
170217
  ## Spec Review \u2014 Undersplit Task Detection
170187
170218
 
170188
170219
  When reviewing specs, assess whether the task should have been broken into subtasks. The bar for splitting is high \u2014 most tasks should remain whole. Coordination overhead (worktrees, dependency wiring, merge sequencing) is real, so splitting must clearly pay for itself.
@@ -170830,6 +170861,22 @@ function browserVerificationOptionalGroupNode(column, options = {}) {
170830
170861
  };
170831
170862
  }
170832
170863
 
170864
+ // ../core/src/agents/code-review-policy.ts
170865
+ var CODE_REVIEW_COMPLETENESS_POLICY = `## Mandatory Code Review Procedure
170866
+
170867
+ Apply this procedure to code reviews only. Plan/spec reviews use their dedicated criteria below.
170868
+
170869
+ Before choosing a verdict:
170870
+
170871
+ 1. Build a **requirements ledger** from PROMPT.md. For every Mission outcome, Completion Criterion, relevant \`## Surface Enumeration\` item, and \`## Symptom Verification\` assertion, identify both implementation evidence and test evidence. A missing or partial required row is REVISE.
170872
+ 2. Trace each changed behavior from its **real production entry point** and selector through the changed helper to its consumers. A helper-only unit test does not prove that production can reach the new branch.
170873
+ 3. For bug fixes, locate an automated test that reproduces the exact reported failure and asserts it is gone across the enumerated surfaces. Green builds, nearby unit tests, and synthetic state injection alone are insufficient.
170874
+ 4. For persistence, lifecycle, and concurrency changes, verify that evidence belongs to the **current state, version, or planning episode**; every read-check-write path is atomic, locked, or CAS-protected; all mutation surfaces preserve the invariant; waits and locks are bounded and cleanup-safe; and a production-shaped integration test covers both relevant orderings.
170875
+ 5. For route or state changes, inspect all affected UI, API, CLI, and agent consumers plus paired success/failure or approve/reject paths for contract parity.
170876
+ 6. Before APPROVE, perform a fresh adversarial validation pass: try to disprove each completed ledger row by reading the real caller, guard, consumer, and test. Cite \`file:line\` for every blocker and name the exact missing proof.
170877
+
170878
+ APPROVE only when every required ledger row has implementation and test evidence.`;
170879
+
170833
170880
  // ../core/src/workflows/builtin-code-review-group.ts
170834
170881
  var CODE_REVIEW_GROUP_ID = "code-review";
170835
170882
  var CODE_REVIEW_STEP_NODE_ID = "code-review-step";
@@ -170849,6 +170896,8 @@ var CODE_REVIEW_PROMPT = `You are a senior code reviewer. Review the task's diff
170849
170896
  5. **Error handling** \u2014 swallowed errors, unhandled rejections/exceptions, missing validation at trust boundaries, misleading error messages.
170850
170897
  6. **Contract / signature changes** \u2014 changed function/exported-type signatures, API request/response shapes, or serialization that breaks existing callers.
170851
170898
 
170899
+ ${CODE_REVIEW_COMPLETENESS_POLICY}
170900
+
170852
170901
  Be specific: cite \`file:line\` for every finding and explain the concrete failure it causes.
170853
170902
 
170854
170903
  ## Output Requirements
@@ -170968,12 +171017,14 @@ var PLAN_REVIEW_PROMPT = `You are a senior plan reviewer. Review the task's PROM
170968
171017
  4. **Verification quality** \u2014 absent or weak tests/checks for the behavior being changed.
170969
171018
  5. **Risk callouts** \u2014 migrations, data-loss paths, external integrations, secrets, or plugin/runtime dependencies that need explicit handling.
170970
171019
 
171020
+ ${PLAN_REVIEW_COMPLETENESS_POLICY}
171021
+
170971
171022
  Be specific: cite the plan section or file path for every finding and explain the concrete correction.
170972
171023
 
170973
171024
  ## Output Requirements
170974
171025
  - APPROVE: the plan is ready for execution.
170975
171026
  - APPROVE_WITH_NOTES: execution may proceed, but include non-blocking advisory notes.
170976
- - REVISE: the plan should be corrected before execution; include the missing or wrong requirement and the needed change.
171027
+ - REVISE: the plan should be corrected before execution; include every blocking finding and needed change in the JSON notes, not only in preceding prose.
170977
171028
  - Final output: output exactly one trailing JSON object on the final line (no markdown fences, no surrounding prose):
170978
171029
  {"verdict":"APPROVE|APPROVE_WITH_NOTES|REVISE","notes":"..."}`;
170979
171030
  function planReviewOptionalGroupNode(column, options = {}) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/whatsapp-chat",
3
- "version": "0.1.52-beta.0",
3
+ "version": "0.1.52-beta.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runfusion/fusion",
3
- "version": "0.75.0-beta.0",
3
+ "version": "0.75.0-beta.2",
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",
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./mermaid.core-BMcqO-oY.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as t,C as e}from"./chunk-727SXJPM-B9loHJy3.js";import{_ as i}from"./mermaid.core-BMcqO-oY.js";import"./vendor-reactflow-BlIeoTu4.js";import"./chunk-FMBD7UC4-Buu3h7wx.js";import"./chunk-ND2GUHAM-DN_GDbIs.js";import"./chunk-55IACEB6-Cl7bhvca.js";import"./chunk-2J33WTMH-bcODs8jt.js";import"./index-DTimvpMD.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var k={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{k as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as t,C as e}from"./chunk-727SXJPM-B9loHJy3.js";import{_ as i}from"./mermaid.core-BMcqO-oY.js";import"./vendor-reactflow-BlIeoTu4.js";import"./chunk-FMBD7UC4-Buu3h7wx.js";import"./chunk-ND2GUHAM-DN_GDbIs.js";import"./chunk-55IACEB6-Cl7bhvca.js";import"./chunk-2J33WTMH-bcODs8jt.js";import"./index-DTimvpMD.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var k={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{k as diagram};