@runfusion/fusion 0.56.1 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/bin.js +5998 -4649
  2. package/dist/client/.vite/manifest.json +241 -241
  3. package/dist/client/assets/AgentDetailView-DexqYfz4.js +18 -0
  4. package/dist/client/assets/{AgentPermissionPolicyEditor-DQDzCWq_.js → AgentPermissionPolicyEditor-B65iWSFw.js} +1 -1
  5. package/dist/client/assets/AgentsView-DWBHXG4w.js +24 -0
  6. package/dist/client/assets/ChatView-BaGockES.js +6 -0
  7. package/dist/client/assets/{CommandCenter-CZ856YOj.js → CommandCenter-DNSpf5Nq.js} +2 -2
  8. package/dist/client/assets/{DevServerView-BqsnMChS.js → DevServerView-T7YAMRMr.js} +1 -1
  9. package/dist/client/assets/{DirectoryPicker-cW1rnVoG.js → DirectoryPicker-p_bMALI6.js} +1 -1
  10. package/dist/client/assets/{DocumentsView-C6a5tuBQ.js → DocumentsView-CSZ1_bEk.js} +1 -1
  11. package/dist/client/assets/{EvalsView-DZd_TM3I.js → EvalsView-C03NFn9p.js} +1 -1
  12. package/dist/client/assets/{ExperimentalAgentOnboardingModal-cA-aWWsB.js → ExperimentalAgentOnboardingModal-DaYU4VlV.js} +1 -1
  13. package/dist/client/assets/{GoalsView-Bzvw1aDV.js → GoalsView-CwXL_l6r.js} +1 -1
  14. package/dist/client/assets/{InsightsView-B3WQIXKs.js → InsightsView-D-pumdKK.js} +1 -1
  15. package/dist/client/assets/{MemoryView-BZ2KwFO5.js → MemoryView--frKZACq.js} +1 -1
  16. package/dist/client/assets/{PiExtensionsManager-D5x6GZOP.js → PiExtensionsManager-HTYWFcsw.js} +1 -1
  17. package/dist/client/assets/PluginManager-47FXVbWv.js +1 -0
  18. package/dist/client/assets/{PluginManager-DSiHizRD.css → PluginManager-Bm9FXhxQ.css} +1 -1
  19. package/dist/client/assets/{PullRequestView-DX3J4hgm.js → PullRequestView-jqo0u_qP.js} +1 -1
  20. package/dist/client/assets/{ResearchView-MZV2S2kT.js → ResearchView-lUFw0eBY.js} +1 -1
  21. package/dist/client/assets/{SecretsView--R3u3G4b.js → SecretsView-DZ1NCe-c.js} +1 -1
  22. package/dist/client/assets/{SessionTerminal-BQWc1_Ty.js → SessionTerminal-B10eN86g.js} +1 -1
  23. package/dist/client/assets/SettingsModal-BIIWHPyY.js +21 -0
  24. package/dist/client/assets/SettingsModal-BqIOpGm9.css +1 -0
  25. package/dist/client/assets/{SettingsModal-Coqvlmud.js → SettingsModal-C3PIQwOw.js} +1 -1
  26. package/dist/client/assets/SettingsModal-D-z02qbd.css +1 -0
  27. package/dist/client/assets/{SetupWizardModal-CoReXugb.js → SetupWizardModal-BtCAK9gq.js} +2 -2
  28. package/dist/client/assets/{ShadcnColorPicker-D-u_ECbM.js → ShadcnColorPicker-CgbOh2Vh.js} +1 -1
  29. package/dist/client/assets/{SkillsView-D21ils_G.js → SkillsView-xknpWJDp.js} +1 -1
  30. package/dist/client/assets/{TodoView-BFZQSkv4.js → TodoView-BOIUCi-b.js} +1 -1
  31. package/dist/client/assets/{WorkflowNodeEditor-E-7d5R9z.js → WorkflowNodeEditor-BoGuTbgL.js} +1 -1
  32. package/dist/client/assets/{agentSkills-CM_yYVTx.js → agentSkills-HBp0qQK2.js} +1 -1
  33. package/dist/client/assets/app-CC21pBBX.js +13 -0
  34. package/dist/client/assets/app-D5aQhT6F.js +13 -0
  35. package/dist/client/assets/app-DRTCMx1I.js +13 -0
  36. package/dist/client/assets/{app-CEtD1B9K.js → app-gWIFDNxJ.js} +2 -2
  37. package/dist/client/assets/app-pKygaS_p.js +13 -0
  38. package/dist/client/assets/app-usRdP6KP.js +13 -0
  39. package/dist/client/assets/{architectureDiagram-3BPJPVTR-DhgVYwmg.js → architectureDiagram-3BPJPVTR-DFSc_ojZ.js} +1 -1
  40. package/dist/client/assets/{blockDiagram-GPEHLZMM-AlG0kVWu.js → blockDiagram-GPEHLZMM-BeWCvgkB.js} +1 -1
  41. package/dist/client/assets/{c4Diagram-AAUBKEIU-BOzpW3F7.js → c4Diagram-AAUBKEIU-53kLf9YA.js} +1 -1
  42. package/dist/client/assets/channel-DqmRVQcu.js +1 -0
  43. package/dist/client/assets/{chunk-2J33WTMH-BAmZfsv0.js → chunk-2J33WTMH-oiPMiLQk.js} +1 -1
  44. package/dist/client/assets/{chunk-4BX2VUAB-Cs587QhG.js → chunk-4BX2VUAB-DtEYW63S.js} +1 -1
  45. package/dist/client/assets/{chunk-55IACEB6-qpIQSO06.js → chunk-55IACEB6-CRyY-eBJ.js} +1 -1
  46. package/dist/client/assets/{chunk-727SXJPM-DF3vZtMc.js → chunk-727SXJPM-DpPz5T23.js} +1 -1
  47. package/dist/client/assets/{chunk-AQP2D5EJ-BuETIys5.js → chunk-AQP2D5EJ-DsvlwOK0.js} +1 -1
  48. package/dist/client/assets/{chunk-FMBD7UC4-B8D1TSR9.js → chunk-FMBD7UC4-B4PI9bUA.js} +1 -1
  49. package/dist/client/assets/{chunk-ND2GUHAM-BJv9aIQn.js → chunk-ND2GUHAM-CNvgVhAJ.js} +1 -1
  50. package/dist/client/assets/{chunk-QZHKN3VN-BJbK2pNR.js → chunk-QZHKN3VN-PzmFXGK3.js} +1 -1
  51. package/dist/client/assets/classDiagram-4FO5ZUOK-BkGcNuxB.js +1 -0
  52. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BkGcNuxB.js +1 -0
  53. package/dist/client/assets/{cose-bilkent-S5V4N54A-BWRikddb.js → cose-bilkent-S5V4N54A-B2hi4baG.js} +1 -1
  54. package/dist/client/assets/{dagre-BM42HDAG-DpAxJj7T.js → dagre-BM42HDAG-CtfJbsAQ.js} +1 -1
  55. package/dist/client/assets/{dashboard-view-qq3ayA0B.js → dashboard-view-DmxFuwxK.js} +1 -1
  56. package/dist/client/assets/{dashboard-view-Dw8L8k-2.js → dashboard-view-Y7yFASOR.js} +1 -1
  57. package/dist/client/assets/{diagram-2AECGRRQ-DRRIILsg.js → diagram-2AECGRRQ-CCNdu-lI.js} +1 -1
  58. package/dist/client/assets/{diagram-5GNKFQAL-DSOu28ss.js → diagram-5GNKFQAL-CRFRDKo6.js} +1 -1
  59. package/dist/client/assets/{diagram-KO2AKTUF-CWzbnTBM.js → diagram-KO2AKTUF-qzA8EYKe.js} +1 -1
  60. package/dist/client/assets/{diagram-LMA3HP47-CGqf3bt6.js → diagram-LMA3HP47-BcVh_7JQ.js} +1 -1
  61. package/dist/client/assets/{diagram-OG6HWLK6-C1axXteT.js → diagram-OG6HWLK6-ti62bhwU.js} +1 -1
  62. package/dist/client/assets/{erDiagram-TEJ5UH35-bBdlc4OY.js → erDiagram-TEJ5UH35-R-0m-loG.js} +1 -1
  63. package/dist/client/assets/{flowDiagram-I6XJVG4X-BTCJ2J3b.js → flowDiagram-I6XJVG4X-DmchEhZJ.js} +1 -1
  64. package/dist/client/assets/{folder-open-BN3_NdbL.js → folder-open-BnJacMSp.js} +1 -1
  65. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CiFY9oBj.js → ganttDiagram-6RSMTGT7-CRZY8cRF.js} +1 -1
  66. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CxubcP4l.js → gitGraphDiagram-PVQCEYII-DJ6KnPoF.js} +1 -1
  67. package/dist/client/assets/index-BxaBW271.css +1 -0
  68. package/dist/client/assets/index-C-IxdGPX.js +2526 -0
  69. package/dist/client/assets/{infoDiagram-5YYISTIA-ToDlIyOV.js → infoDiagram-5YYISTIA-BEXH-GHB.js} +1 -1
  70. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BgO681xo.js → ishikawaDiagram-YF4QCWOH-CVuF17Yd.js} +1 -1
  71. package/dist/client/assets/{journeyDiagram-JHISSGLW-OJZ3op9w.js → journeyDiagram-JHISSGLW-CCcBBtY4.js} +1 -1
  72. package/dist/client/assets/{kanban-definition-UN3LZRKU-q2OOqX8K.js → kanban-definition-UN3LZRKU-B5bqvapW.js} +1 -1
  73. package/dist/client/assets/{mermaid.core-BmDOYmFS.js → mermaid.core-DfKOBw3p.js} +4 -4
  74. package/dist/client/assets/{mindmap-definition-RKZ34NQL-Dw8JehwG.js → mindmap-definition-RKZ34NQL-D6YDtYgW.js} +1 -1
  75. package/dist/client/assets/{pieDiagram-4H26LBE5-D5Li6GnX.js → pieDiagram-4H26LBE5-BokP1BTt.js} +1 -1
  76. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-B4s-2jdZ.js → quadrantDiagram-W4KKPZXB-B9NJMDnf.js} +1 -1
  77. package/dist/client/assets/{requirementDiagram-4Y6WPE33-Drc3rc_E.js → requirementDiagram-4Y6WPE33-CkVaSHtt.js} +1 -1
  78. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-C_R01GQC.js → sankeyDiagram-5OEKKPKP-BoU2JDPH.js} +1 -1
  79. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-gyl7Yhgc.js → sequenceDiagram-3UESZ5HK-Damqlxg5.js} +1 -1
  80. package/dist/client/assets/{shield-alert-DjhYmFaV.js → shield-alert-BTMxVnOy.js} +1 -1
  81. package/dist/client/assets/{stateDiagram-AJRCARHV-BY53czZh.js → stateDiagram-AJRCARHV-BC72nvu_.js} +1 -1
  82. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-C53cIaWg.js → stateDiagram-v2-BHNVJYJU-BSoMYClQ.js} +1 -1
  83. package/dist/client/assets/{timeline-definition-PNZ67QCA-BYwv2FZJ.js → timeline-definition-PNZ67QCA-DxHz0a6F.js} +1 -1
  84. package/dist/client/assets/{upload-BKpOp-Bn.js → upload-1isayrJo.js} +1 -1
  85. package/dist/client/assets/{users-BUMHTZuX.js → users-C3jhPg5Q.js} +1 -1
  86. package/dist/client/assets/{vennDiagram-CIIHVFJN-Dt94bP0k.js → vennDiagram-CIIHVFJN-B3nVtXfZ.js} +1 -1
  87. package/dist/client/assets/{wardley-L42UT6IY-536kdB5p.js → wardley-L42UT6IY-D-hb-Ks4.js} +1 -1
  88. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-D8iNQ_MW.js → wardleyDiagram-YWT4CUSO-DVqAvZPQ.js} +1 -1
  89. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CXqp8mzh.js → xychartDiagram-2RQKCTM6-0RALveCq.js} +1 -1
  90. package/dist/client/index.html +2 -2
  91. package/dist/client/version.json +1 -1
  92. package/dist/droid-cli/package.json +1 -1
  93. package/dist/extension.js +2784 -1191
  94. package/dist/pi-claude-cli/package.json +1 -1
  95. package/dist/plugin-sdk/index.d.ts +35 -0
  96. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  97. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  98. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  99. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  100. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  101. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  102. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +21 -8
  103. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  104. package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
  105. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  106. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  107. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  108. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  109. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  110. package/package.json +1 -1
  111. package/skill/fusion/references/extension-tools.md +4 -2
  112. package/skill/fusion/references/fusion-capabilities.md +2 -2
  113. package/dist/client/assets/AgentDetailView-BICsleMh.js +0 -18
  114. package/dist/client/assets/AgentsView-DRpFG7gE.js +0 -24
  115. package/dist/client/assets/ChatView-5vVkIiNh.js +0 -6
  116. package/dist/client/assets/PluginManager-YfHRH24B.js +0 -1
  117. package/dist/client/assets/SettingsModal-CNYosRF3.js +0 -21
  118. package/dist/client/assets/SettingsModal-CaE4JYxi.css +0 -1
  119. package/dist/client/assets/SettingsModal-D8AyVDar.css +0 -1
  120. package/dist/client/assets/app-0jcSCRQr.js +0 -13
  121. package/dist/client/assets/app-BPzPEE6G.js +0 -13
  122. package/dist/client/assets/app-BSZU5Uns.js +0 -13
  123. package/dist/client/assets/app-CVyRSEUX.js +0 -13
  124. package/dist/client/assets/app-DoLz_4Dg.js +0 -13
  125. package/dist/client/assets/channel-DHSVrpL1.js +0 -1
  126. package/dist/client/assets/classDiagram-4FO5ZUOK-CTu3cN1i.js +0 -1
  127. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CTu3cN1i.js +0 -1
  128. package/dist/client/assets/index-CbmH1ED8.css +0 -1
  129. package/dist/client/assets/index-rfsTNfpA.js +0 -2511
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion/pi-claude-cli",
3
- "version": "0.56.1",
3
+ "version": "0.57.0",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "main": "index.ts",
@@ -987,6 +987,10 @@ declare class MissionStore extends EventEmitter<MissionStoreEvents> {
987
987
  createGeneratedFixFeature(sourceFeatureId: string, runId: string, failedAssertionIds: string[], failureReason?: string, title?: string): MissionFeature;
988
988
  findGeneratedFixFeature(sourceFeatureId: string, runId: string): MissionFeature | undefined;
989
989
  findOpenGeneratedFixFeature(sourceFeatureId: string): MissionFeature | undefined;
990
+ reconcileSupersededGeneratedFixFeatures(sliceId: string): {
991
+ supersededCount: number;
992
+ featureIds: string[];
993
+ };
990
994
  getFeatureLoopSnapshot(featureId: string): MissionFeatureLoopSnapshot;
991
995
  transitionLoopState(featureId: string, newState: FeatureLoopState): MissionFeature;
992
996
  addContractAssertion(milestoneId: string, input: ContractAssertionCreateInput): MissionContractAssertion;
@@ -2844,6 +2848,15 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
2844
2848
  column?: ColumnId;
2845
2849
  startupMemo?: boolean;
2846
2850
  }): Promise<Task[]>;
