@runfusion/fusion 0.77.0-beta.3 → 0.77.0-beta.5

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 (179) hide show
  1. package/dist/bin.js +13158 -10683
  2. package/dist/child-process-worker.js +9200 -6239
  3. package/dist/client/.vite/manifest.json +301 -274
  4. package/dist/client/assets/{AgentDetailView-D-mPbGXe.js → AgentDetailView-CSK_Rnlk.js} +3 -3
  5. package/dist/client/assets/{AgentPermissionPolicyEditor-Bq3z2QY0.js → AgentPermissionPolicyEditor-kG44Adcm.js} +1 -1
  6. package/dist/client/assets/{AgentsView-CYg6b9n0.js → AgentsView-ClKwKWnU.js} +4 -4
  7. package/dist/client/assets/ChatView-DoOqgkPX.js +13 -0
  8. package/dist/client/assets/{CommandCenter-DDCbSURT.js → CommandCenter-CJxvPbgn.js} +3 -3
  9. package/dist/client/assets/{DevServerView-DJ459OYL.js → DevServerView-C4nyLONX.js} +1 -1
  10. package/dist/client/assets/{DirectoryPicker-ClOKp7d1.js → DirectoryPicker-BIvXWIB5.js} +1 -1
  11. package/dist/client/assets/DocumentsView-DH_aZysM.js +1 -0
  12. package/dist/client/assets/{EvalsView-DGJFQc1W.js → EvalsView-klRK-GJQ.js} +1 -1
  13. package/dist/client/assets/{ExperimentalAgentOnboardingModal-CMy3zvnk.js → ExperimentalAgentOnboardingModal-CgBmukIm.js} +1 -1
  14. package/dist/client/assets/{GoalsView-D-z3Rf4g.js → GoalsView-ysh3X2x6.js} +1 -1
  15. package/dist/client/assets/{InsightsView-By1AFGbM.js → InsightsView-BbMjCu7J.js} +3 -3
  16. package/dist/client/assets/MemoryView-B3IgA8Bx.js +3 -0
  17. package/dist/client/assets/{PiExtensionsManager-_8u94B1u.js → PiExtensionsManager-CZlIw7C3.js} +1 -1
  18. package/dist/client/assets/PluginManager-vy0YZ2Nx.js +1 -0
  19. package/dist/client/assets/{PullRequestView-NkCEKKpG.js → PullRequestView-DhhsJV8I.js} +2 -2
  20. package/dist/client/assets/ReportModal-CQMn4i1y.js +21 -0
  21. package/dist/client/assets/ReportModal-lzN_xrnM.css +1 -0
  22. package/dist/client/assets/{ResearchView-BCxXqB8F.js → ResearchView-CVwfs4l3.js} +2 -2
  23. package/dist/client/assets/{SecretsView-CxK0XDc2.js → SecretsView-CrJfHle9.js} +1 -1
  24. package/dist/client/assets/{SessionTerminal-CuVsOYc8.js → SessionTerminal-BRI8W1-G.js} +1 -1
  25. package/dist/client/assets/{SettingsModal-BtV1tIIf.js → SettingsModal-B6U5Umru.js} +1 -1
  26. package/dist/client/assets/SettingsModal-C5ic1ls7.css +1 -0
  27. package/dist/client/assets/SettingsModal-h1A_aFqD.js +21 -0
  28. package/dist/client/assets/{SettingsTextareaRow-YR4pGawU.js → SettingsTextareaRow-O7-u9uMC.js} +1 -1
  29. package/dist/client/assets/SetupWizardModal-nXfJp8cA.js +2 -0
  30. package/dist/client/assets/{SkillsView-B4Jc91WM.js → SkillsView-CoWAjvWU.js} +1 -1
  31. package/dist/client/assets/{WorkflowNodeEditor-DGtYlSHs.js → WorkflowNodeEditor-BFMM3RF_.js} +2 -2
  32. package/dist/client/assets/{agent-import-generation-CHAXFtOA.js → agent-import-generation-BqDmtTur.js} +1 -1
  33. package/dist/client/assets/{agentsOrgChartLayout-DsahEyq7.js → agentsOrgChartLayout-C4cLqlV6.js} +1 -1
  34. package/dist/client/assets/app-BBSLJDbV.js +13 -0
  35. package/dist/client/assets/app-BKwOvuxE.js +5 -0
  36. package/dist/client/assets/app-Bvr57EZQ.js +5 -0
  37. package/dist/client/assets/app-C_PTWuI1.js +13 -0
  38. package/dist/client/assets/app-DKx18PHE.js +13 -0
  39. package/dist/client/assets/app-DRW5hIgr.js +13 -0
  40. package/dist/client/assets/app-DwvelD-n.js +13 -0
  41. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BKJBR8ob.js → architectureDiagram-3BPJPVTR-CdxcwdRe.js} +1 -1
  42. package/dist/client/assets/{blockDiagram-GPEHLZMM-CqpNEYwI.js → blockDiagram-GPEHLZMM-CfQrRfHR.js} +1 -1
  43. package/dist/client/assets/{c4Diagram-AAUBKEIU-CouyKoYs.js → c4Diagram-AAUBKEIU-Cx7-2SOm.js} +1 -1
  44. package/dist/client/assets/channel-B4WN1jC_.js +1 -0
  45. package/dist/client/assets/{chunk-2J33WTMH-WHWSsNaC.js → chunk-2J33WTMH-D8jvgP3M.js} +1 -1
  46. package/dist/client/assets/{chunk-4BX2VUAB-B-EVACQc.js → chunk-4BX2VUAB-B5tBx_s_.js} +1 -1
  47. package/dist/client/assets/{chunk-55IACEB6-CVvNjEpv.js → chunk-55IACEB6-C-F-HQ5Z.js} +1 -1
  48. package/dist/client/assets/{chunk-727SXJPM-CV4EKLRh.js → chunk-727SXJPM-BP8Ln-8C.js} +1 -1
  49. package/dist/client/assets/{chunk-AQP2D5EJ-DtDpuURf.js → chunk-AQP2D5EJ-DMnTmRmn.js} +1 -1
  50. package/dist/client/assets/{chunk-FMBD7UC4-DPejtS21.js → chunk-FMBD7UC4-D_YdfnNc.js} +1 -1
  51. package/dist/client/assets/{chunk-ND2GUHAM-DGDxBRA_.js → chunk-ND2GUHAM-CULXyuXq.js} +1 -1
  52. package/dist/client/assets/{chunk-QZHKN3VN-D2k1MIuX.js → chunk-QZHKN3VN-CT1BWEJL.js} +1 -1
  53. package/dist/client/assets/classDiagram-4FO5ZUOK-CKE8RSOv.js +1 -0
  54. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CKE8RSOv.js +1 -0
  55. package/dist/client/assets/{cose-bilkent-S5V4N54A-Cr6PW7Dk.js → cose-bilkent-S5V4N54A-M-3DXa6e.js} +1 -1
  56. package/dist/client/assets/{dagre-BM42HDAG-QKrqYGWy.js → dagre-BM42HDAG-Bsiqvroz.js} +1 -1
  57. package/dist/client/assets/{dashboard-view-BQRwsBoj.js → dashboard-view-BEBh_Ei5.js} +1 -1
  58. package/dist/client/assets/{dashboard-view-BcNU4vFB.js → dashboard-view-Bo_gFjdO.js} +1 -1
  59. package/dist/client/assets/{dashboard-view-CkPDyljq.js → dashboard-view-CnFFG3cW.js} +1 -1
  60. package/dist/client/assets/{dashboard-view-BksOkReD.js → dashboard-view-DAHn20ph.js} +1 -1
  61. package/dist/client/assets/{diagram-2AECGRRQ-BBFXrRQl.js → diagram-2AECGRRQ-CZiHoXo5.js} +1 -1
  62. package/dist/client/assets/{diagram-5GNKFQAL-_T4nM0jp.js → diagram-5GNKFQAL-BoJVz4Or.js} +1 -1
  63. package/dist/client/assets/{diagram-KO2AKTUF-BAKmsx_j.js → diagram-KO2AKTUF-DivGQuAL.js} +1 -1
  64. package/dist/client/assets/{diagram-LMA3HP47-Xdsdd6Gx.js → diagram-LMA3HP47-DkMK7OJp.js} +1 -1
  65. package/dist/client/assets/{diagram-OG6HWLK6-tIHxhnE8.js → diagram-OG6HWLK6-DFFvRcpW.js} +1 -1
  66. package/dist/client/assets/{erDiagram-TEJ5UH35-HZSbfe0g.js → erDiagram-TEJ5UH35--217vrom.js} +1 -1
  67. package/dist/client/assets/{flowDiagram-I6XJVG4X-C4O3r0DX.js → flowDiagram-I6XJVG4X-CQgWO3xf.js} +1 -1
  68. package/dist/client/assets/{folder-open-15UiPjYb.js → folder-open-DR6cRcNR.js} +1 -1
  69. package/dist/client/assets/{ganttDiagram-6RSMTGT7-DGsKKMEu.js → ganttDiagram-6RSMTGT7-BjDMUrS3.js} +1 -1
  70. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-BY4kgtHp.js → gitGraphDiagram-PVQCEYII-gKUcDnln.js} +1 -1
  71. package/dist/client/assets/index-Dki2LBAp.css +1 -0
  72. package/dist/client/assets/index-oxnX59eO.js +2774 -0
  73. package/dist/client/assets/{infoDiagram-5YYISTIA-lJBWxF8I.js → infoDiagram-5YYISTIA-BA91T8S5.js} +1 -1
  74. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CrE_q16o.js → ishikawaDiagram-YF4QCWOH-0BY5xe-c.js} +1 -1
  75. package/dist/client/assets/{journeyDiagram-JHISSGLW-9V42jgFW.js → journeyDiagram-JHISSGLW-B_OwenbQ.js} +1 -1
  76. package/dist/client/assets/{kanban-definition-UN3LZRKU-B_T-7Vyf.js → kanban-definition-UN3LZRKU-GLabUTKp.js} +1 -1
  77. package/dist/client/assets/{mermaid.core-CwJ7S3PS.js → mermaid.core-BXo4rxYI.js} +4 -4
  78. package/dist/client/assets/{mindmap-definition-RKZ34NQL-MYNSgM6G.js → mindmap-definition-RKZ34NQL-DZl6LPoE.js} +1 -1
  79. package/dist/client/assets/{pieDiagram-4H26LBE5-CtT-wbYj.js → pieDiagram-4H26LBE5-DtHq-4py.js} +1 -1
  80. package/dist/client/assets/pixelify-sans-cyrillic-400-normal-DfOZNMlW.woff +0 -0
  81. package/dist/client/assets/pixelify-sans-latin-400-normal-DLrIX9QE.woff2 +0 -0
  82. package/dist/client/assets/pixelify-sans-latin-400-normal-JapMNN6Z.woff +0 -0
  83. package/dist/client/assets/pixelify-sans-latin-ext-400-normal-BkfTUL4s.woff +0 -0
  84. package/dist/client/assets/pixelify-sans-latin-ext-400-normal-DdH6zlBQ.woff2 +0 -0
  85. package/dist/client/assets/{puzzle-CXdFNN8H.js → puzzle-OVm-I1L4.js} +1 -1
  86. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-3klC5x4k.js → quadrantDiagram-W4KKPZXB-BdjXhd5d.js} +1 -1
  87. package/dist/client/assets/{requirementDiagram-4Y6WPE33-CHfFrsBL.js → requirementDiagram-4Y6WPE33-BoFVjELN.js} +1 -1
  88. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Dtktw7Dy.js → sankeyDiagram-5OEKKPKP-B0qyJh-P.js} +1 -1
  89. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CuXPMjTU.js → sequenceDiagram-3UESZ5HK-ByY62Eqp.js} +1 -1
  90. package/dist/client/assets/{shield-alert-D9xqzJwR.js → shield-alert-CDy69fl7.js} +1 -1
  91. package/dist/client/assets/{standing-instructions-template-CcpV_LRP.js → standing-instructions-template-BsnnRlwm.js} +2 -2
  92. package/dist/client/assets/{stateDiagram-AJRCARHV-Bj_rDJwQ.js → stateDiagram-AJRCARHV-CwJ-_Phi.js} +1 -1
  93. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-D-YYF-kX.js → stateDiagram-v2-BHNVJYJU-Cfvhq8mV.js} +1 -1
  94. package/dist/client/assets/{timeline-definition-PNZ67QCA-DXalwFMD.js → timeline-definition-PNZ67QCA-Co8VfGN9.js} +1 -1
  95. package/dist/client/assets/{upload-CWVc30BQ.js → upload-CkqDbEeE.js} +1 -1
  96. package/dist/client/assets/{useDiscoveredSkillsCache-D2M95Nn0.js → useDiscoveredSkillsCache-BHUasRiZ.js} +1 -1
  97. package/dist/client/assets/{users-q_-iLqv9.js → users-B8DkpbXD.js} +1 -1
  98. package/dist/client/assets/{vennDiagram-CIIHVFJN-0-aTlrbe.js → vennDiagram-CIIHVFJN-XSJteQrL.js} +1 -1
  99. package/dist/client/assets/{wardley-L42UT6IY-Bz_e_5wx.js → wardley-L42UT6IY-Btc0FRfF.js} +1 -1
  100. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DsQu4YnA.js → wardleyDiagram-YWT4CUSO--IcDNmrf.js} +1 -1
  101. package/dist/client/assets/{xychartDiagram-2RQKCTM6-K6GQdwVG.js → xychartDiagram-2RQKCTM6-CZW93G6X.js} +1 -1
  102. package/dist/client/index.html +4 -4
  103. package/dist/client/theme-data.css +183 -1
  104. package/dist/client/version.json +1 -1
  105. package/dist/droid-cli/package.json +1 -1
  106. package/dist/extension.js +10390 -7118
  107. package/dist/migrations/0000_initial.sql +3 -0
  108. package/dist/migrations/0061_fn_066_activity_log_task_id_index.sql +7 -0
  109. package/dist/migrations/0062_remove_task_subtask_splitting.sql +2 -0
  110. package/dist/migrations/0063_fn_090_ai_merge_review_reconciliation.sql +2 -0
  111. package/dist/migrations/0064_fn_094_task_repository_scope.sql +2 -0
  112. package/dist/pi-claude-cli/package.json +1 -1
  113. package/dist/pi-claude-cli/src/__tests__/event-bridge.test.ts +29 -1
  114. package/dist/pi-claude-cli/src/event-bridge.ts +10 -4
  115. package/dist/plugin-sdk/index.d.ts +301 -189
  116. package/dist/plugin-sdk/index.js +45 -105
  117. package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +47 -106
  118. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  119. package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +47 -106
  120. package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
  121. package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +45 -105
  122. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  123. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +45 -105
  124. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  125. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +45 -105
  126. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  127. package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +45 -105
  128. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  129. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +47 -106
  130. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  131. package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +47 -106
  132. package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
  133. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +45 -105
  134. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  135. package/dist/plugins/fusion-plugin-linear-import/bundled.js +45 -105
  136. package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
  137. package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +47 -106
  138. package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
  139. package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +45 -105
  140. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  141. package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +45 -105
  142. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  143. package/dist/plugins/fusion-plugin-quality/bundled.js +45 -105
  144. package/dist/plugins/fusion-plugin-quality/package.json +1 -1
  145. package/dist/plugins/fusion-plugin-reports/bundled.js +45 -105
  146. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  147. package/dist/plugins/fusion-plugin-roadmap/bundled.js +45 -105
  148. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  149. package/dist/plugins/fusion-plugin-todos/bundled.js +45 -105
  150. package/dist/plugins/fusion-plugin-todos/package.json +1 -1
  151. package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +45 -105
  152. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  153. package/package.json +1 -1
  154. package/skill/fusion/SKILL.md +1 -1
  155. package/skill/fusion/references/extension-tools.md +19 -1
  156. package/skill/fusion/references/fusion-capabilities.md +3 -1
  157. package/skill/fusion/references/task-structure.md +1 -1
  158. package/skill/fusion/workflows/specifications.md +2 -2
  159. package/dist/client/assets/ChatView-qnlDeWDu.js +0 -13
  160. package/dist/client/assets/DocumentsView-D3Yb4WqD.js +0 -1
  161. package/dist/client/assets/MemoryView-Dhe8ydZR.js +0 -3
  162. package/dist/client/assets/PluginManager-ByNlw3zN.js +0 -1
  163. package/dist/client/assets/ReportModal-DovuZwdY.js +0 -21
  164. package/dist/client/assets/ReportModal-M3uh98sc.css +0 -1
  165. package/dist/client/assets/SettingsModal-C-tiAvqQ.js +0 -21
  166. package/dist/client/assets/SettingsModal-C0FY8MPW.css +0 -1
  167. package/dist/client/assets/SetupWizardModal-DrbeWku9.js +0 -2
  168. package/dist/client/assets/app-BgpuMvTU.js +0 -13
  169. package/dist/client/assets/app-BlexHhbW.js +0 -13
  170. package/dist/client/assets/app-BsuUOR0P.js +0 -13
  171. package/dist/client/assets/app-DQVOujmO.js +0 -13
  172. package/dist/client/assets/app-DjyTRx1N.js +0 -5
  173. package/dist/client/assets/app-Dniggype.js +0 -13
  174. package/dist/client/assets/app-EV-lyZ0T.js +0 -5
  175. package/dist/client/assets/channel-D7yWYIo9.js +0 -1
  176. package/dist/client/assets/classDiagram-4FO5ZUOK-cuSqS34E.js +0 -1
  177. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-cuSqS34E.js +0 -1
  178. package/dist/client/assets/index-4c8KmZSa.js +0 -2818
  179. package/dist/client/assets/index-Bg6JQgJj.css +0 -1
