@runfusion/fusion 0.48.0 → 0.50.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 (140) hide show
  1. package/dist/bin.js +43336 -15114
  2. package/dist/client/.vite/manifest.json +250 -249
  3. package/dist/client/assets/AgentDetailView-BzSyldiW.css +1 -0
  4. package/dist/client/assets/{AgentDetailView-CF6isJ51.js → AgentDetailView-D2oYUApl.js} +5 -5
  5. package/dist/client/assets/{AgentPermissionPolicyEditor-DFldf6aS.js → AgentPermissionPolicyEditor-DGgx46f3.js} +1 -1
  6. package/dist/client/assets/AgentsView-Dhf5Vq_T.js +29 -0
  7. package/dist/client/assets/ChatView-DpgpxHva.js +19 -0
  8. package/dist/client/assets/ChatView-DwIIrJxb.css +1 -0
  9. package/dist/client/assets/CommandCenter-B9q-zM9p.css +1 -0
  10. package/dist/client/assets/CommandCenter-DzQhGq_J.js +71 -0
  11. package/dist/client/assets/{DevServerView-D6RFaGPU.js → DevServerView-DjJYp6Jj.js} +1 -1
  12. package/dist/client/assets/{DirectoryPicker-DNBB-viz.js → DirectoryPicker-CYPYp9T4.js} +1 -1
  13. package/dist/client/assets/{DocumentsView-DXG-sctG.js → DocumentsView-CeQVRVdp.js} +1 -1
  14. package/dist/client/assets/{EvalsView-Ol6ECKz5.js → EvalsView-D250mVR5.js} +1 -1
  15. package/dist/client/assets/{ExperimentalAgentOnboardingModal-BQc3GaE_.js → ExperimentalAgentOnboardingModal-B1EEY_bl.js} +1 -1
  16. package/dist/client/assets/{GoalsView-C_m90anC.js → GoalsView-MftVwE9g.js} +1 -1
  17. package/dist/client/assets/{InsightsView-BbFgPsDH.js → InsightsView-CbWItYe8.js} +1 -1
  18. package/dist/client/assets/{MemoryView-CRS7AjWK.js → MemoryView-Ct0nOTES.js} +1 -1
  19. package/dist/client/assets/{PiExtensionsManager-BEj5xu45.js → PiExtensionsManager-DSQwngX-.js} +1 -1
  20. package/dist/client/assets/{PluginManager-CzCM3XUY.js → PluginManager-DqLxCiNg.js} +1 -1
  21. package/dist/client/assets/{PullRequestView-9yNYCunb.js → PullRequestView-D0WgwdAi.js} +1 -1
  22. package/dist/client/assets/{ResearchView-BKdirpiw.js → ResearchView-CJQL9XKC.js} +1 -1
  23. package/dist/client/assets/{SecretsView-qGjo-0Cp.js → SecretsView-ChN9aTbi.js} +1 -1
  24. package/dist/client/assets/{SessionTerminal-C7YlkdGJ.js → SessionTerminal-BVon9kbr.js} +1 -1
  25. package/dist/client/assets/SettingsModal-B4WANQnu.js +21 -0
  26. package/dist/client/assets/{SettingsModal-CvbiSIHS.css → SettingsModal-BzZNPNIh.css} +1 -1
  27. package/dist/client/assets/{SettingsModal-DihNd7g8.js → SettingsModal-CIC5jhgo.js} +1 -1
  28. package/dist/client/assets/SettingsModal-tUDR6nJ9.css +1 -0
  29. package/dist/client/assets/{SetupWizardModal-MovTj5pY.js → SetupWizardModal-C6EGjmbd.js} +2 -2
  30. package/dist/client/assets/{ShadcnColorPicker-Bnf5n5R4.js → ShadcnColorPicker-4e_aXoGX.js} +1 -1
  31. package/dist/client/assets/{ShadcnColorPicker-pqVWCC5-.css → ShadcnColorPicker-CzZo9UOD.css} +1 -1
  32. package/dist/client/assets/SkillsView-Dz8dDwfP.js +1 -0
  33. package/dist/client/assets/SkillsView-tAW7TTCz.css +1 -0
  34. package/dist/client/assets/{TodoView-CIsL_uvQ.css → TodoView--YoVYWvw.css} +1 -1
  35. package/dist/client/assets/{TodoView-BEdk6FTU.js → TodoView-DvJFzoOv.js} +1 -1
  36. package/dist/client/assets/WorkflowNodeEditor-DrdTCstS.js +8 -0
  37. package/dist/client/assets/WorkflowNodeEditor-WYIxHTxY.css +1 -0
  38. package/dist/client/assets/{agentSkills-D5nDZPRY.js → agentSkills-B2dD5Nm5.js} +1 -1
  39. package/dist/client/assets/app-BYq4S7Cb.js +13 -0
  40. package/dist/client/assets/app-D27ewSC0.js +13 -0
  41. package/dist/client/assets/app-DFLDkeOE.js +13 -0
  42. package/dist/client/assets/app-OPrfgjjn.js +13 -0
  43. package/dist/client/assets/app-dATBczl3.js +13 -0
  44. package/dist/client/assets/{app-D_IT9Buz.js → app-k1K9zAjp.js} +3 -3
  45. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BbkXWBni.js → architectureDiagram-3BPJPVTR-ClO0MnzR.js} +1 -1
  46. package/dist/client/assets/{blockDiagram-GPEHLZMM-DhaqpHqZ.js → blockDiagram-GPEHLZMM-C4cyy4WE.js} +1 -1
  47. package/dist/client/assets/{c4Diagram-AAUBKEIU-qC0WSHMZ.js → c4Diagram-AAUBKEIU-NHPC9TJo.js} +1 -1
  48. package/dist/client/assets/channel-Q2WKocEP.js +1 -0
  49. package/dist/client/assets/{chunk-2J33WTMH-Dah9zMeT.js → chunk-2J33WTMH-CGYIKTVR.js} +1 -1
  50. package/dist/client/assets/{chunk-4BX2VUAB-epHwnUb_.js → chunk-4BX2VUAB-BkCCD0tE.js} +1 -1
  51. package/dist/client/assets/{chunk-55IACEB6-DpYBy44g.js → chunk-55IACEB6-Be3yOIDe.js} +1 -1
  52. package/dist/client/assets/{chunk-727SXJPM-B9b8698e.js → chunk-727SXJPM-DxjyMaQQ.js} +1 -1
  53. package/dist/client/assets/{chunk-AQP2D5EJ-DrM8nnhR.js → chunk-AQP2D5EJ-BC0PjN0W.js} +1 -1
  54. package/dist/client/assets/{chunk-FMBD7UC4-jyT6Scwe.js → chunk-FMBD7UC4-DoWxmM8k.js} +1 -1
  55. package/dist/client/assets/{chunk-ND2GUHAM-EoPfF-PK.js → chunk-ND2GUHAM-EOpuc9pP.js} +1 -1
  56. package/dist/client/assets/{chunk-QZHKN3VN-qMwLVfgJ.js → chunk-QZHKN3VN-DiRyx9QZ.js} +1 -1
  57. package/dist/client/assets/classDiagram-4FO5ZUOK-CPFl2Aqd.js +1 -0
  58. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CPFl2Aqd.js +1 -0
  59. package/dist/client/assets/{cose-bilkent-S5V4N54A-DmPFKoVD.js → cose-bilkent-S5V4N54A-CfVoUUxT.js} +1 -1
  60. package/dist/client/assets/{dagre-BM42HDAG-DeHxd-ej.js → dagre-BM42HDAG-BfILvxLb.js} +1 -1
  61. package/dist/client/assets/{dashboard-view-DXjNQ5IF.js → dashboard-view-C9YIcx-O.js} +2 -2
  62. package/dist/client/assets/{dashboard-view-Cw5mMJay.js → dashboard-view-wFC1pe4d.js} +1 -1
  63. package/dist/client/assets/{diagram-2AECGRRQ-C04A2mhr.js → diagram-2AECGRRQ-6mdmbH-5.js} +1 -1
  64. package/dist/client/assets/{diagram-5GNKFQAL-DqtOwADI.js → diagram-5GNKFQAL-CY7MMwO1.js} +1 -1
  65. package/dist/client/assets/{diagram-KO2AKTUF-CH0har-Z.js → diagram-KO2AKTUF-D05XnQqd.js} +1 -1
  66. package/dist/client/assets/{diagram-LMA3HP47-CxN-U-0W.js → diagram-LMA3HP47-B18FTOJG.js} +1 -1
  67. package/dist/client/assets/{diagram-OG6HWLK6-42A7wpwF.js → diagram-OG6HWLK6-xmXlYf5m.js} +1 -1
  68. package/dist/client/assets/{erDiagram-TEJ5UH35-CnZI5YlN.js → erDiagram-TEJ5UH35-4XlgVLCs.js} +1 -1
  69. package/dist/client/assets/{flowDiagram-I6XJVG4X-BKfQhMVF.js → flowDiagram-I6XJVG4X-BYl3ps7f.js} +1 -1
  70. package/dist/client/assets/{folder-open-STXgbemw.js → folder-open-BH6FwmO7.js} +1 -1
  71. package/dist/client/assets/{ganttDiagram-6RSMTGT7-BfA0pME8.js → ganttDiagram-6RSMTGT7-4vxuH9Dx.js} +1 -1
  72. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-BgDFB7PS.js → gitGraphDiagram-PVQCEYII-BESmFgXT.js} +1 -1
  73. package/dist/client/assets/index-B9jtBwFy.css +1 -0
  74. package/dist/client/assets/index-DFeBJ3GM.js +1302 -0
  75. package/dist/client/assets/{infoDiagram-5YYISTIA-Bb5F155s.js → infoDiagram-5YYISTIA-DvjdjtwB.js} +1 -1
  76. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-8Oati7l_.js → ishikawaDiagram-YF4QCWOH-Cis5IoEm.js} +1 -1
  77. package/dist/client/assets/{journeyDiagram-JHISSGLW-DhHTHXTM.js → journeyDiagram-JHISSGLW-C20pB1W8.js} +1 -1
  78. package/dist/client/assets/{kanban-definition-UN3LZRKU-BWB9EtUX.js → kanban-definition-UN3LZRKU-CiVfCeU3.js} +1 -1
  79. package/dist/client/assets/{mermaid.core-BD-L2gUQ.js → mermaid.core-CW0vCXA6.js} +4 -4
  80. package/dist/client/assets/{mindmap-definition-RKZ34NQL-BSKGd7LE.js → mindmap-definition-RKZ34NQL-E5rPHUdw.js} +1 -1
  81. package/dist/client/assets/{pieDiagram-4H26LBE5-BtBFPvSW.js → pieDiagram-4H26LBE5-DVIFbPjH.js} +1 -1
  82. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-aWQWYPto.js → quadrantDiagram-W4KKPZXB-C8qPRe_x.js} +1 -1
  83. package/dist/client/assets/{requirementDiagram-4Y6WPE33-CprlEpIa.js → requirementDiagram-4Y6WPE33-DQ-pwXh3.js} +1 -1
  84. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Cw-AcRAV.js → sankeyDiagram-5OEKKPKP-BnghLuUc.js} +1 -1
  85. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BMW5slyv.js → sequenceDiagram-3UESZ5HK-ChlGxGVk.js} +1 -1
  86. package/dist/client/assets/{shield-alert-Bzf8yNOc.js → shield-alert-BfOnDO6O.js} +1 -1
  87. package/dist/client/assets/{stateDiagram-AJRCARHV-CcxvIVwM.js → stateDiagram-AJRCARHV-ByUvNEch.js} +1 -1
  88. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-awOfoFOB.js → stateDiagram-v2-BHNVJYJU-Df38ITSP.js} +1 -1
  89. package/dist/client/assets/{timeline-definition-PNZ67QCA-DIEAc2YP.js → timeline-definition-PNZ67QCA-bsAGc83D.js} +1 -1
  90. package/dist/client/assets/{upload-DuwyPTKe.js → upload-BK1crTqn.js} +1 -1
  91. package/dist/client/assets/{users-D1Qhfyro.js → users-DW8jC2Z9.js} +1 -1
  92. package/dist/client/assets/{vennDiagram-CIIHVFJN-DOkqg5Wi.js → vennDiagram-CIIHVFJN-BBIj6LFN.js} +1 -1
  93. package/dist/client/assets/{wardley-L42UT6IY-DoPK1Q6d.js → wardley-L42UT6IY-De6JFroy.js} +1 -1
  94. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-l1vun-m2.js → wardleyDiagram-YWT4CUSO-P1LOLx0_.js} +1 -1
  95. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DcUOUKvl.js → xychartDiagram-2RQKCTM6-v1G4ki6U.js} +1 -1
  96. package/dist/client/index.html +2 -2
  97. package/dist/client/version.json +1 -1
  98. package/dist/droid-cli/package.json +6 -25
  99. package/dist/extension.js +37091 -9900
  100. package/dist/pi-claude-cli/index.ts +26 -22
  101. package/dist/pi-claude-cli/package.json +6 -20
  102. package/dist/pi-claude-cli/src/mcp-config.ts +58 -7
  103. package/dist/plugin-sdk/index.d.ts +246 -186
  104. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  105. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +2 -9
  106. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +250 -19
  107. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  108. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  109. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  110. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  111. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  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 +2 -10
  115. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  116. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +3 -15
  117. package/package.json +1 -1
  118. package/skill/fusion/references/engine-tools.md +5 -1
  119. package/dist/client/assets/AgentDetailView-CgbB51Iw.css +0 -1
  120. package/dist/client/assets/AgentsView-DiGseTuo.js +0 -29
  121. package/dist/client/assets/ChatView-BjQBbDyo.js +0 -19
  122. package/dist/client/assets/ChatView-BtjkE0V7.css +0 -1
  123. package/dist/client/assets/CommandCenter-DDjpYkPe.css +0 -1
  124. package/dist/client/assets/CommandCenter-DwpiADSX.js +0 -71
  125. package/dist/client/assets/SettingsModal-DpaptT6t.js +0 -21
  126. package/dist/client/assets/SettingsModal-ino68pI2.css +0 -1
  127. package/dist/client/assets/SkillsView-Br2LkA3x.js +0 -1
  128. package/dist/client/assets/SkillsView-CJ8snrma.css +0 -1
  129. package/dist/client/assets/WorkflowNodeEditor-BOouksjw.css +0 -1
  130. package/dist/client/assets/WorkflowNodeEditor-e-eR6yzw.js +0 -8
  131. package/dist/client/assets/app-BM6bAO0b.js +0 -13
  132. package/dist/client/assets/app-BglOELbc.js +0 -13
  133. package/dist/client/assets/app-ChkCVQpq.js +0 -13
  134. package/dist/client/assets/app-DMn7Jt9g.js +0 -13
  135. package/dist/client/assets/app-S8fehQv8.js +0 -13
  136. package/dist/client/assets/channel-CCKvUami.js +0 -1
  137. package/dist/client/assets/classDiagram-4FO5ZUOK-C_HqY7AI.js +0 -1
  138. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-C_HqY7AI.js +0 -1
  139. package/dist/client/assets/index-BnfnLXyO.css +0 -1
  140. package/dist/client/assets/index-CHy0WNjH.js +0 -1301
