@runfusion/fusion 0.44.0 → 0.46.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/README.md +2 -1
- package/dist/bin.js +7431 -2240
- package/dist/client/.vite/manifest.json +1118 -331
- package/dist/client/assets/AgentDetailView-CgbB51Iw.css +1 -0
- package/dist/client/assets/AgentDetailView-D1cA9Bfj.js +18 -0
- package/dist/client/assets/{AgentPermissionPolicyEditor--YS4iMUY.js → AgentPermissionPolicyEditor-DE0wv8-L.js} +2 -2
- package/dist/client/assets/AgentsView-Bm_FA_1w.js +29 -0
- package/dist/client/assets/AgentsView-CzMa5Olf.css +1 -0
- package/dist/client/assets/ChatView-BtjkE0V7.css +1 -0
- package/dist/client/assets/ChatView-CHEkov6q.js +19 -0
- package/dist/client/assets/CommandCenter-Cfgek-dC.js +71 -0
- package/dist/client/assets/CommandCenter-DDjpYkPe.css +1 -0
- package/dist/client/assets/DevServerView-DgDksVH2.css +1 -0
- package/dist/client/assets/DevServerView-_or2KLVw.js +1 -0
- package/dist/client/assets/DirectoryPicker-etVwa-6X.js +1 -0
- package/dist/client/assets/DocumentsView-e8ZTdPIZ.js +1 -0
- package/dist/client/assets/EvalsView-CTbgPUne.css +1 -0
- package/dist/client/assets/EvalsView-CjDRQFMQ.js +1 -0
- package/dist/client/assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css +1 -0
- package/dist/client/assets/ExperimentalAgentOnboardingModal-DXR0OAsR.js +1 -0
- package/dist/client/assets/GoalsView-CUh8JBnJ.css +1 -0
- package/dist/client/assets/GoalsView-WWDKVslN.js +2 -0
- package/dist/client/assets/InsightsView-C7yRTMPn.css +1 -0
- package/dist/client/assets/InsightsView-DxIfxOzx.js +11 -0
- package/dist/client/assets/MemoryView-BVW2hkWf.js +2 -0
- package/dist/client/assets/MemoryView-CBDUr2Jy.css +1 -0
- package/dist/client/assets/PiExtensionsManager-CpSfMok2.js +11 -0
- package/dist/client/assets/PluginManager-CpBCy656.js +1 -0
- package/dist/client/assets/PullRequestView-BMspX1ga.js +6 -0
- package/dist/client/assets/PullRequestView-CpdE3Yo_.css +1 -0
- package/dist/client/assets/ResearchView--YEtcv_s.js +1 -0
- package/dist/client/assets/ResearchView-DIVNQF4_.css +1 -0
- package/dist/client/assets/SecretsView-CC6QDMWN.js +1 -0
- package/dist/client/assets/SecretsView-CvFioX7R.css +1 -0
- package/dist/client/assets/SessionTerminal-D4R3ScvQ.css +1 -0
- package/dist/client/assets/SessionTerminal-DJGtgIls.js +2 -0
- package/dist/client/assets/SettingsModal-4d_p8D7W.js +1 -0
- package/dist/client/assets/SettingsModal-BESN59Ao.css +1 -0
- package/dist/client/assets/SettingsModal-ino68pI2.css +1 -0
- package/dist/client/assets/SettingsModal-wABa7xmZ.js +21 -0
- package/dist/client/assets/SetupWizardModal-DHe2tXzx.js +2 -0
- package/dist/client/assets/ShadcnColorPicker-HX3j1v66.js +11 -0
- package/dist/client/assets/ShadcnColorPicker-pqVWCC5-.css +1 -0
- package/dist/client/assets/SkillsView-CJ8snrma.css +1 -0
- package/dist/client/assets/SkillsView-mdFVTX-r.js +1 -0
- package/dist/client/assets/TodoView-CIsL_uvQ.css +1 -0
- package/dist/client/assets/TodoView-DQVugDpW.js +6 -0
- package/dist/client/assets/WorkflowNodeEditor-CeERQHHu.js +8 -0
- package/dist/client/assets/WorkflowNodeEditor-f_XPV5Jd.css +1 -0
- package/dist/client/assets/{addon-fit-SnYDEvGm.js → addon-fit-C1WQXRvu.js} +1 -1
- package/dist/client/assets/{addon-unicode11-s5GoZCpi.js → addon-unicode11-BVmNDUBM.js} +1 -1
- package/dist/client/assets/{addon-web-links-jjt2f_oV.js → addon-web-links-CkVew5xs.js} +1 -1
- package/dist/client/assets/{addon-webgl-Icn-RnEx.js → addon-webgl-uLc0RKcC.js} +1 -1
- package/dist/client/assets/agentSkills-C2v1wbxh.js +1 -0
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-CZ_jbgep.css → agentSkills-bQJ4X1gH.css} +1 -1
- package/dist/client/assets/agentsOrgChartLayout-BMvyuaLA.js +1 -0
- package/dist/client/assets/app-BJGkp7Tt.js +13 -0
- package/dist/client/assets/app-BKLUvvm8.js +13 -0
- package/dist/client/assets/app-BaoNC9zg.js +13 -0
- package/dist/client/assets/app-CZQ_fFNf.js +13 -0
- package/dist/client/assets/app-DAu3AzsS.js +13 -0
- package/dist/client/assets/app-DgezOJub.js +13 -0
- package/dist/client/assets/arc-cxkkNsnK.js +1 -0
- package/dist/client/assets/architectureDiagram-3BPJPVTR-CGEhhgX_.js +36 -0
- package/dist/client/assets/band-CquvqAHh.js +1 -0
- package/dist/client/assets/blockDiagram-GPEHLZMM-D0DTo0HT.js +132 -0
- package/dist/client/assets/c4Diagram-AAUBKEIU-DNykNaRb.js +10 -0
- package/dist/client/assets/channel-Dwf1FoGU.js +1 -0
- package/dist/client/assets/chunk-2J33WTMH-5oQfAhmr.js +1 -0
- package/dist/client/assets/chunk-4BX2VUAB-BqLZXgFw.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-C1oIjX3T.js +1 -0
- package/dist/client/assets/chunk-727SXJPM-BaovQTgk.js +206 -0
- package/dist/client/assets/chunk-AQP2D5EJ-B4ikBK42.js +231 -0
- package/dist/client/assets/chunk-FMBD7UC4-5zgtNnG2.js +15 -0
- package/dist/client/assets/chunk-ND2GUHAM-ByrypRna.js +1 -0
- package/dist/client/assets/chunk-QZHKN3VN-B7D1exsu.js +1 -0
- package/dist/client/assets/classDiagram-4FO5ZUOK-WqSUwcK_.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-WqSUwcK_.js +1 -0
- package/dist/client/assets/common-BDp2y6CF.js +1 -0
- package/dist/client/assets/common-BnEo5fLN.js +1 -0
- package/dist/client/assets/common-Bzr_Y8h4.js +1 -0
- package/dist/client/assets/common-CvwyFzfv.js +1 -0
- package/dist/client/assets/common-CztCXRkz.js +1 -0
- package/dist/client/assets/common-DPe2mbb7.js +1 -0
- package/dist/client/assets/cose-bilkent-S5V4N54A-CQmiNzGr.js +1 -0
- package/dist/client/assets/cytoscape.esm-OyMbaexL.js +331 -0
- package/dist/client/assets/dagre-BM42HDAG-BH8Uk0Up.js +4 -0
- package/dist/client/assets/{dashboard-view-B4LXCv5H.js → dashboard-view-CWJ-b59n.js} +1680 -1620
- package/dist/client/assets/dashboard-view-D3PWY2PH.js +1 -0
- package/dist/client/assets/dashboard-view-D_zsA-kz.css +1 -0
- package/dist/client/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/client/assets/diagram-2AECGRRQ-CDoHfkxY.js +43 -0
- package/dist/client/assets/diagram-5GNKFQAL-DARILCuD.js +10 -0
- package/dist/client/assets/diagram-KO2AKTUF-CNP-qi0y.js +3 -0
- package/dist/client/assets/diagram-LMA3HP47-SCiVmkcf.js +24 -0
- package/dist/client/assets/diagram-OG6HWLK6-iTJLXH61.js +24 -0
- package/dist/client/assets/erDiagram-TEJ5UH35-ByMpiPIa.js +85 -0
- package/dist/client/assets/flowDiagram-I6XJVG4X-DW3m3ZpM.js +162 -0
- package/dist/client/assets/{folder-open-33WGVnbp.js → folder-open-G-9vPAdv.js} +1 -1
- package/dist/client/assets/ganttDiagram-6RSMTGT7-BJeYH7Ol.js +292 -0
- package/dist/client/assets/gitGraphDiagram-PVQCEYII-CK_Chj4m.js +106 -0
- package/dist/client/assets/graph--OzhPTMs.js +1 -0
- package/dist/client/assets/index-BZBQ_KsL.css +1 -0
- package/dist/client/assets/index-ccFe_1av.js +1459 -0
- package/dist/client/assets/infoDiagram-5YYISTIA-D8Wg1IgN.js +2 -0
- package/dist/client/assets/init-Dmth1JHB.js +1 -0
- package/dist/client/assets/ishikawaDiagram-YF4QCWOH-DWROR2aX.js +70 -0
- package/dist/client/assets/journeyDiagram-JHISSGLW-Bns9774_.js +139 -0
- package/dist/client/assets/kanban-definition-UN3LZRKU-QtURfAoI.js +89 -0
- package/dist/client/assets/katex-HP8lGamR.js +257 -0
- package/dist/client/assets/layout-SsrduOYp.js +1 -0
- package/dist/client/assets/linear-dXivciGL.js +1 -0
- package/dist/client/assets/mermaid.core-DqgrgWWm.js +309 -0
- package/dist/client/assets/mindmap-definition-RKZ34NQL-jLaDb5_X.js +96 -0
- package/dist/client/assets/ordinal-DILIJJjt.js +1 -0
- package/dist/client/assets/pieDiagram-4H26LBE5-CjbHuIje.js +30 -0
- package/dist/client/assets/quadrantDiagram-W4KKPZXB-xgHbylQr.js +7 -0
- package/dist/client/assets/requirementDiagram-4Y6WPE33-CHdD7W41.js +84 -0
- package/dist/client/assets/sankeyDiagram-5OEKKPKP-C3me87g9.js +40 -0
- package/dist/client/assets/sequenceDiagram-3UESZ5HK-DSHfs1kU.js +162 -0
- package/dist/client/assets/{shield-alert-CqeGWBUK.js → shield-alert-DkGlhVjI.js} +1 -1
- package/dist/client/assets/stateDiagram-AJRCARHV-C08n7sMP.js +1 -0
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BosoAbfO.js +1 -0
- package/dist/client/assets/step-yuy0qJer.js +1 -0
- package/dist/client/assets/time-DoDTxsna.js +1 -0
- package/dist/client/assets/timeline-definition-PNZ67QCA-C21h9Zqh.js +120 -0
- package/dist/client/assets/{upload-C11J2diI.js → upload-B9B-tYt9.js} +1 -1
- package/dist/client/assets/{users-a-ELbyyZ.js → users-C_BA3C7E.js} +1 -1
- package/dist/client/assets/{vendor-i18n-DYlSUfot.js → vendor-i18n-GF3RlKbq.js} +2 -2
- package/dist/client/assets/{vendor-react-BTgM5bbZ.js → vendor-react-SZ_qB27O.js} +1 -1
- package/dist/client/assets/vendor-reactflow-Bg-Qjzh8.js +15 -0
- package/dist/client/assets/{vendor-xterm-ea7-K05z.js → vendor-xterm-BNq00GSj.js} +1 -1
- package/dist/client/assets/vennDiagram-CIIHVFJN-Bv3G0dwI.js +34 -0
- package/dist/client/assets/wardley-L42UT6IY-WX0hHKcN.js +173 -0
- package/dist/client/assets/wardleyDiagram-YWT4CUSO-CMwIPWm7.js +78 -0
- package/dist/client/assets/xychartDiagram-2RQKCTM6-CZvFdt6j.js +7 -0
- package/dist/client/assets/zoom-out-NWbVkreR.js +41 -0
- package/dist/client/index.html +30 -10
- package/dist/client/sw.js +1 -1
- package/dist/client/theme-data.css +3082 -206
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/index.ts +56 -40
- package/dist/droid-cli/package.json +1 -1
- package/dist/droid-cli/src/__tests__/index.test.ts +47 -21
- package/dist/droid-cli/src/__tests__/process-manager.test.ts +50 -33
- package/dist/extension.js +5405 -919
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/pi-claude-cli/src/__tests__/process-manager.test.ts +25 -0
- package/dist/pi-claude-cli/src/process-manager.ts +11 -1
- package/dist/plugin-sdk/index.d.ts +137 -4
- 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/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +68 -44
- 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-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/bundled.js +5 -11
- package/dist/plugins/fusion-plugin-roadmap/manifest.json +1 -11
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +3 -3
- package/skill/fusion/SKILL.md +1 -1
- package/skill/fusion/references/cli-commands.md +2 -1
- package/skill/fusion/references/extension-tools.md +10 -0
- package/skill/fusion/references/fusion-capabilities.md +3 -1
- package/dist/client/assets/AgentDetailView-CanIeYHg.css +0 -1
- package/dist/client/assets/AgentDetailView-DxV8pFHX.js +0 -18
- package/dist/client/assets/AgentsView-BVILQjdS.css +0 -1
- package/dist/client/assets/AgentsView-CTzbcvhK.js +0 -29
- package/dist/client/assets/ChatView-COygcnyk.js +0 -6
- package/dist/client/assets/ChatView-DwJAd5G1.css +0 -1
- package/dist/client/assets/CommandCenter-CTaopaC0.css +0 -1
- package/dist/client/assets/CommandCenter-DoKX2HWm.js +0 -56
- package/dist/client/assets/DevServerView-Cyevyvqx.js +0 -1
- package/dist/client/assets/DevServerView-VTQY28P7.css +0 -1
- package/dist/client/assets/DirectoryPicker-DBdyXEhR.js +0 -1
- package/dist/client/assets/DocumentsView-BzSMyrns.js +0 -1
- package/dist/client/assets/DocumentsView-WfVoTZt8.css +0 -1
- package/dist/client/assets/EvalsView-CUNJ1TLc.css +0 -1
- package/dist/client/assets/EvalsView-ikz00o9g.js +0 -1
- package/dist/client/assets/ExperimentalAgentOnboardingModal-D-rzCCET.js +0 -499
- package/dist/client/assets/GoalsView-Bfu1Oy2-.js +0 -2
- package/dist/client/assets/GoalsView-rg9VSIza.css +0 -1
- package/dist/client/assets/InsightsView-Cgmf5nES.js +0 -11
- package/dist/client/assets/InsightsView-LMv1M1dU.css +0 -1
- package/dist/client/assets/MemoryView-DkEuDKQs.js +0 -2
- package/dist/client/assets/MemoryView-zaXewZzi.css +0 -1
- package/dist/client/assets/NodesView-7VInxyf_.css +0 -1
- package/dist/client/assets/NodesView-B_KYfS4o.js +0 -14
- package/dist/client/assets/PiExtensionsManager-Dz69kkKs.js +0 -11
- package/dist/client/assets/PluginManager-LHCVcduP.js +0 -1
- package/dist/client/assets/PullRequestView-3AdbS2a1.css +0 -1
- package/dist/client/assets/PullRequestView-DBJutLLl.js +0 -6
- package/dist/client/assets/ResearchView-DTh8FLUm.css +0 -1
- package/dist/client/assets/ResearchView-gpn1XcVy.js +0 -1
- package/dist/client/assets/SecretsView-B7YqIowt.js +0 -1
- package/dist/client/assets/SecretsView-Djo1rahi.css +0 -1
- package/dist/client/assets/SessionTerminal-9l4bdKcn.js +0 -2
- package/dist/client/assets/SessionTerminal-BNgtmXb3.css +0 -1
- package/dist/client/assets/SettingsModal-BGEK9_9A.js +0 -31
- package/dist/client/assets/SettingsModal-CKv0TJfM.css +0 -1
- package/dist/client/assets/SettingsModal-CXogw-Er.css +0 -1
- package/dist/client/assets/SettingsModal-DIIoHGUH.js +0 -1
- package/dist/client/assets/SetupWizardModal-BcVeMxeX.js +0 -1
- package/dist/client/assets/SetupWizardModal-CIqFbkrD.css +0 -1
- package/dist/client/assets/SkillsView-3bhGyWs1.css +0 -1
- package/dist/client/assets/SkillsView-BxSJ4PHL.js +0 -1
- package/dist/client/assets/StashRecoveryView-B_8WIQEo.css +0 -1
- package/dist/client/assets/StashRecoveryView-BhFQ2FsP.js +0 -1
- package/dist/client/assets/TodoView-7xIh-Fmi.css +0 -1
- package/dist/client/assets/TodoView-BZpewjy0.js +0 -6
- package/dist/client/assets/WorkflowNodeEditor-Yn1FRF2v.css +0 -1
- package/dist/client/assets/WorkflowNodeEditor-tWsgCdVt.js +0 -8
- package/dist/client/assets/app-BmGA0Hiz.js +0 -13
- package/dist/client/assets/app-CEVYlVuJ.js +0 -13
- package/dist/client/assets/app-CbBFax2C.js +0 -13
- package/dist/client/assets/app-DORKrGAz.js +0 -13
- package/dist/client/assets/app-DQibuQ9z.js +0 -13
- package/dist/client/assets/app-k76GrQP0.js +0 -13
- package/dist/client/assets/common-BRyX4VxB.js +0 -1
- package/dist/client/assets/common-CN9QPI2d.js +0 -1
- package/dist/client/assets/common-CNbjPELi.js +0 -1
- package/dist/client/assets/common-DFDqu_n0.js +0 -1
- package/dist/client/assets/common-DgWWKG8Z.js +0 -1
- package/dist/client/assets/common-X6PzBnVA.js +0 -1
- package/dist/client/assets/createLucideIcon-DmVITl5d.js +0 -21
- package/dist/client/assets/dashboard-view-BFoyhTYF.js +0 -3
- package/dist/client/assets/dashboard-view-Cxzm_eqc.js +0 -1
- package/dist/client/assets/dashboard-view-DdGlfuu-.css +0 -1
- package/dist/client/assets/dashboard-view-_8yfNwju.css +0 -1
- package/dist/client/assets/index-Bglw05rM.js +0 -791
- package/dist/client/assets/index-FYgnflWD.css +0 -1
- package/dist/client/assets/vendor-reactflow-ZasuEfF9.js +0 -15
- package/dist/client/assets/x-PItWc-wQ.js +0 -61
- package/dist/client/assets/zoom-out-CzlHv0Kj.js +0 -21
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion/pi-claude-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"description": "Fusion vendored fork: pi coding-agent extension that routes LLM calls through the Claude Code CLI. Forked from rchern/pi-claude-cli (MIT). See UPSTREAM.md.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": true,
|
|
@@ -414,6 +414,16 @@ describe("validateCliPresenceAsync", () => {
|
|
|
414
414
|
const result = await validateCliPresenceAsync();
|
|
415
415
|
expect(result.ok).toBe(false);
|
|
416
416
|
});
|
|
417
|
+
|
|
418
|
+
it("resolves ok=false instead of rejecting when claude spawn throws synchronously", async () => {
|
|
419
|
+
(spawn as any).mockImplementationOnce(() => {
|
|
420
|
+
throw new Error("Real AI CLI launch blocked during tests: claude --version");
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
await expect(validateCliPresenceAsync()).resolves.toMatchObject({
|
|
424
|
+
ok: false,
|
|
425
|
+
});
|
|
426
|
+
});
|
|
417
427
|
});
|
|
418
428
|
|
|
419
429
|
describe("validateCliAuthAsync", () => {
|
|
@@ -451,6 +461,21 @@ describe("validateCliAuthAsync", () => {
|
|
|
451
461
|
);
|
|
452
462
|
warnSpy.mockRestore();
|
|
453
463
|
});
|
|
464
|
+
|
|
465
|
+
it("resolves false instead of rejecting when claude auth spawn throws synchronously", async () => {
|
|
466
|
+
(spawn as any).mockImplementationOnce(() => {
|
|
467
|
+
throw new Error(
|
|
468
|
+
"Real AI CLI launch blocked during tests: claude auth status",
|
|
469
|
+
);
|
|
470
|
+
});
|
|
471
|
+
const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
472
|
+
|
|
473
|
+
await expect(validateCliAuthAsync()).resolves.toBe(false);
|
|
474
|
+
expect(warnSpy).toHaveBeenCalledWith(
|
|
475
|
+
expect.stringContaining("not authenticated"),
|
|
476
|
+
);
|
|
477
|
+
warnSpy.mockRestore();
|
|
478
|
+
});
|
|
454
479
|
});
|
|
455
480
|
|
|
456
481
|
describe("CLI flags", () => {
|
|
@@ -219,10 +219,20 @@ export function captureStderr(proc: ChildProcess): () => string {
|
|
|
219
219
|
* does this on every chat send), sync probes freeze every other request.
|
|
220
220
|
* This async variant uses spawn so the loop keeps turning while the subprocess
|
|
221
221
|
* starts up.
|
|
222
|
+
*
|
|
223
|
+
* FNXC:CliRuntime 2026-06-20-17:25:
|
|
224
|
+
* FN-6808/FN-6801 require this fire-and-forget auth/presence probe to never reject. Catch synchronous spawn throws from the Vitest child-process guard or platform launch errors and resolve 127, matching the async error sentinel so callers degrade to unauthenticated/not-present instead of surfacing unhandled promise rejections.
|
|
222
225
|
*/
|
|
223
226
|
function runClaudeProbe(args: string[], timeoutMs = 5000): Promise<number> {
|
|
224
227
|
return new Promise((resolve) => {
|
|
225
|
-
|
|
228
|
+
let proc: ChildProcess;
|
|
229
|
+
try {
|
|
230
|
+
proc = spawn("claude", args, { stdio: "ignore" });
|
|
231
|
+
} catch {
|
|
232
|
+
resolve(127);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
|
|
226
236
|
const timer = setTimeout(() => {
|
|
227
237
|
try {
|
|
228
238
|
proc.kill("SIGKILL");
|
|
@@ -236,6 +236,8 @@ interface FixFeatureCreatedPayload {
|
|
|
236
236
|
}
|
|
237
237
|
declare const MISSION_ASSERTION_STATUSES: readonly ["pending", "passed", "failed", "blocked"];
|
|
238
238
|
type MissionAssertionStatus = (typeof MISSION_ASSERTION_STATUSES)[number];
|
|
239
|
+
declare const MISSION_ASSERTION_TYPES: readonly ["static", "behavioral"];
|
|
240
|
+
type MissionAssertionType = (typeof MISSION_ASSERTION_TYPES)[number];
|
|
239
241
|
declare const MILESTONE_VALIDATION_STATES: readonly ["not_started", "needs_coverage", "ready", "passed", "failed", "blocked"];
|
|
240
242
|
type MilestoneValidationState = (typeof MILESTONE_VALIDATION_STATES)[number];
|
|
241
243
|
interface MissionContractAssertion {
|
|
@@ -245,6 +247,7 @@ interface MissionContractAssertion {
|
|
|
245
247
|
title: string;
|
|
246
248
|
assertion: string;
|
|
247
249
|
status: MissionAssertionStatus;
|
|
250
|
+
type: MissionAssertionType;
|
|
248
251
|
orderIndex: number;
|
|
249
252
|
createdAt: string;
|
|
250
253
|
updatedAt: string;
|
|
@@ -269,12 +272,14 @@ interface ContractAssertionCreateInput {
|
|
|
269
272
|
title: string;
|
|
270
273
|
assertion: string;
|
|
271
274
|
status?: MissionAssertionStatus;
|
|
275
|
+
type?: MissionAssertionType;
|
|
272
276
|
sourceFeatureId?: string;
|
|
273
277
|
}
|
|
274
278
|
interface ContractAssertionUpdateInput {
|
|
275
279
|
title?: string;
|
|
276
280
|
assertion?: string;
|
|
277
281
|
status?: MissionAssertionStatus;
|
|
282
|
+
type?: MissionAssertionType;
|
|
278
283
|
}
|
|
279
284
|
|
|
280
285
|
type InReviewStallCode = "merge-blocker" | "transient-merge-status-no-owner" | "merge-retries-exhausted" | "no-worktree-no-merge-confirmed" | "non-retryable-provider-error";
|
|
@@ -284,6 +289,14 @@ interface InReviewStallSignal {
|
|
|
284
289
|
observedAt: string;
|
|
285
290
|
}
|
|
286
291
|
|
|
292
|
+
interface ModelPricing {
|
|
293
|
+
inputPer1M: number;
|
|
294
|
+
outputPer1M: number;
|
|
295
|
+
cacheReadPer1M: number;
|
|
296
|
+
cacheWritePer1M: number;
|
|
297
|
+
source: string;
|
|
298
|
+
}
|
|
299
|
+
|
|
287
300
|
type InReviewStalledCode = "in-review-stalled";
|
|
288
301
|
interface InReviewStalledSignal {
|
|
289
302
|
code: InReviewStalledCode;
|
|
@@ -761,6 +774,7 @@ declare class GlobalSettingsStore {
|
|
|
761
774
|
constructor(dir?: string);
|
|
762
775
|
init(): Promise<boolean>;
|
|
763
776
|
readRaw(): Promise<Record<string, unknown>>;
|
|
777
|
+
private readRawForUpdate;
|
|
764
778
|
getSettings(): Promise<GlobalSettings>;
|
|
765
779
|
updateSettings(patch: Partial<GlobalSettings> & Record<string, unknown>): Promise<GlobalSettings>;
|
|
766
780
|
getSettingsPath(): string;
|
|
@@ -947,7 +961,9 @@ declare class MissionStore extends EventEmitter<MissionStoreEvents> {
|
|
|
947
961
|
getValidatorRunsByFeature(featureId: string): MissionValidatorRun[];
|
|
948
962
|
listStaleRunningValidatorRuns(maxAgeMs: number, now?: number): MissionValidatorRun[];
|
|
949
963
|
reapValidatorRun(runId: string, reason: string): MissionValidatorRun;
|
|
950
|
-
createGeneratedFixFeature(sourceFeatureId: string, runId: string, failedAssertionIds: string[], title?: string): MissionFeature;
|
|
964
|
+
createGeneratedFixFeature(sourceFeatureId: string, runId: string, failedAssertionIds: string[], failureReason?: string, title?: string): MissionFeature;
|
|
965
|
+
findGeneratedFixFeature(sourceFeatureId: string, runId: string): MissionFeature | undefined;
|
|
966
|
+
findOpenGeneratedFixFeature(sourceFeatureId: string): MissionFeature | undefined;
|
|
951
967
|
getFeatureLoopSnapshot(featureId: string): MissionFeatureLoopSnapshot;
|
|
952
968
|
transitionLoopState(featureId: string, newState: FeatureLoopState): MissionFeature;
|
|
953
969
|
addContractAssertion(milestoneId: string, input: ContractAssertionCreateInput): MissionContractAssertion;
|
|
@@ -2701,9 +2717,13 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2701
2717
|
private debounceTimers;
|
|
2702
2718
|
private debounceMs;
|
|
2703
2719
|
private taskLocks;
|
|
2720
|
+
private closing;
|
|
2721
|
+
private deferredTaskCreatedWork;
|
|
2722
|
+
private trackDeferredTaskCreatedWork;
|
|
2704
2723
|
private worktreeAllocationLock;
|
|
2705
2724
|
private configLock;
|
|
2706
2725
|
private taskIdStateReconciled;
|
|
2726
|
+
private dbWasCorruptionRecovered;
|
|
2707
2727
|
private taskIdIntegrityReport;
|
|
2708
2728
|
private lastTaskIdIntegrityLogSignature;
|
|
2709
2729
|
private workflowStepsCache;
|
|
@@ -2758,6 +2778,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2758
2778
|
private buildArchivedAgentLogFields;
|
|
2759
2779
|
private taskToArchiveEntry;
|
|
2760
2780
|
private rowToTaskDocument;
|
|
2781
|
+
private rowToArtifact;
|
|
2761
2782
|
private rowToTaskDocumentRevision;
|
|
2762
2783
|
private rowToGoalCitation;
|
|
2763
2784
|
recordGoalCitations(inputs: GoalCitationInput[]): GoalCitation[];
|
|
@@ -2798,6 +2819,17 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2798
2819
|
private insertRunAuditEventRow;
|
|
2799
2820
|
private getSoftDeletedWriteConflict;
|
|
2800
2821
|
private throwSoftDeletedWriteBlocked;
|
|
2822
|
+
private normalizeTaskFromDisk;
|
|
2823
|
+
private getMalformedTaskMetadataReason;
|
|
2824
|
+
reconcileOrphanedTaskDirs(opts?: {
|
|
2825
|
+
ignoreRecencyWindow?: boolean;
|
|
2826
|
+
}): Promise<{
|
|
2827
|
+
recovered: string[];
|
|
2828
|
+
skipped: Array<{
|
|
2829
|
+
id: string;
|
|
2830
|
+
reason: string;
|
|
2831
|
+
}>;
|
|
2832
|
+
}>;
|
|
2801
2833
|
private readTaskJson;
|
|
2802
2834
|
private writeTaskJsonFile;
|
|
2803
2835
|
private atomicCreateTaskJson;
|
|
@@ -2823,6 +2855,8 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2823
2855
|
resolveLocalNodeIdForTaskAllocation(): Promise<string>;
|
|
2824
2856
|
private createTaskWithDistributedReservation;
|
|
2825
2857
|
private taskDir;
|
|
2858
|
+
private artifactRegistryDir;
|
|
2859
|
+
private static artifactStoredName;
|
|
2826
2860
|
private getBuiltInWorkflowTemplate;
|
|
2827
2861
|
private toBuiltInWorkflowStep;
|
|
2828
2862
|
private toStoredWorkflowStep;
|
|
@@ -3097,6 +3131,10 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3097
3131
|
listWorkflowSettingValuesForProject(): Record<string, Record<string, unknown>>;
|
|
3098
3132
|
computeMovedSettingsTargetWorkflowIds(): Promise<Set<string>>;
|
|
3099
3133
|
getWorkflowSettingValues(workflowId: string, projectId: string): Record<string, unknown>;
|
|
3134
|
+
private parseWorkflowPromptOverrideJson;
|
|
3135
|
+
listWorkflowPromptOverridesForProject(): Record<string, Record<string, string>>;
|
|
3136
|
+
getWorkflowPromptOverrides(workflowId: string, projectId: string): Record<string, string>;
|
|
3137
|
+
updateWorkflowPromptOverrides(workflowId: string, projectId: string, patch: Record<string, string | null | undefined>): Record<string, string>;
|
|
3100
3138
|
updateWorkflowSettingValues(workflowId: string, projectId: string, patch: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
3101
3139
|
private updateTaskUnlocked;
|
|
3102
3140
|
pauseTask(id: string, paused: boolean, runContext?: RunMutationContext, agentOptions?: {
|
|
@@ -3161,6 +3199,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3161
3199
|
}): CompletionHandoffMarker;
|
|
3162
3200
|
clearCompletionHandoffAcceptedMarker(taskId: string): void;
|
|
3163
3201
|
getCompletionHandoffAcceptedMarker(taskId: string): CompletionHandoffMarker | null;
|
|
3202
|
+
recordPluginActivation(input: PluginActivationInput): PluginActivation;
|
|
3164
3203
|
private rowToRunAuditEvent;
|
|
3165
3204
|
recordRunAuditEvent(input: RunAuditEventInput): RunAuditEvent;
|
|
3166
3205
|
private isLegacyAutoMergeStampCandidate;
|
|
@@ -3262,6 +3301,19 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3262
3301
|
reviewState?: "APPROVED" | "CHANGES_REQUESTED" | "COMMENTED";
|
|
3263
3302
|
}, runContext?: RunMutationContext): Promise<Task>;
|
|
3264
3303
|
private hasActiveTask;
|
|
3304
|
+
private writeArtifactData;
|
|
3305
|
+
private insertArtifactRow;
|
|
3306
|
+
registerArtifact(input: ArtifactCreateInput): Promise<Artifact>;
|
|
3307
|
+
getArtifact(id: string): Promise<Artifact | null>;
|
|
3308
|
+
getArtifacts(taskId: string): Promise<Artifact[]>;
|
|
3309
|
+
listArtifacts(options?: {
|
|
3310
|
+
type?: ArtifactType;
|
|
3311
|
+
authorId?: string;
|
|
3312
|
+
taskId?: string;
|
|
3313
|
+
limit?: number;
|
|
3314
|
+
offset?: number;
|
|
3315
|
+
search?: string;
|
|
3316
|
+
}): Promise<ArtifactWithTask[]>;
|
|
3265
3317
|
getTaskDocuments(taskId: string): Promise<TaskDocument[]>;
|
|
3266
3318
|
getAllDocuments(options?: {
|
|
3267
3319
|
searchQuery?: string;
|
|
@@ -3332,6 +3384,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3332
3384
|
includeDisabledBuiltins?: boolean;
|
|
3333
3385
|
}): Promise<WorkflowDefinition[]>;
|
|
3334
3386
|
private readAllWorkflowDefinitions;
|
|
3387
|
+
private applyBuiltInPromptOverridesSync;
|
|
3335
3388
|
getWorkflowDefinition(id: string): Promise<WorkflowDefinition | undefined>;
|
|
3336
3389
|
updateWorkflowDefinition(id: string, updates: WorkflowDefinitionUpdate): Promise<WorkflowDefinition>;
|
|
3337
3390
|
deleteWorkflowDefinition(id: string): Promise<void>;
|
|
@@ -3397,7 +3450,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3397
3450
|
};
|
|
3398
3451
|
}>;
|
|
3399
3452
|
clearTaskWorkflowSelection(taskId: string): Promise<void>;
|
|
3400
|
-
close(): void
|
|
3453
|
+
close(): Promise<void>;
|
|
3401
3454
|
get fts5Available(): boolean;
|
|
3402
3455
|
get archiveFts5Available(): boolean;
|
|
3403
3456
|
optimizeFts5(mode?: "optimize" | "merge"): boolean;
|
|
@@ -3494,6 +3547,9 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3494
3547
|
id?: string;
|
|
3495
3548
|
}): Promise<TaskCommitAssociation>;
|
|
3496
3549
|
getTaskCommitAssociationsByLineageId(lineageId: string): Promise<TaskCommitAssociation[]>;
|
|
3550
|
+
backfillCommitAssociationDiffStats(options?: {
|
|
3551
|
+
dryRun?: boolean;
|
|
3552
|
+
}): Promise<CommitAssociationDiffBackfillReport>;
|
|
3497
3553
|
replaceLegacyTaskCommitAssociations(lineageId: string, associations: Array<Omit<TaskCommitAssociation, "id" | "createdAt" | "updatedAt" | "taskLineageId">>): Promise<void>;
|
|
3498
3554
|
}
|
|
3499
3555
|
|
|
@@ -4042,6 +4098,7 @@ declare class Database {
|
|
|
4042
4098
|
ok: false;
|
|
4043
4099
|
errors: string[];
|
|
4044
4100
|
};
|
|
4101
|
+
private runBackgroundIntegrityCheck;
|
|
4045
4102
|
refreshIntegrityCheck(): {
|
|
4046
4103
|
ok: true;
|
|
4047
4104
|
} | {
|
|
@@ -4111,7 +4168,7 @@ declare class Database {
|
|
|
4111
4168
|
getPath(): string;
|
|
4112
4169
|
}
|
|
4113
4170
|
|
|
4114
|
-
declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high"];
|
|
4171
|
+
declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
4115
4172
|
type ThinkingLevel = (typeof THINKING_LEVELS)[number];
|
|
4116
4173
|
declare const COLUMNS: readonly ["triage", "todo", "in-progress", "in-review", "done", "archived"];
|
|
4117
4174
|
type Column = (typeof COLUMNS)[number];
|
|
@@ -4237,7 +4294,7 @@ declare const COMPLETION_DOCUMENTATION_MODES: readonly ["off", "changeset", "cha
|
|
|
4237
4294
|
type CompletionDocumentationMode = (typeof COMPLETION_DOCUMENTATION_MODES)[number];
|
|
4238
4295
|
declare const THEME_MODES: readonly ["dark", "light", "system"];
|
|
4239
4296
|
type ThemeMode = (typeof THEME_MODES)[number];
|
|
4240
|
-
declare const COLOR_THEMES: readonly ["default", "ocean", "forest", "sunset", "zen", "berry", "high-contrast", "industrial", "monochrome", "slate", "ash", "graphite", "silver", "solarized", "factory", "ayu", "one-dark", "nord", "dracula", "gruvbox", "tokyo-night", "catppuccin-mocha", "github-dark", "everforest", "rose-pine", "kanagawa", "night-owl", "palenight", "monokai-pro", "slime", "brutalist", "neon-city", "parchment", "terminal", "glass", "horizon", "vitesse", "outrun", "snazzy", "porple", "espresso", "mars", "poimandres", "ember", "rust", "copper", "foundry", "carbon", "sandstone", "lagoon", "frost", "lavender", "neon-bloom", "sepia"];
|
|
4297
|
+
declare const COLOR_THEMES: readonly ["default", "ocean", "forest", "sunset", "zen", "berry", "high-contrast", "industrial", "monochrome", "slate", "ash", "air", "graphite", "silver", "solarized", "factory", "factory-mono", "ayu", "one-dark", "nord", "dracula", "gruvbox", "tokyo-night", "catppuccin-mocha", "github-dark", "everforest", "rose-pine", "kanagawa", "night-owl", "palenight", "monokai-pro", "slime", "brutalist", "neon-city", "parchment", "terminal", "glass", "horizon", "vitesse", "outrun", "snazzy", "porple", "espresso", "mars", "poimandres", "ember", "rust", "copper", "foundry", "carbon", "sandstone", "lagoon", "frost", "lavender", "neon-bloom", "sepia", "shadcn", "shadcn-custom", "shadcn-blue", "shadcn-green", "shadcn-red", "shadcn-purple", "shadcn-pink", "shadcn-orange", "shadcn-yellow", "shadcn-mono-red", "shadcn-mono-blue", "shadcn-mono-green", "shadcn-mono-purple", "shadcn-mono-pink", "shadcn-mono-orange", "shadcn-mono-yellow", "shadcn-black", "shadcn-gray", "shadcn-gray-blue"];
|
|
4241
4298
|
type ColorTheme = (typeof COLOR_THEMES)[number];
|
|
4242
4299
|
declare const SUPPORTED_LOCALES: readonly ["en", "zh-CN", "zh-TW", "fr", "es", "ko"];
|
|
4243
4300
|
type Locale = (typeof SUPPORTED_LOCALES)[number];
|
|
@@ -4294,6 +4351,7 @@ interface WorkflowStep {
|
|
|
4294
4351
|
gateMode: WorkflowStepGateMode;
|
|
4295
4352
|
prompt: string;
|
|
4296
4353
|
toolMode?: WorkflowStepToolMode;
|
|
4354
|
+
skillName?: string;
|
|
4297
4355
|
scriptName?: string;
|
|
4298
4356
|
enabled: boolean;
|
|
4299
4357
|
defaultOn?: boolean;
|
|
@@ -4331,6 +4389,7 @@ interface WorkflowStepInput {
|
|
|
4331
4389
|
gateMode?: WorkflowStepGateMode;
|
|
4332
4390
|
prompt?: string;
|
|
4333
4391
|
toolMode?: WorkflowStepToolMode;
|
|
4392
|
+
skillName?: string;
|
|
4334
4393
|
scriptName?: string;
|
|
4335
4394
|
enabled?: boolean;
|
|
4336
4395
|
defaultOn?: boolean;
|
|
@@ -4647,6 +4706,42 @@ interface TaskDocumentWithTask extends TaskDocument {
|
|
|
4647
4706
|
taskDescription?: string;
|
|
4648
4707
|
taskColumn?: string;
|
|
4649
4708
|
}
|
|
4709
|
+
type ArtifactType = "document" | "image" | "video" | "audio" | "other";
|
|
4710
|
+
interface Artifact {
|
|
4711
|
+
id: string;
|
|
4712
|
+
type: ArtifactType;
|
|
4713
|
+
title: string;
|
|
4714
|
+
description?: string;
|
|
4715
|
+
mimeType?: string;
|
|
4716
|
+
sizeBytes?: number;
|
|
4717
|
+
uri?: string;
|
|
4718
|
+
content?: string;
|
|
4719
|
+
authorId: string;
|
|
4720
|
+
authorType: "agent" | "user" | "system";
|
|
4721
|
+
taskId?: string;
|
|
4722
|
+
metadata?: Record<string, unknown>;
|
|
4723
|
+
createdAt: string;
|
|
4724
|
+
updatedAt: string;
|
|
4725
|
+
}
|
|
4726
|
+
interface ArtifactCreateInput {
|
|
4727
|
+
type: ArtifactType;
|
|
4728
|
+
title: string;
|
|
4729
|
+
description?: string;
|
|
4730
|
+
mimeType?: string;
|
|
4731
|
+
sizeBytes?: number;
|
|
4732
|
+
uri?: string;
|
|
4733
|
+
content?: string;
|
|
4734
|
+
authorId: string;
|
|
4735
|
+
authorType: "agent" | "user" | "system";
|
|
4736
|
+
taskId?: string;
|
|
4737
|
+
metadata?: Record<string, unknown>;
|
|
4738
|
+
data?: Buffer;
|
|
4739
|
+
}
|
|
4740
|
+
interface ArtifactWithTask extends Artifact {
|
|
4741
|
+
taskTitle?: string;
|
|
4742
|
+
taskDescription?: string;
|
|
4743
|
+
taskColumn?: string;
|
|
4744
|
+
}
|
|
4650
4745
|
type GoalCitationSurface = "agent_log" | "task_document";
|
|
4651
4746
|
interface GoalCitationInput {
|
|
4652
4747
|
goalId: string;
|
|
@@ -4762,6 +4857,17 @@ interface CentralClaimStore {
|
|
|
4762
4857
|
};
|
|
4763
4858
|
getTaskClaim(projectId: string, taskId: string): TaskClaimRow | null;
|
|
4764
4859
|
}
|
|
4860
|
+
interface TaskTokenUsagePerModel {
|
|
4861
|
+
modelProvider?: string;
|
|
4862
|
+
modelId?: string;
|
|
4863
|
+
inputTokens: number;
|
|
4864
|
+
outputTokens: number;
|
|
4865
|
+
cachedTokens: number;
|
|
4866
|
+
cacheWriteTokens: number;
|
|
4867
|
+
totalTokens: number;
|
|
4868
|
+
firstUsedAt: string;
|
|
4869
|
+
lastUsedAt: string;
|
|
4870
|
+
}
|
|
4765
4871
|
interface TaskTokenUsage {
|
|
4766
4872
|
inputTokens: number;
|
|
4767
4873
|
outputTokens: number;
|
|
@@ -4772,6 +4878,7 @@ interface TaskTokenUsage {
|
|
|
4772
4878
|
lastUsedAt: string;
|
|
4773
4879
|
modelProvider?: string;
|
|
4774
4880
|
modelId?: string;
|
|
4881
|
+
perModel?: TaskTokenUsagePerModel[];
|
|
4775
4882
|
}
|
|
4776
4883
|
interface TaskTokenBudget {
|
|
4777
4884
|
soft?: number;
|
|
@@ -5237,11 +5344,15 @@ interface WorktrunkSettings {
|
|
|
5237
5344
|
interface GlobalSettings {
|
|
5238
5345
|
themeMode?: ThemeMode;
|
|
5239
5346
|
colorTheme?: ColorTheme;
|
|
5347
|
+
shadcnCustomColors?: Record<string, string>;
|
|
5240
5348
|
dashboardFontScalePct?: number;
|
|
5241
5349
|
language?: Locale;
|
|
5242
5350
|
defaultProvider?: string;
|
|
5243
5351
|
defaultModelId?: string;
|
|
5244
5352
|
testMode?: boolean;
|
|
5353
|
+
modelPricingOverrides?: Record<string, ModelPricing>;
|
|
5354
|
+
modelPricingFetchedAt?: string;
|
|
5355
|
+
modelPricingSource?: string;
|
|
5245
5356
|
modelRouterEnabled?: boolean;
|
|
5246
5357
|
modelRouterCheapProvider?: string;
|
|
5247
5358
|
modelRouterCheapModelId?: string;
|
|
@@ -5621,6 +5732,7 @@ interface ProjectSettings {
|
|
|
5621
5732
|
reflectionIntervalMs?: number;
|
|
5622
5733
|
reflectionAfterTask?: boolean;
|
|
5623
5734
|
reviewHandoffPolicy?: "disabled" | "comment-triggered" | "always";
|
|
5735
|
+
quickChatButtonMode?: "floating" | "footer" | "off";
|
|
5624
5736
|
showQuickChatFAB?: boolean;
|
|
5625
5737
|
chatAutoCleanupDays?: number;
|
|
5626
5738
|
mailAutoCleanupDays?: number;
|
|
@@ -5745,6 +5857,14 @@ interface TaskCommitAssociation {
|
|
|
5745
5857
|
createdAt: string;
|
|
5746
5858
|
updatedAt: string;
|
|
5747
5859
|
}
|
|
5860
|
+
interface CommitAssociationDiffBackfillReport {
|
|
5861
|
+
scannedRows: number;
|
|
5862
|
+
distinctCommits: number;
|
|
5863
|
+
updatedRows: number;
|
|
5864
|
+
skippedUnavailableCommits: number;
|
|
5865
|
+
skippedInvalidShas: number;
|
|
5866
|
+
dryRun: boolean;
|
|
5867
|
+
}
|
|
5748
5868
|
interface ArchivedTaskEntry {
|
|
5749
5869
|
id: string;
|
|
5750
5870
|
lineageId: string;
|
|
@@ -6182,6 +6302,19 @@ interface AgentPromptsConfig {
|
|
|
6182
6302
|
templates?: AgentPromptTemplate[];
|
|
6183
6303
|
roleAssignments?: Partial<Record<AgentCapability, string>>;
|
|
6184
6304
|
}
|
|
6305
|
+
interface PluginActivation {
|
|
6306
|
+
id: number;
|
|
6307
|
+
pluginId: string;
|
|
6308
|
+
source: string;
|
|
6309
|
+
pluginVersion: string | null;
|
|
6310
|
+
activatedAt: string;
|
|
6311
|
+
}
|
|
6312
|
+
interface PluginActivationInput {
|
|
6313
|
+
pluginId: string;
|
|
6314
|
+
source: string;
|
|
6315
|
+
pluginVersion?: string | null;
|
|
6316
|
+
activatedAt?: string;
|
|
6317
|
+
}
|
|
6185
6318
|
type RunAuditDomain = "database" | "git" | "filesystem" | "sandbox";
|
|
6186
6319
|
type RunAuditMutationType = "mergeQueue:enqueue" | "mergeQueue:lease-acquired" | "mergeQueue:lease-released" | "mergeQueue:lease-expired" | "task:handoff" | "task:handoff-invariant-violation" | (string & {});
|
|
6187
6320
|
interface RunAuditEventInput {
|
|
@@ -136955,6 +136955,7 @@ function forceKillProcess(proc) {
|
|
|
136955
136955
|
proc.kill("SIGKILL");
|
|
136956
136956
|
}
|
|
136957
136957
|
var activeProcesses = /* @__PURE__ */ new Set();
|
|
136958
|
+
var DROID_MODEL_DISCOVERY_TIMEOUT_MS = 1e4;
|
|
136958
136959
|
function registerProcess(proc) {
|
|
136959
136960
|
activeProcesses.add(proc);
|
|
136960
136961
|
proc.on("exit", () => activeProcesses.delete(proc));
|
|
@@ -136979,7 +136980,13 @@ function captureStderr(proc) {
|
|
|
136979
136980
|
}
|
|
136980
136981
|
function runDroidProbe(args, timeoutMs = 45e3) {
|
|
136981
136982
|
return new Promise((resolve2) => {
|
|
136982
|
-
|
|
136983
|
+
let proc;
|
|
136984
|
+
try {
|
|
136985
|
+
proc = spawn("droid", args, { stdio: "ignore" });
|
|
136986
|
+
} catch {
|
|
136987
|
+
resolve2(127);
|
|
136988
|
+
return;
|
|
136989
|
+
}
|
|
136983
136990
|
const timer = setTimeout(() => {
|
|
136984
136991
|
try {
|
|
136985
136992
|
proc.kill("SIGKILL");
|
|
@@ -137015,41 +137022,51 @@ async function validateCliAuthAsync() {
|
|
|
137015
137022
|
);
|
|
137016
137023
|
return false;
|
|
137017
137024
|
}
|
|
137018
|
-
|
|
137019
|
-
const
|
|
137020
|
-
|
|
137021
|
-
|
|
137022
|
-
|
|
137023
|
-
|
|
137024
|
-
|
|
137025
|
-
|
|
137026
|
-
|
|
137027
|
-
|
|
137028
|
-
proc.once("exit", (code) => {
|
|
137029
|
-
if (code !== 0) return resolve2(null);
|
|
137030
|
-
const trimmed = out.trim();
|
|
137031
|
-
if (!trimmed) return resolve2([]);
|
|
137032
|
-
try {
|
|
137033
|
-
const parsed = JSON.parse(trimmed);
|
|
137034
|
-
if (Array.isArray(parsed)) {
|
|
137035
|
-
return resolve2(
|
|
137036
|
-
parsed.map(
|
|
137037
|
-
(entry) => typeof entry === "string" ? entry : typeof entry?.id === "string" ? entry.id : typeof entry?.name === "string" ? entry.name : void 0
|
|
137038
|
-
).filter((id) => Boolean(id))
|
|
137039
|
-
);
|
|
137040
|
-
}
|
|
137041
|
-
} catch {
|
|
137042
|
-
}
|
|
137043
|
-
resolve2(
|
|
137044
|
-
trimmed.split(/\r?\n/).map((line) => line.trim()).filter(Boolean)
|
|
137045
|
-
);
|
|
137046
|
-
});
|
|
137047
|
-
});
|
|
137048
|
-
if (models && models.length > 0) {
|
|
137049
|
-
return Array.from(new Set(models));
|
|
137025
|
+
function parseDroidModelsFromHelp(helpText) {
|
|
137026
|
+
const ids = [];
|
|
137027
|
+
let collecting = false;
|
|
137028
|
+
for (const line of helpText.split(/\r?\n/)) {
|
|
137029
|
+
if (/^[A-Za-z][A-Za-z ]*Models:\s*$/.test(line)) {
|
|
137030
|
+
collecting = true;
|
|
137031
|
+
continue;
|
|
137032
|
+
}
|
|
137033
|
+
if (collecting && line.trim() && !/^\s/.test(line)) {
|
|
137034
|
+
collecting = false;
|
|
137050
137035
|
}
|
|
137036
|
+
if (!collecting) continue;
|
|
137037
|
+
const match2 = line.match(/^\s+(\S+)\s{2,}\S/);
|
|
137038
|
+
if (match2) ids.push(match2[1]);
|
|
137051
137039
|
}
|
|
137052
|
-
return
|
|
137040
|
+
return Array.from(new Set(ids));
|
|
137041
|
+
}
|
|
137042
|
+
async function discoverDroidModels() {
|
|
137043
|
+
return new Promise((resolve2) => {
|
|
137044
|
+
let proc;
|
|
137045
|
+
try {
|
|
137046
|
+
proc = spawn("droid", ["exec", "--help"], { stdio: ["ignore", "pipe", "ignore"] });
|
|
137047
|
+
} catch {
|
|
137048
|
+
resolve2([]);
|
|
137049
|
+
return;
|
|
137050
|
+
}
|
|
137051
|
+
let settled = false;
|
|
137052
|
+
const settle = (value) => {
|
|
137053
|
+
if (settled) return;
|
|
137054
|
+
settled = true;
|
|
137055
|
+
clearTimeout(timer);
|
|
137056
|
+
try {
|
|
137057
|
+
if (!proc.killed) proc.kill("SIGKILL");
|
|
137058
|
+
} catch {
|
|
137059
|
+
}
|
|
137060
|
+
resolve2(value);
|
|
137061
|
+
};
|
|
137062
|
+
const timer = setTimeout(() => settle([]), DROID_MODEL_DISCOVERY_TIMEOUT_MS);
|
|
137063
|
+
let out = "";
|
|
137064
|
+
proc.stdout?.on("data", (chunk) => {
|
|
137065
|
+
out += chunk.toString();
|
|
137066
|
+
});
|
|
137067
|
+
proc.once("error", () => settle([]));
|
|
137068
|
+
proc.once("exit", () => settle(parseDroidModelsFromHelp(out)));
|
|
137069
|
+
});
|
|
137053
137070
|
}
|
|
137054
137071
|
|
|
137055
137072
|
// ../../plugins/fusion-plugin-droid-runtime/src/stream-parser.ts
|
|
@@ -137693,15 +137710,28 @@ function resolveDroidBinaryPath(settings2) {
|
|
|
137693
137710
|
}
|
|
137694
137711
|
async function run(binary, args, timeoutMs = 2e3) {
|
|
137695
137712
|
return new Promise((resolve2) => {
|
|
137696
|
-
const child = spawn2(binary, args, { stdio: ["ignore", "pipe", "pipe"] });
|
|
137697
137713
|
let stdout = "";
|
|
137698
137714
|
let stderr = "";
|
|
137715
|
+
let child;
|
|
137716
|
+
try {
|
|
137717
|
+
child = spawn2(binary, args, { stdio: ["ignore", "pipe", "pipe"] });
|
|
137718
|
+
} catch {
|
|
137719
|
+
resolve2({ code: 127, stdout, stderr });
|
|
137720
|
+
return;
|
|
137721
|
+
}
|
|
137722
|
+
let settled = false;
|
|
137723
|
+
const settle = (code) => {
|
|
137724
|
+
if (settled) return;
|
|
137725
|
+
settled = true;
|
|
137726
|
+
clearTimeout(timer);
|
|
137727
|
+
resolve2({ code, stdout, stderr });
|
|
137728
|
+
};
|
|
137699
137729
|
const timer = setTimeout(() => {
|
|
137700
137730
|
try {
|
|
137701
137731
|
child.kill("SIGKILL");
|
|
137702
137732
|
} catch {
|
|
137703
137733
|
}
|
|
137704
|
-
|
|
137734
|
+
settle(124);
|
|
137705
137735
|
}, timeoutMs);
|
|
137706
137736
|
child.stdout?.on("data", (c) => {
|
|
137707
137737
|
stdout += c.toString("utf-8");
|
|
@@ -137709,14 +137739,8 @@ async function run(binary, args, timeoutMs = 2e3) {
|
|
|
137709
137739
|
child.stderr?.on("data", (c) => {
|
|
137710
137740
|
stderr += c.toString("utf-8");
|
|
137711
137741
|
});
|
|
137712
|
-
child.on("error", () =>
|
|
137713
|
-
|
|
137714
|
-
resolve2({ code: 127, stdout, stderr });
|
|
137715
|
-
});
|
|
137716
|
-
child.on("close", (code) => {
|
|
137717
|
-
clearTimeout(timer);
|
|
137718
|
-
resolve2({ code, stdout, stderr });
|
|
137719
|
-
});
|
|
137742
|
+
child.on("error", () => settle(127));
|
|
137743
|
+
child.on("close", (code) => settle(code));
|
|
137720
137744
|
});
|
|
137721
137745
|
}
|
|
137722
137746
|
async function probeDroidBinary(options) {
|