@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
|
@@ -1,858 +0,0 @@
|
|
|
1
|
-
import { terminalDisplayText } from './terminal-display.js';
|
|
2
|
-
/**
|
|
3
|
-
* Maximum exact permission envelope handed to an interactive reviewer.
|
|
4
|
-
*
|
|
5
|
-
* This is a refusal boundary, not a display truncation boundary. A call above
|
|
6
|
-
* it is not offered for approval and is not executed. Keeping the limit on the
|
|
7
|
-
* complete batch also prevents many individually-small calls from turning one
|
|
8
|
-
* consent prompt into an unbounded allocation.
|
|
9
|
-
*/
|
|
10
|
-
export const MAX_PERMISSION_REVIEW_BYTES = 8_000;
|
|
11
|
-
/** Physical rows kept visible without crowding a 24-row terminal. */
|
|
12
|
-
export const PERMISSION_REVIEW_PAGE_ROWS = 6;
|
|
13
|
-
/**
|
|
14
|
-
* The page a terminal of this height gets: the 24-row floor above, and
|
|
15
|
-
* every row past what the box's own furniture needs on a taller one, so
|
|
16
|
-
* a two-call batch is not paged on a screen that could show it whole.
|
|
17
|
-
*/
|
|
18
|
-
export function permissionReviewPageRows(terminalRows) {
|
|
19
|
-
const rows = terminalRows ?? 24;
|
|
20
|
-
return Math.min(24, Math.max(PERMISSION_REVIEW_PAGE_ROWS, rows - 18));
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Whether an "allow all" answered on one prompt may also answer this queued
|
|
24
|
-
* one, which nobody has seen yet.
|
|
25
|
-
*
|
|
26
|
-
* Not for a call that crosses the turn's boundary: one that leaves the
|
|
27
|
-
* sandbox, or one that reaches a path outside the working directory and the
|
|
28
|
-
* added directories. The kernel asks about each of those every time; a
|
|
29
|
-
* queued prompt settled by an answer given to a DIFFERENT prompt would hand
|
|
30
|
-
* it an approval for a command or a path that was never on screen.
|
|
31
|
-
*/
|
|
32
|
-
export function releasedByApproveAll(toolCalls) {
|
|
33
|
-
return !toolCalls.some((call) => call.escalation?.sandboxEscape === true || (call.escalation?.outsidePaths?.length ?? 0) > 0);
|
|
34
|
-
}
|
|
35
|
-
/** Actionable fail-closed feedback for a TUI review that cannot be exact. */
|
|
36
|
-
export function permissionReviewRefusal(reason) {
|
|
37
|
-
return reason === 'too_large'
|
|
38
|
-
? `Refused: the complete tool batch exceeds the ${MAX_PERMISSION_REVIEW_BYTES}-byte interactive review limit. Split it into smaller calls or add an explicit allow rule after reviewing the operation another way.`
|
|
39
|
-
: 'Refused: this tool batch contains input the interactive permission protocol cannot represent exactly. Use JSON-compatible input or add an explicit allow rule after reviewing the operation another way.';
|
|
40
|
-
}
|
|
41
|
-
class ReviewLimitError extends Error {
|
|
42
|
-
}
|
|
43
|
-
class ReviewShapeError extends Error {
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Serialize the exact executable batch without invoking getters or `toJSON`.
|
|
47
|
-
*
|
|
48
|
-
* `ToolManager.prepareExecution()` already publishes detached JSON values,
|
|
49
|
-
* but this is a host boundary and structural SDK implementations can still
|
|
50
|
-
* supply `unknown`. Ordinary `JSON.stringify` would execute an accessor and
|
|
51
|
-
* could silently turn a Date/Map/custom object into something other than the
|
|
52
|
-
* value being approved. The bounded writer accepts only the JSON graph the
|
|
53
|
-
* permission protocol can preserve and stops building as soon as the complete
|
|
54
|
-
* envelope crosses the limit.
|
|
55
|
-
*/
|
|
56
|
-
export function buildPermissionReview(calls, maxBytes = MAX_PERMISSION_REVIEW_BYTES) {
|
|
57
|
-
if (!Number.isSafeInteger(maxBytes) || maxBytes < 1) {
|
|
58
|
-
return { ok: false, reason: 'unrepresentable' };
|
|
59
|
-
}
|
|
60
|
-
const chunks = [];
|
|
61
|
-
let bytes = 0;
|
|
62
|
-
const active = new WeakSet();
|
|
63
|
-
const append = (chunk) => {
|
|
64
|
-
bytes += Buffer.byteLength(chunk, 'utf8');
|
|
65
|
-
if (bytes > maxBytes)
|
|
66
|
-
throw new ReviewLimitError();
|
|
67
|
-
chunks.push(chunk);
|
|
68
|
-
};
|
|
69
|
-
const appendString = (value) => {
|
|
70
|
-
// JSON escaping only grows a string. Avoid materialising an escaped copy
|
|
71
|
-
// when the source alone has already crossed the complete-envelope cap.
|
|
72
|
-
if (Buffer.byteLength(value, 'utf8') > maxBytes - bytes)
|
|
73
|
-
throw new ReviewLimitError();
|
|
74
|
-
append(JSON.stringify(value));
|
|
75
|
-
};
|
|
76
|
-
const write = (value, indent) => {
|
|
77
|
-
if (value === null) {
|
|
78
|
-
append('null');
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
switch (typeof value) {
|
|
82
|
-
case 'string':
|
|
83
|
-
appendString(value);
|
|
84
|
-
return;
|
|
85
|
-
case 'boolean':
|
|
86
|
-
append(value ? 'true' : 'false');
|
|
87
|
-
return;
|
|
88
|
-
case 'number':
|
|
89
|
-
if (!Number.isFinite(value) || Object.is(value, -0))
|
|
90
|
-
throw new ReviewShapeError();
|
|
91
|
-
append(String(value));
|
|
92
|
-
return;
|
|
93
|
-
case 'object':
|
|
94
|
-
break;
|
|
95
|
-
default:
|
|
96
|
-
throw new ReviewShapeError();
|
|
97
|
-
}
|
|
98
|
-
const object = value;
|
|
99
|
-
if (active.has(object))
|
|
100
|
-
throw new ReviewShapeError();
|
|
101
|
-
active.add(object);
|
|
102
|
-
try {
|
|
103
|
-
if (Array.isArray(value)) {
|
|
104
|
-
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
105
|
-
if (Object.getOwnPropertySymbols(value).length > 0)
|
|
106
|
-
throw new ReviewShapeError();
|
|
107
|
-
const names = Object.getOwnPropertyNames(value);
|
|
108
|
-
if (names.some((name) => name !== 'length' && (!/^(0|[1-9]\d*)$/.test(name) || Number(name) >= value.length)))
|
|
109
|
-
throw new ReviewShapeError();
|
|
110
|
-
append('[');
|
|
111
|
-
if (value.length > 0)
|
|
112
|
-
append('\n');
|
|
113
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
114
|
-
const descriptor = descriptors[String(index)];
|
|
115
|
-
if (!descriptor || !('value' in descriptor) || !descriptor.enumerable)
|
|
116
|
-
throw new ReviewShapeError();
|
|
117
|
-
append(' '.repeat(indent + 2));
|
|
118
|
-
write(descriptor.value, indent + 2);
|
|
119
|
-
append(index === value.length - 1 ? '\n' : ',\n');
|
|
120
|
-
}
|
|
121
|
-
if (value.length > 0)
|
|
122
|
-
append(' '.repeat(indent));
|
|
123
|
-
append(']');
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
const prototype = Object.getPrototypeOf(value);
|
|
127
|
-
if (prototype !== Object.prototype && prototype !== null)
|
|
128
|
-
throw new ReviewShapeError();
|
|
129
|
-
if (Object.getOwnPropertySymbols(value).length > 0)
|
|
130
|
-
throw new ReviewShapeError();
|
|
131
|
-
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
132
|
-
const entries = Object.keys(value);
|
|
133
|
-
for (const name of Object.getOwnPropertyNames(value)) {
|
|
134
|
-
const descriptor = descriptors[name];
|
|
135
|
-
if (!descriptor || !descriptor.enumerable || !('value' in descriptor))
|
|
136
|
-
throw new ReviewShapeError();
|
|
137
|
-
}
|
|
138
|
-
append('{');
|
|
139
|
-
if (entries.length > 0)
|
|
140
|
-
append('\n');
|
|
141
|
-
for (let index = 0; index < entries.length; index += 1) {
|
|
142
|
-
const key = entries[index];
|
|
143
|
-
const descriptor = descriptors[key];
|
|
144
|
-
if (!descriptor || !('value' in descriptor))
|
|
145
|
-
throw new ReviewShapeError();
|
|
146
|
-
append(' '.repeat(indent + 2));
|
|
147
|
-
appendString(key);
|
|
148
|
-
append(': ');
|
|
149
|
-
write(descriptor.value, indent + 2);
|
|
150
|
-
append(index === entries.length - 1 ? '\n' : ',\n');
|
|
151
|
-
}
|
|
152
|
-
if (entries.length > 0)
|
|
153
|
-
append(' '.repeat(indent));
|
|
154
|
-
append('}');
|
|
155
|
-
}
|
|
156
|
-
finally {
|
|
157
|
-
active.delete(object);
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
try {
|
|
161
|
-
const exactCalls = calls.map((call) => {
|
|
162
|
-
const prototype = Object.getPrototypeOf(call);
|
|
163
|
-
if (prototype !== Object.prototype && prototype !== null)
|
|
164
|
-
throw new ReviewShapeError();
|
|
165
|
-
if (Object.getOwnPropertySymbols(call).length > 0)
|
|
166
|
-
throw new ReviewShapeError();
|
|
167
|
-
const descriptors = Object.getOwnPropertyDescriptors(call);
|
|
168
|
-
const id = descriptors.id;
|
|
169
|
-
const name = descriptors.name;
|
|
170
|
-
const input = descriptors.input;
|
|
171
|
-
const isDestructive = descriptors.isDestructive;
|
|
172
|
-
if (!id ||
|
|
173
|
-
!('value' in id) ||
|
|
174
|
-
typeof id.value !== 'string' ||
|
|
175
|
-
!name ||
|
|
176
|
-
!('value' in name) ||
|
|
177
|
-
typeof name.value !== 'string' ||
|
|
178
|
-
!input ||
|
|
179
|
-
!('value' in input) ||
|
|
180
|
-
!isDestructive ||
|
|
181
|
-
!('value' in isDestructive) ||
|
|
182
|
-
typeof isDestructive.value !== 'boolean')
|
|
183
|
-
throw new ReviewShapeError();
|
|
184
|
-
return {
|
|
185
|
-
id: id.value,
|
|
186
|
-
name: name.value,
|
|
187
|
-
input: input.value,
|
|
188
|
-
isDestructive: isDestructive.value,
|
|
189
|
-
};
|
|
190
|
-
});
|
|
191
|
-
write({
|
|
192
|
-
calls: exactCalls,
|
|
193
|
-
}, 0);
|
|
194
|
-
return { ok: true, text: chunks.join(''), bytes };
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
return {
|
|
198
|
-
ok: false,
|
|
199
|
-
reason: error instanceof ReviewLimitError ? 'too_large' : 'unrepresentable',
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
export function buildPermissionSummary(review, context = {}) {
|
|
204
|
-
let parsed;
|
|
205
|
-
try {
|
|
206
|
-
parsed = JSON.parse(review);
|
|
207
|
-
}
|
|
208
|
-
catch {
|
|
209
|
-
return { text: review, complete: false };
|
|
210
|
-
}
|
|
211
|
-
if (!isRecord(parsed) || !Array.isArray(parsed.calls)) {
|
|
212
|
-
return { text: review, complete: false };
|
|
213
|
-
}
|
|
214
|
-
const calls = [];
|
|
215
|
-
let complete = true;
|
|
216
|
-
for (let index = 0; index < parsed.calls.length; index += 1) {
|
|
217
|
-
const call = parsed.calls[index];
|
|
218
|
-
if (!isRecord(call) ||
|
|
219
|
-
typeof call.name !== 'string' ||
|
|
220
|
-
typeof call.isDestructive !== 'boolean' ||
|
|
221
|
-
!Object.hasOwn(call, 'input')) {
|
|
222
|
-
return { text: review, complete: false };
|
|
223
|
-
}
|
|
224
|
-
const readable = summarizeKnownCall(call.name, call.input, context);
|
|
225
|
-
complete &&= readable.complete;
|
|
226
|
-
calls.push({
|
|
227
|
-
name: call.name,
|
|
228
|
-
isDestructive: call.isDestructive,
|
|
229
|
-
readable,
|
|
230
|
-
input: call.input,
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
const compactText = complete &&
|
|
234
|
-
calls.length > 0 &&
|
|
235
|
-
calls.every((call) => call.name === 'Agent' && call.readable.label !== undefined)
|
|
236
|
-
? compactAgentPlan(calls)
|
|
237
|
-
: undefined;
|
|
238
|
-
if (complete &&
|
|
239
|
-
calls.length > 1 &&
|
|
240
|
-
calls.every((call) => call.name === 'Agent' && call.readable.label !== undefined)) {
|
|
241
|
-
const overview = calls.map((call, index) => `${index + 1}. ${call.readable.label}${call.isDestructive ? ' · destructive' : ''}`);
|
|
242
|
-
const details = calls.map((call, index) => [
|
|
243
|
-
`${index + 1}. ${call.readable.label}${call.isDestructive ? ' · destructive' : ''}`,
|
|
244
|
-
...call.readable.lines.map((line) => ` ${line}`),
|
|
245
|
-
].join('\n'));
|
|
246
|
-
return {
|
|
247
|
-
text: [...overview, '', 'Task details', '', ...details].join('\n'),
|
|
248
|
-
...(compactText !== undefined ? { compactText } : {}),
|
|
249
|
-
complete: true,
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
return {
|
|
253
|
-
...(compactText !== undefined ? { compactText } : {}),
|
|
254
|
-
text: calls
|
|
255
|
-
.map((call, index) => [
|
|
256
|
-
`${index + 1}. ${call.name}${call.isDestructive ? ' · destructive' : ''}`,
|
|
257
|
-
...call.readable.lines.map((line) => ` ${line}`),
|
|
258
|
-
].join('\n'))
|
|
259
|
-
.join('\n\n'),
|
|
260
|
-
complete,
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* A shell command as the operator would type it: its quotes and backslashes
|
|
265
|
-
* verbatim, never JSON-escaped (`printf '%s\n' "$x"`, not
|
|
266
|
-
* `printf '%s\\n' \"$x\"`). Each line of a multi-line command is its own
|
|
267
|
-
* row, the first after `$ ` and every later one indented under it, so a
|
|
268
|
-
* newline in the command cannot pose as a field of the prompt or as another
|
|
269
|
-
* call of the batch. A carriage return is spelled out rather than kept: the
|
|
270
|
-
* rows' terminal projection would fold CRLF into a plain newline, and to the
|
|
271
|
-
* shell the CR is part of the word. Every other control and invisible
|
|
272
|
-
* character is spelled out by that projection (`terminalDisplayText`).
|
|
273
|
-
*/
|
|
274
|
-
function commandLines(command) {
|
|
275
|
-
const [first = '', ...rest] = command.replace(/\r/g, '\\u{000d}').split('\n');
|
|
276
|
-
return [`$ ${first}`, ...rest.map((line) => ` ${line}`)];
|
|
277
|
-
}
|
|
278
|
-
function summarizeKnownCall(name, input, context = {}) {
|
|
279
|
-
if (name === 'bash' && isRecord(input)) {
|
|
280
|
-
const allowed = new Set([
|
|
281
|
-
'command',
|
|
282
|
-
'timeout',
|
|
283
|
-
'run_in_background',
|
|
284
|
-
'dangerously_disable_sandbox',
|
|
285
|
-
]);
|
|
286
|
-
const keys = Object.keys(input);
|
|
287
|
-
const shapeIsKnown = keys.every((key) => allowed.has(key)) &&
|
|
288
|
-
typeof input.command === 'string' &&
|
|
289
|
-
(input.timeout === undefined || typeof input.timeout === 'number') &&
|
|
290
|
-
(input.run_in_background === undefined || typeof input.run_in_background === 'boolean') &&
|
|
291
|
-
(input.dangerously_disable_sandbox === undefined ||
|
|
292
|
-
typeof input.dangerously_disable_sandbox === 'boolean');
|
|
293
|
-
if (shapeIsKnown) {
|
|
294
|
-
return {
|
|
295
|
-
lines: [
|
|
296
|
-
...commandLines(input.command),
|
|
297
|
-
...(input.timeout !== undefined ? [`timeout: ${String(input.timeout)} ms`] : []),
|
|
298
|
-
...(input.run_in_background !== undefined
|
|
299
|
-
? [`background: ${input.run_in_background ? 'yes' : 'no'}`]
|
|
300
|
-
: []),
|
|
301
|
-
...(input.dangerously_disable_sandbox === true
|
|
302
|
-
? ['sandbox: OFF for this command (runs on the host)']
|
|
303
|
-
: []),
|
|
304
|
-
],
|
|
305
|
-
complete: true,
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
if (name === 'edit' && isRecord(input)) {
|
|
310
|
-
const summary = summarizeEdit(input);
|
|
311
|
-
if (summary)
|
|
312
|
-
return summary;
|
|
313
|
-
}
|
|
314
|
-
if (name === 'write' && isRecord(input)) {
|
|
315
|
-
const allowed = new Set(['path', 'content', 'newStr']);
|
|
316
|
-
const keys = Object.keys(input);
|
|
317
|
-
const body = typeof input.content === 'string' ? input.content : input.newStr;
|
|
318
|
-
const shapeIsKnown = keys.every((key) => allowed.has(key)) &&
|
|
319
|
-
typeof input.path === 'string' &&
|
|
320
|
-
typeof body === 'string' &&
|
|
321
|
-
// One body, not two: a call carrying both is an evolved shape the
|
|
322
|
-
// exact view has to show, not one this summary may pick a half of.
|
|
323
|
-
(input.content === undefined) !== (input.newStr === undefined);
|
|
324
|
-
if (shapeIsKnown) {
|
|
325
|
-
const lines = body === '' ? [] : body.split('\n');
|
|
326
|
-
if (lines.at(-1) === '')
|
|
327
|
-
lines.pop();
|
|
328
|
-
return {
|
|
329
|
-
lines: [
|
|
330
|
-
`${input.path} · write ${lines.length} line${lines.length === 1 ? '' : 's'}`,
|
|
331
|
-
'Full replacement body · may overwrite an existing file',
|
|
332
|
-
...lines.map((line) => ` ${line}`),
|
|
333
|
-
],
|
|
334
|
-
complete: true,
|
|
335
|
-
};
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
if (name === 'Agent' && isRecord(input)) {
|
|
339
|
-
const allowed = new Set([
|
|
340
|
-
'description',
|
|
341
|
-
'prompt',
|
|
342
|
-
'subagent_type',
|
|
343
|
-
'model',
|
|
344
|
-
'provider',
|
|
345
|
-
'effort',
|
|
346
|
-
'role',
|
|
347
|
-
'workflow',
|
|
348
|
-
'phase',
|
|
349
|
-
'phase_order',
|
|
350
|
-
'phase_detail',
|
|
351
|
-
'run_in_background',
|
|
352
|
-
]);
|
|
353
|
-
const keys = Object.keys(input);
|
|
354
|
-
const shapeIsKnown = keys.every((key) => allowed.has(key)) &&
|
|
355
|
-
typeof input.description === 'string' &&
|
|
356
|
-
typeof input.prompt === 'string' &&
|
|
357
|
-
(input.run_in_background === undefined || typeof input.run_in_background === 'boolean') &&
|
|
358
|
-
(input.subagent_type === undefined || typeof input.subagent_type === 'string') &&
|
|
359
|
-
['model', 'provider', 'effort'].every((key) => input[key] === undefined || typeof input[key] === 'string') &&
|
|
360
|
-
(input.role === undefined || typeof input.role === 'string') &&
|
|
361
|
-
(input.workflow === undefined || typeof input.workflow === 'string') &&
|
|
362
|
-
(input.phase === undefined || typeof input.phase === 'string') &&
|
|
363
|
-
(input.phase_order === undefined ||
|
|
364
|
-
(typeof input.phase_order === 'number' && Number.isSafeInteger(input.phase_order))) &&
|
|
365
|
-
(input.phase_detail === undefined || typeof input.phase_detail === 'string');
|
|
366
|
-
if (shapeIsKnown) {
|
|
367
|
-
const known = input;
|
|
368
|
-
return {
|
|
369
|
-
lines: [
|
|
370
|
-
...readableField('Task', known.description),
|
|
371
|
-
...readableField('Agent', agentTypeLabel(known.subagent_type)),
|
|
372
|
-
...(known.model !== undefined ? readableField('Model', known.model) : []),
|
|
373
|
-
...(known.provider !== undefined ? readableField('Provider', known.provider) : []),
|
|
374
|
-
...(known.effort !== undefined ? readableField('Effort', known.effort) : []),
|
|
375
|
-
...(known.run_in_background !== undefined
|
|
376
|
-
? [`Execution: ${known.run_in_background ? 'background' : 'wait for result'}`]
|
|
377
|
-
: []),
|
|
378
|
-
...(known.subagent_type === 'explore'
|
|
379
|
-
? ['Tools: reading and searching only']
|
|
380
|
-
: known.subagent_type === undefined || known.subagent_type === 'general-purpose'
|
|
381
|
-
? ['Tools: files and commands, subject to approval rules']
|
|
382
|
-
: []),
|
|
383
|
-
...(known.role !== undefined ? readableField('Role', known.role) : []),
|
|
384
|
-
...(known.workflow !== undefined ? readableField('Workflow label', known.workflow) : []),
|
|
385
|
-
...(known.phase !== undefined ? readableField('Phase label', known.phase) : []),
|
|
386
|
-
...(known.phase_order !== undefined
|
|
387
|
-
? [`Phase display order: ${String(known.phase_order + 1)}`]
|
|
388
|
-
: []),
|
|
389
|
-
...(known.phase_detail !== undefined
|
|
390
|
-
? readableField('Phase detail', known.phase_detail)
|
|
391
|
-
: []),
|
|
392
|
-
...readableField('Instructions', known.prompt),
|
|
393
|
-
],
|
|
394
|
-
complete: true,
|
|
395
|
-
label: `${oneLine(known.description)} · ${oneLine(agentTypeLabel(known.subagent_type))}`,
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
if (name === 'browser' && isRecord(input)) {
|
|
400
|
-
const summary = summarizeBrowserOpen(input);
|
|
401
|
-
if (summary)
|
|
402
|
-
return summary;
|
|
403
|
-
}
|
|
404
|
-
if (name === 'computer_use' && isRecord(input)) {
|
|
405
|
-
const summary = summarizeComputerUse(input, context);
|
|
406
|
-
if (summary)
|
|
407
|
-
return summary;
|
|
408
|
-
}
|
|
409
|
-
if (FORMATTED_TOOLS.has(name)) {
|
|
410
|
-
// A shape this file formats, in a form it does not know: the formatter
|
|
411
|
-
// is stale. Exact-first, so nobody reads a projection that merely
|
|
412
|
-
// happens to be right.
|
|
413
|
-
return { lines: [`input: ${JSON.stringify(input)}`], complete: false };
|
|
414
|
-
}
|
|
415
|
-
// A name that is not a plain token — a control character, a bidi mark —
|
|
416
|
-
// is the kind of thing the exact view exists to expose. Exact-first.
|
|
417
|
-
if (!PLAIN_TOOL_NAME.test(name)) {
|
|
418
|
-
return { lines: [`input: ${JSON.stringify(input)}`], complete: false };
|
|
419
|
-
}
|
|
420
|
-
// No formatter, so nothing can be stale: every key, every value, escaped
|
|
421
|
-
// so a value cannot pose as a key or drive the terminal.
|
|
422
|
-
if (isRecord(input)) {
|
|
423
|
-
const keys = Object.keys(input);
|
|
424
|
-
return {
|
|
425
|
-
lines: keys.length === 0
|
|
426
|
-
? ['(no input)']
|
|
427
|
-
: keys.map((key) => `${key}: ${JSON.stringify(input[key])}`),
|
|
428
|
-
complete: true,
|
|
429
|
-
};
|
|
430
|
-
}
|
|
431
|
-
return { lines: [`input: ${JSON.stringify(input)}`], complete: true };
|
|
432
|
-
}
|
|
433
|
-
/**
|
|
434
|
-
* A browser navigation, with its address readable: the path and query as a
|
|
435
|
-
* person writes them (`/wiki/İstanbul`, not `/wiki/%C4%B0stanbul`), and the
|
|
436
|
-
* address actually sent below it when the two differ. The host stays in its
|
|
437
|
-
* canonical (punycode) form: that is the part a lookalike would abuse.
|
|
438
|
-
* Any other browser call keeps the generic every-key listing.
|
|
439
|
-
*/
|
|
440
|
-
function summarizeBrowserOpen(input) {
|
|
441
|
-
const keys = Object.keys(input);
|
|
442
|
-
const navigate = input.action === 'navigate' && keys.every((key) => key === 'action' || key === 'url');
|
|
443
|
-
const newTab = input.action === 'tabs' &&
|
|
444
|
-
input.op === 'new' &&
|
|
445
|
-
keys.every((key) => key === 'action' || key === 'op' || key === 'url');
|
|
446
|
-
if ((!navigate && !newTab) || typeof input.url !== 'string')
|
|
447
|
-
return null;
|
|
448
|
-
const url = input.url;
|
|
449
|
-
let readable = url;
|
|
450
|
-
try {
|
|
451
|
-
const parsed = new URL(url);
|
|
452
|
-
readable = `${parsed.protocol}//${parsed.host}${decodeURI(`${parsed.pathname}${parsed.search}${parsed.hash}`)}`;
|
|
453
|
-
}
|
|
454
|
-
catch {
|
|
455
|
-
readable = url;
|
|
456
|
-
}
|
|
457
|
-
return {
|
|
458
|
-
lines: [
|
|
459
|
-
`${newTab ? 'Open in a new tab' : 'Open'}: ${readable}`,
|
|
460
|
-
...(readable !== url ? [`sent as: ${url}`] : []),
|
|
461
|
-
],
|
|
462
|
-
complete: true,
|
|
463
|
-
};
|
|
464
|
-
}
|
|
465
|
-
/**
|
|
466
|
-
* A desktop action, or a batch of them, one numbered line per action in the
|
|
467
|
-
* order they will run: `3 desktop actions, in order` over `1. Click left at
|
|
468
|
-
* (812, 403)`, `2. Type "Bahadır Arda"`, `3. Press ENTER`. Text to be typed is
|
|
469
|
-
* shown whole — it is what lands in whichever window has focus — and the
|
|
470
|
-
* screenshot the coordinates belong to is named, since they are its pixels,
|
|
471
|
-
* not the screen's. An action or field this does not know returns null and
|
|
472
|
-
* the call opens exact-first.
|
|
473
|
-
*/
|
|
474
|
-
function summarizeComputerUse(input, context) {
|
|
475
|
-
if (input.screenshot_id !== undefined && typeof input.screenshot_id !== 'string')
|
|
476
|
-
return null;
|
|
477
|
-
const space = typeof input.screenshot_id === 'string'
|
|
478
|
-
? `Coordinates: pixels of screenshot ${input.screenshot_id}`
|
|
479
|
-
: 'Coordinates: pixels of the latest screenshot';
|
|
480
|
-
if (input.type === 'batch') {
|
|
481
|
-
if (!Object.keys(input).every((key) => ['type', 'actions', 'screenshot_id'].includes(key)))
|
|
482
|
-
return null;
|
|
483
|
-
if (!Array.isArray(input.actions) || input.actions.length === 0)
|
|
484
|
-
return null;
|
|
485
|
-
const lines = [];
|
|
486
|
-
let coordinates = false;
|
|
487
|
-
for (const [index, item] of input.actions.entries()) {
|
|
488
|
-
if (!isRecord(item) || item.type === 'batch' || Object.hasOwn(item, 'screenshot_id'))
|
|
489
|
-
return null;
|
|
490
|
-
const action = computerUseAction(item, [], context);
|
|
491
|
-
if (!action)
|
|
492
|
-
return null;
|
|
493
|
-
coordinates ||= action.coordinates;
|
|
494
|
-
lines.push(`${index + 1}. ${action.line}`);
|
|
495
|
-
}
|
|
496
|
-
const count = input.actions.length;
|
|
497
|
-
return {
|
|
498
|
-
lines: [
|
|
499
|
-
`${count} desktop action${count === 1 ? '' : 's'}, in order; stops at the first that fails`,
|
|
500
|
-
...lines,
|
|
501
|
-
...(coordinates ? [space] : []),
|
|
502
|
-
],
|
|
503
|
-
complete: true,
|
|
504
|
-
};
|
|
505
|
-
}
|
|
506
|
-
if (input.actions !== undefined)
|
|
507
|
-
return null;
|
|
508
|
-
const action = computerUseAction(input, ['screenshot_id'], context);
|
|
509
|
-
if (!action)
|
|
510
|
-
return null;
|
|
511
|
-
return { lines: [action.line, ...(action.coordinates ? [space] : [])], complete: true };
|
|
512
|
-
}
|
|
513
|
-
/** How a person reads each `ui_act` action, before the control it acts on. */
|
|
514
|
-
const UI_ACT_VERBS = {
|
|
515
|
-
invoke: 'Press',
|
|
516
|
-
toggle: 'Toggle',
|
|
517
|
-
select: 'Select',
|
|
518
|
-
expand: 'Expand',
|
|
519
|
-
collapse: 'Collapse',
|
|
520
|
-
focus: 'Focus',
|
|
521
|
-
scroll_into_view: 'Scroll to',
|
|
522
|
-
};
|
|
523
|
-
function computerUseAction(item, extra = [], context = {}) {
|
|
524
|
-
const point = (value) => isRecord(value) &&
|
|
525
|
-
Object.keys(value).every((key) => key === 'x' || key === 'y') &&
|
|
526
|
-
Number.isInteger(value.x) &&
|
|
527
|
-
Number.isInteger(value.y)
|
|
528
|
-
? `(${value.x}, ${value.y})`
|
|
529
|
-
: null;
|
|
530
|
-
const fields = (...names) => Object.keys(item).every((key) => key === 'type' || names.includes(key) || extra.includes(key));
|
|
531
|
-
const text = (value) => typeof value === 'string';
|
|
532
|
-
const delivery = () => item.delivery_mode === undefined || item.delivery_mode === 'background'
|
|
533
|
-
? ''
|
|
534
|
-
: item.delivery_mode === 'foreground'
|
|
535
|
-
? ' (may bring the window to the front)'
|
|
536
|
-
: null;
|
|
537
|
-
switch (item.type) {
|
|
538
|
-
case 'screenshot':
|
|
539
|
-
return fields('window_id') &&
|
|
540
|
-
(item.window_id === undefined || (text(item.window_id) && item.window_id.length > 0))
|
|
541
|
-
? {
|
|
542
|
-
line: item.window_id === undefined
|
|
543
|
-
? 'Take a screenshot'
|
|
544
|
-
: `Take a screenshot of window ${JSON.stringify(item.window_id)}`,
|
|
545
|
-
coordinates: false,
|
|
546
|
-
}
|
|
547
|
-
: null;
|
|
548
|
-
case 'cursor_position':
|
|
549
|
-
return fields() ? { line: 'Read the cursor position', coordinates: false } : null;
|
|
550
|
-
case 'list_windows':
|
|
551
|
-
return fields() ? { line: 'List the open windows', coordinates: false } : null;
|
|
552
|
-
case 'wait':
|
|
553
|
-
return fields('ms') && Number.isInteger(item.ms)
|
|
554
|
-
? { line: `Wait ${item.ms} ms`, coordinates: false }
|
|
555
|
-
: null;
|
|
556
|
-
case 'focus_window':
|
|
557
|
-
return fields('window_id') && text(item.window_id)
|
|
558
|
-
? {
|
|
559
|
-
line: `Bring window ${JSON.stringify(item.window_id)} to the front`,
|
|
560
|
-
coordinates: false,
|
|
561
|
-
}
|
|
562
|
-
: null;
|
|
563
|
-
case 'type_text':
|
|
564
|
-
case 'key': {
|
|
565
|
-
const field = item.type === 'type_text' ? 'text' : 'keys';
|
|
566
|
-
if (!fields(field, 'delivery_mode') || !text(item[field]))
|
|
567
|
-
return null;
|
|
568
|
-
const mode = delivery();
|
|
569
|
-
if (mode === null)
|
|
570
|
-
return null;
|
|
571
|
-
const verb = item.type === 'type_text' ? 'type' : 'press';
|
|
572
|
-
return {
|
|
573
|
-
line: `${verb === 'type' ? 'Type' : 'Press'} ${JSON.stringify(item[field])}${mode}`,
|
|
574
|
-
coordinates: false,
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
case 'mouse_move': {
|
|
578
|
-
const to = point(item.to);
|
|
579
|
-
return fields('to') && to ? { line: `Move the pointer to ${to}`, coordinates: true } : null;
|
|
580
|
-
}
|
|
581
|
-
case 'mouse_click': {
|
|
582
|
-
const at = point(item.at);
|
|
583
|
-
return fields('at', 'button') && at && text(item.button)
|
|
584
|
-
? { line: `Click ${item.button} at ${at}`, coordinates: true }
|
|
585
|
-
: null;
|
|
586
|
-
}
|
|
587
|
-
case 'mouse_drag': {
|
|
588
|
-
const from = point(item.from);
|
|
589
|
-
const to = point(item.to);
|
|
590
|
-
return fields('from', 'to', 'button') && from && to && text(item.button)
|
|
591
|
-
? { line: `Drag ${item.button} from ${from} to ${to}`, coordinates: true }
|
|
592
|
-
: null;
|
|
593
|
-
}
|
|
594
|
-
case 'scroll': {
|
|
595
|
-
const at = point(item.at);
|
|
596
|
-
return fields('at', 'direction', 'amount') &&
|
|
597
|
-
at &&
|
|
598
|
-
text(item.direction) &&
|
|
599
|
-
Number.isInteger(item.amount)
|
|
600
|
-
? { line: `Scroll ${item.direction} ${item.amount} at ${at}`, coordinates: true }
|
|
601
|
-
: null;
|
|
602
|
-
}
|
|
603
|
-
case 'ui_snapshot':
|
|
604
|
-
return fields('window_id') && (item.window_id === undefined || text(item.window_id))
|
|
605
|
-
? {
|
|
606
|
-
line: item.window_id === undefined
|
|
607
|
-
? 'Read the controls of the window in front'
|
|
608
|
-
: `Read the controls of window ${JSON.stringify(item.window_id)}`,
|
|
609
|
-
coordinates: false,
|
|
610
|
-
}
|
|
611
|
-
: null;
|
|
612
|
-
case 'ui_act': {
|
|
613
|
-
if (!fields('ref', 'action', 'value') || !text(item.ref) || !text(item.action))
|
|
614
|
-
return null;
|
|
615
|
-
if (item.value !== undefined && !text(item.value))
|
|
616
|
-
return null;
|
|
617
|
-
// The application's own words for the control, as the session's tool
|
|
618
|
-
// last read them; the ref stays, since that is what runs.
|
|
619
|
-
const target = context.describeUiRef?.(item.ref) ?? `control ${item.ref}`;
|
|
620
|
-
if (item.action === 'set_value')
|
|
621
|
-
return {
|
|
622
|
-
line: `Set ${target} to ${JSON.stringify(item.value ?? '')}`,
|
|
623
|
-
coordinates: false,
|
|
624
|
-
};
|
|
625
|
-
const verb = UI_ACT_VERBS[item.action];
|
|
626
|
-
return verb ? { line: `${verb} ${target}`, coordinates: false } : null;
|
|
627
|
-
}
|
|
628
|
-
case 'zoom': {
|
|
629
|
-
const region = item.region;
|
|
630
|
-
return fields('region') &&
|
|
631
|
-
isRecord(region) &&
|
|
632
|
-
Object.keys(region).every((key) => ['x', 'y', 'width', 'height'].includes(key)) &&
|
|
633
|
-
['x', 'y', 'width', 'height'].every((key) => Number.isInteger(region[key]))
|
|
634
|
-
? {
|
|
635
|
-
line: `Zoom into ${region.width}x${region.height} at (${region.x}, ${region.y})`,
|
|
636
|
-
coordinates: true,
|
|
637
|
-
}
|
|
638
|
-
: null;
|
|
639
|
-
}
|
|
640
|
-
default:
|
|
641
|
-
return null;
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
const PLAIN_TOOL_NAME = /^[\w.:-]+$/u;
|
|
645
|
-
/** The tools with a formatter above; an evolved shape of one opens exact-first. */
|
|
646
|
-
const FORMATTED_TOOLS = new Set([
|
|
647
|
-
'bash',
|
|
648
|
-
'edit',
|
|
649
|
-
'write',
|
|
650
|
-
'Agent',
|
|
651
|
-
'computer_use',
|
|
652
|
-
]);
|
|
653
|
-
/** Labels group only the calls in this approval; they never invent execution phases. */
|
|
654
|
-
function compactAgentPlan(calls) {
|
|
655
|
-
const lines = [];
|
|
656
|
-
let previousGroup = '';
|
|
657
|
-
for (const [index, call] of calls.entries()) {
|
|
658
|
-
const input = call.input;
|
|
659
|
-
const workflow = typeof input.workflow === 'string' ? oneLine(input.workflow) : '';
|
|
660
|
-
const phase = typeof input.phase === 'string' ? oneLine(input.phase) : '';
|
|
661
|
-
const phaseDetail = typeof input.phase_detail === 'string' ? oneLine(input.phase_detail) : '';
|
|
662
|
-
// Grouping key stays workflow+phase only, matching the cockpit's phase
|
|
663
|
-
// identity; the detail shown is whichever call in the group declared it
|
|
664
|
-
// first, the same first-writer-wins rule the monitor applies.
|
|
665
|
-
const group = JSON.stringify([workflow, phase]);
|
|
666
|
-
if (group !== previousGroup) {
|
|
667
|
-
if (workflow || phase) {
|
|
668
|
-
lines.push([workflow, phase].filter(Boolean).join(' / '));
|
|
669
|
-
if (phaseDetail)
|
|
670
|
-
lines.push(` ${phaseDetail}`);
|
|
671
|
-
}
|
|
672
|
-
else if (previousGroup)
|
|
673
|
-
lines.push('Other agents');
|
|
674
|
-
previousGroup = group;
|
|
675
|
-
}
|
|
676
|
-
const type = input.subagent_type;
|
|
677
|
-
const access = type === 'explore'
|
|
678
|
-
? 'read-only'
|
|
679
|
-
: type === undefined || type === 'general-purpose'
|
|
680
|
-
? 'files + commands'
|
|
681
|
-
: String(type);
|
|
682
|
-
const background = input.run_in_background === true ? ' · background' : '';
|
|
683
|
-
const selection = [input.provider, input.model, input.effort]
|
|
684
|
-
.filter((value) => typeof value === 'string')
|
|
685
|
-
.map((value) => oneLine(String(value)))
|
|
686
|
-
.join(' / ');
|
|
687
|
-
const modelLabel = selection ? ` · ${selection}` : '';
|
|
688
|
-
lines.push(`${index === calls.length - 1 ? '└' : '├'}─ [ ${index + 1}. ${oneLine(String(input.description))} · ${access}${modelLabel}${background}${call.isDestructive ? ' · destructive' : ''} ]`);
|
|
689
|
-
}
|
|
690
|
-
return terminalDisplayText(lines.join('\n'));
|
|
691
|
-
}
|
|
692
|
-
function agentTypeLabel(type) {
|
|
693
|
-
if (type === undefined)
|
|
694
|
-
return 'general-purpose (default)';
|
|
695
|
-
if (type === 'explore')
|
|
696
|
-
return 'explore (read-only tools)';
|
|
697
|
-
return type;
|
|
698
|
-
}
|
|
699
|
-
function oneLine(value) {
|
|
700
|
-
return value.replace(/\s+/gu, ' ').trim() || '(untitled task)';
|
|
701
|
-
}
|
|
702
|
-
/** Lines of one side of a change shown before the rest is counted. */
|
|
703
|
-
const DIFF_PREVIEW_LINES = 40;
|
|
704
|
-
/**
|
|
705
|
-
* One side of a change as review lines: `- old` / `+ new`, one per source
|
|
706
|
-
* line, cut at `DIFF_PREVIEW_LINES` with the remainder counted. The prefix is
|
|
707
|
-
* what the overlay colours on; the exact view (`d`) still has every byte.
|
|
708
|
-
*/
|
|
709
|
-
function diffLines(sign, lines) {
|
|
710
|
-
const shown = lines.slice(0, DIFF_PREVIEW_LINES).map((line) => `${sign} ${line}`);
|
|
711
|
-
const hidden = lines.length - shown.length;
|
|
712
|
-
return hidden > 0 ? [...shown, `${sign} … ${hidden} more line${hidden === 1 ? '' : 's'}`] : shown;
|
|
713
|
-
}
|
|
714
|
-
/**
|
|
715
|
-
* An `edit` as the change it makes, not as the JSON it arrived in.
|
|
716
|
-
*
|
|
717
|
-
* The tool has three shapes — one replacement (`old_string`/`new_string`, with
|
|
718
|
-
* the `oldStr`/`newStr` aliases), an insertion (`insertLine` + new text), and a
|
|
719
|
-
* list of replacements (`edits`) applied as one write — and each becomes `-`
|
|
720
|
-
* and `+` lines under the path. Returns `null` for a shape this does not know
|
|
721
|
-
* so the caller falls through to the exact-input view rather than showing a
|
|
722
|
-
* half of the call.
|
|
723
|
-
*/
|
|
724
|
-
function summarizeEdit(input) {
|
|
725
|
-
const allowed = new Set([
|
|
726
|
-
'path',
|
|
727
|
-
'old_string',
|
|
728
|
-
'oldStr',
|
|
729
|
-
'new_string',
|
|
730
|
-
'newStr',
|
|
731
|
-
'insertLine',
|
|
732
|
-
'replace_all',
|
|
733
|
-
'edits',
|
|
734
|
-
]);
|
|
735
|
-
if (!Object.keys(input).every((key) => allowed.has(key)))
|
|
736
|
-
return null;
|
|
737
|
-
if (typeof input.path !== 'string')
|
|
738
|
-
return null;
|
|
739
|
-
const path = input.path;
|
|
740
|
-
const oldText = pickString(input, 'old_string', 'oldStr');
|
|
741
|
-
const newText = pickString(input, 'new_string', 'newStr');
|
|
742
|
-
if (oldText === undefined || newText === undefined)
|
|
743
|
-
return null;
|
|
744
|
-
const replaceAll = input.replace_all;
|
|
745
|
-
if (replaceAll !== undefined && typeof replaceAll !== 'boolean')
|
|
746
|
-
return null;
|
|
747
|
-
// A list of replacements, applied together.
|
|
748
|
-
if (input.edits !== undefined) {
|
|
749
|
-
if (!Array.isArray(input.edits) || oldText.value !== null || newText.value !== null)
|
|
750
|
-
return null;
|
|
751
|
-
const lines = [
|
|
752
|
-
`${path} · ${input.edits.length} replacement${input.edits.length === 1 ? '' : 's'}`,
|
|
753
|
-
];
|
|
754
|
-
for (const [index, edit] of input.edits.entries()) {
|
|
755
|
-
if (!isRecord(edit) ||
|
|
756
|
-
typeof edit.old_string !== 'string' ||
|
|
757
|
-
typeof edit.new_string !== 'string') {
|
|
758
|
-
return null;
|
|
759
|
-
}
|
|
760
|
-
if (edit.replace_all !== undefined && typeof edit.replace_all !== 'boolean')
|
|
761
|
-
return null;
|
|
762
|
-
if (!Object.keys(edit).every((key) => key === 'old_string' || key === 'new_string' || key === 'replace_all')) {
|
|
763
|
-
return null;
|
|
764
|
-
}
|
|
765
|
-
lines.push(`@ ${index + 1}${edit.replace_all ? ' · every occurrence' : ''}`);
|
|
766
|
-
lines.push(...diffLines('-', edit.old_string.split('\n')));
|
|
767
|
-
lines.push(...diffLines('+', edit.new_string.split('\n')));
|
|
768
|
-
}
|
|
769
|
-
return { lines, complete: true };
|
|
770
|
-
}
|
|
771
|
-
// An insertion: new text at a line, nothing removed.
|
|
772
|
-
if (input.insertLine !== undefined) {
|
|
773
|
-
const at = input.insertLine;
|
|
774
|
-
if (at !== 'end' && !(typeof at === 'number' && Number.isSafeInteger(at)))
|
|
775
|
-
return null;
|
|
776
|
-
if (oldText.value !== null || newText.value === null)
|
|
777
|
-
return null;
|
|
778
|
-
return {
|
|
779
|
-
lines: [
|
|
780
|
-
`${path} · insert at ${at === 'end' ? 'end' : `line ${String(at)}`}`,
|
|
781
|
-
...diffLines('+', newText.value.split('\n')),
|
|
782
|
-
],
|
|
783
|
-
complete: true,
|
|
784
|
-
};
|
|
785
|
-
}
|
|
786
|
-
// One replacement.
|
|
787
|
-
if (oldText.value === null || newText.value === null)
|
|
788
|
-
return null;
|
|
789
|
-
return {
|
|
790
|
-
lines: [
|
|
791
|
-
`${path}${replaceAll ? ' · every occurrence' : ''}`,
|
|
792
|
-
...diffLines('-', oldText.value.split('\n')),
|
|
793
|
-
...diffLines('+', newText.value.split('\n')),
|
|
794
|
-
],
|
|
795
|
-
complete: true,
|
|
796
|
-
};
|
|
797
|
-
}
|
|
798
|
-
/**
|
|
799
|
-
* A field that has two spellings. `undefined` when both are present or one
|
|
800
|
-
* is not a string — an evolved shape — and `{ value: null }` when neither is.
|
|
801
|
-
*/
|
|
802
|
-
function pickString(input, name, alias) {
|
|
803
|
-
const a = input[name];
|
|
804
|
-
const b = input[alias];
|
|
805
|
-
if (a !== undefined && b !== undefined)
|
|
806
|
-
return undefined;
|
|
807
|
-
const value = a ?? b;
|
|
808
|
-
if (value === undefined)
|
|
809
|
-
return { value: null };
|
|
810
|
-
return typeof value === 'string' ? { value } : undefined;
|
|
811
|
-
}
|
|
812
|
-
/** Keep multi-line model input readable without making continuation lines look like new fields. */
|
|
813
|
-
function readableField(label, value) {
|
|
814
|
-
const lines = value.split('\n');
|
|
815
|
-
return lines.map((line, index) => index === 0 ? `${label}: ${line}` : `${' '.repeat(label.length + 2)}${line}`);
|
|
816
|
-
}
|
|
817
|
-
function isRecord(value) {
|
|
818
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
819
|
-
}
|
|
820
|
-
/**
|
|
821
|
-
* Project and wrap exact review text into PHYSICAL terminal rows.
|
|
822
|
-
*
|
|
823
|
-
* JSON strings can contain thousands of characters on one logical line. Ink
|
|
824
|
-
* would wrap that line after pagination, leaving the suffix below the viewport
|
|
825
|
-
* while the pager still believed there was only one row. Wrapping first makes
|
|
826
|
-
* the pager's unit the same row the operator sees. Non-ASCII code points count
|
|
827
|
-
* conservatively as two cells; overestimating produces shorter rows, never a
|
|
828
|
-
* hidden tail.
|
|
829
|
-
*/
|
|
830
|
-
export function permissionReviewRows(review, terminalColumns) {
|
|
831
|
-
// App padding (2), border (2), horizontal padding (2), inner indentation
|
|
832
|
-
// (2) and the row marker (2) are outside the source text. Keep wrapping at
|
|
833
|
-
// one cell even in an unusually narrow terminal; truncating would make the
|
|
834
|
-
// exact approval envelope incomplete precisely where it matters most.
|
|
835
|
-
const width = Math.max(1, (terminalColumns ?? 80) - 10);
|
|
836
|
-
const visible = terminalDisplayText(review);
|
|
837
|
-
const rows = [];
|
|
838
|
-
for (const logical of visible.split('\n')) {
|
|
839
|
-
let text = '';
|
|
840
|
-
let cells = 0;
|
|
841
|
-
let continuation = false;
|
|
842
|
-
for (const point of logical) {
|
|
843
|
-
const codePoint = point.codePointAt(0);
|
|
844
|
-
const pointCells = codePoint !== undefined && codePoint <= 0x7e ? 1 : 2;
|
|
845
|
-
if (text.length > 0 && cells + pointCells > width) {
|
|
846
|
-
rows.push({ index: rows.length, text, continuation });
|
|
847
|
-
text = '';
|
|
848
|
-
cells = 0;
|
|
849
|
-
continuation = true;
|
|
850
|
-
}
|
|
851
|
-
text += point;
|
|
852
|
-
cells += pointCells;
|
|
853
|
-
}
|
|
854
|
-
rows.push({ index: rows.length, text, continuation });
|
|
855
|
-
}
|
|
856
|
-
return rows;
|
|
857
|
-
}
|
|
858
|
-
//# sourceMappingURL=permission-review.js.map
|