@namzu/cli 35.0.0 → 36.1.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 +764 -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-5CWS2GLJ.js +13448 -0
- package/dist/chunks/acp-5CWS2GLJ.js.map +6 -0
- package/dist/chunks/activity-command-HK7YJTXV.js +262 -0
- package/dist/chunks/activity-command-HK7YJTXV.js.map +6 -0
- package/dist/chunks/add-ULH5DUNX.js +712 -0
- package/dist/chunks/add-ULH5DUNX.js.map +6 -0
- package/dist/chunks/agent-UEK2U3RE.js +87 -0
- package/dist/chunks/agent-UEK2U3RE.js.map +6 -0
- package/dist/chunks/agent-session-V7JRTODS.js +46 -0
- package/dist/chunks/agent-session-V7JRTODS.js.map +6 -0
- package/dist/chunks/archive-C4A3HPLF.js +84 -0
- package/dist/chunks/archive-C4A3HPLF.js.map +6 -0
- package/dist/chunks/bin-main-EEJHRDIC.js +126 -0
- package/dist/chunks/bin-main-EEJHRDIC.js.map +6 -0
- package/dist/chunks/browser-CRX4HM4C.js +31 -0
- package/dist/chunks/browser-CRX4HM4C.js.map +6 -0
- package/dist/chunks/chat-FVBATC4E.js +101 -0
- package/dist/chunks/chat-FVBATC4E.js.map +6 -0
- package/dist/chunks/chunk-2A37JQKY.js +1355 -0
- package/dist/chunks/chunk-2A37JQKY.js.map +6 -0
- package/dist/chunks/chunk-2NJ2XUXJ.js +283 -0
- package/dist/chunks/chunk-2NJ2XUXJ.js.map +6 -0
- package/dist/chunks/chunk-4HAE7PYX.js +74 -0
- package/dist/chunks/chunk-4HAE7PYX.js.map +6 -0
- package/dist/chunks/chunk-5GRV6P5C.js +69 -0
- package/dist/chunks/chunk-5GRV6P5C.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-62I7HLAP.js +1142 -0
- package/dist/chunks/chunk-62I7HLAP.js.map +6 -0
- package/dist/chunks/chunk-63CGV3XY.js +161 -0
- package/dist/chunks/chunk-63CGV3XY.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-6YG7D7U4.js +159 -0
- package/dist/chunks/chunk-6YG7D7U4.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-7WJOQ6EA.js +106 -0
- package/dist/chunks/chunk-7WJOQ6EA.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-A5DWGNGR.js +73 -0
- package/dist/chunks/chunk-A5DWGNGR.js.map +6 -0
- package/dist/chunks/chunk-A5UXODFL.js +76 -0
- package/dist/chunks/chunk-A5UXODFL.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-AIY4PCDR.js +164 -0
- package/dist/chunks/chunk-AIY4PCDR.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-AN7FO7NS.js +247 -0
- package/dist/chunks/chunk-AN7FO7NS.js.map +6 -0
- package/dist/chunks/chunk-AXIGFKJF.js +34 -0
- package/dist/chunks/chunk-AXIGFKJF.js.map +6 -0
- package/dist/chunks/chunk-C5WBEO3X.js +46 -0
- package/dist/chunks/chunk-C5WBEO3X.js.map +6 -0
- package/dist/chunks/chunk-C5XYHYMX.js +675 -0
- package/dist/chunks/chunk-C5XYHYMX.js.map +6 -0
- package/dist/chunks/chunk-CG65NUSJ.js +115 -0
- package/dist/chunks/chunk-CG65NUSJ.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-E5VLANCO.js +101 -0
- package/dist/chunks/chunk-E5VLANCO.js.map +6 -0
- package/dist/chunks/chunk-EBOHVFOB.js +648 -0
- package/dist/chunks/chunk-EBOHVFOB.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-EIYM6TY7.js +1479 -0
- package/dist/chunks/chunk-EIYM6TY7.js.map +6 -0
- package/dist/chunks/chunk-EWKJGHRO.js +82559 -0
- package/dist/chunks/chunk-EWKJGHRO.js.map +6 -0
- package/dist/chunks/chunk-EY7UNVER.js +311 -0
- package/dist/chunks/chunk-EY7UNVER.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-FXS3AG6B.js +25326 -0
- package/dist/chunks/chunk-FXS3AG6B.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-GMCOZ3CU.js +245 -0
- package/dist/chunks/chunk-GMCOZ3CU.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-HBBB2CAC.js +75 -0
- package/dist/chunks/chunk-HBBB2CAC.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-HFJHHCTY.js +303 -0
- package/dist/chunks/chunk-HFJHHCTY.js.map +6 -0
- package/dist/chunks/chunk-HPMWYIBY.js +773 -0
- package/dist/chunks/chunk-HPMWYIBY.js.map +6 -0
- package/dist/chunks/chunk-HQM2WSQT.js +106 -0
- package/dist/chunks/chunk-HQM2WSQT.js.map +6 -0
- package/dist/chunks/chunk-ITZK4B66.js +787 -0
- package/dist/chunks/chunk-ITZK4B66.js.map +6 -0
- package/dist/chunks/chunk-J72CRUNX.js +154 -0
- package/dist/chunks/chunk-J72CRUNX.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-JPPC4LJF.js +271 -0
- package/dist/chunks/chunk-JPPC4LJF.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-K76WV7TN.js +71 -0
- package/dist/chunks/chunk-K76WV7TN.js.map +6 -0
- package/dist/chunks/chunk-KCWUQRZV.js +828 -0
- package/dist/chunks/chunk-KCWUQRZV.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-KU3W6IHV.js +109 -0
- package/dist/chunks/chunk-KU3W6IHV.js.map +6 -0
- package/dist/chunks/chunk-LQMHASKR.js +171 -0
- package/dist/chunks/chunk-LQMHASKR.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-MZP6SH3M.js +3497 -0
- package/dist/chunks/chunk-MZP6SH3M.js.map +6 -0
- package/dist/chunks/chunk-N5IF64K3.js +1858 -0
- package/dist/chunks/chunk-N5IF64K3.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-NQY5P2EB.js +20 -0
- package/dist/chunks/chunk-NQY5P2EB.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-O7DBCVNY.js +110 -0
- package/dist/chunks/chunk-O7DBCVNY.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-OLPOM3DR.js +127 -0
- package/dist/chunks/chunk-OLPOM3DR.js.map +6 -0
- package/dist/chunks/chunk-PYG7DZ2D.js +380 -0
- package/dist/chunks/chunk-PYG7DZ2D.js.map +6 -0
- package/dist/chunks/chunk-Q24K7536.js +661 -0
- package/dist/chunks/chunk-Q24K7536.js.map +6 -0
- package/dist/chunks/chunk-Q5YM2GCX.js +283 -0
- package/dist/chunks/chunk-Q5YM2GCX.js.map +6 -0
- package/dist/chunks/chunk-R7DCDBRN.js +106 -0
- package/dist/chunks/chunk-R7DCDBRN.js.map +6 -0
- package/dist/chunks/chunk-RC6X3ZY6.js +1439 -0
- package/dist/chunks/chunk-RC6X3ZY6.js.map +6 -0
- package/dist/chunks/chunk-SGS435PR.js +11111 -0
- package/dist/chunks/chunk-SGS435PR.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-SRU3MDHZ.js +75 -0
- package/dist/chunks/chunk-SRU3MDHZ.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-THZXXVHM.js +2953 -0
- package/dist/chunks/chunk-THZXXVHM.js.map +6 -0
- package/dist/chunks/chunk-TIGWWAJI.js +765 -0
- package/dist/chunks/chunk-TIGWWAJI.js.map +6 -0
- package/dist/chunks/chunk-UDBEU2FR.js +97 -0
- package/dist/chunks/chunk-UDBEU2FR.js.map +6 -0
- package/dist/chunks/chunk-UOOQPODR.js +257 -0
- package/dist/chunks/chunk-UOOQPODR.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-UWWGSDZ5.js +134 -0
- package/dist/chunks/chunk-UWWGSDZ5.js.map +6 -0
- package/dist/chunks/chunk-UXVYJWN5.js +1373 -0
- package/dist/chunks/chunk-UXVYJWN5.js.map +6 -0
- package/dist/chunks/chunk-V7TQR6AR.js +818 -0
- package/dist/chunks/chunk-V7TQR6AR.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-WATMFOHB.js +319 -0
- package/dist/chunks/chunk-WATMFOHB.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-WM2JEUGV.js +207 -0
- package/dist/chunks/chunk-WM2JEUGV.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-XHOD3RDN.js +517 -0
- package/dist/chunks/chunk-XHOD3RDN.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-ZKEWE6K4.js +399 -0
- package/dist/chunks/chunk-ZKEWE6K4.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-7YAOEJGS.js +129 -0
- package/dist/chunks/cli-runtime-7YAOEJGS.js.map +6 -0
- package/dist/chunks/commands-QPVRB3RK.js +21 -0
- package/dist/chunks/commands-QPVRB3RK.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-S3BTEPYR.js +21 -0
- package/dist/chunks/crash-report-S3BTEPYR.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-3GJFRS2X.js +520 -0
- package/dist/chunks/dist-3GJFRS2X.js.map +6 -0
- package/dist/chunks/dist-BFC7XUCT.js +555 -0
- package/dist/chunks/dist-BFC7XUCT.js.map +6 -0
- package/dist/chunks/dist-ERN5DRKK.js +1415 -0
- package/dist/chunks/dist-ERN5DRKK.js.map +6 -0
- package/dist/chunks/dist-EY3OJBQH.js +1339 -0
- package/dist/chunks/dist-EY3OJBQH.js.map +6 -0
- package/dist/chunks/dist-G42HPNIE.js +514 -0
- package/dist/chunks/dist-G42HPNIE.js.map +6 -0
- package/dist/chunks/dist-SKRHHPUR.js +1018 -0
- package/dist/chunks/dist-SKRHHPUR.js.map +6 -0
- package/dist/chunks/dist-Z47L7ZAJ.js +40654 -0
- package/dist/chunks/dist-Z47L7ZAJ.js.map +6 -0
- package/dist/chunks/doctor-IE3PLXZK.js +28 -0
- package/dist/chunks/doctor-IE3PLXZK.js.map +6 -0
- package/dist/chunks/drain-ESXUKOE6.js +471 -0
- package/dist/chunks/drain-ESXUKOE6.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-53UONRWR.js +187 -0
- package/dist/chunks/eval-53UONRWR.js.map +6 -0
- package/dist/chunks/exec-COV235L5.js +1284 -0
- package/dist/chunks/exec-COV235L5.js.map +6 -0
- package/dist/chunks/home-QS7RBP34.js +16 -0
- package/dist/chunks/home-QS7RBP34.js.map +6 -0
- package/dist/chunks/host-queries-LDEBHKBX.js +152 -0
- package/dist/chunks/host-queries-LDEBHKBX.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-6NF6NJNV.js +63 -0
- package/dist/chunks/lifecycle-6NF6NJNV.js.map +6 -0
- package/dist/chunks/list-DQZU7NEF.js +293 -0
- package/dist/chunks/list-DQZU7NEF.js.map +6 -0
- package/dist/chunks/login-IQGNP5XY.js +29 -0
- package/dist/chunks/login-IQGNP5XY.js.map +6 -0
- package/dist/chunks/logs-KSG7SFAB.js +116 -0
- package/dist/chunks/logs-KSG7SFAB.js.map +6 -0
- package/dist/chunks/mcp-WFXKXGNM.js +763 -0
- package/dist/chunks/mcp-WFXKXGNM.js.map +6 -0
- package/dist/chunks/message-command-O7ZH4I4C.js +170 -0
- package/dist/chunks/message-command-O7ZH4I4C.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-LTPV3CH5.js +115 -0
- package/dist/chunks/operator-tools-LTPV3CH5.js.map +6 -0
- package/dist/chunks/output-schema-UM3P5AOR.js +11 -0
- package/dist/chunks/output-schema-UM3P5AOR.js.map +6 -0
- package/dist/chunks/pal-GBYJHBP3.js +200 -0
- package/dist/chunks/pal-GBYJHBP3.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-J42J2PDA.js +160 -0
- package/dist/chunks/providers-J42J2PDA.js.map +6 -0
- package/dist/chunks/resident-7D6IM5LP.js +1314 -0
- package/dist/chunks/resident-7D6IM5LP.js.map +6 -0
- package/dist/chunks/resume-command-XZWGUXRK.js +22 -0
- package/dist/chunks/resume-command-XZWGUXRK.js.map +6 -0
- package/dist/chunks/schedule-JLIOF3MS.js +143 -0
- package/dist/chunks/schedule-JLIOF3MS.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-YBU5VTKQ.js +1633 -0
- package/dist/chunks/service-YBU5VTKQ.js.map +6 -0
- package/dist/chunks/session-step-2HJSIJNN.js +26 -0
- package/dist/chunks/session-step-2HJSIJNN.js.map +6 -0
- package/dist/chunks/skills-HV2MOBEW.js +282 -0
- package/dist/chunks/skills-HV2MOBEW.js.map +6 -0
- package/dist/chunks/state-6HV3D3O4.js +717 -0
- package/dist/chunks/state-6HV3D3O4.js.map +6 -0
- package/dist/chunks/store-6J2MUGON.js +82 -0
- package/dist/chunks/store-6J2MUGON.js.map +6 -0
- package/dist/chunks/store-GDP2EW27.js +34 -0
- package/dist/chunks/store-GDP2EW27.js.map +6 -0
- package/dist/chunks/store-VXNKMMNW.js +42 -0
- package/dist/chunks/store-VXNKMMNW.js.map +6 -0
- package/dist/chunks/tui-DDWX2WYH.js +56903 -0
- package/dist/chunks/tui-DDWX2WYH.js.map +6 -0
- package/dist/chunks/upgrade-MC5JB7DK.js +315 -0
- package/dist/chunks/upgrade-MC5JB7DK.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-6YPRX6SU.js +116 -0
- package/dist/chunks/worktree-6YPRX6SU.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 +21 -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 +3 -0
- package/dist/tui/Transcript.d.ts.map +1 -1
- package/dist/tui/TranscriptScrollView.d.ts +23 -0
- package/dist/tui/TranscriptScrollView.d.ts.map +1 -0
- 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/transcript-scroll.d.ts +73 -0
- package/dist/tui/transcript-scroll.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,657 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `~/.namzu/credentials.json` — the subscription credential namzu obtained itself.
|
|
3
|
-
*
|
|
4
|
-
* ## Why a file, said as a choice rather than a default
|
|
5
|
-
*
|
|
6
|
-
* The durable home a credential deserves is the operating system's own secret
|
|
7
|
-
* store. namzu does not have one. The helper next door reads the macOS login
|
|
8
|
-
* Keychain and belongs to a DIFFERENT product's entry — namzu borrows a token
|
|
9
|
-
* from it — so writing namzu's own secret there would file our secret under
|
|
10
|
-
* somebody else's name. On the platform this was asked for the store is not
|
|
11
|
-
* that one at all, and no cross-platform binding exists in this package.
|
|
12
|
-
*
|
|
13
|
-
* So the options were: ship no durable credential, bind a native store per
|
|
14
|
-
* platform, or own a file. This owns a file, and pays for it by making the
|
|
15
|
-
* file's protection a CHECKED property rather than an assumption:
|
|
16
|
-
*
|
|
17
|
-
* - it is created `0600` from birth (`wx` + mode, never a world-readable
|
|
18
|
-
* window), inside a `0700` directory;
|
|
19
|
-
* - after writing, the protection is READ BACK and asserted;
|
|
20
|
-
* - if the assertion cannot be made, the file is deleted and the write
|
|
21
|
-
* throws. A credential store that cannot prove it is private is a worse
|
|
22
|
-
* outcome than no credential store, and refusing is the rule this
|
|
23
|
-
* repository already holds ("refuse do not degrade").
|
|
24
|
-
*
|
|
25
|
-
* The assertion is per-platform because the underlying protection is:
|
|
26
|
-
*
|
|
27
|
-
* - POSIX: `chmod 0600`, then `stat` and require no group/other bits.
|
|
28
|
-
* - Windows: POSIX modes do not exist — `fs.chmod` there only toggles the
|
|
29
|
-
* read-only attribute, so a `0600` that "succeeded" would prove nothing.
|
|
30
|
-
* The equivalent is a discretionary ACL, so inheritance is removed and a
|
|
31
|
-
* full-control entry is granted to the current user's SID; the ACL is then
|
|
32
|
-
* saved back as SDDL and checked for access by that user. An existing
|
|
33
|
-
* LocalSystem grant is permitted; grants to other accounts are refused.
|
|
34
|
-
*
|
|
35
|
-
* ## What is in the file
|
|
36
|
-
*
|
|
37
|
-
* { "version": 1,
|
|
38
|
-
* "subscription": { "accessToken", "refreshToken", "expiresAt", "scopes" },
|
|
39
|
-
* "codexSubscription": { "accessToken", "refreshToken", "expiresAt", "accountId" } }
|
|
40
|
-
*
|
|
41
|
-
* Each sibling is owned by Namzu's corresponding login flow and conditionally
|
|
42
|
-
* refreshed in place. Credentials borrowed from Claude or Codex remain in
|
|
43
|
-
* their owners' files/keychain and are never copied here.
|
|
44
|
-
*/
|
|
45
|
-
import { execFileSync } from 'node:child_process';
|
|
46
|
-
import { randomBytes } from 'node:crypto';
|
|
47
|
-
import { closeSync, fsyncSync, linkSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, writeSync, } from 'node:fs';
|
|
48
|
-
import { platform, tmpdir } from 'node:os';
|
|
49
|
-
import { basename, dirname, join } from 'node:path';
|
|
50
|
-
import { namzuHomePath } from '../state/home.js';
|
|
51
|
-
const FILE_MODE = 0o600;
|
|
52
|
-
const DIR_MODE = 0o700;
|
|
53
|
-
export const CREDENTIALS_FILE_VERSION = 1;
|
|
54
|
-
/** Thrown when a credential could not be stored *privately*. Never carries a secret. */
|
|
55
|
-
export class CredentialStoreError extends Error {
|
|
56
|
-
name = 'CredentialStoreError';
|
|
57
|
-
}
|
|
58
|
-
export function credentialsPath(home) {
|
|
59
|
-
return join(namzuHomePath(home), 'credentials.json');
|
|
60
|
-
}
|
|
61
|
-
/** Kept separate from subscriptions so older credentials.json writers cannot erase it. */
|
|
62
|
-
export function googleApiKeyPath(home) {
|
|
63
|
-
return join(namzuHomePath(home), 'gemini-api-key.json');
|
|
64
|
-
}
|
|
65
|
-
/** Return only a Namzu-owned, private Gemini API key. Never read a symlink. */
|
|
66
|
-
export function readStoredGeminiApiKey(home) {
|
|
67
|
-
const path = googleApiKeyPath(home);
|
|
68
|
-
try {
|
|
69
|
-
protectCredentialParentOnWindows(path);
|
|
70
|
-
const entry = lstatSync(path);
|
|
71
|
-
if (!entry.isFile() || entry.isSymbolicLink())
|
|
72
|
-
return null;
|
|
73
|
-
restrictToOwner(path);
|
|
74
|
-
const parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
75
|
-
if (typeof parsed !== 'object' || parsed === null)
|
|
76
|
-
return null;
|
|
77
|
-
const record = parsed;
|
|
78
|
-
return record.version === 1 && typeof record.apiKey === 'string' && record.apiKey.trim()
|
|
79
|
-
? record.apiKey
|
|
80
|
-
: null;
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/** Atomically publish a verified-private key after a usable Google session opens. */
|
|
87
|
-
export function writeStoredGeminiApiKey(apiKey, home) {
|
|
88
|
-
if (!apiKey.trim())
|
|
89
|
-
throw new CredentialStoreError('Cannot store an empty Gemini API key.');
|
|
90
|
-
const path = googleApiKeyPath(home);
|
|
91
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
92
|
-
return withCredentialStoreLock(path, () => writeCredentialBodyUnlocked(`${JSON.stringify({ version: 1, apiKey })}\n`, path));
|
|
93
|
-
}
|
|
94
|
-
/** Remove Namzu's Gemini key without changing environment or Gemini CLI credentials. */
|
|
95
|
-
export function clearStoredGeminiApiKey(home) {
|
|
96
|
-
const path = googleApiKeyPath(home);
|
|
97
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
98
|
-
withCredentialStoreLock(path, () => rmSync(path, { force: true }));
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* The stored subscription credential, or `null` when there is none.
|
|
102
|
-
*
|
|
103
|
-
* Non-throwing on every shape of absence and corruption — a store that
|
|
104
|
-
* refuses to parse is "no credential", which is what discovery can act on.
|
|
105
|
-
* It does NOT swallow a permission error into `null` silently; that is still
|
|
106
|
-
* absence from the reader's point of view, and the login path is what tells
|
|
107
|
-
* the operator to try again.
|
|
108
|
-
*/
|
|
109
|
-
export function readStoredSubscriptionCredential(home) {
|
|
110
|
-
return readCredentialDocument(home)?.subscription ?? null;
|
|
111
|
-
}
|
|
112
|
-
/** The Namzu-owned ChatGPT/Codex subscription, if one was obtained here. */
|
|
113
|
-
export function readStoredCodexCredential(home) {
|
|
114
|
-
return readCredentialDocument(home)?.codexSubscription ?? null;
|
|
115
|
-
}
|
|
116
|
-
function readCredentialDocument(home) {
|
|
117
|
-
let raw;
|
|
118
|
-
try {
|
|
119
|
-
raw = readFileSync(credentialsPath(home), 'utf8');
|
|
120
|
-
}
|
|
121
|
-
catch {
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
let parsed;
|
|
125
|
-
try {
|
|
126
|
-
parsed = JSON.parse(raw);
|
|
127
|
-
}
|
|
128
|
-
catch {
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
if (typeof parsed !== 'object' || parsed === null)
|
|
132
|
-
return null;
|
|
133
|
-
const root = parsed;
|
|
134
|
-
const subscription = parseCredential(root.subscription);
|
|
135
|
-
const codexBase = parseCredential(root.codexSubscription);
|
|
136
|
-
const codexRecord = typeof root.codexSubscription === 'object' && root.codexSubscription !== null
|
|
137
|
-
? root.codexSubscription
|
|
138
|
-
: null;
|
|
139
|
-
const accountId = codexRecord?.accountId;
|
|
140
|
-
const codexSubscription = codexBase && typeof accountId === 'string' && accountId.length > 0
|
|
141
|
-
? { ...codexBase, accountId }
|
|
142
|
-
: undefined;
|
|
143
|
-
if (!subscription && !codexSubscription)
|
|
144
|
-
return null;
|
|
145
|
-
return {
|
|
146
|
-
version: CREDENTIALS_FILE_VERSION,
|
|
147
|
-
...(subscription ? { subscription } : {}),
|
|
148
|
-
...(codexSubscription ? { codexSubscription } : {}),
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
function parseCredential(value) {
|
|
152
|
-
if (typeof value !== 'object' || value === null)
|
|
153
|
-
return null;
|
|
154
|
-
const rec = value;
|
|
155
|
-
const accessToken = rec.accessToken;
|
|
156
|
-
if (typeof accessToken !== 'string' || accessToken.length === 0)
|
|
157
|
-
return null;
|
|
158
|
-
return {
|
|
159
|
-
accessToken,
|
|
160
|
-
refreshToken: typeof rec.refreshToken === 'string' ? rec.refreshToken : undefined,
|
|
161
|
-
expiresAt: typeof rec.expiresAt === 'number' ? rec.expiresAt : undefined,
|
|
162
|
-
scopes: Array.isArray(rec.scopes)
|
|
163
|
-
? rec.scopes.filter((s) => typeof s === 'string')
|
|
164
|
-
: undefined,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Write the credential, privately, or throw having written nothing that lasts.
|
|
169
|
-
*
|
|
170
|
-
* Ordering matters and is the whole point: the temporary file is created with
|
|
171
|
-
* the restrictive mode, secured, asserted, and only then renamed into place.
|
|
172
|
-
* A file that appears at the final path and is tightened afterwards has a
|
|
173
|
-
* window in which it is readable, and that window is the defect this ordering
|
|
174
|
-
* removes.
|
|
175
|
-
*/
|
|
176
|
-
export function writeStoredSubscriptionCredential(cred, home) {
|
|
177
|
-
const path = credentialsPath(home);
|
|
178
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
179
|
-
return withCredentialStoreLock(path, () => {
|
|
180
|
-
const current = readCredentialDocument(home);
|
|
181
|
-
return writeCredentialDocumentUnlocked({ version: CREDENTIALS_FILE_VERSION, ...current, subscription: cred }, path);
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
export function writeStoredCodexCredential(cred, home) {
|
|
185
|
-
const path = credentialsPath(home);
|
|
186
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
187
|
-
return withCredentialStoreLock(path, () => {
|
|
188
|
-
const current = readCredentialDocument(home);
|
|
189
|
-
return writeCredentialDocumentUnlocked({
|
|
190
|
-
version: CREDENTIALS_FILE_VERSION,
|
|
191
|
-
...current,
|
|
192
|
-
codexSubscription: cred,
|
|
193
|
-
}, path);
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
export function replaceStoredCodexCredential(expected, replacement, home) {
|
|
197
|
-
const path = credentialsPath(home);
|
|
198
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
199
|
-
return withCredentialStoreLock(path, () => {
|
|
200
|
-
const current = readStoredCodexCredential(home);
|
|
201
|
-
if (!sameCodexCredential(current, expected))
|
|
202
|
-
return { replaced: false, current };
|
|
203
|
-
const document = readCredentialDocument(home);
|
|
204
|
-
writeCredentialDocumentUnlocked({
|
|
205
|
-
version: CREDENTIALS_FILE_VERSION,
|
|
206
|
-
...document,
|
|
207
|
-
codexSubscription: replacement,
|
|
208
|
-
}, path);
|
|
209
|
-
return { replaced: true, current: replacement };
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Replace exactly the credential a refresh was derived from.
|
|
214
|
-
*
|
|
215
|
-
* Comparison and rename happen under the same store-owned cross-process lock.
|
|
216
|
-
* A changed record is returned to the caller and is never overwritten. This is
|
|
217
|
-
* the durable authority boundary a post-network plain reread cannot provide:
|
|
218
|
-
* without the lock, another writer can still rotate the credential between
|
|
219
|
-
* the comparison and the rename.
|
|
220
|
-
*/
|
|
221
|
-
export function replaceStoredSubscriptionCredential(expected, replacement, home) {
|
|
222
|
-
const path = credentialsPath(home);
|
|
223
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
224
|
-
return withCredentialStoreLock(path, () => {
|
|
225
|
-
const current = readStoredSubscriptionCredential(home);
|
|
226
|
-
if (!sameCredential(current, expected))
|
|
227
|
-
return { replaced: false, current };
|
|
228
|
-
const document = readCredentialDocument(home);
|
|
229
|
-
writeCredentialDocumentUnlocked({
|
|
230
|
-
version: CREDENTIALS_FILE_VERSION,
|
|
231
|
-
...document,
|
|
232
|
-
subscription: replacement,
|
|
233
|
-
}, path);
|
|
234
|
-
return { replaced: true, current: replacement };
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
function writeCredentialDocumentUnlocked(document, path) {
|
|
238
|
-
const body = `${JSON.stringify(serializeDocument(document), null, 2)}\n`;
|
|
239
|
-
return writeCredentialBodyUnlocked(body, path);
|
|
240
|
-
}
|
|
241
|
-
function writeCredentialBodyUnlocked(body, path) {
|
|
242
|
-
const tmp = `${path}.tmp.${process.pid}.${randomBytes(6).toString('hex')}`;
|
|
243
|
-
let fd;
|
|
244
|
-
let placing = false;
|
|
245
|
-
try {
|
|
246
|
-
// `wx` — refuse an existing path rather than truncate one, so a name
|
|
247
|
-
// collision can never hand us a file somebody else already opened.
|
|
248
|
-
fd = openSync(tmp, 'wx', FILE_MODE);
|
|
249
|
-
// On Windows, `0600` does not govern the ACL. Prove the still-empty
|
|
250
|
-
// file is private before putting a credential into it.
|
|
251
|
-
restrictToOwner(tmp);
|
|
252
|
-
const bytes = Buffer.from(body, 'utf8');
|
|
253
|
-
for (let offset = 0; offset < bytes.length;) {
|
|
254
|
-
const written = writeSync(fd, bytes, offset, bytes.length - offset);
|
|
255
|
-
if (written <= 0 || written > bytes.length - offset) {
|
|
256
|
-
throw new Error('credential write did not make progress');
|
|
257
|
-
}
|
|
258
|
-
offset += written;
|
|
259
|
-
}
|
|
260
|
-
fsyncSync(fd);
|
|
261
|
-
closeSync(fd);
|
|
262
|
-
fd = undefined;
|
|
263
|
-
// Re-check after the write, before the name becomes discoverable.
|
|
264
|
-
restrictToOwner(tmp);
|
|
265
|
-
placing = true;
|
|
266
|
-
renameSync(tmp, path);
|
|
267
|
-
return path;
|
|
268
|
-
}
|
|
269
|
-
catch (err) {
|
|
270
|
-
if (fd !== undefined) {
|
|
271
|
-
try {
|
|
272
|
-
closeSync(fd);
|
|
273
|
-
}
|
|
274
|
-
catch {
|
|
275
|
-
// A failed close may already have closed the descriptor. Remove the
|
|
276
|
-
// temporary name in either case and report if that also fails.
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
let cleanupError;
|
|
280
|
-
try {
|
|
281
|
-
rmSync(tmp, { force: true });
|
|
282
|
-
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
cleanupError = error;
|
|
285
|
-
}
|
|
286
|
-
throw new CredentialStoreError(`could not ${placing ? 'place' : 'write'} ${path}: ${err instanceof Error ? err.message : String(err)}${cleanupError ? `; temporary file ${tmp} could not be removed: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}` : ''}`);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
function serializeDocument(document) {
|
|
290
|
-
const credential = (value) => ({
|
|
291
|
-
accessToken: value.accessToken,
|
|
292
|
-
...(value.refreshToken ? { refreshToken: value.refreshToken } : {}),
|
|
293
|
-
...(value.expiresAt ? { expiresAt: value.expiresAt } : {}),
|
|
294
|
-
...(value.scopes ? { scopes: value.scopes } : {}),
|
|
295
|
-
});
|
|
296
|
-
return {
|
|
297
|
-
version: CREDENTIALS_FILE_VERSION,
|
|
298
|
-
...(document.subscription ? { subscription: credential(document.subscription) } : {}),
|
|
299
|
-
...(document.codexSubscription
|
|
300
|
-
? {
|
|
301
|
-
codexSubscription: {
|
|
302
|
-
...credential(document.codexSubscription),
|
|
303
|
-
accountId: document.codexSubscription.accountId,
|
|
304
|
-
},
|
|
305
|
-
}
|
|
306
|
-
: {}),
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
/** Remove the stored credential. Absence is success. */
|
|
310
|
-
export function clearStoredSubscriptionCredential(home) {
|
|
311
|
-
const path = credentialsPath(home);
|
|
312
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
313
|
-
withCredentialStoreLock(path, () => {
|
|
314
|
-
const current = readCredentialDocument(home);
|
|
315
|
-
if (!current?.codexSubscription) {
|
|
316
|
-
rmSync(path, { force: true });
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
writeCredentialDocumentUnlocked({
|
|
320
|
-
version: CREDENTIALS_FILE_VERSION,
|
|
321
|
-
codexSubscription: current.codexSubscription,
|
|
322
|
-
}, path);
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
/** Remove only the Namzu-owned Codex subscription; borrowed harness auth is untouched. */
|
|
326
|
-
export function clearStoredCodexCredential(home) {
|
|
327
|
-
const path = credentialsPath(home);
|
|
328
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
329
|
-
withCredentialStoreLock(path, () => {
|
|
330
|
-
const current = readCredentialDocument(home);
|
|
331
|
-
if (!current?.subscription) {
|
|
332
|
-
rmSync(path, { force: true });
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
335
|
-
writeCredentialDocumentUnlocked({ version: CREDENTIALS_FILE_VERSION, subscription: current.subscription }, path);
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
/** Remove every credential Namzu owns in one store mutation. */
|
|
339
|
-
export function clearAllStoredCredentials(home) {
|
|
340
|
-
const path = credentialsPath(home);
|
|
341
|
-
mkdirSync(dirname(path), { recursive: true, mode: DIR_MODE });
|
|
342
|
-
withCredentialStoreLock(path, () => rmSync(path, { force: true }));
|
|
343
|
-
}
|
|
344
|
-
function sameCredential(left, right) {
|
|
345
|
-
if (!left)
|
|
346
|
-
return false;
|
|
347
|
-
if (left.accessToken !== right.accessToken ||
|
|
348
|
-
left.refreshToken !== right.refreshToken ||
|
|
349
|
-
left.expiresAt !== right.expiresAt) {
|
|
350
|
-
return false;
|
|
351
|
-
}
|
|
352
|
-
const leftScopes = left.scopes ?? [];
|
|
353
|
-
const rightScopes = right.scopes ?? [];
|
|
354
|
-
return (leftScopes.length === rightScopes.length &&
|
|
355
|
-
leftScopes.every((scope, index) => scope === rightScopes[index]));
|
|
356
|
-
}
|
|
357
|
-
function sameCodexCredential(left, right) {
|
|
358
|
-
return left?.accountId === right.accountId && sameCredential(left, right);
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Run one synchronous store mutation with cross-process exclusion.
|
|
362
|
-
*
|
|
363
|
-
* The lock is held only across local read/rename work, never across a network
|
|
364
|
-
* request. A dead owner can leave a complete lock behind. It is deliberately
|
|
365
|
-
* not stolen automatically: pathname-based stale reclamation cannot prove it
|
|
366
|
-
* is unlinking the inode it inspected, so a delayed reclaimer can delete a new
|
|
367
|
-
* owner's lock and admit two writers. A present lock is a refusal until an
|
|
368
|
-
* operator proves no process owns the store and removes it.
|
|
369
|
-
*/
|
|
370
|
-
function withCredentialStoreLock(path, operation) {
|
|
371
|
-
protectCredentialParentOnWindows(path);
|
|
372
|
-
const lockPath = `${path}.lock`;
|
|
373
|
-
const token = `${process.pid}:${Date.now()}:${randomBytes(12).toString('hex')}`;
|
|
374
|
-
const published = publishLockAtomically(lockPath, token);
|
|
375
|
-
if (!published.acquired) {
|
|
376
|
-
throw new CredentialStoreError(`could not acquire the credential-store lock for ${path}: another owner or an unrecovered process lock is present (${published.error instanceof Error ? published.error.message : String(published.error)}). Refusing concurrent mutation; after proving no Namzu process is using this credential store, remove ${lockPath} and retry.`);
|
|
377
|
-
}
|
|
378
|
-
try {
|
|
379
|
-
removeCredentialTempsUnlocked(path);
|
|
380
|
-
return operation();
|
|
381
|
-
}
|
|
382
|
-
finally {
|
|
383
|
-
// Do not remove a successor's lock if an external actor replaced the file.
|
|
384
|
-
try {
|
|
385
|
-
if (readFileSync(lockPath, 'utf8') === token)
|
|
386
|
-
rmSync(lockPath, { force: true });
|
|
387
|
-
}
|
|
388
|
-
catch {
|
|
389
|
-
// The mutation already has its result. A missing/replaced lock is not
|
|
390
|
-
// evidence that the credential itself failed to publish.
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
/** Protect the directory before opening any child of it on Windows. */
|
|
395
|
-
function protectCredentialParentOnWindows(path) {
|
|
396
|
-
if (platform() !== 'win32')
|
|
397
|
-
return;
|
|
398
|
-
// Windows grants access when a handle is opened. Tightening an empty temp
|
|
399
|
-
// later cannot revoke another account's already-open handle. The parent
|
|
400
|
-
// must be private before even the lock candidate or credential file opens.
|
|
401
|
-
const parent = dirname(path);
|
|
402
|
-
const entry = lstatSync(parent);
|
|
403
|
-
if (entry.isSymbolicLink() || !entry.isDirectory()) {
|
|
404
|
-
throw new CredentialStoreError(`credential directory must be a real directory: ${parent}`);
|
|
405
|
-
}
|
|
406
|
-
restrictToOwner(parent);
|
|
407
|
-
}
|
|
408
|
-
/** Only a store-lock owner may remove crash leftovers, never an active writer. */
|
|
409
|
-
function removeCredentialTempsUnlocked(path) {
|
|
410
|
-
const prefix = `${basename(path)}.tmp.`;
|
|
411
|
-
try {
|
|
412
|
-
for (const entry of readdirSync(dirname(path))) {
|
|
413
|
-
if (!entry.startsWith(prefix) || !/^\d+\.[0-9a-f]{12}$/u.test(entry.slice(prefix.length))) {
|
|
414
|
-
continue;
|
|
415
|
-
}
|
|
416
|
-
rmSync(join(dirname(path), entry), { force: true });
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
catch (error) {
|
|
420
|
-
throw new CredentialStoreError(`could not remove temporary credential files for ${path}: ${error instanceof Error ? error.message : String(error)}`);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Publish a complete owner record at the canonical name in one filesystem op.
|
|
425
|
-
*
|
|
426
|
-
* Creating the canonical file and then writing its token has a fatal crash
|
|
427
|
-
* window: an empty lock names no owner and can never be reclaimed safely. The
|
|
428
|
-
* candidate is completed and synced first; `linkSync` is the exclusive claim.
|
|
429
|
-
* A pre-link crash can leave candidate debris, but it never blocks the store.
|
|
430
|
-
*/
|
|
431
|
-
function publishLockAtomically(lockPath, token) {
|
|
432
|
-
const candidatePath = `${lockPath}.candidate.${process.pid}.${randomBytes(12).toString('hex')}`;
|
|
433
|
-
let fd;
|
|
434
|
-
try {
|
|
435
|
-
fd = openSync(candidatePath, 'wx', FILE_MODE);
|
|
436
|
-
writeFileSync(fd, token, 'utf8');
|
|
437
|
-
fsyncSync(fd);
|
|
438
|
-
closeSync(fd);
|
|
439
|
-
fd = undefined;
|
|
440
|
-
}
|
|
441
|
-
catch (error) {
|
|
442
|
-
if (fd !== undefined)
|
|
443
|
-
closeSync(fd);
|
|
444
|
-
rmSync(candidatePath, { force: true });
|
|
445
|
-
throw new CredentialStoreError(`could not prepare the credential-store lock: ${error instanceof Error ? error.message : String(error)}`);
|
|
446
|
-
}
|
|
447
|
-
try {
|
|
448
|
-
linkSync(candidatePath, lockPath);
|
|
449
|
-
return { acquired: true };
|
|
450
|
-
}
|
|
451
|
-
catch (error) {
|
|
452
|
-
return { acquired: false, error };
|
|
453
|
-
}
|
|
454
|
-
finally {
|
|
455
|
-
try {
|
|
456
|
-
rmSync(candidatePath, { force: true });
|
|
457
|
-
}
|
|
458
|
-
catch {
|
|
459
|
-
// Candidate debris is non-canonical and cannot block another owner.
|
|
460
|
-
// Once the hard link succeeds, cleanup must not erase that acquisition
|
|
461
|
-
// result and skip the token-checked canonical release path.
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
/**
|
|
466
|
-
* Make `path` private to the current account, and PROVE it. Windows may retain
|
|
467
|
-
* access for the operating system's LocalSystem account. Throws
|
|
468
|
-
* `CredentialStoreError` when the proof cannot be produced.
|
|
469
|
-
*
|
|
470
|
-
* Exported because it is the load-bearing half of this module and a security
|
|
471
|
-
* property nobody can check by reading the caller.
|
|
472
|
-
*/
|
|
473
|
-
export function restrictToOwner(path) {
|
|
474
|
-
if (platform() === 'win32') {
|
|
475
|
-
restrictToOwnerWindows(path);
|
|
476
|
-
return;
|
|
477
|
-
}
|
|
478
|
-
// POSIX. `openSync` already asked for the mode; a umask cannot loosen it,
|
|
479
|
-
// but an inherited ACL or an exotic filesystem can, so this reads it back
|
|
480
|
-
// instead of trusting the request.
|
|
481
|
-
let mode;
|
|
482
|
-
try {
|
|
483
|
-
mode = statSync(path).mode;
|
|
484
|
-
}
|
|
485
|
-
catch (err) {
|
|
486
|
-
throw new CredentialStoreError(`could not read back the permissions of ${path}: ${err instanceof Error ? err.message : String(err)}`);
|
|
487
|
-
}
|
|
488
|
-
assertOwnerOnlyMode(mode, path);
|
|
489
|
-
}
|
|
490
|
-
/**
|
|
491
|
-
* Require a POSIX mode to grant nothing to group or other.
|
|
492
|
-
*
|
|
493
|
-
* Split out for the same reason `assertSoleOwnerSddl` is: it is the actual
|
|
494
|
-
* assertion, and one that only ever executes on some platforms is one most
|
|
495
|
-
* contributors never see fail. As a pure function it is checked everywhere,
|
|
496
|
-
* including by whoever is on the operating system where the branch that calls
|
|
497
|
-
* it is unreachable.
|
|
498
|
-
*/
|
|
499
|
-
export function assertOwnerOnlyMode(mode, path) {
|
|
500
|
-
if ((mode & 0o077) !== 0) {
|
|
501
|
-
throw new CredentialStoreError(`${path} is readable beyond its owner (mode ${(mode & 0o777).toString(8)}) and the filesystem would not tighten it — refusing to keep a credential there.`);
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
/**
|
|
505
|
-
* The Windows half: remove inheritance, grant the current user's SID full
|
|
506
|
-
* control, then read the resulting ACL back as SDDL. Existing explicit grants
|
|
507
|
-
* survive `/inheritance:r` and `/grant:r`; only LocalSystem may remain beside
|
|
508
|
-
* the current account. Directory grants propagate to children, so Windows does
|
|
509
|
-
* not substitute the creator token's default ACL for new state partitions.
|
|
510
|
-
* Directory protection also removes the built-in Administrators grant; it does
|
|
511
|
-
* not accept that group as private. Other account grants are refused.
|
|
512
|
-
*
|
|
513
|
-
* Both helpers are invoked by absolute path under `%SystemRoot%\System32`.
|
|
514
|
-
* Resolving them through `PATH` is how a same-named executable earlier on the
|
|
515
|
-
* path gets to answer a security question on our behalf, and on a developer
|
|
516
|
-
* machine `PATH` routinely carries a POSIX toolchain that shadows these names.
|
|
517
|
-
*/
|
|
518
|
-
function restrictToOwnerWindows(path) {
|
|
519
|
-
const system32 = join(process.env.SystemRoot ?? 'C:\\Windows', 'System32');
|
|
520
|
-
const run = (exe, args) => {
|
|
521
|
-
try {
|
|
522
|
-
return execFileSync(join(system32, exe), [...args], {
|
|
523
|
-
encoding: 'utf8',
|
|
524
|
-
timeout: 10_000,
|
|
525
|
-
stdio: ['ignore', 'pipe', 'ignore'],
|
|
526
|
-
windowsHide: true,
|
|
527
|
-
});
|
|
528
|
-
}
|
|
529
|
-
catch (err) {
|
|
530
|
-
throw new CredentialStoreError(`${exe} could not secure ${path} (${err instanceof Error ? err.message : String(err)}). namzu will not keep a credential in a file it cannot prove is private.`);
|
|
531
|
-
}
|
|
532
|
-
};
|
|
533
|
-
// `whoami /user /fo csv /nh` prints "DOMAIN\user","S-1-5-21-…"
|
|
534
|
-
const sid = currentUserSid();
|
|
535
|
-
if (!sid) {
|
|
536
|
-
throw new CredentialStoreError(`could not determine the current account's security identifier, so the protection of ${path} cannot be established.`);
|
|
537
|
-
}
|
|
538
|
-
const directory = statSync(path).isDirectory();
|
|
539
|
-
run('icacls.exe', [
|
|
540
|
-
path,
|
|
541
|
-
'/inheritance:r',
|
|
542
|
-
'/grant:r',
|
|
543
|
-
`*${sid}:${directory ? '(OI)(CI)F' : 'F'}`,
|
|
544
|
-
// Tighten the named private directory, including older generated state
|
|
545
|
-
// whose non-inheritable parent caused Windows to add this default grant.
|
|
546
|
-
// Never reset the ACL through a potentially wider parent descriptor.
|
|
547
|
-
...(directory ? ['/remove:g', '*S-1-5-32-544'] : []),
|
|
548
|
-
]);
|
|
549
|
-
const saved = readAclSddl(path);
|
|
550
|
-
if (saved === null) {
|
|
551
|
-
throw new CredentialStoreError(`could not read back the access-control list of ${path}, so its privacy is unestablished.`);
|
|
552
|
-
}
|
|
553
|
-
assertSoleOwnerSddl(saved, sid, path);
|
|
554
|
-
}
|
|
555
|
-
/**
|
|
556
|
-
* The file's discretionary access-control list, as SDDL, or `null`.
|
|
557
|
-
*
|
|
558
|
-
* `null` off Windows and on any failure to read. Exported so a test can make
|
|
559
|
-
* the Windows arm a real assertion instead of "the write did not throw" —
|
|
560
|
-
* without it, deleting the entire protection step would kill no test on the
|
|
561
|
-
* platform the protection is FOR, and the only coverage would be the POSIX
|
|
562
|
-
* branch running somewhere else.
|
|
563
|
-
*
|
|
564
|
-
* `icacls /save` writes a UTF-16 file whose second line is the descriptor.
|
|
565
|
-
* SDDL names principals by security identifier, so nothing here depends on
|
|
566
|
-
* the machine's display language.
|
|
567
|
-
*/
|
|
568
|
-
export function readAclSddl(path) {
|
|
569
|
-
if (platform() !== 'win32')
|
|
570
|
-
return null;
|
|
571
|
-
const system32 = join(process.env.SystemRoot ?? 'C:\\Windows', 'System32');
|
|
572
|
-
const aclPath = join(tmpdir(), `namzu-acl-${randomBytes(6).toString('hex')}`);
|
|
573
|
-
try {
|
|
574
|
-
execFileSync(join(system32, 'icacls.exe'), [path, '/save', aclPath], {
|
|
575
|
-
encoding: 'utf8',
|
|
576
|
-
timeout: 10_000,
|
|
577
|
-
stdio: ['ignore', 'pipe', 'ignore'],
|
|
578
|
-
windowsHide: true,
|
|
579
|
-
});
|
|
580
|
-
return readFileSync(aclPath, 'utf16le');
|
|
581
|
-
}
|
|
582
|
-
catch {
|
|
583
|
-
return null;
|
|
584
|
-
}
|
|
585
|
-
finally {
|
|
586
|
-
rmSync(aclPath, { force: true });
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
/** The current account's security identifier, or `null` off Windows / on failure. */
|
|
590
|
-
export function currentUserSid() {
|
|
591
|
-
if (platform() !== 'win32')
|
|
592
|
-
return null;
|
|
593
|
-
const system32 = join(process.env.SystemRoot ?? 'C:\\Windows', 'System32');
|
|
594
|
-
try {
|
|
595
|
-
const out = execFileSync(join(system32, 'whoami.exe'), ['/user', '/fo', 'csv', '/nh'], {
|
|
596
|
-
encoding: 'utf8',
|
|
597
|
-
timeout: 10_000,
|
|
598
|
-
stdio: ['ignore', 'pipe', 'ignore'],
|
|
599
|
-
windowsHide: true,
|
|
600
|
-
});
|
|
601
|
-
return out.match(/"(S-1-[0-9-]+)"/)?.[1] ?? null;
|
|
602
|
-
}
|
|
603
|
-
catch {
|
|
604
|
-
return null;
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
/**
|
|
608
|
-
* Require a protected SDDL discretionary ACL that grants the current account
|
|
609
|
-
* access, with no other allowed principal except Windows LocalSystem.
|
|
610
|
-
*
|
|
611
|
-
* Split out from the spawning above because it is the actual assertion, and
|
|
612
|
-
* an assertion that can only run on one operating system is an assertion
|
|
613
|
-
* nobody checks. Every entry is examined, not just the first: an ACL reading
|
|
614
|
-
* `(A;;FA;;;US)(A;;FA;;;WD)` grants us AND everyone, and a check that stopped
|
|
615
|
-
* at a match would call that private.
|
|
616
|
-
*/
|
|
617
|
-
export function assertSoleOwnerSddl(sddl, sid, path) {
|
|
618
|
-
const dacl = sddl.match(/D:([A-Z]*)(.*?)(?=[OGS]:|[\r\n]|$)/u);
|
|
619
|
-
const flags = dacl?.[1] ?? '';
|
|
620
|
-
const body = dacl?.[2] ?? '';
|
|
621
|
-
if (!dacl || !/^(?:\([^()]*\))+$/u.test(body)) {
|
|
622
|
-
throw new CredentialStoreError(`the access-control list of ${path} could not be read back, so its privacy is unestablished.`);
|
|
623
|
-
}
|
|
624
|
-
if (!flags.includes('P')) {
|
|
625
|
-
throw new CredentialStoreError(`${path} still inherits permissions from its parent folder, so accounts other than yours may read it.`);
|
|
626
|
-
}
|
|
627
|
-
const aces = [...body.matchAll(/\(([^)]*)\)/g)].map((m) => (m[1] ?? '').split(';'));
|
|
628
|
-
if (aces.length === 0) {
|
|
629
|
-
throw new CredentialStoreError(`the access-control list of ${path} could not be read back, so its privacy is unestablished.`);
|
|
630
|
-
}
|
|
631
|
-
let grantsCurrentAccount = false;
|
|
632
|
-
const normalizeSid = (value) => value.toUpperCase() === 'SY' ? 'S-1-5-18' : value.toUpperCase();
|
|
633
|
-
for (const ace of aces) {
|
|
634
|
-
const type = ace[0] ?? '';
|
|
635
|
-
const trustee = ace[5] ?? '';
|
|
636
|
-
// Object/conditional ACEs need a different parser. They cannot be
|
|
637
|
-
// classified as harmless merely because their type is not plain A.
|
|
638
|
-
if (ace.length !== 6 || (type !== 'A' && type !== 'D') || ace[3] || ace[4]) {
|
|
639
|
-
throw new CredentialStoreError(`the access-control list of ${path} contains an unsupported entry, so its privacy is unestablished.`);
|
|
640
|
-
}
|
|
641
|
-
if (type === 'D')
|
|
642
|
-
continue;
|
|
643
|
-
const currentAccount = normalizeSid(trustee) === normalizeSid(sid);
|
|
644
|
-
if (!currentAccount && normalizeSid(trustee) !== 'S-1-5-18') {
|
|
645
|
-
throw new CredentialStoreError(`${path} grants access to an account other than yours (${trustee}) — refusing to keep a credential there.`);
|
|
646
|
-
}
|
|
647
|
-
// An inherit-only grant applies to descendants, not this path. A
|
|
648
|
-
// SYSTEM-only list likewise says nothing about the current user's access.
|
|
649
|
-
if (currentAccount && !(ace[1] ?? '').includes('IO') && ace[2]) {
|
|
650
|
-
grantsCurrentAccount = true;
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
if (!grantsCurrentAccount) {
|
|
654
|
-
throw new CredentialStoreError(`${path} ended with no access granted to your account, which is not a credential store — refusing.`);
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
//# sourceMappingURL=credential-store.js.map
|