@runfusion/fusion 0.54.0 → 0.55.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 (135) hide show
  1. package/dist/bin.js +3384 -768
  2. package/dist/client/.vite/manifest.json +283 -251
  3. package/dist/client/assets/AgentDetailView-B_VfFSlt.js +18 -0
  4. package/dist/client/assets/{AgentDetailView-BzSyldiW.css → AgentDetailView-D7UY2Tup.css} +1 -1
  5. package/dist/client/assets/{AgentPermissionPolicyEditor-D2AQ6swg.js → AgentPermissionPolicyEditor-QZhz41AU.js} +1 -1
  6. package/dist/client/assets/{AgentsView-DwEFPKuN.js → AgentsView-hkhJ8SUq.js} +6 -6
  7. package/dist/client/assets/ChatView-B4WnXLYA.js +6 -0
  8. package/dist/client/assets/{CommandCenter-BABqoSkg.js → CommandCenter-B3fAajUO.js} +16 -16
  9. package/dist/client/assets/{DevServerView-DlgOzRdC.js → DevServerView-BR0ngFBw.js} +1 -1
  10. package/dist/client/assets/{DirectoryPicker-BwMSmxYS.js → DirectoryPicker-BiS41Hca.js} +1 -1
  11. package/dist/client/assets/DocumentsView-BnRvIUpa.js +1 -0
  12. package/dist/client/assets/{EvalsView-CQBNrO5n.js → EvalsView-Bvx18QyC.js} +1 -1
  13. package/dist/client/assets/{ExperimentalAgentOnboardingModal-2SDqP2lc.js → ExperimentalAgentOnboardingModal-CKGJcfXI.js} +1 -1
  14. package/dist/client/assets/{GoalsView-BgkX-_SB.js → GoalsView-Bj1yVIiv.js} +1 -1
  15. package/dist/client/assets/{InsightsView-CJY4eZcO.js → InsightsView-DBX8DI60.js} +2 -2
  16. package/dist/client/assets/{MemoryView-5Crtfanz.js → MemoryView-CqkRH2fa.js} +1 -1
  17. package/dist/client/assets/{PiExtensionsManager-COmzskVa.js → PiExtensionsManager-BMMmGWe2.js} +2 -2
  18. package/dist/client/assets/PluginManager-C1bdfN2W.js +1 -0
  19. package/dist/client/assets/{PullRequestView-DAHh0FVM.js → PullRequestView-D0CsXWLl.js} +2 -2
  20. package/dist/client/assets/{ResearchView-cSUka3sd.js → ResearchView-CVgmXAlj.js} +1 -1
  21. package/dist/client/assets/{SecretsView-ChFAfFRY.js → SecretsView-Bv_gw5Ix.js} +1 -1
  22. package/dist/client/assets/{SessionTerminal-D4R3ScvQ.css → SessionTerminal-BvK8A98c.css} +1 -1
  23. package/dist/client/assets/{SessionTerminal-CtQKDaqI.js → SessionTerminal-VLdVV3Ji.js} +1 -1
  24. package/dist/client/assets/{SettingsModal-BzZNPNIh.css → SettingsModal-4t8rV7rh.css} +1 -1
  25. package/dist/client/assets/{SettingsModal-pAz_hOoN.js → SettingsModal-D7YgojbV.js} +1 -1
  26. package/dist/client/assets/SettingsModal-gcrh5EOG.js +21 -0
  27. package/dist/client/assets/SetupWizardModal-DvmTlFP_.js +2 -0
  28. package/dist/client/assets/{ShadcnColorPicker-CsfgWpf6.js → ShadcnColorPicker-DM2fqGwl.js} +1 -1
  29. package/dist/client/assets/{SkillsView-BSUplEYb.js → SkillsView-Bb-JTo99.js} +1 -1
  30. package/dist/client/assets/{TodoView-DhBseLvM.js → TodoView-bV-7deOh.js} +1 -1
  31. package/dist/client/assets/{WorkflowNodeEditor-Bi12CNif.js → WorkflowNodeEditor-Ui1q_fFI.js} +3 -3
  32. package/dist/client/assets/{agentSkills-qVb0x_G3.js → agentSkills-DGFyuKuP.js} +1 -1
  33. package/dist/client/assets/{app-DczBmsP4.js → app--OM-ul6R.js} +3 -3
  34. package/dist/client/assets/{app-BhtYYxin.js → app-BCvqf8qq.js} +3 -3
  35. package/dist/client/assets/app-BZqqEiWR.js +13 -0
  36. package/dist/client/assets/{app-5S4z84u5.js → app-DQeH1UDD.js} +3 -3
  37. package/dist/client/assets/{app-Cts0__Vx.js → app-FiYwRatp.js} +3 -3
  38. package/dist/client/assets/{app-_GFUqcMK.js → app-rGdYcsAA.js} +3 -3
  39. package/dist/client/assets/{architectureDiagram-3BPJPVTR-DEt4eIEQ.js → architectureDiagram-3BPJPVTR-DP7vOyXY.js} +1 -1
  40. package/dist/client/assets/{blockDiagram-GPEHLZMM-CJuX0UM_.js → blockDiagram-GPEHLZMM-Di9v1pV8.js} +1 -1
  41. package/dist/client/assets/{c4Diagram-AAUBKEIU-a46Lm113.js → c4Diagram-AAUBKEIU-Dvb8RSfr.js} +1 -1
  42. package/dist/client/assets/channel-C5g9M3Sk.js +1 -0
  43. package/dist/client/assets/{chunk-2J33WTMH-iBhwyS0c.js → chunk-2J33WTMH-gLcAuGjI.js} +1 -1
  44. package/dist/client/assets/{chunk-4BX2VUAB-C7lS5wER.js → chunk-4BX2VUAB-B-B0wjkx.js} +1 -1
  45. package/dist/client/assets/{chunk-55IACEB6-CQ6YOncn.js → chunk-55IACEB6-XUDeC0Co.js} +1 -1
  46. package/dist/client/assets/{chunk-727SXJPM-CveMaMKK.js → chunk-727SXJPM-1eebiGA2.js} +1 -1
  47. package/dist/client/assets/{chunk-AQP2D5EJ-DErjGUEk.js → chunk-AQP2D5EJ-D9VOB5QS.js} +1 -1
  48. package/dist/client/assets/{chunk-FMBD7UC4-DXUvEFfJ.js → chunk-FMBD7UC4-EFNFEaAz.js} +1 -1
  49. package/dist/client/assets/{chunk-ND2GUHAM-w5RqSj1J.js → chunk-ND2GUHAM-CbeQailD.js} +1 -1
  50. package/dist/client/assets/{chunk-QZHKN3VN-CAi0lJ7V.js → chunk-QZHKN3VN-D55N6EBz.js} +1 -1
  51. package/dist/client/assets/classDiagram-4FO5ZUOK-B-wdlvD6.js +1 -0
  52. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B-wdlvD6.js +1 -0
  53. package/dist/client/assets/{cose-bilkent-S5V4N54A-Ck2h4uV5.js → cose-bilkent-S5V4N54A-B0zbhkX3.js} +1 -1
  54. package/dist/client/assets/createLucideIcon-CshVyKO4.js +21 -0
  55. package/dist/client/assets/{dagre-BM42HDAG-BCRTXNj6.js → dagre-BM42HDAG-BL6peXwl.js} +1 -1
  56. package/dist/client/assets/dashboard-view-Bsdq3OM4.css +1 -0
  57. package/dist/client/assets/dashboard-view-CS1H5SQN.js +1 -0
  58. package/dist/client/assets/dashboard-view-DafOfnxI.js +1 -0
  59. package/dist/client/assets/{dashboard-view-D9rF_PCq.js → dashboard-view-Db3n_W85.js} +1320 -1335
  60. package/dist/client/assets/{diagram-2AECGRRQ-DTTk-DYO.js → diagram-2AECGRRQ-cYKwSHk7.js} +1 -1
  61. package/dist/client/assets/{diagram-5GNKFQAL-jDc9kMi2.js → diagram-5GNKFQAL-DHIwTGuM.js} +1 -1
  62. package/dist/client/assets/{diagram-KO2AKTUF-CcLmzlGr.js → diagram-KO2AKTUF-DfHBJ4aX.js} +1 -1
  63. package/dist/client/assets/{diagram-LMA3HP47-DCW8XKQj.js → diagram-LMA3HP47-pWhYmB6Z.js} +1 -1
  64. package/dist/client/assets/{diagram-OG6HWLK6-wbbKquPs.js → diagram-OG6HWLK6-GzWqbi_m.js} +1 -1
  65. package/dist/client/assets/{erDiagram-TEJ5UH35-Fo933Mo7.js → erDiagram-TEJ5UH35-CCVm5eiR.js} +1 -1
  66. package/dist/client/assets/{flowDiagram-I6XJVG4X-Dfum7HZP.js → flowDiagram-I6XJVG4X-CUTdnU6S.js} +1 -1
  67. package/dist/client/assets/{folder-open-B8vOwFeP.js → folder-open-DOCy9GVC.js} +1 -1
  68. package/dist/client/assets/{ganttDiagram-6RSMTGT7-BzEBCn01.js → ganttDiagram-6RSMTGT7-CW4ENJaC.js} +1 -1
  69. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CgovghHs.js → gitGraphDiagram-PVQCEYII-QXXMfSzp.js} +1 -1
  70. package/dist/client/assets/index-B6ttSchA.js +1336 -0
  71. package/dist/client/assets/index-CPE2Kwra.css +1 -0
  72. package/dist/client/assets/{infoDiagram-5YYISTIA-BzpU4Wys.js → infoDiagram-5YYISTIA-CZyHbj0n.js} +1 -1
  73. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-cpp5pozu.js → ishikawaDiagram-YF4QCWOH-Dea84lqZ.js} +1 -1
  74. package/dist/client/assets/{journeyDiagram-JHISSGLW-BVjcw6oo.js → journeyDiagram-JHISSGLW-Db2iKGU5.js} +1 -1
  75. package/dist/client/assets/{kanban-definition-UN3LZRKU-4unAhBzo.js → kanban-definition-UN3LZRKU-CB9loIqR.js} +1 -1
  76. package/dist/client/assets/loader-circle-CMNcxXXr.js +16 -0
  77. package/dist/client/assets/{mermaid.core-DzIyUj9t.js → mermaid.core-CoQ8aCb0.js} +4 -4
  78. package/dist/client/assets/{mindmap-definition-RKZ34NQL-Be_yfVir.js → mindmap-definition-RKZ34NQL-JPb2wF-K.js} +1 -1
  79. package/dist/client/assets/{pieDiagram-4H26LBE5-Cfnw2aji.js → pieDiagram-4H26LBE5-pdZzOreP.js} +1 -1
  80. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-BFlC-_Uo.js → quadrantDiagram-W4KKPZXB-Dh9Ids90.js} +1 -1
  81. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DpVPzCOx.js → requirementDiagram-4Y6WPE33-BVPOSvHU.js} +1 -1
  82. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DM-gKKP0.js → sankeyDiagram-5OEKKPKP-BqSMUpsx.js} +1 -1
  83. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DjhZCZhd.js → sequenceDiagram-3UESZ5HK-B8nepQ6X.js} +1 -1
  84. package/dist/client/assets/{shield-alert-DCfkjjYc.js → shield-alert-CtSaIQNY.js} +1 -1
  85. package/dist/client/assets/{stateDiagram-AJRCARHV-BCA96rdI.js → stateDiagram-AJRCARHV-CQv9RdRp.js} +1 -1
  86. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-DHds08RS.js → stateDiagram-v2-BHNVJYJU-BZ_mlvie.js} +1 -1
  87. package/dist/client/assets/{timeline-definition-PNZ67QCA-CHW2OQRw.js → timeline-definition-PNZ67QCA-CAjwM-Z5.js} +1 -1
  88. package/dist/client/assets/{upload-EJc5PJPz.js → upload-0_pT1euA.js} +1 -1
  89. package/dist/client/assets/{users-C-e-99Vp.js → users--1B6mnm8.js} +1 -1
  90. package/dist/client/assets/{vennDiagram-CIIHVFJN-shGh4eBY.js → vennDiagram-CIIHVFJN-BO3Um3rH.js} +1 -1
  91. package/dist/client/assets/{wardley-L42UT6IY-l0RGrVhn.js → wardley-L42UT6IY-BzqJcqDA.js} +1 -1
  92. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-C-USmO8A.js → wardleyDiagram-YWT4CUSO-Bctxc6_5.js} +1 -1
  93. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CHX9Umta.js → xychartDiagram-2RQKCTM6-CgDuiMFR.js} +1 -1
  94. package/dist/client/assets/zoom-out-DzDzWQt1.js +21 -0
  95. package/dist/client/index.html +13 -4
  96. package/dist/client/version.json +1 -1
  97. package/dist/droid-cli/package.json +1 -1
  98. package/dist/extension.js +2066 -271
  99. package/dist/pi-claude-cli/package.json +1 -1
  100. package/dist/plugin-sdk/index.d.ts +61 -1
  101. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  102. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  103. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  104. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +70 -25
  105. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  106. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  107. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  108. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  109. package/dist/plugins/fusion-plugin-linear-import/bundled.js +658 -0
  110. package/dist/plugins/fusion-plugin-linear-import/manifest.json +48 -0
  111. package/dist/plugins/fusion-plugin-linear-import/package.json +11 -0
  112. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  113. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  114. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  115. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  116. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  117. package/package.json +2 -1
  118. package/skill/fusion/SKILL.md +2 -2
  119. package/skill/fusion/references/engine-tools.md +1 -0
  120. package/skill/fusion/references/extension-tools.md +81 -0
  121. package/skill/fusion/references/fusion-capabilities.md +7 -0
  122. package/dist/client/assets/AgentDetailView-BJditQat.js +0 -18
  123. package/dist/client/assets/ChatView-B4bjPXFN.js +0 -6
  124. package/dist/client/assets/DocumentsView-BfaRXFg5.js +0 -1
  125. package/dist/client/assets/PluginManager-CGWXqZMa.js +0 -1
  126. package/dist/client/assets/SettingsModal-BYaotQ2o.js +0 -21
  127. package/dist/client/assets/SetupWizardModal-eHZHi8VP.js +0 -2
  128. package/dist/client/assets/app-B1VYocx2.js +0 -13
  129. package/dist/client/assets/channel-BGI9APMr.js +0 -1
  130. package/dist/client/assets/classDiagram-4FO5ZUOK-g6hCcufy.js +0 -1
  131. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-g6hCcufy.js +0 -1
  132. package/dist/client/assets/dashboard-view-BfLJ60Kd.js +0 -1
  133. package/dist/client/assets/index-BjELA24x.js +0 -1336
  134. package/dist/client/assets/index-DwGW7OJh.css +0 -1
  135. package/dist/client/assets/zoom-out-NWbVkreR.js +0 -41
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion/pi-claude-cli",
3
- "version": "0.54.0",
3
+ "version": "0.55.0",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "main": "index.ts",
@@ -2858,6 +2858,14 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
2858
2858
  tasks: Task[];