2851
+ listArchivedTasks(options?: {
2852
+ limit?: number;
2853
+ offset?: number;
2854
+ slim?: boolean;
2855
+ }): Promise<{
2856
+ tasks: Task[];
2857
+ total: number;
2858
+ hasMore: boolean;
2859
+ }>;
2847
2860
  getBranchProgressByTask(taskIds: readonly string[]): Map<string, Array<{
2848
2861
  branchId: string;
2849
2862
  nodeId: string;
@@ -3050,6 +3063,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3050
3063
  missionId?: string | null;
3051
3064
  sliceId?: string | null;
3052
3065
  }, runContext?: RunMutationContext): Promise<Task>;
3066
+ private isTaskTerminalNodeId;
3053
3067
  updateTaskAtomic(id: string, updater: (current: Task) => Parameters<TaskStore["updateTask"]>[1] | null | undefined | Promise<Parameters<TaskStore["updateTask"]>[1] | null | undefined>, runContext?: RunMutationContext): Promise<Task>;
3054
3068
  private mergeCustomFieldPatch;
3055
3069
  updateTaskCustomFields(taskId: string, patch: Record<string, unknown>, runContext?: RunMutationContext): Promise<{
@@ -3069,6 +3083,10 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3069
3083
  getWorkflowPromptOverrides(workflowId: string, projectId: string): Record<string, string>;
3070
3084
  updateWorkflowPromptOverrides(workflowId: string, projectId: string, patch: Record<string, string | null | undefined>): Record<string, string>;
3071
3085
  updateWorkflowSettingValues(workflowId: string, projectId: string, patch: Record<string, unknown>): Promise<Record<string, unknown>>;
3086
+ updateWorkflowSettingValuesWithPrevious(workflowId: string, projectId: string, patch: Record<string, unknown>): Promise<{
3087
+ previous: Record<string, unknown>;
3088
+ stored: Record<string, unknown>;
3089
+ }>;
3072
3090
  private updateTaskUnlocked;
3073
3091
  pauseTask(id: string, paused: boolean, runContext?: RunMutationContext, agentOptions?: {
3074
3092
  pausedByAgentId?: string;
@@ -3328,6 +3346,21 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3328
3346
  deleteWorkflowDefinition(id: string): Promise<void>;
3329
3347
  private workflowColumnsFlagOn;
3330
3348
  private listWorkflowOccupantTaskIds;
3349
+ private static readonly MODEL_LANES;
3350
+ getModelLaneDrift(workflowId: string, before: Record<string, unknown>, after: Record<string, unknown>, options?: {
3351
+ includeNullSelection?: boolean;
3352
+ }): Array<{
3353
+ lane: string;
3354
+ from: {
3355
+ provider: string | null;
3356
+ modelId: string | null;
3357
+ };
3358
+ to: {
3359
+ provider: string | null;
3360
+ modelId: string | null;
3361
+ };
3362
+ taskIds: string[];
3363
+ }>;
3331
3364
  private occupantsByColumnForWorkflow;
3332
3365
  private rehomeOccupant;
3333
3366
  runWorkflowColumnsIntegrityPass(): Promise<{
@@ -4469,6 +4502,7 @@ interface CustomProvider {
4469
4502
  baseUrl: string;
4470
4503
  apiKey?: string;
4471
4504
  supportsDeveloperRole?: boolean;
4505
+ anthropicPromptCaching?: boolean;
4472
4506
  models?: {
4473
4507
  id: string;
4474
4508
  name: string;
@@ -5875,6 +5909,7 @@ interface ProjectSettings {
5875
5909
  autoArchiveDoneTasksEnabled?: boolean;
5876
5910
  autoArchiveDoneAfterMs?: number;
5877
5911
  doneAutoArchiveDays?: number;
5912
+ autoArchiveDuplicateTasksEnabled?: boolean;
5878
5913
  archiveAgentLogMode?: ArchiveAgentLogMode;
5879
5914
  autoUpdatePrStatus?: boolean;
5880
5915
  githubCommentOnDone?: boolean;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/acp-runtime",
3
- "version": "0.1.21",
3
+ "version": "0.1.22",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/cli-printing-press",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/compound-engineering",
3
- "version": "0.1.21",
3
+ "version": "0.1.22",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/cursor-runtime",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/dependency-graph",
3
- "version": "0.1.52",
3
+ "version": "0.1.53",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/droid-runtime",
3
- "version": "0.1.47",
3
+ "version": "0.1.48",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -165,16 +165,16 @@ function stripChrome(text) {
165
165
  return filtered.join("\n").trim();
166
166
  }
167
167
  function parseHermesOutput(rawStdout, rawStderr) {
168
- const cleaned = cleanText(rawStdout);
169
- const match = SESSION_ID_RE.exec(cleaned);
168
+ const cleanedStdout = cleanText(rawStdout);
169
+ const cleanedCombined = cleanText([rawStdout, rawStderr].filter(Boolean).join("\n"));
170
+ const stdoutMatch = SESSION_ID_RE.exec(cleanedStdout);
171
+ const match = stdoutMatch ?? SESSION_ID_RE.exec(cleanedCombined);
170
172
  if (!match) {
171
- const combined = [rawStdout, rawStderr].filter(Boolean).join("\n");
172
173
  throw new Error(`hermes: missing session_id in output.
173
- ${combined}`);
174
+ ${cleanedCombined}`);
174
175
  }
175
176
  const sessionId = match[1];
176
- const sessionIdLineStart = cleaned.lastIndexOf("\nsession_id:");
177
- const bodyRaw = sessionIdLineStart >= 0 ? cleaned.slice(0, sessionIdLineStart) : cleaned;
177
+ const bodyRaw = stdoutMatch ? cleanedStdout.slice(0, stdoutMatch.index) : cleanedStdout;
178
178
  const body = stripChrome(bodyRaw);
179
179
  return { body, sessionId };
180
180
  }
@@ -444,10 +444,12 @@ var HermesRuntimeAdapter = class {
444
444
  );
445
445
  }
446
446
  async createSession(options) {
447
+ const messages = [];
447
448
  const session = {
448
449
  model: void 0,
449
450
  systemPrompt: options.systemPrompt,
450
- messages: [],
451
+ messages,
452
+ state: { messages },
451
453
  apiKey: void 0,
452
454
  thinkingLevel: void 0,
453
455
  sessionId: "",
@@ -470,9 +472,20 @@ var HermesRuntimeAdapter = class {
470
472
 
471
473
  User request:
472
474
  ${prompt}`;
473
- const result = await invokeHermesCli(promptWithContext, this.settings, resumeId);
475
+ const userMessage = { role: "user", content: prompt };
476
+ session.messages.push(userMessage);
477
+ let result;
478
+ try {
479
+ result = await invokeHermesCli(promptWithContext, this.settings, resumeId);
480
+ session.state.errorMessage = void 0;
481
+ } catch (err) {
482
+ session.messages.pop();
483
+ session.state.errorMessage = err instanceof Error ? err.message : String(err);
484
+ throw err;
485
+ }
474
486
  session.sessionId = result.sessionId;
475
487
  session.lastModelDescription = this.describeFromSettings();
488
+ session.messages.push({ role: "assistant", content: result.body });
476
489
  if (result.body) {
477
490
  session.callbacks.onText?.(result.body);
478
491
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/hermes-runtime",
3
- "version": "0.2.71",
3
+ "version": "0.2.72",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/linear-import",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/openclaw-runtime",
3
- "version": "0.2.71",
3
+ "version": "0.2.72",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/paperclip-runtime",
3
- "version": "0.2.71",
3
+ "version": "0.2.72",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/reports",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/roadmap",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/whatsapp-chat",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "exports": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runfusion/fusion",
3
- "version": "0.56.1",
3
+ "version": "0.57.0",
4
4
  "license": "MIT",
5
5
  "description": "Fusion CLI: HTTP API server, daemon, dashboard launcher, and task tooling for the Fusion AI coding agent.",
6
6
  "homepage": "https://github.com/Runfusion/Fusion#readme",
@@ -104,11 +104,12 @@ Request a refinement of a completed or in-review task. Creates a new follow-up t
104
104
 
105
105
  ### fn_task_archive
106
106
 
107
- Archive a task from any live column (move to archived). Archived tasks are preserved for historical reference but moved out of the main board view.
107
+ Archive a task from any live column (move to archived). Archived tasks are preserved for historical reference but moved out of the main board view. If the task is still referenced as a lineage parent by another task, archiving is rejected unless removeLineageReferences:true is passed.
108
108
 
109
109
  | Parameter | Type | Required | Description |
110
110
  |-----------|------|----------|-------------|
111
111
  | `id` | string | ✓ | Task ID to archive from any live column (e.g. FN-001). |
112
+ | `removeLineageReferences` | boolean | — | When true, clear incoming lineage-parent references (child sourceParentTaskId) before archiving, so a task still referenced as a lineage parent can be archived. |
112
113
 
113
114
  ### fn_task_unarchive
114
115
 
@@ -120,12 +121,13 @@ Unarchive an archived task (move from archived → its restore column). Restores
120
121
 
121
122
  ### fn_task_delete
122
123
 
123
- Soft-delete a task from active Fusion board views. The task row and artifacts are preserved; optional allowResurrection marks the ID for intentional recreation.
124
+ Soft-delete a task from active Fusion board views. The task row and artifacts are preserved; optional allowResurrection marks the ID for intentional recreation. If the task is still referenced as a lineage parent by another task, deletion is rejected unless removeLineageReferences:true is passed.
124
125
 
125
126
  | Parameter | Type | Required | Description |
126
127
  |-----------|------|----------|-------------|
127
128
  | `id` | string | ✓ | Task ID to delete (e.g. FN-001) |
128
129
  | `allowResurrection` | boolean | — | When true, mark this tombstone as explicitly reusable for future recreation. |
130
+ | `removeLineageReferences` | boolean | — | When true, clear incoming lineage-parent references (child sourceParentTaskId) before deleting, so a task still referenced as a lineage parent can be removed. |
129
131
 
130
132
  ### fn_task_browse_gitlab_project_issues
131
133
 
@@ -30,9 +30,9 @@ All skill/extension tool invocations in this catalog use the public `fn_*` names
30
30
  | `fn_task_retry` | Retry a failed task — clears the error state. Non-review failures move to todo; in-review execution failures move to todo preserving progress; in-review merge failures stay in-place for auto-merge retry. |
31
31
  | `fn_task_duplicate` | Duplicate an existing task, creating a fresh copy in planning. Copies the title and description but resets all execution state. The AI planning agent will replan the new task. |
32
32
  | `fn_task_refine` | Request a refinement of a completed or in-review task. Creates a new follow-up task in planning that references the original task as a dependency. Use this when a done or in-review task needs additional work, improvements, or follow-up changes. |
33
- | `fn_task_archive` | Archive a task from any live column (move to archived). Archived tasks are preserved for historical reference but moved out of the main board view. |
33
+ | `fn_task_archive` | Archive a task from any live column (move to archived). Archived tasks are preserved for historical reference but moved out of the main board view. If the task is still referenced as a lineage parent by another task, archiving is rejected unless removeLineageReferences:true is passed. |
34
34
  | `fn_task_unarchive` | Unarchive an archived task (move from archived → its restore column). Restores to the pre-archive column when available, with active execution columns downgraded to todo. |
35
- | `fn_task_delete` | Soft-delete a task from active Fusion board views. The task row and artifacts are preserved; optional allowResurrection marks the ID for intentional recreation. |
35
+ | `fn_task_delete` | Soft-delete a task from active Fusion board views. The task row and artifacts are preserved; optional allowResurrection marks the ID for intentional recreation. If the task is still referenced as a lineage parent by another task, deletion is rejected unless removeLineageReferences:true is passed. |
36
36
  | `fn_task_import_github` | Import GitHub issues as Fusion tasks. Fetches open issues from a repository and creates tasks in the planning column. Each task includes the issue title and body with a link to the source issue. |
37
37
  | `fn_task_import_github_issue` | Import a specific GitHub issue as a Fusion task. Fetches the issue by number and creates a single task in the planning column with the issue title and body. |
38
38
  | `fn_task_browse_github_issues` | List open GitHub issues from a repository to browse before importing. Returns issue numbers, titles, and URLs for selection. Use with fn_task_import_github_issue to import specific issues by number. |