@@ -366,6 +366,8 @@ declare class DatabaseSync {
366
366
  constructor(path: string);
367
367
  exec(sql: string): void;
368
368
  close(): void;
369
+ serialize(): Uint8Array;
370
+ deserialize(data: Uint8Array): void;
369
371
  prepare(sql: string): SqliteStatement;
370
372
  }
371
373
 
@@ -980,11 +982,13 @@ declare class MissionStore extends EventEmitter<MissionStoreEvents> {
980
982
  branch?: string;
981
983
  baseBranch?: string;
982
984
  assignmentMode?: "shared" | "per-task-derived";
985
+ workflowId?: string | null;
983
986
  }): Promise<MissionFeature>;
984
987
  triageSlice(sliceId: string, branchOptions?: {
985
988
  branch?: string;
986
989
  baseBranch?: string;
987
990
  assignmentMode?: "shared" | "per-task-derived";
991
+ workflowId?: string | null;
988
992
  }): Promise<MissionFeature[]>;
989
993
  computeSliceStatus(sliceId: string): SliceStatus;
990
994
  computeMilestoneStatus(milestoneId: string): MilestoneStatus;
@@ -1047,6 +1051,7 @@ declare class PluginStore extends EventEmitter<PluginStoreEvents> {
1047
1051
  });