2859
2859
  hasMore: boolean;
2860
2860
  }>;
2861
+ listTasksForGitlabTrackingReconcile(options?: {
2862
+ offset?: number;
2863
+ limit?: number;
2864
+ }): Promise<{
2865
+ tasks: Task[];
2866
+ hasMore: boolean;
2867
+ }>;
2868
+ private listTasksForProviderTrackingReconcile;
2861
2869
  listStrandedRefinements(options?: {
2862
2870
  freshnessThresholdMs?: number;
2863
2871
  }): Promise<Array<{
@@ -3013,6 +3021,9 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3013
3021
  sourceIssue?: TaskSourceIssue | null;
3014
3022
  sourceMetadataPatch?: Record<string, unknown> | null;
3015
3023
  githubTracking?: TaskGithubTracking | null;
3024
+ gitlabTracking?: (Omit<TaskGitLabTracking, "item"> & {
3025
+ item?: TaskGitLabTrackedItem | null;
3026
+ }) | null;
3016
3027
  tokenUsage?: TaskTokenUsage | null;
3017
3028
  modifiedFiles?: string[] | null;
3018
3029
  workflowTransitionNotification?: Task["workflowTransitionNotification"] | null;
@@ -3249,6 +3260,9 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3249
3260
  updateGithubTracking(id: string, tracking: TaskGithubTracking | null): Promise<Task>;
3250
3261
  linkGithubIssue(id: string, issue: TaskGithubTrackedIssue): Promise<Task>;
3251
3262
  unlinkGithubIssue(id: string): Promise<Task>;
3263
+ updateGitLabTracking(id: string, tracking: TaskGitLabTracking | null): Promise<Task>;
3264
+ linkGitLabItem(id: string, item: TaskGitLabTrackedItem): Promise<Task>;
3265
+ unlinkGitLabItem(id: string): Promise<Task>;
3252
3266
  getAgentLogs(taskId: string, options?: {
3253
3267
  limit?: number;
3254
3268
  offset?: number;
@@ -3964,6 +3978,7 @@ declare class Database {
3964
3978
  private static readonly sharedIntegrityChecks;
3965
3979
  private db;
3966
3980
  private readonly dbPath;
3981
+ private readonly fusionDir;
3967
3982
  private readonly inMemory;
3968
3983
  get path(): string;
3969
3984
  corruptionDetected: boolean;
@@ -4058,6 +4073,8 @@ declare class Database {
4058
4073
  private setMetaValue;
4059
4074
  private static readonly PROJECT_IDENTITY_META_KEY;
4060
4075
  getProjectIdentity(): ProjectIdentity | undefined;
4076
+ private parseWorkflowSettingsJson;
4077
+ private reconcileWorkflowSettingsRootDirProjectId;
4061
4078
  setProjectIdentity(identity: ProjectIdentity, options?: {
4062
4079
  force?: boolean;
4063
4080
  }): void;
@@ -4525,6 +4542,30 @@ interface TaskGithubTrackedIssue {
4525
4542
  lastSyncedAt?: string;
4526
4543
  }
4527
4544
  type GithubIssueAction = "close" | "delete" | "leave" | "auto";
4545
+ type GitLabTrackedItemKind = "project_issue" | "group_issue" | "merge_request";
4546
+ interface TaskGitLabTrackedItem {
4547
+ kind: GitLabTrackedItemKind;
4548
+ url: string;
4549
+ instanceUrl: string;
4550
+ host: string;
4551
+ iid: number;
4552
+ id?: number;
4553
+ projectId?: number;
4554
+ projectPath?: string;
4555
+ groupId?: number | string;
4556
+ groupPath?: string;
4557
+ title?: string;
4558
+ state?: string;
4559
+ createdAt: string;
4560
+ linkedAt?: string;
4561
+ lastSyncedAt?: string;
4562
+ staleAt?: string;
4563
+ staleReason?: string;
4564
+ }
4565
+ interface TaskGitLabTracking {
4566
+ item?: TaskGitLabTrackedItem;
4567
+ unlinkedAt?: string;
4568
+ }
4528
4569
  interface TaskGithubTracking {
4529
4570
  enabled?: boolean;
4530
4571
  repoOverride?: string;
@@ -4952,7 +4993,7 @@ interface TaskTokenBudgetOverride {
4952
4993
  raisedAt?: string;
4953
4994
  reason?: string;
4954
4995
  }
4955
- type SourceType = "dashboard_ui" | "quick_chat" | "chat_session" | "agent_heartbeat" | "automation" | "cron" | "workflow_step" | "github_import" | "task_refine" | "task_duplicate" | "cli" | "api" | "recovery" | "research" | "unknown";
4996
+ type SourceType = "dashboard_ui" | "quick_chat" | "chat_session" | "agent_heartbeat" | "automation" | "cron" | "workflow_step" | "github_import" | "gitlab_import" | "task_refine" | "task_duplicate" | "cli" | "api" | "recovery" | "research" | "unknown";
4956
4997
  interface TaskSource {
4957
4998
  sourceType: SourceType;
4958
4999
  sourceAgentId?: string;
@@ -5136,6 +5177,7 @@ interface Task {
5136
5177
  githubTracking?: TaskGithubTracking;
5137
5178
  source?: TaskSource;
5138
5179
  sourceIssue?: TaskSourceIssue;
5180
+ gitlabTracking?: TaskGitLabTracking;
5139
5181
  log: TaskLogEntry[];
5140
5182
  timedExecutionMs?: number;
5141
5183
  inReviewStall?: InReviewStallSignal;
@@ -5246,6 +5288,7 @@ interface TaskCreateInput {
5246
5288
  branchContext?: TaskBranchContext;
5247
5289
  autoMerge?: boolean;
5248
5290
  sourceIssue?: TaskSourceIssue;
5291
+ gitlabTracking?: TaskGitLabTracking;
5249
5292
  tokenUsage?: TaskTokenUsage;
5250
5293
  source?: TaskSource;
5251
5294
  priority?: TaskPriority;
@@ -5481,12 +5524,19 @@ interface GlobalSettings {
5481
5524
  updateCheckEnabled?: boolean;
5482
5525
  fnBinaryCheckEnabled?: boolean;
5483
5526
  githubTrackingDefaultRepo?: string;
5527
+ gitlabEnabled?: boolean;
5528
+ gitlabInstanceUrl?: string;
5529
+ gitlabApiBaseUrl?: string;
5530
+ gitlabAuthToken?: string;
5531
+ gitlabAuthTokenType?: GitlabAuthTokenType;
5484
5532
  updateCheckFrequency?: "manual" | "on-startup" | "daily" | "weekly";
5485
5533
  autoReloadOnVersionChange?: boolean;
5486
5534
  modelOnboardingComplete?: boolean;
5487
5535
  useClaudeCli?: boolean;
5488
5536
  useDroidCli?: boolean;
5489
5537
  useLlamaCpp?: boolean;
5538
+ useCursorCli?: boolean;
5539
+ cursorCliBinaryPath?: string;
5490
5540
  executionGlobalProvider?: string;
5491
5541
  executionGlobalModelId?: string;
5492
5542
  planningGlobalProvider?: string;
@@ -5579,6 +5629,7 @@ interface RemoteAccessProjectSettings {
5579
5629
  lifecycle: RemoteAccessLifecycleConfig;
5580
5630
  }
5581
5631
  type GithubAuthMode = "gh-cli" | "token";
5632
+ type GitlabAuthTokenType = "personal" | "project" | "group";
5582
5633
  interface SecretsEnvSettings {
5583
5634
  enabled?: boolean;
5584
5635
  filename?: string;
@@ -5791,6 +5842,14 @@ interface ProjectSettings {
5791
5842
  githubTrackingEnabledByDefault?: boolean;
5792
5843
  githubLinkImportedIssuesToTracking?: boolean;
5793
5844
  githubTrackingDefaultRepo?: string;
5845
+ gitlabEnabled?: boolean;
5846
+ gitlabInstanceUrl?: string;
5847
+ gitlabApiBaseUrl?: string;
5848
+ gitlabAuthToken?: string;
5849
+ gitlabAuthTokenType?: GitlabAuthTokenType;
5850
+ gitlabCommentOnDone?: boolean;
5851
+ gitlabCommentTemplate?: string;
5852
+ gitlabCloseSourceIssueOnDone?: boolean;
5794
5853
  githubTrackingDedupEnabled?: boolean;
5795
5854
  githubAuthMode?: GithubAuthMode;
5796
5855
  githubAuthToken?: string;
@@ -5991,6 +6050,7 @@ interface ArchivedTaskEntry {
5991
6050
  prInfos?: PrInfo[];
5992
6051
  issueInfo?: IssueInfo;
5993
6052
  githubTracking?: TaskGithubTracking;
6053
+ gitlabTracking?: TaskGitLabTracking;
5994
6054
  sourceIssue?: TaskSourceIssue;
5995
6055
  attachments?: TaskAttachment[];
5996
6056
  comments?: TaskComment[];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/acp-runtime",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
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.35",
3
+ "version": "0.1.36",
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.18",
3
+ "version": "0.1.19",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -10,17 +10,32 @@ function definePlugin(plugin2) {
10
10
 
11
11
  // ../../plugins/fusion-plugin-cursor-runtime/src/cli-spawn.ts
12
12
  import { spawn } from "node:child_process";
13
+ function formatSpawnError(error) {
14
+ const code = typeof error.code === "string" ? `${error.code}: ` : "";
15
+ return `spawn error: ${code}${error.message}`.trim();
16
+ }
13
17
  async function runCursorCommand(binary, args, timeoutMs) {
14
18
  return new Promise((resolve) => {
15
- const child = spawn(binary, args, { stdio: ["ignore", "pipe", "pipe"] });
16
19
  let stdout = "";
17
20
  let stderr = "";
18
- const timer = setTimeout(() => {
21
+ let settled = false;
22
+ let timer;
23
+ const finish = (result) => {
24
+ if (settled) return;
25
+ settled = true;
26
+ if (timer) clearTimeout(timer);
27
+ resolve(result);
28
+ };
29
+ const child = spawn(binary, args, {
30
+ stdio: ["ignore", "pipe", "pipe"],
31
+ shell: process.platform === "win32"
32
+ });
33
+ timer = setTimeout(() => {
19
34
  try {
20
35
  child.kill("SIGKILL");
21
36
  } catch {
22
37
  }
23
- resolve({ code: 124, stdout, stderr });
38
+ finish({ code: 124, stdout, stderr });
24
39
  }, timeoutMs);
25
40
  child.stdout?.on("data", (c) => {
26
41
  stdout += c.toString("utf-8");
@@ -28,33 +43,55 @@ async function runCursorCommand(binary, args, timeoutMs) {
28
43
  child.stderr?.on("data", (c) => {
29
44
  stderr += c.toString("utf-8");
30
45
  });
31
- child.once("error", () => {
32
- clearTimeout(timer);
33
- resolve({ code: 127, stdout, stderr });
46
+ child.once("error", (error) => {
47
+ const diagnostic = formatSpawnError(error);
48
+ stderr = stderr ? `${stderr}
49
+ ${diagnostic}` : diagnostic;
50
+ finish({ code: 127, stdout, stderr });
34
51
  });
35
52
  child.once("close", (code) => {
36
- clearTimeout(timer);
37
- resolve({ code, stdout, stderr });
53
+ finish({ code, stdout, stderr });
38
54
  });
39
55
  });
40
56
  }
41
57
 
42
58
  // ../../plugins/fusion-plugin-cursor-runtime/src/probe.ts
43
59
  var CANDIDATES = ["cursor-agent", "cursor"];
60
+ var MAX_FAILURE_DETAIL_LENGTH = 180;
61
+ function buildCandidates(binaryPath) {
62
+ const configuredBinaryPath = binaryPath?.trim() || void 0;
63
+ const ordered = configuredBinaryPath ? [configuredBinaryPath, ...CANDIDATES] : [...CANDIDATES];
64
+ return { candidates: Array.from(new Set(ordered)), configuredBinaryPath };
65
+ }
66
+ function summarizeFailure(binary, stdout, stderr) {
67
+ const detail = `${stderr || stdout}`.replace(/\s+/g, " ").trim();
68
+ if (!detail) return void 0;
69
+ const truncated = detail.length > MAX_FAILURE_DETAIL_LENGTH ? `${detail.slice(0, MAX_FAILURE_DETAIL_LENGTH - 1)}\u2026` : detail;
70
+ return `${binary}: ${truncated}`;
71
+ }
44
72
  async function probeCursorBinary(options) {
45
73
  const startedAt = Date.now();
46
74
  const timeoutMs = options?.timeoutMs ?? 3e3;
47
- const candidates = options?.binaryPath ? [options.binaryPath] : [...CANDIDATES];
75
+ const { candidates, configuredBinaryPath } = buildCandidates(options?.binaryPath);
76
+ const failureDetails = [];
48
77
  for (const binary of candidates) {
49
78
  const version = await runCursorCommand(binary, ["--version"], timeoutMs);
79
+ const failureDetail = summarizeFailure(binary, version.stdout, version.stderr);
80
+ if (failureDetail) failureDetails.push(failureDetail);
81
+ const common = {
82
+ binaryName: binary,
83
+ binaryPath: binary,
84
+ configuredBinaryPath,
85
+ usingConfiguredBinaryPath: configuredBinaryPath === binary,
86
+ diagnostics: failureDetails.length > 0 ? [...failureDetails] : void 0,
87
+ probeDurationMs: Date.now() - startedAt
88
+ };
50
89
  if (version.code === 0) {
51
90
  return {
52
91
  available: true,
53
92
  authenticated: true,
54
- binaryName: binary,
55
- binaryPath: binary,
56
- version: version.stdout.trim() || void 0,
57
- probeDurationMs: Date.now() - startedAt
93
+ ...common,
94
+ version: version.stdout.trim() || void 0
58
95
  };
59
96
  }
60
97
  const combined = `${version.stdout}
@@ -63,27 +100,27 @@ ${version.stderr}`.toLowerCase();
63
100
  return {
64
101
  available: true,
65
102
  authenticated: false,
66
- binaryName: binary,
67
- binaryPath: binary,
68
- reason: "macOS login keychain is locked",
69
- probeDurationMs: Date.now() - startedAt
103
+ ...common,
104
+ reason: "macOS login keychain is locked"
70
105
  };
71
106
  }
72
107
  if (combined.includes("no cursor ide installation found")) {
73
108
  return {
74
109
  available: true,
75
110
  authenticated: false,
76
- binaryName: binary,
77
- binaryPath: binary,
78
- reason: "Cursor IDE installation not found",
79
- probeDurationMs: Date.now() - startedAt
111
+ ...common,
112
+ reason: "Cursor IDE installation not found"
80
113
  };
81
114
  }
82
115
  }
116
+ const baseReason = configuredBinaryPath ? `Configured Cursor CLI binary '${configuredBinaryPath}' failed; PATH fallback cursor-agent/cursor also failed` : "cursor-agent/cursor not found on PATH";
83
117
  return {
84
118
  available: false,
85
119
  authenticated: false,
86
- reason: "cursor-agent/cursor not found on PATH",
120
+ configuredBinaryPath,
121
+ usingConfiguredBinaryPath: false,
122
+ diagnostics: failureDetails.length > 0 ? failureDetails : void 0,
123
+ reason: failureDetails.length > 0 ? `${baseReason} (${failureDetails.join("; ")})` : baseReason,
87
124
  probeDurationMs: Date.now() - startedAt
88
125
  };
89
126
  }
@@ -122,12 +159,20 @@ async function discoverCursorModels(binary, timeoutMs = 5e3) {
122
159
  }
123
160
 
124
161
  // ../../plugins/fusion-plugin-cursor-runtime/src/provider.ts
125
- async function discoverCursorProviderModels() {
126
- const probe = await probeCursorBinary();
162
+ function normalizeDiscoveryOptions(options) {
163
+ if (!options || typeof options !== "object") return {};
164
+ const record = options;
165
+ return {
166
+ binaryPath: typeof record.binaryPath === "string" ? record.binaryPath : void 0,
167
+ timeoutMs: typeof record.timeoutMs === "number" ? record.timeoutMs : void 0
168
+ };
169
+ }
170
+ async function discoverCursorProviderModels(options) {
171
+ const probe = await probeCursorBinary(normalizeDiscoveryOptions(options));
127
172
  if (!probe.available || !probe.binaryName) {
128
173
  return { models: [], source: "probe", fallbackUsed: true, reason: probe.reason ?? "binary unavailable" };
129
174
  }
130
- const result = await discoverCursorModels(probe.binaryName);
175
+ const result = await discoverCursorModels(probe.binaryPath ?? probe.binaryName);
131
176
  return {
132
177
  models: result.models.map((id) => ({ id, label: id })),
133
178
  source: result.source,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/cursor-runtime",
3
- "version": "0.1.37",
3
+ "version": "0.1.38",
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.49",
3
+ "version": "0.1.50",
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.44",
3
+ "version": "0.1.45",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/hermes-runtime",
3
- "version": "0.2.68",
3
+ "version": "0.2.69",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {