@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.
- package/dist/bin.js +3384 -768
- package/dist/client/.vite/manifest.json +283 -251
- package/dist/client/assets/AgentDetailView-B_VfFSlt.js +18 -0
- package/dist/client/assets/{AgentDetailView-BzSyldiW.css → AgentDetailView-D7UY2Tup.css} +1 -1
- package/dist/client/assets/{AgentPermissionPolicyEditor-D2AQ6swg.js → AgentPermissionPolicyEditor-QZhz41AU.js} +1 -1
- package/dist/client/assets/{AgentsView-DwEFPKuN.js → AgentsView-hkhJ8SUq.js} +6 -6
- package/dist/client/assets/ChatView-B4WnXLYA.js +6 -0
- package/dist/client/assets/{CommandCenter-BABqoSkg.js → CommandCenter-B3fAajUO.js} +16 -16
- package/dist/client/assets/{DevServerView-DlgOzRdC.js → DevServerView-BR0ngFBw.js} +1 -1
- package/dist/client/assets/{DirectoryPicker-BwMSmxYS.js → DirectoryPicker-BiS41Hca.js} +1 -1
- package/dist/client/assets/DocumentsView-BnRvIUpa.js +1 -0
- package/dist/client/assets/{EvalsView-CQBNrO5n.js → EvalsView-Bvx18QyC.js} +1 -1
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-2SDqP2lc.js → ExperimentalAgentOnboardingModal-CKGJcfXI.js} +1 -1
- package/dist/client/assets/{GoalsView-BgkX-_SB.js → GoalsView-Bj1yVIiv.js} +1 -1
- package/dist/client/assets/{InsightsView-CJY4eZcO.js → InsightsView-DBX8DI60.js} +2 -2
- package/dist/client/assets/{MemoryView-5Crtfanz.js → MemoryView-CqkRH2fa.js} +1 -1
- package/dist/client/assets/{PiExtensionsManager-COmzskVa.js → PiExtensionsManager-BMMmGWe2.js} +2 -2
- package/dist/client/assets/PluginManager-C1bdfN2W.js +1 -0
- package/dist/client/assets/{PullRequestView-DAHh0FVM.js → PullRequestView-D0CsXWLl.js} +2 -2
- package/dist/client/assets/{ResearchView-cSUka3sd.js → ResearchView-CVgmXAlj.js} +1 -1
- package/dist/client/assets/{SecretsView-ChFAfFRY.js → SecretsView-Bv_gw5Ix.js} +1 -1
- package/dist/client/assets/{SessionTerminal-D4R3ScvQ.css → SessionTerminal-BvK8A98c.css} +1 -1
- package/dist/client/assets/{SessionTerminal-CtQKDaqI.js → SessionTerminal-VLdVV3Ji.js} +1 -1
- package/dist/client/assets/{SettingsModal-BzZNPNIh.css → SettingsModal-4t8rV7rh.css} +1 -1
- package/dist/client/assets/{SettingsModal-pAz_hOoN.js → SettingsModal-D7YgojbV.js} +1 -1
- package/dist/client/assets/SettingsModal-gcrh5EOG.js +21 -0
- package/dist/client/assets/SetupWizardModal-DvmTlFP_.js +2 -0
- package/dist/client/assets/{ShadcnColorPicker-CsfgWpf6.js → ShadcnColorPicker-DM2fqGwl.js} +1 -1
- package/dist/client/assets/{SkillsView-BSUplEYb.js → SkillsView-Bb-JTo99.js} +1 -1
- package/dist/client/assets/{TodoView-DhBseLvM.js → TodoView-bV-7deOh.js} +1 -1
- package/dist/client/assets/{WorkflowNodeEditor-Bi12CNif.js → WorkflowNodeEditor-Ui1q_fFI.js} +3 -3
- package/dist/client/assets/{agentSkills-qVb0x_G3.js → agentSkills-DGFyuKuP.js} +1 -1
- package/dist/client/assets/{app-DczBmsP4.js → app--OM-ul6R.js} +3 -3
- package/dist/client/assets/{app-BhtYYxin.js → app-BCvqf8qq.js} +3 -3
- package/dist/client/assets/app-BZqqEiWR.js +13 -0
- package/dist/client/assets/{app-5S4z84u5.js → app-DQeH1UDD.js} +3 -3
- package/dist/client/assets/{app-Cts0__Vx.js → app-FiYwRatp.js} +3 -3
- package/dist/client/assets/{app-_GFUqcMK.js → app-rGdYcsAA.js} +3 -3
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-DEt4eIEQ.js → architectureDiagram-3BPJPVTR-DP7vOyXY.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-CJuX0UM_.js → blockDiagram-GPEHLZMM-Di9v1pV8.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-a46Lm113.js → c4Diagram-AAUBKEIU-Dvb8RSfr.js} +1 -1
- package/dist/client/assets/channel-C5g9M3Sk.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-iBhwyS0c.js → chunk-2J33WTMH-gLcAuGjI.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-C7lS5wER.js → chunk-4BX2VUAB-B-B0wjkx.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CQ6YOncn.js → chunk-55IACEB6-XUDeC0Co.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-CveMaMKK.js → chunk-727SXJPM-1eebiGA2.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-DErjGUEk.js → chunk-AQP2D5EJ-D9VOB5QS.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-DXUvEFfJ.js → chunk-FMBD7UC4-EFNFEaAz.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-w5RqSj1J.js → chunk-ND2GUHAM-CbeQailD.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-CAi0lJ7V.js → chunk-QZHKN3VN-D55N6EBz.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-B-wdlvD6.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B-wdlvD6.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-Ck2h4uV5.js → cose-bilkent-S5V4N54A-B0zbhkX3.js} +1 -1
- package/dist/client/assets/createLucideIcon-CshVyKO4.js +21 -0
- package/dist/client/assets/{dagre-BM42HDAG-BCRTXNj6.js → dagre-BM42HDAG-BL6peXwl.js} +1 -1
- package/dist/client/assets/dashboard-view-Bsdq3OM4.css +1 -0
- package/dist/client/assets/dashboard-view-CS1H5SQN.js +1 -0
- package/dist/client/assets/dashboard-view-DafOfnxI.js +1 -0
- package/dist/client/assets/{dashboard-view-D9rF_PCq.js → dashboard-view-Db3n_W85.js} +1320 -1335
- package/dist/client/assets/{diagram-2AECGRRQ-DTTk-DYO.js → diagram-2AECGRRQ-cYKwSHk7.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-jDc9kMi2.js → diagram-5GNKFQAL-DHIwTGuM.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-CcLmzlGr.js → diagram-KO2AKTUF-DfHBJ4aX.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-DCW8XKQj.js → diagram-LMA3HP47-pWhYmB6Z.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-wbbKquPs.js → diagram-OG6HWLK6-GzWqbi_m.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-Fo933Mo7.js → erDiagram-TEJ5UH35-CCVm5eiR.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-Dfum7HZP.js → flowDiagram-I6XJVG4X-CUTdnU6S.js} +1 -1
- package/dist/client/assets/{folder-open-B8vOwFeP.js → folder-open-DOCy9GVC.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-BzEBCn01.js → ganttDiagram-6RSMTGT7-CW4ENJaC.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CgovghHs.js → gitGraphDiagram-PVQCEYII-QXXMfSzp.js} +1 -1
- package/dist/client/assets/index-B6ttSchA.js +1336 -0
- package/dist/client/assets/index-CPE2Kwra.css +1 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-BzpU4Wys.js → infoDiagram-5YYISTIA-CZyHbj0n.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-cpp5pozu.js → ishikawaDiagram-YF4QCWOH-Dea84lqZ.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-BVjcw6oo.js → journeyDiagram-JHISSGLW-Db2iKGU5.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-4unAhBzo.js → kanban-definition-UN3LZRKU-CB9loIqR.js} +1 -1
- package/dist/client/assets/loader-circle-CMNcxXXr.js +16 -0
- package/dist/client/assets/{mermaid.core-DzIyUj9t.js → mermaid.core-CoQ8aCb0.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-Be_yfVir.js → mindmap-definition-RKZ34NQL-JPb2wF-K.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-Cfnw2aji.js → pieDiagram-4H26LBE5-pdZzOreP.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-BFlC-_Uo.js → quadrantDiagram-W4KKPZXB-Dh9Ids90.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DpVPzCOx.js → requirementDiagram-4Y6WPE33-BVPOSvHU.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DM-gKKP0.js → sankeyDiagram-5OEKKPKP-BqSMUpsx.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DjhZCZhd.js → sequenceDiagram-3UESZ5HK-B8nepQ6X.js} +1 -1
- package/dist/client/assets/{shield-alert-DCfkjjYc.js → shield-alert-CtSaIQNY.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-BCA96rdI.js → stateDiagram-AJRCARHV-CQv9RdRp.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-DHds08RS.js → stateDiagram-v2-BHNVJYJU-BZ_mlvie.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-CHW2OQRw.js → timeline-definition-PNZ67QCA-CAjwM-Z5.js} +1 -1
- package/dist/client/assets/{upload-EJc5PJPz.js → upload-0_pT1euA.js} +1 -1
- package/dist/client/assets/{users-C-e-99Vp.js → users--1B6mnm8.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-shGh4eBY.js → vennDiagram-CIIHVFJN-BO3Um3rH.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-l0RGrVhn.js → wardley-L42UT6IY-BzqJcqDA.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-C-USmO8A.js → wardleyDiagram-YWT4CUSO-Bctxc6_5.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-CHX9Umta.js → xychartDiagram-2RQKCTM6-CgDuiMFR.js} +1 -1
- package/dist/client/assets/zoom-out-DzDzWQt1.js +21 -0
- package/dist/client/index.html +13 -4
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/extension.js +2066 -271
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/plugin-sdk/index.d.ts +61 -1
- package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
- package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +70 -25
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-linear-import/bundled.js +658 -0
- package/dist/plugins/fusion-plugin-linear-import/manifest.json +48 -0
- package/dist/plugins/fusion-plugin-linear-import/package.json +11 -0
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +2 -1
- package/skill/fusion/SKILL.md +2 -2
- package/skill/fusion/references/engine-tools.md +1 -0
- package/skill/fusion/references/extension-tools.md +81 -0
- package/skill/fusion/references/fusion-capabilities.md +7 -0
- package/dist/client/assets/AgentDetailView-BJditQat.js +0 -18
- package/dist/client/assets/ChatView-B4bjPXFN.js +0 -6
- package/dist/client/assets/DocumentsView-BfaRXFg5.js +0 -1
- package/dist/client/assets/PluginManager-CGWXqZMa.js +0 -1
- package/dist/client/assets/SettingsModal-BYaotQ2o.js +0 -21
- package/dist/client/assets/SetupWizardModal-eHZHi8VP.js +0 -2
- package/dist/client/assets/app-B1VYocx2.js +0 -13
- package/dist/client/assets/channel-BGI9APMr.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-g6hCcufy.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-g6hCcufy.js +0 -1
- package/dist/client/assets/dashboard-view-BfLJ60Kd.js +0 -1
- package/dist/client/assets/index-BjELA24x.js +0 -1336
- package/dist/client/assets/index-DwGW7OJh.css +0 -1
- package/dist/client/assets/zoom-out-NWbVkreR.js +0 -41
|
@@ -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[];
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
33
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
55
|
-
|
|
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
|
-
|
|
67
|
-
|
|
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
|
-
|
|
77
|
-
|
|
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
|
-
|
|
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
|
-
|
|
126
|
-
|
|
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,
|