@namzu/cli 35.0.0 → 36.0.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/CHANGELOG.md +756 -0
- package/README.md +160 -394
- package/assets/pal-blender-mcp.py +123 -0
- package/assets/pal-godot-mcp-pin.json +135 -0
- package/assets/pal-godot-mcp.cjs +418 -0
- package/dist/bin-main.d.ts +3 -0
- package/dist/bin-main.d.ts.map +1 -0
- package/dist/bin.d.ts +2 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +85 -23
- package/dist/bin.js.map +6 -1
- package/dist/boot-narrative.d.ts +16 -0
- package/dist/boot-narrative.d.ts.map +1 -0
- package/dist/checkpoints/manifest.d.ts +107 -0
- package/dist/checkpoints/manifest.d.ts.map +1 -0
- package/dist/checkpoints/store.d.ts +280 -40
- package/dist/checkpoints/store.d.ts.map +1 -1
- package/dist/checkpoints/undo-plan.d.ts +83 -0
- package/dist/checkpoints/undo-plan.d.ts.map +1 -0
- package/dist/checkpoints/wrap.d.ts +4 -0
- package/dist/checkpoints/wrap.d.ts.map +1 -1
- package/dist/chunks/acp-BOSEA4R3.js +13448 -0
- package/dist/chunks/acp-BOSEA4R3.js.map +6 -0
- package/dist/chunks/activity-command-ACS7KL3C.js +262 -0
- package/dist/chunks/activity-command-ACS7KL3C.js.map +6 -0
- package/dist/chunks/add-DLS54YKS.js +712 -0
- package/dist/chunks/add-DLS54YKS.js.map +6 -0
- package/dist/chunks/agent-GV3DWYQC.js +87 -0
- package/dist/chunks/agent-GV3DWYQC.js.map +6 -0
- package/dist/chunks/agent-session-7VE6GJJH.js +46 -0
- package/dist/chunks/agent-session-7VE6GJJH.js.map +6 -0
- package/dist/chunks/archive-6ZENIEBP.js +84 -0
- package/dist/chunks/archive-6ZENIEBP.js.map +6 -0
- package/dist/chunks/bin-main-NFFT5ZIU.js +126 -0
- package/dist/chunks/bin-main-NFFT5ZIU.js.map +6 -0
- package/dist/chunks/browser-VT2U6NG2.js +31 -0
- package/dist/chunks/browser-VT2U6NG2.js.map +6 -0
- package/dist/chunks/chat-UNYVLDFL.js +101 -0
- package/dist/chunks/chat-UNYVLDFL.js.map +6 -0
- package/dist/chunks/chunk-2IL6OG3X.js +311 -0
- package/dist/chunks/chunk-2IL6OG3X.js.map +6 -0
- package/dist/chunks/chunk-2RBYHHLM.js +319 -0
- package/dist/chunks/chunk-2RBYHHLM.js.map +6 -0
- package/dist/chunks/chunk-42ZK2AH4.js +71 -0
- package/dist/chunks/chunk-42ZK2AH4.js.map +6 -0
- package/dist/chunks/chunk-5PQVJBIO.js +168 -0
- package/dist/chunks/chunk-5PQVJBIO.js.map +6 -0
- package/dist/chunks/chunk-6CPT2ZBS.js +75 -0
- package/dist/chunks/chunk-6CPT2ZBS.js.map +6 -0
- package/dist/chunks/chunk-6LLJQ3KY.js +225 -0
- package/dist/chunks/chunk-6LLJQ3KY.js.map +6 -0
- package/dist/chunks/chunk-6YFJDVGA.js +161 -0
- package/dist/chunks/chunk-6YFJDVGA.js.map +6 -0
- package/dist/chunks/chunk-6YG7D7U4.js +159 -0
- package/dist/chunks/chunk-6YG7D7U4.js.map +6 -0
- package/dist/chunks/chunk-6ZPODOJN.js +828 -0
- package/dist/chunks/chunk-6ZPODOJN.js.map +6 -0
- package/dist/chunks/chunk-76FLAFCG.js +51 -0
- package/dist/chunks/chunk-76FLAFCG.js.map +6 -0
- package/dist/chunks/chunk-7HCPD673.js +25326 -0
- package/dist/chunks/chunk-7HCPD673.js.map +6 -0
- package/dist/chunks/chunk-7KWGR2YA.js +257 -0
- package/dist/chunks/chunk-7KWGR2YA.js.map +6 -0
- package/dist/chunks/chunk-A22MBIYU.js +42 -0
- package/dist/chunks/chunk-A22MBIYU.js.map +6 -0
- package/dist/chunks/chunk-AHIDYIRB.js +329 -0
- package/dist/chunks/chunk-AHIDYIRB.js.map +6 -0
- package/dist/chunks/chunk-AK2U3N2A.js +31 -0
- package/dist/chunks/chunk-AK2U3N2A.js.map +6 -0
- package/dist/chunks/chunk-AKKRZTPB.js +283 -0
- package/dist/chunks/chunk-AKKRZTPB.js.map +6 -0
- package/dist/chunks/chunk-BCZR2B3Y.js +97 -0
- package/dist/chunks/chunk-BCZR2B3Y.js.map +6 -0
- package/dist/chunks/chunk-CHIEVVQ2.js +32 -0
- package/dist/chunks/chunk-CHIEVVQ2.js.map +6 -0
- package/dist/chunks/chunk-D67YBUO3.js +110 -0
- package/dist/chunks/chunk-D67YBUO3.js.map +6 -0
- package/dist/chunks/chunk-DIHEHK7K.js +765 -0
- package/dist/chunks/chunk-DIHEHK7K.js.map +6 -0
- package/dist/chunks/chunk-E5VLANCO.js +101 -0
- package/dist/chunks/chunk-E5VLANCO.js.map +6 -0
- package/dist/chunks/chunk-EEDZOGV4.js +47 -0
- package/dist/chunks/chunk-EEDZOGV4.js.map +6 -0
- package/dist/chunks/chunk-ENGNEELC.js +271 -0
- package/dist/chunks/chunk-ENGNEELC.js.map +6 -0
- package/dist/chunks/chunk-EVY4MVRE.js +74 -0
- package/dist/chunks/chunk-EVY4MVRE.js.map +6 -0
- package/dist/chunks/chunk-FJNDNNNQ.js +115 -0
- package/dist/chunks/chunk-FJNDNNNQ.js.map +6 -0
- package/dist/chunks/chunk-FOFGMP7O.js +20 -0
- package/dist/chunks/chunk-FOFGMP7O.js.map +6 -0
- package/dist/chunks/chunk-FTMTO72X.js +95 -0
- package/dist/chunks/chunk-FTMTO72X.js.map +6 -0
- package/dist/chunks/chunk-GIXSS6KW.js +2228 -0
- package/dist/chunks/chunk-GIXSS6KW.js.map +6 -0
- package/dist/chunks/chunk-GNBMKISG.js +19 -0
- package/dist/chunks/chunk-GNBMKISG.js.map +6 -0
- package/dist/chunks/chunk-GWQEMJFS.js +28 -0
- package/dist/chunks/chunk-GWQEMJFS.js.map +6 -0
- package/dist/chunks/chunk-H6B6AROX.js +151 -0
- package/dist/chunks/chunk-H6B6AROX.js.map +6 -0
- package/dist/chunks/chunk-HE7WUOX2.js +26 -0
- package/dist/chunks/chunk-HE7WUOX2.js.map +6 -0
- package/dist/chunks/chunk-HZBKWL42.js +303 -0
- package/dist/chunks/chunk-HZBKWL42.js.map +6 -0
- package/dist/chunks/chunk-I7HQR6ET.js +75 -0
- package/dist/chunks/chunk-I7HQR6ET.js.map +6 -0
- package/dist/chunks/chunk-IJEB77SH.js +648 -0
- package/dist/chunks/chunk-IJEB77SH.js.map +6 -0
- package/dist/chunks/chunk-JNPDWME5.js +675 -0
- package/dist/chunks/chunk-JNPDWME5.js.map +6 -0
- package/dist/chunks/chunk-JORONMD3.js +18 -0
- package/dist/chunks/chunk-JORONMD3.js.map +6 -0
- package/dist/chunks/chunk-JV3LONAU.js +76 -0
- package/dist/chunks/chunk-JV3LONAU.js.map +6 -0
- package/dist/chunks/chunk-K5HARZ7G.js +82516 -0
- package/dist/chunks/chunk-K5HARZ7G.js.map +6 -0
- package/dist/chunks/chunk-KONYGNG6.js +7661 -0
- package/dist/chunks/chunk-KONYGNG6.js.map +6 -0
- package/dist/chunks/chunk-LXB3S4IC.js +19 -0
- package/dist/chunks/chunk-LXB3S4IC.js.map +6 -0
- package/dist/chunks/chunk-M3IAMIBJ.js +661 -0
- package/dist/chunks/chunk-M3IAMIBJ.js.map +6 -0
- package/dist/chunks/chunk-MH6KUKVV.js +1142 -0
- package/dist/chunks/chunk-MH6KUKVV.js.map +6 -0
- package/dist/chunks/chunk-MS3IYQ72.js +1479 -0
- package/dist/chunks/chunk-MS3IYQ72.js.map +6 -0
- package/dist/chunks/chunk-MZP6SH3M.js +3497 -0
- package/dist/chunks/chunk-MZP6SH3M.js.map +6 -0
- package/dist/chunks/chunk-N3ZEXVSS.js +76 -0
- package/dist/chunks/chunk-N3ZEXVSS.js.map +6 -0
- package/dist/chunks/chunk-N6SR54VC.js +207 -0
- package/dist/chunks/chunk-N6SR54VC.js.map +6 -0
- package/dist/chunks/chunk-NADQQMMG.js +46 -0
- package/dist/chunks/chunk-NADQQMMG.js.map +6 -0
- package/dist/chunks/chunk-NBH52WHS.js +247 -0
- package/dist/chunks/chunk-NBH52WHS.js.map +6 -0
- package/dist/chunks/chunk-NICLKFBG.js +109 -0
- package/dist/chunks/chunk-NICLKFBG.js.map +6 -0
- package/dist/chunks/chunk-NIPHHZ5G.js +283 -0
- package/dist/chunks/chunk-NIPHHZ5G.js.map +6 -0
- package/dist/chunks/chunk-NQT244I2.js +517 -0
- package/dist/chunks/chunk-NQT244I2.js.map +6 -0
- package/dist/chunks/chunk-NUGPLXVK.js +228 -0
- package/dist/chunks/chunk-NUGPLXVK.js.map +6 -0
- package/dist/chunks/chunk-OEW7CJKK.js +140 -0
- package/dist/chunks/chunk-OEW7CJKK.js.map +6 -0
- package/dist/chunks/chunk-OH6TB27S.js +111 -0
- package/dist/chunks/chunk-OH6TB27S.js.map +6 -0
- package/dist/chunks/chunk-OWH6QQY2.js +1858 -0
- package/dist/chunks/chunk-OWH6QQY2.js.map +6 -0
- package/dist/chunks/chunk-OWXJOD4H.js +773 -0
- package/dist/chunks/chunk-OWXJOD4H.js.map +6 -0
- package/dist/chunks/chunk-PT537V7B.js +787 -0
- package/dist/chunks/chunk-PT537V7B.js.map +6 -0
- package/dist/chunks/chunk-QEQZFG2X.js +106 -0
- package/dist/chunks/chunk-QEQZFG2X.js.map +6 -0
- package/dist/chunks/chunk-QL4O4UGZ.js +245 -0
- package/dist/chunks/chunk-QL4O4UGZ.js.map +6 -0
- package/dist/chunks/chunk-QL54XCF4.js +73 -0
- package/dist/chunks/chunk-QL54XCF4.js.map +6 -0
- package/dist/chunks/chunk-SB6UD3ED.js +1355 -0
- package/dist/chunks/chunk-SB6UD3ED.js.map +6 -0
- package/dist/chunks/chunk-SGGRGKGV.js +34 -0
- package/dist/chunks/chunk-SGGRGKGV.js.map +6 -0
- package/dist/chunks/chunk-SKKWMMFP.js +474 -0
- package/dist/chunks/chunk-SKKWMMFP.js.map +6 -0
- package/dist/chunks/chunk-SMIDV4KH.js +171 -0
- package/dist/chunks/chunk-SMIDV4KH.js.map +6 -0
- package/dist/chunks/chunk-T2VUTAHB.js +46 -0
- package/dist/chunks/chunk-T2VUTAHB.js.map +6 -0
- package/dist/chunks/chunk-T4SB6AAF.js +134 -0
- package/dist/chunks/chunk-T4SB6AAF.js.map +6 -0
- package/dist/chunks/chunk-TBIX6JRE.js +24 -0
- package/dist/chunks/chunk-TBIX6JRE.js.map +6 -0
- package/dist/chunks/chunk-THNCQJ33.js +11265 -0
- package/dist/chunks/chunk-THNCQJ33.js.map +6 -0
- package/dist/chunks/chunk-U56QFYGA.js +818 -0
- package/dist/chunks/chunk-U56QFYGA.js.map +6 -0
- package/dist/chunks/chunk-U6GZ7EW4.js +106 -0
- package/dist/chunks/chunk-U6GZ7EW4.js.map +6 -0
- package/dist/chunks/chunk-UDDSFIMB.js +1373 -0
- package/dist/chunks/chunk-UDDSFIMB.js.map +6 -0
- package/dist/chunks/chunk-UFHNXZL2.js +399 -0
- package/dist/chunks/chunk-UFHNXZL2.js.map +6 -0
- package/dist/chunks/chunk-US5ZFPAU.js +400 -0
- package/dist/chunks/chunk-US5ZFPAU.js.map +6 -0
- package/dist/chunks/chunk-VRL2WNQN.js +7534 -0
- package/dist/chunks/chunk-VRL2WNQN.js.map +6 -0
- package/dist/chunks/chunk-W3UQMRYA.js +380 -0
- package/dist/chunks/chunk-W3UQMRYA.js.map +6 -0
- package/dist/chunks/chunk-W5KGCUP3.js +11111 -0
- package/dist/chunks/chunk-W5KGCUP3.js.map +6 -0
- package/dist/chunks/chunk-WHODOMXA.js +132 -0
- package/dist/chunks/chunk-WHODOMXA.js.map +6 -0
- package/dist/chunks/chunk-WT6TFCPV.js +154 -0
- package/dist/chunks/chunk-WT6TFCPV.js.map +6 -0
- package/dist/chunks/chunk-WY2WUTFR.js +164 -0
- package/dist/chunks/chunk-WY2WUTFR.js.map +6 -0
- package/dist/chunks/chunk-XEUQN4JC.js +54 -0
- package/dist/chunks/chunk-XEUQN4JC.js.map +6 -0
- package/dist/chunks/chunk-Y7B67G22.js +26 -0
- package/dist/chunks/chunk-Y7B67G22.js.map +6 -0
- package/dist/chunks/chunk-YEMJX2DS.js +69 -0
- package/dist/chunks/chunk-YEMJX2DS.js.map +6 -0
- package/dist/chunks/chunk-YKLKHDZU.js +2953 -0
- package/dist/chunks/chunk-YKLKHDZU.js.map +6 -0
- package/dist/chunks/chunk-YQEWD2EN.js +127 -0
- package/dist/chunks/chunk-YQEWD2EN.js.map +6 -0
- package/dist/chunks/chunk-YYQJIECC.js +1439 -0
- package/dist/chunks/chunk-YYQJIECC.js.map +6 -0
- package/dist/chunks/chunk-ZKVZNOUS.js +106 -0
- package/dist/chunks/chunk-ZKVZNOUS.js.map +6 -0
- package/dist/chunks/chunk-ZPR4IMRT.js +36 -0
- package/dist/chunks/chunk-ZPR4IMRT.js.map +6 -0
- package/dist/chunks/chunk-ZWA2JRJV.js +45 -0
- package/dist/chunks/chunk-ZWA2JRJV.js.map +6 -0
- package/dist/chunks/cli-runtime-F4MBZ2UQ.js +129 -0
- package/dist/chunks/cli-runtime-F4MBZ2UQ.js.map +6 -0
- package/dist/chunks/commands-GMQGFTIY.js +21 -0
- package/dist/chunks/commands-GMQGFTIY.js.map +6 -0
- package/dist/chunks/computer-GXDY4H35.js +493 -0
- package/dist/chunks/computer-GXDY4H35.js.map +6 -0
- package/dist/chunks/crash-report-STOHSORG.js +21 -0
- package/dist/chunks/crash-report-STOHSORG.js.map +6 -0
- package/dist/chunks/devtools-LBE4PAQN.js +3851 -0
- package/dist/chunks/devtools-LBE4PAQN.js.map +6 -0
- package/dist/chunks/dist-3AF2X4S5.js +1339 -0
- package/dist/chunks/dist-3AF2X4S5.js.map +6 -0
- package/dist/chunks/dist-AZIMHV2B.js +514 -0
- package/dist/chunks/dist-AZIMHV2B.js.map +6 -0
- package/dist/chunks/dist-BGYRQ5BC.js +555 -0
- package/dist/chunks/dist-BGYRQ5BC.js.map +6 -0
- package/dist/chunks/dist-OTTZ7WVD.js +1415 -0
- package/dist/chunks/dist-OTTZ7WVD.js.map +6 -0
- package/dist/chunks/dist-R3I3ATSG.js +1018 -0
- package/dist/chunks/dist-R3I3ATSG.js.map +6 -0
- package/dist/chunks/dist-TXEKDBQO.js +40642 -0
- package/dist/chunks/dist-TXEKDBQO.js.map +6 -0
- package/dist/chunks/dist-XTWYQHHN.js +520 -0
- package/dist/chunks/dist-XTWYQHHN.js.map +6 -0
- package/dist/chunks/doctor-VXSB4Y4P.js +28 -0
- package/dist/chunks/doctor-VXSB4Y4P.js.map +6 -0
- package/dist/chunks/drain-DXVICQBR.js +471 -0
- package/dist/chunks/drain-DXVICQBR.js.map +6 -0
- package/dist/chunks/endpoint-M2DDENPP.js +15 -0
- package/dist/chunks/endpoint-M2DDENPP.js.map +6 -0
- package/dist/chunks/eval-BMJQXDKA.js +187 -0
- package/dist/chunks/eval-BMJQXDKA.js.map +6 -0
- package/dist/chunks/exec-3T5ESZPH.js +1284 -0
- package/dist/chunks/exec-3T5ESZPH.js.map +6 -0
- package/dist/chunks/home-ILHA7B6Z.js +16 -0
- package/dist/chunks/home-ILHA7B6Z.js.map +6 -0
- package/dist/chunks/host-queries-QCMWDZGS.js +152 -0
- package/dist/chunks/host-queries-QCMWDZGS.js.map +6 -0
- package/dist/chunks/lib-KXZZJJG2.js +2657 -0
- package/dist/chunks/lib-KXZZJJG2.js.map +6 -0
- package/dist/chunks/lifecycle-CB23VJI7.js +63 -0
- package/dist/chunks/lifecycle-CB23VJI7.js.map +6 -0
- package/dist/chunks/list-N6WXZBMD.js +293 -0
- package/dist/chunks/list-N6WXZBMD.js.map +6 -0
- package/dist/chunks/login-26NCG6EQ.js +29 -0
- package/dist/chunks/login-26NCG6EQ.js.map +6 -0
- package/dist/chunks/logs-V7SNM7LA.js +116 -0
- package/dist/chunks/logs-V7SNM7LA.js.map +6 -0
- package/dist/chunks/mcp-BTHCU5ZC.js +763 -0
- package/dist/chunks/mcp-BTHCU5ZC.js.map +6 -0
- package/dist/chunks/message-command-HMIOR52C.js +170 -0
- package/dist/chunks/message-command-HMIOR52C.js.map +6 -0
- package/dist/chunks/node-QB2FA2ZB.js +916 -0
- package/dist/chunks/node-QB2FA2ZB.js.map +6 -0
- package/dist/chunks/operator-tools-7LMWOHSN.js +115 -0
- package/dist/chunks/operator-tools-7LMWOHSN.js.map +6 -0
- package/dist/chunks/output-schema-XCONYVZ7.js +11 -0
- package/dist/chunks/output-schema-XCONYVZ7.js.map +6 -0
- package/dist/chunks/pal-YEUKHA6F.js +200 -0
- package/dist/chunks/pal-YEUKHA6F.js.map +6 -0
- package/dist/chunks/paths-DXYFKIJU.js +10 -0
- package/dist/chunks/paths-DXYFKIJU.js.map +6 -0
- package/dist/chunks/pica-WNHDDIFX.js +1736 -0
- package/dist/chunks/pica-WNHDDIFX.js.map +6 -0
- package/dist/chunks/providers-EI3FAKYB.js +160 -0
- package/dist/chunks/providers-EI3FAKYB.js.map +6 -0
- package/dist/chunks/resident-5ZY6OG6B.js +1314 -0
- package/dist/chunks/resident-5ZY6OG6B.js.map +6 -0
- package/dist/chunks/resume-command-ONYRZIIA.js +22 -0
- package/dist/chunks/resume-command-ONYRZIIA.js.map +6 -0
- package/dist/chunks/schedule-6JPEO4NR.js +143 -0
- package/dist/chunks/schedule-6JPEO4NR.js.map +6 -0
- package/dist/chunks/serve-S7UWNIR3.js +21 -0
- package/dist/chunks/serve-S7UWNIR3.js.map +6 -0
- package/dist/chunks/service-WSW3M6K5.js +1633 -0
- package/dist/chunks/service-WSW3M6K5.js.map +6 -0
- package/dist/chunks/session-step-2VZM3CCA.js +26 -0
- package/dist/chunks/session-step-2VZM3CCA.js.map +6 -0
- package/dist/chunks/skills-KAZJYGX5.js +282 -0
- package/dist/chunks/skills-KAZJYGX5.js.map +6 -0
- package/dist/chunks/state-263OUKQA.js +717 -0
- package/dist/chunks/state-263OUKQA.js.map +6 -0
- package/dist/chunks/store-3XLCJ7EL.js +42 -0
- package/dist/chunks/store-3XLCJ7EL.js.map +6 -0
- package/dist/chunks/store-KN65QI2M.js +82 -0
- package/dist/chunks/store-KN65QI2M.js.map +6 -0
- package/dist/chunks/store-X3TESBIN.js +34 -0
- package/dist/chunks/store-X3TESBIN.js.map +6 -0
- package/dist/chunks/tui-5MU7JBXX.js +56703 -0
- package/dist/chunks/tui-5MU7JBXX.js.map +6 -0
- package/dist/chunks/upgrade-BYM4MWBC.js +315 -0
- package/dist/chunks/upgrade-BYM4MWBC.js.map +6 -0
- package/dist/chunks/webapi-6HUHZUAH.js +2715 -0
- package/dist/chunks/webapi-6HUHZUAH.js.map +6 -0
- package/dist/chunks/worktree-K3ZIPXRM.js +116 -0
- package/dist/chunks/worktree-K3ZIPXRM.js.map +6 -0
- package/dist/cli-runtime.d.ts +19 -0
- package/dist/cli-runtime.d.ts.map +1 -0
- package/dist/cli.d.ts +0 -15
- package/dist/cli.d.ts.map +1 -1
- package/dist/commands/acp-harness.d.ts +64 -0
- package/dist/commands/acp-harness.d.ts.map +1 -0
- package/dist/commands/acp-provider-retry.d.ts +27 -0
- package/dist/commands/acp-provider-retry.d.ts.map +1 -0
- package/dist/commands/acp.d.ts +134 -3
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/computer.d.ts +3 -0
- package/dist/commands/computer.d.ts.map +1 -0
- package/dist/commands/desktop-host-changes.d.ts +65 -0
- package/dist/commands/desktop-host-changes.d.ts.map +1 -0
- package/dist/commands/desktop-host-header.d.ts +30 -0
- package/dist/commands/desktop-host-header.d.ts.map +1 -0
- package/dist/commands/desktop-host.d.ts +354 -0
- package/dist/commands/desktop-host.d.ts.map +1 -0
- package/dist/commands/desktop-model-catalogue.d.ts +25 -0
- package/dist/commands/desktop-model-catalogue.d.ts.map +1 -0
- package/dist/commands/effort-levels.d.ts +3 -0
- package/dist/commands/effort-levels.d.ts.map +1 -0
- package/dist/commands/exec-flags.d.ts +4 -0
- package/dist/commands/exec-flags.d.ts.map +1 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/lazy.d.ts +20 -0
- package/dist/commands/lazy.d.ts.map +1 -0
- package/dist/commands/manifest.d.ts +33 -0
- package/dist/commands/manifest.d.ts.map +1 -0
- package/dist/commands/pal.d.ts +5 -0
- package/dist/commands/pal.d.ts.map +1 -0
- package/dist/commands/permission-preview.d.ts +38 -0
- package/dist/commands/permission-preview.d.ts.map +1 -0
- package/dist/commands/registry.d.ts +10 -0
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/serve.d.ts +1 -12
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/stdin.d.ts.map +1 -1
- package/dist/commands/upgrade.d.ts +14 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/compile-cache-enable.d.ts +2 -0
- package/dist/compile-cache-enable.d.ts.map +1 -0
- package/dist/compile-cache.d.ts +53 -0
- package/dist/compile-cache.d.ts.map +1 -0
- package/dist/computer/bundle.d.ts +18 -0
- package/dist/computer/bundle.d.ts.map +1 -0
- package/dist/computer/run.d.ts +26 -0
- package/dist/computer/run.d.ts.map +1 -0
- package/dist/computer/sentences.d.ts +30 -0
- package/dist/computer/sentences.d.ts.map +1 -0
- package/dist/config/load.d.ts +10 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/context/capabilities.d.ts +25 -2
- package/dist/context/capabilities.d.ts.map +1 -1
- package/dist/context/runtime-message.d.ts.map +1 -1
- package/dist/crash-report.d.ts +22 -0
- package/dist/crash-report.d.ts.map +1 -0
- package/dist/debug-requested.d.ts +7 -0
- package/dist/debug-requested.d.ts.map +1 -0
- package/dist/doctor/checks/credentials.d.ts.map +1 -1
- package/dist/exit-codes.d.ts +9 -1
- package/dist/exit-codes.d.ts.map +1 -1
- package/dist/index.js +105 -17
- package/dist/index.js.map +6 -1
- package/dist/integrations/harness/claude-adapter.d.ts +20 -0
- package/dist/integrations/harness/claude-adapter.d.ts.map +1 -0
- package/dist/integrations/harness/claude-protocol.d.ts +67 -0
- package/dist/integrations/harness/claude-protocol.d.ts.map +1 -0
- package/dist/integrations/harness/codex-adapter.d.ts +80 -0
- package/dist/integrations/harness/codex-adapter.d.ts.map +1 -0
- package/dist/integrations/harness/codex-protocol.d.ts +22 -0
- package/dist/integrations/harness/codex-protocol.d.ts.map +1 -0
- package/dist/integrations/harness/model-cache.d.ts +16 -0
- package/dist/integrations/harness/model-cache.d.ts.map +1 -0
- package/dist/integrations/harness/native-executable.d.ts +8 -0
- package/dist/integrations/harness/native-executable.d.ts.map +1 -0
- package/dist/integrations/harness/process.d.ts +25 -0
- package/dist/integrations/harness/process.d.ts.map +1 -0
- package/dist/integrations/peers/runtime.d.ts +64 -0
- package/dist/integrations/peers/runtime.d.ts.map +1 -0
- package/dist/integrations/plugins/inventory.d.ts +27 -0
- package/dist/integrations/plugins/inventory.d.ts.map +1 -0
- package/dist/integrations/providers/composer-settings.d.ts +33 -0
- package/dist/integrations/providers/composer-settings.d.ts.map +1 -0
- package/dist/integrations/providers/connections.d.ts +37 -0
- package/dist/integrations/providers/connections.d.ts.map +1 -0
- package/dist/integrations/providers/credential-store.d.ts +35 -0
- package/dist/integrations/providers/credential-store.d.ts.map +1 -1
- package/dist/integrations/providers/discover.d.ts +27 -1
- package/dist/integrations/providers/discover.d.ts.map +1 -1
- package/dist/integrations/providers/index.d.ts +2 -2
- package/dist/integrations/providers/index.d.ts.map +1 -1
- package/dist/integrations/providers/picker-operation.d.ts +6 -0
- package/dist/integrations/providers/picker-operation.d.ts.map +1 -0
- package/dist/integrations/providers/setup.d.ts +16 -1
- package/dist/integrations/providers/setup.d.ts.map +1 -1
- package/dist/integrations/resident/runner-worker.js +190 -161
- package/dist/integrations/resident/runner-worker.js.map +6 -1
- package/dist/integrations/sessions/display-title.d.ts +8 -0
- package/dist/integrations/sessions/display-title.d.ts.map +1 -1
- package/dist/integrations/sessions/store.d.ts +23 -9
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/task-context.d.ts +1 -1
- package/dist/integrations/sessions/task-context.d.ts.map +1 -1
- package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
- package/dist/integrations/subagents/activity.d.ts +9 -6
- package/dist/integrations/subagents/activity.d.ts.map +1 -1
- package/dist/integrations/subagents/operator-journal.d.ts +20 -0
- package/dist/integrations/subagents/operator-journal.d.ts.map +1 -0
- package/dist/integrations/subagents/runtime.d.ts +11 -0
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/trust/store.d.ts +14 -0
- package/dist/integrations/trust/store.d.ts.map +1 -1
- package/dist/integrations/web/search.d.ts +1 -1
- package/dist/pals/actions.d.ts +57 -0
- package/dist/pals/actions.d.ts.map +1 -0
- package/dist/pals/activity-command.d.ts +3 -0
- package/dist/pals/activity-command.d.ts.map +1 -0
- package/dist/pals/activity.d.ts +18 -0
- package/dist/pals/activity.d.ts.map +1 -0
- package/dist/pals/agent-session.d.ts +19 -0
- package/dist/pals/agent-session.d.ts.map +1 -0
- package/dist/pals/channel-actions.d.ts +5 -0
- package/dist/pals/channel-actions.d.ts.map +1 -0
- package/dist/pals/channel-local.d.ts +7 -0
- package/dist/pals/channel-local.d.ts.map +1 -0
- package/dist/pals/channel.d.ts +20 -0
- package/dist/pals/channel.d.ts.map +1 -0
- package/dist/pals/chat.d.ts +6 -0
- package/dist/pals/chat.d.ts.map +1 -0
- package/dist/pals/communication.d.ts +47 -0
- package/dist/pals/communication.d.ts.map +1 -0
- package/dist/pals/conversations.d.ts +26 -0
- package/dist/pals/conversations.d.ts.map +1 -0
- package/dist/pals/desktop-communication.d.ts +111 -0
- package/dist/pals/desktop-communication.d.ts.map +1 -0
- package/dist/pals/dispatch.d.ts +13 -0
- package/dist/pals/dispatch.d.ts.map +1 -0
- package/dist/pals/environment.d.ts +103 -0
- package/dist/pals/environment.d.ts.map +1 -0
- package/dist/pals/guest-mcp-transport.d.ts +28 -0
- package/dist/pals/guest-mcp-transport.d.ts.map +1 -0
- package/dist/pals/guest-mcp.d.ts +22 -0
- package/dist/pals/guest-mcp.d.ts.map +1 -0
- package/dist/pals/inbox-start.d.ts +35 -0
- package/dist/pals/inbox-start.d.ts.map +1 -0
- package/dist/pals/message-command.d.ts +3 -0
- package/dist/pals/message-command.d.ts.map +1 -0
- package/dist/pals/operator-tools.d.ts +23 -0
- package/dist/pals/operator-tools.d.ts.map +1 -0
- package/dist/pals/public-transcript.d.ts +4 -0
- package/dist/pals/public-transcript.d.ts.map +1 -0
- package/dist/pals/review.d.ts +16 -0
- package/dist/pals/review.d.ts.map +1 -0
- package/dist/pals/store.d.ts +16 -0
- package/dist/pals/store.d.ts.map +1 -0
- package/dist/pals/tui-session.d.ts +11 -0
- package/dist/pals/tui-session.d.ts.map +1 -0
- package/dist/permissions/mode-names.d.ts +2 -0
- package/dist/permissions/mode-names.d.ts.map +1 -0
- package/dist/resume-invocation.d.ts +1 -1
- package/dist/resume-invocation.d.ts.map +1 -1
- package/dist/resume-shell.d.ts +8 -0
- package/dist/resume-shell.d.ts.map +1 -0
- package/dist/schedule/build.d.ts +12 -3
- package/dist/schedule/build.d.ts.map +1 -1
- package/dist/schedule/commands/add.d.ts +1 -1
- package/dist/schedule/commands/add.d.ts.map +1 -1
- package/dist/schedule/commands/lifecycle.d.ts.map +1 -1
- package/dist/schedule/commands/list.d.ts +3 -1
- package/dist/schedule/commands/list.d.ts.map +1 -1
- package/dist/schedule/daemon/daemon.d.ts +2 -0
- package/dist/schedule/daemon/daemon.d.ts.map +1 -1
- package/dist/schedule/delivery.d.ts +66 -0
- package/dist/schedule/delivery.d.ts.map +1 -0
- package/dist/schedule/fire/fire.d.ts +1 -1
- package/dist/schedule/fire/fire.d.ts.map +1 -1
- package/dist/schedule/fire/run-script.d.ts +2 -2
- package/dist/schedule/fire/run-script.d.ts.map +1 -1
- package/dist/schedule/fire/script-report.d.ts +31 -0
- package/dist/schedule/fire/script-report.d.ts.map +1 -0
- package/dist/schedule/floor.d.ts +1 -1
- package/dist/schedule/floor.d.ts.map +1 -1
- package/dist/schedule/folder.d.ts +6 -0
- package/dist/schedule/folder.d.ts.map +1 -1
- package/dist/schedule/resume-command.d.ts +3 -3
- package/dist/schedule/resume-command.d.ts.map +1 -1
- package/dist/schedule/store/history.d.ts.map +1 -1
- package/dist/schedule/store/jobs.d.ts +6 -6
- package/dist/schedule/store/jobs.d.ts.map +1 -1
- package/dist/schedule/store/script-state.d.ts +31 -0
- package/dist/schedule/store/script-state.d.ts.map +1 -0
- package/dist/schedule/store/state.d.ts +4 -2
- package/dist/schedule/store/state.d.ts.map +1 -1
- package/dist/schedule/types.d.ts +61 -16
- package/dist/schedule/types.d.ts.map +1 -1
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/terminal/host.d.ts +22 -0
- package/dist/terminal/host.d.ts.map +1 -0
- package/dist/terminal/manager.d.ts +124 -0
- package/dist/terminal/manager.d.ts.map +1 -0
- package/dist/terminal/protocol.d.ts +162 -0
- package/dist/terminal/protocol.d.ts.map +1 -0
- package/dist/terminal/pty.d.ts +85 -0
- package/dist/terminal/pty.d.ts.map +1 -0
- package/dist/terminal/ring.d.ts +23 -0
- package/dist/terminal/ring.d.ts.map +1 -0
- package/dist/terminal/screen.d.ts +31 -0
- package/dist/terminal/screen.d.ts.map +1 -0
- package/dist/termination-state.d.ts +19 -0
- package/dist/termination-state.d.ts.map +1 -0
- package/dist/termination.d.ts +2 -9
- package/dist/termination.d.ts.map +1 -1
- package/dist/tui/AgentExplorer.d.ts +4 -1
- package/dist/tui/AgentExplorer.d.ts.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/BackgroundJobsPanel.d.ts.map +1 -1
- package/dist/tui/BrandHeader.d.ts.map +1 -1
- package/dist/tui/ChildComposer.d.ts +22 -0
- package/dist/tui/ChildComposer.d.ts.map +1 -0
- package/dist/tui/ChoicePicker.d.ts.map +1 -1
- package/dist/tui/Composer.d.ts +19 -3
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/ComposerFrame.d.ts.map +1 -1
- package/dist/tui/CopyPicker.d.ts.map +1 -1
- package/dist/tui/EditPromptPicker.d.ts.map +1 -1
- package/dist/tui/EffortSlider.d.ts.map +1 -1
- package/dist/tui/LiveActivity.d.ts +7 -1
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/Markdown.d.ts.map +1 -1
- package/dist/tui/PendingInputPanel.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/ProviderSetup.d.ts.map +1 -1
- package/dist/tui/ResumePicker.d.ts.map +1 -1
- package/dist/tui/SaveSkillOverlay.d.ts.map +1 -1
- package/dist/tui/ScheduleReviewOverlay.d.ts +1 -1
- package/dist/tui/ScheduleReviewOverlay.d.ts.map +1 -1
- package/dist/tui/StatusBar.d.ts +7 -1
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/StatusPanel.d.ts.map +1 -1
- package/dist/tui/TextPrompt.d.ts.map +1 -1
- package/dist/tui/ToolOutputViewer.d.ts.map +1 -1
- package/dist/tui/Transcript.d.ts.map +1 -1
- package/dist/tui/TrustPrompt.d.ts +8 -0
- package/dist/tui/TrustPrompt.d.ts.map +1 -1
- package/dist/tui/agent.d.ts +125 -3
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/browser-notices.d.ts.map +1 -1
- package/dist/tui/capability-notice.d.ts +38 -0
- package/dist/tui/capability-notice.d.ts.map +1 -0
- package/dist/tui/console-input.d.ts +31 -0
- package/dist/tui/console-input.d.ts.map +1 -0
- package/dist/tui/conversation-evidence-view.d.ts.map +1 -1
- package/dist/tui/credential-entry.d.ts.map +1 -1
- package/dist/tui/exit-summary.d.ts +9 -1
- package/dist/tui/exit-summary.d.ts.map +1 -1
- package/dist/tui/external-editor.d.ts.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/key-hints.d.ts +51 -0
- package/dist/tui/key-hints.d.ts.map +1 -0
- package/dist/tui/launch-settings.d.ts +34 -0
- package/dist/tui/launch-settings.d.ts.map +1 -0
- package/dist/tui/log-pane.d.ts.map +1 -1
- package/dist/tui/model-choices.d.ts +39 -1
- package/dist/tui/model-choices.d.ts.map +1 -1
- package/dist/tui/model-search.d.ts +4 -1
- package/dist/tui/model-search.d.ts.map +1 -1
- package/dist/tui/output-size-watch.d.ts +32 -0
- package/dist/tui/output-size-watch.d.ts.map +1 -0
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/person-terms.d.ts +58 -0
- package/dist/tui/person-terms.d.ts.map +1 -0
- package/dist/tui/plain-failure.d.ts +27 -0
- package/dist/tui/plain-failure.d.ts.map +1 -0
- package/dist/tui/plain-interruption.d.ts +46 -0
- package/dist/tui/plain-interruption.d.ts.map +1 -0
- package/dist/tui/provider-list.d.ts.map +1 -1
- package/dist/tui/render-mode.d.ts +19 -0
- package/dist/tui/render-mode.d.ts.map +1 -0
- package/dist/tui/schedule/host-commands.d.ts +2 -9
- package/dist/tui/schedule/host-commands.d.ts.map +1 -1
- package/dist/tui/schedule/integration.d.ts +8 -0
- package/dist/tui/schedule/integration.d.ts.map +1 -1
- package/dist/tui/schedule/source-deliveries.d.ts +37 -0
- package/dist/tui/schedule/source-deliveries.d.ts.map +1 -0
- package/dist/tui/schedule/startup.d.ts.map +1 -1
- package/dist/tui/schedule/tool-host.d.ts +3 -1
- package/dist/tui/schedule/tool-host.d.ts.map +1 -1
- package/dist/tui/setup-text.d.ts +14 -0
- package/dist/tui/setup-text.d.ts.map +1 -0
- package/dist/tui/shell-escape.d.ts.map +1 -1
- package/dist/tui/skills/suggest-setting.d.ts.map +1 -1
- package/dist/tui/slashCommands.d.ts +4 -1
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/terminal-choice-text.d.ts +7 -0
- package/dist/tui/terminal-choice-text.d.ts.map +1 -1
- package/dist/tui/tidy-tool-output.d.ts +83 -0
- package/dist/tui/tidy-tool-output.d.ts.map +1 -0
- package/dist/tui/tool-presentation.d.ts +6 -0
- package/dist/tui/tool-presentation.d.ts.map +1 -0
- package/dist/tui/triggers/copy.d.ts.map +1 -1
- package/dist/tui/triggers/setting.d.ts.map +1 -1
- package/dist/tui/turn-interruption.d.ts +1 -1
- package/dist/tui/turn-interruption.d.ts.map +1 -1
- package/dist/tui/turn-limits-settings.d.ts +4 -4
- package/dist/tui/turn-limits-settings.d.ts.map +1 -1
- package/dist/tui/types.d.ts +10 -0
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/tui/web-activity.d.ts +3 -2
- package/dist/tui/web-activity.d.ts.map +1 -1
- package/dist/tui/zen-free-refusal.d.ts +17 -0
- package/dist/tui/zen-free-refusal.d.ts.map +1 -0
- package/dist/usage-error.d.ts +15 -0
- package/dist/usage-error.d.ts.map +1 -0
- package/dist/warning-filter.d.ts +30 -0
- package/dist/warning-filter.d.ts.map +1 -0
- package/package.json +21 -10
- package/skills/schedule-task/SKILL.md +74 -20
- package/dist/browser/commands.js +0 -365
- package/dist/browser/commands.js.map +0 -1
- package/dist/browser/control.js +0 -140
- package/dist/browser/control.js.map +0 -1
- package/dist/browser/describe.js +0 -27
- package/dist/browser/describe.js.map +0 -1
- package/dist/checkpoints/store.js +0 -192
- package/dist/checkpoints/store.js.map +0 -1
- package/dist/checkpoints/wrap.js +0 -37
- package/dist/checkpoints/wrap.js.map +0 -1
- package/dist/cli.js +0 -602
- package/dist/cli.js.map +0 -1
- package/dist/commands/acp.js +0 -388
- package/dist/commands/acp.js.map +0 -1
- package/dist/commands/archive.js +0 -65
- package/dist/commands/archive.js.map +0 -1
- package/dist/commands/browser.js +0 -16
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/doctor.js +0 -267
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/drain.js +0 -498
- package/dist/commands/drain.js.map +0 -1
- package/dist/commands/eval.js +0 -237
- package/dist/commands/eval.js.map +0 -1
- package/dist/commands/exec-flags.js +0 -334
- package/dist/commands/exec-flags.js.map +0 -1
- package/dist/commands/exec-json.js +0 -497
- package/dist/commands/exec-json.js.map +0 -1
- package/dist/commands/exec.js +0 -688
- package/dist/commands/exec.js.map +0 -1
- package/dist/commands/host-queries.js +0 -156
- package/dist/commands/host-queries.js.map +0 -1
- package/dist/commands/login.js +0 -315
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/mcp-oauth-login.js +0 -213
- package/dist/commands/mcp-oauth-login.js.map +0 -1
- package/dist/commands/mcp.js +0 -461
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/prior-messages.js +0 -329
- package/dist/commands/prior-messages.js.map +0 -1
- package/dist/commands/provider-wait.js +0 -65
- package/dist/commands/provider-wait.js.map +0 -1
- package/dist/commands/registry.js +0 -40
- package/dist/commands/registry.js.map +0 -1
- package/dist/commands/resident-flags.js +0 -193
- package/dist/commands/resident-flags.js.map +0 -1
- package/dist/commands/resident-learning.js +0 -293
- package/dist/commands/resident-learning.js.map +0 -1
- package/dist/commands/resident.js +0 -419
- package/dist/commands/resident.js.map +0 -1
- package/dist/commands/resume.js +0 -109
- package/dist/commands/resume.js.map +0 -1
- package/dist/commands/schedule.js +0 -131
- package/dist/commands/schedule.js.map +0 -1
- package/dist/commands/serve.js +0 -21
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/skills.js +0 -178
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/state.js +0 -110
- package/dist/commands/state.js.map +0 -1
- package/dist/commands/stdin.js +0 -69
- package/dist/commands/stdin.js.map +0 -1
- package/dist/commands/types.js +0 -2
- package/dist/commands/types.js.map +0 -1
- package/dist/commands/upgrade-progress.js +0 -54
- package/dist/commands/upgrade-progress.js.map +0 -1
- package/dist/commands/upgrade.js +0 -232
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/worktree.js +0 -86
- package/dist/commands/worktree.js.map +0 -1
- package/dist/config/composer-triggers.js +0 -80
- package/dist/config/composer-triggers.js.map +0 -1
- package/dist/config/debug.js +0 -126
- package/dist/config/debug.js.map +0 -1
- package/dist/config/load.js +0 -1208
- package/dist/config/load.js.map +0 -1
- package/dist/config/schema.js +0 -13
- package/dist/config/schema.js.map +0 -1
- package/dist/config/tool-result-screens.js +0 -104
- package/dist/config/tool-result-screens.js.map +0 -1
- package/dist/config/trusted-project-context.js +0 -28
- package/dist/config/trusted-project-context.js.map +0 -1
- package/dist/config/turn-guards.js +0 -46
- package/dist/config/turn-guards.js.map +0 -1
- package/dist/config/user-config.js +0 -118
- package/dist/config/user-config.js.map +0 -1
- package/dist/context/capabilities.js +0 -164
- package/dist/context/capabilities.js.map +0 -1
- package/dist/context/directories.js +0 -69
- package/dist/context/directories.js.map +0 -1
- package/dist/context/doctrine.js +0 -24
- package/dist/context/doctrine.js.map +0 -1
- package/dist/context/environment.js +0 -255
- package/dist/context/environment.js.map +0 -1
- package/dist/context/project-path.js +0 -16
- package/dist/context/project-path.js.map +0 -1
- package/dist/context/project-tracker.js +0 -217
- package/dist/context/project-tracker.js.map +0 -1
- package/dist/context/project.js +0 -256
- package/dist/context/project.js.map +0 -1
- package/dist/context/runtime-message.js +0 -30
- package/dist/context/runtime-message.js.map +0 -1
- package/dist/context/sandbox.js +0 -114
- package/dist/context/sandbox.js.map +0 -1
- package/dist/context/turn-snapshot.js +0 -122
- package/dist/context/turn-snapshot.js.map +0 -1
- package/dist/doctor/checks/browser.js +0 -63
- package/dist/doctor/checks/browser.js.map +0 -1
- package/dist/doctor/checks/chain.js +0 -211
- package/dist/doctor/checks/chain.js.map +0 -1
- package/dist/doctor/checks/credentials.js +0 -98
- package/dist/doctor/checks/credentials.js.map +0 -1
- package/dist/doctor/checks/index.js +0 -72
- package/dist/doctor/checks/index.js.map +0 -1
- package/dist/doctor/checks/invariants.js +0 -79
- package/dist/doctor/checks/invariants.js.map +0 -1
- package/dist/doctor/checks/logging.js +0 -69
- package/dist/doctor/checks/logging.js.map +0 -1
- package/dist/doctor/checks/providers.js +0 -30
- package/dist/doctor/checks/providers.js.map +0 -1
- package/dist/doctor/checks/runtime.js +0 -40
- package/dist/doctor/checks/runtime.js.map +0 -1
- package/dist/doctor/checks/sandbox.js +0 -76
- package/dist/doctor/checks/sandbox.js.map +0 -1
- package/dist/doctor/checks/scheduler.js +0 -74
- package/dist/doctor/checks/scheduler.js.map +0 -1
- package/dist/doctor/checks/session-export.js +0 -62
- package/dist/doctor/checks/session-export.js.map +0 -1
- package/dist/doctor/checks/telemetry.js +0 -58
- package/dist/doctor/checks/telemetry.js.map +0 -1
- package/dist/doctor/checks/vault.js +0 -67
- package/dist/doctor/checks/vault.js.map +0 -1
- package/dist/doctor/index.js +0 -3
- package/dist/doctor/index.js.map +0 -1
- package/dist/doctor/registry.js +0 -230
- package/dist/doctor/registry.js.map +0 -1
- package/dist/exit-codes.js +0 -62
- package/dist/exit-codes.js.map +0 -1
- package/dist/installation.js +0 -48
- package/dist/installation.js.map +0 -1
- package/dist/integrations/clipboard/image.js +0 -119
- package/dist/integrations/clipboard/image.js.map +0 -1
- package/dist/integrations/clipboard/text.js +0 -43
- package/dist/integrations/clipboard/text.js.map +0 -1
- package/dist/integrations/files/attachment-store.js +0 -86
- package/dist/integrations/files/attachment-store.js.map +0 -1
- package/dist/integrations/mcp/oauth-store.js +0 -549
- package/dist/integrations/mcp/oauth-store.js.map +0 -1
- package/dist/integrations/mcp/servers.js +0 -611
- package/dist/integrations/mcp/servers.js.map +0 -1
- package/dist/integrations/mcp/user-config.js +0 -92
- package/dist/integrations/mcp/user-config.js.map +0 -1
- package/dist/integrations/notifications/desktop/freedesktop.js +0 -33
- package/dist/integrations/notifications/desktop/freedesktop.js.map +0 -1
- package/dist/integrations/notifications/desktop/macos.js +0 -17
- package/dist/integrations/notifications/desktop/macos.js.map +0 -1
- package/dist/integrations/notifications/desktop/sanitize.js +0 -49
- package/dist/integrations/notifications/desktop/sanitize.js.map +0 -1
- package/dist/integrations/notifications/desktop/throttle.js +0 -39
- package/dist/integrations/notifications/desktop/throttle.js.map +0 -1
- package/dist/integrations/notifications/desktop/windows-toast.js +0 -56
- package/dist/integrations/notifications/desktop/windows-toast.js.map +0 -1
- package/dist/integrations/notifications/desktop.js +0 -199
- package/dist/integrations/notifications/desktop.js.map +0 -1
- package/dist/integrations/notifications/terminal.js +0 -46
- package/dist/integrations/notifications/terminal.js.map +0 -1
- package/dist/integrations/npm-invocation.js +0 -23
- package/dist/integrations/npm-invocation.js.map +0 -1
- package/dist/integrations/plugins/runtime.js +0 -189
- package/dist/integrations/plugins/runtime.js.map +0 -1
- package/dist/integrations/plugins/settings.js +0 -106
- package/dist/integrations/plugins/settings.js.map +0 -1
- package/dist/integrations/providers/access.js +0 -23
- package/dist/integrations/providers/access.js.map +0 -1
- package/dist/integrations/providers/chain-capabilities.js +0 -211
- package/dist/integrations/providers/chain-capabilities.js.map +0 -1
- package/dist/integrations/providers/codex-device-login.js +0 -195
- package/dist/integrations/providers/codex-device-login.js.map +0 -1
- package/dist/integrations/providers/codex-oauth.js +0 -95
- package/dist/integrations/providers/codex-oauth.js.map +0 -1
- package/dist/integrations/providers/credential-provider.js +0 -74
- package/dist/integrations/providers/credential-provider.js.map +0 -1
- package/dist/integrations/providers/credential-store.js +0 -657
- package/dist/integrations/providers/credential-store.js.map +0 -1
- package/dist/integrations/providers/current-credential.js +0 -45
- package/dist/integrations/providers/current-credential.js.map +0 -1
- package/dist/integrations/providers/discover.js +0 -313
- package/dist/integrations/providers/discover.js.map +0 -1
- package/dist/integrations/providers/gemini-credentials.js +0 -148
- package/dist/integrations/providers/gemini-credentials.js.map +0 -1
- package/dist/integrations/providers/harness-credentials.js +0 -344
- package/dist/integrations/providers/harness-credentials.js.map +0 -1
- package/dist/integrations/providers/identity.js +0 -64
- package/dist/integrations/providers/identity.js.map +0 -1
- package/dist/integrations/providers/index.js +0 -14
- package/dist/integrations/providers/index.js.map +0 -1
- package/dist/integrations/providers/keychain.js +0 -78
- package/dist/integrations/providers/keychain.js.map +0 -1
- package/dist/integrations/providers/model-reasoning.js +0 -51
- package/dist/integrations/providers/model-reasoning.js.map +0 -1
- package/dist/integrations/providers/oauth.js +0 -302
- package/dist/integrations/providers/oauth.js.map +0 -1
- package/dist/integrations/providers/preferences.js +0 -287
- package/dist/integrations/providers/preferences.js.map +0 -1
- package/dist/integrations/providers/register.js +0 -154
- package/dist/integrations/providers/register.js.map +0 -1
- package/dist/integrations/providers/registry.js +0 -289
- package/dist/integrations/providers/registry.js.map +0 -1
- package/dist/integrations/providers/setup.js +0 -158
- package/dist/integrations/providers/setup.js.map +0 -1
- package/dist/integrations/providers/subscription-login.js +0 -328
- package/dist/integrations/providers/subscription-login.js.map +0 -1
- package/dist/integrations/providers/zen-catalogue.js +0 -196
- package/dist/integrations/providers/zen-catalogue.js.map +0 -1
- package/dist/integrations/resident/foreground.js +0 -95
- package/dist/integrations/resident/foreground.js.map +0 -1
- package/dist/integrations/resident/inspection.js +0 -282
- package/dist/integrations/resident/inspection.js.map +0 -1
- package/dist/integrations/resident/learning-sources.js +0 -79
- package/dist/integrations/resident/learning-sources.js.map +0 -1
- package/dist/integrations/resident/learning-storage.js +0 -55
- package/dist/integrations/resident/learning-storage.js.map +0 -1
- package/dist/integrations/resident/lifecycle-errors.js +0 -15
- package/dist/integrations/resident/lifecycle-errors.js.map +0 -1
- package/dist/integrations/resident/owned-runner.js +0 -91
- package/dist/integrations/resident/owned-runner.js.map +0 -1
- package/dist/integrations/resident/runner-control.js +0 -238
- package/dist/integrations/resident/runner-control.js.map +0 -1
- package/dist/integrations/resident/runner-launch.js +0 -142
- package/dist/integrations/resident/runner-launch.js.map +0 -1
- package/dist/integrations/resident/runner-store.js +0 -284
- package/dist/integrations/resident/runner-store.js.map +0 -1
- package/dist/integrations/resident/session-log-reads.js +0 -125
- package/dist/integrations/resident/session-log-reads.js.map +0 -1
- package/dist/integrations/resident/session-step.js +0 -476
- package/dist/integrations/resident/session-step.js.map +0 -1
- package/dist/integrations/resident/storage.js +0 -183
- package/dist/integrations/resident/storage.js.map +0 -1
- package/dist/integrations/resident/tool-evidence.js +0 -123
- package/dist/integrations/resident/tool-evidence.js.map +0 -1
- package/dist/integrations/resident/verification.js +0 -109
- package/dist/integrations/resident/verification.js.map +0 -1
- package/dist/integrations/sessions/checkpoint-view.js +0 -48
- package/dist/integrations/sessions/checkpoint-view.js.map +0 -1
- package/dist/integrations/sessions/context-inventory.js +0 -44
- package/dist/integrations/sessions/context-inventory.js.map +0 -1
- package/dist/integrations/sessions/conversation-search.js +0 -572
- package/dist/integrations/sessions/conversation-search.js.map +0 -1
- package/dist/integrations/sessions/display-title.js +0 -5
- package/dist/integrations/sessions/display-title.js.map +0 -1
- package/dist/integrations/sessions/evidence-page-validation.js +0 -74
- package/dist/integrations/sessions/evidence-page-validation.js.map +0 -1
- package/dist/integrations/sessions/evidence-recall.js +0 -117
- package/dist/integrations/sessions/evidence-recall.js.map +0 -1
- package/dist/integrations/sessions/store.js +0 -780
- package/dist/integrations/sessions/store.js.map +0 -1
- package/dist/integrations/sessions/task-context.js +0 -96
- package/dist/integrations/sessions/task-context.js.map +0 -1
- package/dist/integrations/sessions/transcript-export.js +0 -342
- package/dist/integrations/sessions/transcript-export.js.map +0 -1
- package/dist/integrations/state/home.js +0 -17
- package/dist/integrations/state/home.js.map +0 -1
- package/dist/integrations/state/identity.js +0 -49
- package/dist/integrations/state/identity.js.map +0 -1
- package/dist/integrations/state/immutable-json.js +0 -38
- package/dist/integrations/state/immutable-json.js.map +0 -1
- package/dist/integrations/state/private-directory.js +0 -43
- package/dist/integrations/state/private-directory.js.map +0 -1
- package/dist/integrations/state/project.js +0 -13
- package/dist/integrations/state/project.js.map +0 -1
- package/dist/integrations/state/report.js +0 -626
- package/dist/integrations/state/report.js.map +0 -1
- package/dist/integrations/state/retention.js +0 -18
- package/dist/integrations/state/retention.js.map +0 -1
- package/dist/integrations/subagents/NamzuCliAgent.js +0 -9
- package/dist/integrations/subagents/NamzuCliAgent.js.map +0 -1
- package/dist/integrations/subagents/activity.js +0 -759
- package/dist/integrations/subagents/activity.js.map +0 -1
- package/dist/integrations/subagents/batches.js +0 -172
- package/dist/integrations/subagents/batches.js.map +0 -1
- package/dist/integrations/subagents/definitions.js +0 -26
- package/dist/integrations/subagents/definitions.js.map +0 -1
- package/dist/integrations/subagents/model-effort.js +0 -12
- package/dist/integrations/subagents/model-effort.js.map +0 -1
- package/dist/integrations/subagents/parent.js +0 -47
- package/dist/integrations/subagents/parent.js.map +0 -1
- package/dist/integrations/subagents/policy.js +0 -3
- package/dist/integrations/subagents/policy.js.map +0 -1
- package/dist/integrations/subagents/replay.js +0 -295
- package/dist/integrations/subagents/replay.js.map +0 -1
- package/dist/integrations/subagents/runtime.js +0 -1317
- package/dist/integrations/subagents/runtime.js.map +0 -1
- package/dist/integrations/subagents/saved-agents.js +0 -102
- package/dist/integrations/subagents/saved-agents.js.map +0 -1
- package/dist/integrations/subagents/slash.js +0 -45
- package/dist/integrations/subagents/slash.js.map +0 -1
- package/dist/integrations/subagents/worktree-driver.js +0 -72
- package/dist/integrations/subagents/worktree-driver.js.map +0 -1
- package/dist/integrations/telemetry/session-export.js +0 -119
- package/dist/integrations/telemetry/session-export.js.map +0 -1
- package/dist/integrations/trust/store.js +0 -73
- package/dist/integrations/trust/store.js.map +0 -1
- package/dist/integrations/updates.js +0 -115
- package/dist/integrations/updates.js.map +0 -1
- package/dist/integrations/web/exa-search.js +0 -154
- package/dist/integrations/web/exa-search.js.map +0 -1
- package/dist/integrations/web/open-url.js +0 -73
- package/dist/integrations/web/open-url.js.map +0 -1
- package/dist/integrations/web/search.js +0 -68
- package/dist/integrations/web/search.js.map +0 -1
- package/dist/integrations/worktrees/managed.js +0 -231
- package/dist/integrations/worktrees/managed.js.map +0 -1
- package/dist/logging.js +0 -115
- package/dist/logging.js.map +0 -1
- package/dist/memory/io.js +0 -177
- package/dist/memory/io.js.map +0 -1
- package/dist/memory/presentation.js +0 -76
- package/dist/memory/presentation.js.map +0 -1
- package/dist/memory/store.js +0 -180
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/typed.js +0 -336
- package/dist/memory/typed.js.map +0 -1
- package/dist/output/formatter.js +0 -16
- package/dist/output/formatter.js.map +0 -1
- package/dist/output/index.js +0 -22
- package/dist/output/index.js.map +0 -1
- package/dist/output/json.js +0 -51
- package/dist/output/json.js.map +0 -1
- package/dist/output/text.js +0 -50
- package/dist/output/text.js.map +0 -1
- package/dist/output/yaml.js +0 -26
- package/dist/output/yaml.js.map +0 -1
- package/dist/output-schema.js +0 -18
- package/dist/output-schema.js.map +0 -1
- package/dist/permissions/browser-sites.js +0 -270
- package/dist/permissions/browser-sites.js.map +0 -1
- package/dist/permissions/canonical-project.js +0 -13
- package/dist/permissions/canonical-project.js.map +0 -1
- package/dist/permissions/checks.js +0 -128
- package/dist/permissions/checks.js.map +0 -1
- package/dist/permissions/headless-trust.js +0 -86
- package/dist/permissions/headless-trust.js.map +0 -1
- package/dist/permissions/live-mode.js +0 -62
- package/dist/permissions/live-mode.js.map +0 -1
- package/dist/permissions/mode.js +0 -65
- package/dist/permissions/mode.js.map +0 -1
- package/dist/permissions/rules.js +0 -358
- package/dist/permissions/rules.js.map +0 -1
- package/dist/release-notes.js +0 -64
- package/dist/release-notes.js.map +0 -1
- package/dist/resume-invocation.js +0 -24
- package/dist/resume-invocation.js.map +0 -1
- package/dist/schedule/build.js +0 -374
- package/dist/schedule/build.js.map +0 -1
- package/dist/schedule/changes.js +0 -78
- package/dist/schedule/changes.js.map +0 -1
- package/dist/schedule/commands/add.js +0 -603
- package/dist/schedule/commands/add.js.map +0 -1
- package/dist/schedule/commands/args.js +0 -80
- package/dist/schedule/commands/args.js.map +0 -1
- package/dist/schedule/commands/confirm-prompt.js +0 -21
- package/dist/schedule/commands/confirm-prompt.js.map +0 -1
- package/dist/schedule/commands/lifecycle.js +0 -586
- package/dist/schedule/commands/lifecycle.js.map +0 -1
- package/dist/schedule/commands/list.js +0 -260
- package/dist/schedule/commands/list.js.map +0 -1
- package/dist/schedule/commands/logs.js +0 -106
- package/dist/schedule/commands/logs.js.map +0 -1
- package/dist/schedule/commands/service.js +0 -458
- package/dist/schedule/commands/service.js.map +0 -1
- package/dist/schedule/daemon/daemon.js +0 -1265
- package/dist/schedule/daemon/daemon.js.map +0 -1
- package/dist/schedule/daemon/endpoint.js +0 -158
- package/dist/schedule/daemon/endpoint.js.map +0 -1
- package/dist/schedule/daemon/exit.js +0 -8
- package/dist/schedule/daemon/exit.js.map +0 -1
- package/dist/schedule/daemon/log.js +0 -53
- package/dist/schedule/daemon/log.js.map +0 -1
- package/dist/schedule/daemon/notify.js +0 -158
- package/dist/schedule/daemon/notify.js.map +0 -1
- package/dist/schedule/daemon/retention.js +0 -46
- package/dist/schedule/daemon/retention.js.map +0 -1
- package/dist/schedule/daemon/sessions.js +0 -52
- package/dist/schedule/daemon/sessions.js.map +0 -1
- package/dist/schedule/env.js +0 -106
- package/dist/schedule/env.js.map +0 -1
- package/dist/schedule/fire/browser-preflight.js +0 -73
- package/dist/schedule/fire/browser-preflight.js.map +0 -1
- package/dist/schedule/fire/calls.js +0 -114
- package/dist/schedule/fire/calls.js.map +0 -1
- package/dist/schedule/fire/fire.js +0 -681
- package/dist/schedule/fire/fire.js.map +0 -1
- package/dist/schedule/fire/result.js +0 -19
- package/dist/schedule/fire/result.js.map +0 -1
- package/dist/schedule/fire/run-script.js +0 -81
- package/dist/schedule/fire/run-script.js.map +0 -1
- package/dist/schedule/fire/unattended-note.js +0 -51
- package/dist/schedule/fire/unattended-note.js.map +0 -1
- package/dist/schedule/fire/wake-gate.js +0 -90
- package/dist/schedule/fire/wake-gate.js.map +0 -1
- package/dist/schedule/floor.js +0 -1561
- package/dist/schedule/floor.js.map +0 -1
- package/dist/schedule/folder.js +0 -84
- package/dist/schedule/folder.js.map +0 -1
- package/dist/schedule/paths.js +0 -53
- package/dist/schedule/paths.js.map +0 -1
- package/dist/schedule/policy.js +0 -414
- package/dist/schedule/policy.js.map +0 -1
- package/dist/schedule/resume-command.js +0 -72
- package/dist/schedule/resume-command.js.map +0 -1
- package/dist/schedule/script-check.js +0 -146
- package/dist/schedule/script-check.js.map +0 -1
- package/dist/schedule/script-shell.js +0 -5
- package/dist/schedule/script-shell.js.map +0 -1
- package/dist/schedule/service/detect.js +0 -29
- package/dist/schedule/service/detect.js.map +0 -1
- package/dist/schedule/service/index.js +0 -361
- package/dist/schedule/service/index.js.map +0 -1
- package/dist/schedule/service/launchd.js +0 -84
- package/dist/schedule/service/launchd.js.map +0 -1
- package/dist/schedule/service/manifest.js +0 -16
- package/dist/schedule/service/manifest.js.map +0 -1
- package/dist/schedule/service/names.js +0 -22
- package/dist/schedule/service/names.js.map +0 -1
- package/dist/schedule/service/quote.js +0 -64
- package/dist/schedule/service/quote.js.map +0 -1
- package/dist/schedule/service/runner.js +0 -31
- package/dist/schedule/service/runner.js.map +0 -1
- package/dist/schedule/service/systemd.js +0 -96
- package/dist/schedule/service/systemd.js.map +0 -1
- package/dist/schedule/service/windows-task.js +0 -199
- package/dist/schedule/service/windows-task.js.map +0 -1
- package/dist/schedule/service/wsl.js +0 -121
- package/dist/schedule/service/wsl.js.map +0 -1
- package/dist/schedule/store/atomic.js +0 -138
- package/dist/schedule/store/atomic.js.map +0 -1
- package/dist/schedule/store/claims.js +0 -57
- package/dist/schedule/store/claims.js.map +0 -1
- package/dist/schedule/store/digest.js +0 -139
- package/dist/schedule/store/digest.js.map +0 -1
- package/dist/schedule/store/history.js +0 -117
- package/dist/schedule/store/history.js.map +0 -1
- package/dist/schedule/store/jobs.js +0 -277
- package/dist/schedule/store/jobs.js.map +0 -1
- package/dist/schedule/store/state.js +0 -38
- package/dist/schedule/store/state.js.map +0 -1
- package/dist/schedule/types.js +0 -33
- package/dist/schedule/types.js.map +0 -1
- package/dist/schedule/visible-source.js +0 -59
- package/dist/schedule/visible-source.js.map +0 -1
- package/dist/skills/audit.js +0 -75
- package/dist/skills/audit.js.map +0 -1
- package/dist/skills/catalog.js +0 -226
- package/dist/skills/catalog.js.map +0 -1
- package/dist/skills/directory.js +0 -51
- package/dist/skills/directory.js.map +0 -1
- package/dist/skills/save.js +0 -344
- package/dist/skills/save.js.map +0 -1
- package/dist/skills/store.js +0 -351
- package/dist/skills/store.js.map +0 -1
- package/dist/termination.js +0 -143
- package/dist/termination.js.map +0 -1
- package/dist/test-support/toolset.js +0 -27
- package/dist/test-support/toolset.js.map +0 -1
- package/dist/tui/AgentExplorer.js +0 -789
- package/dist/tui/AgentExplorer.js.map +0 -1
- package/dist/tui/App.js +0 -8499
- package/dist/tui/App.js.map +0 -1
- package/dist/tui/BackgroundJobsPanel.js +0 -129
- package/dist/tui/BackgroundJobsPanel.js.map +0 -1
- package/dist/tui/BrandHeader.js +0 -14
- package/dist/tui/BrandHeader.js.map +0 -1
- package/dist/tui/Checklist.js +0 -90
- package/dist/tui/Checklist.js.map +0 -1
- package/dist/tui/ChoicePicker.js +0 -64
- package/dist/tui/ChoicePicker.js.map +0 -1
- package/dist/tui/Composer.js +0 -939
- package/dist/tui/Composer.js.map +0 -1
- package/dist/tui/ComposerFrame.js +0 -79
- package/dist/tui/ComposerFrame.js.map +0 -1
- package/dist/tui/CopyPicker.js +0 -19
- package/dist/tui/CopyPicker.js.map +0 -1
- package/dist/tui/EditPromptPicker.js +0 -17
- package/dist/tui/EditPromptPicker.js.map +0 -1
- package/dist/tui/EffortSlider.js +0 -134
- package/dist/tui/EffortSlider.js.map +0 -1
- package/dist/tui/LiveActivity.js +0 -89
- package/dist/tui/LiveActivity.js.map +0 -1
- package/dist/tui/Markdown.js +0 -137
- package/dist/tui/Markdown.js.map +0 -1
- package/dist/tui/PendingInputPanel.js +0 -108
- package/dist/tui/PendingInputPanel.js.map +0 -1
- package/dist/tui/PermissionOverlay.js +0 -278
- package/dist/tui/PermissionOverlay.js.map +0 -1
- package/dist/tui/Picker.js +0 -1310
- package/dist/tui/Picker.js.map +0 -1
- package/dist/tui/ProviderSetup.js +0 -125
- package/dist/tui/ProviderSetup.js.map +0 -1
- package/dist/tui/ResumePicker.js +0 -34
- package/dist/tui/ResumePicker.js.map +0 -1
- package/dist/tui/SaveSkillOverlay.js +0 -118
- package/dist/tui/SaveSkillOverlay.js.map +0 -1
- package/dist/tui/ScheduleReviewOverlay.js +0 -166
- package/dist/tui/ScheduleReviewOverlay.js.map +0 -1
- package/dist/tui/StatusBar.js +0 -182
- package/dist/tui/StatusBar.js.map +0 -1
- package/dist/tui/StatusPanel.js +0 -11
- package/dist/tui/StatusPanel.js.map +0 -1
- package/dist/tui/TaskList.js +0 -43
- package/dist/tui/TaskList.js.map +0 -1
- package/dist/tui/TextPrompt.js +0 -185
- package/dist/tui/TextPrompt.js.map +0 -1
- package/dist/tui/ToolOutputViewer.js +0 -39
- package/dist/tui/ToolOutputViewer.js.map +0 -1
- package/dist/tui/Transcript.js +0 -235
- package/dist/tui/Transcript.js.map +0 -1
- package/dist/tui/TrustPrompt.js +0 -13
- package/dist/tui/TrustPrompt.js.map +0 -1
- package/dist/tui/ViewportBound.js +0 -55
- package/dist/tui/ViewportBound.js.map +0 -1
- package/dist/tui/agent-transcript-rows.js +0 -115
- package/dist/tui/agent-transcript-rows.js.map +0 -1
- package/dist/tui/agent.js +0 -4301
- package/dist/tui/agent.js.map +0 -1
- package/dist/tui/browser-notices.js +0 -107
- package/dist/tui/browser-notices.js.map +0 -1
- package/dist/tui/choice-selection.js +0 -38
- package/dist/tui/choice-selection.js.map +0 -1
- package/dist/tui/compact-transcript.js +0 -46
- package/dist/tui/compact-transcript.js.map +0 -1
- package/dist/tui/consent-timing.js +0 -48
- package/dist/tui/consent-timing.js.map +0 -1
- package/dist/tui/conversation-evidence-view.js +0 -96
- package/dist/tui/conversation-evidence-view.js.map +0 -1
- package/dist/tui/conversation-history.js +0 -33
- package/dist/tui/conversation-history.js.map +0 -1
- package/dist/tui/copy-targets.js +0 -189
- package/dist/tui/copy-targets.js.map +0 -1
- package/dist/tui/credential-entry.js +0 -134
- package/dist/tui/credential-entry.js.map +0 -1
- package/dist/tui/edit-prompts.js +0 -35
- package/dist/tui/edit-prompts.js.map +0 -1
- package/dist/tui/exit-summary.js +0 -30
- package/dist/tui/exit-summary.js.map +0 -1
- package/dist/tui/external-editor.js +0 -169
- package/dist/tui/external-editor.js.map +0 -1
- package/dist/tui/hypermode.js +0 -58
- package/dist/tui/hypermode.js.map +0 -1
- package/dist/tui/index.js +0 -81
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/live-window.js +0 -281
- package/dist/tui/live-window.js.map +0 -1
- package/dist/tui/log-pane.js +0 -100
- package/dist/tui/log-pane.js.map +0 -1
- package/dist/tui/login-prompt.js +0 -105
- package/dist/tui/login-prompt.js.map +0 -1
- package/dist/tui/logo.js +0 -9
- package/dist/tui/logo.js.map +0 -1
- package/dist/tui/markdown-block-cache.js +0 -76
- package/dist/tui/markdown-block-cache.js.map +0 -1
- package/dist/tui/markdown-table.js +0 -175
- package/dist/tui/markdown-table.js.map +0 -1
- package/dist/tui/markdown-wrap.js +0 -189
- package/dist/tui/markdown-wrap.js.map +0 -1
- package/dist/tui/markdownParser.js +0 -237
- package/dist/tui/markdownParser.js.map +0 -1
- package/dist/tui/mentions.js +0 -150
- package/dist/tui/mentions.js.map +0 -1
- package/dist/tui/model-catalogue-view.js +0 -75
- package/dist/tui/model-catalogue-view.js.map +0 -1
- package/dist/tui/model-choices.js +0 -157
- package/dist/tui/model-choices.js.map +0 -1
- package/dist/tui/model-search.js +0 -28
- package/dist/tui/model-search.js.map +0 -1
- package/dist/tui/model-selection-intent.js +0 -96
- package/dist/tui/model-selection-intent.js.map +0 -1
- package/dist/tui/model-switch-tool.js +0 -74
- package/dist/tui/model-switch-tool.js.map +0 -1
- package/dist/tui/model-switch.js +0 -106
- package/dist/tui/model-switch.js.map +0 -1
- package/dist/tui/notices.js +0 -27
- package/dist/tui/notices.js.map +0 -1
- package/dist/tui/open-browser.js +0 -147
- package/dist/tui/open-browser.js.map +0 -1
- package/dist/tui/permission-review.js +0 -858
- package/dist/tui/permission-review.js.map +0 -1
- package/dist/tui/plugin-view.js +0 -59
- package/dist/tui/plugin-view.js.map +0 -1
- package/dist/tui/provider-list.js +0 -327
- package/dist/tui/provider-list.js.map +0 -1
- package/dist/tui/provider-selection.js +0 -16
- package/dist/tui/provider-selection.js.map +0 -1
- package/dist/tui/schedule/host-commands.js +0 -428
- package/dist/tui/schedule/host-commands.js.map +0 -1
- package/dist/tui/schedule/integration.js +0 -150
- package/dist/tui/schedule/integration.js.map +0 -1
- package/dist/tui/schedule/loop-host.js +0 -153
- package/dist/tui/schedule/loop-host.js.map +0 -1
- package/dist/tui/schedule/resume.js +0 -333
- package/dist/tui/schedule/resume.js.map +0 -1
- package/dist/tui/schedule/startup.js +0 -121
- package/dist/tui/schedule/startup.js.map +0 -1
- package/dist/tui/schedule/tool-host.js +0 -619
- package/dist/tui/schedule/tool-host.js.map +0 -1
- package/dist/tui/selection-window.js +0 -37
- package/dist/tui/selection-window.js.map +0 -1
- package/dist/tui/shell-escape.js +0 -110
- package/dist/tui/shell-escape.js.map +0 -1
- package/dist/tui/skills/learning.js +0 -131
- package/dist/tui/skills/learning.js.map +0 -1
- package/dist/tui/skills/suggest-setting.js +0 -55
- package/dist/tui/skills/suggest-setting.js.map +0 -1
- package/dist/tui/skills/suggestion-ledger.js +0 -52
- package/dist/tui/skills/suggestion-ledger.js.map +0 -1
- package/dist/tui/slashCommands.js +0 -1588
- package/dist/tui/slashCommands.js.map +0 -1
- package/dist/tui/status-card.js +0 -30
- package/dist/tui/status-card.js.map +0 -1
- package/dist/tui/status-panel-layout.js +0 -42
- package/dist/tui/status-panel-layout.js.map +0 -1
- package/dist/tui/stream-blocks.js +0 -187
- package/dist/tui/stream-blocks.js.map +0 -1
- package/dist/tui/task-activity.js +0 -157
- package/dist/tui/task-activity.js.map +0 -1
- package/dist/tui/terminal-choice-text.js +0 -118
- package/dist/tui/terminal-choice-text.js.map +0 -1
- package/dist/tui/terminal-display.js +0 -65
- package/dist/tui/terminal-display.js.map +0 -1
- package/dist/tui/terminal-hyperlinks.js +0 -70
- package/dist/tui/terminal-hyperlinks.js.map +0 -1
- package/dist/tui/theme.js +0 -34
- package/dist/tui/theme.js.map +0 -1
- package/dist/tui/triggers/analyze.js +0 -221
- package/dist/tui/triggers/analyze.js.map +0 -1
- package/dist/tui/triggers/context-text.js +0 -44
- package/dist/tui/triggers/context-text.js.map +0 -1
- package/dist/tui/triggers/copy.js +0 -163
- package/dist/tui/triggers/copy.js.map +0 -1
- package/dist/tui/triggers/detect.js +0 -295
- package/dist/tui/triggers/detect.js.map +0 -1
- package/dist/tui/triggers/fold.js +0 -44
- package/dist/tui/triggers/fold.js.map +0 -1
- package/dist/tui/triggers/pattern.js +0 -243
- package/dist/tui/triggers/pattern.js.map +0 -1
- package/dist/tui/triggers/provenance.js +0 -98
- package/dist/tui/triggers/provenance.js.map +0 -1
- package/dist/tui/triggers/registry.js +0 -164
- package/dist/tui/triggers/registry.js.map +0 -1
- package/dist/tui/triggers/setting.js +0 -61
- package/dist/tui/triggers/setting.js.map +0 -1
- package/dist/tui/triggers/verbs.js +0 -140
- package/dist/tui/triggers/verbs.js.map +0 -1
- package/dist/tui/turn-interruption.js +0 -160
- package/dist/tui/turn-interruption.js.map +0 -1
- package/dist/tui/turn-limits-settings.js +0 -88
- package/dist/tui/turn-limits-settings.js.map +0 -1
- package/dist/tui/types.js +0 -7
- package/dist/tui/types.js.map +0 -1
- package/dist/tui/units.js +0 -20
- package/dist/tui/units.js.map +0 -1
- package/dist/tui/use-selection-index.js +0 -13
- package/dist/tui/use-selection-index.js.map +0 -1
- package/dist/tui/web-activity.js +0 -105
- package/dist/tui/web-activity.js.map +0 -1
- package/dist/tui/workspace-diff.js +0 -101
- package/dist/tui/workspace-diff.js.map +0 -1
- package/dist/tui/workspace-review.js +0 -67
- package/dist/tui/workspace-review.js.map +0 -1
- package/dist/user-commands/store.js +0 -235
- package/dist/user-commands/store.js.map +0 -1
- package/dist/version.js +0 -23
- package/dist/version.js.map +0 -1
|
@@ -0,0 +1,1142 @@
|
|
|
1
|
+
import { createRequire as __namzuCreateRequire } from 'node:module';
|
|
2
|
+
const require = __namzuCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
describeBrowserPlan
|
|
5
|
+
} from "./chunk-ZPR4IMRT.js";
|
|
6
|
+
import {
|
|
7
|
+
readManifest
|
|
8
|
+
} from "./chunk-AK2U3N2A.js";
|
|
9
|
+
import {
|
|
10
|
+
listJobs
|
|
11
|
+
} from "./chunk-SKKWMMFP.js";
|
|
12
|
+
import {
|
|
13
|
+
schedulePaths
|
|
14
|
+
} from "./chunk-A22MBIYU.js";
|
|
15
|
+
import {
|
|
16
|
+
CLI_VERSION
|
|
17
|
+
} from "./chunk-HE7WUOX2.js";
|
|
18
|
+
import {
|
|
19
|
+
KEYCHAIN_SERVICE,
|
|
20
|
+
chainCapabilityDisagreements,
|
|
21
|
+
claudeCredentialSearchPaths,
|
|
22
|
+
discoverProviders,
|
|
23
|
+
hasApiCredential,
|
|
24
|
+
preferencesPath,
|
|
25
|
+
readPreferences,
|
|
26
|
+
requiresCredentialForModel,
|
|
27
|
+
resolveChainCapabilities,
|
|
28
|
+
unresolvedMembers,
|
|
29
|
+
wslWindowsHome
|
|
30
|
+
} from "./chunk-SB6UD3ED.js";
|
|
31
|
+
import {
|
|
32
|
+
PROVIDER_REGISTRY
|
|
33
|
+
} from "./chunk-6LLJQ3KY.js";
|
|
34
|
+
import {
|
|
35
|
+
EXIT_USAGE
|
|
36
|
+
} from "./chunk-Y7B67G22.js";
|
|
37
|
+
import {
|
|
38
|
+
describeSessionExportOff
|
|
39
|
+
} from "./chunk-FTMTO72X.js";
|
|
40
|
+
import {
|
|
41
|
+
capabilityCheckId,
|
|
42
|
+
probeOptionalPackage
|
|
43
|
+
} from "./chunk-OH6TB27S.js";
|
|
44
|
+
import {
|
|
45
|
+
LocalSandboxProvider,
|
|
46
|
+
SANDBOX_ISOLATION_CONTROLS,
|
|
47
|
+
SCOPE_ATTRIBUTE,
|
|
48
|
+
getLogCounters,
|
|
49
|
+
invariants,
|
|
50
|
+
isolationOf,
|
|
51
|
+
resolveNamzuHome
|
|
52
|
+
} from "./chunk-K5HARZ7G.js";
|
|
53
|
+
import {
|
|
54
|
+
__name
|
|
55
|
+
} from "./chunk-76FLAFCG.js";
|
|
56
|
+
|
|
57
|
+
// src/doctor/checks/browser.ts
|
|
58
|
+
async function describeBrowserEngine(env, platform = process.platform, load = () => import("@namzu/browser")) {
|
|
59
|
+
const probe = await probeOptionalPackage("@namzu/browser");
|
|
60
|
+
if (probe.state !== "present") {
|
|
61
|
+
return {
|
|
62
|
+
status: "skipped",
|
|
63
|
+
message: probe.state === "absent" ? "@namzu/browser not installed; no browser tools" : "@namzu/browser failed to load; see browser.installed"
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
let mod;
|
|
67
|
+
try {
|
|
68
|
+
mod = await load();
|
|
69
|
+
} catch (error) {
|
|
70
|
+
return {
|
|
71
|
+
status: "skipped",
|
|
72
|
+
message: `@namzu/browser failed to load: ${error instanceof Error ? error.message : String(error)}`
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const detected = mod.detectBrowserEnvironment(env, platform);
|
|
76
|
+
const plan = mod.runnableBrowserPlan(detected);
|
|
77
|
+
const notes = plan.warnings.length > 0 ? ` (${plan.warnings.join(" ")})` : "";
|
|
78
|
+
if (plan.unavailableReason !== void 0) {
|
|
79
|
+
return {
|
|
80
|
+
status: "warn",
|
|
81
|
+
message: `no browser can run here: ${plan.unavailableReason}`,
|
|
82
|
+
remediation: plan.engine === "local" && plan.browser === "chromium" ? "namzu browser install" : "Install Google Chrome, or set browser.engine in your config."
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (plan.engine === "local" && plan.browser === "chromium") {
|
|
86
|
+
return {
|
|
87
|
+
status: "pass",
|
|
88
|
+
message: `${describeBrowserPlan(plan)}${notes}`,
|
|
89
|
+
remediation: "If the first browser call says Chromium is missing: namzu browser install"
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
status: plan.warnings.length > 0 ? "warn" : "pass",
|
|
94
|
+
message: `${describeBrowserPlan(plan)}${notes}`
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
__name(describeBrowserEngine, "describeBrowserEngine");
|
|
98
|
+
var browserEngineCheck = {
|
|
99
|
+
id: "browser.engine",
|
|
100
|
+
category: "custom",
|
|
101
|
+
run: /* @__PURE__ */ __name((ctx) => describeBrowserEngine(ctx.env), "run")
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// src/doctor/checks/chain.ts
|
|
105
|
+
async function describeProviderChain(options = {}) {
|
|
106
|
+
const path = preferencesPath(options.home);
|
|
107
|
+
let read;
|
|
108
|
+
try {
|
|
109
|
+
read = readPreferences(options.home);
|
|
110
|
+
} catch (err) {
|
|
111
|
+
return {
|
|
112
|
+
status: "fail",
|
|
113
|
+
message: `could not read ${path}: ${err instanceof Error ? err.message : String(err)}`,
|
|
114
|
+
remediation: "Fix or delete the file, then run `namzu` to pick a provider again."
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (read.status === "missing") {
|
|
118
|
+
return {
|
|
119
|
+
status: "skipped",
|
|
120
|
+
message: `no provider chain configured (${path} does not exist)`,
|
|
121
|
+
remediation: "Run `namzu` and pick a provider; the choice is saved to that file."
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (read.status === "needs-repick") {
|
|
125
|
+
return {
|
|
126
|
+
status: "fail",
|
|
127
|
+
message: `provider chain unusable: ${read.reason}`,
|
|
128
|
+
remediation: "Run `namzu` to pick again, or edit that file by hand."
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
let detected;
|
|
132
|
+
try {
|
|
133
|
+
detected = await discoverProviders({
|
|
134
|
+
...options.env ? { env: options.env } : {},
|
|
135
|
+
...options.home ? { home: options.home } : {},
|
|
136
|
+
...options.skipKeychain ? { skipKeychain: true } : {},
|
|
137
|
+
...options.skipProbes ? { skipProbes: true } : {}
|
|
138
|
+
});
|
|
139
|
+
} catch (err) {
|
|
140
|
+
return {
|
|
141
|
+
status: "inconclusive",
|
|
142
|
+
message: `provider chain read, but credential discovery failed: ${err instanceof Error ? err.message : String(err)}`
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const members = read.prefs.providers;
|
|
146
|
+
const lines = [];
|
|
147
|
+
let unusable = 0;
|
|
148
|
+
let primaryUnusable = false;
|
|
149
|
+
let anonymousZen = false;
|
|
150
|
+
for (const [index, member] of members.entries()) {
|
|
151
|
+
const entry = PROVIDER_REGISTRY[member.id];
|
|
152
|
+
const position = index === 0 ? "primary" : `fallback ${index}`;
|
|
153
|
+
const model = member.model ?? `${entry.defaultModel} (namzu default)`;
|
|
154
|
+
const det = detected.find((d) => d.entry.id === member.id);
|
|
155
|
+
const needsKey = requiresCredentialForModel(entry, member.model ?? entry.defaultModel);
|
|
156
|
+
const usable = needsKey ? hasApiCredential(entry, det?.apiKey) : Boolean(det);
|
|
157
|
+
if (entry.id === "zen" && usable && !hasApiCredential(entry, det?.apiKey)) anonymousZen = true;
|
|
158
|
+
if (!usable) {
|
|
159
|
+
unusable++;
|
|
160
|
+
if (index === 0) primaryUnusable = true;
|
|
161
|
+
}
|
|
162
|
+
const state = needsKey ? usable ? "credential found" : "NO CREDENTIAL" : entry.id === "zen" && usable ? hasApiCredential(entry, det?.apiKey) ? "credential found" : "experimental free models (gateway may refuse)" : usable ? "reachable" : "NOT REACHABLE";
|
|
163
|
+
lines.push(`${index + 1}. ${position} \xB7 ${entry.label} \xB7 ${model} \xB7 ${state}`);
|
|
164
|
+
}
|
|
165
|
+
const chain = lines.join("\n");
|
|
166
|
+
const resolved = await resolveChainCapabilities(members);
|
|
167
|
+
const disagreements = chainCapabilityDisagreements(members, resolved);
|
|
168
|
+
const accepted = read.prefs.allowCapabilityMismatch === true;
|
|
169
|
+
const unreadable = unresolvedMembers(members, resolved);
|
|
170
|
+
const primaryUnreadable = resolved[0]?.kind === "unresolved";
|
|
171
|
+
const sections = [chain];
|
|
172
|
+
if (disagreements.length > 0) {
|
|
173
|
+
sections.push(
|
|
174
|
+
accepted ? "The members declare different capabilities, and you have accepted that:" : "The members declare different capabilities, so a session will be REFUSED:",
|
|
175
|
+
...disagreements.map((d) => ` - ${d.sentence}`)
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
if (unreadable.length > 0) {
|
|
179
|
+
sections.push(
|
|
180
|
+
"Could not read what these members declare:",
|
|
181
|
+
...unreadable.map((line) => ` - ${line}`)
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
const message = sections.join("\n");
|
|
185
|
+
if (disagreements.length > 0 && !accepted) {
|
|
186
|
+
return {
|
|
187
|
+
status: "fail",
|
|
188
|
+
message: `provider chain cannot be honoured as written:
|
|
189
|
+
${message}`,
|
|
190
|
+
remediation: 'Drop the member that disagrees, or set "allowCapabilityMismatch": true in your preferences to accept the limitation. namzu will not choose between advertising abilities a fallback lacks and costing your primary a capability on every turn.'
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
if (primaryUnusable || primaryUnreadable) {
|
|
194
|
+
return {
|
|
195
|
+
status: "fail",
|
|
196
|
+
message: `${unusable} of ${members.length} chain member(s) cannot be used:
|
|
197
|
+
${message}`,
|
|
198
|
+
remediation: primaryUnusable ? "The primary provider has no usable credential, so no turn can start. Set its key, or run `namzu` to pick a provider that has one." : "The primary provider could not be loaded, so no turn can start. Run `namzu` to pick a provider that can."
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
if (unusable > 0 || unreadable.length > 0 || disagreements.length > 0 || anonymousZen) {
|
|
202
|
+
return {
|
|
203
|
+
// Anonymous Zen may be refused at inference time even when its model
|
|
204
|
+
// catalogue answers. That is unverified, not a failed credential check.
|
|
205
|
+
status: "warn",
|
|
206
|
+
message: unusable > 0 ? `${unusable} of ${members.length} chain member(s) cannot be used:
|
|
207
|
+
${message}` : anonymousZen ? `provider chain configured, with experimental free-model access:
|
|
208
|
+
${message}` : `provider chain usable, with limitations:
|
|
209
|
+
${message}`,
|
|
210
|
+
remediation: anonymousZen ? "Zen free models are experimental; the gateway may refuse direct Namzu requests. OpenCode installation is recommended for its own client. If a turn is refused, configure OPENCODE_API_KEY or choose another provider." : unusable > 0 ? "The primary still works, so turns will start. But a fallback with no credential is not a fallback \u2014 set its key, or take it out of the chain." : "The primary still works. A fallback that declares less than your primary will serve shorter or less capable turns if the chain ever falls over to it."
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
status: "pass",
|
|
215
|
+
message: members.length === 1 ? `1 provider configured (no fallback):
|
|
216
|
+
${message}` : `${members.length} providers configured, in order:
|
|
217
|
+
${message}`
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
__name(describeProviderChain, "describeProviderChain");
|
|
221
|
+
var providerChainCheck = {
|
|
222
|
+
id: "providers.chain",
|
|
223
|
+
category: "providers",
|
|
224
|
+
run: /* @__PURE__ */ __name((ctx) => describeProviderChain({ env: ctx.env }), "run")
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
// src/doctor/checks/credentials.ts
|
|
228
|
+
function missingClaudeSessionNote(env, windowsHome) {
|
|
229
|
+
const paths = claudeCredentialSearchPaths(void 0, env, windowsHome);
|
|
230
|
+
const keychain = process.platform === "darwin" && !env.CLAUDE_CONFIG_DIR ? ` and macOS Keychain service ${KEYCHAIN_SERVICE}` : "";
|
|
231
|
+
return `Claude Code session not detected; checked ${paths.join(", ")}${keychain}. Desktop sign-in does not guarantee a reusable Claude Code CLI session; Namzu does not read Desktop's credential store. Sign in to the standalone Claude Code CLI, or run \`namzu login claude\`.`;
|
|
232
|
+
}
|
|
233
|
+
__name(missingClaudeSessionNote, "missingClaudeSessionNote");
|
|
234
|
+
var credentialSourcesCheck = {
|
|
235
|
+
id: "providers.credentials",
|
|
236
|
+
category: "providers",
|
|
237
|
+
run: /* @__PURE__ */ __name(async (ctx) => {
|
|
238
|
+
const env = ctx.env;
|
|
239
|
+
const windowsHome = wslWindowsHome(env);
|
|
240
|
+
let detected;
|
|
241
|
+
try {
|
|
242
|
+
detected = await discoverProviders({ env, windowsHome });
|
|
243
|
+
} catch (err) {
|
|
244
|
+
return {
|
|
245
|
+
status: "inconclusive",
|
|
246
|
+
message: `credential discovery failed: ${err instanceof Error ? err.message : String(err)}`
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
const missingClaude = !detected.some((provider) => provider.entry.id === "anthropic");
|
|
250
|
+
const missingNote = missingClaude ? missingClaudeSessionNote(env, windowsHome) : "";
|
|
251
|
+
if (detected.length === 0) {
|
|
252
|
+
return {
|
|
253
|
+
status: "warn",
|
|
254
|
+
message: `no LLM credential found
|
|
255
|
+
${missingNote}`,
|
|
256
|
+
remediation: "Namzu no longer reads the secrets file. It first reuses current Claude and Codex sessions on this device, then subscriptions signed in with `namzu login claude|codex`. API keys remain optional alternatives through ANTHROPIC_API_KEY or OPENAI_API_KEY; local Ollama and LM Studio servers are also detected."
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
const lines = detected.map((d) => {
|
|
260
|
+
switch (d.source.kind) {
|
|
261
|
+
case "env":
|
|
262
|
+
if (d.entry.id === "zen" && !hasApiCredential(d.entry, d.apiKey))
|
|
263
|
+
return `${d.entry.id} (env \xB7 ${d.source.envName}=public; free models experimental)`;
|
|
264
|
+
return `${d.entry.id} (env \xB7 ${d.source.envName})`;
|
|
265
|
+
case "public":
|
|
266
|
+
return `${d.entry.id} (experimental free models \xB7 gateway may refuse)`;
|
|
267
|
+
case "opencode-file":
|
|
268
|
+
return `${d.entry.id} (OpenCode API key \xB7 ${d.source.path})`;
|
|
269
|
+
case "keychain":
|
|
270
|
+
return `${d.entry.id} (keychain \xB7 ${d.source.service})`;
|
|
271
|
+
case "claude-file":
|
|
272
|
+
return `${d.entry.id} (Claude session \xB7 ${d.source.path})`;
|
|
273
|
+
case "gemini-file":
|
|
274
|
+
return `${d.entry.id} (Gemini session \xB7 ${d.source.path})`;
|
|
275
|
+
case "stored-gemini-key":
|
|
276
|
+
return `${d.entry.id} (saved Gemini API key \xB7 ${d.source.path})`;
|
|
277
|
+
case "stored-api-key":
|
|
278
|
+
return `${d.entry.id} (saved API key \xB7 ${d.source.path})`;
|
|
279
|
+
case "codex-file":
|
|
280
|
+
return `${d.entry.id} (Codex session \xB7 ${d.source.path})`;
|
|
281
|
+
case "stored":
|
|
282
|
+
return `${d.entry.id} (signed in \xB7 ${d.source.path})`;
|
|
283
|
+
case "probe":
|
|
284
|
+
return `${d.entry.id} (local \xB7 ${d.source.url.replace(/^https?:\/\//, "")})`;
|
|
285
|
+
case "session":
|
|
286
|
+
return `${d.entry.id} (typed \xB7 current session)`;
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
const onlyAnonymousZen = detected.every(
|
|
290
|
+
(d) => d.entry.id === "zen" && !hasApiCredential(d.entry, d.apiKey)
|
|
291
|
+
);
|
|
292
|
+
return {
|
|
293
|
+
status: onlyAnonymousZen ? "warn" : "pass",
|
|
294
|
+
message: `${detected.length} provider source(s) discovered: ${lines.join(", ")}${missingNote ? `
|
|
295
|
+
${missingNote}` : ""}`,
|
|
296
|
+
...onlyAnonymousZen ? {
|
|
297
|
+
remediation: "Zen free models are experimental; the gateway may refuse direct Namzu requests. OpenCode installation is recommended for its own client. If a turn is refused, configure OPENCODE_API_KEY or choose another provider."
|
|
298
|
+
} : {}
|
|
299
|
+
};
|
|
300
|
+
}, "run")
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
// src/doctor/checks/invariants.ts
|
|
304
|
+
function label(row) {
|
|
305
|
+
return `${row.id} (${row.violations} violation${row.violations === 1 ? "" : "s"})`;
|
|
306
|
+
}
|
|
307
|
+
__name(label, "label");
|
|
308
|
+
async function describeInvariants(registry) {
|
|
309
|
+
const ids = registry.listIds();
|
|
310
|
+
if (ids.length === 0) {
|
|
311
|
+
return { status: "skipped", message: "no invariants registered" };
|
|
312
|
+
}
|
|
313
|
+
const rows = await Promise.all(
|
|
314
|
+
ids.map(async (id) => ({
|
|
315
|
+
id,
|
|
316
|
+
outcome: await registry.evaluate(id, void 0),
|
|
317
|
+
violations: registry.violationCount(id)
|
|
318
|
+
}))
|
|
319
|
+
);
|
|
320
|
+
const violated = rows.filter((r) => r.outcome.state === "violated");
|
|
321
|
+
const unknown = rows.filter((r) => r.outcome.state === "unknown");
|
|
322
|
+
if (violated.length > 0) {
|
|
323
|
+
const detail = violated.map((r) => r.outcome.state === "violated" ? `${label(r)}: ${r.outcome.detail}` : label(r)).join("; ");
|
|
324
|
+
return {
|
|
325
|
+
status: "fail",
|
|
326
|
+
message: `${violated.length}/${ids.length} invariant(s) violated \u2014 ${detail}`,
|
|
327
|
+
remediation: "Check the warn/error logs at the module that registered the violated invariant."
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
if (unknown.length > 0) {
|
|
331
|
+
const names = unknown.map(label).join(", ");
|
|
332
|
+
return {
|
|
333
|
+
status: "skipped",
|
|
334
|
+
message: `${unknown.length}/${ids.length} invariant(s) have no subject outside a live turn: ${names}`
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
status: "pass",
|
|
339
|
+
message: `${ids.length} invariant(s) hold: ${rows.map(label).join(", ")}`
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
__name(describeInvariants, "describeInvariants");
|
|
343
|
+
var invariantsCheck = {
|
|
344
|
+
id: "runtime.invariants",
|
|
345
|
+
category: "runtime",
|
|
346
|
+
run: /* @__PURE__ */ __name(() => describeInvariants(invariants), "run")
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
// src/doctor/checks/logging.ts
|
|
350
|
+
var FIELDS = [
|
|
351
|
+
"dropped",
|
|
352
|
+
"redacted",
|
|
353
|
+
"attributesDropped",
|
|
354
|
+
"valuesTruncated",
|
|
355
|
+
"recordsTruncated"
|
|
356
|
+
];
|
|
357
|
+
function summarise(counters) {
|
|
358
|
+
return FIELDS.map((f) => `${f}=${counters[f]}`).join(" ");
|
|
359
|
+
}
|
|
360
|
+
__name(summarise, "summarise");
|
|
361
|
+
function describeLogPipeline(counters) {
|
|
362
|
+
if (counters === void 0) {
|
|
363
|
+
return {
|
|
364
|
+
status: "inconclusive",
|
|
365
|
+
message: "no log sink installed \u2014 records reach stderr through the legacy path, where nothing is counted, redacted or size-capped",
|
|
366
|
+
remediation: "A host owns its log destination: call installProcessSink(sink, level) during boot. The CLI does this itself, so seeing this from `namzu doctor` means that step did not run."
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
if (counters.dropped > 0) {
|
|
370
|
+
return {
|
|
371
|
+
status: "fail",
|
|
372
|
+
message: `${counters.dropped} log record(s) never reached the sink \u2014 ${summarise(counters)}`,
|
|
373
|
+
remediation: "A record is counted dropped when the installed sink threw, or when the sink is NOOP_SINK. Check the sink passed to installProcessSink: a sink that throws is caught so one bad record cannot fail a turn, which is exactly why the count is the only place this shows up."
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
return {
|
|
377
|
+
status: "pass",
|
|
378
|
+
message: `log pipeline live, nothing dropped \u2014 ${summarise(counters)}`
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
__name(describeLogPipeline, "describeLogPipeline");
|
|
382
|
+
var loggingPipelineCheck = {
|
|
383
|
+
id: "logging.pipeline",
|
|
384
|
+
// `DoctorCategory` has no `logging` member, and widening that union is an
|
|
385
|
+
// SDK type change this check does not need — the same call the optional
|
|
386
|
+
// package probes made for `files` and `computer-use`.
|
|
387
|
+
category: "custom",
|
|
388
|
+
run: /* @__PURE__ */ __name(() => Promise.resolve(describeLogPipeline(getLogCounters())), "run")
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
// src/doctor/checks/providers.ts
|
|
392
|
+
var providersRegisteredCheck = {
|
|
393
|
+
id: "providers.registered",
|
|
394
|
+
category: "providers",
|
|
395
|
+
run: /* @__PURE__ */ __name(async () => ({
|
|
396
|
+
status: "skipped",
|
|
397
|
+
message: "no provider auto-discovery in v1; register a provider check via registerDoctorCheck for your specific provider configuration (call provider.doctorCheck?() per registered provider)"
|
|
398
|
+
}), "run")
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
// src/doctor/checks/runtime.ts
|
|
402
|
+
import { constants, access } from "node:fs/promises";
|
|
403
|
+
import { tmpdir } from "node:os";
|
|
404
|
+
var cwdWritableCheck = {
|
|
405
|
+
id: "runtime.cwd-writable",
|
|
406
|
+
category: "runtime",
|
|
407
|
+
run: /* @__PURE__ */ __name(async (ctx) => {
|
|
408
|
+
try {
|
|
409
|
+
await access(ctx.cwd, constants.W_OK);
|
|
410
|
+
return { status: "pass", message: `cwd writable: ${ctx.cwd}` };
|
|
411
|
+
} catch (error) {
|
|
412
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
413
|
+
return {
|
|
414
|
+
status: "fail",
|
|
415
|
+
message: `cwd not writable: ${ctx.cwd} (${message})`,
|
|
416
|
+
remediation: "Run from a directory you have write access to, or pass an explicit cwd."
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
}, "run")
|
|
420
|
+
};
|
|
421
|
+
var tmpdirWritableCheck = {
|
|
422
|
+
id: "runtime.tmpdir-writable",
|
|
423
|
+
category: "runtime",
|
|
424
|
+
run: /* @__PURE__ */ __name(async () => {
|
|
425
|
+
const dir = tmpdir();
|
|
426
|
+
try {
|
|
427
|
+
await access(dir, constants.W_OK);
|
|
428
|
+
return { status: "pass", message: `tmpdir writable: ${dir}` };
|
|
429
|
+
} catch (error) {
|
|
430
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
431
|
+
return {
|
|
432
|
+
status: "fail",
|
|
433
|
+
message: `tmpdir not writable: ${dir} (${message})`,
|
|
434
|
+
remediation: "Set TMPDIR / TMP / TEMP to a writable location."
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
}, "run")
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
// src/doctor/checks/sandbox.ts
|
|
441
|
+
var quietLogger = (() => {
|
|
442
|
+
const noop = /* @__PURE__ */ __name(() => {
|
|
443
|
+
}, "noop");
|
|
444
|
+
const self = { info: noop, warn: noop, error: noop, debug: noop };
|
|
445
|
+
return { ...self, child: /* @__PURE__ */ __name(() => self, "child") };
|
|
446
|
+
})();
|
|
447
|
+
var listControls = /* @__PURE__ */ __name((report, want) => SANDBOX_ISOLATION_CONTROLS.filter((control) => report[control] === want).join(", "), "listControls");
|
|
448
|
+
function describeIsolationHealth(environment) {
|
|
449
|
+
const report = isolationOf(environment);
|
|
450
|
+
const enforced = listControls(report, true);
|
|
451
|
+
const missing = listControls(report, false);
|
|
452
|
+
if (missing.length === 0) {
|
|
453
|
+
return { status: "pass", message: `${environment} enforces ${enforced}` };
|
|
454
|
+
}
|
|
455
|
+
if (enforced.length === 0) {
|
|
456
|
+
return {
|
|
457
|
+
status: "warn",
|
|
458
|
+
message: `${environment} enforces nothing \u2014 commands run unconfined`,
|
|
459
|
+
remediation: "Run the agent inside a container per task (@namzu/sandbox, container tier), or pass requireIsolation so a turn refuses rather than proceeding unconfined."
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
return {
|
|
463
|
+
status: "warn",
|
|
464
|
+
message: `${environment} enforces ${enforced} but not ${missing}`,
|
|
465
|
+
remediation: "Pass requireIsolation with the controls you depend on, so a host that cannot enforce one refuses instead of downgrading quietly."
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
__name(describeIsolationHealth, "describeIsolationHealth");
|
|
469
|
+
var sandboxPlatformCheck = {
|
|
470
|
+
id: "sandbox.platform",
|
|
471
|
+
category: "sandbox",
|
|
472
|
+
run: /* @__PURE__ */ __name(async () => {
|
|
473
|
+
try {
|
|
474
|
+
return describeIsolationHealth(new LocalSandboxProvider(quietLogger).environment);
|
|
475
|
+
} catch (error) {
|
|
476
|
+
return {
|
|
477
|
+
status: "fail",
|
|
478
|
+
message: `sandbox probe failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
479
|
+
remediation: "The local sandbox provider could not determine what this host enforces. Treat commands as unconfined until this is resolved."
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
}, "run")
|
|
483
|
+
};
|
|
484
|
+
|
|
485
|
+
// src/doctor/checks/scheduler.ts
|
|
486
|
+
import { readFileSync, realpathSync } from "node:fs";
|
|
487
|
+
var schedulerCheck = {
|
|
488
|
+
id: "scheduler.service",
|
|
489
|
+
category: "runtime",
|
|
490
|
+
async run(ctx) {
|
|
491
|
+
const paths = schedulePaths(resolveNamzuHome({ env: ctx.env }));
|
|
492
|
+
let jobs = 0;
|
|
493
|
+
try {
|
|
494
|
+
jobs = listJobs(paths).jobs.filter((j) => j.state === "active").length;
|
|
495
|
+
} catch {
|
|
496
|
+
jobs = 0;
|
|
497
|
+
}
|
|
498
|
+
let manifest;
|
|
499
|
+
try {
|
|
500
|
+
manifest = readManifest(paths);
|
|
501
|
+
} catch (error) {
|
|
502
|
+
return { status: "fail", message: error instanceof Error ? error.message : String(error) };
|
|
503
|
+
}
|
|
504
|
+
if (!manifest) {
|
|
505
|
+
return jobs > 0 ? {
|
|
506
|
+
status: "warn",
|
|
507
|
+
message: `${jobs} active scheduled job(s) and no scheduler installed; they will not run`,
|
|
508
|
+
remediation: "namzu schedule install"
|
|
509
|
+
} : { status: "skipped", message: "no scheduled jobs and no scheduler installed" };
|
|
510
|
+
}
|
|
511
|
+
for (const path of [manifest.nodePath, manifest.binPath]) {
|
|
512
|
+
try {
|
|
513
|
+
realpathSync(path);
|
|
514
|
+
} catch {
|
|
515
|
+
return {
|
|
516
|
+
status: "fail",
|
|
517
|
+
message: `the scheduler service starts ${path}, which no longer exists`,
|
|
518
|
+
remediation: "namzu schedule install"
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
let age;
|
|
523
|
+
try {
|
|
524
|
+
const beat = JSON.parse(readFileSync(paths.heartbeat, "utf8"));
|
|
525
|
+
age = beat.at ? Date.now() - Date.parse(beat.at) : void 0;
|
|
526
|
+
} catch {
|
|
527
|
+
age = void 0;
|
|
528
|
+
}
|
|
529
|
+
if (age === void 0 || age > 9e4) {
|
|
530
|
+
return {
|
|
531
|
+
status: "warn",
|
|
532
|
+
message: `${manifest.name} (${manifest.platform}) is installed but the daemon has not been seen ${age === void 0 ? "yet" : `for ${Math.round(age / 1e3)} s`}`,
|
|
533
|
+
remediation: "namzu schedule status"
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
return {
|
|
537
|
+
status: "pass",
|
|
538
|
+
message: `${manifest.name} (${manifest.platform}) running; ${jobs} active job(s)`
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
};
|
|
542
|
+
|
|
543
|
+
// src/doctor/checks/telemetry.ts
|
|
544
|
+
var TELEMETRY = "@namzu/telemetry";
|
|
545
|
+
async function describeInstalledPackage(specifier) {
|
|
546
|
+
const probe = await probeOptionalPackage(specifier);
|
|
547
|
+
switch (probe.state) {
|
|
548
|
+
case "absent":
|
|
549
|
+
return {
|
|
550
|
+
status: "skipped",
|
|
551
|
+
message: `${specifier} not installed (optional package)`
|
|
552
|
+
};
|
|
553
|
+
case "present":
|
|
554
|
+
return { status: "pass", message: `${specifier} is installed` };
|
|
555
|
+
case "broken":
|
|
556
|
+
return {
|
|
557
|
+
status: "fail",
|
|
558
|
+
// The reason is the whole value of separating these: "installed but
|
|
559
|
+
// will not load" sends the reader somewhere, and "not installed" would
|
|
560
|
+
// have sent them to install what is already there.
|
|
561
|
+
message: `${specifier} is installed but failed to load: ${probe.error.message}`,
|
|
562
|
+
remediation: `Reinstall ${specifier}, or remove it if you are not using it \u2014 it is optional and namzu runs without it.`
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
__name(describeInstalledPackage, "describeInstalledPackage");
|
|
567
|
+
var telemetryInstalledCheck = {
|
|
568
|
+
id: "telemetry.installed",
|
|
569
|
+
category: "telemetry",
|
|
570
|
+
run: /* @__PURE__ */ __name(() => describeInstalledPackage(TELEMETRY), "run")
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
// src/doctor/checks/vault.ts
|
|
574
|
+
var registered = [];
|
|
575
|
+
var vaultRegisteredCheck = {
|
|
576
|
+
id: "vault.registered",
|
|
577
|
+
category: "vault",
|
|
578
|
+
run: /* @__PURE__ */ __name(async () => {
|
|
579
|
+
if (registered.length === 0) {
|
|
580
|
+
return {
|
|
581
|
+
status: "skipped",
|
|
582
|
+
message: "No credential provider is registered, so there is nothing to report on."
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
const lines = [];
|
|
586
|
+
let anyConfigured = false;
|
|
587
|
+
for (const entry of registered) {
|
|
588
|
+
for (const ref of entry.refs) {
|
|
589
|
+
const described = await entry.provider.describe(ref);
|
|
590
|
+
if (described.configured) anyConfigured = true;
|
|
591
|
+
lines.push(
|
|
592
|
+
`${entry.label}: ${ref} \u2014 ${described.configured ? "configured" : "not set"}${described.source ? ` (${described.source})` : ""}, ${described.writable ? "writable" : "read-only"}`
|
|
593
|
+
);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
return {
|
|
597
|
+
// A provider registered and nothing configured is a real answer,
|
|
598
|
+
// not a failure: an operator who has not logged in yet is in a
|
|
599
|
+
// state the doctor should describe rather than complain about.
|
|
600
|
+
status: anyConfigured ? "pass" : "warn",
|
|
601
|
+
message: lines.join("\n")
|
|
602
|
+
};
|
|
603
|
+
}, "run")
|
|
604
|
+
};
|
|
605
|
+
|
|
606
|
+
// src/doctor/checks/index.ts
|
|
607
|
+
function installedCheck(specifier, category) {
|
|
608
|
+
return {
|
|
609
|
+
id: capabilityCheckId(specifier),
|
|
610
|
+
category,
|
|
611
|
+
run: /* @__PURE__ */ __name(() => describeInstalledPackage(specifier), "run")
|
|
612
|
+
};
|
|
613
|
+
}
|
|
614
|
+
__name(installedCheck, "installedCheck");
|
|
615
|
+
var sandboxInstalledCheck = installedCheck("@namzu/sandbox", "sandbox");
|
|
616
|
+
var filesInstalledCheck = installedCheck("@namzu/files", "custom");
|
|
617
|
+
var computerUseInstalledCheck = installedCheck(
|
|
618
|
+
"@namzu/computer-use",
|
|
619
|
+
"custom"
|
|
620
|
+
);
|
|
621
|
+
var browserInstalledCheck = installedCheck("@namzu/browser", "custom");
|
|
622
|
+
var builtInDoctorChecks = [
|
|
623
|
+
sandboxPlatformCheck,
|
|
624
|
+
cwdWritableCheck,
|
|
625
|
+
tmpdirWritableCheck,
|
|
626
|
+
providersRegisteredCheck,
|
|
627
|
+
credentialSourcesCheck,
|
|
628
|
+
// After the credential scan: this one reports which of the credentials that
|
|
629
|
+
// found are actually WIRED INTO the chain, which only reads sensibly once
|
|
630
|
+
// the operator has seen what was found.
|
|
631
|
+
providerChainCheck,
|
|
632
|
+
vaultRegisteredCheck,
|
|
633
|
+
sandboxInstalledCheck,
|
|
634
|
+
filesInstalledCheck,
|
|
635
|
+
computerUseInstalledCheck,
|
|
636
|
+
browserInstalledCheck,
|
|
637
|
+
// After the package check: which browser it would drive here, and how.
|
|
638
|
+
browserEngineCheck,
|
|
639
|
+
telemetryInstalledCheck,
|
|
640
|
+
schedulerCheck,
|
|
641
|
+
// Last, deliberately: it reports what the pipeline did to the records
|
|
642
|
+
// every check above it just produced, so running it first would report a
|
|
643
|
+
// process that had barely logged anything yet.
|
|
644
|
+
loggingPipelineCheck,
|
|
645
|
+
invariantsCheck
|
|
646
|
+
];
|
|
647
|
+
|
|
648
|
+
// src/doctor/checks/session-export.ts
|
|
649
|
+
async function describeSessionExportStatus(config, loader) {
|
|
650
|
+
const configured = config.telemetry?.sessionExport;
|
|
651
|
+
if (!configured) {
|
|
652
|
+
const off2 = await describeSessionExportOff(loader);
|
|
653
|
+
return {
|
|
654
|
+
status: "pass",
|
|
655
|
+
message: off2 ?? "Session export is off: telemetry.sessionExport is not configured."
|
|
656
|
+
};
|
|
657
|
+
}
|
|
658
|
+
const off = await describeSessionExportOff(loader);
|
|
659
|
+
if (off === null) {
|
|
660
|
+
return {
|
|
661
|
+
status: "fail",
|
|
662
|
+
message: `telemetry.sessionExport is configured (destination: ${configured.destination}) but "@namzu/telemetry" is not installed, so nothing would be recorded.`,
|
|
663
|
+
remediation: "Install @namzu/telemetry, or remove telemetry.sessionExport from your config. namzu refuses to start a session in this state rather than run one whose export silently does not exist."
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
const redactorCount = configured.redactors?.length ?? 1;
|
|
667
|
+
const typePhrase = configured.eventTypes ? `${configured.eventTypes.length} event type(s)` : "every session event";
|
|
668
|
+
return {
|
|
669
|
+
status: "pass",
|
|
670
|
+
message: `Session export is ON: ${typePhrase} is written to ${configured.destination}, with ${redactorCount} redactor(s) installed.`,
|
|
671
|
+
...redactorCount === 0 ? {
|
|
672
|
+
remediation: "`redactors: []` turns redaction off entirely \u2014 credential-shaped values in tool results will be written verbatim. Remove the key to install the shipped `secrets` redactor."
|
|
673
|
+
} : {}
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
__name(describeSessionExportStatus, "describeSessionExportStatus");
|
|
677
|
+
function sessionExportCheck(config, loader) {
|
|
678
|
+
return {
|
|
679
|
+
id: "telemetry.session-export",
|
|
680
|
+
category: "telemetry",
|
|
681
|
+
run: /* @__PURE__ */ __name(() => describeSessionExportStatus(config, loader), "run")
|
|
682
|
+
};
|
|
683
|
+
}
|
|
684
|
+
__name(sessionExportCheck, "sessionExportCheck");
|
|
685
|
+
|
|
686
|
+
// src/doctor/registry.ts
|
|
687
|
+
var DEFAULT_PER_CHECK_TIMEOUT_MS = 5e3;
|
|
688
|
+
var DEFAULT_WALL_CLOCK_TIMEOUT_MS = 1e4;
|
|
689
|
+
var DoctorRegistry = class {
|
|
690
|
+
static {
|
|
691
|
+
__name(this, "DoctorRegistry");
|
|
692
|
+
}
|
|
693
|
+
checks = /* @__PURE__ */ new Map();
|
|
694
|
+
log;
|
|
695
|
+
setLogger(log) {
|
|
696
|
+
this.log = log.child({ [SCOPE_ATTRIBUTE]: "doctor" });
|
|
697
|
+
}
|
|
698
|
+
register(check) {
|
|
699
|
+
if (this.checks.has(check.id)) {
|
|
700
|
+
throw new Error(
|
|
701
|
+
`Doctor check with id "${check.id}" is already registered. Pick a different id or call clear() first.`
|
|
702
|
+
);
|
|
703
|
+
}
|
|
704
|
+
this.checks.set(check.id, check);
|
|
705
|
+
}
|
|
706
|
+
unregister(id) {
|
|
707
|
+
return this.checks.delete(id);
|
|
708
|
+
}
|
|
709
|
+
clear() {
|
|
710
|
+
this.checks.clear();
|
|
711
|
+
}
|
|
712
|
+
list() {
|
|
713
|
+
return Array.from(this.checks.values());
|
|
714
|
+
}
|
|
715
|
+
async run(opts = {}) {
|
|
716
|
+
const ctx = buildContext(opts);
|
|
717
|
+
const perCheck = opts.perCheckTimeoutMs ?? DEFAULT_PER_CHECK_TIMEOUT_MS;
|
|
718
|
+
const wall = opts.wallClockTimeoutMs ?? DEFAULT_WALL_CLOCK_TIMEOUT_MS;
|
|
719
|
+
const signal = opts.signal;
|
|
720
|
+
const filteredChecks = opts.categories ? this.list().filter((c) => opts.categories?.includes(c.category)) : this.list();
|
|
721
|
+
const startedAt = Date.now();
|
|
722
|
+
const completed = /* @__PURE__ */ new Map();
|
|
723
|
+
const wallTimer = sleep(wall).then(() => "wall-timeout");
|
|
724
|
+
const abortPromise = signal ? signal.aborted ? Promise.resolve("aborted") : new Promise((resolve) => {
|
|
725
|
+
signal.addEventListener("abort", () => resolve("aborted"), {
|
|
726
|
+
once: true
|
|
727
|
+
});
|
|
728
|
+
}) : new Promise(() => {
|
|
729
|
+
});
|
|
730
|
+
const recordCompletion = /* @__PURE__ */ __name((record) => {
|
|
731
|
+
if (completed.has(record.id)) return;
|
|
732
|
+
completed.set(record.id, record);
|
|
733
|
+
this.invokeCallback("onCheckComplete", () => opts.onCheckComplete?.(record));
|
|
734
|
+
}, "recordCompletion");
|
|
735
|
+
const inFlight = filteredChecks.map(async (check) => {
|
|
736
|
+
this.invokeCallback("onCheckStart", () => opts.onCheckStart?.(check));
|
|
737
|
+
const t0 = Date.now();
|
|
738
|
+
const checkPromise = (async () => check.run(ctx))();
|
|
739
|
+
const timeoutPromise = sleep(perCheck).then(
|
|
740
|
+
() => ({
|
|
741
|
+
status: "inconclusive",
|
|
742
|
+
message: `check did not return within ${perCheck}ms`
|
|
743
|
+
})
|
|
744
|
+
);
|
|
745
|
+
let result;
|
|
746
|
+
try {
|
|
747
|
+
result = await Promise.race([checkPromise, timeoutPromise]);
|
|
748
|
+
} catch (error) {
|
|
749
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
750
|
+
this.log?.warn("doctor check threw", {
|
|
751
|
+
"namzu.doctor.id": check.id,
|
|
752
|
+
"namzu.doctor.message": message
|
|
753
|
+
});
|
|
754
|
+
result = { status: "fail", message: `check threw: ${message}` };
|
|
755
|
+
}
|
|
756
|
+
recordCompletion({
|
|
757
|
+
id: check.id,
|
|
758
|
+
category: check.category,
|
|
759
|
+
status: result.status,
|
|
760
|
+
message: result.message,
|
|
761
|
+
remediation: result.remediation,
|
|
762
|
+
durationMs: result.durationMs ?? Date.now() - t0
|
|
763
|
+
});
|
|
764
|
+
});
|
|
765
|
+
const allChecks = Promise.all(inFlight);
|
|
766
|
+
const raceWinner = await Promise.race([allChecks, wallTimer, abortPromise]);
|
|
767
|
+
let records;
|
|
768
|
+
if (raceWinner === "wall-timeout" || raceWinner === "aborted") {
|
|
769
|
+
const reason = raceWinner === "aborted" ? "aborted by signal before this check completed" : `wall-clock timeout (${wall}ms) reached before this check completed`;
|
|
770
|
+
const unfinished = filteredChecks.filter((c) => !completed.has(c.id));
|
|
771
|
+
this.log?.warn(
|
|
772
|
+
raceWinner === "aborted" ? "doctor aborted by signal" : "doctor wall-clock timeout",
|
|
773
|
+
{
|
|
774
|
+
"namzu.doctor.wall": wall,
|
|
775
|
+
"namzu.doctor.total": filteredChecks.length,
|
|
776
|
+
"namzu.doctor.unfinished": unfinished.length
|
|
777
|
+
}
|
|
778
|
+
);
|
|
779
|
+
records = filteredChecks.map((check) => {
|
|
780
|
+
const existing = completed.get(check.id);
|
|
781
|
+
if (existing) return existing;
|
|
782
|
+
const record = {
|
|
783
|
+
id: check.id,
|
|
784
|
+
category: check.category,
|
|
785
|
+
status: "inconclusive",
|
|
786
|
+
message: reason,
|
|
787
|
+
durationMs: Date.now() - startedAt
|
|
788
|
+
};
|
|
789
|
+
recordCompletion(record);
|
|
790
|
+
return record;
|
|
791
|
+
});
|
|
792
|
+
} else {
|
|
793
|
+
records = filteredChecks.map((check) => {
|
|
794
|
+
const existing = completed.get(check.id);
|
|
795
|
+
if (existing) return existing;
|
|
796
|
+
return {
|
|
797
|
+
id: check.id,
|
|
798
|
+
category: check.category,
|
|
799
|
+
status: "inconclusive",
|
|
800
|
+
message: "check resolved without producing a record (internal)",
|
|
801
|
+
durationMs: Date.now() - startedAt
|
|
802
|
+
};
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
return buildReport(records, opts.version ?? "unknown");
|
|
806
|
+
}
|
|
807
|
+
/**
|
|
808
|
+
* Invoke a consumer callback (onCheckStart / onCheckComplete) with
|
|
809
|
+
* try/catch isolation. Per ses_013 C3: a throwing callback must not
|
|
810
|
+
* affect the doctor run or the final DoctorReport. Logged but
|
|
811
|
+
* swallowed.
|
|
812
|
+
*/
|
|
813
|
+
invokeCallback(phase, fn) {
|
|
814
|
+
try {
|
|
815
|
+
fn();
|
|
816
|
+
} catch (error) {
|
|
817
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
818
|
+
this.log?.warn("doctor callback threw", {
|
|
819
|
+
"namzu.doctor.phase": phase,
|
|
820
|
+
"namzu.doctor.message": message
|
|
821
|
+
});
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
};
|
|
825
|
+
var doctor = new DoctorRegistry();
|
|
826
|
+
function createDoctorRegistry() {
|
|
827
|
+
return new DoctorRegistry();
|
|
828
|
+
}
|
|
829
|
+
__name(createDoctorRegistry, "createDoctorRegistry");
|
|
830
|
+
function registerDoctorCheck(check) {
|
|
831
|
+
doctor.register(check);
|
|
832
|
+
}
|
|
833
|
+
__name(registerDoctorCheck, "registerDoctorCheck");
|
|
834
|
+
function runDoctor(opts = {}) {
|
|
835
|
+
const registry = opts.registry ?? doctor;
|
|
836
|
+
return registry.run({
|
|
837
|
+
categories: opts.categories,
|
|
838
|
+
perCheckTimeoutMs: opts.perCheckTimeoutMs,
|
|
839
|
+
wallClockTimeoutMs: opts.wallClockTimeoutMs,
|
|
840
|
+
cwd: opts.cwd,
|
|
841
|
+
env: opts.env,
|
|
842
|
+
projectRoot: opts.projectRoot,
|
|
843
|
+
version: opts.version,
|
|
844
|
+
onCheckStart: opts.onCheckStart,
|
|
845
|
+
onCheckComplete: opts.onCheckComplete,
|
|
846
|
+
signal: opts.signal
|
|
847
|
+
});
|
|
848
|
+
}
|
|
849
|
+
__name(runDoctor, "runDoctor");
|
|
850
|
+
function buildContext(opts) {
|
|
851
|
+
return Object.freeze({
|
|
852
|
+
cwd: opts.cwd ?? process.cwd(),
|
|
853
|
+
env: opts.env ?? process.env,
|
|
854
|
+
projectRoot: opts.projectRoot ?? null
|
|
855
|
+
});
|
|
856
|
+
}
|
|
857
|
+
__name(buildContext, "buildContext");
|
|
858
|
+
function buildReport(records, version) {
|
|
859
|
+
const summary = {
|
|
860
|
+
pass: records.filter((r) => r.status === "pass").length,
|
|
861
|
+
fail: records.filter((r) => r.status === "fail").length,
|
|
862
|
+
inconclusive: records.filter((r) => r.status === "inconclusive").length,
|
|
863
|
+
warn: records.filter((r) => r.status === "warn").length,
|
|
864
|
+
skipped: records.filter((r) => r.status === "skipped").length,
|
|
865
|
+
total: records.length
|
|
866
|
+
};
|
|
867
|
+
const exit = summary.fail > 0 ? 1 : summary.total === 0 ? 2 : summary.inconclusive > 0 ? 69 : 0;
|
|
868
|
+
return Object.freeze({
|
|
869
|
+
version,
|
|
870
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
871
|
+
checks: records,
|
|
872
|
+
summary,
|
|
873
|
+
exit
|
|
874
|
+
});
|
|
875
|
+
}
|
|
876
|
+
__name(buildReport, "buildReport");
|
|
877
|
+
function sleep(ms) {
|
|
878
|
+
return new Promise((resolve) => setTimeout(() => resolve("sleep-done"), ms));
|
|
879
|
+
}
|
|
880
|
+
__name(sleep, "sleep");
|
|
881
|
+
|
|
882
|
+
// src/commands/doctor.ts
|
|
883
|
+
var VALID_CATEGORIES = [
|
|
884
|
+
"sandbox",
|
|
885
|
+
"providers",
|
|
886
|
+
"vault",
|
|
887
|
+
"telemetry",
|
|
888
|
+
"runtime",
|
|
889
|
+
"plugins",
|
|
890
|
+
"custom"
|
|
891
|
+
];
|
|
892
|
+
var HELP = `namzu doctor \u2014 health checks for the local Namzu environment
|
|
893
|
+
|
|
894
|
+
Usage:
|
|
895
|
+
namzu doctor [options]
|
|
896
|
+
|
|
897
|
+
Options:
|
|
898
|
+
--json Emit a machine-readable JSON report
|
|
899
|
+
--verbose Include stack traces on failures
|
|
900
|
+
--category <a,b,c> Comma-separated category filter
|
|
901
|
+
(sandbox, providers, vault, telemetry,
|
|
902
|
+
runtime, plugins, custom)
|
|
903
|
+
--per-check-timeout <ms> Per-check timeout (default 5000)
|
|
904
|
+
--wall-clock-timeout <ms> Total wall-clock timeout (default 10000)
|
|
905
|
+
-h, --help Show this help
|
|
906
|
+
|
|
907
|
+
Exit codes:
|
|
908
|
+
0 every check answered, and none of them failed
|
|
909
|
+
1 one or more checks reported \`fail\`
|
|
910
|
+
2 no checks registered (Namzu not configured here)
|
|
911
|
+
69 a check could not answer \u2014 it timed out, was aborted, or what it
|
|
912
|
+
reads threw. Separate from 0 because a report that did not manage
|
|
913
|
+
to look tells you nothing about the part it did look at, and
|
|
914
|
+
separate from 1 because nothing was established to have failed.
|
|
915
|
+
70 internal CLI error (sysexits EX_SOFTWARE)
|
|
916
|
+
|
|
917
|
+
A \`skipped\` check does not affect the exit code: it means there was
|
|
918
|
+
nothing here to check \u2014 an optional package absent, nothing configured
|
|
919
|
+
yet \u2014 which is an ordinary state of a healthy machine.
|
|
920
|
+
`;
|
|
921
|
+
function parseArgs(args) {
|
|
922
|
+
let json = false;
|
|
923
|
+
let verbose = false;
|
|
924
|
+
let help = false;
|
|
925
|
+
let categories;
|
|
926
|
+
let perCheckTimeoutMs;
|
|
927
|
+
let wallClockTimeoutMs;
|
|
928
|
+
for (let i = 0; i < args.length; i++) {
|
|
929
|
+
const arg = args[i];
|
|
930
|
+
switch (arg) {
|
|
931
|
+
case "--json":
|
|
932
|
+
json = true;
|
|
933
|
+
break;
|
|
934
|
+
case "--verbose":
|
|
935
|
+
verbose = true;
|
|
936
|
+
break;
|
|
937
|
+
case "-h":
|
|
938
|
+
case "--help":
|
|
939
|
+
help = true;
|
|
940
|
+
break;
|
|
941
|
+
case "--category": {
|
|
942
|
+
const value = args[++i];
|
|
943
|
+
if (!value) return { json, verbose, help, error: "--category requires a value" };
|
|
944
|
+
const parts = value.split(",").map((p) => p.trim()).filter(Boolean);
|
|
945
|
+
const invalid = parts.filter((p) => !VALID_CATEGORIES.includes(p));
|
|
946
|
+
if (invalid.length > 0) {
|
|
947
|
+
return {
|
|
948
|
+
json,
|
|
949
|
+
verbose,
|
|
950
|
+
help,
|
|
951
|
+
error: `unknown category: ${invalid.join(", ")} (valid: ${VALID_CATEGORIES.join(", ")})`
|
|
952
|
+
};
|
|
953
|
+
}
|
|
954
|
+
categories = parts;
|
|
955
|
+
break;
|
|
956
|
+
}
|
|
957
|
+
case "--per-check-timeout": {
|
|
958
|
+
const value = args[++i];
|
|
959
|
+
if (!value)
|
|
960
|
+
return {
|
|
961
|
+
json,
|
|
962
|
+
verbose,
|
|
963
|
+
help,
|
|
964
|
+
error: "--per-check-timeout requires a value"
|
|
965
|
+
};
|
|
966
|
+
const n = Number.parseInt(value, 10);
|
|
967
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
968
|
+
return {
|
|
969
|
+
json,
|
|
970
|
+
verbose,
|
|
971
|
+
help,
|
|
972
|
+
error: `--per-check-timeout must be a positive integer; got ${value}`
|
|
973
|
+
};
|
|
974
|
+
}
|
|
975
|
+
perCheckTimeoutMs = n;
|
|
976
|
+
break;
|
|
977
|
+
}
|
|
978
|
+
case "--wall-clock-timeout": {
|
|
979
|
+
const value = args[++i];
|
|
980
|
+
if (!value)
|
|
981
|
+
return {
|
|
982
|
+
json,
|
|
983
|
+
verbose,
|
|
984
|
+
help,
|
|
985
|
+
error: "--wall-clock-timeout requires a value"
|
|
986
|
+
};
|
|
987
|
+
const n = Number.parseInt(value, 10);
|
|
988
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
989
|
+
return {
|
|
990
|
+
json,
|
|
991
|
+
verbose,
|
|
992
|
+
help,
|
|
993
|
+
error: `--wall-clock-timeout must be a positive integer; got ${value}`
|
|
994
|
+
};
|
|
995
|
+
}
|
|
996
|
+
wallClockTimeoutMs = n;
|
|
997
|
+
break;
|
|
998
|
+
}
|
|
999
|
+
default:
|
|
1000
|
+
return { json, verbose, help, error: `unknown option: ${arg}` };
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
return {
|
|
1004
|
+
json,
|
|
1005
|
+
verbose,
|
|
1006
|
+
help,
|
|
1007
|
+
categories,
|
|
1008
|
+
perCheckTimeoutMs,
|
|
1009
|
+
wallClockTimeoutMs
|
|
1010
|
+
};
|
|
1011
|
+
}
|
|
1012
|
+
__name(parseArgs, "parseArgs");
|
|
1013
|
+
function statusGlyph(status) {
|
|
1014
|
+
switch (status) {
|
|
1015
|
+
case "pass":
|
|
1016
|
+
return "\u2713";
|
|
1017
|
+
case "fail":
|
|
1018
|
+
return "\u2717";
|
|
1019
|
+
case "inconclusive":
|
|
1020
|
+
return "?";
|
|
1021
|
+
case "warn":
|
|
1022
|
+
return "!";
|
|
1023
|
+
// The glyph `inconclusive` used to carry. It reads as "not applicable",
|
|
1024
|
+
// which is what this status means and what that status never did — so
|
|
1025
|
+
// the mark moves to the row it was describing all along, and the check
|
|
1026
|
+
// that could not answer takes the question mark.
|
|
1027
|
+
case "skipped":
|
|
1028
|
+
return "\u2298";
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
__name(statusGlyph, "statusGlyph");
|
|
1032
|
+
function formatHumanReport(report, verbose) {
|
|
1033
|
+
const lines = [];
|
|
1034
|
+
lines.push(`namzu doctor \u2014 ${report.timestamp}`);
|
|
1035
|
+
lines.push("");
|
|
1036
|
+
const widestCategory = report.checks.reduce(
|
|
1037
|
+
(w, c) => Math.max(w, c.category.length),
|
|
1038
|
+
"category".length
|
|
1039
|
+
);
|
|
1040
|
+
for (const record of report.checks) {
|
|
1041
|
+
const glyph = statusGlyph(record.status);
|
|
1042
|
+
const category = record.category.padEnd(widestCategory);
|
|
1043
|
+
const dur = `${record.durationMs}ms`;
|
|
1044
|
+
const head = ` ${glyph} ${category} ${record.id} ${dur}`;
|
|
1045
|
+
lines.push(head);
|
|
1046
|
+
if (record.message) {
|
|
1047
|
+
for (const line of record.message.split("\n")) lines.push(` ${line}`);
|
|
1048
|
+
}
|
|
1049
|
+
if (record.remediation) {
|
|
1050
|
+
const [first = "", ...rest] = record.remediation.split("\n");
|
|
1051
|
+
lines.push(` \u2192 ${first}`);
|
|
1052
|
+
for (const line of rest) lines.push(` ${line}`);
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
lines.push("");
|
|
1056
|
+
const s = report.summary;
|
|
1057
|
+
lines.push(
|
|
1058
|
+
` pass: ${s.pass} fail: ${s.fail} warn: ${s.warn} inconc: ${s.inconclusive} skipped: ${s.skipped} total: ${s.total}`
|
|
1059
|
+
);
|
|
1060
|
+
lines.push(` exit: ${report.exit}`);
|
|
1061
|
+
if (report.exit === 69) {
|
|
1062
|
+
lines.push(" (69: at least one check could not answer \u2014 see the ? rows above)");
|
|
1063
|
+
}
|
|
1064
|
+
if (verbose) {
|
|
1065
|
+
const failed = report.checks.filter((c) => c.status === "fail");
|
|
1066
|
+
if (failed.length > 0) {
|
|
1067
|
+
lines.push("");
|
|
1068
|
+
lines.push("Failures:");
|
|
1069
|
+
for (const f of failed) {
|
|
1070
|
+
lines.push(` ${f.id}: ${f.message ?? "(no message)"}`);
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
return lines.join("\n");
|
|
1075
|
+
}
|
|
1076
|
+
__name(formatHumanReport, "formatHumanReport");
|
|
1077
|
+
async function runDoctorCommand(args, config = {}) {
|
|
1078
|
+
const parsed = parseArgs(args);
|
|
1079
|
+
if (parsed.error) {
|
|
1080
|
+
process.stderr.write(`Error: ${parsed.error}
|
|
1081
|
+
|
|
1082
|
+
${HELP}
|
|
1083
|
+
`);
|
|
1084
|
+
return EXIT_USAGE;
|
|
1085
|
+
}
|
|
1086
|
+
if (parsed.help) {
|
|
1087
|
+
process.stdout.write(`${HELP}
|
|
1088
|
+
`);
|
|
1089
|
+
return 0;
|
|
1090
|
+
}
|
|
1091
|
+
const registry = createDoctorRegistry();
|
|
1092
|
+
for (const check of builtInDoctorChecks) registry.register(check);
|
|
1093
|
+
registry.register(sessionExportCheck(config));
|
|
1094
|
+
const opts = {
|
|
1095
|
+
registry,
|
|
1096
|
+
version: CLI_VERSION,
|
|
1097
|
+
categories: parsed.categories,
|
|
1098
|
+
perCheckTimeoutMs: parsed.perCheckTimeoutMs,
|
|
1099
|
+
wallClockTimeoutMs: parsed.wallClockTimeoutMs
|
|
1100
|
+
};
|
|
1101
|
+
const report = await runDoctor(opts);
|
|
1102
|
+
if (parsed.json) {
|
|
1103
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}
|
|
1104
|
+
`);
|
|
1105
|
+
} else {
|
|
1106
|
+
process.stdout.write(`${formatHumanReport(report, parsed.verbose)}
|
|
1107
|
+
`);
|
|
1108
|
+
}
|
|
1109
|
+
return report.exit;
|
|
1110
|
+
}
|
|
1111
|
+
__name(runDoctorCommand, "runDoctorCommand");
|
|
1112
|
+
var doctorCommand = {
|
|
1113
|
+
name: "doctor",
|
|
1114
|
+
description: "Run health checks against the local Namzu environment",
|
|
1115
|
+
passThrough: true,
|
|
1116
|
+
handler: /* @__PURE__ */ __name(async ({ rawArgs, ctx }) => runDoctorCommand(rawArgs, ctx.config), "handler")
|
|
1117
|
+
};
|
|
1118
|
+
|
|
1119
|
+
export {
|
|
1120
|
+
browserEngineCheck,
|
|
1121
|
+
providerChainCheck,
|
|
1122
|
+
credentialSourcesCheck,
|
|
1123
|
+
providersRegisteredCheck,
|
|
1124
|
+
cwdWritableCheck,
|
|
1125
|
+
tmpdirWritableCheck,
|
|
1126
|
+
sandboxPlatformCheck,
|
|
1127
|
+
telemetryInstalledCheck,
|
|
1128
|
+
vaultRegisteredCheck,
|
|
1129
|
+
sandboxInstalledCheck,
|
|
1130
|
+
filesInstalledCheck,
|
|
1131
|
+
computerUseInstalledCheck,
|
|
1132
|
+
browserInstalledCheck,
|
|
1133
|
+
builtInDoctorChecks,
|
|
1134
|
+
DoctorRegistry,
|
|
1135
|
+
doctor,
|
|
1136
|
+
createDoctorRegistry,
|
|
1137
|
+
registerDoctorCheck,
|
|
1138
|
+
runDoctor,
|
|
1139
|
+
runDoctorCommand,
|
|
1140
|
+
doctorCommand
|
|
1141
|
+
};
|
|
1142
|
+
//# sourceMappingURL=chunk-MH6KUKVV.js.map
|