@namzu/cli 37.2.0 → 38.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +2 -2
- package/dist/analysis-host.js +293 -10
- package/dist/analysis-host.js.map +2 -2
- package/dist/bin.js +1 -1
- package/dist/chunks/{acp-WRUFVVVS.js → acp-WH4EFAFK.js} +79 -56
- package/dist/chunks/acp-WH4EFAFK.js.map +6 -0
- package/dist/chunks/{activity-command-7GP4PLBD.js → activity-command-RM6YEJJE.js} +14 -14
- package/dist/chunks/{add-KNRDMCME.js → add-JUN463VT.js} +23 -22
- package/dist/chunks/add-JUN463VT.js.map +6 -0
- package/dist/chunks/{agent-LZDDK3NN.js → agent-UNGHD2P3.js} +27 -26
- package/dist/chunks/agent-session-FG4XT6SX.js +52 -0
- package/dist/chunks/{archive-PNHAJS2H.js → archive-IAT6HD7B.js} +9 -9
- package/dist/chunks/{bin-main-Y2J7CPYI.js → bin-main-B5GXM64T.js} +6 -5
- package/dist/chunks/bin-main-B5GXM64T.js.map +6 -0
- package/dist/chunks/{browser-RVLLK6CN.js → browser-4P3N4ZQL.js} +6 -6
- package/dist/chunks/{chat-YF3TI43Y.js → chat-4Q3PPOMP.js} +15 -14
- package/dist/chunks/chat-4Q3PPOMP.js.map +6 -0
- package/dist/chunks/{chunk-TQGYYDLF.js → chunk-25P24RKO.js} +5 -5
- package/dist/chunks/chunk-25P24RKO.js.map +6 -0
- package/dist/chunks/{chunk-REBTUQC6.js → chunk-2HZIBPEM.js} +21 -14
- package/dist/chunks/chunk-2HZIBPEM.js.map +6 -0
- package/dist/chunks/{chunk-MULW7FFH.js → chunk-2WMXW2HX.js} +4 -4
- package/dist/chunks/chunk-356N4VBU.js +134 -0
- package/dist/chunks/chunk-356N4VBU.js.map +6 -0
- package/dist/chunks/{chunk-KSLX3NGM.js → chunk-3CEDA5YH.js} +117 -3
- package/dist/chunks/chunk-3CEDA5YH.js.map +6 -0
- package/dist/chunks/{chunk-DRXG4OLL.js → chunk-466ECWQB.js} +4 -4
- package/dist/chunks/{chunk-2TDWK353.js → chunk-47W5PCU5.js} +12 -12
- package/dist/chunks/{chunk-PSLRTJU5.js → chunk-4DQ5TVCH.js} +12 -12
- package/dist/chunks/{chunk-A5GALFIC.js → chunk-6HPZCB5F.js} +2 -2
- package/dist/chunks/{chunk-VCUPZJDO.js → chunk-6PMO2KA2.js} +2 -2
- package/dist/chunks/{chunk-LO5DFG6H.js → chunk-735YHXE3.js} +2 -2
- package/dist/chunks/{devtools-LBE4PAQN.js → chunk-7AZTWFS7.js} +12 -84
- package/dist/chunks/{devtools-LBE4PAQN.js.map → chunk-7AZTWFS7.js.map} +2 -2
- package/dist/chunks/{chunk-O6X4O7VQ.js → chunk-7PBYGA76.js} +3 -3
- package/dist/chunks/{chunk-DS2PIOVD.js → chunk-7XBUFSLG.js} +3 -3
- package/dist/chunks/{chunk-72TESSG2.js → chunk-AQM2Q6XZ.js} +53 -11
- package/dist/chunks/chunk-AQM2Q6XZ.js.map +6 -0
- package/dist/chunks/{chunk-GEB3OP2H.js → chunk-BKBXEXIL.js} +355 -168
- package/dist/chunks/chunk-BKBXEXIL.js.map +6 -0
- package/dist/chunks/{chunk-5YERJLR7.js → chunk-BQRKMDDF.js} +4 -4
- package/dist/chunks/{chunk-GYM3FUBH.js → chunk-D5HL6QDV.js} +2 -2
- package/dist/chunks/{chunk-ERY3CYIM.js → chunk-G2ZBMR22.js} +4 -4
- package/dist/chunks/{chunk-5NHKC3NO.js → chunk-G6ETOUUR.js} +6 -6
- package/dist/chunks/{chunk-HJBZYFCC.js → chunk-GAYGCGIY.js} +6 -6
- package/dist/chunks/chunk-GK4HLIQQ.js +63 -0
- package/dist/chunks/chunk-GK4HLIQQ.js.map +6 -0
- package/dist/chunks/{chunk-UARWI3TA.js → chunk-GW7O5N42.js} +2 -2
- package/dist/chunks/{chunk-YX2ZK34T.js → chunk-HA37WH7H.js} +18 -18
- package/dist/chunks/{chunk-4H4YDNND.js → chunk-HCQUBJTS.js} +74 -49
- package/dist/chunks/chunk-HCQUBJTS.js.map +6 -0
- package/dist/chunks/{chunk-N2CP3FIQ.js → chunk-HVJXMGCJ.js} +4 -4
- package/dist/chunks/{chunk-HFFINVNN.js → chunk-JL3LUBAN.js} +3 -3
- package/dist/chunks/{chunk-NYRBM7PR.js → chunk-K5J7ATQR.js} +10 -10
- package/dist/chunks/{chunk-HFUBLJE5.js → chunk-KOOSFKHR.js} +2 -2
- package/dist/chunks/{chunk-77AX2GEP.js → chunk-LA7SHC2B.js} +43609 -41864
- package/dist/chunks/chunk-LA7SHC2B.js.map +6 -0
- package/dist/chunks/{chunk-7WKQQOKK.js → chunk-M6CYVSNV.js} +287 -31
- package/dist/chunks/chunk-M6CYVSNV.js.map +6 -0
- package/dist/chunks/{chunk-YDD74UVE.js → chunk-MJG4FQ27.js} +4 -4
- package/dist/chunks/{chunk-SMAN2IR4.js → chunk-MRJCV6EH.js} +2 -2
- package/dist/chunks/{chunk-37FCG7VX.js → chunk-N5L7HGNL.js} +2 -2
- package/dist/chunks/{chunk-T5GKAQHN.js → chunk-ORHVELT4.js} +2 -2
- package/dist/chunks/{chunk-HLHYVGQE.js → chunk-PKIH55PX.js} +13 -13
- package/dist/chunks/{chunk-4GIDESAM.js → chunk-PWFLM6BJ.js} +4 -4
- package/dist/chunks/{chunk-M46XYX7O.js → chunk-QKSBBKKC.js} +3 -3
- package/dist/chunks/{chunk-DW23UIKM.js → chunk-RU3AE4JE.js} +2 -2
- package/dist/chunks/{chunk-M2SQW7DK.js → chunk-S5KTYKQH.js} +3 -3
- package/dist/chunks/{chunk-M2SQW7DK.js.map → chunk-S5KTYKQH.js.map} +1 -1
- package/dist/chunks/{chunk-KK73BCYK.js → chunk-SZUOO7A2.js} +5 -5
- package/dist/chunks/{chunk-POEIV6AQ.js → chunk-TFA5ZAGJ.js} +2 -2
- package/dist/chunks/{chunk-QWCASGYH.js → chunk-TZLYJWSW.js} +4 -4
- package/dist/chunks/{chunk-XHJMDBRV.js → chunk-U6EH3UCL.js} +2 -2
- package/dist/chunks/{chunk-ABHX2QBJ.js → chunk-UKOMZND2.js} +4 -4
- package/dist/chunks/{chunk-ND6ZNIUM.js → chunk-UW42IRA4.js} +5 -5
- package/dist/chunks/{chunk-MF45FNH3.js → chunk-UZ7ONUMS.js} +3 -3
- package/dist/chunks/{chunk-MUG3SBGU.js → chunk-V5WCUTSO.js} +3 -3
- package/dist/chunks/{chunk-HFMDSVBA.js → chunk-VHZ3I7L4.js} +5 -5
- package/dist/chunks/{chunk-VIDT6RAV.js → chunk-VK2BAABY.js} +7 -7
- package/dist/chunks/{chunk-VONRWBC6.js → chunk-VKZKDPKS.js} +2 -2
- package/dist/chunks/{chunk-HS3TPTJ3.js → chunk-VUQE34X4.js} +2 -2
- package/dist/chunks/{chunk-XBRRTAXP.js → chunk-WCC5ABWX.js} +2 -2
- package/dist/chunks/chunk-WMEZTDLT.js +17 -0
- package/dist/chunks/chunk-WMEZTDLT.js.map +6 -0
- package/dist/chunks/{chunk-R7HI2NMR.js → chunk-XDA57K4Q.js} +2 -2
- package/dist/chunks/{chunk-UI3MX7CC.js → chunk-XHBZBISL.js} +3 -3
- package/dist/chunks/{chunk-34IZ6DMB.js → chunk-YMSXUKHE.js} +2 -2
- package/dist/chunks/{chunk-E6RPYGJP.js → chunk-YXFS44LU.js} +3 -3
- package/dist/chunks/chunk-Z7J6WN6G.js +86 -0
- package/dist/chunks/chunk-Z7J6WN6G.js.map +6 -0
- package/dist/chunks/{chunk-V6NJWYMP.js → chunk-ZDAUAJ4L.js} +2 -2
- package/dist/chunks/{chunk-HRRQSXVP.js → chunk-ZGODF5RM.js} +20 -14
- package/dist/chunks/chunk-ZGODF5RM.js.map +6 -0
- package/dist/chunks/{cli-runtime-6MW2CSZV.js → cli-runtime-HEQVJMIJ.js} +50 -9
- package/dist/chunks/cli-runtime-HEQVJMIJ.js.map +6 -0
- package/dist/chunks/{commands-FHJCPYZK.js → commands-6KNKGAYK.js} +5 -5
- package/dist/chunks/{crash-report-M5Q3DQCN.js → crash-report-4ZIUEO2T.js} +7 -7
- package/dist/chunks/devtools-V6SF7RES.js +93 -0
- package/dist/chunks/devtools-V6SF7RES.js.map +6 -0
- package/dist/chunks/{dist-JSQDWJJ7.js → dist-52AQ2S3B.js} +2 -2
- package/dist/chunks/{dist-4OQCWTIT.js → dist-6N7EBKOP.js} +2 -2
- package/dist/chunks/{dist-KGLSBIES.js → dist-ADL22Y3L.js} +1631 -208
- package/dist/chunks/dist-ADL22Y3L.js.map +6 -0
- package/dist/chunks/{dist-37DNQCWH.js → dist-DDOLI4FC.js} +2 -2
- package/dist/chunks/{dist-XB6XFRHI.js → dist-EXJEMH6E.js} +2 -2
- package/dist/chunks/{dist-PRV7KU6K.js → dist-KUY5YJQU.js} +2 -2
- package/dist/chunks/{dist-33WLKROX.js → dist-LJF7HG5B.js} +2 -2
- package/dist/chunks/{dist-RUF7G2EJ.js → dist-W2RL2YQU.js} +2 -2
- package/dist/chunks/{doctor-UHW2CT5G.js → doctor-BSYUHWBV.js} +8 -8
- package/dist/chunks/{drain-WW3OCWON.js → drain-ANNH6M4M.js} +11 -10
- package/dist/chunks/drain-ANNH6M4M.js.map +6 -0
- package/dist/chunks/{eval-7W7MY7MI.js → eval-FOOSHOQH.js} +2 -2
- package/dist/chunks/{exec-D3HAVGO3.js → exec-66BTZSXT.js} +60 -32
- package/dist/chunks/exec-66BTZSXT.js.map +6 -0
- package/dist/chunks/{home-OOMHTBCU.js → home-F3JAP7EK.js} +3 -3
- package/dist/chunks/{host-queries-LLRW35KQ.js → host-queries-DAZODJGM.js} +14 -14
- package/dist/chunks/{lifecycle-X3WP7K6J.js → lifecycle-4K6UYXHW.js} +27 -26
- package/dist/chunks/{list-YNC6NTUS.js → list-5P46GOYS.js} +16 -15
- package/dist/chunks/list-5P46GOYS.js.map +6 -0
- package/dist/chunks/{login-J2W3FTAI.js → login-3NTMRWH5.js} +8 -8
- package/dist/chunks/{logs-FBCRI5GX.js → logs-TOENBRPG.js} +4 -4
- package/dist/chunks/{mcp-S6HNWBTQ.js → mcp-R7AB2UAO.js} +23 -22
- package/dist/chunks/mcp-R7AB2UAO.js.map +6 -0
- package/dist/chunks/{message-command-4SLCM27I.js → message-command-G5CGLKBG.js} +40 -39
- package/dist/chunks/message-command-G5CGLKBG.js.map +6 -0
- package/dist/chunks/{operator-tools-PLCPLKHA.js → operator-tools-FQ6ITKE6.js} +12 -12
- package/dist/chunks/{output-schema-35UX32FC.js → output-schema-SKFZ25BQ.js} +3 -3
- package/dist/chunks/{pal-5BVWB3W7.js → pal-TNQSB2GK.js} +14 -14
- package/dist/chunks/{providers-7VVPQLKS.js → providers-HZYMMU6E.js} +6 -6
- package/dist/chunks/{resident-FUJTNNQU.js → resident-YDO5N5JH.js} +31 -28
- package/dist/chunks/resident-YDO5N5JH.js.map +6 -0
- package/dist/chunks/resume-OJYZ6YER.js +22 -0
- package/dist/chunks/{resume-command-LDVO5KIP.js → resume-command-5KZPLTK7.js} +4 -4
- package/dist/chunks/{schedule-NV5NQSKS.js → schedule-6XIBAC7U.js} +8 -8
- package/dist/chunks/{service-OZEMWADJ.js → service-2LFLAXAG.js} +28 -27
- package/dist/chunks/service-2LFLAXAG.js.map +6 -0
- package/dist/chunks/session-step-3PJBN33Y.js +29 -0
- package/dist/chunks/{skills-A7XMDZPV.js → skills-JOY3NTBC.js} +8 -8
- package/dist/chunks/{state-ZOLHKFZD.js → state-QQ2YFP4G.js} +2 -2
- package/dist/chunks/{store-ASOIXVEH.js → store-47KUDP7H.js} +9 -9
- package/dist/chunks/{store-AG3KCS6R.js → store-CLZKGKXL.js} +4 -4
- package/dist/chunks/{store-WZES4TNW.js → store-WC3TVOLU.js} +6 -6
- package/dist/chunks/{tui-H7MVCBHH.js → tui-2M6OGQUI.js} +228 -112
- package/dist/chunks/tui-2M6OGQUI.js.map +6 -0
- package/dist/chunks/{upgrade-G2R3EBLE.js → upgrade-ZZYBXJXO.js} +2 -2
- package/dist/chunks/{worktree-YIQTRMAT.js → worktree-7C3EZZ7D.js} +11 -11
- package/dist/chunks/wrapper-XHVFM6KS.js +34 -0
- package/dist/chunks/wrapper-XHVFM6KS.js.map +6 -0
- package/dist/cli-runtime.d.ts +4 -0
- package/dist/cli-runtime.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/commands/acp.d.ts +1 -1
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/desktop-host.d.ts.map +1 -1
- package/dist/commands/exec-flags.d.ts +1 -1
- package/dist/commands/exec-flags.d.ts.map +1 -1
- package/dist/commands/exec-json.d.ts.map +1 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/resident-flags.d.ts.map +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/schema.d.ts +9 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/index.js +25 -24
- package/dist/integrations/harness/codex-adapter.d.ts.map +1 -1
- package/dist/integrations/monitors/web-access-hint.d.ts +8 -0
- package/dist/integrations/monitors/web-access-hint.d.ts.map +1 -0
- package/dist/integrations/resident/runner-worker.js +20 -18
- package/dist/integrations/resident/runner-worker.js.map +1 -1
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/workflows/offering.d.ts +1 -1
- package/dist/pals/actions.d.ts.map +1 -1
- package/dist/permissions/auto-classifier.d.ts +74 -0
- package/dist/permissions/auto-classifier.d.ts.map +1 -0
- package/dist/permissions/consent-prompt.d.ts +11 -0
- package/dist/permissions/consent-prompt.d.ts.map +1 -0
- package/dist/permissions/consent.d.ts +9 -0
- package/dist/permissions/consent.d.ts.map +1 -0
- package/dist/permissions/launch.d.ts +59 -0
- package/dist/permissions/launch.d.ts.map +1 -0
- package/dist/permissions/live-mode.d.ts +5 -4
- package/dist/permissions/live-mode.d.ts.map +1 -1
- package/dist/permissions/mode-names.d.ts +2 -1
- package/dist/permissions/mode-names.d.ts.map +1 -1
- package/dist/permissions/mode.d.ts +59 -19
- package/dist/permissions/mode.d.ts.map +1 -1
- package/dist/permissions/rules.d.ts.map +1 -1
- package/dist/permissions/settings.d.ts +81 -0
- package/dist/permissions/settings.d.ts.map +1 -0
- package/dist/tui/App.d.ts +160 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/BrandHeader.d.ts.map +1 -1
- package/dist/tui/StatusBar.d.ts +6 -0
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/agent.d.ts +52 -3
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/mentions.d.ts +6 -0
- package/dist/tui/mentions.d.ts.map +1 -1
- package/dist/tui/slashCommands.d.ts +1 -1
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/status-line/payload.d.ts.map +1 -1
- package/dist/tui/types.d.ts +13 -2
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/chunks/acp-WRUFVVVS.js.map +0 -6
- package/dist/chunks/add-KNRDMCME.js.map +0 -6
- package/dist/chunks/agent-session-2XPAWSJU.js +0 -51
- package/dist/chunks/bin-main-Y2J7CPYI.js.map +0 -6
- package/dist/chunks/chat-YF3TI43Y.js.map +0 -6
- package/dist/chunks/chunk-4H4YDNND.js.map +0 -6
- package/dist/chunks/chunk-72TESSG2.js.map +0 -6
- package/dist/chunks/chunk-77AX2GEP.js.map +0 -6
- package/dist/chunks/chunk-7WKQQOKK.js.map +0 -6
- package/dist/chunks/chunk-GEB3OP2H.js.map +0 -6
- package/dist/chunks/chunk-HRRQSXVP.js.map +0 -6
- package/dist/chunks/chunk-KSLX3NGM.js.map +0 -6
- package/dist/chunks/chunk-N3YMYKEU.js +0 -84
- package/dist/chunks/chunk-N3YMYKEU.js.map +0 -6
- package/dist/chunks/chunk-REBTUQC6.js.map +0 -6
- package/dist/chunks/chunk-TQGYYDLF.js.map +0 -6
- package/dist/chunks/cli-runtime-6MW2CSZV.js.map +0 -6
- package/dist/chunks/dist-KGLSBIES.js.map +0 -6
- package/dist/chunks/drain-WW3OCWON.js.map +0 -6
- package/dist/chunks/exec-D3HAVGO3.js.map +0 -6
- package/dist/chunks/list-YNC6NTUS.js.map +0 -6
- package/dist/chunks/mcp-S6HNWBTQ.js.map +0 -6
- package/dist/chunks/message-command-4SLCM27I.js.map +0 -6
- package/dist/chunks/resident-FUJTNNQU.js.map +0 -6
- package/dist/chunks/resume-AJ6LESHD.js +0 -22
- package/dist/chunks/service-OZEMWADJ.js.map +0 -6
- package/dist/chunks/session-step-RZEULQKO.js +0 -27
- package/dist/chunks/tui-H7MVCBHH.js.map +0 -6
- /package/dist/chunks/{activity-command-7GP4PLBD.js.map → activity-command-RM6YEJJE.js.map} +0 -0
- /package/dist/chunks/{agent-LZDDK3NN.js.map → agent-UNGHD2P3.js.map} +0 -0
- /package/dist/chunks/{agent-session-2XPAWSJU.js.map → agent-session-FG4XT6SX.js.map} +0 -0
- /package/dist/chunks/{archive-PNHAJS2H.js.map → archive-IAT6HD7B.js.map} +0 -0
- /package/dist/chunks/{browser-RVLLK6CN.js.map → browser-4P3N4ZQL.js.map} +0 -0
- /package/dist/chunks/{chunk-MULW7FFH.js.map → chunk-2WMXW2HX.js.map} +0 -0
- /package/dist/chunks/{chunk-DRXG4OLL.js.map → chunk-466ECWQB.js.map} +0 -0
- /package/dist/chunks/{chunk-2TDWK353.js.map → chunk-47W5PCU5.js.map} +0 -0
- /package/dist/chunks/{chunk-PSLRTJU5.js.map → chunk-4DQ5TVCH.js.map} +0 -0
- /package/dist/chunks/{chunk-A5GALFIC.js.map → chunk-6HPZCB5F.js.map} +0 -0
- /package/dist/chunks/{chunk-VCUPZJDO.js.map → chunk-6PMO2KA2.js.map} +0 -0
- /package/dist/chunks/{chunk-LO5DFG6H.js.map → chunk-735YHXE3.js.map} +0 -0
- /package/dist/chunks/{chunk-O6X4O7VQ.js.map → chunk-7PBYGA76.js.map} +0 -0
- /package/dist/chunks/{chunk-DS2PIOVD.js.map → chunk-7XBUFSLG.js.map} +0 -0
- /package/dist/chunks/{chunk-5YERJLR7.js.map → chunk-BQRKMDDF.js.map} +0 -0
- /package/dist/chunks/{chunk-GYM3FUBH.js.map → chunk-D5HL6QDV.js.map} +0 -0
- /package/dist/chunks/{chunk-ERY3CYIM.js.map → chunk-G2ZBMR22.js.map} +0 -0
- /package/dist/chunks/{chunk-5NHKC3NO.js.map → chunk-G6ETOUUR.js.map} +0 -0
- /package/dist/chunks/{chunk-HJBZYFCC.js.map → chunk-GAYGCGIY.js.map} +0 -0
- /package/dist/chunks/{chunk-UARWI3TA.js.map → chunk-GW7O5N42.js.map} +0 -0
- /package/dist/chunks/{chunk-YX2ZK34T.js.map → chunk-HA37WH7H.js.map} +0 -0
- /package/dist/chunks/{chunk-N2CP3FIQ.js.map → chunk-HVJXMGCJ.js.map} +0 -0
- /package/dist/chunks/{chunk-HFFINVNN.js.map → chunk-JL3LUBAN.js.map} +0 -0
- /package/dist/chunks/{chunk-NYRBM7PR.js.map → chunk-K5J7ATQR.js.map} +0 -0
- /package/dist/chunks/{chunk-HFUBLJE5.js.map → chunk-KOOSFKHR.js.map} +0 -0
- /package/dist/chunks/{chunk-YDD74UVE.js.map → chunk-MJG4FQ27.js.map} +0 -0
- /package/dist/chunks/{chunk-SMAN2IR4.js.map → chunk-MRJCV6EH.js.map} +0 -0
- /package/dist/chunks/{chunk-37FCG7VX.js.map → chunk-N5L7HGNL.js.map} +0 -0
- /package/dist/chunks/{chunk-T5GKAQHN.js.map → chunk-ORHVELT4.js.map} +0 -0
- /package/dist/chunks/{chunk-HLHYVGQE.js.map → chunk-PKIH55PX.js.map} +0 -0
- /package/dist/chunks/{chunk-4GIDESAM.js.map → chunk-PWFLM6BJ.js.map} +0 -0
- /package/dist/chunks/{chunk-M46XYX7O.js.map → chunk-QKSBBKKC.js.map} +0 -0
- /package/dist/chunks/{chunk-DW23UIKM.js.map → chunk-RU3AE4JE.js.map} +0 -0
- /package/dist/chunks/{chunk-KK73BCYK.js.map → chunk-SZUOO7A2.js.map} +0 -0
- /package/dist/chunks/{chunk-POEIV6AQ.js.map → chunk-TFA5ZAGJ.js.map} +0 -0
- /package/dist/chunks/{chunk-QWCASGYH.js.map → chunk-TZLYJWSW.js.map} +0 -0
- /package/dist/chunks/{chunk-XHJMDBRV.js.map → chunk-U6EH3UCL.js.map} +0 -0
- /package/dist/chunks/{chunk-ABHX2QBJ.js.map → chunk-UKOMZND2.js.map} +0 -0
- /package/dist/chunks/{chunk-ND6ZNIUM.js.map → chunk-UW42IRA4.js.map} +0 -0
- /package/dist/chunks/{chunk-MF45FNH3.js.map → chunk-UZ7ONUMS.js.map} +0 -0
- /package/dist/chunks/{chunk-MUG3SBGU.js.map → chunk-V5WCUTSO.js.map} +0 -0
- /package/dist/chunks/{chunk-HFMDSVBA.js.map → chunk-VHZ3I7L4.js.map} +0 -0
- /package/dist/chunks/{chunk-VIDT6RAV.js.map → chunk-VK2BAABY.js.map} +0 -0
- /package/dist/chunks/{chunk-VONRWBC6.js.map → chunk-VKZKDPKS.js.map} +0 -0
- /package/dist/chunks/{chunk-HS3TPTJ3.js.map → chunk-VUQE34X4.js.map} +0 -0
- /package/dist/chunks/{chunk-XBRRTAXP.js.map → chunk-WCC5ABWX.js.map} +0 -0
- /package/dist/chunks/{chunk-R7HI2NMR.js.map → chunk-XDA57K4Q.js.map} +0 -0
- /package/dist/chunks/{chunk-UI3MX7CC.js.map → chunk-XHBZBISL.js.map} +0 -0
- /package/dist/chunks/{chunk-34IZ6DMB.js.map → chunk-YMSXUKHE.js.map} +0 -0
- /package/dist/chunks/{chunk-E6RPYGJP.js.map → chunk-YXFS44LU.js.map} +0 -0
- /package/dist/chunks/{chunk-V6NJWYMP.js.map → chunk-ZDAUAJ4L.js.map} +0 -0
- /package/dist/chunks/{commands-FHJCPYZK.js.map → commands-6KNKGAYK.js.map} +0 -0
- /package/dist/chunks/{crash-report-M5Q3DQCN.js.map → crash-report-4ZIUEO2T.js.map} +0 -0
- /package/dist/chunks/{dist-JSQDWJJ7.js.map → dist-52AQ2S3B.js.map} +0 -0
- /package/dist/chunks/{dist-4OQCWTIT.js.map → dist-6N7EBKOP.js.map} +0 -0
- /package/dist/chunks/{dist-37DNQCWH.js.map → dist-DDOLI4FC.js.map} +0 -0
- /package/dist/chunks/{dist-XB6XFRHI.js.map → dist-EXJEMH6E.js.map} +0 -0
- /package/dist/chunks/{dist-PRV7KU6K.js.map → dist-KUY5YJQU.js.map} +0 -0
- /package/dist/chunks/{dist-33WLKROX.js.map → dist-LJF7HG5B.js.map} +0 -0
- /package/dist/chunks/{dist-RUF7G2EJ.js.map → dist-W2RL2YQU.js.map} +0 -0
- /package/dist/chunks/{doctor-UHW2CT5G.js.map → doctor-BSYUHWBV.js.map} +0 -0
- /package/dist/chunks/{eval-7W7MY7MI.js.map → eval-FOOSHOQH.js.map} +0 -0
- /package/dist/chunks/{home-OOMHTBCU.js.map → home-F3JAP7EK.js.map} +0 -0
- /package/dist/chunks/{host-queries-LLRW35KQ.js.map → host-queries-DAZODJGM.js.map} +0 -0
- /package/dist/chunks/{lifecycle-X3WP7K6J.js.map → lifecycle-4K6UYXHW.js.map} +0 -0
- /package/dist/chunks/{login-J2W3FTAI.js.map → login-3NTMRWH5.js.map} +0 -0
- /package/dist/chunks/{logs-FBCRI5GX.js.map → logs-TOENBRPG.js.map} +0 -0
- /package/dist/chunks/{operator-tools-PLCPLKHA.js.map → operator-tools-FQ6ITKE6.js.map} +0 -0
- /package/dist/chunks/{output-schema-35UX32FC.js.map → output-schema-SKFZ25BQ.js.map} +0 -0
- /package/dist/chunks/{pal-5BVWB3W7.js.map → pal-TNQSB2GK.js.map} +0 -0
- /package/dist/chunks/{providers-7VVPQLKS.js.map → providers-HZYMMU6E.js.map} +0 -0
- /package/dist/chunks/{resume-AJ6LESHD.js.map → resume-OJYZ6YER.js.map} +0 -0
- /package/dist/chunks/{resume-command-LDVO5KIP.js.map → resume-command-5KZPLTK7.js.map} +0 -0
- /package/dist/chunks/{schedule-NV5NQSKS.js.map → schedule-6XIBAC7U.js.map} +0 -0
- /package/dist/chunks/{session-step-RZEULQKO.js.map → session-step-3PJBN33Y.js.map} +0 -0
- /package/dist/chunks/{skills-A7XMDZPV.js.map → skills-JOY3NTBC.js.map} +0 -0
- /package/dist/chunks/{state-ZOLHKFZD.js.map → state-QQ2YFP4G.js.map} +0 -0
- /package/dist/chunks/{store-AG3KCS6R.js.map → store-47KUDP7H.js.map} +0 -0
- /package/dist/chunks/{store-ASOIXVEH.js.map → store-CLZKGKXL.js.map} +0 -0
- /package/dist/chunks/{store-WZES4TNW.js.map → store-WC3TVOLU.js.map} +0 -0
- /package/dist/chunks/{upgrade-G2R3EBLE.js.map → upgrade-ZZYBXJXO.js.map} +0 -0
- /package/dist/chunks/{worktree-YIQTRMAT.js.map → worktree-7C3EZZ7D.js.map} +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type AutoReviewClassifier, type LLMProvider, type Logger, type ResumeHandler, type SessionId, type TokenUsage, type TurnId, createAutoReviewClassifier } from '@namzu/sdk';
|
|
2
|
+
import type { AutoModeSettings } from './settings.js';
|
|
3
|
+
/**
|
|
4
|
+
* The auto mode's classifier as this application builds it.
|
|
5
|
+
*
|
|
6
|
+
* The kernel owns the mechanism (`createAutoReviewClassifier`); this decides
|
|
7
|
+
* three things it leaves to the host: which model answers, how a model is
|
|
8
|
+
* reached for the session in hand, and who pays for the passes.
|
|
9
|
+
*
|
|
10
|
+
* ## The model
|
|
11
|
+
*
|
|
12
|
+
* `permissions.autoMode.model` names it. Left out, the session's own model
|
|
13
|
+
* answers: a check that is cheaper than the work it guards is a check that is
|
|
14
|
+
* easy to talk round, so quality is the default. `smallModel` as the value
|
|
15
|
+
* means the side model, for an operator who would rather spend less. Anything
|
|
16
|
+
* else is read like `smallModel` itself (`provider/model`, or a bare model of
|
|
17
|
+
* the session's provider).
|
|
18
|
+
*
|
|
19
|
+
* ## Failing closed
|
|
20
|
+
*
|
|
21
|
+
* A model that cannot be reached, a provider with no credential on this
|
|
22
|
+
* machine, a name nobody knows: each blocks the call it was asked about, in
|
|
23
|
+
* the kernel's own words (`cause: 'unavailable'`). Nothing here turns "could
|
|
24
|
+
* not check" into "go ahead".
|
|
25
|
+
*/
|
|
26
|
+
/** The reserved word for the side model in `permissions.autoMode.model`. */
|
|
27
|
+
export declare const SMALL_MODEL_KEYWORD = "smallModel";
|
|
28
|
+
export interface ClassifierTarget {
|
|
29
|
+
readonly providerId: string;
|
|
30
|
+
readonly model: string;
|
|
31
|
+
}
|
|
32
|
+
export interface SessionClassifierDeps {
|
|
33
|
+
readonly settings?: AutoModeSettings | undefined;
|
|
34
|
+
/** The provider and model the conversation runs on right now. */
|
|
35
|
+
readonly active: () => ClassifierTarget;
|
|
36
|
+
readonly isKnownProvider: (providerId: string) => boolean;
|
|
37
|
+
/** A provider client for `target`; rejects when the machine has no credential for it. */
|
|
38
|
+
readonly providerFor: (sessionId: SessionId, target: ClassifierTarget) => Promise<LLMProvider>;
|
|
39
|
+
/** The side model's route, when it is wanted. Absent: `smallModel` cannot be honoured. */
|
|
40
|
+
readonly smallRoute?: (sessionId: SessionId, signal: AbortSignal) => Promise<ClassifierTarget>;
|
|
41
|
+
readonly log?: Logger | undefined;
|
|
42
|
+
/** Counts what a pass cost against the turn it belongs to. */
|
|
43
|
+
readonly charge?: (input: {
|
|
44
|
+
readonly sessionId: SessionId;
|
|
45
|
+
readonly turnId: TurnId;
|
|
46
|
+
readonly usage: TokenUsage;
|
|
47
|
+
readonly stage: 1 | 2;
|
|
48
|
+
}) => void;
|
|
49
|
+
/** Overrides for tests (limits, retry sleep and the like). */
|
|
50
|
+
readonly classifierOptions?: Partial<Parameters<typeof createAutoReviewClassifier>[0]>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Runs a review handler inside the scope the classifier reads its session and
|
|
54
|
+
* turn from. The kernel passes the classifier the call and the transcript, not
|
|
55
|
+
* the turn that asked, and a pass has to be charged to a turn.
|
|
56
|
+
*/
|
|
57
|
+
export declare function withClassifierScope(handler: ResumeHandler): ResumeHandler;
|
|
58
|
+
/** Why the classifier cannot be used with these settings, or undefined when it can. */
|
|
59
|
+
export declare function classifierUnavailableReason(opts: {
|
|
60
|
+
readonly settings?: AutoModeSettings | undefined;
|
|
61
|
+
readonly disabled?: boolean | undefined;
|
|
62
|
+
readonly active: ClassifierTarget;
|
|
63
|
+
readonly isKnownProvider: (providerId: string) => boolean;
|
|
64
|
+
/** Whether this machine holds a credential for the provider. */
|
|
65
|
+
readonly hasCredential: (providerId: string) => boolean;
|
|
66
|
+
readonly hasSmallModel: boolean;
|
|
67
|
+
}): string | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* One classifier for the session. The model it asks is settled on each review,
|
|
70
|
+
* so a model switch mid-session is followed; the block counters belong to the
|
|
71
|
+
* model in use, and start again when it changes.
|
|
72
|
+
*/
|
|
73
|
+
export declare function createSessionClassifier(deps: SessionClassifierDeps): AutoReviewClassifier;
|
|
74
|
+
//# sourceMappingURL=auto-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-classifier.d.ts","sourceRoot":"","sources":["../../src/permissions/auto-classifier.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,oBAAoB,EAGzB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,MAAM,EACX,0BAA0B,EAC1B,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,eAAe,CAAA;AAE/C,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAChD,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,gBAAgB,CAAA;IACvC,QAAQ,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAA;IACzD,yFAAyF;IACzF,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;IAC9F,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC9F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;QAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAA;KACrB,KAAK,IAAI,CAAA;IACV,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CACtF;AAUD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAKzE;AAED,uFAAuF;AACvF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAA;IACzD,gEAAgE;IAChE,QAAQ,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAA;IACvD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAC/B,GAAG,MAAM,GAAG,SAAS,CAYrB;AAUD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,oBAAoB,CAkEzF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asks once, on the terminal, before the screen opens, whether bypass mode
|
|
3
|
+
* may start. Only an explicit yes counts; an empty line, end of input and
|
|
4
|
+
* anything else decline, so a script that happens to reach it never says yes
|
|
5
|
+
* by accident.
|
|
6
|
+
*/
|
|
7
|
+
export declare function askBypassConsent(io?: {
|
|
8
|
+
readonly input?: NodeJS.ReadableStream;
|
|
9
|
+
readonly output?: NodeJS.WritableStream;
|
|
10
|
+
}): Promise<boolean>;
|
|
11
|
+
//# sourceMappingURL=consent-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent-prompt.d.ts","sourceRoot":"","sources":["../../src/permissions/consent-prompt.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACrC,EAAE,GAAE;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;CAClC,GACJ,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function acknowledgementsPath(home?: string): string;
|
|
2
|
+
/** Whether the person has already accepted what bypass mode does. */
|
|
3
|
+
export declare function hasAcknowledgedBypass(home?: string): boolean;
|
|
4
|
+
/** Record the acknowledgement (idempotent). A failure to write is reported, not hidden. */
|
|
5
|
+
export declare function acknowledgeBypass(home?: string, now?: () => Date): void;
|
|
6
|
+
/** The words of the question, shared by the launch prompt and the in-terminal one. */
|
|
7
|
+
export declare const BYPASS_CONSENT_TITLE = "Run without asking?";
|
|
8
|
+
export declare const BYPASS_CONSENT_BODY = "In bypass mode Namzu runs commands and edits files anywhere you can, without asking, including outside this folder. It still stops for removing a home or top-level folder, leaving a sandbox, rules that say deny or ask, and a short list of destructive commands. Only use it in a folder and on a machine you trust.";
|
|
9
|
+
//# sourceMappingURL=consent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../src/permissions/consent.ts"],"names":[],"mappings":"AAwBA,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAcD,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,IAAuB,GAAG,IAAI,CAczF;AAED,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,wBAAwB,CAAA;AACzD,eAAO,MAAM,mBAAmB,6TAC2R,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type PermissionMode } from './mode.js';
|
|
2
|
+
import type { PermissionSettings } from './settings.js';
|
|
3
|
+
/**
|
|
4
|
+
* How a launch settles its permission mode, and what it may not start in.
|
|
5
|
+
*
|
|
6
|
+
* One function for every entry point (the terminal, `exec`, `exec --json`, a
|
|
7
|
+
* resident step) so the answer to "may this process run without asking?" is
|
|
8
|
+
* the same wherever the question is put.
|
|
9
|
+
*/
|
|
10
|
+
export interface LaunchEnvironment {
|
|
11
|
+
/** Whether the process runs as the superuser. */
|
|
12
|
+
readonly root: boolean;
|
|
13
|
+
/** Whether it runs inside a container or a sandbox that already bounds it. */
|
|
14
|
+
readonly sandboxed: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Whether a container or sandbox already bounds this process. */
|
|
17
|
+
export declare function detectSandbox(env?: NodeJS.ProcessEnv): boolean;
|
|
18
|
+
export declare function detectLaunchEnvironment(env?: NodeJS.ProcessEnv): LaunchEnvironment;
|
|
19
|
+
/**
|
|
20
|
+
* Why a process may not start in `mode`, in words for the person who typed the
|
|
21
|
+
* flag, or undefined when it may.
|
|
22
|
+
*
|
|
23
|
+
* Bypass is refused as the superuser outside a sandbox: with no account
|
|
24
|
+
* boundary and no container, "run everything" is the whole machine. This is a
|
|
25
|
+
* decision about the process, not about a rule, so no setting lifts it.
|
|
26
|
+
*/
|
|
27
|
+
export declare function launchRefusal(mode: PermissionMode, options?: {
|
|
28
|
+
readonly settings?: PermissionSettings | undefined;
|
|
29
|
+
readonly environment?: LaunchEnvironment | undefined;
|
|
30
|
+
}): string | undefined;
|
|
31
|
+
export interface LaunchPlan {
|
|
32
|
+
/** The mode the session starts in. */
|
|
33
|
+
readonly mode: PermissionMode;
|
|
34
|
+
/** Why: the flag, the bypass alias, the configured default, or nothing. */
|
|
35
|
+
readonly source: 'launch-flag' | 'launch-bypass' | 'config-default' | 'default';
|
|
36
|
+
/** Whether Shift+Tab and `/permissions` may reach bypass in this session. */
|
|
37
|
+
readonly bypassAvailable: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The terminal's starting mode from the command line and the configuration.
|
|
41
|
+
*
|
|
42
|
+
* A `--permission-mode` names the mode outright and wins over the aliases. The
|
|
43
|
+
* aliases (`--yolo`, `--dangerously-skip-permissions`) mean bypass. With
|
|
44
|
+
* neither, the configured `permissions.defaultMode` applies, and a default that
|
|
45
|
+
* the settings switched off falls back to `prompt` rather than refusing to
|
|
46
|
+
* start: nobody typed it on this launch.
|
|
47
|
+
*/
|
|
48
|
+
export declare function planLaunchMode(opts: {
|
|
49
|
+
readonly permissionModeFlag?: string | undefined;
|
|
50
|
+
readonly skipPermissions?: boolean | undefined;
|
|
51
|
+
readonly allowBypassFlag?: boolean | undefined;
|
|
52
|
+
readonly settings?: PermissionSettings | undefined;
|
|
53
|
+
readonly environment?: LaunchEnvironment | undefined;
|
|
54
|
+
}): {
|
|
55
|
+
readonly plan: LaunchPlan;
|
|
56
|
+
} | {
|
|
57
|
+
readonly error: string;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=launch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/permissions/launch.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,cAAc,EAInB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD;;;;;;GAMG;AAEH,MAAM,WAAW,iBAAiB;IACjC,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC3B;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAG3E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,iBAAiB,CAK/F;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IACR,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAC/C,GACJ,MAAM,GAAG,SAAS,CAcpB;AAED,MAAM,WAAW,UAAU;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,GAAG,gBAAgB,GAAG,SAAS,CAAA;IAC/E,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CACpD,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA2C7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ResumeHandler, type SessionApprovalPolicy } from '@namzu/sdk';
|
|
2
2
|
import { type PermissionMode } from './mode.js';
|
|
3
3
|
/**
|
|
4
4
|
* A turn's permission mode, changeable while the turn runs.
|
|
@@ -54,9 +54,10 @@ export interface LiveModeControl {
|
|
|
54
54
|
/**
|
|
55
55
|
* Whether the kernel must send a batch to `handler` even when a rule allows
|
|
56
56
|
* every call in it, or a grant from earlier in the turn covers it
|
|
57
|
-
* (`reviewAllowedCalls`). True
|
|
58
|
-
* the rules
|
|
59
|
-
*
|
|
57
|
+
* (`reviewAllowedCalls`). True in plan mode, the one mode stricter than
|
|
58
|
+
* the rules (it refuses a change a rule would let through), and in the
|
|
59
|
+
* classifier mode, which looks at a call an allow rule is too wide to vouch
|
|
60
|
+
* for. Read per batch, so entering either mid-turn reaches the next batch.
|
|
60
61
|
*/
|
|
61
62
|
reviewAllowedCalls(): boolean;
|
|
62
63
|
/** Receive the turn's approval-policy box (`onApprovalPolicy`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-mode.d.ts","sourceRoot":"","sources":["../../src/permissions/live-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"live-mode.d.ts","sourceRoot":"","sources":["../../src/permissions/live-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,qBAAqB,EAA2B,MAAM,YAAY,CAAA;AAEpG,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,WAAW,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,WAAW,eAAe;IAC/B,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,uFAAuF;IACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,cAAc,CAAA;IACpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,aAAa,CAAA;CAC5D;AAED,MAAM,WAAW,eAAe;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAA;IACpC,mDAAmD;IACnD,OAAO,IAAI,cAAc,CAAA;IACzB;;;;;;;OAOG;IACH,kBAAkB,IAAI,OAAO,CAAA;IAC7B,mEAAmE;IACnE,MAAM,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACxC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3D;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,KAAK,GAAG,eAAe,GAC3B,MAAM,CASR;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAwD/E"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export declare const PERMISSION_MODE_NAMES: readonly ["prompt", "accept-edits", "
|
|
1
|
+
export declare const PERMISSION_MODE_NAMES: readonly ["prompt", "accept-edits", "plan", "bypass", "auto", "strict"];
|
|
2
|
+
export type PermissionModeName = (typeof PERMISSION_MODE_NAMES)[number];
|
|
2
3
|
//# sourceMappingURL=mode-names.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode-names.d.ts","sourceRoot":"","sources":["../../src/permissions/mode-names.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mode-names.d.ts","sourceRoot":"","sources":["../../src/permissions/mode-names.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,qBAAqB,yEAOxB,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReviewMode } from '@namzu/sdk';
|
|
2
|
+
import { type PermissionModeName } from './mode-names.js';
|
|
2
3
|
/**
|
|
3
4
|
* How a turn resolves the calls no rule decided.
|
|
4
5
|
*
|
|
@@ -27,40 +28,79 @@ import { type ReviewMode } from '@namzu/sdk';
|
|
|
27
28
|
* floor sits above both and no mode reaches it either.
|
|
28
29
|
*/
|
|
29
30
|
export type PermissionMode = ReviewMode;
|
|
31
|
+
/**
|
|
32
|
+
* The kernel modes a person can choose, in the order the picker lists them.
|
|
33
|
+
*
|
|
34
|
+
* The CLI works in the kernel's mode names inside and the CLI's own words at
|
|
35
|
+
* the edge (`permissionModeFromName`, `permissionModeName`): the word `auto`
|
|
36
|
+
* means the classifier to a person and `classify` to the kernel, while the
|
|
37
|
+
* kernel's `auto` stays what an unattended run uses. The kernel's `auto` is
|
|
38
|
+
* not in this list because nobody picks it.
|
|
39
|
+
*/
|
|
30
40
|
export declare const PERMISSION_MODES: readonly PermissionMode[];
|
|
41
|
+
/** The mode a typed name means, or undefined for a word that is not one. */
|
|
42
|
+
export declare function permissionModeFromName(name: unknown): PermissionMode | undefined;
|
|
43
|
+
/** Whether a typed word names a mode a person can choose. */
|
|
44
|
+
export declare function isPermissionModeName(value: unknown): value is PermissionModeName;
|
|
45
|
+
/** The word a person uses for a kernel mode. The kernel's `auto` is the unattended default. */
|
|
46
|
+
export declare function permissionModeName(mode: PermissionMode): string;
|
|
31
47
|
export { ACCEPT_EDITS_TOOLS, PLAN_MODE_REFUSAL } from '@namzu/sdk';
|
|
48
|
+
/** Whether a value is a kernel review mode (what the wire between Desktop and the CLI carries). */
|
|
32
49
|
export declare const isPermissionMode: (value: unknown) => value is PermissionMode;
|
|
33
50
|
export declare function permissionModeLabel(mode: PermissionMode): string;
|
|
34
51
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
52
|
+
* What Shift+Tab can reach in this session: the two modes that stop asking are
|
|
53
|
+
* opt-in, so each is a door that is open or shut, not a mode in a list.
|
|
54
|
+
*/
|
|
55
|
+
export interface ModeAvailability {
|
|
56
|
+
readonly bypass: boolean;
|
|
57
|
+
readonly auto: boolean;
|
|
58
|
+
}
|
|
59
|
+
/** The cycle with every stop on it. */
|
|
60
|
+
export declare const FULL_AVAILABILITY: ModeAvailability;
|
|
61
|
+
/**
|
|
62
|
+
* The mode Shift+Tab moves to. The reference's cycle runs default, accept
|
|
63
|
+
* edits, plan, then bypass and auto when the session may use them, then back
|
|
64
|
+
* to default. `strict` is not on it, and neither is the kernel's unattended
|
|
65
|
+
* `auto`: leaving either goes back to `prompt`.
|
|
39
66
|
*/
|
|
40
|
-
export declare function nextCycleMode(current: PermissionMode,
|
|
67
|
+
export declare function nextCycleMode(current: PermissionMode, available: ModeAvailability): PermissionMode;
|
|
41
68
|
/**
|
|
42
|
-
* Whether
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
69
|
+
* Whether bypass may be entered in this session.
|
|
70
|
+
*
|
|
71
|
+
* A flag that names it (`--yolo`, `--dangerously-skip-permissions`,
|
|
72
|
+
* `--allow-dangerously-skip-permissions`, `--permission-mode bypass`) or the
|
|
73
|
+
* operator's own `permissions.defaultMode: bypass` opens the door; the
|
|
74
|
+
* `permissions.disableBypassMode` setting shuts it for good. The loader has
|
|
75
|
+
* already dropped a project file's `defaultMode: bypass`, so what arrives here
|
|
76
|
+
* is trusted.
|
|
46
77
|
*/
|
|
47
|
-
export declare function
|
|
48
|
-
readonly
|
|
49
|
-
readonly
|
|
78
|
+
export declare function bypassAvailable(opts: {
|
|
79
|
+
readonly flagged: boolean;
|
|
80
|
+
readonly defaultMode?: PermissionModeName | undefined;
|
|
81
|
+
readonly disabled?: boolean | undefined;
|
|
82
|
+
}): boolean;
|
|
83
|
+
/** Whether auto may be entered: on unless switched off, and only with a model to ask. */
|
|
84
|
+
export declare function autoAvailable(opts: {
|
|
85
|
+
readonly disabled?: boolean | undefined;
|
|
86
|
+
readonly classifierUsable: boolean;
|
|
50
87
|
}): boolean;
|
|
51
88
|
/** The behavior shown by both the permission selector and the session report. */
|
|
52
89
|
export declare function permissionModeDescription(mode: PermissionMode): string;
|
|
90
|
+
/** The reason a typed name is not a mode, naming the ones that are. */
|
|
91
|
+
export declare function unknownPermissionModeMessage(flag: string): string;
|
|
53
92
|
/**
|
|
54
93
|
* The mode for a turn, from the flag, the bypass alias, and whether anyone is
|
|
55
94
|
* there to answer.
|
|
56
95
|
*
|
|
57
|
-
* `--yolo`
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
96
|
+
* `--yolo` and `--dangerously-skip-permissions` mean `bypass`. A rule that
|
|
97
|
+
* denies, a rule that asks, the dangerous-pattern floor and the few things no
|
|
98
|
+
* mode may approve in advance still hold; everything else runs without a
|
|
99
|
+
* question, including a path outside the folder and a program the line does
|
|
100
|
+
* not name.
|
|
101
|
+
*
|
|
102
|
+
* With nobody to ask and no flag the kernel's unattended `auto` applies: it
|
|
103
|
+
* approves routine calls and refuses whatever would have been a question.
|
|
64
104
|
*/
|
|
65
105
|
export declare function resolvePermissionMode(opts: {
|
|
66
106
|
readonly flag?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/permissions/mode.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/permissions/mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,YAAY,CAAA;AAE1D,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,CAAA;AAEvC;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAOrD,CAAA;AAWD,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAIhF;AAED,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAS/D;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAElE,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,cAA6B,CAAA;AAEzF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAiBhE;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACtB;AAED,uCAAuC;AACvC,eAAO,MAAM,iBAAiB,EAAE,gBAA+C,CAAA;AAE/E;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,gBAAgB,GACzB,cAAc,CAehB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACvC,GAAG,OAAO,CAGV;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,IAAI,EAAE;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;CAClC,GAAG,OAAO,CAEV;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAiBtE;AAED,uEAAuE;AACvE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC7B,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAU/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/permissions/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAGN,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAIX,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/permissions/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAGN,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAIX,MAAM,YAAY,CAAA;AAInB,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,aAAa,CAAA;AAEjF,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;AAIvD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAE1F,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;AAExE,uEAAuE;AACvE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE,CAEjG;AAID,qFAAqF;AACrF,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,iBAAiB,GAAG,SAAS,EACrC,GAAG,GAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAe,GACrC,IAAI,CAWN;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC5C;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAClD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,OAAO,GAAG,MAAe,GACjC,MAAM,CASR;AA+CD,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,iBAAiB,GAAG,SAAS,EACrC,MAAM,CAAC,EAAE,sBAAsB,GAC7B,mBAAmB,CAwJrB;AAwCD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE,GAChD,iBAAiB,CASnB;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;CACxD,GAAG,SAAS,iBAAiB,EAAE,CAG/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE,EAClD,MAAM,CAAC,EAAE,sBAAsB,GAC7B,mBAAmB,CAiDrB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { PermissionModeName } from './mode-names.js';
|
|
2
|
+
/**
|
|
3
|
+
* The settings that live beside the tool rules in the `permissions` table.
|
|
4
|
+
*
|
|
5
|
+
* A key of that table is a tool name, and its value an effect. These four are
|
|
6
|
+
* not tools; they say which mode a session starts in, whether the two
|
|
7
|
+
* no-prompt modes may be reached at all, and how the auto mode's classifier is
|
|
8
|
+
* tuned. They are lifted out of the table when a config is loaded, so the rule
|
|
9
|
+
* compiler never sees them, and the authority of the file they came from decides
|
|
10
|
+
* which of them count.
|
|
11
|
+
*
|
|
12
|
+
* ## Who may say what
|
|
13
|
+
*
|
|
14
|
+
* A mode that stops asking is the operator's choice, never a repository's. A
|
|
15
|
+
* project file that could write `defaultMode: bypass` would make every clone of
|
|
16
|
+
* it a session that runs everything the moment someone opens it. So:
|
|
17
|
+
*
|
|
18
|
+
* - `defaultMode` of `bypass` or `auto` is honoured from the user's file and the
|
|
19
|
+
* managed file only. A project may still pick a stricter default.
|
|
20
|
+
* - `disableBypassMode` and `disableAutoMode` can only close a door, so every
|
|
21
|
+
* file may write them, and a `true` in one file is not undone by another.
|
|
22
|
+
* - `autoMode` names a model that receives the conversation and the rules that
|
|
23
|
+
* steer the classifier, so it is the operator's alone, like `routing`.
|
|
24
|
+
*/
|
|
25
|
+
/** The settings, after the layers have been combined. */
|
|
26
|
+
export interface PermissionSettings {
|
|
27
|
+
/** The mode a session starts in when the command line names none. */
|
|
28
|
+
readonly defaultMode?: PermissionModeName;
|
|
29
|
+
/** No session may enter bypass, whatever flag was given. */
|
|
30
|
+
readonly disableBypassMode?: boolean;
|
|
31
|
+
/** No session may enter auto. */
|
|
32
|
+
readonly disableAutoMode?: boolean;
|
|
33
|
+
readonly autoMode?: AutoModeSettings;
|
|
34
|
+
/**
|
|
35
|
+
* What was written and not honoured, one plain sentence each, so a person
|
|
36
|
+
* who put a setting in the wrong file is told rather than left to wonder.
|
|
37
|
+
*/
|
|
38
|
+
readonly ignored?: readonly string[];
|
|
39
|
+
}
|
|
40
|
+
/** How the auto mode's classifier is steered. Every list accepts the `"$defaults"` entry. */
|
|
41
|
+
export interface AutoModeSettings {
|
|
42
|
+
/**
|
|
43
|
+
* The classifier's model: `provider:model`, a bare model of the session's
|
|
44
|
+
* provider, or `smallModel` for the side model. Absent: the session's own model.
|
|
45
|
+
*/
|
|
46
|
+
readonly model?: string;
|
|
47
|
+
readonly allow?: readonly string[];
|
|
48
|
+
readonly softDeny?: readonly string[];
|
|
49
|
+
readonly hardDeny?: readonly string[];
|
|
50
|
+
readonly environment?: readonly string[];
|
|
51
|
+
}
|
|
52
|
+
/** The keys of the `permissions` table that are settings and not tool names. */
|
|
53
|
+
export declare const PERMISSION_SETTING_KEYS: readonly string[];
|
|
54
|
+
export declare function isPermissionSettingKey(key: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* What is wrong with the settings in one `permissions` table, or undefined.
|
|
57
|
+
* The loader raises it as a config error so a typo is said at start-up.
|
|
58
|
+
*/
|
|
59
|
+
export declare function permissionSettingsProblem(table: Readonly<Record<string, unknown>>): {
|
|
60
|
+
readonly path: readonly string[];
|
|
61
|
+
readonly message: string;
|
|
62
|
+
} | undefined;
|
|
63
|
+
/** Whether a file speaks with the operator's authority or the workspace's. */
|
|
64
|
+
export type SettingsAuthority = 'operator' | 'workspace';
|
|
65
|
+
/**
|
|
66
|
+
* Takes the settings out of one layer's `permissions` table.
|
|
67
|
+
*
|
|
68
|
+
* `rules` is the table without them; `settings` is what the layer's authority
|
|
69
|
+
* lets stand; `ignored` says what it does not.
|
|
70
|
+
*/
|
|
71
|
+
export declare function splitPermissionsTable<T>(table: Readonly<Record<string, T>>, authority: SettingsAuthority, where: string): {
|
|
72
|
+
rules: Record<string, T>;
|
|
73
|
+
settings: PermissionSettings;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Combines the layers' settings, lowest precedence first. A later default
|
|
77
|
+
* replaces an earlier one; a `true` that closes a mode stays; the classifier
|
|
78
|
+
* settings of a later layer replace those of an earlier one key by key.
|
|
79
|
+
*/
|
|
80
|
+
export declare function mergePermissionSettings(base: PermissionSettings | undefined, next: PermissionSettings): PermissionSettings;
|
|
81
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/permissions/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IAClC,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IACzC,4DAA4D;IAC5D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC,iCAAiC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAChC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAKpD,CAAA;AAKD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE3D;AAKD;;;GAGG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAwC5E;AAED,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,WAAW,CAAA;AAExD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACtC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAClC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,kBAAkB,CAAA;CAAE,CAsC5D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,kBAAkB,GAAG,SAAS,EACpC,IAAI,EAAE,kBAAkB,GACtB,kBAAkB,CAYpB"}
|
package/dist/tui/App.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import { type Message } from '@namzu/sdk';
|
|
1
|
+
import { type Message, type ReasoningEffort, type SessionId } from '@namzu/sdk';
|
|
2
|
+
import { type SubscriptionProviderId } from '../integrations/providers/index.js';
|
|
3
|
+
import type { Batch } from '../integrations/subagents/batches.js';
|
|
4
|
+
import { type ModeAvailability, type PermissionMode } from '../permissions/mode.js';
|
|
5
|
+
import { type ChoicePickerOption } from './ChoicePicker.js';
|
|
6
|
+
import { type AgentSession } from './agent.js';
|
|
2
7
|
import type { TuiExitSummary } from './exit-summary.js';
|
|
8
|
+
import { type CommandPickerEntry } from './slashCommands.js';
|
|
3
9
|
import type { TranscriptMessage, TuiContext } from './types.js';
|
|
10
|
+
import { type ReviewCommit } from './workspace-review.js';
|
|
4
11
|
export interface AppProps {
|
|
5
12
|
readonly ctx: TuiContext;
|
|
6
13
|
readonly onExitSummary?: (summary: TuiExitSummary) => void;
|
|
@@ -20,9 +27,161 @@ export type ExternalEditorAdapter = (request: {
|
|
|
20
27
|
readonly cwd: string;
|
|
21
28
|
readonly signal: AbortSignal;
|
|
22
29
|
}) => Promise<string>;
|
|
30
|
+
type ReviewPreset = 'base-branch' | 'uncommitted' | 'commit' | 'custom';
|
|
31
|
+
type PluginChoiceState = ({
|
|
32
|
+
readonly kind: 'plugin';
|
|
33
|
+
} | {
|
|
34
|
+
readonly kind: 'plugin-action';
|
|
35
|
+
}) & {
|
|
36
|
+
readonly title: string;
|
|
37
|
+
readonly notice?: string;
|
|
38
|
+
readonly owner: AgentSession;
|
|
39
|
+
readonly pluginName?: string;
|
|
40
|
+
readonly busy?: boolean;
|
|
41
|
+
readonly values: readonly string[];
|
|
42
|
+
readonly options: readonly ChoicePickerOption[];
|
|
43
|
+
};
|
|
44
|
+
type ChoicePickerState = {
|
|
45
|
+
readonly back?: ChoicePickerState;
|
|
46
|
+
readonly request?: object;
|
|
47
|
+
} & (PluginChoiceState | {
|
|
48
|
+
readonly kind: 'resume-goal';
|
|
49
|
+
readonly title: string;
|
|
50
|
+
readonly notice: string;
|
|
51
|
+
readonly sessionId: string;
|
|
52
|
+
readonly values: readonly ('resume' | 'later')[];
|
|
53
|
+
readonly options: readonly ChoicePickerOption[];
|
|
54
|
+
} | {
|
|
55
|
+
/**
|
|
56
|
+
* A question the model put to the operator. `values` are option ids
|
|
57
|
+
* plus `FREE_TEXT_ANSWER` when the model allowed an answer in the
|
|
58
|
+
* operator's own words; the resolver lives in a ref, like a
|
|
59
|
+
* permission's, because a picker is state and a promise is not.
|
|
60
|
+
*/
|
|
61
|
+
readonly kind: 'user-question';
|
|
62
|
+
readonly title: string;
|
|
63
|
+
readonly notice?: string;
|
|
64
|
+
readonly values: readonly string[];
|
|
65
|
+
readonly options: readonly ChoicePickerOption[];
|
|
66
|
+
} | {
|
|
67
|
+
readonly kind: 'command';
|
|
68
|
+
readonly title: string;
|
|
69
|
+
readonly notice?: string;
|
|
70
|
+
readonly values: readonly CommandPickerEntry[];
|
|
71
|
+
readonly options: readonly ChoicePickerOption[];
|
|
72
|
+
readonly windowSize: number;
|
|
73
|
+
} | {
|
|
74
|
+
/**
|
|
75
|
+
* `/agents batches`. `values` holds `'loading'` alone while the index
|
|
76
|
+
* read is still in flight — its lone option carries a `disabledReason`,
|
|
77
|
+
* so Enter cannot select it — and is replaced with the resolved rows
|
|
78
|
+
* once it settles; never a mix of the two.
|
|
79
|
+
*/
|
|
80
|
+
readonly kind: 'agent-batches';
|
|
81
|
+
readonly title: string;
|
|
82
|
+
readonly notice?: string;
|
|
83
|
+
readonly values: readonly (Batch | 'loading')[];
|
|
84
|
+
readonly options: readonly ChoicePickerOption[];
|
|
85
|
+
} | {
|
|
86
|
+
/** `/workflows`: the runs of this conversation; `values` are their run ids. */
|
|
87
|
+
readonly kind: 'workflow-runs';
|
|
88
|
+
readonly title: string;
|
|
89
|
+
readonly notice?: string;
|
|
90
|
+
readonly values: readonly string[];
|
|
91
|
+
readonly options: readonly ChoicePickerOption[];
|
|
92
|
+
} | {
|
|
93
|
+
readonly kind: 'archive-conversation';
|
|
94
|
+
readonly title: string;
|
|
95
|
+
readonly notice?: string;
|
|
96
|
+
readonly values: readonly ('cancel' | 'archive')[];
|
|
97
|
+
readonly options: readonly ChoicePickerOption[];
|
|
98
|
+
} | {
|
|
99
|
+
readonly kind: 'export-destination';
|
|
100
|
+
readonly title: string;
|
|
101
|
+
readonly notice?: string;
|
|
102
|
+
readonly values: readonly ('clipboard' | 'file')[];
|
|
103
|
+
readonly options: readonly ChoicePickerOption[];
|
|
104
|
+
} | {
|
|
105
|
+
readonly kind: 'permission-mode';
|
|
106
|
+
readonly title: string;
|
|
107
|
+
readonly notice?: string;
|
|
108
|
+
readonly values: readonly (PermissionMode | 'more' | 'rules')[];
|
|
109
|
+
readonly options: readonly ChoicePickerOption[];
|
|
110
|
+
} | {
|
|
111
|
+
/** The first switch into bypass: asked once, then remembered. */
|
|
112
|
+
readonly kind: 'bypass-consent';
|
|
113
|
+
readonly title: string;
|
|
114
|
+
readonly notice?: string;
|
|
115
|
+
/** Whether the switch was asked for by name (and so gets a reply line). */
|
|
116
|
+
readonly announce: boolean;
|
|
117
|
+
readonly values: readonly ('decline' | 'accept')[];
|
|
118
|
+
readonly options: readonly ChoicePickerOption[];
|
|
119
|
+
} | {
|
|
120
|
+
readonly kind: 'reasoning-effort';
|
|
121
|
+
readonly title: string;
|
|
122
|
+
readonly notice?: string;
|
|
123
|
+
/** The published model whose paused queue this follow-up may configure. */
|
|
124
|
+
readonly selectedSession?: AgentSession;
|
|
125
|
+
/** The last entry is the hypermode row, below a rule; never a `ReasoningEffort`. */
|
|
126
|
+
readonly values: readonly (ReasoningEffort | undefined | 'hypermode')[];
|
|
127
|
+
readonly options: readonly ChoicePickerOption[];
|
|
128
|
+
} | {
|
|
129
|
+
/**
|
|
130
|
+
* A command that acts on the conversation, typed while an agent is
|
|
131
|
+
* viewed: asks once, then runs it against the conversation.
|
|
132
|
+
*/
|
|
133
|
+
readonly kind: 'agent-view-command';
|
|
134
|
+
readonly title: string;
|
|
135
|
+
readonly notice?: string;
|
|
136
|
+
readonly line: string;
|
|
137
|
+
readonly values: readonly ('cancel' | 'run')[];
|
|
138
|
+
readonly options: readonly ChoicePickerOption[];
|
|
139
|
+
} | {
|
|
140
|
+
readonly kind: 'feedback-rating';
|
|
141
|
+
readonly title: string;
|
|
142
|
+
readonly notice?: string;
|
|
143
|
+
readonly messageId: string;
|
|
144
|
+
readonly sessionId: SessionId;
|
|
145
|
+
readonly values: readonly ('good' | 'bad')[];
|
|
146
|
+
readonly options: readonly ChoicePickerOption[];
|
|
147
|
+
} | {
|
|
148
|
+
readonly kind: 'skill';
|
|
149
|
+
readonly title: string;
|
|
150
|
+
readonly notice?: string;
|
|
151
|
+
readonly values: readonly string[];
|
|
152
|
+
readonly options: readonly ChoicePickerOption[];
|
|
153
|
+
} | {
|
|
154
|
+
readonly kind: 'credential-logout';
|
|
155
|
+
readonly title: string;
|
|
156
|
+
readonly notice?: string;
|
|
157
|
+
readonly values: readonly (SubscriptionProviderId | 'google')[];
|
|
158
|
+
readonly options: readonly ChoicePickerOption[];
|
|
159
|
+
} | {
|
|
160
|
+
readonly kind: 'review-preset';
|
|
161
|
+
readonly title: string;
|
|
162
|
+
readonly notice?: string;
|
|
163
|
+
readonly values: readonly ReviewPreset[];
|
|
164
|
+
readonly options: readonly ChoicePickerOption[];
|
|
165
|
+
} | {
|
|
166
|
+
readonly kind: 'review-branch';
|
|
167
|
+
readonly title: string;
|
|
168
|
+
readonly notice?: string;
|
|
169
|
+
readonly values: readonly string[];
|
|
170
|
+
readonly options: readonly ChoicePickerOption[];
|
|
171
|
+
} | {
|
|
172
|
+
readonly kind: 'review-commit';
|
|
173
|
+
readonly title: string;
|
|
174
|
+
readonly notice?: string;
|
|
175
|
+
readonly values: readonly ReviewCommit[];
|
|
176
|
+
readonly options: readonly ChoicePickerOption[];
|
|
177
|
+
});
|
|
23
178
|
/** Exact operator-authored prompts that belong in terminal input history. */
|
|
24
179
|
export declare function promptHistoryFromConversation(messages: readonly Message[]): readonly string[];
|
|
25
180
|
/** Build the transcript projection of exact model-visible history. */
|
|
26
181
|
export declare function projectConversation(messages: readonly Message[], nextId: () => string, readableUserTexts?: readonly string[]): readonly TranscriptMessage[];
|
|
27
182
|
export declare function App({ ctx: initialCtx, onExitSummary, externalEditor, terminationExit, }: AppProps): import("react/jsx-runtime").JSX.Element;
|
|
183
|
+
export declare function permissionPicker(mode: PermissionMode, more?: boolean, availability?: ModeAvailability): Extract<ChoicePickerState, {
|
|
184
|
+
kind: 'permission-mode';
|
|
185
|
+
}>;
|
|
186
|
+
export {};
|
|
28
187
|
//# sourceMappingURL=App.d.ts.map
|
package/dist/tui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAWN,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"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"}
|