@runfusion/fusion 0.70.0 → 0.70.1

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 (101) hide show
  1. package/dist/bin.js +68 -41
  2. package/dist/client/.vite/manifest.json +249 -249
  3. package/dist/client/assets/{AgentDetailView-UcyGK_vC.js → AgentDetailView-BHnJqo2r.js} +1 -1
  4. package/dist/client/assets/{AgentPermissionPolicyEditor-DVcgvRjw.js → AgentPermissionPolicyEditor-CLnVN1V8.js} +1 -1
  5. package/dist/client/assets/{AgentsView-BE-HTsa2.js → AgentsView-C2mpl-F-.js} +3 -3
  6. package/dist/client/assets/{ChatView-ChA7lPMm.js → ChatView-DO5uqh7X.js} +1 -1
  7. package/dist/client/assets/{CommandCenter-B_6bfWsl.js → CommandCenter-D4_mJL1B.js} +1 -1
  8. package/dist/client/assets/{DevServerView-B9D8g_ut.js → DevServerView-Cmwv4QOO.js} +1 -1
  9. package/dist/client/assets/{DirectoryPicker-D6EbSzd1.js → DirectoryPicker-DLuDx_eK.js} +1 -1
  10. package/dist/client/assets/{DocumentsView-DRfEB1Lf.js → DocumentsView-CBifAhxj.js} +1 -1
  11. package/dist/client/assets/{EvalsView-BlMBpGr-.js → EvalsView-BjlDIWu3.js} +1 -1
  12. package/dist/client/assets/{ExperimentalAgentOnboardingModal-DB_bRWMS.js → ExperimentalAgentOnboardingModal-CrTPfgfP.js} +1 -1
  13. package/dist/client/assets/{GoalsView-C5s1QHy6.js → GoalsView-udCtfe8K.js} +1 -1
  14. package/dist/client/assets/{InsightsView-0Gyc7f0s.js → InsightsView-6kIswvAp.js} +1 -1
  15. package/dist/client/assets/{MemoryView-iCNmMJJS.js → MemoryView-BVHIG2Cw.js} +1 -1
  16. package/dist/client/assets/{PiExtensionsManager-DeOI2FkF.js → PiExtensionsManager-Q88P1dg_.js} +1 -1
  17. package/dist/client/assets/{PluginManager-DhPlSlzY.js → PluginManager-lE99At6D.js} +1 -1
  18. package/dist/client/assets/{PullRequestView-DUvemdMr.js → PullRequestView-BOKSbrgG.js} +1 -1
  19. package/dist/client/assets/{ResearchView-B0VUmdp-.js → ResearchView-X8nkEU65.js} +1 -1
  20. package/dist/client/assets/{SecretsView-JSCYGBv7.js → SecretsView-BDj6wR01.js} +1 -1
  21. package/dist/client/assets/{SessionTerminal-DHyiQAjY.js → SessionTerminal-CoePyx-a.js} +1 -1
  22. package/dist/client/assets/{SettingsModal-DBmFSHcS.js → SettingsModal-BoQyi1uT.js} +3 -3
  23. package/dist/client/assets/{SettingsModal-CAAE8x4y.js → SettingsModal-CECrEryw.js} +1 -1
  24. package/dist/client/assets/{SettingsTextareaRow-Bepf8u_T.js → SettingsTextareaRow-DV_0_v_J.js} +1 -1
  25. package/dist/client/assets/{SetupWizardModal-DBougliS.js → SetupWizardModal-B482Mabf.js} +2 -2
  26. package/dist/client/assets/{SkillsView-Do_RCxwg.js → SkillsView-Cp7jNXEV.js} +1 -1
  27. package/dist/client/assets/{ThemeDropdown-BZL3YFeV.js → ThemeDropdown-ChrT7lhT.js} +1 -1
  28. package/dist/client/assets/{TodoView-DUttsF_y.js → TodoView-HZw9-AQI.js} +1 -1
  29. package/dist/client/assets/{WorkflowNodeEditor-5V-ag8di.js → WorkflowNodeEditor-DeV9dfn3.js} +1 -1
  30. package/dist/client/assets/app-BLTqCjPk.js +13 -0
  31. package/dist/client/assets/app-BwKqEIVs.js +13 -0
  32. package/dist/client/assets/app-Bx4Tg9WL.js +13 -0
  33. package/dist/client/assets/app-bX7Aarj6.js +13 -0
  34. package/dist/client/assets/app-gasJpw6T.js +13 -0
  35. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Btn4zvDG.js → architectureDiagram-3BPJPVTR-tnFguX8z.js} +1 -1
  36. package/dist/client/assets/{blockDiagram-GPEHLZMM-BD9pvlM8.js → blockDiagram-GPEHLZMM-BKPZ6LQx.js} +1 -1
  37. package/dist/client/assets/{c4Diagram-AAUBKEIU-DoKUglr6.js → c4Diagram-AAUBKEIU-DSObk7BW.js} +1 -1
  38. package/dist/client/assets/channel-BU3NN8kT.js +1 -0
  39. package/dist/client/assets/{chunk-2J33WTMH-CcrYik1W.js → chunk-2J33WTMH-CnJlEes6.js} +1 -1
  40. package/dist/client/assets/{chunk-4BX2VUAB-DPBkmhox.js → chunk-4BX2VUAB-s6CMovw_.js} +1 -1
  41. package/dist/client/assets/{chunk-55IACEB6-BKgW-ZME.js → chunk-55IACEB6-NEIqJT7j.js} +1 -1
  42. package/dist/client/assets/{chunk-727SXJPM-BwHZ89kV.js → chunk-727SXJPM-C1CQZVzb.js} +1 -1
  43. package/dist/client/assets/{chunk-AQP2D5EJ-D9u2wbjN.js → chunk-AQP2D5EJ-6gMoMdGb.js} +1 -1
  44. package/dist/client/assets/{chunk-FMBD7UC4-CnCKrO3d.js → chunk-FMBD7UC4-DmPr6Fr6.js} +1 -1
  45. package/dist/client/assets/{chunk-ND2GUHAM-C9U4i51P.js → chunk-ND2GUHAM-DdT6_Vir.js} +1 -1
  46. package/dist/client/assets/{chunk-QZHKN3VN-CfPCe-_9.js → chunk-QZHKN3VN-X6wAiHwG.js} +1 -1
  47. package/dist/client/assets/classDiagram-4FO5ZUOK-CCnXAfXJ.js +1 -0
  48. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CCnXAfXJ.js +1 -0
  49. package/dist/client/assets/{cose-bilkent-S5V4N54A-DtwCEQs8.js → cose-bilkent-S5V4N54A-DiYJ_SGs.js} +1 -1
  50. package/dist/client/assets/{dagre-BM42HDAG-7af6SNqt.js → dagre-BM42HDAG-DbK9iSU6.js} +1 -1
  51. package/dist/client/assets/{dashboard-view-BedVE0Ih.js → dashboard-view-BuYhP1Cp.js} +1 -1
  52. package/dist/client/assets/{dashboard-view-DxJ37rW2.js → dashboard-view-C3f_CnQ1.js} +1 -1
  53. package/dist/client/assets/{dashboard-view-CVo9Y-Mr.js → dashboard-view-CUyQsgCx.js} +1 -1
  54. package/dist/client/assets/{diagram-2AECGRRQ-POCtmGz8.js → diagram-2AECGRRQ-DzRxhbFR.js} +1 -1
  55. package/dist/client/assets/{diagram-5GNKFQAL-i5K8mqYD.js → diagram-5GNKFQAL-CTMHqhQS.js} +1 -1
  56. package/dist/client/assets/{diagram-KO2AKTUF-Sn06yZUj.js → diagram-KO2AKTUF-BuzYjBIv.js} +1 -1
  57. package/dist/client/assets/{diagram-LMA3HP47-C2fWgirp.js → diagram-LMA3HP47-DNo7IO4h.js} +1 -1
  58. package/dist/client/assets/{diagram-OG6HWLK6-Bt2bFUl9.js → diagram-OG6HWLK6-BDCorOru.js} +1 -1
  59. package/dist/client/assets/{erDiagram-TEJ5UH35-BghBGlaT.js → erDiagram-TEJ5UH35-Cz0hE7uE.js} +1 -1
  60. package/dist/client/assets/{flowDiagram-I6XJVG4X-wSa-kKJr.js → flowDiagram-I6XJVG4X-Kb2I0MOg.js} +1 -1
  61. package/dist/client/assets/{folder-open-DNSbtgHO.js → folder-open-LzyyHcib.js} +1 -1
  62. package/dist/client/assets/{ganttDiagram-6RSMTGT7-DWBQrRfD.js → ganttDiagram-6RSMTGT7--M8kpndX.js} +1 -1
  63. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DF3OeXPN.js → gitGraphDiagram-PVQCEYII-BvyviZo2.js} +1 -1
  64. package/dist/client/assets/{index-E8N-nvEr.js → index-BH5aIwaM.js} +285 -285
  65. package/dist/client/assets/index-Co20nJU4.css +1 -0
  66. package/dist/client/assets/{infoDiagram-5YYISTIA--C0rwWUk.js → infoDiagram-5YYISTIA-Bgm5nKut.js} +1 -1
  67. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DbOOTJuV.js → ishikawaDiagram-YF4QCWOH-DWW_Prtm.js} +1 -1
  68. package/dist/client/assets/{journeyDiagram-JHISSGLW-B-9JjpPp.js → journeyDiagram-JHISSGLW-BOfifstC.js} +1 -1
  69. package/dist/client/assets/{kanban-definition-UN3LZRKU-qZZGQNnO.js → kanban-definition-UN3LZRKU-V8JEMLyb.js} +1 -1
  70. package/dist/client/assets/{mermaid.core-CeXW1p4f.js → mermaid.core-DDpO_pvZ.js} +4 -4
  71. package/dist/client/assets/{mindmap-definition-RKZ34NQL-BXRCpP2x.js → mindmap-definition-RKZ34NQL-BLI9JHhu.js} +1 -1
  72. package/dist/client/assets/{pieDiagram-4H26LBE5-47zFHuRm.js → pieDiagram-4H26LBE5-BL5eUgb4.js} +1 -1
  73. package/dist/client/assets/{puzzle-BNhvAyID.js → puzzle-BOqqcjsU.js} +1 -1
  74. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DUKmccO0.js → quadrantDiagram-W4KKPZXB-CtvzPtau.js} +1 -1
  75. package/dist/client/assets/{requirementDiagram-4Y6WPE33-BOJ_6eOW.js → requirementDiagram-4Y6WPE33-Co2--lq9.js} +1 -1
  76. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BHUv0akC.js → sankeyDiagram-5OEKKPKP-DaAXgU9Y.js} +1 -1
  77. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-1EV1Z4wU.js → sequenceDiagram-3UESZ5HK-zdmQqra5.js} +1 -1
  78. package/dist/client/assets/{shield-alert-fp6442hB.js → shield-alert-DfIgeeR0.js} +1 -1
  79. package/dist/client/assets/{standing-instructions-template-BuvHfp3C.js → standing-instructions-template-B5GKUe8V.js} +1 -1
  80. package/dist/client/assets/{stateDiagram-AJRCARHV-gl5trnu3.js → stateDiagram-AJRCARHV-CXK0Nj1C.js} +1 -1
  81. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-BZTcdF3O.js → stateDiagram-v2-BHNVJYJU-BDtUdqu0.js} +1 -1
  82. package/dist/client/assets/{timeline-definition-PNZ67QCA-tWTH8fak.js → timeline-definition-PNZ67QCA-C2VA4hrS.js} +1 -1
  83. package/dist/client/assets/{upload-Qz1855iO.js → upload-DVSzPAp1.js} +1 -1
  84. package/dist/client/assets/{users-BQK7rz20.js → users-Bi9t1Jl7.js} +1 -1
  85. package/dist/client/assets/{vennDiagram-CIIHVFJN-CFYaMPIr.js → vennDiagram-CIIHVFJN-3r5bGzbL.js} +1 -1
  86. package/dist/client/assets/{wardley-L42UT6IY-L-s3D5go.js → wardley-L42UT6IY-B8CM4294.js} +1 -1
  87. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Bnr2mimd.js → wardleyDiagram-YWT4CUSO-nzJ6haZ4.js} +1 -1
  88. package/dist/client/assets/{xychartDiagram-2RQKCTM6-Bkx54Q3q.js → xychartDiagram-2RQKCTM6-CWUTnMyY.js} +1 -1
  89. package/dist/client/index.html +2 -2
  90. package/dist/client/version.json +1 -1
  91. package/dist/extension.js +38 -32
  92. package/package.json +1 -1
  93. package/dist/client/assets/app-B3aUA71e.js +0 -13
  94. package/dist/client/assets/app-CKMMlwBM.js +0 -13
  95. package/dist/client/assets/app-CM_EbIz5.js +0 -13
  96. package/dist/client/assets/app-D5nFfAtx.js +0 -13
  97. package/dist/client/assets/app-DSo_fHWv.js +0 -13
  98. package/dist/client/assets/channel-DgUBVYLb.js +0 -1
  99. package/dist/client/assets/classDiagram-4FO5ZUOK-zHoYgXgS.js +0 -1
  100. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-zHoYgXgS.js +0 -1
  101. package/dist/client/assets/index-Bxrp0IKg.css +0 -1
