@namzu/cli 36.1.2 → 36.3.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.
Files changed (314) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/bin.js +1 -1
  3. package/dist/chunks/{acp-QXCMYZW7.js → acp-2DS2IECT.js} +129 -37
  4. package/dist/chunks/acp-2DS2IECT.js.map +6 -0
  5. package/dist/chunks/{activity-command-HK7YJTXV.js → activity-command-MCYEK4Z4.js} +10 -10
  6. package/dist/chunks/{add-UYIKY4OE.js → add-ZQ3YWP4F.js} +16 -16
  7. package/dist/chunks/{agent-Y2WYEXWC.js → agent-PAGVUATH.js} +24 -22
  8. package/dist/chunks/agent-session-PLIPF3XG.js +46 -0
  9. package/dist/chunks/{archive-C4A3HPLF.js → archive-VPREZOGC.js} +8 -8
  10. package/dist/chunks/{bin-main-VQKMQICY.js → bin-main-MWFKUXP2.js} +3 -3
  11. package/dist/chunks/{browser-CRX4HM4C.js → browser-FZWYOIIJ.js} +6 -6
  12. package/dist/chunks/{chat-5MWPKAET.js → chat-W355SFNQ.js} +13 -13
  13. package/dist/chunks/{chunk-TLTJ2KTW.js → chunk-2BZOT2CT.js} +2 -2
  14. package/dist/chunks/{chunk-MJMDPZ6G.js → chunk-2O7KYX4V.js} +19 -9
  15. package/dist/chunks/chunk-2O7KYX4V.js.map +6 -0
  16. package/dist/chunks/{chunk-JELVHU7X.js → chunk-2TGQ2B53.js} +259 -3
  17. package/dist/chunks/{chunk-JELVHU7X.js.map → chunk-2TGQ2B53.js.map} +3 -3
  18. package/dist/chunks/{chunk-AN7FO7NS.js → chunk-3F5DGROG.js} +2 -2
  19. package/dist/chunks/{chunk-YMKYJ4DI.js → chunk-3M3PMQ3I.js} +7 -7
  20. package/dist/chunks/{chunk-WATMFOHB.js → chunk-46B7KRXY.js} +6 -6
  21. package/dist/chunks/{chunk-GMCOZ3CU.js → chunk-52OVP5BG.js} +4 -4
  22. package/dist/chunks/{chunk-HFJHHCTY.js → chunk-56OUKG5W.js} +3 -3
  23. package/dist/chunks/{chunk-N5IF64K3.js → chunk-5H4LJ4AN.js} +27 -9
  24. package/dist/chunks/chunk-5H4LJ4AN.js.map +6 -0
  25. package/dist/chunks/{chunk-4BZMQ2VD.js → chunk-5URT3ZM2.js} +4 -4
  26. package/dist/chunks/{chunk-7Z7CAVIN.js → chunk-6CGC72OA.js} +12 -10
  27. package/dist/chunks/{chunk-7Z7CAVIN.js.map → chunk-6CGC72OA.js.map} +1 -1
  28. package/dist/chunks/{chunk-AIY4PCDR.js → chunk-6TDJXZ5W.js} +4 -4
  29. package/dist/chunks/{chunk-ZKEWE6K4.js → chunk-AHYHR5DY.js} +3 -3
  30. package/dist/chunks/{chunk-3P5PF6XE.js → chunk-AP5KD43Y.js} +2 -2
  31. package/dist/chunks/{chunk-OLPOM3DR.js → chunk-AS7UWXMN.js} +4 -4
  32. package/dist/chunks/{chunk-Q24K7536.js → chunk-BOV53LZO.js} +2 -2
  33. package/dist/chunks/{chunk-HQM2WSQT.js → chunk-BUCICQWG.js} +2 -2
  34. package/dist/chunks/{chunk-5PQVJBIO.js → chunk-CZVHXYGD.js} +6 -3
  35. package/dist/chunks/{chunk-5PQVJBIO.js.map → chunk-CZVHXYGD.js.map} +1 -1
  36. package/dist/chunks/{chunk-YXLD46UI.js → chunk-DYUOXP5Q.js} +13 -13
  37. package/dist/chunks/{chunk-UOOQPODR.js → chunk-E7HLYLD7.js} +3 -3
  38. package/dist/chunks/{chunk-TIGWWAJI.js → chunk-EKUJUPFA.js} +4 -4
  39. package/dist/chunks/{chunk-L2T4O6S3.js → chunk-EZ6ZSHYX.js} +35 -26
  40. package/dist/chunks/{chunk-L2T4O6S3.js.map → chunk-EZ6ZSHYX.js.map} +1 -1
  41. package/dist/chunks/{chunk-HV4LJFNV.js → chunk-F3YQ2CSZ.js} +4 -4
  42. package/dist/chunks/{chunk-HBBB2CAC.js → chunk-FU4GQ7K2.js} +2 -2
  43. package/dist/chunks/{chunk-IJH7J5NJ.js → chunk-GQN64E36.js} +3 -3
  44. package/dist/chunks/{chunk-NQY5P2EB.js → chunk-HKDPP2JF.js} +2 -2
  45. package/dist/chunks/{chunk-WM2JEUGV.js → chunk-HSEJGSXE.js} +2 -2
  46. package/dist/chunks/{chunk-KU3W6IHV.js → chunk-I6CDUPVR.js} +2 -2
  47. package/dist/chunks/{chunk-O7DBCVNY.js → chunk-IQBR45AU.js} +2 -2
  48. package/dist/chunks/{chunk-FXS3AG6B.js → chunk-JCDTR2ZU.js} +4 -4
  49. package/dist/chunks/{chunk-AXIGFKJF.js → chunk-KMHLON54.js} +2 -2
  50. package/dist/chunks/{chunk-EIYM6TY7.js → chunk-KOG2WB66.js} +4 -4
  51. package/dist/chunks/{chunk-5GRV6P5C.js → chunk-LBH5WVXU.js} +2 -2
  52. package/dist/chunks/{chunk-RC6X3ZY6.js → chunk-LYDXPWAZ.js} +204 -7
  53. package/dist/chunks/chunk-LYDXPWAZ.js.map +6 -0
  54. package/dist/chunks/{chunk-K76WV7TN.js → chunk-MBBFX64S.js} +2 -2
  55. package/dist/chunks/{chunk-JPPC4LJF.js → chunk-MJO6CH5F.js} +3 -3
  56. package/dist/chunks/{chunk-SRU3MDHZ.js → chunk-NATYSTPM.js} +2 -2
  57. package/dist/chunks/{chunk-X2FWNSZ7.js → chunk-NBD5MAGK.js} +9 -9
  58. package/dist/chunks/{chunk-NROIHI6L.js → chunk-PINPSIJ5.js} +5 -5
  59. package/dist/chunks/{chunk-YTESW44T.js → chunk-PLKJKF32.js} +12 -12
  60. package/dist/chunks/chunk-QBAISLAD.js +750 -0
  61. package/dist/chunks/chunk-QBAISLAD.js.map +6 -0
  62. package/dist/chunks/{chunk-UDBEU2FR.js → chunk-QRT3N2K3.js} +2 -2
  63. package/dist/chunks/{chunk-Q5YM2GCX.js → chunk-QXDKRJZ5.js} +3 -3
  64. package/dist/chunks/{chunk-V7TQR6AR.js → chunk-RBX6RVYO.js} +6 -6
  65. package/dist/chunks/{chunk-J72CRUNX.js → chunk-RM6HTBJK.js} +2 -2
  66. package/dist/chunks/{chunk-A5UXODFL.js → chunk-S6MZK4LD.js} +2 -2
  67. package/dist/chunks/{chunk-TJJUB7VQ.js → chunk-SFUUN6B3.js} +1547 -280
  68. package/dist/chunks/chunk-SFUUN6B3.js.map +6 -0
  69. package/dist/chunks/{chunk-EWKJGHRO.js → chunk-V3ZLK3XQ.js} +3245 -1041
  70. package/dist/chunks/chunk-V3ZLK3XQ.js.map +6 -0
  71. package/dist/chunks/{chunk-C5WBEO3X.js → chunk-VUOS5SQ3.js} +2 -2
  72. package/dist/chunks/{chunk-LQMHASKR.js → chunk-XCWZZZOW.js} +3 -3
  73. package/dist/chunks/{chunk-2NJ2XUXJ.js → chunk-YYQFUKI7.js} +3 -3
  74. package/dist/chunks/{chunk-7WJOQ6EA.js → chunk-YYVDLVUM.js} +2 -2
  75. package/dist/chunks/{chunk-UWWGSDZ5.js → chunk-ZB5ETOVE.js} +3 -3
  76. package/dist/chunks/{chunk-CG65NUSJ.js → chunk-ZG6NVROB.js} +2 -2
  77. package/dist/chunks/{chunk-TWMKJ6BE.js → chunk-ZHBHRMCI.js} +4 -4
  78. package/dist/chunks/{cli-runtime-FXV35STX.js → cli-runtime-NG23IVRM.js} +8 -8
  79. package/dist/chunks/{commands-QPVRB3RK.js → commands-LQISMOPF.js} +5 -5
  80. package/dist/chunks/{crash-report-S3BTEPYR.js → crash-report-EYK56MJJ.js} +6 -6
  81. package/dist/chunks/{dist-BFC7XUCT.js → dist-3AMBKAG4.js} +2 -2
  82. package/dist/chunks/{dist-SKRHHPUR.js → dist-AUDNCB3F.js} +2 -2
  83. package/dist/chunks/{dist-3GJFRS2X.js → dist-AZJ56DQJ.js} +2 -2
  84. package/dist/chunks/{dist-EY3OJBQH.js → dist-DWB5AYXB.js} +2 -2
  85. package/dist/chunks/{dist-ERN5DRKK.js → dist-EDKLCZY4.js} +2 -2
  86. package/dist/chunks/{dist-LVG2TYZT.js → dist-PZXF5NU3.js} +2 -2
  87. package/dist/chunks/{dist-G42HPNIE.js → dist-XT4V74YL.js} +2 -2
  88. package/dist/chunks/{doctor-KMTPPEWG.js → doctor-3EOUWDYB.js} +6 -6
  89. package/dist/chunks/{drain-PL5VSYUQ.js → drain-IMNF2CDN.js} +11 -10
  90. package/dist/chunks/{drain-PL5VSYUQ.js.map → drain-IMNF2CDN.js.map} +1 -1
  91. package/dist/chunks/{eval-53UONRWR.js → eval-VHWEJ4GG.js} +2 -2
  92. package/dist/chunks/{exec-5ZXTX5XC.js → exec-2KM6DH56.js} +152 -41
  93. package/dist/chunks/exec-2KM6DH56.js.map +6 -0
  94. package/dist/chunks/{home-QS7RBP34.js → home-H4GTIYO5.js} +3 -3
  95. package/dist/chunks/{host-queries-A55WPD4R.js → host-queries-5C4TCX6J.js} +13 -13
  96. package/dist/chunks/{lifecycle-VR36VUPC.js → lifecycle-IHW4P636.js} +23 -23
  97. package/dist/chunks/{list-DQZU7NEF.js → list-JJZ7I5OF.js} +12 -12
  98. package/dist/chunks/{login-6OFDFHD6.js → login-T2RKNHK2.js} +8 -8
  99. package/dist/chunks/{logs-KSG7SFAB.js → logs-J6D4SEDY.js} +4 -4
  100. package/dist/chunks/{mcp-CHPFRT2Y.js → mcp-WONRVJ26.js} +15 -15
  101. package/dist/chunks/{message-command-AJFVZ5EY.js → message-command-F3TFROMK.js} +29 -29
  102. package/dist/chunks/{operator-tools-LTPV3CH5.js → operator-tools-H4MYC5PE.js} +11 -11
  103. package/dist/chunks/{output-schema-UM3P5AOR.js → output-schema-RFJUTQ2N.js} +3 -3
  104. package/dist/chunks/{pal-CWO3HUXQ.js → pal-UCYGJN75.js} +11 -11
  105. package/dist/chunks/{providers-7P5CTPHT.js → providers-BHF65IUG.js} +6 -6
  106. package/dist/chunks/{resident-3K7SI2UP.js → resident-CNS3XQRU.js} +18 -18
  107. package/dist/chunks/{resume-command-XZWGUXRK.js → resume-command-Y3NYDSI4.js} +4 -4
  108. package/dist/chunks/{schedule-GKM3RRIU.js → schedule-KN5YGOSJ.js} +8 -8
  109. package/dist/chunks/{service-CIWTUMRI.js → service-OEOHUGM6.js} +22 -22
  110. package/dist/chunks/session-step-AYHFVVX6.js +26 -0
  111. package/dist/chunks/{skills-HV2MOBEW.js → skills-K3JRZ3IR.js} +8 -8
  112. package/dist/chunks/{state-6HV3D3O4.js → state-QPSQI7U7.js} +2 -2
  113. package/dist/chunks/{store-GDP2EW27.js → store-7WZWQXKX.js} +6 -6
  114. package/dist/chunks/{store-6J2MUGON.js → store-PSQKDEPY.js} +8 -8
  115. package/dist/chunks/{store-VXNKMMNW.js → store-Z3PS6LUZ.js} +4 -4
  116. package/dist/chunks/{tui-ZURFLJQB.js → tui-JKZOXURU.js} +2626 -1331
  117. package/dist/chunks/tui-JKZOXURU.js.map +6 -0
  118. package/dist/chunks/{upgrade-MC5JB7DK.js → upgrade-C6QUXRLB.js} +3 -3
  119. package/dist/chunks/{worktree-6YPRX6SU.js → worktree-KLD2PAMU.js} +10 -10
  120. package/dist/cli.d.ts.map +1 -1
  121. package/dist/commands/acp-harness.d.ts.map +1 -1
  122. package/dist/commands/acp.d.ts +6 -0
  123. package/dist/commands/acp.d.ts.map +1 -1
  124. package/dist/commands/desktop-host-pr.d.ts +14 -0
  125. package/dist/commands/desktop-host-pr.d.ts.map +1 -0
  126. package/dist/commands/desktop-host.d.ts +6 -0
  127. package/dist/commands/desktop-host.d.ts.map +1 -1
  128. package/dist/commands/drain.d.ts.map +1 -1
  129. package/dist/commands/exec-json.d.ts.map +1 -1
  130. package/dist/commands/exec-workflows.d.ts +50 -0
  131. package/dist/commands/exec-workflows.d.ts.map +1 -0
  132. package/dist/commands/exec.d.ts.map +1 -1
  133. package/dist/config/load.d.ts.map +1 -1
  134. package/dist/config/schema.d.ts +96 -0
  135. package/dist/config/schema.d.ts.map +1 -1
  136. package/dist/index.js +9 -9
  137. package/dist/integrations/decision/model.d.ts +26 -0
  138. package/dist/integrations/decision/model.d.ts.map +1 -0
  139. package/dist/integrations/decision/routing.d.ts +75 -0
  140. package/dist/integrations/decision/routing.d.ts.map +1 -0
  141. package/dist/integrations/resident/runner-worker.js +16 -16
  142. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  143. package/dist/integrations/subagents/activity.d.ts +19 -0
  144. package/dist/integrations/subagents/activity.d.ts.map +1 -1
  145. package/dist/integrations/subagents/runtime.d.ts +52 -0
  146. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  147. package/dist/integrations/workflows/doctrine.d.ts +7 -0
  148. package/dist/integrations/workflows/doctrine.d.ts.map +1 -0
  149. package/dist/integrations/workflows/history.d.ts +13 -0
  150. package/dist/integrations/workflows/history.d.ts.map +1 -0
  151. package/dist/integrations/workflows/host.d.ts +59 -0
  152. package/dist/integrations/workflows/host.d.ts.map +1 -0
  153. package/dist/integrations/workflows/notice.d.ts +19 -0
  154. package/dist/integrations/workflows/notice.d.ts.map +1 -0
  155. package/dist/integrations/workflows/offering.d.ts +40 -0
  156. package/dist/integrations/workflows/offering.d.ts.map +1 -0
  157. package/dist/integrations/workflows/registry.d.ts +73 -0
  158. package/dist/integrations/workflows/registry.d.ts.map +1 -0
  159. package/dist/integrations/workflows/view.d.ts +97 -0
  160. package/dist/integrations/workflows/view.d.ts.map +1 -0
  161. package/dist/pals/agent-session.d.ts.map +1 -1
  162. package/dist/tui/AgentExplorer.d.ts +179 -32
  163. package/dist/tui/AgentExplorer.d.ts.map +1 -1
  164. package/dist/tui/App.d.ts.map +1 -1
  165. package/dist/tui/BackgroundJobsPanel.d.ts.map +1 -1
  166. package/dist/tui/BrandHeader.d.ts +3 -1
  167. package/dist/tui/BrandHeader.d.ts.map +1 -1
  168. package/dist/tui/Composer.d.ts +23 -1
  169. package/dist/tui/Composer.d.ts.map +1 -1
  170. package/dist/tui/ComposerFrame.d.ts +10 -3
  171. package/dist/tui/ComposerFrame.d.ts.map +1 -1
  172. package/dist/tui/LiveActivity.d.ts +4 -0
  173. package/dist/tui/LiveActivity.d.ts.map +1 -1
  174. package/dist/tui/PendingInputPanel.d.ts +14 -11
  175. package/dist/tui/PendingInputPanel.d.ts.map +1 -1
  176. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  177. package/dist/tui/Picker.d.ts +11 -1
  178. package/dist/tui/Picker.d.ts.map +1 -1
  179. package/dist/tui/StatusBar.d.ts +61 -36
  180. package/dist/tui/StatusBar.d.ts.map +1 -1
  181. package/dist/tui/Transcript.d.ts +14 -0
  182. package/dist/tui/Transcript.d.ts.map +1 -1
  183. package/dist/tui/agent-transcript-rows.d.ts +34 -12
  184. package/dist/tui/agent-transcript-rows.d.ts.map +1 -1
  185. package/dist/tui/agent.d.ts +71 -1
  186. package/dist/tui/agent.d.ts.map +1 -1
  187. package/dist/tui/job-exit-row.d.ts +19 -0
  188. package/dist/tui/job-exit-row.d.ts.map +1 -0
  189. package/dist/tui/model-choices.d.ts +20 -0
  190. package/dist/tui/model-choices.d.ts.map +1 -1
  191. package/dist/tui/model-selection-intent.d.ts +25 -0
  192. package/dist/tui/model-selection-intent.d.ts.map +1 -1
  193. package/dist/tui/permission-review.d.ts +26 -0
  194. package/dist/tui/permission-review.d.ts.map +1 -1
  195. package/dist/tui/pr-status.d.ts +112 -0
  196. package/dist/tui/pr-status.d.ts.map +1 -0
  197. package/dist/tui/shell-cell.d.ts +86 -0
  198. package/dist/tui/shell-cell.d.ts.map +1 -0
  199. package/dist/tui/shorten-path.d.ts +10 -0
  200. package/dist/tui/shorten-path.d.ts.map +1 -0
  201. package/dist/tui/slashCommands.d.ts +4 -0
  202. package/dist/tui/slashCommands.d.ts.map +1 -1
  203. package/dist/tui/theme.d.ts +6 -0
  204. package/dist/tui/theme.d.ts.map +1 -1
  205. package/dist/tui/tidy-tool-output.d.ts +5 -0
  206. package/dist/tui/tidy-tool-output.d.ts.map +1 -1
  207. package/dist/tui/types.d.ts +23 -1
  208. package/dist/tui/types.d.ts.map +1 -1
  209. package/dist/tui/use-pr-status.d.ts +15 -0
  210. package/dist/tui/use-pr-status.d.ts.map +1 -0
  211. package/dist/tui/workflow-runs.d.ts +38 -0
  212. package/dist/tui/workflow-runs.d.ts.map +1 -0
  213. package/package.json +7 -6
  214. package/dist/chunks/acp-QXCMYZW7.js.map +0 -6
  215. package/dist/chunks/agent-session-UNUZAMRW.js +0 -46
  216. package/dist/chunks/chunk-EWKJGHRO.js.map +0 -6
  217. package/dist/chunks/chunk-MJMDPZ6G.js.map +0 -6
  218. package/dist/chunks/chunk-N5IF64K3.js.map +0 -6
  219. package/dist/chunks/chunk-PYG7DZ2D.js +0 -380
  220. package/dist/chunks/chunk-PYG7DZ2D.js.map +0 -6
  221. package/dist/chunks/chunk-RC6X3ZY6.js.map +0 -6
  222. package/dist/chunks/chunk-TJJUB7VQ.js.map +0 -6
  223. package/dist/chunks/exec-5ZXTX5XC.js.map +0 -6
  224. package/dist/chunks/session-step-XATOSLSM.js +0 -26
  225. package/dist/chunks/tui-ZURFLJQB.js.map +0 -6
  226. /package/dist/chunks/{activity-command-HK7YJTXV.js.map → activity-command-MCYEK4Z4.js.map} +0 -0
  227. /package/dist/chunks/{add-UYIKY4OE.js.map → add-ZQ3YWP4F.js.map} +0 -0
  228. /package/dist/chunks/{agent-Y2WYEXWC.js.map → agent-PAGVUATH.js.map} +0 -0
  229. /package/dist/chunks/{agent-session-UNUZAMRW.js.map → agent-session-PLIPF3XG.js.map} +0 -0
  230. /package/dist/chunks/{archive-C4A3HPLF.js.map → archive-VPREZOGC.js.map} +0 -0
  231. /package/dist/chunks/{bin-main-VQKMQICY.js.map → bin-main-MWFKUXP2.js.map} +0 -0
  232. /package/dist/chunks/{browser-CRX4HM4C.js.map → browser-FZWYOIIJ.js.map} +0 -0
  233. /package/dist/chunks/{chat-5MWPKAET.js.map → chat-W355SFNQ.js.map} +0 -0
  234. /package/dist/chunks/{chunk-TLTJ2KTW.js.map → chunk-2BZOT2CT.js.map} +0 -0
  235. /package/dist/chunks/{chunk-AN7FO7NS.js.map → chunk-3F5DGROG.js.map} +0 -0
  236. /package/dist/chunks/{chunk-YMKYJ4DI.js.map → chunk-3M3PMQ3I.js.map} +0 -0
  237. /package/dist/chunks/{chunk-WATMFOHB.js.map → chunk-46B7KRXY.js.map} +0 -0
  238. /package/dist/chunks/{chunk-GMCOZ3CU.js.map → chunk-52OVP5BG.js.map} +0 -0
  239. /package/dist/chunks/{chunk-HFJHHCTY.js.map → chunk-56OUKG5W.js.map} +0 -0
  240. /package/dist/chunks/{chunk-4BZMQ2VD.js.map → chunk-5URT3ZM2.js.map} +0 -0
  241. /package/dist/chunks/{chunk-AIY4PCDR.js.map → chunk-6TDJXZ5W.js.map} +0 -0
  242. /package/dist/chunks/{chunk-ZKEWE6K4.js.map → chunk-AHYHR5DY.js.map} +0 -0
  243. /package/dist/chunks/{chunk-3P5PF6XE.js.map → chunk-AP5KD43Y.js.map} +0 -0
  244. /package/dist/chunks/{chunk-OLPOM3DR.js.map → chunk-AS7UWXMN.js.map} +0 -0
  245. /package/dist/chunks/{chunk-Q24K7536.js.map → chunk-BOV53LZO.js.map} +0 -0
  246. /package/dist/chunks/{chunk-HQM2WSQT.js.map → chunk-BUCICQWG.js.map} +0 -0
  247. /package/dist/chunks/{chunk-YXLD46UI.js.map → chunk-DYUOXP5Q.js.map} +0 -0
  248. /package/dist/chunks/{chunk-UOOQPODR.js.map → chunk-E7HLYLD7.js.map} +0 -0
  249. /package/dist/chunks/{chunk-TIGWWAJI.js.map → chunk-EKUJUPFA.js.map} +0 -0
  250. /package/dist/chunks/{chunk-HV4LJFNV.js.map → chunk-F3YQ2CSZ.js.map} +0 -0
  251. /package/dist/chunks/{chunk-HBBB2CAC.js.map → chunk-FU4GQ7K2.js.map} +0 -0
  252. /package/dist/chunks/{chunk-IJH7J5NJ.js.map → chunk-GQN64E36.js.map} +0 -0
  253. /package/dist/chunks/{chunk-NQY5P2EB.js.map → chunk-HKDPP2JF.js.map} +0 -0
  254. /package/dist/chunks/{chunk-WM2JEUGV.js.map → chunk-HSEJGSXE.js.map} +0 -0
  255. /package/dist/chunks/{chunk-KU3W6IHV.js.map → chunk-I6CDUPVR.js.map} +0 -0
  256. /package/dist/chunks/{chunk-O7DBCVNY.js.map → chunk-IQBR45AU.js.map} +0 -0
  257. /package/dist/chunks/{chunk-FXS3AG6B.js.map → chunk-JCDTR2ZU.js.map} +0 -0
  258. /package/dist/chunks/{chunk-AXIGFKJF.js.map → chunk-KMHLON54.js.map} +0 -0
  259. /package/dist/chunks/{chunk-EIYM6TY7.js.map → chunk-KOG2WB66.js.map} +0 -0
  260. /package/dist/chunks/{chunk-5GRV6P5C.js.map → chunk-LBH5WVXU.js.map} +0 -0
  261. /package/dist/chunks/{chunk-K76WV7TN.js.map → chunk-MBBFX64S.js.map} +0 -0
  262. /package/dist/chunks/{chunk-JPPC4LJF.js.map → chunk-MJO6CH5F.js.map} +0 -0
  263. /package/dist/chunks/{chunk-SRU3MDHZ.js.map → chunk-NATYSTPM.js.map} +0 -0
  264. /package/dist/chunks/{chunk-X2FWNSZ7.js.map → chunk-NBD5MAGK.js.map} +0 -0
  265. /package/dist/chunks/{chunk-NROIHI6L.js.map → chunk-PINPSIJ5.js.map} +0 -0
  266. /package/dist/chunks/{chunk-YTESW44T.js.map → chunk-PLKJKF32.js.map} +0 -0
  267. /package/dist/chunks/{chunk-UDBEU2FR.js.map → chunk-QRT3N2K3.js.map} +0 -0
  268. /package/dist/chunks/{chunk-Q5YM2GCX.js.map → chunk-QXDKRJZ5.js.map} +0 -0
  269. /package/dist/chunks/{chunk-V7TQR6AR.js.map → chunk-RBX6RVYO.js.map} +0 -0
  270. /package/dist/chunks/{chunk-J72CRUNX.js.map → chunk-RM6HTBJK.js.map} +0 -0
  271. /package/dist/chunks/{chunk-A5UXODFL.js.map → chunk-S6MZK4LD.js.map} +0 -0
  272. /package/dist/chunks/{chunk-C5WBEO3X.js.map → chunk-VUOS5SQ3.js.map} +0 -0
  273. /package/dist/chunks/{chunk-LQMHASKR.js.map → chunk-XCWZZZOW.js.map} +0 -0
  274. /package/dist/chunks/{chunk-2NJ2XUXJ.js.map → chunk-YYQFUKI7.js.map} +0 -0
  275. /package/dist/chunks/{chunk-7WJOQ6EA.js.map → chunk-YYVDLVUM.js.map} +0 -0
  276. /package/dist/chunks/{chunk-UWWGSDZ5.js.map → chunk-ZB5ETOVE.js.map} +0 -0
  277. /package/dist/chunks/{chunk-CG65NUSJ.js.map → chunk-ZG6NVROB.js.map} +0 -0
  278. /package/dist/chunks/{chunk-TWMKJ6BE.js.map → chunk-ZHBHRMCI.js.map} +0 -0
  279. /package/dist/chunks/{cli-runtime-FXV35STX.js.map → cli-runtime-NG23IVRM.js.map} +0 -0
  280. /package/dist/chunks/{commands-QPVRB3RK.js.map → commands-LQISMOPF.js.map} +0 -0
  281. /package/dist/chunks/{crash-report-S3BTEPYR.js.map → crash-report-EYK56MJJ.js.map} +0 -0
  282. /package/dist/chunks/{dist-BFC7XUCT.js.map → dist-3AMBKAG4.js.map} +0 -0
  283. /package/dist/chunks/{dist-SKRHHPUR.js.map → dist-AUDNCB3F.js.map} +0 -0
  284. /package/dist/chunks/{dist-3GJFRS2X.js.map → dist-AZJ56DQJ.js.map} +0 -0
  285. /package/dist/chunks/{dist-EY3OJBQH.js.map → dist-DWB5AYXB.js.map} +0 -0
  286. /package/dist/chunks/{dist-ERN5DRKK.js.map → dist-EDKLCZY4.js.map} +0 -0
  287. /package/dist/chunks/{dist-LVG2TYZT.js.map → dist-PZXF5NU3.js.map} +0 -0
  288. /package/dist/chunks/{dist-G42HPNIE.js.map → dist-XT4V74YL.js.map} +0 -0
  289. /package/dist/chunks/{doctor-KMTPPEWG.js.map → doctor-3EOUWDYB.js.map} +0 -0
  290. /package/dist/chunks/{eval-53UONRWR.js.map → eval-VHWEJ4GG.js.map} +0 -0
  291. /package/dist/chunks/{home-QS7RBP34.js.map → home-H4GTIYO5.js.map} +0 -0
  292. /package/dist/chunks/{host-queries-A55WPD4R.js.map → host-queries-5C4TCX6J.js.map} +0 -0
  293. /package/dist/chunks/{lifecycle-VR36VUPC.js.map → lifecycle-IHW4P636.js.map} +0 -0
  294. /package/dist/chunks/{list-DQZU7NEF.js.map → list-JJZ7I5OF.js.map} +0 -0
  295. /package/dist/chunks/{login-6OFDFHD6.js.map → login-T2RKNHK2.js.map} +0 -0
  296. /package/dist/chunks/{logs-KSG7SFAB.js.map → logs-J6D4SEDY.js.map} +0 -0
  297. /package/dist/chunks/{mcp-CHPFRT2Y.js.map → mcp-WONRVJ26.js.map} +0 -0
  298. /package/dist/chunks/{message-command-AJFVZ5EY.js.map → message-command-F3TFROMK.js.map} +0 -0
  299. /package/dist/chunks/{operator-tools-LTPV3CH5.js.map → operator-tools-H4MYC5PE.js.map} +0 -0
  300. /package/dist/chunks/{output-schema-UM3P5AOR.js.map → output-schema-RFJUTQ2N.js.map} +0 -0
  301. /package/dist/chunks/{pal-CWO3HUXQ.js.map → pal-UCYGJN75.js.map} +0 -0
  302. /package/dist/chunks/{providers-7P5CTPHT.js.map → providers-BHF65IUG.js.map} +0 -0
  303. /package/dist/chunks/{resident-3K7SI2UP.js.map → resident-CNS3XQRU.js.map} +0 -0
  304. /package/dist/chunks/{resume-command-XZWGUXRK.js.map → resume-command-Y3NYDSI4.js.map} +0 -0
  305. /package/dist/chunks/{schedule-GKM3RRIU.js.map → schedule-KN5YGOSJ.js.map} +0 -0
  306. /package/dist/chunks/{service-CIWTUMRI.js.map → service-OEOHUGM6.js.map} +0 -0
  307. /package/dist/chunks/{session-step-XATOSLSM.js.map → session-step-AYHFVVX6.js.map} +0 -0
  308. /package/dist/chunks/{skills-HV2MOBEW.js.map → skills-K3JRZ3IR.js.map} +0 -0
  309. /package/dist/chunks/{state-6HV3D3O4.js.map → state-QPSQI7U7.js.map} +0 -0
  310. /package/dist/chunks/{store-6J2MUGON.js.map → store-7WZWQXKX.js.map} +0 -0
  311. /package/dist/chunks/{store-GDP2EW27.js.map → store-PSQKDEPY.js.map} +0 -0
  312. /package/dist/chunks/{store-VXNKMMNW.js.map → store-Z3PS6LUZ.js.map} +0 -0
  313. /package/dist/chunks/{upgrade-MC5JB7DK.js.map → upgrade-C6QUXRLB.js.map} +0 -0
  314. /package/dist/chunks/{worktree-6YPRX6SU.js.map → worktree-KLD2PAMU.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
1
1
  # @namzu/cli
2
2
 
3
+ ## 36.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 437dd6d: Add the `workflow` tool. When you ask for one (hypermode on, the word "workflow" or "iş akışı" in your message, or `/workflow <what to do>`), the model can write a short script that starts many agents in phases and runs them in the background. Before anything starts you see its name, purpose, phases, agent limits and the script (`d` shows all of it) and approve once; in `auto` mode ("bypass permissions") it starts without asking, and a session with nobody to ask refuses with a plain reason. Its agents are ordinary children under the same permission mode, rules, sandbox and budget as the `Agent` tool, but they are not subagent rows: the run is one row on the rail (`◯ name ▰▱ 3/6 · 12s · ↓ tokens`) opening to its phases (declared ones listed before they start), then a phase's agents, then an agent's transcript; `x` stops the run on the phases and skips one agent on the agents. The conversation shows `● Workflow(<purpose>)` at launch and `✓ Workflow <name> completed · …` when the run ends, `/workflows` lists this conversation's runs (earlier ones from their journals under `<session>/runs/<runId>/workflow/`), and the model gets one message with the result when a run ends. Nothing changes for conversations that never ask for a workflow. The workflow tool is offered only by hosts that can review a background run (the terminal and `namzu exec`, not the desktop app yet). A finished workflow and a background command that ends on its own now start a turn at once when the session is idle, so the model reports without you typing (a command you stopped yourself does not). `namzu exec` waits for a workflow the model started, lets the model report, and then exits; its `Tokens:` line (and the `budget` in `exec --json`) is the whole command's, the reporting turn and the workflow's agents included. New config keys: `workflow.maxConcurrency` (1-16, default min(8, CPUs-2)) and `workflow.maxAgents` (1-1000, default 200).
8
+
9
+ ### Patch Changes
10
+
11
+ - 437dd6d: The agents rail under the message box is now a `main` row plus one row per agent that is running or finished in the last 30 seconds (type, description, time and spend), five at a time with `↓ N more`. Press ↓ in an empty composer to move into it: ↑/↓ select, Enter opens that agent's transcript (Esc comes back to the same row), `x` stops a running agent or clears a finished one, Esc returns to the composer. The old titled tree (workflow and phase lines, a latest-activity line per agent, the `↓ / ctrl+t` counter) is no longer drawn on the rail; `Ctrl+T` and `/agents` still open the full cockpit with all of it.
12
+ - 437dd6d: `/jobs` is now the `Background` panel: a row per background shell (status icon, command, `running` / `done` / `error` / `stopped`), `Shell details` with `Status:`, `Runtime:`, `Command:` and live `Output:`, and no job ids on screen. When a background command ends the transcript gets a row such as `● Background command "npm test" completed (exit code 0) · 12s`, or `failed with exit code 2` / `was stopped`.
13
+ - 437dd6d: Messages you type while Namzu is working now wait as grey `❯` rows above the input box instead of inside it; a Tab-queued one says `after this reply`. Press Up on an empty input to choose a queued message and Enter to edit it, or `ctrl+x ctrl+s` to send waiting messages now. Nothing changes in how messages reach the model.
14
+
15
+ They sit directly above the `Working` row.
16
+
17
+ - 692466e: The message box in Namzu Desktop now shows, beside the mode, how many background shells are running ("2 shells", which opens the list) and the pull request of the conversation's branch ("PR #607", coloured by review state, which opens it in the browser). The pull request comes from the GitHub command line tool the terminal already uses; with `gh` missing, signed out, or no pull request, nothing is shown. The CLI host gains a read-only `namzu/project/pr` request for it.
18
+ - 692466e: A message typed in Namzu Desktop while a reply is running now reaches that reply at its next model request, as the terminal does. Before, the desktop host reported live input as unavailable for the whole of every turn, so each such message silently waited for the reply to finish. Nothing to change on your side.
19
+ - 437dd6d: The composer footer is now one row of items in the reference's order: the mode in plain words (`⏵⏵ bypass permissions on`, `⏵⏵ accept edits on`, `‖ plan mode on`), `PR #592` for the current branch's pull request (coloured by review state and linked where the terminal supports it), a `N shells` pill for running background shells (the separate "shells running" line is gone), then `esc to interrupt` while a turn runs, `← N agents` and `↓ to manage`. From an empty composer `←` opens the agents and `↓` focuses the shell pill first (Enter opens the `/jobs` screen) and then the agents rail; with anything typed both keys keep moving the cursor, and the hints leave the row. The agents rail's own `↓ to manage` on its `main` row is gone, since the footer says it. A running shell takes the `(shift+tab to cycle)` reminder off the row. The model name now yields first when the row is narrow. The pull request comes from the `gh` command line tool, read in the background, only on a real terminal; `NAMZU_PR_STATUS=off` turns it off. The working directory no longer appears on the footer row. The composer's frame is now two plain horizontal rules with a dim `❯ ` prompt between them: the boxed frame with corners, side borders and a `MESSAGE` caption is gone, and `hypermode` is named at the upper rule's right end.
20
+ - 437dd6d: The startup header now shows the folder Namzu is working in on the row under the version, with the home folder written as `~` and a long path cut from the left to fit. The footer no longer carries it.
21
+ - 437dd6d: Shell commands in the terminal now read like Claude Code's: a green or red dot in front of `Bash(command)` instead of a tick and a duration, the command's line breaks kept in the header, and the output hung under `⎿` as its first three lines followed by `… +N lines (ctrl+o to expand)`. A failed command now shows its error output and `Exit code N` instead of repeating the command, an empty result reads `(No output)`, and a command moved to a background job reads `Running in the background` instead of the instructions meant for the model. While a command runs it shows `Running…` with the elapsed time.
22
+ - 28eaee1: On Windows the `bash` tool, background jobs started with `run_in_background`, and plugin shell hooks now run in Git for Windows' bash instead of cmd.exe whenever Git for Windows is installed, and `hostCommandShell()` and `BashTool.commandDialect()` answer `bash` there instead of `cmd`. Before, every command a model wrote was refused or needed a person to approve it each time, because the permission rules cannot read cmd.exe lines. Git Bash is looked up as `NAMZU_BASH_SHELL`, then `%ProgramFiles%\Git\bin\bash.exe`, then `%ProgramFiles(x86)%\Git\bin\bash.exe`, then `%LOCALAPPDATA%\Programs\Git\bin\bash.exe`, then the install holding the first `git` that `where.exe git` lists outside the working directory. Commands now need Unix syntax (`/dev/null`, forward slashes, `$VAR`); the model is told so, and `>nul` is rewritten to `/dev/null`. A host that depends on cmd.exe syntax in the `bash` tool, or on `hostCommandShell().dialect === 'cmd'` on a machine with Git for Windows, sets `NAMZU_BASH_SHELL=cmd` (a path to `cmd.exe`, such as `%ComSpec%`, works too) to keep the old behaviour. Without Git for Windows nothing changes except that `windowsShellNotice()` returns a sentence saying commands run in cmd.exe and each asks for approval; the CLI shows it once at session start. New exports: `findGitBash`, `isWindowsBash`, `windowsShellNotice`, `rewriteWindowsNullRedirect`, `WINDOWS_BASH_GUIDANCE`, `WINDOWS_CMD_FALLBACK_NOTICE`, and an optional `windows` flag on `CommandShell`. Stopping a command or job on Windows now also ends processes that Git Bash forked, which `taskkill /T` alone missed.
23
+ - 437dd6d: Agents that the model gave one `workflow` label now also appear as a single row on the rail under the message box: `◯ name`, a progress bar, `3/7 · elapsed · ↓ tokens`. Press ↓ to reach it; Enter opens that workflow's phases and agents (Esc comes back to the row), `x` stops its running agents or clears the row once it has finished, and the row leaves 30 seconds after the last agent ends. When a workflow's turn ends, one line in the conversation says how it ended. The rail's key line now reads `enter to view · x to stop`.
24
+ - 437dd6d: Workflows and subagents are now separate in the terminal. An agent started with a `workflow` label no longer shows up as an agent row on the rail: it appears only inside its workflow, which is one row after the agent rows, and the `main` row shows only when there is an agent row. Enter on the workflow opens its phases (numbered, turning ✔ or ✘, with done/total), then the agents of a phase, then an agent's transcript; ← or Esc goes back up and `x` stops the whole workflow or one agent. In the conversation a workflow's launch is one `Workflow <name>` line instead of a row per agent, and the turn summary no longer counts phases.
25
+ - Updated dependencies [437dd6d]
26
+ - Updated dependencies [437dd6d]
27
+ - Updated dependencies [28eaee1]
28
+ - Updated dependencies [437dd6d]
29
+ - @namzu/sdk@51.0.0
30
+ - @namzu/browser@2.0.1
31
+ - @namzu/computer-use@3.1.0
32
+ - @namzu/anthropic@6.3.0
33
+ - @namzu/ollama@2.2.5
34
+ - @namzu/openai@4.1.4
35
+ - @namzu/openrouter@3.0.3
36
+ - @namzu/sandbox@26.0.0
37
+
38
+ ## 36.2.0
39
+
40
+ ### Minor Changes
41
+
42
+ - 1c48447: Make Auto a visible model choice in the terminal and in Desktop. With a `routing` block in your user config, the `/model` picker lists "Auto (picks a model for each task)" first, `/model auto` (or "switch model to auto", "auto'ya geç") turns it on, and Desktop's composer model picker offers the same row; `model: auto` stays the way to make Auto the default every time. Choosing a model by hand turns Auto off for that conversation and choosing Auto turns it back on; a launch `--model` still wins for that launch. Auto chosen in the terminal lasts for the launch, and Desktop remembers it per conversation. Nothing changes for configs without `routing`: asking for Auto there now says in plain words that it needs a `routing` block. The ACP runtime gains an optional `auto` field on the provider status and a `namzu/providers/select_auto` method; Pals and external engines are never offered Auto.
43
+ - 1c48447: Add opt-in automatic model selection. Set `model: auto` and a `routing` block (`default`, optional `tiers.fast` and `tiers.big`, `strategy`, `thresholds`, `timeoutMs`) in your user or managed config, and the CLI asks your configured `decision` model how big each task is and runs it on the matching model, so short chat can use a small local model and large changes a bigger one. Any failure to decide, a timeout, or an unavailable tier runs `routing.default`; it never falls to the small or big model. `model: auto` without `routing.default` is a config error at load. Nothing changes unless you set these keys: the default behaviour is untouched, project config and the environment cannot set them, and `--model` or picking a model by hand turns auto off. Pals resolve `auto` once, to `routing.default`, when a session starts.
44
+ - 90c911e: Add an optional `decision` config block that gives the host and Pal agents a `decide` tool backed by a System-1 decision model (yes/no, choice or score). Two providers are supported: `provider: azure` (`endpoint`, `deployment`, optional `tokenEnv`, default `AZURE_FOUNDRY_TOKEN`) and `provider: http` (`url`, optional `model`, optional `apiKeyEnv`). The config names the environment variable that holds a credential, never the credential itself. The tool is advisory and fail-open: if the model is unreachable or errors, the tool tells the agent to proceed and the turn does not fail. Without the block nothing changes. Nothing needs to be done to upgrade.
45
+
3
46
  ## 36.1.2
4
47
 
5
48
  ### Patch 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-VQKMQICY.js");
84
+ var { main } = await import("./chunks/bin-main-MWFKUXP2.js");
85
85
  main(fileURLToPath(new URL("./", import.meta.url).href + "bin.js"));
86
86
  //# sourceMappingURL=bin.js.map
@@ -2,15 +2,17 @@ import { createRequire as __namzuCreateRequire } from 'node:module';
2
2
  const require = __namzuCreateRequire(import.meta.url);
3
3
  import {
4
4
  dispatchCliPalMessages
5
- } from "./chunk-X2FWNSZ7.js";
5
+ } from "./chunk-NBD5MAGK.js";
6
6
  import {
7
7
  conversationMarkdown,
8
+ lookupPr,
9
+ runCommand,
8
10
  withKeyNote
9
- } from "./chunk-JELVHU7X.js";
10
- import "./chunk-NROIHI6L.js";
11
+ } from "./chunk-2TGQ2B53.js";
12
+ import "./chunk-PINPSIJ5.js";
11
13
  import {
12
14
  decideHeadlessTrust
13
- } from "./chunk-C5WBEO3X.js";
15
+ } from "./chunk-VUOS5SQ3.js";
14
16
  import {
15
17
  cliPalComputerStatus,
16
18
  cliPalScreen,
@@ -23,21 +25,21 @@ import {
23
25
  startCliPalComputer,
24
26
  stopCliPalComputer,
25
27
  takeOverCliPalComputer
26
- } from "./chunk-2NJ2XUXJ.js";
28
+ } from "./chunk-YYQFUKI7.js";
27
29
  import {
28
30
  palSessionEnvironment
29
- } from "./chunk-MJMDPZ6G.js";
31
+ } from "./chunk-2O7KYX4V.js";
30
32
  import {
31
33
  cliPalActivitySubscriptionPolicy,
32
34
  cliPalActivitySubscriptionStore,
33
35
  cliPalCommunicationPolicy,
34
36
  cliPalCommunicationStore
35
- } from "./chunk-WATMFOHB.js";
37
+ } from "./chunk-46B7KRXY.js";
36
38
  import {
37
39
  claimPalConversation,
38
40
  listPalConversations,
39
41
  palConversationBinding
40
- } from "./chunk-AIY4PCDR.js";
42
+ } from "./chunk-6TDJXZ5W.js";
41
43
  import {
42
44
  FileCheckpointStore,
43
45
  PluginSettingsStore,
@@ -48,16 +50,16 @@ import {
48
50
  sessionLogCheckpointView,
49
51
  validateComposerSendSettings,
50
52
  verifyCredential
51
- } from "./chunk-TJJUB7VQ.js";
52
- import "./chunk-GMCOZ3CU.js";
53
- import "./chunk-AN7FO7NS.js";
53
+ } from "./chunk-SFUUN6B3.js";
54
+ import "./chunk-52OVP5BG.js";
55
+ import "./chunk-3F5DGROG.js";
54
56
  import "./chunk-WHODOMXA.js";