1048
1052
  private get localDb();
1049
1053
  private get centralDb();
1054
+ close(): void;
1050
1055
  init(): Promise<void>;
1051
1056
  private validateIdFormat;
1052
1057
  private validateSettingsAgainstSchema;
@@ -2167,6 +2172,12 @@ interface EnsureGitRepositoryOptions {
2167
2172
  }
2168
2173
  declare function ensureGitRepositoryForProjectPath(projectPath: string, options?: EnsureGitRepositoryOptions): Promise<GitRepositoryEnsureOutcome>;
2169
2174
 
2175
+ type RunningAgentCountSource = (projectIds: readonly string[]) => Promise<Record<string, number>> | Record<string, number>;
2176
+ interface RunningAgentCounts {
2177
+ currentlyActive: number;
2178
+ projectsActive: Record<string, number>;
2179
+ }
2180
+
2170
2181
  interface CentralCoreEvents {
2171
2182
  "project:registered": [project: RegisteredProject];
2172
2183
  "project:reattached": [project: RegisteredProject, reason: string];
@@ -2386,6 +2397,9 @@ declare class CentralCore extends EventEmitter<CentralCoreEvents> {
2386
2397
  getDefaultProjectId(): Promise<string | undefined>;
2387
2398
  setDefaultProjectId(projectId: string | null): Promise<void>;
2388
2399
  getGlobalConcurrencyState(): Promise<GlobalConcurrencyState>;
2400
+ getLiveRunningAgentCounts(options?: {
2401
+ source?: RunningAgentCountSource;
2402
+ }): Promise<RunningAgentCounts>;
2389
2403
  updateGlobalConcurrency(updates: Partial<Pick<GlobalConcurrencyState, "globalMaxConcurrent" | "currentlyActive" | "queuedCount">>): Promise<GlobalConcurrencyState>;
2390
2404
  acquireGlobalSlot(projectId: string): Promise<boolean>;
2391
2405
  releaseGlobalSlot(projectId: string): Promise<void>;
@@ -2436,157 +2450,6 @@ declare class CentralCore extends EventEmitter<CentralCoreEvents> {
2436
2450
  private rowToSettingsSyncState;
2437
2451
  }
2438
2452
 
2439
- declare class CentralDatabase implements CentralClaimStore {
2440
- private db;
2441
- private readonly dbPath;
2442
- private readonly globalDir;
2443
- private transactionDepth;
2444
- private readonly busyTimeoutMs;
2445
- private readonly lockRecoveryWindowMs;
2446
- private readonly lockRecoveryDelayMs;
2447
- constructor(globalDir?: string, options?: {
2448
- busyTimeoutMs?: number;
2449
- lockRecoveryWindowMs?: number;
2450
- lockRecoveryDelayMs?: number;
2451
- });
2452
- init(): void;
2453
- private hasColumn;
2454
- close(): void;
2455
- private runWithLockRecovery;
2456
- transaction<T>(fn: () => T): T;
2457
- private mapTaskClaimRow;
2458
- getTaskClaim(projectId: string, taskId: string): TaskClaimRow | null;
2459
- tryClaimTask(input: {
2460
- projectId: string;
2461
- taskId: string;
2462
- nodeId: string;
2463
- agentId: string;
2464
- runId: string | null;
2465
- renewedAt: string;
2466
- expectedEpoch?: number | null;
2467
- }): {
2468
- ok: true;
2469
- claim: TaskClaimRow;
2470
- } | {
2471
- ok: false;
2472
- reason: "conflict";
2473
- current: TaskClaimRow;
2474
- };
2475
- renewTaskClaim(input: {
2476
- projectId: string;
2477
- taskId: string;
2478
- nodeId: string;
2479
- agentId: string;
2480
- runId: string | null;
2481
- renewedAt: string;
2482
- expectedEpoch: number;
2483
- }): {
2484
- ok: true;
2485
- claim: TaskClaimRow;
2486
- } | {
2487
- ok: false;
2488
- reason: "conflict" | "not_found";
2489
- current: TaskClaimRow | null;
2490
- };
2491
- releaseTaskClaim(input: {
2492
- projectId: string;
2493
- taskId: string;
2494
- nodeId: string;
2495
- agentId: string;
2496
- }): {
2497
- ok: true;
2498
- } | {
2499
- ok: false;
2500
- reason: "not_owner" | "not_found";
2501
- current: TaskClaimRow | null;
2502
- };
2503
- prepare(sql: string): Statement;
2504
- exec(sql: string): void;
2505
- getLastModified(): number;
2506
- bumpLastModified(): void;
2507
- getSchemaVersion(): number;
2508
- getPath(): string;
2509
- getGlobalDir(): string;
2510
- }
2511
-
2512
- type MasterKeyProvider = () => Promise<Buffer>;
2513
-
2514
- type SecretScope = "project" | "global";
2515
- type SecretAccessPolicy$1 = "auto" | "prompt" | "deny";
2516
- interface SecretRecord {
2517
- id: string;
2518
- key: string;
2519
- scope: SecretScope;
2520
- description: string | null;
2521
- accessPolicy: SecretAccessPolicy$1;
2522
- envExportable: boolean;
2523
- envExportKey: string | null;
2524
- createdAt: string;
2525
- updatedAt: string;
2526
- lastReadAt: string | null;
2527
- lastReadBy: string | null;
2528
- }
2529
- interface EnvExportableSecret {
2530
- id: string;
2531
- key: string;
2532
- exportKey: string;
2533
- scope: SecretScope;
2534
- plaintextValue: string;
2535
- }
2536
- type SecretsStoreAuditEvent = {
2537
- mutationType: "secret:create" | "secret:update" | "secret:delete" | "secret:read";
2538
- scope: SecretScope;
2539
- secretId: string;
2540
- key: string;
2541
- actor?: {
2542
- agentId?: string | null;
2543
- userId?: string | null;
2544
- };
2545
- };
2546
- interface SecretsStoreOptions {
2547
- auditEmitter?: (event: SecretsStoreAuditEvent) => void;
2548
- }
2549
- declare class SecretsStore {
2550
- private readonly projectDb;
2551
- private readonly centralDb;
2552
- private readonly options;
2553
- private readonly cipher;
2554
- constructor(projectDb: Pick<Database, "prepare" | "bumpLastModified">, centralDb: Pick<CentralDatabase, "prepare" | "bumpLastModified">, masterKeyProvider: MasterKeyProvider, options?: SecretsStoreOptions);
2555
- private emitAudit;
2556
- private dbForScope;
2557
- private rowToRecord;
2558
- listSecrets(scope?: SecretScope): SecretRecord[];
2559
- listEnvExportable(opts?: {
2560
- keyPrefix?: string;
2561
- }): Promise<EnvExportableSecret[]>;
2562
- getSecretMetadata(id: string, scope: SecretScope): SecretRecord | null;
2563
- createSecret(input: {
2564
- scope: SecretScope;
2565
- key: string;
2566
- plaintextValue: string;
2567
- description?: string | null;
2568
- accessPolicy?: SecretAccessPolicy$1;
2569
- envExportable?: boolean;
2570
- envExportKey?: string | null;
2571
- }): Promise<SecretRecord>;
2572
- updateSecret(id: string, scope: SecretScope, patch: {
2573
- key?: string;
2574
- plaintextValue?: string;
2575
- description?: string | null;
2576
- accessPolicy?: SecretAccessPolicy$1;
2577
- envExportable?: boolean;
2578
- envExportKey?: string | null;
2579
- }): Promise<SecretRecord>;
2580
- deleteSecret(id: string, scope: SecretScope): void;
2581
- revealSecret(id: string, scope: SecretScope, reader: {
2582
- agentId?: string | null;
2583
- userId?: string | null;
2584
- }): Promise<{
2585
- key: string;
2586
- plaintextValue: string;
2587
- }>;
2588
- }
2589
-
2590
2453
  type UsageEventKind = "tool_call" | "tool_result" | "tool_error" | "user_message" | "session_start" | "session_stop";
2591
2454
  interface UsageEventInput {
2592
2455
  kind: UsageEventKind;
@@ -2634,6 +2497,23 @@ interface StepParser {
2634
2497
  parse(content: string): StepParseResult;
2635
2498
  }
2636
2499
 
2500
+ type OverlapBlockerRepairReason = "task-not-found" | "no-overlap-blocker" | "not-repairable-state" | "blocker-missing" | "scopes-still-overlap" | "dependency-blocker-remains" | "overlap-blocker-changed" | "rerouted-to-current-overlap" | "repaired";
2501
+ interface RepairOverlapBlockerOptions {
2502
+ dryRun?: boolean;
2503
+ reason?: string;
2504
+ }
2505
+ interface RepairOverlapBlockerResult {
2506
+ taskId: string;
2507
+ dryRun: boolean;
2508
+ repaired: boolean;
2509
+ statusCleared: boolean;
2510
+ previousOverlapBlockedBy?: string;
2511
+ currentOverlapBlockedBy?: string;
2512
+ reason: OverlapBlockerRepairReason;
2513
+ message: string;
2514
+ task?: Task;
2515
+ }
2516
+
2637
2517
  interface TaskStoreEvents {
2638
2518
  "task:created": [task: Task];
2639
2519
  "task:moved": [data: {
@@ -2825,6 +2705,13 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
2825
2705
  reason: string;
2826
2706
  }>;
2827
2707
  }>;
2708
+ reconcilePhantomCommittedReservations(): Promise<{
2709
+ reconciled: string[];
2710
+ skipped: Array<{
2711
+ id: string;
2712
+ reason: string;
2713
+ }>;
2714
+ }>;
2828
2715
  private readTaskJson;
2829
2716
  private writeTaskJsonFile;
2830
2717
  private atomicCreateTaskJson;
@@ -2849,16 +2736,10 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
2849
2736
  private writeConfig;
2850
2737
  resolveLocalNodeIdForTaskAllocation(): Promise<string>;
2851
2738
  private createTaskWithDistributedReservation;
2739
+ private rollbackFailedDistributedReservationCreate;
2852
2740
  private taskDir;
2853
2741
  private artifactRegistryDir;
2854
2742
  private static artifactStoredName;
2855
- private getBuiltInWorkflowTemplate;
2856
- private toBuiltInWorkflowStep;
2857
- private toStoredWorkflowStep;
2858
- private getLegacyWorkflowStepSnapshot;
2859
- private applyLegacyWorkflowStepOverrides;
2860
- private ensureWorkflowStepForTemplate;
2861
- private optionalGroupIdSet;
2862
2743
  private resolveEnabledWorkflowSteps;
2863
2744
  private buildActiveTaskDependencyLookup;
2864
2745
  private recordDependencyCycleRejectedAudit;
@@ -2877,6 +2758,10 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
2877
2758
  prompt?: string;
2878
2759
  applyDefaultWorkflowSteps?: boolean;
2879
2760
  invokeTaskCreatedHook?: boolean;
2761
+ reservationCommit?: {
2762
+ reservationId: string;
2763
+ nodeId: string;
2764
+ };
2880
2765
  }): Promise<Task>;
2881
2766
  applyReplicatedTaskCreate(payload: MeshReplicatedTaskCreatePayload): Promise<MeshReplicatedTaskApplyResult>;
2882
2767
  private _createTaskInternal;
@@ -2901,6 +2786,10 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
2901
2786
  assignmentMode?: TaskBranchAssignmentMode;
2902
2787
  }): Promise<void>;
