@runfusion/fusion 0.44.0 → 0.45.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 +6902 -2143
- package/dist/client/.vite/manifest.json +1115 -328
- package/dist/client/assets/AgentDetailView-CgbB51Iw.css +1 -0
- package/dist/client/assets/AgentDetailView-DJTi6hKC.js +18 -0
- package/dist/client/assets/{AgentPermissionPolicyEditor--YS4iMUY.js → AgentPermissionPolicyEditor-C5DR9dUS.js} +2 -2
- package/dist/client/assets/AgentsView-BNd90PSx.js +29 -0
- package/dist/client/assets/AgentsView-CzMa5Olf.css +1 -0
- package/dist/client/assets/ChatView-B7JaZCL_.js +19 -0
- package/dist/client/assets/ChatView-BtjkE0V7.css +1 -0
- package/dist/client/assets/CommandCenter-CHO21xEW.js +74 -0
- package/dist/client/assets/CommandCenter-Xs5Ftv8s.css +1 -0
- package/dist/client/assets/DevServerView-B_p91Mj_.css +1 -0
- package/dist/client/assets/DevServerView-H9OkT1ld.js +1 -0
- package/dist/client/assets/DirectoryPicker-DegxT8ia.js +1 -0
- package/dist/client/assets/DocumentsView-kVVQYISc.js +1 -0
- package/dist/client/assets/EvalsView-C9-iTSat.js +1 -0
- package/dist/client/assets/EvalsView-CTbgPUne.css +1 -0
- package/dist/client/assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css +1 -0
- package/dist/client/assets/ExperimentalAgentOnboardingModal-DjP_xNkc.js +1 -0
- package/dist/client/assets/GoalsView-CUh8JBnJ.css +1 -0
- package/dist/client/assets/GoalsView-VoIHJJ5l.js +2 -0
- package/dist/client/assets/InsightsView-BIZaUcpd.js +11 -0
- package/dist/client/assets/InsightsView-C7yRTMPn.css +1 -0
- package/dist/client/assets/MemoryView-7v7rv6ns.js +2 -0
- package/dist/client/assets/MemoryView-CBDUr2Jy.css +1 -0
- package/dist/client/assets/PiExtensionsManager-CB89rV4U.js +11 -0
- package/dist/client/assets/PluginManager-BNSuW_R4.js +1 -0
- package/dist/client/assets/PullRequestView-CI5jdKBL.js +6 -0
- package/dist/client/assets/PullRequestView-CpdE3Yo_.css +1 -0
- package/dist/client/assets/ResearchView-BT5dR_m8.js +1 -0
- package/dist/client/assets/ResearchView-DIVNQF4_.css +1 -0
- package/dist/client/assets/SecretsView-CvFioX7R.css +1 -0
- package/dist/client/assets/SecretsView-WPYI58Uo.js +1 -0
- package/dist/client/assets/SessionTerminal-C6gyOWLt.js +2 -0
- package/dist/client/assets/SessionTerminal-D4R3ScvQ.css +1 -0
- package/dist/client/assets/SettingsModal-BESN59Ao.css +1 -0
- package/dist/client/assets/SettingsModal-BZokaNyx.css +1 -0
- package/dist/client/assets/SettingsModal-Bq_3AbaB.js +1 -0
- package/dist/client/assets/SettingsModal-JHACoQJe.js +21 -0
- package/dist/client/assets/SetupWizardModal-CrgbnR_d.js +2 -0
- package/dist/client/assets/ShadcnColorPicker-1icHuwhC.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-byuSe3e0.js +1 -0
- package/dist/client/assets/TodoView-CIsL_uvQ.css +1 -0
- package/dist/client/assets/TodoView-CQ9GjYBg.js +6 -0
- package/dist/client/assets/WorkflowNodeEditor-DW7sJZUX.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-CeytXLHF.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-3wbZ08YC.js +13 -0
- package/dist/client/assets/app-7-5DWLtg.js +13 -0
- package/dist/client/assets/app-CSvE5Noc.js +13 -0
- package/dist/client/assets/app-CZ2LTFce.js +13 -0
- package/dist/client/assets/app-Cv9xEnll.js +13 -0
- package/dist/client/assets/app-x_yPcO5Y.js +13 -0
- package/dist/client/assets/arc-cxkkNsnK.js +1 -0
- package/dist/client/assets/architectureDiagram-3BPJPVTR-BRI0QwDf.js +36 -0
- package/dist/client/assets/band-CquvqAHh.js +1 -0
- package/dist/client/assets/blockDiagram-GPEHLZMM-BXkN8Hv_.js +132 -0
- package/dist/client/assets/c4Diagram-AAUBKEIU-C_Kcokep.js +10 -0
- package/dist/client/assets/channel-Clzpzu32.js +1 -0
- package/dist/client/assets/chunk-2J33WTMH-BGeuCz9C.js +1 -0
- package/dist/client/assets/chunk-4BX2VUAB-DcVdctr0.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-Dg6gDigQ.js +1 -0
- package/dist/client/assets/chunk-727SXJPM-B9B-vlEb.js +206 -0
- package/dist/client/assets/chunk-AQP2D5EJ-LrWQ-2yi.js +231 -0
- package/dist/client/assets/chunk-FMBD7UC4-Bnd6hAED.js +15 -0
- package/dist/client/assets/chunk-ND2GUHAM-nAw93UB5.js +1 -0
- package/dist/client/assets/chunk-QZHKN3VN-CgprKcZo.js +1 -0
- package/dist/client/assets/classDiagram-4FO5ZUOK-CzYHP-af.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CzYHP-af.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-Bhn0g_iK.js +1 -0
- package/dist/client/assets/cytoscape.esm-OyMbaexL.js +331 -0
- package/dist/client/assets/dagre-BM42HDAG-CP4kfwqd.js +4 -0
- package/dist/client/assets/{dashboard-view-B4LXCv5H.js → dashboard-view-CM6Xin_H.js} +1680 -1620
- package/dist/client/assets/dashboard-view-DV1nEhh9.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-DPhzVEUf.js +43 -0
- package/dist/client/assets/diagram-5GNKFQAL-8QOC3K_L.js +10 -0
- package/dist/client/assets/diagram-KO2AKTUF-C1twgEch.js +3 -0
- package/dist/client/assets/diagram-LMA3HP47-3bEegSuf.js +24 -0
- package/dist/client/assets/diagram-OG6HWLK6-BJ_x0rm6.js +24 -0
- package/dist/client/assets/erDiagram-TEJ5UH35-DNiiS5q6.js +85 -0
- package/dist/client/assets/flowDiagram-I6XJVG4X-DoouPklt.js +162 -0
- package/dist/client/assets/{folder-open-33WGVnbp.js → folder-open-CuUs2W7f.js} +1 -1
- package/dist/client/assets/ganttDiagram-6RSMTGT7-BrR6VnP5.js +292 -0
- package/dist/client/assets/gitGraphDiagram-PVQCEYII-BV8_J6Ee.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-CZcWjLAb.js +1459 -0
- package/dist/client/assets/infoDiagram-5YYISTIA-DGwIIFkR.js +2 -0
- package/dist/client/assets/init-Dmth1JHB.js +1 -0
- package/dist/client/assets/ishikawaDiagram-YF4QCWOH-D5dEH4RE.js +70 -0
- package/dist/client/assets/journeyDiagram-JHISSGLW-BuuSWPw5.js +139 -0
- package/dist/client/assets/kanban-definition-UN3LZRKU-DA34uUla.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-Ch4HatqA.js +309 -0
- package/dist/client/assets/mindmap-definition-RKZ34NQL-DUCG-qD3.js +96 -0
- package/dist/client/assets/ordinal-DILIJJjt.js +1 -0
- package/dist/client/assets/pieDiagram-4H26LBE5-DWvFGiLa.js +30 -0
- package/dist/client/assets/quadrantDiagram-W4KKPZXB-OPTVW3WT.js +7 -0
- package/dist/client/assets/requirementDiagram-4Y6WPE33-D7feZvlU.js +84 -0
- package/dist/client/assets/sankeyDiagram-5OEKKPKP-AtnSsEX1.js +40 -0
- package/dist/client/assets/sequenceDiagram-3UESZ5HK-BZjHUeI5.js +162 -0
- package/dist/client/assets/{shield-alert-CqeGWBUK.js → shield-alert-CzaF9ROV.js} +1 -1
- package/dist/client/assets/stateDiagram-AJRCARHV-C8j23Pvn.js +1 -0
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CiZR_S5-.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-DvfNz25n.js +120 -0
- package/dist/client/assets/{upload-C11J2diI.js → upload-DTsYywhN.js} +1 -1
- package/dist/client/assets/{users-a-ELbyyZ.js → users-yAd09tKP.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-CG2aMt3v.js +34 -0
- package/dist/client/assets/wardley-L42UT6IY-BnhBteen.js +173 -0
- package/dist/client/assets/wardleyDiagram-YWT4CUSO-DwqTzM3T.js +78 -0
- package/dist/client/assets/xychartDiagram-2RQKCTM6-5Cv2ZKMV.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 +4935 -827
- 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 +126 -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.45.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";
|
|
@@ -761,6 +766,7 @@ declare class GlobalSettingsStore {
|
|
|
761
766
|
constructor(dir?: string);
|
|
762
767
|
init(): Promise<boolean>;
|
|
763
768
|
readRaw(): Promise<Record<string, unknown>>;
|
|
769
|
+
private readRawForUpdate;
|
|
764
770
|
getSettings(): Promise<GlobalSettings>;
|
|
765
771
|
updateSettings(patch: Partial<GlobalSettings> & Record<string, unknown>): Promise<GlobalSettings>;
|
|
766
772
|
getSettingsPath(): string;
|
|
@@ -947,7 +953,9 @@ declare class MissionStore extends EventEmitter<MissionStoreEvents> {
|
|
|
947
953
|
getValidatorRunsByFeature(featureId: string): MissionValidatorRun[];
|
|
948
954
|
listStaleRunningValidatorRuns(maxAgeMs: number, now?: number): MissionValidatorRun[];
|
|
949
955
|
reapValidatorRun(runId: string, reason: string): MissionValidatorRun;
|
|
950
|
-
createGeneratedFixFeature(sourceFeatureId: string, runId: string, failedAssertionIds: string[], title?: string): MissionFeature;
|
|
956
|
+
createGeneratedFixFeature(sourceFeatureId: string, runId: string, failedAssertionIds: string[], failureReason?: string, title?: string): MissionFeature;
|
|
957
|
+
findGeneratedFixFeature(sourceFeatureId: string, runId: string): MissionFeature | undefined;
|
|
958
|
+
findOpenGeneratedFixFeature(sourceFeatureId: string): MissionFeature | undefined;
|
|
951
959
|
getFeatureLoopSnapshot(featureId: string): MissionFeatureLoopSnapshot;
|
|
952
960
|
transitionLoopState(featureId: string, newState: FeatureLoopState): MissionFeature;
|
|
953
961
|
addContractAssertion(milestoneId: string, input: ContractAssertionCreateInput): MissionContractAssertion;
|
|
@@ -2701,9 +2709,13 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2701
2709
|
private debounceTimers;
|
|
2702
2710
|
private debounceMs;
|
|
2703
2711
|
private taskLocks;
|
|
2712
|
+
private closing;
|
|
2713
|
+
private deferredTaskCreatedWork;
|
|
2714
|
+
private trackDeferredTaskCreatedWork;
|
|
2704
2715
|
private worktreeAllocationLock;
|
|
2705
2716
|
private configLock;
|
|
2706
2717
|
private taskIdStateReconciled;
|
|
2718
|
+
private dbWasCorruptionRecovered;
|
|
2707
2719
|
private taskIdIntegrityReport;
|
|
2708
2720
|
private lastTaskIdIntegrityLogSignature;
|
|
2709
2721
|
private workflowStepsCache;
|
|
@@ -2758,6 +2770,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2758
2770
|
private buildArchivedAgentLogFields;
|
|
2759
2771
|
private taskToArchiveEntry;
|
|
2760
2772
|
private rowToTaskDocument;
|
|
2773
|
+
private rowToArtifact;
|
|
2761
2774
|
private rowToTaskDocumentRevision;
|
|
2762
2775
|
private rowToGoalCitation;
|
|
2763
2776
|
recordGoalCitations(inputs: GoalCitationInput[]): GoalCitation[];
|
|
@@ -2798,6 +2811,17 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2798
2811
|
private insertRunAuditEventRow;
|
|
2799
2812
|
private getSoftDeletedWriteConflict;
|
|
2800
2813
|
private throwSoftDeletedWriteBlocked;
|
|
2814
|
+
private normalizeTaskFromDisk;
|
|
2815
|
+
private getMalformedTaskMetadataReason;
|
|
2816
|
+
reconcileOrphanedTaskDirs(opts?: {
|
|
2817
|
+
ignoreRecencyWindow?: boolean;
|
|
2818
|
+
}): Promise<{
|
|
2819
|
+
recovered: string[];
|
|
2820
|
+
skipped: Array<{
|
|
2821
|
+
id: string;
|
|
2822
|
+
reason: string;
|
|
2823
|
+
}>;
|
|
2824
|
+
}>;
|
|
2801
2825
|
private readTaskJson;
|
|
2802
2826
|
private writeTaskJsonFile;
|
|
2803
2827
|
private atomicCreateTaskJson;
|
|
@@ -2823,6 +2847,8 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
2823
2847
|
resolveLocalNodeIdForTaskAllocation(): Promise<string>;
|
|
2824
2848
|
private createTaskWithDistributedReservation;
|
|
2825
2849
|
private taskDir;
|
|
2850
|
+
private artifactRegistryDir;
|
|
2851
|
+
private static artifactStoredName;
|
|
2826
2852
|
private getBuiltInWorkflowTemplate;
|
|
2827
2853
|
private toBuiltInWorkflowStep;
|
|
2828
2854
|
private toStoredWorkflowStep;
|
|
@@ -3097,6 +3123,10 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3097
3123
|
listWorkflowSettingValuesForProject(): Record<string, Record<string, unknown>>;
|
|
3098
3124
|
computeMovedSettingsTargetWorkflowIds(): Promise<Set<string>>;
|
|
3099
3125
|
getWorkflowSettingValues(workflowId: string, projectId: string): Record<string, unknown>;
|
|
3126
|
+
private parseWorkflowPromptOverrideJson;
|
|
3127
|
+
listWorkflowPromptOverridesForProject(): Record<string, Record<string, string>>;
|
|
3128
|
+
getWorkflowPromptOverrides(workflowId: string, projectId: string): Record<string, string>;
|
|
3129
|
+
updateWorkflowPromptOverrides(workflowId: string, projectId: string, patch: Record<string, string | null | undefined>): Record<string, string>;
|
|
3100
3130
|
updateWorkflowSettingValues(workflowId: string, projectId: string, patch: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
3101
3131
|
private updateTaskUnlocked;
|
|
3102
3132
|
pauseTask(id: string, paused: boolean, runContext?: RunMutationContext, agentOptions?: {
|
|
@@ -3161,6 +3191,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3161
3191
|
}): CompletionHandoffMarker;
|
|
3162
3192
|
clearCompletionHandoffAcceptedMarker(taskId: string): void;
|
|
3163
3193
|
getCompletionHandoffAcceptedMarker(taskId: string): CompletionHandoffMarker | null;
|
|
3194
|
+
recordPluginActivation(input: PluginActivationInput): PluginActivation;
|
|
3164
3195
|
private rowToRunAuditEvent;
|
|
3165
3196
|
recordRunAuditEvent(input: RunAuditEventInput): RunAuditEvent;
|
|
3166
3197
|
private isLegacyAutoMergeStampCandidate;
|
|
@@ -3262,6 +3293,19 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3262
3293
|
reviewState?: "APPROVED" | "CHANGES_REQUESTED" | "COMMENTED";
|
|
3263
3294
|
}, runContext?: RunMutationContext): Promise<Task>;
|
|
3264
3295
|
private hasActiveTask;
|
|
3296
|
+
private writeArtifactData;
|
|
3297
|
+
private insertArtifactRow;
|
|
3298
|
+
registerArtifact(input: ArtifactCreateInput): Promise<Artifact>;
|
|
3299
|
+
getArtifact(id: string): Promise<Artifact | null>;
|
|
3300
|
+
getArtifacts(taskId: string): Promise<Artifact[]>;
|
|
3301
|
+
listArtifacts(options?: {
|
|
3302
|
+
type?: ArtifactType;
|
|
3303
|
+
authorId?: string;
|
|
3304
|
+
taskId?: string;
|
|
3305
|
+
limit?: number;
|
|
3306
|
+
offset?: number;
|
|
3307
|
+
search?: string;
|
|
3308
|
+
}): Promise<ArtifactWithTask[]>;
|
|
3265
3309
|
getTaskDocuments(taskId: string): Promise<TaskDocument[]>;
|
|
3266
3310
|
getAllDocuments(options?: {
|
|
3267
3311
|
searchQuery?: string;
|
|
@@ -3332,6 +3376,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3332
3376
|
includeDisabledBuiltins?: boolean;
|
|
3333
3377
|
}): Promise<WorkflowDefinition[]>;
|
|
3334
3378
|
private readAllWorkflowDefinitions;
|
|
3379
|
+
private applyBuiltInPromptOverridesSync;
|
|
3335
3380
|
getWorkflowDefinition(id: string): Promise<WorkflowDefinition | undefined>;
|
|
3336
3381
|
updateWorkflowDefinition(id: string, updates: WorkflowDefinitionUpdate): Promise<WorkflowDefinition>;
|
|
3337
3382
|
deleteWorkflowDefinition(id: string): Promise<void>;
|
|
@@ -3397,7 +3442,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3397
3442
|
};
|
|
3398
3443
|
}>;
|
|
3399
3444
|
clearTaskWorkflowSelection(taskId: string): Promise<void>;
|
|
3400
|
-
close(): void
|
|
3445
|
+
close(): Promise<void>;
|
|
3401
3446
|
get fts5Available(): boolean;
|
|
3402
3447
|
get archiveFts5Available(): boolean;
|
|
3403
3448
|
optimizeFts5(mode?: "optimize" | "merge"): boolean;
|
|
@@ -3494,6 +3539,9 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
3494
3539
|
id?: string;
|
|
3495
3540
|
}): Promise<TaskCommitAssociation>;
|
|
3496
3541
|
getTaskCommitAssociationsByLineageId(lineageId: string): Promise<TaskCommitAssociation[]>;
|
|
3542
|
+
backfillCommitAssociationDiffStats(options?: {
|
|
3543
|
+
dryRun?: boolean;
|
|
3544
|
+
}): Promise<CommitAssociationDiffBackfillReport>;
|
|
3497
3545
|
replaceLegacyTaskCommitAssociations(lineageId: string, associations: Array<Omit<TaskCommitAssociation, "id" | "createdAt" | "updatedAt" | "taskLineageId">>): Promise<void>;
|
|
3498
3546
|
}
|
|
3499
3547
|
|
|
@@ -4042,6 +4090,7 @@ declare class Database {
|
|
|
4042
4090
|
ok: false;
|
|
4043
4091
|
errors: string[];
|
|
4044
4092
|
};
|
|
4093
|
+
private runBackgroundIntegrityCheck;
|
|
4045
4094
|
refreshIntegrityCheck(): {
|
|
4046
4095
|
ok: true;
|
|
4047
4096
|
} | {
|
|
@@ -4111,7 +4160,7 @@ declare class Database {
|
|
|
4111
4160
|
getPath(): string;
|
|
4112
4161
|
}
|
|
4113
4162
|
|
|
4114
|
-
declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high"];
|
|
4163
|
+
declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
4115
4164
|
type ThinkingLevel = (typeof THINKING_LEVELS)[number];
|
|
4116
4165
|
declare const COLUMNS: readonly ["triage", "todo", "in-progress", "in-review", "done", "archived"];
|
|
4117
4166
|
type Column = (typeof COLUMNS)[number];
|
|
@@ -4237,7 +4286,7 @@ declare const COMPLETION_DOCUMENTATION_MODES: readonly ["off", "changeset", "cha
|
|
|
4237
4286
|
type CompletionDocumentationMode = (typeof COMPLETION_DOCUMENTATION_MODES)[number];
|
|
4238
4287
|
declare const THEME_MODES: readonly ["dark", "light", "system"];
|
|
4239
4288
|
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"];
|
|
4289
|
+
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
4290
|
type ColorTheme = (typeof COLOR_THEMES)[number];
|
|
4242
4291
|
declare const SUPPORTED_LOCALES: readonly ["en", "zh-CN", "zh-TW", "fr", "es", "ko"];
|
|
4243
4292
|
type Locale = (typeof SUPPORTED_LOCALES)[number];
|
|
@@ -4294,6 +4343,7 @@ interface WorkflowStep {
|
|
|
4294
4343
|
gateMode: WorkflowStepGateMode;
|
|
4295
4344
|
prompt: string;
|
|
4296
4345
|
toolMode?: WorkflowStepToolMode;
|
|
4346
|
+
skillName?: string;
|
|
4297
4347
|
scriptName?: string;
|
|
4298
4348
|
enabled: boolean;
|
|
4299
4349
|
defaultOn?: boolean;
|
|
@@ -4331,6 +4381,7 @@ interface WorkflowStepInput {
|
|
|
4331
4381
|
gateMode?: WorkflowStepGateMode;
|
|
4332
4382
|
prompt?: string;
|
|
4333
4383
|
toolMode?: WorkflowStepToolMode;
|
|
4384
|
+
skillName?: string;
|
|
4334
4385
|
scriptName?: string;
|
|
4335
4386
|
enabled?: boolean;
|
|
4336
4387
|
defaultOn?: boolean;
|
|
@@ -4647,6 +4698,42 @@ interface TaskDocumentWithTask extends TaskDocument {
|
|
|
4647
4698
|
taskDescription?: string;
|
|
4648
4699
|
taskColumn?: string;
|
|
4649
4700
|
}
|
|
4701
|
+
type ArtifactType = "document" | "image" | "video" | "audio" | "other";
|
|
4702
|
+
interface Artifact {
|
|
4703
|
+
id: string;
|
|
4704
|
+
type: ArtifactType;
|
|
4705
|
+
title: string;
|
|
4706
|
+
description?: string;
|
|
4707
|
+
mimeType?: string;
|
|
4708
|
+
sizeBytes?: number;
|
|
4709
|
+
uri?: string;
|
|
4710
|
+
content?: string;
|
|
4711
|
+
authorId: string;
|
|
4712
|
+
authorType: "agent" | "user" | "system";
|
|
4713
|
+
taskId?: string;
|
|
4714
|
+
metadata?: Record<string, unknown>;
|
|
4715
|
+
createdAt: string;
|
|
4716
|
+
updatedAt: string;
|
|
4717
|
+
}
|
|
4718
|
+
interface ArtifactCreateInput {
|
|
4719
|
+
type: ArtifactType;
|
|
4720
|
+
title: string;
|
|
4721
|
+
description?: string;
|
|
4722
|
+
mimeType?: string;
|
|
4723
|
+
sizeBytes?: number;
|
|
4724
|
+
uri?: string;
|
|
4725
|
+
content?: string;
|
|
4726
|
+
authorId: string;
|
|
4727
|
+
authorType: "agent" | "user" | "system";
|
|
4728
|
+
taskId?: string;
|
|
4729
|
+
metadata?: Record<string, unknown>;
|
|
4730
|
+
data?: Buffer;
|
|
4731
|
+
}
|
|
4732
|
+
interface ArtifactWithTask extends Artifact {
|
|
4733
|
+
taskTitle?: string;
|
|
4734
|
+
taskDescription?: string;
|
|
4735
|
+
taskColumn?: string;
|
|
4736
|
+
}
|
|
4650
4737
|
type GoalCitationSurface = "agent_log" | "task_document";
|
|
4651
4738
|
interface GoalCitationInput {
|
|
4652
4739
|
goalId: string;
|
|
@@ -4762,6 +4849,17 @@ interface CentralClaimStore {
|
|
|
4762
4849
|
};
|
|
4763
4850
|
getTaskClaim(projectId: string, taskId: string): TaskClaimRow | null;
|
|
4764
4851
|
}
|
|
4852
|
+
interface TaskTokenUsagePerModel {
|
|
4853
|
+
modelProvider?: string;
|
|
4854
|
+
modelId?: string;
|
|
4855
|
+
inputTokens: number;
|
|
4856
|
+
outputTokens: number;
|
|
4857
|
+
cachedTokens: number;
|
|
4858
|
+
cacheWriteTokens: number;
|
|
4859
|
+
totalTokens: number;
|
|
4860
|
+
firstUsedAt: string;
|
|
4861
|
+
lastUsedAt: string;
|
|
4862
|
+
}
|
|
4765
4863
|
interface TaskTokenUsage {
|
|
4766
4864
|
inputTokens: number;
|
|
4767
4865
|
outputTokens: number;
|
|
@@ -4772,6 +4870,7 @@ interface TaskTokenUsage {
|
|
|
4772
4870
|
lastUsedAt: string;
|
|
4773
4871
|
modelProvider?: string;
|
|
4774
4872
|
modelId?: string;
|
|
4873
|
+
perModel?: TaskTokenUsagePerModel[];
|
|
4775
4874
|
}
|
|
4776
4875
|
interface TaskTokenBudget {
|
|
4777
4876
|
soft?: number;
|
|
@@ -5237,6 +5336,7 @@ interface WorktrunkSettings {
|
|
|
5237
5336
|
interface GlobalSettings {
|
|
5238
5337
|
themeMode?: ThemeMode;
|
|
5239
5338
|
colorTheme?: ColorTheme;
|
|
5339
|
+
shadcnCustomColors?: Record<string, string>;
|
|
5240
5340
|
dashboardFontScalePct?: number;
|
|
5241
5341
|
language?: Locale;
|
|
5242
5342
|
defaultProvider?: string;
|
|
@@ -5621,6 +5721,7 @@ interface ProjectSettings {
|
|
|
5621
5721
|
reflectionIntervalMs?: number;
|
|
5622
5722
|
reflectionAfterTask?: boolean;
|
|
5623
5723
|
reviewHandoffPolicy?: "disabled" | "comment-triggered" | "always";
|
|
5724
|
+
quickChatButtonMode?: "floating" | "footer" | "off";
|
|
5624
5725
|
showQuickChatFAB?: boolean;
|
|
5625
5726
|
chatAutoCleanupDays?: number;
|
|
5626
5727
|
mailAutoCleanupDays?: number;
|
|
@@ -5745,6 +5846,14 @@ interface TaskCommitAssociation {
|
|
|
5745
5846
|
createdAt: string;
|
|
5746
5847
|
updatedAt: string;
|
|
5747
5848
|
}
|
|
5849
|
+
interface CommitAssociationDiffBackfillReport {
|
|
5850
|
+
scannedRows: number;
|
|
5851
|
+
distinctCommits: number;
|
|
5852
|
+
updatedRows: number;
|
|
5853
|
+
skippedUnavailableCommits: number;
|
|
5854
|
+
skippedInvalidShas: number;
|
|
5855
|
+
dryRun: boolean;
|
|
5856
|
+
}
|
|
5748
5857
|
interface ArchivedTaskEntry {
|
|
5749
5858
|
id: string;
|
|
5750
5859
|
lineageId: string;
|
|
@@ -6182,6 +6291,19 @@ interface AgentPromptsConfig {
|
|
|
6182
6291
|
templates?: AgentPromptTemplate[];
|
|
6183
6292
|
roleAssignments?: Partial<Record<AgentCapability, string>>;
|
|
6184
6293
|
}
|
|
6294
|
+
interface PluginActivation {
|
|
6295
|
+
id: number;
|
|
6296
|
+
pluginId: string;
|
|
6297
|
+
source: string;
|
|
6298
|
+
pluginVersion: string | null;
|
|
6299
|
+
activatedAt: string;
|
|
6300
|
+
}
|
|
6301
|
+
interface PluginActivationInput {
|
|
6302
|
+
pluginId: string;
|
|
6303
|
+
source: string;
|
|
6304
|
+
pluginVersion?: string | null;
|
|
6305
|
+
activatedAt?: string;
|
|
6306
|
+
}
|
|
6185
6307
|
type RunAuditDomain = "database" | "git" | "filesystem" | "sandbox";
|
|
6186
6308
|
type RunAuditMutationType = "mergeQueue:enqueue" | "mergeQueue:lease-acquired" | "mergeQueue:lease-released" | "mergeQueue:lease-expired" | "task:handoff" | "task:handoff-invariant-violation" | (string & {});
|
|
6187
6309
|
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) {
|
|
@@ -1647,17 +1647,11 @@ var plugin = definePlugin({
|
|
|
1647
1647
|
hooks: {
|
|
1648
1648
|
onSchemaInit: ensureRoadmapSchema
|
|
1649
1649
|
},
|
|
1650
|
-
routes: createRoadmapPluginRoutes()
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
componentPath: "./dashboard-view",
|
|
1656
|
-
icon: "Map",
|
|
1657
|
-
placement: "primary",
|
|
1658
|
-
order: 30
|
|
1659
|
-
}
|
|
1660
|
-
]
|
|
1650
|
+
routes: createRoadmapPluginRoutes()
|
|
1651
|
+
/*
|
|
1652
|
+
FNXC:RoadmapsNavigation 2026-06-22-18:50:
|
|
1653
|
+
The roadmap dashboard view was removed from the product surface. Keep the plugin's schema/routes/domain exports available for compatibility, but do not advertise a dashboardViews entry.
|
|
1654
|
+
*/
|
|
1661
1655
|
});
|
|
1662
1656
|
var index_default = plugin;
|
|
1663
1657
|
export {
|