package/dist/extension.js CHANGED
@@ -173283,7 +173283,6 @@ async function resolveActivePrEntity(store, task) {
173283
173283
  return store.getActivePrEntityBySource("branch-group", groupId);
173284
173284
  }
173285
173285
  function buildRespondCallback(getStore2, ops, audit, pluginRunner) {
173286
- const gitOps = makePrResponseGitOps(ops.getCwd);
173287
173286
  return async ({ entity }) => {
173288
173287
  const store = getStore2();
173289
173288
  const fullStore = store;
@@ -173296,8 +173295,17 @@ function buildRespondCallback(getStore2, ops, audit, pluginRunner) {
173296
173295
  return { value: "disagreed-only" };
173297
173296
  }
173298
173297
  const taskId = ops.getTaskId(entity);
173299
- const cwd = ops.getCwd(entity);
173300
- const runAgent = makePrResponseAgentRunner(settings, taskId, cwd, fullStore, pluginRunner);
173298
+ const hasGetTask = typeof fullStore.getTask === "function";
173299
+ const respondTask = hasGetTask ? await fullStore.getTask(taskId) : null;
173300
+ const cwd = respondTask?.worktree || ops.getCwd(entity);
173301
+ const gitOps = makePrResponseGitOps(() => cwd);
173302
+ const runAgent = makePrResponseAgentRunner(
173303
+ settings,
173304
+ taskId,
173305
+ cwd,
173306
+ hasGetTask ? fullStore : void 0,
173307
+ pluginRunner
173308
+ );
173301
173309
  const result = await runPrResponseRun({
173302
173310
  entity,
173303
173311
  store,
@@ -190603,18 +190611,14 @@ var init_unlinked_missions_advisory_reporter = __esm({
190603
190611
  }
190604
190612
  async report() {
190605
190613
  try {
190606
- const resolvedMissionStore = this.store.getMissionStore();
190607
- if (!(resolvedMissionStore instanceof MissionStore)) {
190608
- return { alerted: false, reason: "mission-store-async-unsupported" };
190609
- }
190610
- const missionStore = resolvedMissionStore;
190611
- const missions2 = missionStore.listMissions();
190614
+ const missionStore = this.store.getMissionStore();
190615
+ const missions2 = await missionStore.listMissions();
190612
190616
  const unlinkedActiveMissions = [];
190613
190617
  for (const mission of missions2) {
190614
190618
  if (mission.status !== "active") {
190615
190619
  continue;
190616
190620
  }
190617
- if (missionStore.listGoalIdsForMission(mission.id).length > 0) {
190621
+ if ((await missionStore.listGoalIdsForMission(mission.id)).length > 0) {
190618
190622
  continue;
190619
190623
  }
190620
190624
  unlinkedActiveMissions.push(mission);
@@ -241993,13 +241997,17 @@ var init_mission_execution_loop = __esm({
241993
241997
  * dispatch of the validation result.
241994
241998
  */
241995
241999
  async runFeatureValidation(feature) {
241996
- let assertions = await this.missionStore.listAssertionsForFeature(feature.id);
241997
- if (assertions.length === 0) {
241998
- loopLog.log(`Feature ${feature.id} has no linked assertions; lazily ensuring store-managed assertion linkage`);
241999
- assertions = await this.missionStore.ensureFeatureAssertionLinked(feature.id);
242000
- }
242001
242000
  this.activeValidations.add(feature.id);
242002
242001
  try {
242002
+ let assertions = await this.missionStore.listAssertionsForFeature(feature.id);
242003
+ if (assertions.length === 0) {
242004
+ loopLog.log(`Feature ${feature.id} has no linked assertions; lazily ensuring store-managed assertion linkage`);
242005
+ assertions = await this.missionStore.ensureFeatureAssertionLinked(feature.id);
242006
+ }
242007
+ if (assertions.length === 0) {
242008
+ await this.handleValidationPass(feature.id, void 0, "No assertions linked to feature");
242009
+ return;
242010
+ }
242003
242011
  loopLog.log(`Running internal validation for feature ${feature.id} \u2014 no board task created (policy: docs/missions.md)`);
242004
242012
  const run = feature.taskId ? await this.missionStore.startValidatorRun(feature.id, "task_completion", feature.taskId) : await this.missionStore.startValidatorRun(feature.id, "task_completion");
242005
242013
  loopLog.log(`Started validator run ${run.id} for feature ${feature.id}`);
@@ -260449,6 +260457,7 @@ var init_project_engine = __esm({
260449
260457
  if (this.started) {
260450
260458
  return;
260451
260459
  }
260460
+ this.shuttingDown = false;
260452
260461
  await this.runtime.start();
260453
260462
  await deliverPostgresMigrationNoticeIfNeeded({
260454
260463
  messageStore: this.runtime.getMessageStore(),
@@ -260510,9 +260519,7 @@ var init_project_engine = __esm({
260510
260519
  // through the FN-7520 façade for each real observation the monitor
260511
260520
  // records, using the real TaskStore. Best-effort — never throws (the
260512
260521
  // monitor already swallows callback errors around `onObservation`).
260513
- onObservation: (observation) => {
260514
- this.emitOverseerObservationDeduped(store, observation);
260515
- }
260522
+ onObservation: (observation) => this.emitOverseerObservationDeduped(store, observation)
260516
260523
  });
260517
260524
  this.plannerRecoveryController = new PlannerRecoveryController({
260518
260525
  snapshotProvider: this.plannerOverseer,
@@ -260883,7 +260890,6 @@ ${detail}`);
260883
260890
  }
260884
260891
  await this.runtime.stop();
260885
260892
  this.started = false;
260886
- this.shuttingDown = false;
260887
260893
  runtimeLog.log(`ProjectEngine stopped for ${this.config.projectId}`);
260888
260894
  }
260889
260895
  // ── Public accessors ──
@@ -261122,9 +261128,9 @@ ${detail}`);
261122
261128
  * try/catch-degrade-to-no-op contract every FN-7512/FN-7513/FN-7514
261123
261129
  * handler already follows).
261124
261130
  */
261125
- emitOverseerInterventionSafe(fn2) {
261131
+ async emitOverseerInterventionSafe(fn2) {
261126
261132
  try {
261127
- fn2();
261133
+ await fn2();
261128
261134
  } catch (err) {
261129
261135
  runtimeLog.warn(`Failed to emit overseer intervention: ${err instanceof Error ? err.message : String(err)}`);
261130
261136
  }
@@ -261138,7 +261144,7 @@ ${detail}`);
261138
261144
  * `(stage, signal)` pair emits. Best-effort: any store/façade failure is
261139
261145
  * swallowed so it never breaks `PlannerOverseerMonitor#observeTask`/the poll.
261140
261146
  */
261141
- emitOverseerObservationDeduped(store, observation) {
261147
+ async emitOverseerObservationDeduped(store, observation) {
261142
261148
  try {
261143
261149
  const dedupKey = `${observation.stage}:${observation.signal}`;
261144
261150
  const last = this.plannerObservationEmitDedup.get(observation.taskId);
@@ -261146,7 +261152,7 @@ ${detail}`);
261146
261152
  return;
261147
261153
  }
261148
261154
  this.plannerObservationEmitDedup.set(observation.taskId, dedupKey);
261149
- emitOverseerObservation({
261155
+ await emitOverseerObservation({
261150
261156
  store,
261151
261157
  taskId: observation.taskId,
261152
261158
  stage: observation.stage,
@@ -261169,14 +261175,14 @@ ${detail}`);
261169
261175
  * clears the dedup entry and may escalate again in a future exhaustion).
261170
261176
  * Best-effort; never throws out of the poll.
261171
261177
  */
261172
- emitOverseerEscalationDeduped(store, taskId, decision) {
261178
+ async emitOverseerEscalationDeduped(store, taskId, decision) {
261173
261179
  if (!decision.watchedStage) return;
261174
261180
  const dedupKey = `${taskId}::${decision.watchedStage}`;
261175
261181
  if (this.plannerEscalationEmitDedup.has(dedupKey)) {
261176
261182
  return;
261177
261183
  }
261178
261184
  this.plannerEscalationEmitDedup.add(dedupKey);
261179
- this.emitOverseerInterventionSafe(
261185
+ await this.emitOverseerInterventionSafe(
261180
261186
  () => emitOverseerEscalation({
261181
261187
  store,
261182
261188
  taskId,
@@ -261213,7 +261219,7 @@ ${detail}`);
261213
261219
  injectGuidance: async (task, decision) => {
261214
261220
  const text2 = `[planner-oversight] ${decision.reason}`;
261215
261221
  await store.addSteeringComment(task.id, text2, "agent");
261216
- this.emitOverseerInterventionSafe(
261222
+ await this.emitOverseerInterventionSafe(
261217
261223
  () => emitOverseerSteering({
261218
261224
  store,
261219
261225
  taskId: task.id,
@@ -261226,7 +261232,7 @@ ${detail}`);
261226
261232
  },
261227
261233
  retryStep: async (task, decision) => {
261228
261234
  await store.moveTask(task.id, "todo", { preserveProgress: true, moveSource: "engine" });
261229
- this.emitOverseerInterventionSafe(
261235
+ await this.emitOverseerInterventionSafe(
261230
261236
  () => emitOverseerRetry({
261231
261237
  store,
261232
261238
  taskId: task.id,
@@ -261242,7 +261248,7 @@ ${detail}`);
261242
261248
  const sourceRef = decision.sourceLinks[0]?.ref;
261243
261249
  const text2 = sourceRef ? `[planner-oversight] targeted-fix requested: ${decision.reason} (source: ${sourceRef})` : `[planner-oversight] targeted-fix requested: ${decision.reason}`;
261244
261250
  await store.addSteeringComment(task.id, text2, "agent");
261245
- this.emitOverseerInterventionSafe(
261251
+ await this.emitOverseerInterventionSafe(
261246
261252
  () => emitOverseerRecoveryAttempt({
261247
261253
  store,
261248
261254
  taskId: task.id,
@@ -261275,7 +261281,7 @@ ${detail}`);
261275
261281
  requestConfirmation: async (task, request2) => {
261276
261282
  const text2 = `[planner-oversight] merge checkpoint (${request2.sideEffectClass}): ${request2.reason}`;
261277
261283
  await store.addSteeringComment(task.id, text2, "agent");
261278
- this.emitOverseerInterventionSafe(
261284
+ await this.emitOverseerInterventionSafe(
261279
261285
  () => emitOverseerConfirmation({
261280
261286
  store,
261281
261287
  taskId: task.id,
@@ -261292,7 +261298,7 @@ ${detail}`);
261292
261298
  // the timeline shows both the request and its resolution. Never touches
261293
261299
  // the approve/deny execution path itself.
261294
261300
  onConfirmationResolved: async (taskId, request2, resolution) => {
261295
- this.emitOverseerInterventionSafe(
261301
+ await this.emitOverseerInterventionSafe(
261296
261302
  () => emitOverseerConfirmation({
261297
261303
  store,
261298
261304
  taskId,
@@ -261939,7 +261945,7 @@ ${detail}`);
261939
261945
  });
261940
261946
  }
261941
261947
  internalEnqueueMerge(taskId) {
261942
- if (this.shuttingDown) return false;
261948
+ if (this.shuttingDown || !this.started) return false;
261943
261949
  if (this.mergeActive.has(taskId)) {
261944
261950
  const isActuallyLive = this.mergeQueue.includes(taskId) || this.activeMergeTaskId === taskId;
261945
261951
  if (!isActuallyLive) {
@@ -262111,7 +262117,7 @@ ${detail}`);
262111
262117
  if (level === "autonomous" && this.plannerRecoveryController) {
262112
262118
  const decision = await this.plannerRecoveryController.tick(task, { settings: engineSettings });
262113
262119
  if (decision?.exhausted && decision.watchedStage) {
262114
- this.emitOverseerEscalationDeduped(store, task.id, decision);
262120
+ await this.emitOverseerEscalationDeduped(store, task.id, decision);
262115
262121
  }
262116
262122
  }
262117
262123
  if (task.column === "in-progress" && this.sessionAdvisor) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runfusion/fusion",
3
- "version": "0.70.0",
3
+ "version": "0.70.1",
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",