2903
2788
  listTasksByBranchGroup(groupId: string): Promise<Task[]>;
2789
+ reconcileActiveTimingForEngineDowntime(now?: Date): Promise<{
2790
+ shiftedTaskIds: string[];
2791
+ downtimeMs: number;
2792
+ }>;
2904
2793
  private rowToPrEntity;
2905
2794
  private generatePrEntityId;
2906
2795
  getPrEntity(id: string): PrEntity | null;
@@ -3229,6 +3118,8 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3229
3118
  parseStepsFromPrompt(id: string): Promise<TaskStep[]>;
3230
3119
  parseDependenciesFromPrompt(id: string): Promise<string[]>;
3231
3120
  parseFileScopeFromPrompt(id: string): Promise<string[]>;
3121
+ repairOverlapBlocker(id: string, options?: RepairOverlapBlockerOptions): Promise<RepairOverlapBlockerResult>;
3122
+ private findCurrentOverlapBlockerForRepair;
3232
3123
  private makeSyntheticDeleteRunId;
3233
3124
  deleteTask(id: string, options?: {
3234
3125
  removeDependencyReferences?: boolean;
@@ -3361,7 +3252,6 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3361
3252
  cleanupArchivedTasks(): Promise<string[]>;
3362
3253
  private restoreFromArchive;
3363
3254
  private generatePromptFromArchiveEntry;
3364
- createWorkflowStep(input: WorkflowStepInput): Promise<WorkflowStep>;
3365
3255
  setPluginWorkflowStepTemplates(templates: Array<{
3366
3256
  pluginId: string;
3367
3257
  template: WorkflowStepTemplate;
@@ -3369,8 +3259,6 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3369
3259
  private resolvePluginWorkflowStep;
3370
3260
  listWorkflowSteps(): Promise<WorkflowStep[]>;
3371
3261
  getWorkflowStep(id: string): Promise<WorkflowStep | undefined>;
3372
- updateWorkflowStep(id: string, updates: Partial<WorkflowStepInput>): Promise<WorkflowStep>;
3373
- deleteWorkflowStep(id: string): Promise<void>;
3374
3262
  private nextWorkflowDefinitionId;
3375
3263
  private toWorkflowDefinition;
3376
3264
  private parseWorkflowLayout;
@@ -3406,11 +3294,6 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3406
3294
  getDefaultWorkflowId(): Promise<string | undefined>;
3407
3295
  setDefaultWorkflowId(workflowId: string | null): Promise<void>;
3408
3296
  private insertWorkflowDefinitionSync;
3409
- migrateLegacyWorkflowSteps(): Promise<{
3410
- migrated: number;
3411
- skipped: number;
3412
- combinedWorkflowId?: string;
3413
- }>;
3414
3297
  isWorkflowCliCommandApproved(command: string): Promise<boolean>;
3415
3298
  approveWorkflowCliCommand(command: string): Promise<void>;
3416
3299
  isCliAutonomyApproved(adapterId: string): Promise<boolean>;
@@ -3432,8 +3315,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3432
3315
  private writeTaskWorkflowSelection;
3433
3316
  private removeMaterializedSelection;
3434
3317
  private purgeTaskWorkflowSelectionRows;
3435
- private cleanupOrphanedMaterializedSteps;
3436
- private materializeWorkflowSteps;
3318
+ private validateWorkflowCompilable;
3437
3319
  private materializeDefaultWorkflowSteps;
3438
3320
  private materializeExplicitWorkflowSteps;
3439
3321
  selectTaskWorkflow(taskId: string, workflowId: string): Promise<string[]>;
@@ -3473,6 +3355,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
3473
3355
  };
3474
3356
  getRootDir(): string;
3475
3357
  getFusionDir(): string;
3358
+ getGlobalSettingsDir(): string;
3476
3359
  getTasksDir(): string;
3477
3360
  getTaskDir(id: string): string;
3478
3361
  getDatabase(): Database;
@@ -4081,6 +3964,7 @@ declare class Database {
4081
3964
  lockRecoveryWindowMs?: number;
4082
3965
  lockRecoveryDelayMs?: number;
4083
3966
  });
3967
+ serializeSnapshot(): Uint8Array;
4084
3968
  get fts5Available(): boolean;
4085
3969
  private getTaskFtsTriggerParts;
4086
3970
  private configureTaskFts5;
@@ -4126,6 +4010,7 @@ declare class Database {
4126
4010
  private applyMigration;
4127
4011
  private hasTable;
4128
4012
  isFts5CorruptionError(error: unknown): boolean;
4013
+ reindexMessages(): void;
4129
4014
  private getTableColumns;
4130
4015
  private hasColumn;
4131
4016
  private tableExists;
@@ -4165,6 +4050,157 @@ declare class Database {
4165
4050
  getPath(): string;
4166
4051
  }
4167
4052
 
4053
+ declare class CentralDatabase implements CentralClaimStore {
4054
+ private db;
4055
+ private readonly dbPath;
4056
+ private readonly globalDir;
4057
+ private transactionDepth;
4058
+ private readonly busyTimeoutMs;
4059
+ private readonly lockRecoveryWindowMs;
4060
+ private readonly lockRecoveryDelayMs;
4061
+ constructor(globalDir?: string, options?: {
4062
+ busyTimeoutMs?: number;
4063
+ lockRecoveryWindowMs?: number;
4064
+ lockRecoveryDelayMs?: number;
4065
+ });
4066
+ init(): void;
4067
+ private hasColumn;
4068
+ close(): void;
4069
+ private runWithLockRecovery;
4070
+ transaction<T>(fn: () => T): T;
4071
+ private mapTaskClaimRow;
4072
+ getTaskClaim(projectId: string, taskId: string): TaskClaimRow | null;
4073
+ tryClaimTask(input: {
4074
+ projectId: string;
4075
+ taskId: string;
4076
+ nodeId: string;
4077
+ agentId: string;
4078
+ runId: string | null;
4079
+ renewedAt: string;
4080
+ expectedEpoch?: number | null;
4081
+ }): {
4082
+ ok: true;
4083
+ claim: TaskClaimRow;
4084
+ } | {
4085
+ ok: false;
4086
+ reason: "conflict";
4087
+ current: TaskClaimRow;
4088
+ };
4089
+ renewTaskClaim(input: {
4090
+ projectId: string;
4091
+ taskId: string;
4092
+ nodeId: string;
4093
+ agentId: string;
4094
+ runId: string | null;
4095
+ renewedAt: string;
4096
+ expectedEpoch: number;
4097
+ }): {
4098
+ ok: true;
4099
+ claim: TaskClaimRow;
4100
+ } | {
4101
+ ok: false;
4102
+ reason: "conflict" | "not_found";
4103
+ current: TaskClaimRow | null;
4104
+ };
4105
+ releaseTaskClaim(input: {
4106
+ projectId: string;
4107
+ taskId: string;
4108
+ nodeId: string;
4109
+ agentId: string;
4110
+ }): {
4111
+ ok: true;
4112
+ } | {
4113
+ ok: false;
4114
+ reason: "not_owner" | "not_found";
4115
+ current: TaskClaimRow | null;
4116
+ };
4117
+ prepare(sql: string): Statement;
4118
+ exec(sql: string): void;
4119
+ getLastModified(): number;
4120
+ bumpLastModified(): void;
4121
+ getSchemaVersion(): number;
4122
+ getPath(): string;
4123
+ getGlobalDir(): string;
4124
+ }
4125
+
4126
+ type MasterKeyProvider = () => Promise<Buffer>;
4127
+
4128
+ type SecretScope = "project" | "global";
4129
+ type SecretAccessPolicy$1 = "auto" | "prompt" | "deny";
4130
+ interface SecretRecord {
4131
+ id: string;
4132
+ key: string;
4133
+ scope: SecretScope;
4134
+ description: string | null;
4135
+ accessPolicy: SecretAccessPolicy$1;
4136
+ envExportable: boolean;
4137
+ envExportKey: string | null;
4138
+ createdAt: string;
4139
+ updatedAt: string;
4140
+ lastReadAt: string | null;
4141
+ lastReadBy: string | null;
4142
+ }
4143
+ interface EnvExportableSecret {
4144
+ id: string;
4145
+ key: string;
4146
+ exportKey: string;
4147
+ scope: SecretScope;
4148
+ plaintextValue: string;
4149
+ }
4150
+ type SecretsStoreAuditEvent = {
4151
+ mutationType: "secret:create" | "secret:update" | "secret:delete" | "secret:read";
4152
+ scope: SecretScope;
4153
+ secretId: string;
4154
+ key: string;
4155
+ actor?: {
4156
+ agentId?: string | null;
4157
+ userId?: string | null;
4158
+ };
4159
+ };
4160
+ interface SecretsStoreOptions {
4161
+ auditEmitter?: (event: SecretsStoreAuditEvent) => void;
4162
+ }
4163
+ declare class SecretsStore {
4164
+ private readonly projectDb;
4165
+ private readonly centralDb;
4166
+ private readonly options;
4167
+ private readonly cipher;
4168
+ constructor(projectDb: Pick<Database, "prepare" | "bumpLastModified">, centralDb: Pick<CentralDatabase, "prepare" | "bumpLastModified">, masterKeyProvider: MasterKeyProvider, options?: SecretsStoreOptions);
4169
+ private emitAudit;
4170
+ private dbForScope;
4171
+ private rowToRecord;
4172
+ listSecrets(scope?: SecretScope): SecretRecord[];
4173
+ listEnvExportable(opts?: {
4174
+ keyPrefix?: string;
4175
+ }): Promise<EnvExportableSecret[]>;
4176
+ getSecretMetadata(id: string, scope: SecretScope): SecretRecord | null;
4177
+ createSecret(input: {
4178
+ scope: SecretScope;
4179
+ key: string;
4180
+ plaintextValue: string;
4181
+ description?: string | null;
4182
+ accessPolicy?: SecretAccessPolicy$1;
4183
+ envExportable?: boolean;
4184
+ envExportKey?: string | null;
4185
+ }): Promise<SecretRecord>;
4186
+ updateSecret(id: string, scope: SecretScope, patch: {
4187
+ key?: string;
4188
+ plaintextValue?: string;
4189
+ description?: string | null;
4190
+ accessPolicy?: SecretAccessPolicy$1;
4191
+ envExportable?: boolean;
4192
+ envExportKey?: string | null;
4193
+ }): Promise<SecretRecord>;
4194
+ deleteSecret(id: string, scope: SecretScope): void;
4195
+ revealSecret(id: string, scope: SecretScope, reader: {
4196
+ agentId?: string | null;
4197
+ userId?: string | null;
4198
+ }): Promise<{
4199
+ key: string;
4200
+ plaintextValue: string;
4201
+ }>;
4202
+ }
4203
+
4168
4204
  declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh"];
4169
4205
  type ThinkingLevel = (typeof THINKING_LEVELS)[number];
4170
4206
  declare const COLUMNS: readonly ["triage", "todo", "in-progress", "in-review", "done", "archived"];
@@ -4349,6 +4385,7 @@ interface WorkflowStep {
4349
4385
  prompt: string;
4350
4386
  toolMode?: WorkflowStepToolMode;
4351
4387
  skillName?: string;
4388
+ requiresBrowser?: boolean;
4352
4389
  scriptName?: string;
4353
4390
  enabled: boolean;
4354
4391
  defaultOn?: boolean;
@@ -4358,7 +4395,7 @@ interface WorkflowStep {
4358
4395
  createdAt: string;
4359
4396
  updatedAt: string;
4360
4397
  }
4361
- type NtfyNotificationEvent = "in-review" | "merged" | "failed" | "awaiting-approval" | "awaiting-user-review" | "planning-awaiting-input" | "gridlock" | "board-stall-unrecovered" | "db-corruption-detected" | "fallback-used" | "memory-dreams-processed" | "token-budget" | "message:agent-to-user" | "message:agent-to-agent" | "message:room" | "oauth-token-expired" | "task-created" | "workflow-notify";
4398
+ type NtfyNotificationEvent = "in-review" | "merged" | "failed" | "awaiting-approval" | "awaiting-user-review" | "planning-awaiting-input" | "cli-agent-awaiting-input" | "gridlock" | "board-stall-unrecovered" | "db-corruption-detected" | "fallback-used" | "memory-dreams-processed" | "token-budget" | "message:agent-to-user" | "message:agent-to-agent" | "message:room" | "oauth-token-expired" | "task-created" | "workflow-notify";
4362
4399
  interface NotificationProviderConfig {
4363
4400
  id: string;
4364
4401
  name: string;
@@ -4377,23 +4414,6 @@ interface CustomProvider {
4377
4414
  name: string;
4378
4415
  }[];
4379
4416
  }
4380
- interface WorkflowStepInput {
4381
- templateId?: string;
4382
- name: string;
4383
- description: string;
4384
- mode?: WorkflowStepMode;
4385
- phase?: WorkflowStepPhase;
4386
- gateMode?: WorkflowStepGateMode;
4387
- prompt?: string;
4388
- toolMode?: WorkflowStepToolMode;
4389
- skillName?: string;
4390
- scriptName?: string;
4391
- enabled?: boolean;
4392
- defaultOn?: boolean;
4393
- modelProvider?: string;
4394
- modelId?: string;
4395
- migratedFragmentId?: string;
4396
- }
4397
4417
  interface WorkflowStepResult {
4398
4418
  workflowStepId: string;
4399
4419
  workflowStepName: string;
@@ -5154,6 +5174,7 @@ interface Task {
5154
5174
  columnMovedAt?: string;
5155
5175
  firstExecutionAt?: string;
5156
5176
  cumulativeActiveMs?: number;
5177
+ columnDwellMs?: Record<string, number>;
5157
5178
  executionStartedAt?: string;
5158
5179
  executionCompletedAt?: string;
5159
5180
  deletedAt?: string;
@@ -5345,6 +5366,36 @@ interface WorktrunkSettings {
5345
5366
  onFailure?: WorktrunkOnFailure;
5346
5367
  installedBinaryPath?: string;
5347
5368
  }
5369
+ interface McpSecretRef {
5370
+ secretRef: string;
5371
+ scope: SecretScope;
5372
+ }
5373
+ type McpSensitiveValue = McpSecretRef | string;
5374
+ interface McpStdioTransport {
5375
+ transport: "stdio";
5376
+ command: string;
5377
+ args?: string[];
5378
+ env?: Record<string, McpSensitiveValue>;
5379
+ }
5380
+ interface McpSseTransport {
5381
+ transport: "sse";
5382
+ url: string;
5383
+ headers?: Record<string, McpSensitiveValue>;
5384
+ }
5385
+ interface McpStreamableHttpTransport {
5386
+ transport: "streamable-http";
5387
+ url: string;
5388
+ headers?: Record<string, McpSensitiveValue>;
5389
+ }
5390
+ type McpTransport = McpStdioTransport | McpSseTransport | McpStreamableHttpTransport;
5391
+ type McpServerDefinition = {
5392
+ name: string;
5393
+ enabled?: boolean;
5394
+ } & McpTransport;
5395
+ interface McpServersSettings {
5396
+ enabled?: boolean;
5397
+ servers?: McpServerDefinition[];
5398
+ }
5348
5399
  interface GlobalSettings {
5349
5400
  themeMode?: ThemeMode;
5350
5401
  colorTheme?: ColorTheme;
@@ -5446,6 +5497,7 @@ interface GlobalSettings {
5446
5497
  researchGlobalFetchTimeoutMs?: number;
5447
5498
  researchGlobalUserAgent?: string;
5448
5499
  remoteAccess?: RemoteAccessProjectSettings;
5500
+ mcpServers?: McpServersSettings;
5449
5501
  worktrunk?: WorktrunkSettings;
5450
5502
  experimentalFeatures?: Record<string, boolean>;
5451
5503
  cliAgents?: Record<string, CliAgentSettings>;
@@ -5510,6 +5562,7 @@ interface ProjectSettings {
5510
5562
  approvedWorkflowCliCommands?: string[];
5511
5563
  approvedCliAutonomyAdapters?: string[];
5512
5564
  enginePaused?: boolean;
5565
+ engineLastActiveAt?: string;
5513
5566
  maxConcurrent: number;
5514
5567
  maxTriageConcurrent?: number;
5515
5568
  globalMaxConcurrent?: number;
@@ -5522,6 +5575,7 @@ interface ProjectSettings {
5522
5575
  heartbeatScopeDiscipline?: HeartbeatScopeDisciplineMode;
5523
5576
  heartbeatPromptTemplate?: HeartbeatPromptTemplate;
5524
5577
  groupOverlappingFiles: boolean;
5578
+ ignoreHiddenOverlapPaths?: boolean;
5525
5579
  overlapIgnorePaths?: string[];
5526
5580
  autoMerge: boolean;
5527
5581
  testMode?: boolean;
@@ -5539,6 +5593,7 @@ interface ProjectSettings {
5539
5593
  owningNodeHandoffPolicy?: OwningNodeHandoffPolicy;
5540
5594
  researchSettings?: ResearchProjectSettings;
5541
5595
  secretsEnv?: SecretsEnvSettings;
5596
+ mcpServers?: McpServersSettings;
5542
5597
  sandbox?: SandboxProjectSettings;
5543
5598
  evalSettings?: EvalProjectSettings;
5544
5599
  taskEvaluationEnabled?: boolean;
@@ -5554,6 +5609,7 @@ interface ProjectSettings {
5554
5609
  researchMaxSynthesisRounds?: number;
5555
5610
  defaultNodeId?: string;
5556
5611
  worktreeInitCommand?: string;
5612
+ worktreeCopyFiles?: string[];
5557
5613
  testCommand?: string;
5558
5614
  buildCommand?: string;
5559
5615
  recycleWorktrees?: boolean;
@@ -5617,7 +5673,9 @@ interface ProjectSettings {
5617
5673
  verificationFixRetries?: number;
5618
5674
  buildTimeoutMs?: number;
5619
5675
  verificationCommandTimeoutMs?: number;
5676
+ scopeVerificationToChangedFiles?: boolean;
5620
5677
  requirePlanApproval?: boolean;
5678
+ planApprovalMode?: "workflow" | "auto-approve-all" | "require-all";
5621
5679
  ephemeralAgentsEnabled?: boolean;
5622
5680
  agentProvisioning?: {
5623
5681
  approvalMode?: AgentProvisioningApprovalMode;
@@ -5905,6 +5963,7 @@ interface ArchivedTaskEntry {
5905
5963
  columnMovedAt?: string;
5906
5964
  firstExecutionAt?: string;
5907
5965
  cumulativeActiveMs?: number;
5966
+ columnDwellMs?: Record<string, number>;
5908
5967
  executionStartedAt?: string;
5909
5968
  executionCompletedAt?: string;
5910
5969
  deletedAt?: string;
@@ -6393,6 +6452,7 @@ interface Agent {
6393
6452
  totalOutputTokens?: number;
6394
6453
  lastError?: string;
6395
6454
  pendingApprovalCount?: number;
6455
+ taskColumn?: string;
6396
6456
  instructionsPath?: string;
6397
6457
  instructionsText?: string;
6398
6458
  soul?: string;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/acp-runtime",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@fusion-plugin-examples/cli-printing-press",
3
- "version": "0.1.28",
3
+ "version": "0.1.30",
4
4
  "type": "module",
5
- "description": "CLI Printing Press plugin package for Fusion",
6
5
  "private": true,
7
6
  "exports": {
8
7
  ".": {
@@ -18,13 +17,7 @@
18
17
  "import": "./src/manage-view.tsx"
19
18
  }
20
19
  },
21
- "scripts": {
22
- "build": "tsc",
23
- "test": "vitest run --silent=passed-only --reporter=dot"
24
- },
25
20
  "dependencies": {
26
- "@fusion/core": "workspace:*",
27
- "@fusion/plugin-sdk": "workspace:*",
28
21
  "express": "^5.1.0",
29
22
  "lucide-react": "^0.542.0",
30
23
  "react": "^19.0.0",
@@ -40,4 +33,4 @@
40
33
  "typescript": "^5.7.0",
41
34
  "vitest": "^4.1.0"
42
35
  }
43
- }
36
+ }