55
- import "./chunk-FXS3AG6B.js";
56
- import "./chunk-LQMHASKR.js";
57
- import "./chunk-PYG7DZ2D.js";
58
- import "./chunk-3P5PF6XE.js";
59
- import "./chunk-4BZMQ2VD.js";
60
- import "./chunk-JPPC4LJF.js";
57
+ import "./chunk-JCDTR2ZU.js";
58
+ import "./chunk-XCWZZZOW.js";
59
+ import "./chunk-QBAISLAD.js";
60
+ import "./chunk-AP5KD43Y.js";
61
+ import "./chunk-5URT3ZM2.js";
62
+ import "./chunk-MJO6CH5F.js";
61
63
  import "./chunk-ZWA2JRJV.js";
62
64
  import "./chunk-NUGPLXVK.js";
63
65
  import {
@@ -67,7 +69,7 @@ import {
67
69
  resolveTrustedProjectContext
68
70
  } from "./chunk-CHIEVVQ2.js";
69
71
  import "./chunk-GNBMKISG.js";
70
- import "./chunk-K76WV7TN.js";
72
+ import "./chunk-MBBFX64S.js";
71
73
  import "./chunk-US5ZFPAU.js";
72
74
  import {
73
75
  automaticKind,
@@ -75,7 +77,7 @@ import {
75
77
  discoverProviders,
76
78
  hasApiCredential,
77
79
  isAnonymousZen
78
- } from "./chunk-YXLD46UI.js";
80
+ } from "./chunk-DYUOXP5Q.js";
79
81
  import {
80
82
  ALL_PROVIDER_IDS,
81
83
  PROVIDER_REGISTRY
@@ -83,13 +85,13 @@ import {
83
85
  import {
84
86
  compilePermissions,
85
87
  warnLegacyMcpPermissionNames
86
- } from "./chunk-Q5YM2GCX.js";
87
- import "./chunk-WM2JEUGV.js";
88
+ } from "./chunk-QXDKRJZ5.js";
89
+ import "./chunk-HSEJGSXE.js";
88
90
  import {
89
91
  cliLogger
90
- } from "./chunk-HBBB2CAC.js";
92
+ } from "./chunk-FU4GQ7K2.js";
91
93
  import "./chunk-EEDZOGV4.js";
92
- import "./chunk-5GRV6P5C.js";
94
+ import "./chunk-LBH5WVXU.js";
93
95
  import "./chunk-OH6TB27S.js";
94
96
  import {
95
97
  isOfferableModel
@@ -112,11 +114,11 @@ import {
112
114
  refreshIndex,
113
115
  setTitle,
114
116
  unarchiveConversation
115
- } from "./chunk-TIGWWAJI.js";
117
+ } from "./chunk-EKUJUPFA.js";
116
118
  import {
117
119
  cliProjectRoot
118
120
  } from "./chunk-H6B6AROX.js";
119
- import "./chunk-A5UXODFL.js";
121
+ import "./chunk-S6MZK4LD.js";
120
122
  import {
121
123
  cliPalStore,
122
124
  createPal,
@@ -126,13 +128,13 @@ import {
126
128
  listPals,
127
129
  palAtWorkspace,
128
130
  updatePal
129
- } from "./chunk-OLPOM3DR.js";
131
+ } from "./chunk-AS7UWXMN.js";
130
132
  import {
131
133
  isTrusted,
132
134
  isTrustedAtStateRoot,
133
135
  trustDir,
134
136
  untrustDir
135
- } from "./chunk-CG65NUSJ.js";
137
+ } from "./chunk-ZG6NVROB.js";
136
138
  import {
137
139
  canonicalProjectPath
138
140
  } from "./chunk-JORONMD3.js";