@@ -5835,6 +5835,7 @@ var tasks = projectSchema.table("tasks", {
5835
5835
  mergerModelId: text("merger_model_id"),
5836
5836
  mergerThinkingLevel: text("merger_thinking_level"),
5837
5837
  mergeRetries: integer("merge_retries"),
5838
+ aiMergeReviewReconciliation: text("ai_merge_review_reconciliation"),
5838
5839
  workflowStepRetries: integer("workflow_step_retries"),
5839
5840
  resumeLimboCount: integer("resume_limbo_count").default(0),
5840
5841
  graphResumeRetryCount: integer("graph_resume_retry_count").default(0),
@@ -5957,7 +5958,8 @@ var tasks = projectSchema.table("tasks", {
5957
5958
  sourceIssueClosedAt: text("source_issue_closed_at"),
5958
5959
  mergeDetails: jsonb("merge_details"),
5959
5960
  workspaceWorktrees: jsonb("workspace_worktrees"),
5960
- breakIntoSubtasks: integer("break_into_subtasks").default(0),
5961
+ // FNXC:RepositoryScope 2026-08-20-23:07: explicit task intent must survive PostgreSQL reads independently of acquired worktrees.
5962
+ repositoryScope: jsonb("repository_scope"),
5961
5963
  noCommitsExpected: integer("no_commits_expected").default(0),
5962
5964
  enabledWorkflowSteps: jsonb("enabled_workflow_steps").default([]),
5963
5965
  modifiedFiles: jsonb("modified_files").default([]),
@@ -8277,7 +8279,8 @@ var centralActivityLog = centralSchema.table("central_activity_log", {
8277
8279
  foreignKey({ columns: [t.projectId], foreignColumns: [projects.id] }).onDelete("cascade"),
8278
8280
  index("idxActivityLogTimestamp").on(t.timestamp),
8279
8281
  index("idxActivityLogType").on(t.type),
8280
- index("idxActivityLogProjectId").on(t.projectId)
8282
+ index("idxActivityLogProjectId").on(t.projectId),
8283
+ index("idxCentralActivityLogTaskIdTimestamp").on(t.taskId, t.timestamp)
8281
8284
  ]);
8282
8285
  var centralSettings = centralSchema.table("central_settings", {
8283
8286
  id: integer("id").primaryKey(),
@@ -8742,7 +8745,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
8742
8745
  import { EventEmitter } from "node:events";
8743
8746
 
8744
8747
  // ../core/src/types/board/board.ts
8745
- var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
8748
+ var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
8746
8749
 
8747
8750
  // ../core/src/types/ui/execution-and-ui.ts
8748
8751
  var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
@@ -8985,6 +8988,15 @@ var DEFAULT_GLOBAL_SETTINGS = {
8985
8988
  opt in before Fusion replaces its own binary and bounces the process under them.
8986
8989
  */
8987
8990
  autoUpdateAndRestart: false,
8991
+ /*
8992
+ FNXC:UpdateAutomation 2026-08-21-02:17:
8993
+ Fresh installations require separate opt-ins for unattended installation and
8994
+ restart. The legacy combined switch remains false and is only a fallback for
8995
+ older persisted settings.
8996
+ */
8997
+ /* FNXC:UpdateAutomation 2026-08-21-02:48: Keep these schema keys unset because defaults merge into effective settings and `undefined` is distinct from explicit false. */
8998
+ autoUpdateEnabled: void 0,
8999
+ autoRestartAfterUpdate: void 0,
8988
9000
  autoReloadOnVersionChange: true,
8989
9001
  githubTrackingDefaultRepo: void 0,
8990
9002
  reportRoadmapDedupeEnabled: void 0,
@@ -8995,6 +9007,13 @@ var DEFAULT_GLOBAL_SETTINGS = {
8995
9007
  gitlabApiBaseUrl: void 0,
8996
9008
  gitlabAuthToken: void 0,
8997
9009
  gitlabAuthTokenType: void 0,
9010
+ jiraEnabled: void 0,
9011
+ jiraBaseUrl: void 0,
9012
+ jiraApiBaseUrl: void 0,
9013
+ jiraAuthEmail: void 0,
9014
+ jiraAuthTokenSecretKey: void 0,
9015
+ jiraAuthTokenSecretScope: void 0,
9016
+ jiraBranchNameTemplate: void 0,
8998
9017
  modelOnboardingComplete: void 0,
8999
9018
  useClaudeCli: void 0,
9000
9019
  useDroidCli: void 0,
@@ -9180,6 +9199,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
9180
9199
  var DEFAULT_PROJECT_SETTINGS = {
9181
9200
  // FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
9182
9201
  maxRecommendationsPerTask: 3,
9202
+ // FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
9203
+ requireTaskRecommendations: false,
9183
9204
  // FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
9184
9205
  recommendationMailboxNoticeEnabled: true,
9185
9206
  globalPause: false,
@@ -9291,6 +9312,11 @@ var DEFAULT_PROJECT_SETTINGS = {
9291
9312
  */
9292
9313
  showCostBadgeOnCards: false,
9293
9314
  /*
9315
+ FNXC:ChatMessageLayout 2026-08-18-20:27:
9316
+ The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
9317
+ */
9318
+ chatMessageLayout: "bubbles",
9319
+ /*
9294
9320
  FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
9295
9321
  Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
9296
9322
  */
@@ -9478,6 +9504,13 @@ var DEFAULT_PROJECT_SETTINGS = {
9478
9504
  gitlabApiBaseUrl: void 0,
9479
9505
  gitlabAuthToken: void 0,
9480
9506
  gitlabAuthTokenType: void 0,
9507
+ jiraEnabled: void 0,
9508
+ jiraBaseUrl: void 0,
9509
+ jiraApiBaseUrl: void 0,
9510
+ jiraAuthEmail: void 0,
9511
+ jiraAuthTokenSecretKey: void 0,
9512
+ jiraAuthTokenSecretScope: void 0,
9513
+ jiraBranchNameTemplate: void 0,
9481
9514
  gitlabCommentOnDone: false,
9482
9515
  gitlabCommentTemplate: void 0,
9483
9516
  gitlabCloseSourceIssueOnDone: false,
@@ -9499,6 +9532,8 @@ var DEFAULT_PROJECT_SETTINGS = {
9499
9532
  not variant-detected and unsupported input, including Japanese, remains English.
9500
9533
  */
9501
9534
  taskDefinitionInInputLanguage: false,
9535
+ /* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
9536
+ taskOutputLanguage: void 0,
9502
9537
  useAiMergeCommitSummary: true,
9503
9538
  // Title-summarizer model lanes stay project-scoped (not moved in U4).
9504
9539
  titleSummarizerProvider: void 0,
@@ -12280,17 +12315,6 @@ var BUILTIN_MOVED_WORKFLOW_SETTINGS = [
12280
12315
  }
12281
12316
  ];
12282
12317
  var BUILTIN_TRIAGE_POLICY_SETTINGS = [
12283
- {
12284
- id: "triageProactiveSubtaskSplittingEnabled",
12285
- name: "Triage proactive subtask splitting",
12286
- type: "boolean",
12287
- default: true,
12288
- /*
12289
- * FNXC:TriagePolicy 2026-07-04-00:00:
12290
- * Operators need a workflow/project policy switch that disables automatic large-task splitting without weakening explicit `breakIntoSubtasks: true` requests. Keep the default enabled to preserve existing triage behavior for workflows that have no stored override.
12291
- */
12292
- description: "Enable automatic large-task splitting guidance during triage. Turn off to split only when breakIntoSubtasks is explicitly requested."
12293
- },
12294
12318
  {
12295
12319
  id: "triageSizeSmallMaxHours",
12296
12320
  name: "Triage size S max hours",
@@ -12312,48 +12336,6 @@ var BUILTIN_TRIAGE_POLICY_SETTINGS = [
12312
12336
  default: 8,
12313
12337
  description: "Upper hour boundary for Size L triage guidance; larger work should split as XL."
12314
12338
  },
12315
- {
12316
- id: "triageSubtaskStepThreshold",
12317
- name: "Triage subtask step threshold",
12318
- type: "number",
12319
- default: 7,
12320
- description: "Implementation-step count above which triage should consider splitting an M/L task."
12321
- },
12322
- {
12323
- id: "triageSubtaskLargeStepSignal",
12324
- name: "Triage large-step signal",
12325
- type: "number",
12326
- default: 9,
12327
- description: "Planned step count that is a broad-scope decomposition signal for Size L tasks."
12328
- },
12329
- {
12330
- id: "triageSubtaskAdditiveStepSignal",
12331
- name: "Triage additive step signal",
12332
- type: "number",
12333
- default: 12,
12334
- description: "Implementation-step count that independently signals possible partitioning."
12335
- },
12336
- {
12337
- id: "triageSubtaskPackageThreshold",
12338
- name: "Triage package/module threshold",
12339
- type: "number",
12340
- default: 3,
12341
- description: "Distinct package/module count above which triage should consider splitting coherent M/L work."
12342
- },
12343
- {
12344
- id: "triageSubtaskFileScopeThreshold",
12345
- name: "Triage file-scope threshold",
12346
- type: "number",
12347
- default: 20,
12348
- description: "File Scope entry count that signals broad work likely needing partitioning."
12349
- },
12350
- {
12351
- id: "triageSubtaskRemediationBatchThreshold",
12352
- name: "Triage remediation batch threshold",
12353
- type: "number",
12354
- default: 30,
12355
- description: "Quantified remediation batch size that strongly signals subsystem partitioning."
12356
- },
12357
12339
  {
12358
12340
  id: "triageNoCommitsDecisionVerbs",
12359
12341
  name: "Triage no-commits decision verbs",
@@ -13138,20 +13120,12 @@ When you plan to list a task in the \`## Dependencies\` section, first call \`fn
13138
13120
  Use what you learn \u2014 file scope, APIs, patterns, completion criteria \u2014 to make the new spec accurate: reference the right paths, avoid conflicting assumptions, and describe what the dependency must deliver before this task starts.
13139
13121
  If the dependency task has no PROMPT.md yet (not yet specified), note that in the Dependencies section.
13140
13122
 
13141
- ## Triage subtask breakdown
13142
- When the task includes \`breakIntoSubtasks: true\`, first decide whether it should be split.
13143
-
13144
- - Split only when the work is meaningfully decomposable into 2-5 independently executable child tasks.
13145
- - If splitting: use the \`fn_task_create\` tool to create child tasks in triage, include clear descriptions and dependencies between them, then stop. Do NOT write a PROMPT.md for the parent task.
13146
- - **CRITICAL \u2014 subtask dependencies:** the parent task is deleted once all subtasks are created. \`dependencies\` on a new subtask may ONLY reference sibling subtasks you have created earlier in this same split (or unrelated existing tasks). **Never depend on the parent task's id.** If a child conceptually "waits for the parent's remaining work", create a sibling subtask that does that work and depend on the sibling instead. The \`fn_task_create\` tool will reject parent-id dependencies with an error.
13147
- - If not splitting: proceed with a normal PROMPT.md specification.
13148
-
13149
- ## Proactive Subtask Breakdown for M/L Tasks
13123
+ ## One-task planning
13150
13124
  <!--
13151
- FNXC:TriagePolicy 2026-07-04-00:00:
13152
- Workflow policy can disable proactive oversized-task splitting for operators who want triage to keep large tasks whole by default. Explicit user-requested \`breakIntoSubtasks: true\` remains governed by the mandatory breakdown section above and must not be weakened by this toggle.
13125
+ FNXC:TriagePlanning 2026-08-20-17:42:
13126
+ Complexity never authorizes replacing a requested task with child tasks. Preserve the original task ID, dependencies, and documents; write one complete, detailed PROMPT.md with focused steps, realistic scope, risks, and quality gates.
13153
13127
  -->
13154
- {{triageProactiveSubtaskSplittingEnabled}}
13128
+ Create independent follow-up tasks only when they are genuinely separate work, never as an automatic decomposition of the task being planned.
13155
13129
 
13156
13130
  ## Triage tools
13157
13131
  You have these extra tools during triage:
@@ -13210,7 +13184,7 @@ This bullet is the planning-side half of the artifact-pipeline contract; keep it
13210
13184
  -->
13211
13185
  - For tasks with a visible UI surface or whose deliverable is visual/media (wireframes, mockups, designs, diagrams, screenshots, screen recordings, HTML prototypes, PDF exports), include an explicit step or checkbox instructing the executor to save each deliverable to disk and register it via \`fn_artifact_register\` (images via \`type="image", path=...\`; recordings via \`type="video", path=...\`; HTML mockups via \`type="document", mimeType="text/html"\` for live gallery previews; PDFs via \`type="document", mimeType="application/pdf", path=...\`) so it appears in the dashboard Artifacts gallery
13212
13186
  - Include a "Do NOT" section with project-appropriate guardrails
13213
- - Size assessment: S (<{{triageSizeSmallMaxHours}}h), M ({{triageSizeSmallMaxHours}}-{{triageSizeMediumMaxHours}}h), L ({{triageSizeMediumMaxHours}}-{{triageSizeLargeMaxHours}}h). Split if XL ({{triageSizeLargeMaxHours}}h+)
13187
+ - Size assessment: S (<{{triageSizeSmallMaxHours}}h), M ({{triageSizeSmallMaxHours}}-{{triageSizeMediumMaxHours}}h), L ({{triageSizeMediumMaxHours}}-{{triageSizeLargeMaxHours}}h+). Keep every requested task as one detailed plan regardless of size.
13214
13188
  - Review level scoring: Blast radius (0-2), Pattern novelty (0-2), Security (0-2), Reversibility (0-2)
13215
13189
  - 0-1 \u2192 Level 0, 2-3 \u2192 Level 1, 4-5 \u2192 Level 2, 6-8 \u2192 Level 3
13216
13190
 
@@ -13225,11 +13199,11 @@ FNXC:WorkflowRouting 2026-06-22-17:24:
13225
13199
  Standard triage must not infer workflow changes from task type. Agents preserve the project default unless the user names or explicitly requests a workflow, or the agent created the task; no-commit decisions use the header marker without automatic workflow selection.
13226
13200
  -->
13227
13201
  ## Workflow Routing
13228
- - Keep the project default workflow (\`{{triageDefaultWorkflowId}}\`) unless the user explicitly requested a specific workflow for this task or subtask, or you created that task yourself.
13202
+ - Keep the project default workflow (\`{{triageDefaultWorkflowId}}\`) unless the user explicitly requested a specific workflow for this task, or you created that task yourself.
13229
13203
  - Do NOT call \`fn_workflow_select\` or pass \`workflow_id\` to \`fn_task_create\` just because a task looks like investigation, audit, research, operational routing/coordination, decision-only work, or standard coding work.
13230
13204
  - When you create a task via \`fn_task_create\` or \`fn_delegate_task\`, you may select that created task's workflow with \`workflow_id\` at create time or \`fn_workflow_select\` afterward; do not move a task you did not create unless the user asked.
13231
13205
  - For decision-only tasks ({{triageNoCommitsDecisionVerbs}}) or other no-code tasks, set \`**No commits expected:** true\` in the PROMPT.md header when the no-commits criteria above are met; this is a header marker only and does not select \`{{triageDecisionOnlyWorkflowId}}\` or any custom investigation workflow by itself.
13232
- - If the user explicitly asks for a workflow, call \`fn_workflow_list\` to discover valid IDs, then use \`fn_workflow_select\` to set the workflow on the current task or pass \`workflow_id\` to \`fn_task_create\` when creating a requested subtask.
13206
+ - If the user explicitly asks for a workflow, call \`fn_workflow_list\` to discover valid IDs, then use \`fn_workflow_select\` to set the workflow on the current task or pass \`workflow_id\` to \`fn_task_create\` when creating requested independent work.
13233
13207
 
13234
13208
  ## Plan Review
13235
13209
 
@@ -13376,45 +13350,12 @@ Concrete examples:
13376
13350
  - **Documentation completeness:** [Must Update / Check If Affected sections present?]
13377
13351
  - **Dangling task-document references:** [No \`.fusion/tasks/<id>/<file>\` path is cited in Context, Steps, or File Scope unless the file exists or is explicitly created as a \`(new)\` artifact in this spec. References to nonexistent task-local artifacts are a blocking REVISE.]
13378
13352
  - **Sizing & review level:** [Size and review level appropriate for the work?]
13379
- - **Subtask breakdown:** [Only flag genuinely oversized specs (12+ implementation steps, OR 5+ truly independent deliverables that could ship separately). Do NOT flag a coherent vertical change just because it touches multiple packages. When borderline, prefer leaving the task whole.]
13380
13353
  - **User comment coverage:** [Were all user comments addressed? Every user comment must be reflected in the spec \u2014 missing coverage is a blocking REVISE]
13381
13354
 
13382
13355
  ### Suggestions
13383
13356
  - [Optional improvements, not blocking]
13384
13357
  \`\`\`
13385
13358
 
13386
- ## Spec Review \u2014 Undersplit Task Detection
13387
-
13388
- 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.
13389
-
13390
- **Default position:** do NOT flag undersplit. Reach for it only when the spec is genuinely oversized.
13391
-
13392
- **Flag as REVISE only when ALL of the following are true:**
13393
- - The spec has 12+ implementation steps, OR contains 5+ clearly independent deliverables that could be shipped separately by different people
13394
- - The deliverables are NOT a coherent vertical change (a single feature touching core + dashboard + tests is coherent \u2014 do not split it)
13395
- - Splitting would produce children that each have \u22654 steps and a clearly distinct scope
13396
-
13397
- If the spec is borderline (under those thresholds, or arguable), put your splitting suggestion in the **Suggestions** section instead of REVISE \u2014 the planner can take it or leave it.
13398
-
13399
- **How to flag an undersplit task (only when the criteria above are met):**
13400
- Say explicitly: "This task should be broken into subtasks because [specific reason]."
13401
- Recommend the number of child tasks (2-5) and what each should cover.
13402
- Instruct the planner to:
13403
- 1. Use the \`fn_task_create\` tool to create 2\u20135 child tasks from the oversized spec
13404
- 2. Do NOT write a parent PROMPT.md \u2014 the parent will be closed automatically after children are created
13405
- (Not write a parent PROMPT.md is also unacceptable.)
13406
- 3. Make each child cover one coherent deliverable with clear scope boundaries
13407
-
13408
- Example REVISE feedback for a genuinely oversized task:
13409
- "This task has 14 steps and contains 4 independent deliverables (engine integration, dashboard UI, CLI command, migration tooling) that could ship separately. Use fn_task_create to split into: (1) engine logic, (2) dashboard UI, (3) CLI integration, (4) migration tooling. Do not write a parent PROMPT."
13410
-
13411
- **Do NOT flag if ANY of these apply:**
13412
- - The spec has 11 or fewer implementation steps
13413
- - Steps are sequential and tightly coupled (e.g., a pipeline where each step depends on the previous)
13414
- - The task is a vertical change touching multiple packages for one coherent feature (typical in this monorepo)
13415
- - The task is a bug fix, regardless of how many files it touches
13416
- - Splitting would create coordination overhead that exceeds the benefit
13417
-
13418
13359
  ## Plan Granularity
13419
13360
 
13420
13361
  When reviewing plans, assess whether the approach achieves the step's OUTCOMES \u2014
@@ -13716,7 +13657,6 @@ submissions to a high bar for correctness, security, and maintainability.
13716
13657
  - **Surface enumeration:** [For bug-fix specs, is \`## Surface Enumeration\` present and does it enumerate the relevant providers/bridges/execution paths, desktop + mobile breakpoints/platforms, empty/undefined/duplicate/populated states, and shared hooks/components/modules/helpers? Missing or incomplete coverage is a blocking REVISE.]
13717
13658
  - **Documentation completeness:** [Must Update / Check If Affected sections present?]
13718
13659
  - **Sizing & review level:** [Size and review level appropriate for the work?]
13719
- - **Subtask breakdown:** [Were complex tasks appropriately split into 2-5 child tasks?]
13720
13660
  - **User comment coverage:** [Were all user comments addressed? Every user comment must be reflected in the spec \u2014 missing coverage is a blocking REVISE]
13721
13661
  - **Security considerations:** [Are security-sensitive areas identified and addressed?]
13722
13662
  - **Edge case coverage:** [Does the spec account for failure modes and boundary conditions?]
@@ -36755,7 +36695,8 @@ function normalizeStreamingDelta(previousText, nextDelta) {
36755
36695
  const previousChar = previousText.slice(-1);
36756
36696
  const nextChar = nextDelta[0] ?? "";
36757
36697
  if (/\s/.test(previousChar) || /\s/.test(nextChar)) return nextDelta;
36758
- if (/[.!?]/.test(previousChar) && /[A-Z0-9"'([]/.test(nextChar)) {
36698
+ const isNumericTokenContinuation = previousChar === "." && /\d/.test(previousText.slice(-2, -1)) && /\d/.test(nextChar);
36699
+ if (!isNumericTokenContinuation && /[.!?]/.test(previousChar) && /[A-Z0-9"'([]/.test(nextChar)) {
36759
36700
  return ` ${nextDelta}`;
36760
36701
  }
36761
36702
  return nextDelta;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/claude-runtime",
3
- "version": "0.1.11-beta.3",
3
+ "version": "0.1.11-beta.5",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -5863,6 +5863,7 @@ var tasks = projectSchema.table("tasks", {
5863
5863
  mergerModelId: text("merger_model_id"),
5864
5864
  mergerThinkingLevel: text("merger_thinking_level"),
5865
5865
  mergeRetries: integer("merge_retries"),
5866
+ aiMergeReviewReconciliation: text("ai_merge_review_reconciliation"),
5866
5867
  workflowStepRetries: integer("workflow_step_retries"),
5867
5868
  resumeLimboCount: integer("resume_limbo_count").default(0),
5868
5869
  graphResumeRetryCount: integer("graph_resume_retry_count").default(0),
@@ -5985,7 +5986,8 @@ var tasks = projectSchema.table("tasks", {
5985
5986
  sourceIssueClosedAt: text("source_issue_closed_at"),
5986
5987
  mergeDetails: jsonb("merge_details"),
5987
5988
  workspaceWorktrees: jsonb("workspace_worktrees"),
5988
- breakIntoSubtasks: integer("break_into_subtasks").default(0),
5989
+ // FNXC:RepositoryScope 2026-08-20-23:07: explicit task intent must survive PostgreSQL reads independently of acquired worktrees.
5990
+ repositoryScope: jsonb("repository_scope"),
5989
5991
  noCommitsExpected: integer("no_commits_expected").default(0),
5990
5992
  enabledWorkflowSteps: jsonb("enabled_workflow_steps").default([]),
5991
5993
  modifiedFiles: jsonb("modified_files").default([]),
@@ -8327,7 +8329,8 @@ var centralActivityLog = centralSchema.table("central_activity_log", {
8327
8329
  foreignKey({ columns: [t.projectId], foreignColumns: [projects.id] }).onDelete("cascade"),
8328
8330
  index("idxActivityLogTimestamp").on(t.timestamp),
8329
8331
  index("idxActivityLogType").on(t.type),
8330
- index("idxActivityLogProjectId").on(t.projectId)
8332
+ index("idxActivityLogProjectId").on(t.projectId),
8333
+ index("idxCentralActivityLogTaskIdTimestamp").on(t.taskId, t.timestamp)
8331
8334
  ]);
8332
8335
  var centralSettings = centralSchema.table("central_settings", {
8333
8336
  id: integer("id").primaryKey(),
@@ -8862,7 +8865,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
8862
8865
  import { EventEmitter } from "node:events";
8863
8866
 
8864
8867
  // ../core/src/types/board/board.ts
8865
- var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
8868
+ var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
8866
8869
 
8867
8870
  // ../core/src/types/ui/execution-and-ui.ts
8868
8871
  var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
@@ -9105,6 +9108,15 @@ var DEFAULT_GLOBAL_SETTINGS = {
9105
9108
  opt in before Fusion replaces its own binary and bounces the process under them.
9106
9109
  */
9107
9110
  autoUpdateAndRestart: false,
9111
+ /*
9112
+ FNXC:UpdateAutomation 2026-08-21-02:17:
9113
+ Fresh installations require separate opt-ins for unattended installation and
9114
+ restart. The legacy combined switch remains false and is only a fallback for
9115
+ older persisted settings.
9116
+ */
9117
+ /* FNXC:UpdateAutomation 2026-08-21-02:48: Keep these schema keys unset because defaults merge into effective settings and `undefined` is distinct from explicit false. */
9118
+ autoUpdateEnabled: void 0,
9119
+ autoRestartAfterUpdate: void 0,
9108
9120
  autoReloadOnVersionChange: true,
9109
9121
  githubTrackingDefaultRepo: void 0,
9110
9122
  reportRoadmapDedupeEnabled: void 0,
@@ -9115,6 +9127,13 @@ var DEFAULT_GLOBAL_SETTINGS = {
9115
9127
  gitlabApiBaseUrl: void 0,
9116
9128
  gitlabAuthToken: void 0,
9117
9129
  gitlabAuthTokenType: void 0,
9130
+ jiraEnabled: void 0,
9131
+ jiraBaseUrl: void 0,
9132
+ jiraApiBaseUrl: void 0,
9133
+ jiraAuthEmail: void 0,
9134
+ jiraAuthTokenSecretKey: void 0,
9135
+ jiraAuthTokenSecretScope: void 0,
9136
+ jiraBranchNameTemplate: void 0,
9118
9137
  modelOnboardingComplete: void 0,
9119
9138
  useClaudeCli: void 0,
9120
9139
  useDroidCli: void 0,
@@ -9300,6 +9319,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
9300
9319
  var DEFAULT_PROJECT_SETTINGS = {
9301
9320
  // FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
9302
9321
  maxRecommendationsPerTask: 3,
9322
+ // FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
9323
+ requireTaskRecommendations: false,
9303
9324
  // FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
9304
9325
  recommendationMailboxNoticeEnabled: true,
9305
9326
  globalPause: false,
@@ -9411,6 +9432,11 @@ var DEFAULT_PROJECT_SETTINGS = {
9411
9432
  */
9412
9433
  showCostBadgeOnCards: false,
9413
9434
  /*
9435
+ FNXC:ChatMessageLayout 2026-08-18-20:27:
9436
+ The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
9437
+ */
9438
+ chatMessageLayout: "bubbles",
9439
+ /*
9414
9440
  FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
9415
9441
  Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
9416
9442
  */
@@ -9598,6 +9624,13 @@ var DEFAULT_PROJECT_SETTINGS = {
9598
9624
  gitlabApiBaseUrl: void 0,
9599
9625
  gitlabAuthToken: void 0,
9600
9626
  gitlabAuthTokenType: void 0,
9627
+ jiraEnabled: void 0,
9628
+ jiraBaseUrl: void 0,
9629
+ jiraApiBaseUrl: void 0,
9630
+ jiraAuthEmail: void 0,
9631
+ jiraAuthTokenSecretKey: void 0,
9632
+ jiraAuthTokenSecretScope: void 0,
9633
+ jiraBranchNameTemplate: void 0,
9601
9634
  gitlabCommentOnDone: false,
9602
9635
  gitlabCommentTemplate: void 0,
9603
9636
  gitlabCloseSourceIssueOnDone: false,
@@ -9619,6 +9652,8 @@ var DEFAULT_PROJECT_SETTINGS = {
9619
9652
  not variant-detected and unsupported input, including Japanese, remains English.
9620
9653
  */
9621
9654
  taskDefinitionInInputLanguage: false,
9655
+ /* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
9656
+ taskOutputLanguage: void 0,
9622
9657
  useAiMergeCommitSummary: true,
9623
9658
  // Title-summarizer model lanes stay project-scoped (not moved in U4).
9624
9659
  titleSummarizerProvider: void 0,
@@ -12392,17 +12427,6 @@ var BUILTIN_MOVED_WORKFLOW_SETTINGS = [
12392
12427
  }
12393
12428
  ];
12394
12429
  var BUILTIN_TRIAGE_POLICY_SETTINGS = [
12395
- {
12396
- id: "triageProactiveSubtaskSplittingEnabled",
12397
- name: "Triage proactive subtask splitting",
12398
- type: "boolean",
12399
- default: true,
12400
- /*
12401
- * FNXC:TriagePolicy 2026-07-04-00:00:
12402
- * Operators need a workflow/project policy switch that disables automatic large-task splitting without weakening explicit `breakIntoSubtasks: true` requests. Keep the default enabled to preserve existing triage behavior for workflows that have no stored override.
12403
- */
12404
- description: "Enable automatic large-task splitting guidance during triage. Turn off to split only when breakIntoSubtasks is explicitly requested."
12405
- },
12406
12430
  {
12407
12431
  id: "triageSizeSmallMaxHours",
12408
12432
  name: "Triage size S max hours",
@@ -12424,48 +12448,6 @@ var BUILTIN_TRIAGE_POLICY_SETTINGS = [
12424
12448
  default: 8,
12425
12449
  description: "Upper hour boundary for Size L triage guidance; larger work should split as XL."
12426
12450
  },
12427
- {
12428
- id: "triageSubtaskStepThreshold",
12429
- name: "Triage subtask step threshold",
12430
- type: "number",
12431
- default: 7,
12432
- description: "Implementation-step count above which triage should consider splitting an M/L task."
12433
- },
12434
- {
12435
- id: "triageSubtaskLargeStepSignal",
12436
- name: "Triage large-step signal",
12437
- type: "number",
12438
- default: 9,
12439
- description: "Planned step count that is a broad-scope decomposition signal for Size L tasks."
12440
- },
12441
- {
12442
- id: "triageSubtaskAdditiveStepSignal",
12443
- name: "Triage additive step signal",
12444
- type: "number",
12445
- default: 12,
12446
- description: "Implementation-step count that independently signals possible partitioning."
12447
- },
12448
- {
12449
- id: "triageSubtaskPackageThreshold",
12450
- name: "Triage package/module threshold",
12451
- type: "number",
12452
- default: 3,
12453
- description: "Distinct package/module count above which triage should consider splitting coherent M/L work."
12454
- },
12455
- {
12456
- id: "triageSubtaskFileScopeThreshold",
12457
- name: "Triage file-scope threshold",
12458
- type: "number",
12459
- default: 20,
12460
- description: "File Scope entry count that signals broad work likely needing partitioning."
12461
- },
12462
- {
12463
- id: "triageSubtaskRemediationBatchThreshold",
12464
- name: "Triage remediation batch threshold",
12465
- type: "number",
12466
- default: 30,
12467
- description: "Quantified remediation batch size that strongly signals subsystem partitioning."
12468
- },
12469
12451
  {
12470
12452
  id: "triageNoCommitsDecisionVerbs",
12471
12453
  name: "Triage no-commits decision verbs",
@@ -13250,20 +13232,12 @@ When you plan to list a task in the \`## Dependencies\` section, first call \`fn
13250
13232
  Use what you learn \u2014 file scope, APIs, patterns, completion criteria \u2014 to make the new spec accurate: reference the right paths, avoid conflicting assumptions, and describe what the dependency must deliver before this task starts.
13251
13233
  If the dependency task has no PROMPT.md yet (not yet specified), note that in the Dependencies section.
13252
13234
 
13253
- ## Triage subtask breakdown
13254
- When the task includes \`breakIntoSubtasks: true\`, first decide whether it should be split.
13255
-
13256
- - Split only when the work is meaningfully decomposable into 2-5 independently executable child tasks.
13257
- - If splitting: use the \`fn_task_create\` tool to create child tasks in triage, include clear descriptions and dependencies between them, then stop. Do NOT write a PROMPT.md for the parent task.
13258
- - **CRITICAL \u2014 subtask dependencies:** the parent task is deleted once all subtasks are created. \`dependencies\` on a new subtask may ONLY reference sibling subtasks you have created earlier in this same split (or unrelated existing tasks). **Never depend on the parent task's id.** If a child conceptually "waits for the parent's remaining work", create a sibling subtask that does that work and depend on the sibling instead. The \`fn_task_create\` tool will reject parent-id dependencies with an error.
13259
- - If not splitting: proceed with a normal PROMPT.md specification.
13260
-
13261
- ## Proactive Subtask Breakdown for M/L Tasks
13235
+ ## One-task planning
13262
13236
  <!--
13263
- FNXC:TriagePolicy 2026-07-04-00:00:
13264
- Workflow policy can disable proactive oversized-task splitting for operators who want triage to keep large tasks whole by default. Explicit user-requested \`breakIntoSubtasks: true\` remains governed by the mandatory breakdown section above and must not be weakened by this toggle.
13237
+ FNXC:TriagePlanning 2026-08-20-17:42:
13238
+ Complexity never authorizes replacing a requested task with child tasks. Preserve the original task ID, dependencies, and documents; write one complete, detailed PROMPT.md with focused steps, realistic scope, risks, and quality gates.
13265
13239
  -->
13266
- {{triageProactiveSubtaskSplittingEnabled}}
13240
+ Create independent follow-up tasks only when they are genuinely separate work, never as an automatic decomposition of the task being planned.
13267
13241
 
13268
13242
  ## Triage tools
13269
13243
  You have these extra tools during triage:
@@ -13322,7 +13296,7 @@ This bullet is the planning-side half of the artifact-pipeline contract; keep it
13322
13296
  -->
13323
13297
  - For tasks with a visible UI surface or whose deliverable is visual/media (wireframes, mockups, designs, diagrams, screenshots, screen recordings, HTML prototypes, PDF exports), include an explicit step or checkbox instructing the executor to save each deliverable to disk and register it via \`fn_artifact_register\` (images via \`type="image", path=...\`; recordings via \`type="video", path=...\`; HTML mockups via \`type="document", mimeType="text/html"\` for live gallery previews; PDFs via \`type="document", mimeType="application/pdf", path=...\`) so it appears in the dashboard Artifacts gallery
13324
13298
  - Include a "Do NOT" section with project-appropriate guardrails
13325
- - Size assessment: S (<{{triageSizeSmallMaxHours}}h), M ({{triageSizeSmallMaxHours}}-{{triageSizeMediumMaxHours}}h), L ({{triageSizeMediumMaxHours}}-{{triageSizeLargeMaxHours}}h). Split if XL ({{triageSizeLargeMaxHours}}h+)
13299
+ - Size assessment: S (<{{triageSizeSmallMaxHours}}h), M ({{triageSizeSmallMaxHours}}-{{triageSizeMediumMaxHours}}h), L ({{triageSizeMediumMaxHours}}-{{triageSizeLargeMaxHours}}h+). Keep every requested task as one detailed plan regardless of size.
13326
13300
  - Review level scoring: Blast radius (0-2), Pattern novelty (0-2), Security (0-2), Reversibility (0-2)
13327
13301
  - 0-1 \u2192 Level 0, 2-3 \u2192 Level 1, 4-5 \u2192 Level 2, 6-8 \u2192 Level 3
13328
13302
 
@@ -13337,11 +13311,11 @@ FNXC:WorkflowRouting 2026-06-22-17:24:
13337
13311
  Standard triage must not infer workflow changes from task type. Agents preserve the project default unless the user names or explicitly requests a workflow, or the agent created the task; no-commit decisions use the header marker without automatic workflow selection.
13338
13312
  -->
13339
13313
  ## Workflow Routing
13340
- - Keep the project default workflow (\`{{triageDefaultWorkflowId}}\`) unless the user explicitly requested a specific workflow for this task or subtask, or you created that task yourself.
13314
+ - Keep the project default workflow (\`{{triageDefaultWorkflowId}}\`) unless the user explicitly requested a specific workflow for this task, or you created that task yourself.
13341
13315
  - Do NOT call \`fn_workflow_select\` or pass \`workflow_id\` to \`fn_task_create\` just because a task looks like investigation, audit, research, operational routing/coordination, decision-only work, or standard coding work.
13342
13316
  - When you create a task via \`fn_task_create\` or \`fn_delegate_task\`, you may select that created task's workflow with \`workflow_id\` at create time or \`fn_workflow_select\` afterward; do not move a task you did not create unless the user asked.
13343
13317
  - For decision-only tasks ({{triageNoCommitsDecisionVerbs}}) or other no-code tasks, set \`**No commits expected:** true\` in the PROMPT.md header when the no-commits criteria above are met; this is a header marker only and does not select \`{{triageDecisionOnlyWorkflowId}}\` or any custom investigation workflow by itself.
13344
- - If the user explicitly asks for a workflow, call \`fn_workflow_list\` to discover valid IDs, then use \`fn_workflow_select\` to set the workflow on the current task or pass \`workflow_id\` to \`fn_task_create\` when creating a requested subtask.
13318
+ - If the user explicitly asks for a workflow, call \`fn_workflow_list\` to discover valid IDs, then use \`fn_workflow_select\` to set the workflow on the current task or pass \`workflow_id\` to \`fn_task_create\` when creating requested independent work.
13345
13319
 
13346
13320
  ## Plan Review
13347
13321
 
@@ -13488,45 +13462,12 @@ Concrete examples:
13488
13462
  - **Documentation completeness:** [Must Update / Check If Affected sections present?]
13489
13463
  - **Dangling task-document references:** [No \`.fusion/tasks/<id>/<file>\` path is cited in Context, Steps, or File Scope unless the file exists or is explicitly created as a \`(new)\` artifact in this spec. References to nonexistent task-local artifacts are a blocking REVISE.]
13490
13464
  - **Sizing & review level:** [Size and review level appropriate for the work?]
13491
- - **Subtask breakdown:** [Only flag genuinely oversized specs (12+ implementation steps, OR 5+ truly independent deliverables that could ship separately). Do NOT flag a coherent vertical change just because it touches multiple packages. When borderline, prefer leaving the task whole.]
13492
13465
  - **User comment coverage:** [Were all user comments addressed? Every user comment must be reflected in the spec \u2014 missing coverage is a blocking REVISE]
13493
13466
 
13494
13467
  ### Suggestions
13495
13468
  - [Optional improvements, not blocking]
13496
13469
  \`\`\`
13497
13470
 
13498
- ## Spec Review \u2014 Undersplit Task Detection
13499
-
13500
- 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.
13501
-
13502
- **Default position:** do NOT flag undersplit. Reach for it only when the spec is genuinely oversized.
13503
-
13504
- **Flag as REVISE only when ALL of the following are true:**
13505
- - The spec has 12+ implementation steps, OR contains 5+ clearly independent deliverables that could be shipped separately by different people
13506
- - The deliverables are NOT a coherent vertical change (a single feature touching core + dashboard + tests is coherent \u2014 do not split it)
13507
- - Splitting would produce children that each have \u22654 steps and a clearly distinct scope
13508
-
13509
- If the spec is borderline (under those thresholds, or arguable), put your splitting suggestion in the **Suggestions** section instead of REVISE \u2014 the planner can take it or leave it.
13510
-
13511
- **How to flag an undersplit task (only when the criteria above are met):**
13512
- Say explicitly: "This task should be broken into subtasks because [specific reason]."
13513
- Recommend the number of child tasks (2-5) and what each should cover.
13514
- Instruct the planner to:
13515
- 1. Use the \`fn_task_create\` tool to create 2\u20135 child tasks from the oversized spec
13516
- 2. Do NOT write a parent PROMPT.md \u2014 the parent will be closed automatically after children are created
13517
- (Not write a parent PROMPT.md is also unacceptable.)
13518
- 3. Make each child cover one coherent deliverable with clear scope boundaries
13519
-
13520
- Example REVISE feedback for a genuinely oversized task:
13521
- "This task has 14 steps and contains 4 independent deliverables (engine integration, dashboard UI, CLI command, migration tooling) that could ship separately. Use fn_task_create to split into: (1) engine logic, (2) dashboard UI, (3) CLI integration, (4) migration tooling. Do not write a parent PROMPT."
13522
-
13523
- **Do NOT flag if ANY of these apply:**
13524
- - The spec has 11 or fewer implementation steps
13525
- - Steps are sequential and tightly coupled (e.g., a pipeline where each step depends on the previous)
13526
- - The task is a vertical change touching multiple packages for one coherent feature (typical in this monorepo)
13527
- - The task is a bug fix, regardless of how many files it touches
13528
- - Splitting would create coordination overhead that exceeds the benefit
13529
-
13530
13471
  ## Plan Granularity
13531
13472
 
13532
13473
  When reviewing plans, assess whether the approach achieves the step's OUTCOMES \u2014
@@ -13828,7 +13769,6 @@ submissions to a high bar for correctness, security, and maintainability.
13828
13769
  - **Surface enumeration:** [For bug-fix specs, is \`## Surface Enumeration\` present and does it enumerate the relevant providers/bridges/execution paths, desktop + mobile breakpoints/platforms, empty/undefined/duplicate/populated states, and shared hooks/components/modules/helpers? Missing or incomplete coverage is a blocking REVISE.]
13829
13770
  - **Documentation completeness:** [Must Update / Check If Affected sections present?]
13830
13771
  - **Sizing & review level:** [Size and review level appropriate for the work?]
13831
- - **Subtask breakdown:** [Were complex tasks appropriately split into 2-5 child tasks?]
13832
13772
  - **User comment coverage:** [Were all user comments addressed? Every user comment must be reflected in the spec \u2014 missing coverage is a blocking REVISE]
13833
13773
  - **Security considerations:** [Are security-sensitive areas identified and addressed?]
13834
13774
  - **Edge case coverage:** [Does the spec account for failure modes and boundary conditions?]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/cli-printing-press",
3
- "version": "0.1.53-beta.3",
3
+ "version": "0.1.53-beta.5",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {