@namzu/cli 36.5.0 → 37.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 +159 -0
- package/dist/bin.js +1 -1
- package/dist/boot-narrative.d.ts.map +1 -1
- package/dist/chunks/{acp-QQHLC6HY.js → acp-NJUDAWEV.js} +54 -49
- package/dist/chunks/acp-NJUDAWEV.js.map +6 -0
- package/dist/chunks/{activity-command-7A2NGBRO.js → activity-command-YUENOVUC.js} +13 -13
- package/dist/chunks/{add-VK7JVGYN.js → add-3F3PRHZ5.js} +23 -24
- package/dist/chunks/add-3F3PRHZ5.js.map +6 -0
- package/dist/chunks/{agent-IYFZOSN7.js → agent-KYILQUOP.js} +26 -23
- package/dist/chunks/agent-session-2YMHOAKF.js +49 -0
- package/dist/chunks/{archive-7A5RLRRZ.js → archive-VXAYIALI.js} +8 -8
- package/dist/chunks/{bin-main-QWTSTI5W.js → bin-main-7CCZXZ53.js} +7 -7
- package/dist/chunks/{browser-Z4JR5SV4.js → browser-LAZRYCOJ.js} +6 -6
- package/dist/chunks/{chat-452HRD23.js → chat-RI2TEONK.js} +20 -19
- package/dist/chunks/{chat-452HRD23.js.map → chat-RI2TEONK.js.map} +1 -1
- package/dist/chunks/{chunk-DQNJEGUV.js → chunk-2IWFTP44.js} +2 -2
- package/dist/chunks/{chunk-R5QMJRF7.js → chunk-2K4A2MVQ.js} +4 -4
- package/dist/chunks/{chunk-HNX3JZWU.js → chunk-2KSXZBZK.js} +29 -6
- package/dist/chunks/{chunk-HNX3JZWU.js.map → chunk-2KSXZBZK.js.map} +1 -1
- package/dist/chunks/{chunk-KJLJVK4Y.js → chunk-34CCZWJM.js} +6 -6
- package/dist/chunks/{chunk-IFBWLO7J.js → chunk-3M5GHYIX.js} +4 -4
- package/dist/chunks/{chunk-R5OZ6DCD.js → chunk-3RGJ3AC7.js} +2 -2
- package/dist/chunks/{chunk-2IWLDZNE.js → chunk-4DDYSIB2.js} +4 -2
- package/dist/chunks/chunk-4DDYSIB2.js.map +6 -0
- package/dist/chunks/{chunk-P6AM76US.js → chunk-4JQ2VCTQ.js} +6 -6
- package/dist/chunks/{chunk-BQYV3WGF.js → chunk-5GUMVF2I.js} +2 -2
- package/dist/chunks/{chunk-E2OJSRDE.js → chunk-5J3T7DNL.js} +5208 -1146
- package/dist/chunks/chunk-5J3T7DNL.js.map +6 -0
- package/dist/chunks/{chunk-DSODVSO7.js → chunk-5RTONMXP.js} +11 -11
- package/dist/chunks/{chunk-7RP7HIBA.js → chunk-5Y2HRYPF.js} +2 -2
- package/dist/chunks/{chunk-QLB4KNQA.js → chunk-6V3D6JMG.js} +2 -2
- package/dist/chunks/{chunk-HBWHJCNO.js → chunk-7BXRAEQU.js} +23 -18
- package/dist/chunks/chunk-7BXRAEQU.js.map +6 -0
- package/dist/chunks/{chunk-KGKBG3U7.js → chunk-AHKD4XSH.js} +3 -3
- package/dist/chunks/{chunk-6G3TX6QD.js → chunk-BPGADECQ.js} +3 -3
- package/dist/chunks/{chunk-WBR7JG42.js → chunk-BXJ7G5XN.js} +1085 -141
- package/dist/chunks/chunk-BXJ7G5XN.js.map +6 -0
- package/dist/chunks/{chunk-KI7GP25X.js → chunk-DEYX6OXI.js} +3 -3
- package/dist/chunks/{chunk-3N54T4H4.js → chunk-DFLYRMHP.js} +2 -2
- package/dist/chunks/{chunk-AJLZB6G6.js → chunk-EHEEEVWJ.js} +3 -3
- package/dist/chunks/{chunk-FPMRK6W6.js → chunk-EIMWVYBK.js} +3 -3
- package/dist/chunks/{chunk-QB6CLDHT.js → chunk-EV57ARS2.js} +23 -9
- package/dist/chunks/chunk-EV57ARS2.js.map +6 -0
- package/dist/chunks/{chunk-QXUJNVPO.js → chunk-I7GFMQGF.js} +2 -2
- package/dist/chunks/{chunk-PDSZNG3C.js → chunk-IOGROWMG.js} +3 -3
- package/dist/chunks/{chunk-PGEDH5H5.js → chunk-JAPAPPNH.js} +89 -4
- package/dist/chunks/{chunk-PGEDH5H5.js.map → chunk-JAPAPPNH.js.map} +2 -2
- package/dist/chunks/{chunk-QQ2TBG2P.js → chunk-K7ADP5FF.js} +6 -6
- package/dist/chunks/{chunk-5TIOW3QX.js → chunk-KF7KR67Z.js} +17 -17
- package/dist/chunks/{chunk-7TW2GZ5D.js → chunk-KXRBZ2IT.js} +80 -39
- package/dist/chunks/chunk-KXRBZ2IT.js.map +6 -0
- package/dist/chunks/{chunk-XMN2OSBG.js → chunk-LSMOWOWC.js} +57 -4
- package/dist/chunks/{chunk-XMN2OSBG.js.map → chunk-LSMOWOWC.js.map} +1 -1
- package/dist/chunks/{chunk-4BBUZZDS.js → chunk-MK4U26GZ.js} +2 -2
- package/dist/chunks/{chunk-J7GTTLAZ.js → chunk-MR34S4AM.js} +4 -4
- package/dist/chunks/{chunk-LNBO3KD2.js → chunk-NADDUQSP.js} +182 -18
- package/dist/chunks/chunk-NADDUQSP.js.map +6 -0
- package/dist/chunks/{chunk-WEVDA4IS.js → chunk-NQGVXNXO.js} +6 -6
- package/dist/chunks/{chunk-OQHSD4WX.js → chunk-O3XQA4ZZ.js} +4 -4
- package/dist/chunks/{chunk-7IKMMZ7R.js → chunk-OEI64DLJ.js} +2 -2
- package/dist/chunks/{chunk-CAOXGCUA.js → chunk-PGPL6KIS.js} +3 -3
- package/dist/chunks/{chunk-TC7HMH6P.js → chunk-PSZ6GS75.js} +2 -2
- package/dist/chunks/{chunk-QNHDYR4J.js → chunk-PXLJT6YH.js} +13 -13
- package/dist/chunks/{chunk-AM6K4LK2.js → chunk-QEWQONLW.js} +2 -2
- package/dist/chunks/{chunk-3I5CIWA6.js → chunk-QXSIBEFU.js} +3 -3
- package/dist/chunks/{chunk-GELWAUNY.js → chunk-SDHJ2YUN.js} +7 -3
- package/dist/chunks/chunk-SDHJ2YUN.js.map +6 -0
- package/dist/chunks/{chunk-GKVDZZN6.js → chunk-SJW2UYTK.js} +2 -2
- package/dist/chunks/{chunk-6YVH6LAU.js → chunk-STHNLNY5.js} +4 -4
- package/dist/chunks/{chunk-7NGZ5XGK.js → chunk-T5D5HHTY.js} +24 -16
- package/dist/chunks/{chunk-7NGZ5XGK.js.map → chunk-T5D5HHTY.js.map} +1 -1
- package/dist/chunks/{chunk-OF6QIV42.js → chunk-TCXO5WZX.js} +2 -2
- package/dist/chunks/{chunk-ZBWLULPM.js → chunk-UMVFXQYE.js} +4 -4
- package/dist/chunks/{chunk-KR2AARGO.js → chunk-UY74BJBW.js} +2 -2
- package/dist/chunks/{chunk-HUTSLFLA.js → chunk-VA63RY7U.js} +4 -4
- package/dist/chunks/{chunk-KX2JZX4Q.js → chunk-VHEMDWNA.js} +19 -18
- package/dist/chunks/{chunk-KX2JZX4Q.js.map → chunk-VHEMDWNA.js.map} +1 -1
- package/dist/chunks/chunk-VNGFBD26.js +108 -0
- package/dist/chunks/chunk-VNGFBD26.js.map +6 -0
- package/dist/chunks/{chunk-OIGLY4EG.js → chunk-W5PML5BG.js} +2 -2
- package/dist/chunks/{chunk-KRUTBAWS.js → chunk-XAFTUVN7.js} +5 -5
- package/dist/chunks/{chunk-2Y3V7YTY.js → chunk-YJVLERBF.js} +2 -2
- package/dist/chunks/{chunk-EZ26PYSK.js → chunk-YQHHGBOR.js} +5 -3
- package/dist/chunks/chunk-YQHHGBOR.js.map +6 -0
- package/dist/chunks/{cli-runtime-KHQJO3WG.js → cli-runtime-KH73NP4C.js} +15 -11
- package/dist/chunks/cli-runtime-KH73NP4C.js.map +6 -0
- package/dist/chunks/{commands-GOFR6DU5.js → commands-IMV24FMR.js} +5 -5
- package/dist/chunks/{crash-report-BEZJS4TE.js → crash-report-VQBUHKGL.js} +6 -6
- package/dist/chunks/{dist-ZIZ457D5.js → dist-7Y7RRIE5.js} +4 -2
- package/dist/chunks/{dist-ZIZ457D5.js.map → dist-7Y7RRIE5.js.map} +1 -1
- package/dist/chunks/{dist-TFSA6QEB.js → dist-CQLUZMPF.js} +2 -2
- package/dist/chunks/{dist-2PTH7PME.js → dist-E6HO2DY4.js} +4 -3
- package/dist/chunks/{dist-2PTH7PME.js.map → dist-E6HO2DY4.js.map} +1 -1
- package/dist/chunks/{dist-GR6IFO7M.js → dist-EZYJPZFW.js} +3 -2
- package/dist/chunks/{dist-GR6IFO7M.js.map → dist-EZYJPZFW.js.map} +1 -1
- package/dist/chunks/{dist-AVGYNTRY.js → dist-LNY6YOW7.js} +2 -2
- package/dist/chunks/{dist-OLFVZDAR.js → dist-WAEUJUZL.js} +5 -2
- package/dist/chunks/dist-WAEUJUZL.js.map +6 -0
- package/dist/chunks/{dist-B3WFU7LE.js → dist-ZNBV3COW.js} +4 -3
- package/dist/chunks/{dist-B3WFU7LE.js.map → dist-ZNBV3COW.js.map} +1 -1
- package/dist/chunks/{doctor-Y366MZD7.js → doctor-DEG3FKDC.js} +7 -7
- package/dist/chunks/{drain-CQELENIA.js → drain-NPWQOBUJ.js} +21 -16
- package/dist/chunks/drain-NPWQOBUJ.js.map +6 -0
- package/dist/chunks/{eval-IUIKSMIP.js → eval-GI6JQAOX.js} +2 -2
- package/dist/chunks/{exec-CUF3USRR.js → exec-RP67LSL5.js} +57 -105
- package/dist/chunks/exec-RP67LSL5.js.map +6 -0
- package/dist/chunks/{home-OZK7SYKC.js → home-7EKRNFWG.js} +3 -3
- package/dist/chunks/{host-queries-OZ3GTNQB.js → host-queries-YN42AIUD.js} +17 -17
- package/dist/chunks/{lifecycle-EDPBG4CF.js → lifecycle-T7GDJRCI.js} +28 -29
- package/dist/chunks/{list-OKA3E7GI.js → list-FQZJ3GDF.js} +21 -22
- package/dist/chunks/list-FQZJ3GDF.js.map +6 -0
- package/dist/chunks/{login-NMPAF4D4.js → login-NO23T6HC.js} +9 -9
- package/dist/chunks/{logs-BLEDKYPA.js → logs-LJVTOGXE.js} +4 -4
- package/dist/chunks/{mcp-SO43UZSA.js → mcp-NBWL73J5.js} +23 -22
- package/dist/chunks/mcp-NBWL73J5.js.map +6 -0
- package/dist/chunks/{message-command-4CG7SPQA.js → message-command-YIURBF2Q.js} +40 -39
- package/dist/chunks/message-command-YIURBF2Q.js.map +6 -0
- package/dist/chunks/{operator-tools-BRBJUOP5.js → operator-tools-MQXMUQLG.js} +12 -12
- package/dist/chunks/{output-schema-Q74INRDV.js → output-schema-2BCRDYWG.js} +3 -3
- package/dist/chunks/{pal-Q4LLIL3Z.js → pal-PTOFIOCI.js} +14 -14
- package/dist/chunks/{providers-L4SRCWQ5.js → providers-YRNXCZW5.js} +6 -6
- package/dist/chunks/{resident-KROFLWQD.js → resident-QI33LA6J.js} +29 -28
- package/dist/chunks/resident-QI33LA6J.js.map +6 -0
- package/dist/chunks/resume-3R5VLEIS.js +21 -0
- package/dist/chunks/{resume-command-433WHYYJ.js → resume-command-7SGSPKXV.js} +4 -4
- package/dist/chunks/{schedule-YTD3NQTH.js → schedule-YOMKA5IF.js} +8 -8
- package/dist/chunks/{service-X2BXZORB.js → service-A4YKUMRI.js} +37 -38
- package/dist/chunks/service-A4YKUMRI.js.map +6 -0
- package/dist/chunks/session-step-N5EWWZ4K.js +26 -0
- package/dist/chunks/{skills-6U4GTACH.js → skills-BARULYB3.js} +11 -11
- package/dist/chunks/{state-JKH362WC.js → state-ZD6WF2PZ.js} +2 -2
- package/dist/chunks/{store-LMUDVSKO.js → store-HEOMPNER.js} +4 -4
- package/dist/chunks/{store-T6ITZS2N.js → store-RD7EX5RD.js} +14 -8
- package/dist/chunks/{store-ULDTJXKN.js → store-YWZ6SY2M.js} +6 -6
- package/dist/chunks/store-YWZ6SY2M.js.map +6 -0
- package/dist/chunks/{tui-T5O5A7F3.js → tui-JLOFXK7O.js} +2373 -828
- package/dist/chunks/tui-JLOFXK7O.js.map +6 -0
- package/dist/chunks/turndown.cjs-2NVZBL7F.js +17615 -0
- package/dist/chunks/turndown.cjs-2NVZBL7F.js.map +6 -0
- package/dist/chunks/{upgrade-FUJFUSY5.js → upgrade-FLMI5ZYW.js} +2 -2
- package/dist/chunks/{worktree-KJYHKRHL.js → worktree-GUWRR5KY.js} +10 -10
- package/dist/cli-runtime.d.ts +1 -1
- package/dist/cli-runtime.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/desktop-host.d.ts.map +1 -1
- package/dist/commands/drain.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/resume.d.ts +31 -0
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/config/debug.d.ts.map +1 -1
- package/dist/config/load.d.ts +21 -6
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/schema.d.ts +48 -4
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/context/doctrine.d.ts +9 -0
- package/dist/context/doctrine.d.ts.map +1 -1
- package/dist/context/runtime-message.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -15
- package/dist/integrations/notifications/idle.d.ts +48 -0
- package/dist/integrations/notifications/idle.d.ts.map +1 -0
- package/dist/integrations/notifications/terminal.d.ts +4 -0
- package/dist/integrations/notifications/terminal.d.ts.map +1 -1
- package/dist/integrations/resident/runner-worker.js +24 -24
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/sessions/ai-title.d.ts +45 -0
- package/dist/integrations/sessions/ai-title.d.ts.map +1 -0
- package/dist/integrations/sessions/store.d.ts +26 -0
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/small-model/route.d.ts +44 -0
- package/dist/integrations/small-model/route.d.ts.map +1 -0
- package/dist/integrations/small-model/side-model.d.ts +89 -0
- package/dist/integrations/small-model/side-model.d.ts.map +1 -0
- package/dist/integrations/subagents/runtime.d.ts +6 -0
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/pals/chat.d.ts.map +1 -1
- package/dist/pals/review.d.ts.map +1 -1
- package/dist/permissions/local-settings.d.ts +57 -0
- package/dist/permissions/local-settings.d.ts.map +1 -0
- package/dist/permissions/rules.d.ts +32 -0
- package/dist/permissions/rules.d.ts.map +1 -1
- package/dist/permissions/session-allow.d.ts +71 -17
- package/dist/permissions/session-allow.d.ts.map +1 -1
- package/dist/plan/approval.d.ts +43 -0
- package/dist/plan/approval.d.ts.map +1 -0
- package/dist/plan/exit-plan-mode-tool.d.ts +24 -0
- package/dist/plan/exit-plan-mode-tool.d.ts.map +1 -0
- package/dist/plan/plan-file.d.ts +10 -0
- package/dist/plan/plan-file.d.ts.map +1 -0
- package/dist/provider-retry.d.ts +21 -0
- package/dist/provider-retry.d.ts.map +1 -0
- package/dist/reminders/frame.d.ts +20 -0
- package/dist/reminders/frame.d.ts.map +1 -0
- package/dist/reminders/index.d.ts +24 -0
- package/dist/reminders/index.d.ts.map +1 -0
- package/dist/reminders/plan-mode.d.ts +25 -0
- package/dist/reminders/plan-mode.d.ts.map +1 -0
- package/dist/reminders/task-nudge.d.ts +18 -0
- package/dist/reminders/task-nudge.d.ts.map +1 -0
- package/dist/schedule/fire/fire.d.ts.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/LiveActivity.d.ts +5 -4
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts +5 -1
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PlanApprovalOverlay.d.ts +32 -0
- package/dist/tui/PlanApprovalOverlay.d.ts.map +1 -0
- package/dist/tui/QuestionDialog.d.ts +22 -0
- package/dist/tui/QuestionDialog.d.ts.map +1 -0
- package/dist/tui/StatusBar.d.ts +16 -3
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/agent.d.ts +84 -8
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/context-meter.d.ts +33 -0
- package/dist/tui/context-meter.d.ts.map +1 -0
- package/dist/tui/mentions.d.ts +9 -1
- package/dist/tui/mentions.d.ts.map +1 -1
- package/dist/tui/plain-interruption.d.ts +19 -4
- package/dist/tui/plain-interruption.d.ts.map +1 -1
- package/dist/tui/question-dialog.d.ts +34 -0
- package/dist/tui/question-dialog.d.ts.map +1 -0
- package/dist/tui/slashCommands.d.ts +4 -3
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/status-line/StatusLineRows.d.ts +11 -0
- package/dist/tui/status-line/StatusLineRows.d.ts.map +1 -0
- package/dist/tui/status-line/controller.d.ts +55 -0
- package/dist/tui/status-line/controller.d.ts.map +1 -0
- package/dist/tui/status-line/output.d.ts +18 -0
- package/dist/tui/status-line/output.d.ts.map +1 -0
- package/dist/tui/status-line/payload.d.ts +43 -0
- package/dist/tui/status-line/payload.d.ts.map +1 -0
- package/dist/tui/status-line/run-command.d.ts +24 -0
- package/dist/tui/status-line/run-command.d.ts.map +1 -0
- package/dist/tui/status-line/useStatusLine.d.ts +22 -0
- package/dist/tui/status-line/useStatusLine.d.ts.map +1 -0
- package/dist/tui/status-line/workspace-git.d.ts +17 -0
- package/dist/tui/status-line/workspace-git.d.ts.map +1 -0
- package/dist/tui/terminal-title.d.ts +33 -0
- package/dist/tui/terminal-title.d.ts.map +1 -0
- package/dist/tui/turn-interruption.d.ts.map +1 -1
- package/dist/tui/types.d.ts +12 -1
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/chunks/acp-QQHLC6HY.js.map +0 -6
- package/dist/chunks/add-VK7JVGYN.js.map +0 -6
- package/dist/chunks/agent-session-FXZ4RXQH.js +0 -46
- package/dist/chunks/chunk-2IWLDZNE.js.map +0 -6
- package/dist/chunks/chunk-7TW2GZ5D.js.map +0 -6
- package/dist/chunks/chunk-E2OJSRDE.js.map +0 -6
- package/dist/chunks/chunk-EZ26PYSK.js.map +0 -6
- package/dist/chunks/chunk-GELWAUNY.js.map +0 -6
- package/dist/chunks/chunk-HBWHJCNO.js.map +0 -6
- package/dist/chunks/chunk-LNBO3KD2.js.map +0 -6
- package/dist/chunks/chunk-QB6CLDHT.js.map +0 -6
- package/dist/chunks/chunk-WBR7JG42.js.map +0 -6
- package/dist/chunks/chunk-ZHWB7GXV.js +0 -71
- package/dist/chunks/chunk-ZHWB7GXV.js.map +0 -6
- package/dist/chunks/cli-runtime-KHQJO3WG.js.map +0 -6
- package/dist/chunks/dist-OLFVZDAR.js.map +0 -6
- package/dist/chunks/drain-CQELENIA.js.map +0 -6
- package/dist/chunks/exec-CUF3USRR.js.map +0 -6
- package/dist/chunks/list-OKA3E7GI.js.map +0 -6
- package/dist/chunks/mcp-SO43UZSA.js.map +0 -6
- package/dist/chunks/message-command-4CG7SPQA.js.map +0 -6
- package/dist/chunks/resident-KROFLWQD.js.map +0 -6
- package/dist/chunks/service-X2BXZORB.js.map +0 -6
- package/dist/chunks/session-step-NTNPJVXZ.js +0 -26
- package/dist/chunks/tui-T5O5A7F3.js.map +0 -6
- /package/dist/chunks/{activity-command-7A2NGBRO.js.map → activity-command-YUENOVUC.js.map} +0 -0
- /package/dist/chunks/{agent-IYFZOSN7.js.map → agent-KYILQUOP.js.map} +0 -0
- /package/dist/chunks/{agent-session-FXZ4RXQH.js.map → agent-session-2YMHOAKF.js.map} +0 -0
- /package/dist/chunks/{archive-7A5RLRRZ.js.map → archive-VXAYIALI.js.map} +0 -0
- /package/dist/chunks/{bin-main-QWTSTI5W.js.map → bin-main-7CCZXZ53.js.map} +0 -0
- /package/dist/chunks/{browser-Z4JR5SV4.js.map → browser-LAZRYCOJ.js.map} +0 -0
- /package/dist/chunks/{chunk-DQNJEGUV.js.map → chunk-2IWFTP44.js.map} +0 -0
- /package/dist/chunks/{chunk-R5QMJRF7.js.map → chunk-2K4A2MVQ.js.map} +0 -0
- /package/dist/chunks/{chunk-KJLJVK4Y.js.map → chunk-34CCZWJM.js.map} +0 -0
- /package/dist/chunks/{chunk-IFBWLO7J.js.map → chunk-3M5GHYIX.js.map} +0 -0
- /package/dist/chunks/{chunk-R5OZ6DCD.js.map → chunk-3RGJ3AC7.js.map} +0 -0
- /package/dist/chunks/{chunk-P6AM76US.js.map → chunk-4JQ2VCTQ.js.map} +0 -0
- /package/dist/chunks/{chunk-BQYV3WGF.js.map → chunk-5GUMVF2I.js.map} +0 -0
- /package/dist/chunks/{chunk-DSODVSO7.js.map → chunk-5RTONMXP.js.map} +0 -0
- /package/dist/chunks/{chunk-7RP7HIBA.js.map → chunk-5Y2HRYPF.js.map} +0 -0
- /package/dist/chunks/{chunk-QLB4KNQA.js.map → chunk-6V3D6JMG.js.map} +0 -0
- /package/dist/chunks/{chunk-KGKBG3U7.js.map → chunk-AHKD4XSH.js.map} +0 -0
- /package/dist/chunks/{chunk-6G3TX6QD.js.map → chunk-BPGADECQ.js.map} +0 -0
- /package/dist/chunks/{chunk-KI7GP25X.js.map → chunk-DEYX6OXI.js.map} +0 -0
- /package/dist/chunks/{chunk-3N54T4H4.js.map → chunk-DFLYRMHP.js.map} +0 -0
- /package/dist/chunks/{chunk-AJLZB6G6.js.map → chunk-EHEEEVWJ.js.map} +0 -0
- /package/dist/chunks/{chunk-FPMRK6W6.js.map → chunk-EIMWVYBK.js.map} +0 -0
- /package/dist/chunks/{chunk-QXUJNVPO.js.map → chunk-I7GFMQGF.js.map} +0 -0
- /package/dist/chunks/{chunk-PDSZNG3C.js.map → chunk-IOGROWMG.js.map} +0 -0
- /package/dist/chunks/{chunk-QQ2TBG2P.js.map → chunk-K7ADP5FF.js.map} +0 -0
- /package/dist/chunks/{chunk-5TIOW3QX.js.map → chunk-KF7KR67Z.js.map} +0 -0
- /package/dist/chunks/{chunk-4BBUZZDS.js.map → chunk-MK4U26GZ.js.map} +0 -0
- /package/dist/chunks/{chunk-J7GTTLAZ.js.map → chunk-MR34S4AM.js.map} +0 -0
- /package/dist/chunks/{chunk-WEVDA4IS.js.map → chunk-NQGVXNXO.js.map} +0 -0
- /package/dist/chunks/{chunk-OQHSD4WX.js.map → chunk-O3XQA4ZZ.js.map} +0 -0
- /package/dist/chunks/{chunk-7IKMMZ7R.js.map → chunk-OEI64DLJ.js.map} +0 -0
- /package/dist/chunks/{chunk-CAOXGCUA.js.map → chunk-PGPL6KIS.js.map} +0 -0
- /package/dist/chunks/{chunk-TC7HMH6P.js.map → chunk-PSZ6GS75.js.map} +0 -0
- /package/dist/chunks/{chunk-QNHDYR4J.js.map → chunk-PXLJT6YH.js.map} +0 -0
- /package/dist/chunks/{chunk-AM6K4LK2.js.map → chunk-QEWQONLW.js.map} +0 -0
- /package/dist/chunks/{chunk-3I5CIWA6.js.map → chunk-QXSIBEFU.js.map} +0 -0
- /package/dist/chunks/{chunk-GKVDZZN6.js.map → chunk-SJW2UYTK.js.map} +0 -0
- /package/dist/chunks/{chunk-6YVH6LAU.js.map → chunk-STHNLNY5.js.map} +0 -0
- /package/dist/chunks/{chunk-OF6QIV42.js.map → chunk-TCXO5WZX.js.map} +0 -0
- /package/dist/chunks/{chunk-ZBWLULPM.js.map → chunk-UMVFXQYE.js.map} +0 -0
- /package/dist/chunks/{chunk-KR2AARGO.js.map → chunk-UY74BJBW.js.map} +0 -0
- /package/dist/chunks/{chunk-HUTSLFLA.js.map → chunk-VA63RY7U.js.map} +0 -0
- /package/dist/chunks/{chunk-OIGLY4EG.js.map → chunk-W5PML5BG.js.map} +0 -0
- /package/dist/chunks/{chunk-KRUTBAWS.js.map → chunk-XAFTUVN7.js.map} +0 -0
- /package/dist/chunks/{chunk-2Y3V7YTY.js.map → chunk-YJVLERBF.js.map} +0 -0
- /package/dist/chunks/{commands-GOFR6DU5.js.map → commands-IMV24FMR.js.map} +0 -0
- /package/dist/chunks/{crash-report-BEZJS4TE.js.map → crash-report-VQBUHKGL.js.map} +0 -0
- /package/dist/chunks/{dist-TFSA6QEB.js.map → dist-CQLUZMPF.js.map} +0 -0
- /package/dist/chunks/{dist-AVGYNTRY.js.map → dist-LNY6YOW7.js.map} +0 -0
- /package/dist/chunks/{doctor-Y366MZD7.js.map → doctor-DEG3FKDC.js.map} +0 -0
- /package/dist/chunks/{eval-IUIKSMIP.js.map → eval-GI6JQAOX.js.map} +0 -0
- /package/dist/chunks/{home-OZK7SYKC.js.map → home-7EKRNFWG.js.map} +0 -0
- /package/dist/chunks/{host-queries-OZ3GTNQB.js.map → host-queries-YN42AIUD.js.map} +0 -0
- /package/dist/chunks/{lifecycle-EDPBG4CF.js.map → lifecycle-T7GDJRCI.js.map} +0 -0
- /package/dist/chunks/{login-NMPAF4D4.js.map → login-NO23T6HC.js.map} +0 -0
- /package/dist/chunks/{logs-BLEDKYPA.js.map → logs-LJVTOGXE.js.map} +0 -0
- /package/dist/chunks/{operator-tools-BRBJUOP5.js.map → operator-tools-MQXMUQLG.js.map} +0 -0
- /package/dist/chunks/{output-schema-Q74INRDV.js.map → output-schema-2BCRDYWG.js.map} +0 -0
- /package/dist/chunks/{pal-Q4LLIL3Z.js.map → pal-PTOFIOCI.js.map} +0 -0
- /package/dist/chunks/{providers-L4SRCWQ5.js.map → providers-YRNXCZW5.js.map} +0 -0
- /package/dist/chunks/{resume-command-433WHYYJ.js.map → resume-3R5VLEIS.js.map} +0 -0
- /package/dist/chunks/{session-step-NTNPJVXZ.js.map → resume-command-7SGSPKXV.js.map} +0 -0
- /package/dist/chunks/{schedule-YTD3NQTH.js.map → schedule-YOMKA5IF.js.map} +0 -0
- /package/dist/chunks/{store-LMUDVSKO.js.map → session-step-N5EWWZ4K.js.map} +0 -0
- /package/dist/chunks/{skills-6U4GTACH.js.map → skills-BARULYB3.js.map} +0 -0
- /package/dist/chunks/{state-JKH362WC.js.map → state-ZD6WF2PZ.js.map} +0 -0
- /package/dist/chunks/{store-T6ITZS2N.js.map → store-HEOMPNER.js.map} +0 -0
- /package/dist/chunks/{store-ULDTJXKN.js.map → store-RD7EX5RD.js.map} +0 -0
- /package/dist/chunks/{upgrade-FUJFUSY5.js.map → upgrade-FLMI5ZYW.js.map} +0 -0
- /package/dist/chunks/{worktree-KJYHKRHL.js.map → worktree-GUWRR5KY.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,164 @@
|
|
|
1
1
|
# @namzu/cli
|
|
2
2
|
|
|
3
|
+
## 37.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 5258c05: Shell hooks can answer with JSON, and hooks gain three events and three options.
|
|
8
|
+
|
|
9
|
+
New: a hook that exits `0` with a JSON object on stdout can refuse (`decision: "block"`), stop the turn (`continue: false`), approve or ask about a tool call (`hookSpecificOutput.permissionDecision`), rewrite a tool call's input (`updatedInput`, validated like any model-supplied input) and give the model context (`additionalContext`). New events `post_tool_use_failure`, `permission_request` and `notification`; new entry options `if` (a permission-rule filter such as `Bash(git push *)`), `once` and `statusMessage`; `matcher` accepts a regular expression. A hook's `allow` never covers a sandbox escape, a path outside the roots, a call a tool always asks about, an explicit review or a destructive call, and a `deny` always wins. `@namzu/sdk` adds `shellHookIfMatches`, the `PluginHookPermission`, `PluginHookNotes` and `PluginNotificationInfo` types, optional `context`/`halt`/`notice`/`permission` fields on the `continue`, `skip` and `modify` hook results, `hookGranted` on an `approve_tools` decision, `ToolCallSummary.hookPermission`/`hookGrant`, `PluginHookDefinition.statusMessage`, a `statusMessage` on `plugin_hook_executing`, and the runtime-context kind `hook-feedback` (a host that switches exhaustively over `PluginHookEvent` or `RuntimeContextMessageKind` needs a case for the new members).
|
|
10
|
+
|
|
11
|
+
Breaking, in the order a hook author meets them:
|
|
12
|
+
|
|
13
|
+
- **Hooks of one event now run in parallel.** They used to run one after another (`post_*` in reverse registration order), each seeing the previous hook's `modify`, and a refusal stopped the chain. Now all of an event's hooks start together on the same original context and nothing short-circuits. Their answers combine as the reference terminal's do: a refusal beats `ask`, which beats `allow`; of several rewrites (`modify`, `replace`) the last in priority/registration order wins and no hook sees another's rewrite; every `context` is kept and every `halt` honoured. A hook that relied on running after another (a formatter before a linter) must be one script or one hook. Plugins that registered with `priority` still get the first refusal quoted in priority order, but priority no longer sets who starts first.
|
|
14
|
+
- **The default hook deadline is ten minutes, not 30 s** (`DEFAULT_SHELL_HOOK_TIMEOUT_MS`, and `HOOK_TIMEOUT_MS` for the lifecycle manager's own per-hook limit, which was 5 s). To keep the old limit set `timeoutMs: 30000` on the hook (shell hooks), or `hookTimeoutMs` on the plugin manager or in the CLI's `plugins` config.
|
|
15
|
+
- **Exit code `2` now acts** where it used to be logged and ignored: on `turn_end` and `subagent_stop` it keeps the model working, with stderr as its next message (the turn's iteration limit still ends a hook that never relents); on `pre_compact` it cancels a compaction the context threshold asked for (never one the provider forced); on `post_tool_use` the stderr is shown to the model beside that call's result. A hook that exits `2` on these events by habit and meant "ignore" should exit `1`, which is still logged and ignored.
|
|
16
|
+
- **JSON on stdout is now read.** A hook that exits `0` and prints a JSON object starting with `{` is taken as an answer. A hook that printed such text on purpose and wants it left alone should not start its output with `{`.
|
|
17
|
+
|
|
18
|
+
`@namzu/cli` is major for the same reasons: its `hooks:` config key is where these behaviours are reached, and a configured hook behaves differently for the same input.
|
|
19
|
+
|
|
20
|
+
- 5258c05: The `permissions` tables of your config files are now combined instead of replaced, and a deny in any of them wins. This is a changed default, so it is a major.
|
|
21
|
+
|
|
22
|
+
What changed: a `permissions` table in `namzu.config.json` used to replace every key of the user's `~/.namzu/config.yaml` table, and the managed file replaced the table of everything below it, so a project could erase your `bash = { "git push*" = "deny" }`. Now the user, project, selected-profile and managed tables all apply. Each layer decides on its own by the rules it always had (most specific pattern first inside one table); then a layer that denies the call denies it, else a layer that asks asks, else a layer that allows allows. Which layer is higher no longer changes the outcome.
|
|
23
|
+
|
|
24
|
+
What breaks: a rule that was hidden because a higher file wrote its own table applies again. A call a lower file denied or asked about, and a project or managed table used to allow by overwriting it, is now denied or asked. There is no way to switch a lower layer's deny off from a higher layer; delete the rule from the lower file. The old behaviour (the highest table alone) cannot be kept by a setting; put every rule you want in the one file that should decide.
|
|
25
|
+
|
|
26
|
+
Loaded configs carry a new `permissionLayers` list beside `permissions` (now the combined view); a file that writes `permissionLayers` is refused. Hosts that compile `config.permissions` themselves should call `compilePermissionLayers(permissionLayersOf(config), config.permissionChecks)` instead.
|
|
27
|
+
|
|
28
|
+
- 5258c05: Conversations are now named by a small model, as in the reference terminal. After the first message of a conversation, one extra request (no tools, 60 tokens) asks a small model for a two-to-five-word, sentence-case noun phrase in the message's language, and `/resume` lists the conversation under it instead of under your first sentence. A name you chose with `/rename` is never replaced, and removing it falls back to the first message. If the request fails nothing is shown and the first message stays the title.
|
|
29
|
+
|
|
30
|
+
What changes for you:
|
|
31
|
+
|
|
32
|
+
- The request runs on `smallModel` when it is set in your user or managed config (`provider/model`, or a model id at the active provider; never read from a project's `namzu.config.json` or the environment), otherwise on the cheapest priced text model the active provider lists, otherwise on the conversation's own model. Its tokens are counted on the turn's token ledger. To choose where the text goes, set `smallModel`. There is no setting that turns the title request off; set `smallModel` to a model you are happy to spend on.
|
|
33
|
+
- A conversation started in Desktop is not named by the model yet; Desktop lists the stored title of one started in the terminal.
|
|
34
|
+
|
|
35
|
+
To keep a name of your own, rename the conversation with `/rename`; there is no switch to turn the model-written title off.
|
|
36
|
+
|
|
37
|
+
- 5258c05: The terminal's title now says what the conversation is, as in the reference terminal. It reads `✳ <name>` while Namzu waits (`◐` while a turn runs), where the name is the one you gave with `/rename`, else the title the small model wrote, else `Namzu`, and it is reset when Namzu exits so your shell's title comes back. Before, Namzu never touched the title. Set `NAMZU_DISABLE_TERMINAL_TITLE=1` to keep the title as your shell had it.
|
|
38
|
+
|
|
39
|
+
To keep the terminal title as it was, set `NAMZU_DISABLE_TERMINAL_TITLE=1`.
|
|
40
|
+
|
|
41
|
+
- 5258c05: `web_fetch` now works like the reference terminal's WebFetch, which changes its input and its default output.
|
|
42
|
+
|
|
43
|
+
What breaks, and what to do:
|
|
44
|
+
|
|
45
|
+
- `prompt` is required. A caller that sent only `url` now gets an input error; send the question you want answered from the page. `offset` (optional) reads on through a page too long for one call.
|
|
46
|
+
- The default output changed. It used to be the response body as text. It is now the answer to `prompt` when the host supplies `context.web.extract` (a `WebContentExtractor`, a new optional member of `ToolContext.web`), and otherwise the page as markdown, in both cases cut at 100 000 characters per call; a non-2xx status reports the status instead of its body, and an HTML page is converted to markdown with `turndown` (a new dependency, loaded on first use). A host that needs the raw body can fetch through `context.web.fetch` itself.
|
|
47
|
+
- A redirect to another host is no longer followed. `web_fetch` asks the provider for `redirects: 'same-host'` (new optional `WebFetchRequest.redirects`, default `'follow'` as before), and the tool returns a notice with the target for the model to fetch deliberately. A custom provider that ignores the field still follows every redirect.
|
|
48
|
+
- Fetched pages are cached for 15 minutes per URL, per fetch provider. URLs longer than 2000 characters, with credentials, or with a host that has no dot are refused before any request.
|
|
49
|
+
|
|
50
|
+
In the CLI, `web_fetch` (with `web.fetch: true`) answers the prompt with the small model (see `smallModel`), reads up to 10 MiB per page, and counts that request on the turn's token ledger; if the small model cannot answer, the model gets the page as markdown.
|
|
51
|
+
|
|
52
|
+
There is no switch in the CLI for the old output of `web_fetch`; a caller that needs the raw body fetches it another way (for example `bash` with `curl`).
|
|
53
|
+
|
|
54
|
+
### Minor Changes
|
|
55
|
+
|
|
56
|
+
- 5258c05: When the model asks several questions in one call, the terminal shows them as one card instead of one card after another: a tab for each question with a mark on the answered ones, a review tab that submits them together, multiple choice with Space, `Something else…` typed in place, and an option's preview beside the list. Esc or Cancel skips the whole call and the model is told nothing was answered; a question you leave alone is reported to it as not answered. A lone single-choice question looks and works as before, and a multiple-choice question now gets the card too (it was shown as a single choice). A Pal's answer to a batch of questions is checked question by question.
|
|
57
|
+
- 5258c05: Plan mode in the terminal now ends in an approval, as it does in the reference terminal. While the mode is `plan` the model may write exactly one file, its plan (`plans/plan.md` in the session's directory under `~/.namzu`), and every other change is still refused. It presents the plan with a new `exit_plan_mode` tool, which opens a box showing the plan with three rows: "Yes, and auto-approve edits", "Yes, and ask before each edit" and a text row, "No, keep planning", whose typed words go back to the model (Esc keeps planning without words, Shift+Tab approves the first row with what is typed). A session launched in `auto`, or allowed to reach it, is offered "approve every tool without asking" in place of the first row. Approving switches the permission mode through the same change Shift+Tab makes, so the footer follows; the approved plan is written into the transcript and the file stays. Hidden reminders restate the rules on the reference's cadence: one when plan mode is on and none was sent in the last 5 operator turns, the full text on the first and every 5th, one line between, and one note when the mode is left. A model that used to end a plan-mode reply with its plan as text now calls `exit_plan_mode`; you can still leave plan mode with Shift+Tab or `/permissions` at any time. Desktop and `namzu exec` are unchanged.
|
|
58
|
+
- 5258c05: The model is now reminded of its task list when it has let it go stale. After 10 model turns without `task_create` or `task_update`, and at most once per 10 model turns, it gets a hidden note that the task tools exist, with the list as it stands (`#<id>. [<status>] <subject>`), and is told to ignore it when the work does not call for a list. The counts are read from the conversation, so they survive a resume and start again after compaction. It appears in the interactive terminal only; `namzu exec` and Desktop are unchanged.
|
|
59
|
+
- 5258c05: Context limits follow Claude Code, and every new rule that stops something is opt-in in the SDK. Nothing a host gets without asking changes in this entry.
|
|
60
|
+
|
|
61
|
+
SDK, all additive:
|
|
62
|
+
|
|
63
|
+
- `query({ maxOutputContinuations })` caps the nudges after a reply is cut at its output limit; past the cap the turn stops with the new stop reason `output_limit` (a host that switches exhaustively on `StopReason` should handle it; it only occurs with the option set). Unset keeps today's behaviour (no cap beyond `maxIterations`). A cut during reasoning, before any text or tool call, now gets its own "think more briefly" nudge instead of being treated as a finished reply.
|
|
64
|
+
- `compactionConfig.circuitBreaker: true` switches automatic compaction off for the turn after three failed passes, and stops the turn after three compactions each followed by a refill within three iterations. `compaction_failed` gains the causes `breaker_open` and `refilling`; a host that switches exhaustively on `cause` should handle them (they only occur with the option on).
|
|
65
|
+
- A provider failure saying "input length and `max_tokens` exceed context limit: A + B > C" is retried once with `max_tokens = C - A - 1000` (not below 3,000, and only when smaller than the cap just tried). This is on for everyone: it turns a failure into a retry and changes no successful call.
|
|
66
|
+
- `compactNow`, `compactRegion` and `compactSession` accept `instructions`, the person's words about what the summary must keep; they run the verifier model step even when `llmVerification` is off.
|
|
67
|
+
|
|
68
|
+
CLI:
|
|
69
|
+
|
|
70
|
+
- The footer shows `N% until auto-compact` once the context is within 20,000 tokens of the summary point, with the read-out counted against the real trigger.
|
|
71
|
+
- `/compact <text>` steers the summary.
|
|
72
|
+
- The CLI turns on `maxOutputContinuations: 3` and `circuitBreaker`, so a looping model or a window that refills stops the turn with a one-line explanation.
|
|
73
|
+
|
|
74
|
+
- 5258c05: Read-only shell commands no longer ask. `ls`, `cat`, `head`, `wc`, `git status`, `git diff`, `git log`, `git show` and the rest of the reference terminal's vetted list run without a prompt in `prompt` and `accept-edits`, are allowed in `plan`, and run beside other read-only tool calls instead of one at a time. Anything the list does not vouch for still asks: a write redirection, a `$variable`, a substitution, a subshell, a here-document, a glob on a command that is not a plain reader, `cd` next to `git`, and any git flag outside the vetted table (`--output`, `-c`, `--exec-path`, `--config-env`, `fetch`, `commit`, branch or tag creation).
|
|
75
|
+
|
|
76
|
+
What changes for you: a turn that used to stop at `git status` now runs it. A read-only command that reads outside the working directory and added directories is still asked about, and so are protected paths and catastrophic removals. If you embed the SDK and rely on `bash` never being exempt from review, a host that wants the old behaviour passes its own `isReviewExempt` that returns false for `bash`.
|
|
77
|
+
|
|
78
|
+
New in the SDK: the builtin `bash` tool answers `isReadOnly` and `isConcurrencySafe` per call from the command line, and `DefineToolOptions.concurrencySafe` may be a function of the input, as `readOnly` already was.
|
|
79
|
+
|
|
80
|
+
- 5258c05: "Yes, and don't ask again" now lasts. The answer used to hold for the session only; it is now saved in `namzu.config.local.json` next to the project's `namzu.config.json`, and the next session starts with it. The file is a new config layer over the project file, git-ignored (Namzu adds `**/namzu.config.local.json` to your global git ignore file the first time, unless git already ignores it), and read only where the project file is.
|
|
81
|
+
|
|
82
|
+
A command is remembered as its first two words and a star when the second word is a plain subcommand (`git commit *`, `npm run *`), and as the exact command otherwise. Shells, `env`, `xargs`, `sudo`, `timeout` and the other wrappers are never remembered as a prefix. A compound line gets one rule per command, up to five. The answer still never covers a sandbox escape, a path outside the roots, a protected path, a catastrophic removal, a rule's `ask` or a destructive call, and a deny in any layer beats it. To forget an answer, delete its line from `namzu.config.local.json`.
|
|
83
|
+
|
|
84
|
+
`namzu.config.local.json` is added to the SDK's protected paths, so a model write to it is asked about in every mode.
|
|
85
|
+
|
|
86
|
+
- 5258c05: Three safety floors follow the reference terminal, so a turn in `auto` (`--yolo`) now stops and asks where it used to run silently. No exported name, option or default value changes; `ToolCallEscalation` gains two optional fields (`protectedPaths`, `dangerousRemoval`).
|
|
87
|
+
|
|
88
|
+
What changes for you:
|
|
89
|
+
|
|
90
|
+
- **Writes to protected paths are asked every time, in every mode.** `write`, `edit`, a shell redirection (`>`, `>>`, `tee`) and the operands of `cp`, `mv`, `touch`, `mkdir`, `rm`, `rmdir` and `sed -i` are asked about when they land in `.git`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, `.mvn`, `.config/git`, `.namzu`, or on a shell startup file, `.gitconfig`, `.envrc`, `.npmrc`, `namzu.config.json` and the other names in `authorization/protected-paths.ts`. A rule that allows the tool, `auto`, and an earlier "approve all" do not cover it. With nobody to ask (`namzu exec`, a drained turn, a scheduled run) the batch is refused. To make a change there, make it yourself, or answer the prompt.
|
|
91
|
+
- **A catastrophic `rm` or `rmdir` is asked every time.** The check reads the targets whatever the flags (`-fr`, `-r -f`, `--recursive --force`): `/`, a top-level directory, `~`, `$HOME`, `..`, the working directory or a parent of it, a glob across directories, `"$VAR/"` (empty means `/`). The old `rm -rf /` pattern in the dangerous-command floor is kept, so that spelling is still denied outright rather than asked.
|
|
92
|
+
- **A shell command's own paths are checked against the working directory.** On a turn that reviews outside paths (the CLI does), `cat /etc/passwd`, `ls ~/.ssh` and `echo x > ~/.profile` are now the same approval request a `read` outside the project is, instead of passing because `bash` declares no path argument.
|
|
93
|
+
|
|
94
|
+
If you embed the SDK with your own resume handler, read `ToolCallSummary.escalation.protectedPaths` and `.dangerousRemoval` the way you read `outsidePaths`; `createReviewHandler` does it for you. If your turn runs `bash` with no one to ask and relies on `auto`, expect those calls to be refused with a reason the model can act on.
|
|
95
|
+
|
|
96
|
+
- 5258c05: Terminal notifications gain an "idle" notice and two more channels. Add `"idle-prompt"` to `tui.notifications` to be told, once, when a finished turn has sat for a minute with nobody at the keyboard (no key pressed, no prompt or picker open, nothing queued or looping, background work done). `tui.notificationMethod` now also accepts `"kitty"` and `"ghostty"`. Nothing changes unless you opt in: `notifications: true` still means a settled reply and an approval prompt only, and `osc9` stays the default method.
|
|
97
|
+
- 5258c05: `@` file mentions in the composer now follow the reference terminal. A path with spaces or other characters outside the bare set is written `@"my docs/a b.ts"` (completion offers such files and writes the quotes), names in any script work, and `@file.ts#L10-20` sends only lines 10 to 20 (`#L7` sends one line). A closing `)` or `]` after a mention is no longer read as part of the name. Existing mentions keep working; the file size cap (60,000 characters) now applies to the lines sent.
|
|
98
|
+
- 5258c05: `namzu` now takes `-c` / `--continue` and `-r` / `--resume [value]` for the interactive session. `-c` opens the most recent conversation in this folder; `--resume` with no value opens the `/resume` picker; with a conversation id it resumes that conversation; with any other value it resumes the conversation of that exact title, or opens the picker searched by the value. Nothing changes for existing use: the flags are new, `namzu exec` keeps its own `--continue` / `--resume`, and `namzu resume <id>` is unchanged. Written before a subcommand or before `resume` they are refused (exit 64), like the other launch flags.
|
|
99
|
+
- 5258c05: A new `statusLine` config key runs your command and draws its output, dimmed, above the interactive footer. Set `statusLine: { command, padding?, refreshInterval? }` in `~/.namzu/config.yaml` or a trusted project's `namzu.config.json`; the command receives the session as JSON on stdin (model, workspace, cost, context window, effort, pull request, and more, under the reference terminal's field names) and re-runs 300 ms after the session changes. A failed or empty run shows nothing. Nothing changes for anyone who does not set the key, except that the type `StatusLineConfig` is exported.
|
|
100
|
+
|
|
101
|
+
### Patch Changes
|
|
102
|
+
|
|
103
|
+
- 5258c05: The default point at which older history is summarised changes. `compactionConfig.triggerThreshold` no longer defaults to `0.7`; it is optional, and when absent the kernel derives the trigger as the reference terminal does: the window, less room for the reply (the model's output cap, at most 20,000 tokens), less a 13,000-token buffer. That is 167,000 tokens (83.5%) of a 200,000-token window and 967,000 (96.7%) of a 1,000,000-token one, and never less than half the window. A host with long contexts compacts later than before, so a conversation keeps more of its history and runs closer to the provider's limit.
|
|
104
|
+
|
|
105
|
+
The type of `triggerThreshold` is now `number | undefined` (it was `number` after parsing), so code that reads it from a parsed `CompactionConfig` must handle `undefined`; `resolveTriggerThreshold(configured, windowTokens, maxOutputTokens?)` is exported and returns the fraction actually used.
|
|
106
|
+
|
|
107
|
+
To keep the earlier behaviour, pass `triggerThreshold: 0.7` in `compactionConfig`. An explicit value is used exactly as before.
|
|
108
|
+
|
|
109
|
+
The CLI no longer sets 0.7 and takes the derived trigger; its footer meter and `/context details` read the same function.
|
|
110
|
+
|
|
111
|
+
- Updated dependencies [5258c05]
|
|
112
|
+
- Updated dependencies [5258c05]
|
|
113
|
+
- Updated dependencies [5258c05]
|
|
114
|
+
- Updated dependencies [5258c05]
|
|
115
|
+
- Updated dependencies [5258c05]
|
|
116
|
+
- Updated dependencies [5258c05]
|
|
117
|
+
- Updated dependencies [5258c05]
|
|
118
|
+
- Updated dependencies [5258c05]
|
|
119
|
+
- Updated dependencies [5258c05]
|
|
120
|
+
- Updated dependencies [5258c05]
|
|
121
|
+
- Updated dependencies [90fbb95]
|
|
122
|
+
- Updated dependencies [90fbb95]
|
|
123
|
+
- Updated dependencies [90fbb95]
|
|
124
|
+
- Updated dependencies [90fbb95]
|
|
125
|
+
- Updated dependencies [90fbb95]
|
|
126
|
+
- Updated dependencies [90fbb95]
|
|
127
|
+
- Updated dependencies [5258c05]
|
|
128
|
+
- Updated dependencies [5258c05]
|
|
129
|
+
- Updated dependencies [5258c05]
|
|
130
|
+
- Updated dependencies [5258c05]
|
|
131
|
+
- Updated dependencies [5258c05]
|
|
132
|
+
- @namzu/sdk@52.0.0
|
|
133
|
+
- @namzu/sandbox@27.0.0
|
|
134
|
+
- @namzu/browser@2.0.1
|
|
135
|
+
- @namzu/computer-use@3.1.0
|
|
136
|
+
- @namzu/anthropic@6.3.0
|
|
137
|
+
- @namzu/ollama@2.2.5
|
|
138
|
+
- @namzu/openai@4.2.0
|
|
139
|
+
- @namzu/openrouter@3.0.4
|
|
140
|
+
|
|
141
|
+
## 36.6.0
|
|
142
|
+
|
|
143
|
+
### Minor Changes
|
|
144
|
+
|
|
145
|
+
- 9e63191: The terminal now retries a model call that fails for a reason that may pass (a dropped connection, a 5xx, an overloaded server, a rate limit with a short wait) the way the reference terminal does, instead of stopping after three tries. It tries ten times, waits from half a second doubling to thirty-two seconds with a little added on top, treats a `Retry-After` as a minimum, gives up on a wait longer than a minute (the reply then pauses and Enter tries again), and believes a provider that says `x-should-retry: false`. A reply cut off by a dropped connection starts over and the half-drawn text is taken back. While it waits, the Working row reads `Retrying in 5s · attempt 2/10` and counts down; Esc interrupts it. Nothing needs changing in your setup.
|
|
146
|
+
|
|
147
|
+
SDK: `ProviderRetryConfig` gains optional `jitter` (`'full'` or `'proportional'`), `retryAfter` (`'exact'` or `'floor'`) and `retryMidStream`, `ProviderRetryNotice` and the `provider_retry` event gain an optional `restart`, `ProviderRequestError` gains `shouldRetry` (only `false` is acted on), `providerHttpError` takes `shouldRetry`, and `providerVendorError` reads `x-should-retry`. No default changed: `maxRetries` is still 3, jitter still full, `Retry-After` still exact, a stream that failed after output is still not retried unless a host sets `retryMidStream` (a host that does must drop what the failed attempt showed when it sees `restart`; the turn drops its own copy). Hosts that want the terminal's numbers pass them in `query({ retry })`.
|
|
148
|
+
|
|
149
|
+
`@namzu/openai` (API key and Codex) and `@namzu/deepseek` gain an optional `maxRetries`, passed to the vendor SDK. Left unset, the vendor default of two silent retries still applies; set `0` to see and count each retry in the kernel, as the terminal does. `@namzu/openrouter`, `@namzu/google`, `@namzu/http` and `@namzu/zen` now pass the response's `x-should-retry` header to the error they throw.
|
|
150
|
+
|
|
151
|
+
### Patch Changes
|
|
152
|
+
|
|
153
|
+
- 9e63191: Typing a new message after a reply paused on a provider failure (a rate limit, an outage, a rejected key) now works, as the "Paused: … or type a new message" notice says. Before, the message was refused with "This conversation already has a paused turn ()" and never reached the model, whether or not you had changed the model, so you had to run `/resume` or `/abandon` and type it again. Now the paused reply is closed, the new message runs on the model selected at that moment, and no error line appears. A pause that waits for you (an approval or a handoff) still holds the conversation; the refusal is now one plain sentence without a turn id. Nothing needs changing in your setup.
|
|
154
|
+
- Updated dependencies [9e63191]
|
|
155
|
+
- @namzu/sdk@51.1.0
|
|
156
|
+
- @namzu/openai@4.2.0
|
|
157
|
+
- @namzu/deepseek@2.1.0
|
|
158
|
+
- @namzu/openrouter@3.0.4
|
|
159
|
+
- @namzu/google@1.1.3
|
|
160
|
+
- @namzu/zen@5.0.1
|
|
161
|
+
|
|
3
162
|
## 36.5.0
|
|
4
163
|
|
|
5
164
|
### Minor Changes
|
package/dist/bin.js
CHANGED
|
@@ -81,6 +81,6 @@ __name(suppressSqliteExperimentalWarning, "suppressSqliteExperimentalWarning");
|
|
|
81
81
|
suppressSqliteExperimentalWarning();
|
|
82
82
|
|
|
83
83
|
// src/bin.ts
|
|
84
|
-
var { main } = await import("./chunks/bin-main-
|
|
84
|
+
var { main } = await import("./chunks/bin-main-7CCZXZ53.js");
|
|
85
85
|
main(fileURLToPath(new URL("./", import.meta.url).href + "bin.js"));
|
|
86
86
|
//# sourceMappingURL=bin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot-narrative.d.ts","sourceRoot":"","sources":["../src/boot-narrative.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,kBAAkB,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAQxD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"boot-narrative.d.ts","sourceRoot":"","sources":["../src/boot-narrative.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,kBAAkB,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAQxD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA6E5F"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { createRequire as __namzuCreateRequire } from 'node:module';
|
|
2
2
|
const require = __namzuCreateRequire(import.meta.url);
|
|
3
|
-
import {
|
|
4
|
-
dispatchCliPalMessages
|
|
5
|
-
} from "./chunk-DSODVSO7.js";
|
|
6
3
|
import {
|
|
7
4
|
conversationMarkdown,
|
|
8
5
|
lookupPr,
|
|
9
6
|
runCommand,
|
|
10
7
|
withKeyNote
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import
|
|
8
|
+
} from "./chunk-SDHJ2YUN.js";
|
|
9
|
+
import {
|
|
10
|
+
dispatchCliPalMessages
|
|
11
|
+
} from "./chunk-5RTONMXP.js";
|
|
12
|
+
import "./chunk-XAFTUVN7.js";
|
|
13
13
|
import {
|
|
14
14
|
decideHeadlessTrust
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-I7GFMQGF.js";
|
|
16
16
|
import {
|
|
17
17
|
cliPalComputerStatus,
|
|
18
18
|
cliPalScreen,
|
|
@@ -25,21 +25,22 @@ import {
|
|
|
25
25
|
startCliPalComputer,
|
|
26
26
|
stopCliPalComputer,
|
|
27
27
|
takeOverCliPalComputer
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-IOGROWMG.js";
|
|
29
|
+
import "./chunk-ZWA2JRJV.js";
|
|
29
30
|
import {
|
|
30
31
|
palSessionEnvironment
|
|
31
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-EV57ARS2.js";
|
|
32
33
|
import {
|
|
33
34
|
cliPalActivitySubscriptionPolicy,
|
|
34
35
|
cliPalActivitySubscriptionStore,
|
|
35
36
|
cliPalCommunicationPolicy,
|
|
36
37
|
cliPalCommunicationStore
|
|
37
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-NQGVXNXO.js";
|
|
38
39
|
import {
|
|
39
40
|
claimPalConversation,
|
|
40
41
|
listPalConversations,
|
|
41
42
|
palConversationBinding
|
|
42
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-MR34S4AM.js";
|
|
43
44
|
import {
|
|
44
45
|
FileCheckpointStore,
|
|
45
46
|
PluginSettingsStore,
|
|
@@ -50,26 +51,27 @@ import {
|
|
|
50
51
|
sessionLogCheckpointView,
|
|
51
52
|
validateComposerSendSettings,
|
|
52
53
|
verifyCredential
|
|
53
|
-
} from "./chunk-
|
|
54
|
-
import "./chunk-
|
|
55
|
-
import "./chunk-
|
|
54
|
+
} from "./chunk-BXJ7G5XN.js";
|
|
55
|
+
import "./chunk-4JQ2VCTQ.js";
|
|
56
|
+
import "./chunk-2KSXZBZK.js";
|
|
56
57
|
import "./chunk-WHODOMXA.js";
|
|
57
|
-
import "./chunk-
|
|
58
|
-
import "./chunk-
|
|
59
|
-
import "./chunk-
|
|
60
|
-
import "./chunk-
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-ZWA2JRJV.js";
|
|
58
|
+
import "./chunk-2K4A2MVQ.js";
|
|
59
|
+
import "./chunk-2IWFTP44.js";
|
|
60
|
+
import "./chunk-BPGADECQ.js";
|
|
61
|
+
import "./chunk-PGPL6KIS.js";
|
|
62
|
+
import "./chunk-UMVFXQYE.js";
|
|
63
|
+
import "./chunk-EIMWVYBK.js";
|
|
64
64
|
import "./chunk-NUGPLXVK.js";
|
|
65
|
-
import {
|
|
66
|
-
CLI_VERSION
|
|
67
|
-
} from "./chunk-HE7WUOX2.js";
|
|
68
65
|
import {
|
|
69
66
|
resolveTrustedProjectContext
|
|
70
67
|
} from "./chunk-CHIEVVQ2.js";
|
|
68
|
+
import {
|
|
69
|
+
CLI_VERSION
|
|
70
|
+
} from "./chunk-HE7WUOX2.js";
|
|
71
71
|
import "./chunk-GNBMKISG.js";
|
|
72
|
-
import "./chunk-
|
|
72
|
+
import "./chunk-NADDUQSP.js";
|
|
73
|
+
import "./chunk-KONYGNG6.js";
|
|
74
|
+
import "./chunk-YQHHGBOR.js";
|
|
73
75
|
import "./chunk-US5ZFPAU.js";
|
|
74
76
|
import {
|
|
75
77
|
automaticKind,
|
|
@@ -77,26 +79,14 @@ import {
|
|
|
77
79
|
discoverProviders,
|
|
78
80
|
hasApiCredential,
|
|
79
81
|
isAnonymousZen
|
|
80
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-PXLJT6YH.js";
|
|
81
83
|
import {
|
|
82
84
|
ALL_PROVIDER_IDS,
|
|
83
85
|
PROVIDER_REGISTRY
|
|
84
86
|
} from "./chunk-6LLJQ3KY.js";
|
|
85
|
-
import
|
|
86
|
-
|
|
87
|
-
warnLegacyMcpPermissionNames
|
|
88
|
-
} from "./chunk-PGEDH5H5.js";
|
|
89
|
-
import "./chunk-2IWLDZNE.js";
|
|
90
|
-
import {
|
|
91
|
-
cliLogger
|
|
92
|
-
} from "./chunk-GKVDZZN6.js";
|
|
87
|
+
import "./chunk-4DDYSIB2.js";
|
|
88
|
+
import "./chunk-6V3D6JMG.js";
|
|
93
89
|
import "./chunk-EEDZOGV4.js";
|
|
94
|
-
import "./chunk-QLB4KNQA.js";
|
|
95
|
-
import "./chunk-OH6TB27S.js";
|
|
96
|
-
import {
|
|
97
|
-
isOfferableModel
|
|
98
|
-
} from "./chunk-U3JIZFOS.js";
|
|
99
|
-
import "./chunk-TCXFKEYW.js";
|
|
100
90
|
import {
|
|
101
91
|
archiveConversation,
|
|
102
92
|
closeSessions,
|
|
@@ -114,11 +104,24 @@ import {
|
|
|
114
104
|
refreshIndex,
|
|
115
105
|
setTitle,
|
|
116
106
|
unarchiveConversation
|
|
117
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-LSMOWOWC.js";
|
|
118
108
|
import {
|
|
119
109
|
cliProjectRoot
|
|
120
110
|
} from "./chunk-H6B6AROX.js";
|
|
121
|
-
import "./chunk-
|
|
111
|
+
import "./chunk-5GUMVF2I.js";
|
|
112
|
+
import {
|
|
113
|
+
compilePermissionLayers,
|
|
114
|
+
permissionLayersOf,
|
|
115
|
+
warnLegacyMcpPermissionNames
|
|
116
|
+
} from "./chunk-JAPAPPNH.js";
|
|
117
|
+
import {
|
|
118
|
+
cliLogger
|
|
119
|
+
} from "./chunk-SJW2UYTK.js";
|
|
120
|
+
import "./chunk-OH6TB27S.js";
|
|
121
|
+
import {
|
|
122
|
+
isOfferableModel
|
|
123
|
+
} from "./chunk-U3JIZFOS.js";
|
|
124
|
+
import "./chunk-TCXFKEYW.js";
|
|
122
125
|
import {
|
|
123
126
|
cliPalStore,
|
|
124
127
|
createPal,
|
|
@@ -128,13 +131,13 @@ import {
|
|
|
128
131
|
listPals,
|
|
129
132
|
palAtWorkspace,
|
|
130
133
|
updatePal
|
|
131
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-3M5GHYIX.js";
|
|
132
135
|
import {
|
|
133
136
|
isTrusted,
|
|
134
137
|
isTrustedAtStateRoot,
|
|
135
138
|
trustDir,
|
|
136
139
|
untrustDir
|
|
137
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-TCXO5WZX.js";
|
|
138
141
|
import {
|
|
139
142
|
canonicalProjectPath
|
|
140
143
|
} from "./chunk-JORONMD3.js";
|
|
@@ -145,8 +148,8 @@ import {
|
|
|
145
148
|
readStoredGeminiApiKey,
|
|
146
149
|
writeStoredApiKey,
|
|
147
150
|
writeStoredGeminiApiKey
|
|
148
|
-
} from "./chunk-
|
|
149
|
-
import "./chunk-
|
|
151
|
+
} from "./chunk-3RGJ3AC7.js";
|
|
152
|
+
import "./chunk-5Y2HRYPF.js";
|
|
150
153
|
import {
|
|
151
154
|
ACPServer,
|
|
152
155
|
DiskLogMedium,
|
|
@@ -179,7 +182,7 @@ import {
|
|
|
179
182
|
resolveWithinAnyReal,
|
|
180
183
|
resolveWithinReal,
|
|
181
184
|
selectAssistantText
|
|
182
|
-
} from "./chunk-
|
|
185
|
+
} from "./chunk-5J3T7DNL.js";
|
|
183
186
|
import {
|
|
184
187
|
__commonJS,
|
|
185
188
|
__name,
|
|
@@ -11148,6 +11151,7 @@ var historyReasons = /* @__PURE__ */ new Set([
|
|
|
11148
11151
|
"plan_rejected",
|
|
11149
11152
|
"step_refused",
|
|
11150
11153
|
"structured_output_failed",
|
|
11154
|
+
"output_limit",
|
|
11151
11155
|
"answer_rejected",
|
|
11152
11156
|
"input_guardrail",
|
|
11153
11157
|
"output_guardrail"
|
|
@@ -12545,8 +12549,8 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
|
|
|
12545
12549
|
try {
|
|
12546
12550
|
const projectCtx = deps.resolveProjectContext(bootstrapCtx, cwd);
|
|
12547
12551
|
warnLegacyMcpPermissionNames(projectCtx.config.permissions);
|
|
12548
|
-
const permissions =
|
|
12549
|
-
projectCtx.config
|
|
12552
|
+
const permissions = compilePermissionLayers(
|
|
12553
|
+
permissionLayersOf(projectCtx.config),
|
|
12550
12554
|
projectCtx.config.permissionChecks
|
|
12551
12555
|
);
|
|
12552
12556
|
if (permissions.diagnostics.length > 0) {
|
|
@@ -12595,6 +12599,7 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
|
|
|
12595
12599
|
...projectCtx.config.plugins ? { plugins: projectCtx.config.plugins } : {},
|
|
12596
12600
|
...projectCtx.config.skills ? { skills: projectCtx.config.skills } : {},
|
|
12597
12601
|
...projectCtx.config.web ? { web: projectCtx.config.web } : {},
|
|
12602
|
+
...projectCtx.config.smallModel ? { smallModel: projectCtx.config.smallModel } : {},
|
|
12598
12603
|
...projectCtx.config.hooks ? { hooks: projectCtx.config.hooks } : {},
|
|
12599
12604
|
...projectCtx.config.compaction ? { compaction: projectCtx.config.compaction } : {},
|
|
12600
12605
|
...projectCtx.config.memory ? { memory: projectCtx.config.memory } : {},
|
|
@@ -13540,4 +13545,4 @@ export {
|
|
|
13540
13545
|
resolveAcpSession,
|
|
13541
13546
|
runAcpCommand
|
|
13542
13547
|
};
|
|
13543
|
-
//# sourceMappingURL=acp-
|
|
13548
|
+
//# sourceMappingURL=acp-NJUDAWEV.js.map
|