@@ -143,8 +145,8 @@ import {
143
145
  readStoredGeminiApiKey,
144
146
  writeStoredApiKey,
145
147
  writeStoredGeminiApiKey
146
- } from "./chunk-Q24K7536.js";
147
- import "./chunk-NQY5P2EB.js";
148
+ } from "./chunk-BOV53LZO.js";
149
+ import "./chunk-HKDPP2JF.js";
148
150
  import {
149
151
  ACPServer,
150
152
  DiskLogMedium,
@@ -177,7 +179,7 @@ import {
177
179
  resolveWithinAnyReal,
178
180
  resolveWithinReal,
179
181
  selectAssistantText
180
- } from "./chunk-EWKJGHRO.js";
182
+ } from "./chunk-V3ZLK3XQ.js";
181
183
  import {
182
184
  __commonJS,
183
185
  __name,
@@ -9587,6 +9589,7 @@ function withCliHarnesses(base, directory, deps = createDefaults()) {
9587
9589
  const selections = /* @__PURE__ */ new Map();
9588
9590
  const records = /* @__PURE__ */ new Map();
9589
9591
  const reserving = /* @__PURE__ */ new Set();
9592
+ const nativeTurns = /* @__PURE__ */ new Set();
9590
9593
  const catalogues = /* @__PURE__ */ new Map();
9591
9594
  const clock2 = /* @__PURE__ */ __name(() => (deps.now ?? Date.now)(), "clock");
9592
9595
  let closed = false;
@@ -9754,7 +9757,14 @@ function withCliHarnesses(base, directory, deps = createDefaults()) {
9754
9757
  let record2 = records.get(request.sessionId);
9755
9758
  try {
9756
9759
  const choice = await selectionFor(request.sessionId, cwd);
9757
- if (!choice) return await base.gateway.prompt(request);
9760
+ if (!choice) {
9761
+ nativeTurns.add(request.sessionId);
9762
+ try {
9763
+ return await base.gateway.prompt(request);
9764
+ } finally {
9765
+ nativeTurns.delete(request.sessionId);
9766
+ }
9767
+ }
9758
9768
  if (request.attachments?.length)
9759
9769
  throw new Error(
9760
9770
  "This engine connection does not support attachments yet. Your draft is retained."
@@ -9864,7 +9874,7 @@ function withCliHarnesses(base, directory, deps = createDefaults()) {
9864
9874
  ...liveInputStatus && liveInput ? {
9865
9875
  liveInputStatus: /* @__PURE__ */ __name(async (id2, scopeId, scope) => {
9866
9876
  if (closed) throw new Error("The connection is closed.");
9867
- if (records.has(id2) || selections.has(id2) || reserving.has(id2)) {
9877
+ if (records.has(id2) || selections.has(id2) || reserving.has(id2) && !nativeTurns.has(id2)) {
9868
9878
  if (scopeId !== void 0)
9869
9879
  throw new Error("This live prompt scope is unavailable in this engine.");
9870
9880
  return { available: false, inputs: [] };
@@ -9872,7 +9882,7 @@ function withCliHarnesses(base, directory, deps = createDefaults()) {
9872
9882
  return liveInputStatus(id2, scopeId, scope);
9873
9883
  }, "liveInputStatus"),
9874
9884
  liveInput: /* @__PURE__ */ __name(async (id2, input, scope) => {
9875
- if (closed || records.has(id2) || selections.has(id2) || reserving.has(id2))
9885
+ if (closed || records.has(id2) || selections.has(id2) || reserving.has(id2) && !nativeTurns.has(id2))
9876
9886
  throw new Error("Live input is unavailable in this engine.");
9877
9887
  return liveInput(id2, input, scope);
9878
9888
  }, "liveInput")
@@ -10008,6 +10018,21 @@ function withCliHarnesses(base, directory, deps = createDefaults()) {
10008
10018
  reserving.delete(id2);
10009
10019
  }
10010
10020
  }, "selectProvider"),
10021
+ selectAuto: /* @__PURE__ */ __name(async (id2) => {
10022
+ if (!base.selectAuto) throw new Error("Auto is not available here.");
10023
+ if ((deps.isPal ?? ((path) => Boolean(palAtWorkspace(path))))(directory))
10024
+ return await base.selectAuto(id2);
10025
+ if (reserving.has(id2) || records.get(id2)?.route)
10026
+ throw new Error("Stop this conversation before changing its model.");
10027
+ reserving.add(id2);
10028
+ try {
10029
+ if (await selectionFor(id2, trusted()))
10030
+ throw new Error("This conversation uses its own engine and model catalogue.");
10031
+ return await base.selectAuto(id2);
10032
+ } finally {
10033
+ reserving.delete(id2);
10034
+ }
10035
+ }, "selectAuto"),
10011
10036
  plugins: /* @__PURE__ */ __name(async (cwd, id2) => id2 && await selectionFor(id2, cwd) ? {
10012
10037
  plugins: [],
10013
10038
  live: false,
@@ -10902,6 +10927,14 @@ function createProjectChanges(options = {}) {
10902
10927
  }
10903
10928
  __name(createProjectChanges, "createProjectChanges");
10904
10929
 
10930
+ // src/commands/desktop-host-pr.ts
10931
+ async function projectPr(cwd, run = runCommand) {
10932
+ const found = await lookupPr(run, cwd);
10933
+ if (found.state.kind !== "pr") return null;
10934
+ return { number: found.state.number, url: found.state.url, review: found.state.review };
10935
+ }
10936
+ __name(projectPr, "projectPr");
10937
+
10905
10938
  // src/commands/desktop-host.ts
10906
10939
  function text3(params, key, max = 400) {
10907
10940
  const value = params[key];
@@ -11964,6 +11997,12 @@ function createDesktopHostExtensions(runtime, directory, publishedSessionCwd, re
11964
11997
  if (!isTrusted(cwd)) return null;
11965
11998
  return projectGit(cwd);
11966
11999
  }, "namzu/project/git"),
12000
+ "namzu/project/pr": /* @__PURE__ */ __name(async (params = {}) => {
12001
+ if (!params || typeof params !== "object" || Array.isArray(params) || Object.keys(params).length > 0)
12002
+ throw new Error("Invalid project pull request request.");
12003
+ if (!isTrusted(cwd)) return { pr: null };
12004
+ return { pr: await projectPr(cwd) };
12005
+ }, "namzu/project/pr"),
11967
12006
  "namzu/project/changes": /* @__PURE__ */ __name(async (params = {}) => {
11968
12007
  if (!params || typeof params !== "object" || Array.isArray(params) || Object.keys(params).length > 0)
11969
12008
  throw new Error("Invalid project changes request.");
@@ -12003,7 +12042,9 @@ function createDesktopHostExtensions(runtime, directory, publishedSessionCwd, re
12003
12042
  }, "namzu/tasks/list"),
12004
12043
  "namzu/providers/status": /* @__PURE__ */ __name(async (params) => {
12005
12044
  const id2 = params.sessionId === void 0 ? void 0 : await ownedReadSession(params);
12006
- const status = await runtime.providerStatus(id2);
12045
+ const raw = await runtime.providerStatus(id2);
12046
+ const { auto: _auto, ...withoutAuto } = raw ?? {};
12047
+ const status = pal() ? withoutAuto : raw;
12007
12048
  const model = id2 ? void 0 : pal()?.model;
12008
12049
  if (!model) return status;
12009
12050
  return {
@@ -12055,6 +12096,12 @@ function createDesktopHostExtensions(runtime, directory, publishedSessionCwd, re
12055
12096
  );
12056
12097
  return { selected: true };
12057
12098
  }, "namzu/providers/select"),
12099
+ "namzu/providers/select_auto": /* @__PURE__ */ __name(async (params) => {
12100
+ if (!isTrusted(cwd)) throw new Error("Trust this folder first.");
12101
+ if (!runtime.selectAuto) throw new Error("Auto is not available here.");
12102
+ await runtime.selectAuto(await ownedSession(params));
12103
+ return { selected: true };
12104
+ }, "namzu/providers/select_auto"),
12058
12105
  "namzu/providers/connections": /* @__PURE__ */ __name(() => runtime.providerConnections(), "namzu/providers/connections"),
12059
12106
  "namzu/providers/save_key": /* @__PURE__ */ __name(async (params) => {
12060
12107
  if (Object.keys(params).some((key) => !["provider", "apiKey"].includes(key)))
@@ -12376,6 +12423,9 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
12376
12423
  const liveInputs = /* @__PURE__ */ new Map();
12377
12424
  const constructing = /* @__PURE__ */ new Map();
12378
12425
  const selections = /* @__PURE__ */ new Map();
12426
+ const autoChoices = /* @__PURE__ */ new Map();
12427
+ const autoAvailable = /* @__PURE__ */ __name((config, pal) => config.routing !== void 0 && !pal, "autoAvailable");
12428
+ const autoIsActive = /* @__PURE__ */ __name((sessionId, config, pal) => autoAvailable(config, pal) && ((sessionId ? autoChoices.get(sessionId) : void 0) ?? config.model === "auto"), "autoIsActive");
12379
12429
  const pluginOverrides = /* @__PURE__ */ new Map();
12380
12430
  const selecting = /* @__PURE__ */ new Set();
12381
12431
  const retriedOn = /* @__PURE__ */ new Map();
@@ -12549,6 +12599,10 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
12549
12599
  ...projectCtx.config.compaction ? { compaction: projectCtx.config.compaction } : {},
12550
12600
  ...projectCtx.config.memory ? { memory: projectCtx.config.memory } : {},
12551
12601
  ...projectCtx.config.sandbox ? { sandbox: projectCtx.config.sandbox } : {},
12602
+ ...projectCtx.config.decision ? { decision: projectCtx.config.decision } : {},
12603
+ // Routed turns only where Auto is what runs: never for a Pal, and not after the
12604
+ // person hand-picked a model for this conversation.
12605
+ ...projectCtx.config.routing && autoIsActive(sessionId, projectCtx.config, palBinding != null) ? { routing: projectCtx.config.routing } : {},
12552
12606
  // `!== undefined`, not truthiness: an empty list is the
12553
12607
  // operator turning the default screen OFF.
12554
12608
  ...projectCtx.config.toolResultScreens !== void 0 ? { toolResultScreens: projectCtx.config.toolResultScreens } : {},
@@ -13219,7 +13273,10 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
13219
13273
  const probe = await sharedProbe();
13220
13274
  const choice = (await preferencesFor(sessionId, probe))?.providers[0];
13221
13275
  const automatic = !probe.preferences && !(sessionId && selections.has(sessionId)) && !choice?.model;
13276
+ const pal = sessionId ? await deps.palBinding?.(records.get(sessionId)?.cwd ?? process.cwd(), sessionId) != null : false;
13277
+ const auto = autoAvailable(bootstrapCtx.config, pal) ? { active: autoIsActive(sessionId, bootstrapCtx.config, pal) } : void 0;
13222
13278
  return {
13279
+ ...auto ? { auto } : {},
13223
13280
  available: probe.detected.map((found) => ({
13224
13281
  id: found.entry.id,
13225
13282
  label: found.entry.label,
@@ -13287,7 +13344,10 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
13287
13344
  const preferences = await preferencesFor(sessionId, probe);
13288
13345
  const live = records.get(sessionId);
13289
13346
  const previous = live ? { id: live.provider, model: live.model } : preferences?.providers[0];
13290
- if (previous?.id === provider && (previous.model ?? detected.entry.defaultModel) === (model ?? detected.entry.defaultModel))
13347
+ const palBinding = await deps.palBinding?.(live?.cwd ?? process.cwd(), sessionId);
13348
+ const palModel = palBinding?.definition.model;
13349
+ const wasAuto = autoIsActive(sessionId, bootstrapCtx.config, palBinding != null);
13350
+ if (!wasAuto && previous?.id === provider && (previous.model ?? detected.entry.defaultModel) === (model ?? detected.entry.defaultModel))
13291
13351
  return;
13292
13352
  const existing = records.get(sessionId);
13293
13353
  if (existing?.route || existing?.session.jobs?.().some((job) => job.status === "running"))
@@ -13302,7 +13362,7 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
13302
13362
  }
13303
13363
  }
13304
13364
  if (closed) throw new Error("The connection is closed.");
13305
- const palModel = (await deps.palBinding?.(live?.cwd ?? process.cwd(), sessionId))?.definition.model;
13365
+ if (wasAuto) autoChoices.set(sessionId, false);
13306
13366
  if (palModel && palModel.provider === provider && palModel.model === selectedModel) {
13307
13367
  selections.delete(sessionId);
13308
13368
  return;
@@ -13318,6 +13378,38 @@ function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
13318
13378
  selecting.delete(sessionId);
13319
13379
  }
13320
13380
  }, "selectProvider"),
13381
+ selectAuto: /* @__PURE__ */ __name(async (sessionId) => {
13382
+ if (!isEntityId(sessionId, "session")) throw new Error("Invalid conversation id.");
13383
+ if (constructing.has(sessionId) || selecting.has(sessionId))
13384
+ throw new Error("Wait for this conversation to finish connecting.");
13385
+ selecting.add(sessionId);
13386
+ try {
13387
+ if (closed) throw new Error("The connection is closed.");
13388
+ const existing = records.get(sessionId);
13389
+ const pal = await deps.palBinding?.(existing?.cwd ?? process.cwd(), sessionId) != null;
13390
+ if (pal)
13391
+ throw new Error("Auto is not available in a Pal conversation. A Pal keeps its own model.");
13392
+ if (!autoAvailable(bootstrapCtx.config, false))
13393
+ throw new Error(
13394
+ "Auto is not set up. It needs a routing block in your user config (~/.namzu/config.yaml) that says which models to pick from. See docs/cli/auto-model-routing.md."
13395
+ );
13396
+ if (autoIsActive(sessionId, bootstrapCtx.config, false)) return;
13397
+ if (existing?.route || existing?.session.jobs?.().some((job) => job.status === "running"))
13398
+ throw new Error("Stop this conversation\u2019s active work before changing its model.");
13399
+ if (existing) {
13400
+ if (existing.retrySettings) retryCarry.set(sessionId, existing.retrySettings);
13401
+ records.delete(sessionId);
13402
+ try {
13403
+ await existing.session.close();
13404
+ } finally {
13405
+ if (existing.conversations) closeSessions(existing.conversations);
13406
+ }
13407
+ }
13408
+ autoChoices.set(sessionId, true);
13409
+ } finally {
13410
+ selecting.delete(sessionId);
13411
+ }
13412
+ }, "selectAuto"),
13321
13413
  jobs: /* @__PURE__ */ __name((sessionId) => records.get(sessionId)?.session.jobs?.() ?? [], "jobs"),
13322
13414
  readJob: /* @__PURE__ */ __name((sessionId, jobId) => {
13323
13415
  const session2 = records.get(sessionId)?.session;
@@ -13448,4 +13540,4 @@ export {
13448
13540
  resolveAcpSession,
13449
13541
  runAcpCommand
13450
13542
  };
13451
- //# sourceMappingURL=acp-QXCMYZW7.js.map
13543
+ //# sourceMappingURL=acp-2DS2IECT.js.map