@namzu/cli 35.0.0 → 36.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1304) hide show
  1. package/CHANGELOG.md +756 -0
  2. package/README.md +160 -394
  3. package/assets/pal-blender-mcp.py +123 -0
  4. package/assets/pal-godot-mcp-pin.json +135 -0
  5. package/assets/pal-godot-mcp.cjs +418 -0
  6. package/dist/bin-main.d.ts +3 -0
  7. package/dist/bin-main.d.ts.map +1 -0
  8. package/dist/bin.d.ts +2 -1
  9. package/dist/bin.d.ts.map +1 -1
  10. package/dist/bin.js +85 -23
  11. package/dist/bin.js.map +6 -1
  12. package/dist/boot-narrative.d.ts +16 -0
  13. package/dist/boot-narrative.d.ts.map +1 -0
  14. package/dist/checkpoints/manifest.d.ts +107 -0
  15. package/dist/checkpoints/manifest.d.ts.map +1 -0
  16. package/dist/checkpoints/store.d.ts +280 -40
  17. package/dist/checkpoints/store.d.ts.map +1 -1
  18. package/dist/checkpoints/undo-plan.d.ts +83 -0
  19. package/dist/checkpoints/undo-plan.d.ts.map +1 -0
  20. package/dist/checkpoints/wrap.d.ts +4 -0
  21. package/dist/checkpoints/wrap.d.ts.map +1 -1
  22. package/dist/chunks/acp-BOSEA4R3.js +13448 -0
  23. package/dist/chunks/acp-BOSEA4R3.js.map +6 -0
  24. package/dist/chunks/activity-command-ACS7KL3C.js +262 -0
  25. package/dist/chunks/activity-command-ACS7KL3C.js.map +6 -0
  26. package/dist/chunks/add-DLS54YKS.js +712 -0
  27. package/dist/chunks/add-DLS54YKS.js.map +6 -0
  28. package/dist/chunks/agent-GV3DWYQC.js +87 -0
  29. package/dist/chunks/agent-GV3DWYQC.js.map +6 -0
  30. package/dist/chunks/agent-session-7VE6GJJH.js +46 -0
  31. package/dist/chunks/agent-session-7VE6GJJH.js.map +6 -0
  32. package/dist/chunks/archive-6ZENIEBP.js +84 -0
  33. package/dist/chunks/archive-6ZENIEBP.js.map +6 -0
  34. package/dist/chunks/bin-main-NFFT5ZIU.js +126 -0
  35. package/dist/chunks/bin-main-NFFT5ZIU.js.map +6 -0
  36. package/dist/chunks/browser-VT2U6NG2.js +31 -0
  37. package/dist/chunks/browser-VT2U6NG2.js.map +6 -0
  38. package/dist/chunks/chat-UNYVLDFL.js +101 -0
  39. package/dist/chunks/chat-UNYVLDFL.js.map +6 -0
  40. package/dist/chunks/chunk-2IL6OG3X.js +311 -0
  41. package/dist/chunks/chunk-2IL6OG3X.js.map +6 -0
  42. package/dist/chunks/chunk-2RBYHHLM.js +319 -0
  43. package/dist/chunks/chunk-2RBYHHLM.js.map +6 -0
  44. package/dist/chunks/chunk-42ZK2AH4.js +71 -0
  45. package/dist/chunks/chunk-42ZK2AH4.js.map +6 -0
  46. package/dist/chunks/chunk-5PQVJBIO.js +168 -0
  47. package/dist/chunks/chunk-5PQVJBIO.js.map +6 -0
  48. package/dist/chunks/chunk-6CPT2ZBS.js +75 -0
  49. package/dist/chunks/chunk-6CPT2ZBS.js.map +6 -0
  50. package/dist/chunks/chunk-6LLJQ3KY.js +225 -0
  51. package/dist/chunks/chunk-6LLJQ3KY.js.map +6 -0
  52. package/dist/chunks/chunk-6YFJDVGA.js +161 -0
  53. package/dist/chunks/chunk-6YFJDVGA.js.map +6 -0
  54. package/dist/chunks/chunk-6YG7D7U4.js +159 -0
  55. package/dist/chunks/chunk-6YG7D7U4.js.map +6 -0
  56. package/dist/chunks/chunk-6ZPODOJN.js +828 -0
  57. package/dist/chunks/chunk-6ZPODOJN.js.map +6 -0
  58. package/dist/chunks/chunk-76FLAFCG.js +51 -0
  59. package/dist/chunks/chunk-76FLAFCG.js.map +6 -0
  60. package/dist/chunks/chunk-7HCPD673.js +25326 -0
  61. package/dist/chunks/chunk-7HCPD673.js.map +6 -0
  62. package/dist/chunks/chunk-7KWGR2YA.js +257 -0
  63. package/dist/chunks/chunk-7KWGR2YA.js.map +6 -0
  64. package/dist/chunks/chunk-A22MBIYU.js +42 -0
  65. package/dist/chunks/chunk-A22MBIYU.js.map +6 -0
  66. package/dist/chunks/chunk-AHIDYIRB.js +329 -0
  67. package/dist/chunks/chunk-AHIDYIRB.js.map +6 -0
  68. package/dist/chunks/chunk-AK2U3N2A.js +31 -0
  69. package/dist/chunks/chunk-AK2U3N2A.js.map +6 -0
  70. package/dist/chunks/chunk-AKKRZTPB.js +283 -0
  71. package/dist/chunks/chunk-AKKRZTPB.js.map +6 -0
  72. package/dist/chunks/chunk-BCZR2B3Y.js +97 -0
  73. package/dist/chunks/chunk-BCZR2B3Y.js.map +6 -0
  74. package/dist/chunks/chunk-CHIEVVQ2.js +32 -0
  75. package/dist/chunks/chunk-CHIEVVQ2.js.map +6 -0
  76. package/dist/chunks/chunk-D67YBUO3.js +110 -0
  77. package/dist/chunks/chunk-D67YBUO3.js.map +6 -0
  78. package/dist/chunks/chunk-DIHEHK7K.js +765 -0
  79. package/dist/chunks/chunk-DIHEHK7K.js.map +6 -0
  80. package/dist/chunks/chunk-E5VLANCO.js +101 -0
  81. package/dist/chunks/chunk-E5VLANCO.js.map +6 -0
  82. package/dist/chunks/chunk-EEDZOGV4.js +47 -0
  83. package/dist/chunks/chunk-EEDZOGV4.js.map +6 -0
  84. package/dist/chunks/chunk-ENGNEELC.js +271 -0
  85. package/dist/chunks/chunk-ENGNEELC.js.map +6 -0
  86. package/dist/chunks/chunk-EVY4MVRE.js +74 -0
  87. package/dist/chunks/chunk-EVY4MVRE.js.map +6 -0
  88. package/dist/chunks/chunk-FJNDNNNQ.js +115 -0
  89. package/dist/chunks/chunk-FJNDNNNQ.js.map +6 -0
  90. package/dist/chunks/chunk-FOFGMP7O.js +20 -0
  91. package/dist/chunks/chunk-FOFGMP7O.js.map +6 -0
  92. package/dist/chunks/chunk-FTMTO72X.js +95 -0
  93. package/dist/chunks/chunk-FTMTO72X.js.map +6 -0
  94. package/dist/chunks/chunk-GIXSS6KW.js +2228 -0
  95. package/dist/chunks/chunk-GIXSS6KW.js.map +6 -0
  96. package/dist/chunks/chunk-GNBMKISG.js +19 -0
  97. package/dist/chunks/chunk-GNBMKISG.js.map +6 -0
  98. package/dist/chunks/chunk-GWQEMJFS.js +28 -0
  99. package/dist/chunks/chunk-GWQEMJFS.js.map +6 -0
  100. package/dist/chunks/chunk-H6B6AROX.js +151 -0
  101. package/dist/chunks/chunk-H6B6AROX.js.map +6 -0
  102. package/dist/chunks/chunk-HE7WUOX2.js +26 -0
  103. package/dist/chunks/chunk-HE7WUOX2.js.map +6 -0
  104. package/dist/chunks/chunk-HZBKWL42.js +303 -0
  105. package/dist/chunks/chunk-HZBKWL42.js.map +6 -0
  106. package/dist/chunks/chunk-I7HQR6ET.js +75 -0
  107. package/dist/chunks/chunk-I7HQR6ET.js.map +6 -0
  108. package/dist/chunks/chunk-IJEB77SH.js +648 -0
  109. package/dist/chunks/chunk-IJEB77SH.js.map +6 -0
  110. package/dist/chunks/chunk-JNPDWME5.js +675 -0
  111. package/dist/chunks/chunk-JNPDWME5.js.map +6 -0
  112. package/dist/chunks/chunk-JORONMD3.js +18 -0
  113. package/dist/chunks/chunk-JORONMD3.js.map +6 -0
  114. package/dist/chunks/chunk-JV3LONAU.js +76 -0
  115. package/dist/chunks/chunk-JV3LONAU.js.map +6 -0
  116. package/dist/chunks/chunk-K5HARZ7G.js +82516 -0
  117. package/dist/chunks/chunk-K5HARZ7G.js.map +6 -0
  118. package/dist/chunks/chunk-KONYGNG6.js +7661 -0
  119. package/dist/chunks/chunk-KONYGNG6.js.map +6 -0
  120. package/dist/chunks/chunk-LXB3S4IC.js +19 -0
  121. package/dist/chunks/chunk-LXB3S4IC.js.map +6 -0
  122. package/dist/chunks/chunk-M3IAMIBJ.js +661 -0
  123. package/dist/chunks/chunk-M3IAMIBJ.js.map +6 -0
  124. package/dist/chunks/chunk-MH6KUKVV.js +1142 -0
  125. package/dist/chunks/chunk-MH6KUKVV.js.map +6 -0
  126. package/dist/chunks/chunk-MS3IYQ72.js +1479 -0
  127. package/dist/chunks/chunk-MS3IYQ72.js.map +6 -0
  128. package/dist/chunks/chunk-MZP6SH3M.js +3497 -0
  129. package/dist/chunks/chunk-MZP6SH3M.js.map +6 -0
  130. package/dist/chunks/chunk-N3ZEXVSS.js +76 -0
  131. package/dist/chunks/chunk-N3ZEXVSS.js.map +6 -0
  132. package/dist/chunks/chunk-N6SR54VC.js +207 -0
  133. package/dist/chunks/chunk-N6SR54VC.js.map +6 -0
  134. package/dist/chunks/chunk-NADQQMMG.js +46 -0
  135. package/dist/chunks/chunk-NADQQMMG.js.map +6 -0
  136. package/dist/chunks/chunk-NBH52WHS.js +247 -0
  137. package/dist/chunks/chunk-NBH52WHS.js.map +6 -0
  138. package/dist/chunks/chunk-NICLKFBG.js +109 -0
  139. package/dist/chunks/chunk-NICLKFBG.js.map +6 -0
  140. package/dist/chunks/chunk-NIPHHZ5G.js +283 -0
  141. package/dist/chunks/chunk-NIPHHZ5G.js.map +6 -0
  142. package/dist/chunks/chunk-NQT244I2.js +517 -0
  143. package/dist/chunks/chunk-NQT244I2.js.map +6 -0
  144. package/dist/chunks/chunk-NUGPLXVK.js +228 -0
  145. package/dist/chunks/chunk-NUGPLXVK.js.map +6 -0
  146. package/dist/chunks/chunk-OEW7CJKK.js +140 -0
  147. package/dist/chunks/chunk-OEW7CJKK.js.map +6 -0
  148. package/dist/chunks/chunk-OH6TB27S.js +111 -0
  149. package/dist/chunks/chunk-OH6TB27S.js.map +6 -0
  150. package/dist/chunks/chunk-OWH6QQY2.js +1858 -0
  151. package/dist/chunks/chunk-OWH6QQY2.js.map +6 -0
  152. package/dist/chunks/chunk-OWXJOD4H.js +773 -0
  153. package/dist/chunks/chunk-OWXJOD4H.js.map +6 -0
  154. package/dist/chunks/chunk-PT537V7B.js +787 -0
  155. package/dist/chunks/chunk-PT537V7B.js.map +6 -0
  156. package/dist/chunks/chunk-QEQZFG2X.js +106 -0
  157. package/dist/chunks/chunk-QEQZFG2X.js.map +6 -0
  158. package/dist/chunks/chunk-QL4O4UGZ.js +245 -0
  159. package/dist/chunks/chunk-QL4O4UGZ.js.map +6 -0
  160. package/dist/chunks/chunk-QL54XCF4.js +73 -0
  161. package/dist/chunks/chunk-QL54XCF4.js.map +6 -0
  162. package/dist/chunks/chunk-SB6UD3ED.js +1355 -0
  163. package/dist/chunks/chunk-SB6UD3ED.js.map +6 -0
  164. package/dist/chunks/chunk-SGGRGKGV.js +34 -0
  165. package/dist/chunks/chunk-SGGRGKGV.js.map +6 -0
  166. package/dist/chunks/chunk-SKKWMMFP.js +474 -0
  167. package/dist/chunks/chunk-SKKWMMFP.js.map +6 -0
  168. package/dist/chunks/chunk-SMIDV4KH.js +171 -0
  169. package/dist/chunks/chunk-SMIDV4KH.js.map +6 -0
  170. package/dist/chunks/chunk-T2VUTAHB.js +46 -0
  171. package/dist/chunks/chunk-T2VUTAHB.js.map +6 -0
  172. package/dist/chunks/chunk-T4SB6AAF.js +134 -0
  173. package/dist/chunks/chunk-T4SB6AAF.js.map +6 -0
  174. package/dist/chunks/chunk-TBIX6JRE.js +24 -0
  175. package/dist/chunks/chunk-TBIX6JRE.js.map +6 -0
  176. package/dist/chunks/chunk-THNCQJ33.js +11265 -0
  177. package/dist/chunks/chunk-THNCQJ33.js.map +6 -0
  178. package/dist/chunks/chunk-U56QFYGA.js +818 -0
  179. package/dist/chunks/chunk-U56QFYGA.js.map +6 -0
  180. package/dist/chunks/chunk-U6GZ7EW4.js +106 -0
  181. package/dist/chunks/chunk-U6GZ7EW4.js.map +6 -0
  182. package/dist/chunks/chunk-UDDSFIMB.js +1373 -0
  183. package/dist/chunks/chunk-UDDSFIMB.js.map +6 -0
  184. package/dist/chunks/chunk-UFHNXZL2.js +399 -0
  185. package/dist/chunks/chunk-UFHNXZL2.js.map +6 -0
  186. package/dist/chunks/chunk-US5ZFPAU.js +400 -0
  187. package/dist/chunks/chunk-US5ZFPAU.js.map +6 -0
  188. package/dist/chunks/chunk-VRL2WNQN.js +7534 -0
  189. package/dist/chunks/chunk-VRL2WNQN.js.map +6 -0
  190. package/dist/chunks/chunk-W3UQMRYA.js +380 -0
  191. package/dist/chunks/chunk-W3UQMRYA.js.map +6 -0
  192. package/dist/chunks/chunk-W5KGCUP3.js +11111 -0
  193. package/dist/chunks/chunk-W5KGCUP3.js.map +6 -0
  194. package/dist/chunks/chunk-WHODOMXA.js +132 -0
  195. package/dist/chunks/chunk-WHODOMXA.js.map +6 -0
  196. package/dist/chunks/chunk-WT6TFCPV.js +154 -0
  197. package/dist/chunks/chunk-WT6TFCPV.js.map +6 -0
  198. package/dist/chunks/chunk-WY2WUTFR.js +164 -0
  199. package/dist/chunks/chunk-WY2WUTFR.js.map +6 -0
  200. package/dist/chunks/chunk-XEUQN4JC.js +54 -0
  201. package/dist/chunks/chunk-XEUQN4JC.js.map +6 -0
  202. package/dist/chunks/chunk-Y7B67G22.js +26 -0
  203. package/dist/chunks/chunk-Y7B67G22.js.map +6 -0
  204. package/dist/chunks/chunk-YEMJX2DS.js +69 -0
  205. package/dist/chunks/chunk-YEMJX2DS.js.map +6 -0
  206. package/dist/chunks/chunk-YKLKHDZU.js +2953 -0
  207. package/dist/chunks/chunk-YKLKHDZU.js.map +6 -0
  208. package/dist/chunks/chunk-YQEWD2EN.js +127 -0
  209. package/dist/chunks/chunk-YQEWD2EN.js.map +6 -0
  210. package/dist/chunks/chunk-YYQJIECC.js +1439 -0
  211. package/dist/chunks/chunk-YYQJIECC.js.map +6 -0
  212. package/dist/chunks/chunk-ZKVZNOUS.js +106 -0
  213. package/dist/chunks/chunk-ZKVZNOUS.js.map +6 -0
  214. package/dist/chunks/chunk-ZPR4IMRT.js +36 -0
  215. package/dist/chunks/chunk-ZPR4IMRT.js.map +6 -0
  216. package/dist/chunks/chunk-ZWA2JRJV.js +45 -0
  217. package/dist/chunks/chunk-ZWA2JRJV.js.map +6 -0
  218. package/dist/chunks/cli-runtime-F4MBZ2UQ.js +129 -0
  219. package/dist/chunks/cli-runtime-F4MBZ2UQ.js.map +6 -0
  220. package/dist/chunks/commands-GMQGFTIY.js +21 -0
  221. package/dist/chunks/commands-GMQGFTIY.js.map +6 -0
  222. package/dist/chunks/computer-GXDY4H35.js +493 -0
  223. package/dist/chunks/computer-GXDY4H35.js.map +6 -0
  224. package/dist/chunks/crash-report-STOHSORG.js +21 -0
  225. package/dist/chunks/crash-report-STOHSORG.js.map +6 -0
  226. package/dist/chunks/devtools-LBE4PAQN.js +3851 -0
  227. package/dist/chunks/devtools-LBE4PAQN.js.map +6 -0
  228. package/dist/chunks/dist-3AF2X4S5.js +1339 -0
  229. package/dist/chunks/dist-3AF2X4S5.js.map +6 -0
  230. package/dist/chunks/dist-AZIMHV2B.js +514 -0
  231. package/dist/chunks/dist-AZIMHV2B.js.map +6 -0
  232. package/dist/chunks/dist-BGYRQ5BC.js +555 -0
  233. package/dist/chunks/dist-BGYRQ5BC.js.map +6 -0
  234. package/dist/chunks/dist-OTTZ7WVD.js +1415 -0
  235. package/dist/chunks/dist-OTTZ7WVD.js.map +6 -0
  236. package/dist/chunks/dist-R3I3ATSG.js +1018 -0
  237. package/dist/chunks/dist-R3I3ATSG.js.map +6 -0
  238. package/dist/chunks/dist-TXEKDBQO.js +40642 -0
  239. package/dist/chunks/dist-TXEKDBQO.js.map +6 -0
  240. package/dist/chunks/dist-XTWYQHHN.js +520 -0
  241. package/dist/chunks/dist-XTWYQHHN.js.map +6 -0
  242. package/dist/chunks/doctor-VXSB4Y4P.js +28 -0
  243. package/dist/chunks/doctor-VXSB4Y4P.js.map +6 -0
  244. package/dist/chunks/drain-DXVICQBR.js +471 -0
  245. package/dist/chunks/drain-DXVICQBR.js.map +6 -0
  246. package/dist/chunks/endpoint-M2DDENPP.js +15 -0
  247. package/dist/chunks/endpoint-M2DDENPP.js.map +6 -0
  248. package/dist/chunks/eval-BMJQXDKA.js +187 -0
  249. package/dist/chunks/eval-BMJQXDKA.js.map +6 -0
  250. package/dist/chunks/exec-3T5ESZPH.js +1284 -0
  251. package/dist/chunks/exec-3T5ESZPH.js.map +6 -0
  252. package/dist/chunks/home-ILHA7B6Z.js +16 -0
  253. package/dist/chunks/home-ILHA7B6Z.js.map +6 -0
  254. package/dist/chunks/host-queries-QCMWDZGS.js +152 -0
  255. package/dist/chunks/host-queries-QCMWDZGS.js.map +6 -0
  256. package/dist/chunks/lib-KXZZJJG2.js +2657 -0
  257. package/dist/chunks/lib-KXZZJJG2.js.map +6 -0
  258. package/dist/chunks/lifecycle-CB23VJI7.js +63 -0
  259. package/dist/chunks/lifecycle-CB23VJI7.js.map +6 -0
  260. package/dist/chunks/list-N6WXZBMD.js +293 -0
  261. package/dist/chunks/list-N6WXZBMD.js.map +6 -0
  262. package/dist/chunks/login-26NCG6EQ.js +29 -0
  263. package/dist/chunks/login-26NCG6EQ.js.map +6 -0
  264. package/dist/chunks/logs-V7SNM7LA.js +116 -0
  265. package/dist/chunks/logs-V7SNM7LA.js.map +6 -0
  266. package/dist/chunks/mcp-BTHCU5ZC.js +763 -0
  267. package/dist/chunks/mcp-BTHCU5ZC.js.map +6 -0
  268. package/dist/chunks/message-command-HMIOR52C.js +170 -0
  269. package/dist/chunks/message-command-HMIOR52C.js.map +6 -0
  270. package/dist/chunks/node-QB2FA2ZB.js +916 -0
  271. package/dist/chunks/node-QB2FA2ZB.js.map +6 -0
  272. package/dist/chunks/operator-tools-7LMWOHSN.js +115 -0
  273. package/dist/chunks/operator-tools-7LMWOHSN.js.map +6 -0
  274. package/dist/chunks/output-schema-XCONYVZ7.js +11 -0
  275. package/dist/chunks/output-schema-XCONYVZ7.js.map +6 -0
  276. package/dist/chunks/pal-YEUKHA6F.js +200 -0
  277. package/dist/chunks/pal-YEUKHA6F.js.map +6 -0
  278. package/dist/chunks/paths-DXYFKIJU.js +10 -0
  279. package/dist/chunks/paths-DXYFKIJU.js.map +6 -0
  280. package/dist/chunks/pica-WNHDDIFX.js +1736 -0
  281. package/dist/chunks/pica-WNHDDIFX.js.map +6 -0
  282. package/dist/chunks/providers-EI3FAKYB.js +160 -0
  283. package/dist/chunks/providers-EI3FAKYB.js.map +6 -0
  284. package/dist/chunks/resident-5ZY6OG6B.js +1314 -0
  285. package/dist/chunks/resident-5ZY6OG6B.js.map +6 -0
  286. package/dist/chunks/resume-command-ONYRZIIA.js +22 -0
  287. package/dist/chunks/resume-command-ONYRZIIA.js.map +6 -0
  288. package/dist/chunks/schedule-6JPEO4NR.js +143 -0
  289. package/dist/chunks/schedule-6JPEO4NR.js.map +6 -0
  290. package/dist/chunks/serve-S7UWNIR3.js +21 -0
  291. package/dist/chunks/serve-S7UWNIR3.js.map +6 -0
  292. package/dist/chunks/service-WSW3M6K5.js +1633 -0
  293. package/dist/chunks/service-WSW3M6K5.js.map +6 -0
  294. package/dist/chunks/session-step-2VZM3CCA.js +26 -0
  295. package/dist/chunks/session-step-2VZM3CCA.js.map +6 -0
  296. package/dist/chunks/skills-KAZJYGX5.js +282 -0
  297. package/dist/chunks/skills-KAZJYGX5.js.map +6 -0
  298. package/dist/chunks/state-263OUKQA.js +717 -0
  299. package/dist/chunks/state-263OUKQA.js.map +6 -0
  300. package/dist/chunks/store-3XLCJ7EL.js +42 -0
  301. package/dist/chunks/store-3XLCJ7EL.js.map +6 -0
  302. package/dist/chunks/store-KN65QI2M.js +82 -0
  303. package/dist/chunks/store-KN65QI2M.js.map +6 -0
  304. package/dist/chunks/store-X3TESBIN.js +34 -0
  305. package/dist/chunks/store-X3TESBIN.js.map +6 -0
  306. package/dist/chunks/tui-5MU7JBXX.js +56703 -0
  307. package/dist/chunks/tui-5MU7JBXX.js.map +6 -0
  308. package/dist/chunks/upgrade-BYM4MWBC.js +315 -0
  309. package/dist/chunks/upgrade-BYM4MWBC.js.map +6 -0
  310. package/dist/chunks/webapi-6HUHZUAH.js +2715 -0
  311. package/dist/chunks/webapi-6HUHZUAH.js.map +6 -0
  312. package/dist/chunks/worktree-K3ZIPXRM.js +116 -0
  313. package/dist/chunks/worktree-K3ZIPXRM.js.map +6 -0
  314. package/dist/cli-runtime.d.ts +19 -0
  315. package/dist/cli-runtime.d.ts.map +1 -0
  316. package/dist/cli.d.ts +0 -15
  317. package/dist/cli.d.ts.map +1 -1
  318. package/dist/commands/acp-harness.d.ts +64 -0
  319. package/dist/commands/acp-harness.d.ts.map +1 -0
  320. package/dist/commands/acp-provider-retry.d.ts +27 -0
  321. package/dist/commands/acp-provider-retry.d.ts.map +1 -0
  322. package/dist/commands/acp.d.ts +134 -3
  323. package/dist/commands/acp.d.ts.map +1 -1
  324. package/dist/commands/computer.d.ts +3 -0
  325. package/dist/commands/computer.d.ts.map +1 -0
  326. package/dist/commands/desktop-host-changes.d.ts +65 -0
  327. package/dist/commands/desktop-host-changes.d.ts.map +1 -0
  328. package/dist/commands/desktop-host-header.d.ts +30 -0
  329. package/dist/commands/desktop-host-header.d.ts.map +1 -0
  330. package/dist/commands/desktop-host.d.ts +354 -0
  331. package/dist/commands/desktop-host.d.ts.map +1 -0
  332. package/dist/commands/desktop-model-catalogue.d.ts +25 -0
  333. package/dist/commands/desktop-model-catalogue.d.ts.map +1 -0
  334. package/dist/commands/effort-levels.d.ts +3 -0
  335. package/dist/commands/effort-levels.d.ts.map +1 -0
  336. package/dist/commands/exec-flags.d.ts +4 -0
  337. package/dist/commands/exec-flags.d.ts.map +1 -1
  338. package/dist/commands/exec.d.ts.map +1 -1
  339. package/dist/commands/lazy.d.ts +20 -0
  340. package/dist/commands/lazy.d.ts.map +1 -0
  341. package/dist/commands/manifest.d.ts +33 -0
  342. package/dist/commands/manifest.d.ts.map +1 -0
  343. package/dist/commands/pal.d.ts +5 -0
  344. package/dist/commands/pal.d.ts.map +1 -0
  345. package/dist/commands/permission-preview.d.ts +38 -0
  346. package/dist/commands/permission-preview.d.ts.map +1 -0
  347. package/dist/commands/registry.d.ts +10 -0
  348. package/dist/commands/registry.d.ts.map +1 -1
  349. package/dist/commands/serve.d.ts +1 -12
  350. package/dist/commands/serve.d.ts.map +1 -1
  351. package/dist/commands/stdin.d.ts.map +1 -1
  352. package/dist/commands/upgrade.d.ts +14 -0
  353. package/dist/commands/upgrade.d.ts.map +1 -1
  354. package/dist/compile-cache-enable.d.ts +2 -0
  355. package/dist/compile-cache-enable.d.ts.map +1 -0
  356. package/dist/compile-cache.d.ts +53 -0
  357. package/dist/compile-cache.d.ts.map +1 -0
  358. package/dist/computer/bundle.d.ts +18 -0
  359. package/dist/computer/bundle.d.ts.map +1 -0
  360. package/dist/computer/run.d.ts +26 -0
  361. package/dist/computer/run.d.ts.map +1 -0
  362. package/dist/computer/sentences.d.ts +30 -0
  363. package/dist/computer/sentences.d.ts.map +1 -0
  364. package/dist/config/load.d.ts +10 -1
  365. package/dist/config/load.d.ts.map +1 -1
  366. package/dist/context/capabilities.d.ts +25 -2
  367. package/dist/context/capabilities.d.ts.map +1 -1
  368. package/dist/context/runtime-message.d.ts.map +1 -1
  369. package/dist/crash-report.d.ts +22 -0
  370. package/dist/crash-report.d.ts.map +1 -0
  371. package/dist/debug-requested.d.ts +7 -0
  372. package/dist/debug-requested.d.ts.map +1 -0
  373. package/dist/doctor/checks/credentials.d.ts.map +1 -1
  374. package/dist/exit-codes.d.ts +9 -1
  375. package/dist/exit-codes.d.ts.map +1 -1
  376. package/dist/index.js +105 -17
  377. package/dist/index.js.map +6 -1
  378. package/dist/integrations/harness/claude-adapter.d.ts +20 -0
  379. package/dist/integrations/harness/claude-adapter.d.ts.map +1 -0
  380. package/dist/integrations/harness/claude-protocol.d.ts +67 -0
  381. package/dist/integrations/harness/claude-protocol.d.ts.map +1 -0
  382. package/dist/integrations/harness/codex-adapter.d.ts +80 -0
  383. package/dist/integrations/harness/codex-adapter.d.ts.map +1 -0
  384. package/dist/integrations/harness/codex-protocol.d.ts +22 -0
  385. package/dist/integrations/harness/codex-protocol.d.ts.map +1 -0
  386. package/dist/integrations/harness/model-cache.d.ts +16 -0
  387. package/dist/integrations/harness/model-cache.d.ts.map +1 -0
  388. package/dist/integrations/harness/native-executable.d.ts +8 -0
  389. package/dist/integrations/harness/native-executable.d.ts.map +1 -0
  390. package/dist/integrations/harness/process.d.ts +25 -0
  391. package/dist/integrations/harness/process.d.ts.map +1 -0
  392. package/dist/integrations/peers/runtime.d.ts +64 -0
  393. package/dist/integrations/peers/runtime.d.ts.map +1 -0
  394. package/dist/integrations/plugins/inventory.d.ts +27 -0
  395. package/dist/integrations/plugins/inventory.d.ts.map +1 -0
  396. package/dist/integrations/providers/composer-settings.d.ts +33 -0
  397. package/dist/integrations/providers/composer-settings.d.ts.map +1 -0
  398. package/dist/integrations/providers/connections.d.ts +37 -0
  399. package/dist/integrations/providers/connections.d.ts.map +1 -0
  400. package/dist/integrations/providers/credential-store.d.ts +35 -0
  401. package/dist/integrations/providers/credential-store.d.ts.map +1 -1
  402. package/dist/integrations/providers/discover.d.ts +27 -1
  403. package/dist/integrations/providers/discover.d.ts.map +1 -1
  404. package/dist/integrations/providers/index.d.ts +2 -2
  405. package/dist/integrations/providers/index.d.ts.map +1 -1
  406. package/dist/integrations/providers/picker-operation.d.ts +6 -0
  407. package/dist/integrations/providers/picker-operation.d.ts.map +1 -0
  408. package/dist/integrations/providers/setup.d.ts +16 -1
  409. package/dist/integrations/providers/setup.d.ts.map +1 -1
  410. package/dist/integrations/resident/runner-worker.js +190 -161
  411. package/dist/integrations/resident/runner-worker.js.map +6 -1
  412. package/dist/integrations/sessions/display-title.d.ts +8 -0
  413. package/dist/integrations/sessions/display-title.d.ts.map +1 -1
  414. package/dist/integrations/sessions/store.d.ts +23 -9
  415. package/dist/integrations/sessions/store.d.ts.map +1 -1
  416. package/dist/integrations/sessions/task-context.d.ts +1 -1
  417. package/dist/integrations/sessions/task-context.d.ts.map +1 -1
  418. package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
  419. package/dist/integrations/subagents/activity.d.ts +9 -6
  420. package/dist/integrations/subagents/activity.d.ts.map +1 -1
  421. package/dist/integrations/subagents/operator-journal.d.ts +20 -0
  422. package/dist/integrations/subagents/operator-journal.d.ts.map +1 -0
  423. package/dist/integrations/subagents/runtime.d.ts +11 -0
  424. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  425. package/dist/integrations/trust/store.d.ts +14 -0
  426. package/dist/integrations/trust/store.d.ts.map +1 -1
  427. package/dist/integrations/web/search.d.ts +1 -1
  428. package/dist/pals/actions.d.ts +57 -0
  429. package/dist/pals/actions.d.ts.map +1 -0
  430. package/dist/pals/activity-command.d.ts +3 -0
  431. package/dist/pals/activity-command.d.ts.map +1 -0
  432. package/dist/pals/activity.d.ts +18 -0
  433. package/dist/pals/activity.d.ts.map +1 -0
  434. package/dist/pals/agent-session.d.ts +19 -0
  435. package/dist/pals/agent-session.d.ts.map +1 -0
  436. package/dist/pals/channel-actions.d.ts +5 -0
  437. package/dist/pals/channel-actions.d.ts.map +1 -0
  438. package/dist/pals/channel-local.d.ts +7 -0
  439. package/dist/pals/channel-local.d.ts.map +1 -0
  440. package/dist/pals/channel.d.ts +20 -0
  441. package/dist/pals/channel.d.ts.map +1 -0
  442. package/dist/pals/chat.d.ts +6 -0
  443. package/dist/pals/chat.d.ts.map +1 -0
  444. package/dist/pals/communication.d.ts +47 -0
  445. package/dist/pals/communication.d.ts.map +1 -0
  446. package/dist/pals/conversations.d.ts +26 -0
  447. package/dist/pals/conversations.d.ts.map +1 -0
  448. package/dist/pals/desktop-communication.d.ts +111 -0
  449. package/dist/pals/desktop-communication.d.ts.map +1 -0
  450. package/dist/pals/dispatch.d.ts +13 -0
  451. package/dist/pals/dispatch.d.ts.map +1 -0
  452. package/dist/pals/environment.d.ts +103 -0
  453. package/dist/pals/environment.d.ts.map +1 -0
  454. package/dist/pals/guest-mcp-transport.d.ts +28 -0
  455. package/dist/pals/guest-mcp-transport.d.ts.map +1 -0
  456. package/dist/pals/guest-mcp.d.ts +22 -0
  457. package/dist/pals/guest-mcp.d.ts.map +1 -0
  458. package/dist/pals/inbox-start.d.ts +35 -0
  459. package/dist/pals/inbox-start.d.ts.map +1 -0
  460. package/dist/pals/message-command.d.ts +3 -0
  461. package/dist/pals/message-command.d.ts.map +1 -0
  462. package/dist/pals/operator-tools.d.ts +23 -0
  463. package/dist/pals/operator-tools.d.ts.map +1 -0
  464. package/dist/pals/public-transcript.d.ts +4 -0
  465. package/dist/pals/public-transcript.d.ts.map +1 -0
  466. package/dist/pals/review.d.ts +16 -0
  467. package/dist/pals/review.d.ts.map +1 -0
  468. package/dist/pals/store.d.ts +16 -0
  469. package/dist/pals/store.d.ts.map +1 -0
  470. package/dist/pals/tui-session.d.ts +11 -0
  471. package/dist/pals/tui-session.d.ts.map +1 -0
  472. package/dist/permissions/mode-names.d.ts +2 -0
  473. package/dist/permissions/mode-names.d.ts.map +1 -0
  474. package/dist/resume-invocation.d.ts +1 -1
  475. package/dist/resume-invocation.d.ts.map +1 -1
  476. package/dist/resume-shell.d.ts +8 -0
  477. package/dist/resume-shell.d.ts.map +1 -0
  478. package/dist/schedule/build.d.ts +12 -3
  479. package/dist/schedule/build.d.ts.map +1 -1
  480. package/dist/schedule/commands/add.d.ts +1 -1
  481. package/dist/schedule/commands/add.d.ts.map +1 -1
  482. package/dist/schedule/commands/lifecycle.d.ts.map +1 -1
  483. package/dist/schedule/commands/list.d.ts +3 -1
  484. package/dist/schedule/commands/list.d.ts.map +1 -1
  485. package/dist/schedule/daemon/daemon.d.ts +2 -0
  486. package/dist/schedule/daemon/daemon.d.ts.map +1 -1
  487. package/dist/schedule/delivery.d.ts +66 -0
  488. package/dist/schedule/delivery.d.ts.map +1 -0
  489. package/dist/schedule/fire/fire.d.ts +1 -1
  490. package/dist/schedule/fire/fire.d.ts.map +1 -1
  491. package/dist/schedule/fire/run-script.d.ts +2 -2
  492. package/dist/schedule/fire/run-script.d.ts.map +1 -1
  493. package/dist/schedule/fire/script-report.d.ts +31 -0
  494. package/dist/schedule/fire/script-report.d.ts.map +1 -0
  495. package/dist/schedule/floor.d.ts +1 -1
  496. package/dist/schedule/floor.d.ts.map +1 -1
  497. package/dist/schedule/folder.d.ts +6 -0
  498. package/dist/schedule/folder.d.ts.map +1 -1
  499. package/dist/schedule/resume-command.d.ts +3 -3
  500. package/dist/schedule/resume-command.d.ts.map +1 -1
  501. package/dist/schedule/store/history.d.ts.map +1 -1
  502. package/dist/schedule/store/jobs.d.ts +6 -6
  503. package/dist/schedule/store/jobs.d.ts.map +1 -1
  504. package/dist/schedule/store/script-state.d.ts +31 -0
  505. package/dist/schedule/store/script-state.d.ts.map +1 -0
  506. package/dist/schedule/store/state.d.ts +4 -2
  507. package/dist/schedule/store/state.d.ts.map +1 -1
  508. package/dist/schedule/types.d.ts +61 -16
  509. package/dist/schedule/types.d.ts.map +1 -1
  510. package/dist/skills/store.d.ts.map +1 -1
  511. package/dist/terminal/host.d.ts +22 -0
  512. package/dist/terminal/host.d.ts.map +1 -0
  513. package/dist/terminal/manager.d.ts +124 -0
  514. package/dist/terminal/manager.d.ts.map +1 -0
  515. package/dist/terminal/protocol.d.ts +162 -0
  516. package/dist/terminal/protocol.d.ts.map +1 -0
  517. package/dist/terminal/pty.d.ts +85 -0
  518. package/dist/terminal/pty.d.ts.map +1 -0
  519. package/dist/terminal/ring.d.ts +23 -0
  520. package/dist/terminal/ring.d.ts.map +1 -0
  521. package/dist/terminal/screen.d.ts +31 -0
  522. package/dist/terminal/screen.d.ts.map +1 -0
  523. package/dist/termination-state.d.ts +19 -0
  524. package/dist/termination-state.d.ts.map +1 -0
  525. package/dist/termination.d.ts +2 -9
  526. package/dist/termination.d.ts.map +1 -1
  527. package/dist/tui/AgentExplorer.d.ts +4 -1
  528. package/dist/tui/AgentExplorer.d.ts.map +1 -1
  529. package/dist/tui/App.d.ts.map +1 -1
  530. package/dist/tui/BackgroundJobsPanel.d.ts.map +1 -1
  531. package/dist/tui/BrandHeader.d.ts.map +1 -1
  532. package/dist/tui/ChildComposer.d.ts +22 -0
  533. package/dist/tui/ChildComposer.d.ts.map +1 -0
  534. package/dist/tui/ChoicePicker.d.ts.map +1 -1
  535. package/dist/tui/Composer.d.ts +19 -3
  536. package/dist/tui/Composer.d.ts.map +1 -1
  537. package/dist/tui/ComposerFrame.d.ts.map +1 -1
  538. package/dist/tui/CopyPicker.d.ts.map +1 -1
  539. package/dist/tui/EditPromptPicker.d.ts.map +1 -1
  540. package/dist/tui/EffortSlider.d.ts.map +1 -1
  541. package/dist/tui/LiveActivity.d.ts +7 -1
  542. package/dist/tui/LiveActivity.d.ts.map +1 -1
  543. package/dist/tui/Markdown.d.ts.map +1 -1
  544. package/dist/tui/PendingInputPanel.d.ts.map +1 -1
  545. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  546. package/dist/tui/Picker.d.ts.map +1 -1
  547. package/dist/tui/ProviderSetup.d.ts.map +1 -1
  548. package/dist/tui/ResumePicker.d.ts.map +1 -1
  549. package/dist/tui/SaveSkillOverlay.d.ts.map +1 -1
  550. package/dist/tui/ScheduleReviewOverlay.d.ts +1 -1
  551. package/dist/tui/ScheduleReviewOverlay.d.ts.map +1 -1
  552. package/dist/tui/StatusBar.d.ts +7 -1
  553. package/dist/tui/StatusBar.d.ts.map +1 -1
  554. package/dist/tui/StatusPanel.d.ts.map +1 -1
  555. package/dist/tui/TextPrompt.d.ts.map +1 -1
  556. package/dist/tui/ToolOutputViewer.d.ts.map +1 -1
  557. package/dist/tui/Transcript.d.ts.map +1 -1
  558. package/dist/tui/TrustPrompt.d.ts +8 -0
  559. package/dist/tui/TrustPrompt.d.ts.map +1 -1
  560. package/dist/tui/agent.d.ts +125 -3
  561. package/dist/tui/agent.d.ts.map +1 -1
  562. package/dist/tui/browser-notices.d.ts.map +1 -1
  563. package/dist/tui/capability-notice.d.ts +38 -0
  564. package/dist/tui/capability-notice.d.ts.map +1 -0
  565. package/dist/tui/console-input.d.ts +31 -0
  566. package/dist/tui/console-input.d.ts.map +1 -0
  567. package/dist/tui/conversation-evidence-view.d.ts.map +1 -1
  568. package/dist/tui/credential-entry.d.ts.map +1 -1
  569. package/dist/tui/exit-summary.d.ts +9 -1
  570. package/dist/tui/exit-summary.d.ts.map +1 -1
  571. package/dist/tui/external-editor.d.ts.map +1 -1
  572. package/dist/tui/index.d.ts.map +1 -1
  573. package/dist/tui/key-hints.d.ts +51 -0
  574. package/dist/tui/key-hints.d.ts.map +1 -0
  575. package/dist/tui/launch-settings.d.ts +34 -0
  576. package/dist/tui/launch-settings.d.ts.map +1 -0
  577. package/dist/tui/log-pane.d.ts.map +1 -1
  578. package/dist/tui/model-choices.d.ts +39 -1
  579. package/dist/tui/model-choices.d.ts.map +1 -1
  580. package/dist/tui/model-search.d.ts +4 -1
  581. package/dist/tui/model-search.d.ts.map +1 -1
  582. package/dist/tui/output-size-watch.d.ts +32 -0
  583. package/dist/tui/output-size-watch.d.ts.map +1 -0
  584. package/dist/tui/permission-review.d.ts.map +1 -1
  585. package/dist/tui/person-terms.d.ts +58 -0
  586. package/dist/tui/person-terms.d.ts.map +1 -0
  587. package/dist/tui/plain-failure.d.ts +27 -0
  588. package/dist/tui/plain-failure.d.ts.map +1 -0
  589. package/dist/tui/plain-interruption.d.ts +46 -0
  590. package/dist/tui/plain-interruption.d.ts.map +1 -0
  591. package/dist/tui/provider-list.d.ts.map +1 -1
  592. package/dist/tui/render-mode.d.ts +19 -0
  593. package/dist/tui/render-mode.d.ts.map +1 -0
  594. package/dist/tui/schedule/host-commands.d.ts +2 -9
  595. package/dist/tui/schedule/host-commands.d.ts.map +1 -1
  596. package/dist/tui/schedule/integration.d.ts +8 -0
  597. package/dist/tui/schedule/integration.d.ts.map +1 -1
  598. package/dist/tui/schedule/source-deliveries.d.ts +37 -0
  599. package/dist/tui/schedule/source-deliveries.d.ts.map +1 -0
  600. package/dist/tui/schedule/startup.d.ts.map +1 -1
  601. package/dist/tui/schedule/tool-host.d.ts +3 -1
  602. package/dist/tui/schedule/tool-host.d.ts.map +1 -1
  603. package/dist/tui/setup-text.d.ts +14 -0
  604. package/dist/tui/setup-text.d.ts.map +1 -0
  605. package/dist/tui/shell-escape.d.ts.map +1 -1
  606. package/dist/tui/skills/suggest-setting.d.ts.map +1 -1
  607. package/dist/tui/slashCommands.d.ts +4 -1
  608. package/dist/tui/slashCommands.d.ts.map +1 -1
  609. package/dist/tui/terminal-choice-text.d.ts +7 -0
  610. package/dist/tui/terminal-choice-text.d.ts.map +1 -1
  611. package/dist/tui/tidy-tool-output.d.ts +83 -0
  612. package/dist/tui/tidy-tool-output.d.ts.map +1 -0
  613. package/dist/tui/tool-presentation.d.ts +6 -0
  614. package/dist/tui/tool-presentation.d.ts.map +1 -0
  615. package/dist/tui/triggers/copy.d.ts.map +1 -1
  616. package/dist/tui/triggers/setting.d.ts.map +1 -1
  617. package/dist/tui/turn-interruption.d.ts +1 -1
  618. package/dist/tui/turn-interruption.d.ts.map +1 -1
  619. package/dist/tui/turn-limits-settings.d.ts +4 -4
  620. package/dist/tui/turn-limits-settings.d.ts.map +1 -1
  621. package/dist/tui/types.d.ts +10 -0
  622. package/dist/tui/types.d.ts.map +1 -1
  623. package/dist/tui/web-activity.d.ts +3 -2
  624. package/dist/tui/web-activity.d.ts.map +1 -1
  625. package/dist/tui/zen-free-refusal.d.ts +17 -0
  626. package/dist/tui/zen-free-refusal.d.ts.map +1 -0
  627. package/dist/usage-error.d.ts +15 -0
  628. package/dist/usage-error.d.ts.map +1 -0
  629. package/dist/warning-filter.d.ts +30 -0
  630. package/dist/warning-filter.d.ts.map +1 -0
  631. package/package.json +21 -10
  632. package/skills/schedule-task/SKILL.md +74 -20
  633. package/dist/browser/commands.js +0 -365
  634. package/dist/browser/commands.js.map +0 -1
  635. package/dist/browser/control.js +0 -140
  636. package/dist/browser/control.js.map +0 -1
  637. package/dist/browser/describe.js +0 -27
  638. package/dist/browser/describe.js.map +0 -1
  639. package/dist/checkpoints/store.js +0 -192
  640. package/dist/checkpoints/store.js.map +0 -1
  641. package/dist/checkpoints/wrap.js +0 -37
  642. package/dist/checkpoints/wrap.js.map +0 -1
  643. package/dist/cli.js +0 -602
  644. package/dist/cli.js.map +0 -1
  645. package/dist/commands/acp.js +0 -388
  646. package/dist/commands/acp.js.map +0 -1
  647. package/dist/commands/archive.js +0 -65
  648. package/dist/commands/archive.js.map +0 -1
  649. package/dist/commands/browser.js +0 -16
  650. package/dist/commands/browser.js.map +0 -1
  651. package/dist/commands/doctor.js +0 -267
  652. package/dist/commands/doctor.js.map +0 -1
  653. package/dist/commands/drain.js +0 -498
  654. package/dist/commands/drain.js.map +0 -1
  655. package/dist/commands/eval.js +0 -237
  656. package/dist/commands/eval.js.map +0 -1
  657. package/dist/commands/exec-flags.js +0 -334
  658. package/dist/commands/exec-flags.js.map +0 -1
  659. package/dist/commands/exec-json.js +0 -497
  660. package/dist/commands/exec-json.js.map +0 -1
  661. package/dist/commands/exec.js +0 -688
  662. package/dist/commands/exec.js.map +0 -1
  663. package/dist/commands/host-queries.js +0 -156
  664. package/dist/commands/host-queries.js.map +0 -1
  665. package/dist/commands/login.js +0 -315
  666. package/dist/commands/login.js.map +0 -1
  667. package/dist/commands/mcp-oauth-login.js +0 -213
  668. package/dist/commands/mcp-oauth-login.js.map +0 -1
  669. package/dist/commands/mcp.js +0 -461
  670. package/dist/commands/mcp.js.map +0 -1
  671. package/dist/commands/prior-messages.js +0 -329
  672. package/dist/commands/prior-messages.js.map +0 -1
  673. package/dist/commands/provider-wait.js +0 -65
  674. package/dist/commands/provider-wait.js.map +0 -1
  675. package/dist/commands/registry.js +0 -40
  676. package/dist/commands/registry.js.map +0 -1
  677. package/dist/commands/resident-flags.js +0 -193
  678. package/dist/commands/resident-flags.js.map +0 -1
  679. package/dist/commands/resident-learning.js +0 -293
  680. package/dist/commands/resident-learning.js.map +0 -1
  681. package/dist/commands/resident.js +0 -419
  682. package/dist/commands/resident.js.map +0 -1
  683. package/dist/commands/resume.js +0 -109
  684. package/dist/commands/resume.js.map +0 -1
  685. package/dist/commands/schedule.js +0 -131
  686. package/dist/commands/schedule.js.map +0 -1
  687. package/dist/commands/serve.js +0 -21
  688. package/dist/commands/serve.js.map +0 -1
  689. package/dist/commands/skills.js +0 -178
  690. package/dist/commands/skills.js.map +0 -1
  691. package/dist/commands/state.js +0 -110
  692. package/dist/commands/state.js.map +0 -1
  693. package/dist/commands/stdin.js +0 -69
  694. package/dist/commands/stdin.js.map +0 -1
  695. package/dist/commands/types.js +0 -2
  696. package/dist/commands/types.js.map +0 -1
  697. package/dist/commands/upgrade-progress.js +0 -54
  698. package/dist/commands/upgrade-progress.js.map +0 -1
  699. package/dist/commands/upgrade.js +0 -232
  700. package/dist/commands/upgrade.js.map +0 -1
  701. package/dist/commands/worktree.js +0 -86
  702. package/dist/commands/worktree.js.map +0 -1
  703. package/dist/config/composer-triggers.js +0 -80
  704. package/dist/config/composer-triggers.js.map +0 -1
  705. package/dist/config/debug.js +0 -126
  706. package/dist/config/debug.js.map +0 -1
  707. package/dist/config/load.js +0 -1208
  708. package/dist/config/load.js.map +0 -1
  709. package/dist/config/schema.js +0 -13
  710. package/dist/config/schema.js.map +0 -1
  711. package/dist/config/tool-result-screens.js +0 -104
  712. package/dist/config/tool-result-screens.js.map +0 -1
  713. package/dist/config/trusted-project-context.js +0 -28
  714. package/dist/config/trusted-project-context.js.map +0 -1
  715. package/dist/config/turn-guards.js +0 -46
  716. package/dist/config/turn-guards.js.map +0 -1
  717. package/dist/config/user-config.js +0 -118
  718. package/dist/config/user-config.js.map +0 -1
  719. package/dist/context/capabilities.js +0 -164
  720. package/dist/context/capabilities.js.map +0 -1
  721. package/dist/context/directories.js +0 -69
  722. package/dist/context/directories.js.map +0 -1
  723. package/dist/context/doctrine.js +0 -24
  724. package/dist/context/doctrine.js.map +0 -1
  725. package/dist/context/environment.js +0 -255
  726. package/dist/context/environment.js.map +0 -1
  727. package/dist/context/project-path.js +0 -16
  728. package/dist/context/project-path.js.map +0 -1
  729. package/dist/context/project-tracker.js +0 -217
  730. package/dist/context/project-tracker.js.map +0 -1
  731. package/dist/context/project.js +0 -256
  732. package/dist/context/project.js.map +0 -1
  733. package/dist/context/runtime-message.js +0 -30
  734. package/dist/context/runtime-message.js.map +0 -1
  735. package/dist/context/sandbox.js +0 -114
  736. package/dist/context/sandbox.js.map +0 -1
  737. package/dist/context/turn-snapshot.js +0 -122
  738. package/dist/context/turn-snapshot.js.map +0 -1
  739. package/dist/doctor/checks/browser.js +0 -63
  740. package/dist/doctor/checks/browser.js.map +0 -1
  741. package/dist/doctor/checks/chain.js +0 -211
  742. package/dist/doctor/checks/chain.js.map +0 -1
  743. package/dist/doctor/checks/credentials.js +0 -98
  744. package/dist/doctor/checks/credentials.js.map +0 -1
  745. package/dist/doctor/checks/index.js +0 -72
  746. package/dist/doctor/checks/index.js.map +0 -1
  747. package/dist/doctor/checks/invariants.js +0 -79
  748. package/dist/doctor/checks/invariants.js.map +0 -1
  749. package/dist/doctor/checks/logging.js +0 -69
  750. package/dist/doctor/checks/logging.js.map +0 -1
  751. package/dist/doctor/checks/providers.js +0 -30
  752. package/dist/doctor/checks/providers.js.map +0 -1
  753. package/dist/doctor/checks/runtime.js +0 -40
  754. package/dist/doctor/checks/runtime.js.map +0 -1
  755. package/dist/doctor/checks/sandbox.js +0 -76
  756. package/dist/doctor/checks/sandbox.js.map +0 -1
  757. package/dist/doctor/checks/scheduler.js +0 -74
  758. package/dist/doctor/checks/scheduler.js.map +0 -1
  759. package/dist/doctor/checks/session-export.js +0 -62
  760. package/dist/doctor/checks/session-export.js.map +0 -1
  761. package/dist/doctor/checks/telemetry.js +0 -58
  762. package/dist/doctor/checks/telemetry.js.map +0 -1
  763. package/dist/doctor/checks/vault.js +0 -67
  764. package/dist/doctor/checks/vault.js.map +0 -1
  765. package/dist/doctor/index.js +0 -3
  766. package/dist/doctor/index.js.map +0 -1
  767. package/dist/doctor/registry.js +0 -230
  768. package/dist/doctor/registry.js.map +0 -1
  769. package/dist/exit-codes.js +0 -62
  770. package/dist/exit-codes.js.map +0 -1
  771. package/dist/installation.js +0 -48
  772. package/dist/installation.js.map +0 -1
  773. package/dist/integrations/clipboard/image.js +0 -119
  774. package/dist/integrations/clipboard/image.js.map +0 -1
  775. package/dist/integrations/clipboard/text.js +0 -43
  776. package/dist/integrations/clipboard/text.js.map +0 -1
  777. package/dist/integrations/files/attachment-store.js +0 -86
  778. package/dist/integrations/files/attachment-store.js.map +0 -1
  779. package/dist/integrations/mcp/oauth-store.js +0 -549
  780. package/dist/integrations/mcp/oauth-store.js.map +0 -1
  781. package/dist/integrations/mcp/servers.js +0 -611
  782. package/dist/integrations/mcp/servers.js.map +0 -1
  783. package/dist/integrations/mcp/user-config.js +0 -92
  784. package/dist/integrations/mcp/user-config.js.map +0 -1
  785. package/dist/integrations/notifications/desktop/freedesktop.js +0 -33
  786. package/dist/integrations/notifications/desktop/freedesktop.js.map +0 -1
  787. package/dist/integrations/notifications/desktop/macos.js +0 -17
  788. package/dist/integrations/notifications/desktop/macos.js.map +0 -1
  789. package/dist/integrations/notifications/desktop/sanitize.js +0 -49
  790. package/dist/integrations/notifications/desktop/sanitize.js.map +0 -1
  791. package/dist/integrations/notifications/desktop/throttle.js +0 -39
  792. package/dist/integrations/notifications/desktop/throttle.js.map +0 -1
  793. package/dist/integrations/notifications/desktop/windows-toast.js +0 -56
  794. package/dist/integrations/notifications/desktop/windows-toast.js.map +0 -1
  795. package/dist/integrations/notifications/desktop.js +0 -199
  796. package/dist/integrations/notifications/desktop.js.map +0 -1
  797. package/dist/integrations/notifications/terminal.js +0 -46
  798. package/dist/integrations/notifications/terminal.js.map +0 -1
  799. package/dist/integrations/npm-invocation.js +0 -23
  800. package/dist/integrations/npm-invocation.js.map +0 -1
  801. package/dist/integrations/plugins/runtime.js +0 -189
  802. package/dist/integrations/plugins/runtime.js.map +0 -1
  803. package/dist/integrations/plugins/settings.js +0 -106
  804. package/dist/integrations/plugins/settings.js.map +0 -1
  805. package/dist/integrations/providers/access.js +0 -23
  806. package/dist/integrations/providers/access.js.map +0 -1
  807. package/dist/integrations/providers/chain-capabilities.js +0 -211
  808. package/dist/integrations/providers/chain-capabilities.js.map +0 -1
  809. package/dist/integrations/providers/codex-device-login.js +0 -195
  810. package/dist/integrations/providers/codex-device-login.js.map +0 -1
  811. package/dist/integrations/providers/codex-oauth.js +0 -95
  812. package/dist/integrations/providers/codex-oauth.js.map +0 -1
  813. package/dist/integrations/providers/credential-provider.js +0 -74
  814. package/dist/integrations/providers/credential-provider.js.map +0 -1
  815. package/dist/integrations/providers/credential-store.js +0 -657
  816. package/dist/integrations/providers/credential-store.js.map +0 -1
  817. package/dist/integrations/providers/current-credential.js +0 -45
  818. package/dist/integrations/providers/current-credential.js.map +0 -1
  819. package/dist/integrations/providers/discover.js +0 -313
  820. package/dist/integrations/providers/discover.js.map +0 -1
  821. package/dist/integrations/providers/gemini-credentials.js +0 -148
  822. package/dist/integrations/providers/gemini-credentials.js.map +0 -1
  823. package/dist/integrations/providers/harness-credentials.js +0 -344
  824. package/dist/integrations/providers/harness-credentials.js.map +0 -1
  825. package/dist/integrations/providers/identity.js +0 -64
  826. package/dist/integrations/providers/identity.js.map +0 -1
  827. package/dist/integrations/providers/index.js +0 -14
  828. package/dist/integrations/providers/index.js.map +0 -1
  829. package/dist/integrations/providers/keychain.js +0 -78
  830. package/dist/integrations/providers/keychain.js.map +0 -1
  831. package/dist/integrations/providers/model-reasoning.js +0 -51
  832. package/dist/integrations/providers/model-reasoning.js.map +0 -1
  833. package/dist/integrations/providers/oauth.js +0 -302
  834. package/dist/integrations/providers/oauth.js.map +0 -1
  835. package/dist/integrations/providers/preferences.js +0 -287
  836. package/dist/integrations/providers/preferences.js.map +0 -1
  837. package/dist/integrations/providers/register.js +0 -154
  838. package/dist/integrations/providers/register.js.map +0 -1
  839. package/dist/integrations/providers/registry.js +0 -289
  840. package/dist/integrations/providers/registry.js.map +0 -1
  841. package/dist/integrations/providers/setup.js +0 -158
  842. package/dist/integrations/providers/setup.js.map +0 -1
  843. package/dist/integrations/providers/subscription-login.js +0 -328
  844. package/dist/integrations/providers/subscription-login.js.map +0 -1
  845. package/dist/integrations/providers/zen-catalogue.js +0 -196
  846. package/dist/integrations/providers/zen-catalogue.js.map +0 -1
  847. package/dist/integrations/resident/foreground.js +0 -95
  848. package/dist/integrations/resident/foreground.js.map +0 -1
  849. package/dist/integrations/resident/inspection.js +0 -282
  850. package/dist/integrations/resident/inspection.js.map +0 -1
  851. package/dist/integrations/resident/learning-sources.js +0 -79
  852. package/dist/integrations/resident/learning-sources.js.map +0 -1
  853. package/dist/integrations/resident/learning-storage.js +0 -55
  854. package/dist/integrations/resident/learning-storage.js.map +0 -1
  855. package/dist/integrations/resident/lifecycle-errors.js +0 -15
  856. package/dist/integrations/resident/lifecycle-errors.js.map +0 -1
  857. package/dist/integrations/resident/owned-runner.js +0 -91
  858. package/dist/integrations/resident/owned-runner.js.map +0 -1
  859. package/dist/integrations/resident/runner-control.js +0 -238
  860. package/dist/integrations/resident/runner-control.js.map +0 -1
  861. package/dist/integrations/resident/runner-launch.js +0 -142
  862. package/dist/integrations/resident/runner-launch.js.map +0 -1
  863. package/dist/integrations/resident/runner-store.js +0 -284
  864. package/dist/integrations/resident/runner-store.js.map +0 -1
  865. package/dist/integrations/resident/session-log-reads.js +0 -125
  866. package/dist/integrations/resident/session-log-reads.js.map +0 -1
  867. package/dist/integrations/resident/session-step.js +0 -476
  868. package/dist/integrations/resident/session-step.js.map +0 -1
  869. package/dist/integrations/resident/storage.js +0 -183
  870. package/dist/integrations/resident/storage.js.map +0 -1
  871. package/dist/integrations/resident/tool-evidence.js +0 -123
  872. package/dist/integrations/resident/tool-evidence.js.map +0 -1
  873. package/dist/integrations/resident/verification.js +0 -109
  874. package/dist/integrations/resident/verification.js.map +0 -1
  875. package/dist/integrations/sessions/checkpoint-view.js +0 -48
  876. package/dist/integrations/sessions/checkpoint-view.js.map +0 -1
  877. package/dist/integrations/sessions/context-inventory.js +0 -44
  878. package/dist/integrations/sessions/context-inventory.js.map +0 -1
  879. package/dist/integrations/sessions/conversation-search.js +0 -572
  880. package/dist/integrations/sessions/conversation-search.js.map +0 -1
  881. package/dist/integrations/sessions/display-title.js +0 -5
  882. package/dist/integrations/sessions/display-title.js.map +0 -1
  883. package/dist/integrations/sessions/evidence-page-validation.js +0 -74
  884. package/dist/integrations/sessions/evidence-page-validation.js.map +0 -1
  885. package/dist/integrations/sessions/evidence-recall.js +0 -117
  886. package/dist/integrations/sessions/evidence-recall.js.map +0 -1
  887. package/dist/integrations/sessions/store.js +0 -780
  888. package/dist/integrations/sessions/store.js.map +0 -1
  889. package/dist/integrations/sessions/task-context.js +0 -96
  890. package/dist/integrations/sessions/task-context.js.map +0 -1
  891. package/dist/integrations/sessions/transcript-export.js +0 -342
  892. package/dist/integrations/sessions/transcript-export.js.map +0 -1
  893. package/dist/integrations/state/home.js +0 -17
  894. package/dist/integrations/state/home.js.map +0 -1
  895. package/dist/integrations/state/identity.js +0 -49
  896. package/dist/integrations/state/identity.js.map +0 -1
  897. package/dist/integrations/state/immutable-json.js +0 -38
  898. package/dist/integrations/state/immutable-json.js.map +0 -1
  899. package/dist/integrations/state/private-directory.js +0 -43
  900. package/dist/integrations/state/private-directory.js.map +0 -1
  901. package/dist/integrations/state/project.js +0 -13
  902. package/dist/integrations/state/project.js.map +0 -1
  903. package/dist/integrations/state/report.js +0 -626
  904. package/dist/integrations/state/report.js.map +0 -1
  905. package/dist/integrations/state/retention.js +0 -18
  906. package/dist/integrations/state/retention.js.map +0 -1
  907. package/dist/integrations/subagents/NamzuCliAgent.js +0 -9
  908. package/dist/integrations/subagents/NamzuCliAgent.js.map +0 -1
  909. package/dist/integrations/subagents/activity.js +0 -759
  910. package/dist/integrations/subagents/activity.js.map +0 -1
  911. package/dist/integrations/subagents/batches.js +0 -172
  912. package/dist/integrations/subagents/batches.js.map +0 -1
  913. package/dist/integrations/subagents/definitions.js +0 -26
  914. package/dist/integrations/subagents/definitions.js.map +0 -1
  915. package/dist/integrations/subagents/model-effort.js +0 -12
  916. package/dist/integrations/subagents/model-effort.js.map +0 -1
  917. package/dist/integrations/subagents/parent.js +0 -47
  918. package/dist/integrations/subagents/parent.js.map +0 -1
  919. package/dist/integrations/subagents/policy.js +0 -3
  920. package/dist/integrations/subagents/policy.js.map +0 -1
  921. package/dist/integrations/subagents/replay.js +0 -295
  922. package/dist/integrations/subagents/replay.js.map +0 -1
  923. package/dist/integrations/subagents/runtime.js +0 -1317
  924. package/dist/integrations/subagents/runtime.js.map +0 -1
  925. package/dist/integrations/subagents/saved-agents.js +0 -102
  926. package/dist/integrations/subagents/saved-agents.js.map +0 -1
  927. package/dist/integrations/subagents/slash.js +0 -45
  928. package/dist/integrations/subagents/slash.js.map +0 -1
  929. package/dist/integrations/subagents/worktree-driver.js +0 -72
  930. package/dist/integrations/subagents/worktree-driver.js.map +0 -1
  931. package/dist/integrations/telemetry/session-export.js +0 -119
  932. package/dist/integrations/telemetry/session-export.js.map +0 -1
  933. package/dist/integrations/trust/store.js +0 -73
  934. package/dist/integrations/trust/store.js.map +0 -1
  935. package/dist/integrations/updates.js +0 -115
  936. package/dist/integrations/updates.js.map +0 -1
  937. package/dist/integrations/web/exa-search.js +0 -154
  938. package/dist/integrations/web/exa-search.js.map +0 -1
  939. package/dist/integrations/web/open-url.js +0 -73
  940. package/dist/integrations/web/open-url.js.map +0 -1
  941. package/dist/integrations/web/search.js +0 -68
  942. package/dist/integrations/web/search.js.map +0 -1
  943. package/dist/integrations/worktrees/managed.js +0 -231
  944. package/dist/integrations/worktrees/managed.js.map +0 -1
  945. package/dist/logging.js +0 -115
  946. package/dist/logging.js.map +0 -1
  947. package/dist/memory/io.js +0 -177
  948. package/dist/memory/io.js.map +0 -1
  949. package/dist/memory/presentation.js +0 -76
  950. package/dist/memory/presentation.js.map +0 -1
  951. package/dist/memory/store.js +0 -180
  952. package/dist/memory/store.js.map +0 -1
  953. package/dist/memory/typed.js +0 -336
  954. package/dist/memory/typed.js.map +0 -1
  955. package/dist/output/formatter.js +0 -16
  956. package/dist/output/formatter.js.map +0 -1
  957. package/dist/output/index.js +0 -22
  958. package/dist/output/index.js.map +0 -1
  959. package/dist/output/json.js +0 -51
  960. package/dist/output/json.js.map +0 -1
  961. package/dist/output/text.js +0 -50
  962. package/dist/output/text.js.map +0 -1
  963. package/dist/output/yaml.js +0 -26
  964. package/dist/output/yaml.js.map +0 -1
  965. package/dist/output-schema.js +0 -18
  966. package/dist/output-schema.js.map +0 -1
  967. package/dist/permissions/browser-sites.js +0 -270
  968. package/dist/permissions/browser-sites.js.map +0 -1
  969. package/dist/permissions/canonical-project.js +0 -13
  970. package/dist/permissions/canonical-project.js.map +0 -1
  971. package/dist/permissions/checks.js +0 -128
  972. package/dist/permissions/checks.js.map +0 -1
  973. package/dist/permissions/headless-trust.js +0 -86
  974. package/dist/permissions/headless-trust.js.map +0 -1
  975. package/dist/permissions/live-mode.js +0 -62
  976. package/dist/permissions/live-mode.js.map +0 -1
  977. package/dist/permissions/mode.js +0 -65
  978. package/dist/permissions/mode.js.map +0 -1
  979. package/dist/permissions/rules.js +0 -358
  980. package/dist/permissions/rules.js.map +0 -1
  981. package/dist/release-notes.js +0 -64
  982. package/dist/release-notes.js.map +0 -1
  983. package/dist/resume-invocation.js +0 -24
  984. package/dist/resume-invocation.js.map +0 -1
  985. package/dist/schedule/build.js +0 -374
  986. package/dist/schedule/build.js.map +0 -1
  987. package/dist/schedule/changes.js +0 -78
  988. package/dist/schedule/changes.js.map +0 -1
  989. package/dist/schedule/commands/add.js +0 -603
  990. package/dist/schedule/commands/add.js.map +0 -1
  991. package/dist/schedule/commands/args.js +0 -80
  992. package/dist/schedule/commands/args.js.map +0 -1
  993. package/dist/schedule/commands/confirm-prompt.js +0 -21
  994. package/dist/schedule/commands/confirm-prompt.js.map +0 -1
  995. package/dist/schedule/commands/lifecycle.js +0 -586
  996. package/dist/schedule/commands/lifecycle.js.map +0 -1
  997. package/dist/schedule/commands/list.js +0 -260
  998. package/dist/schedule/commands/list.js.map +0 -1
  999. package/dist/schedule/commands/logs.js +0 -106
  1000. package/dist/schedule/commands/logs.js.map +0 -1
  1001. package/dist/schedule/commands/service.js +0 -458
  1002. package/dist/schedule/commands/service.js.map +0 -1
  1003. package/dist/schedule/daemon/daemon.js +0 -1265
  1004. package/dist/schedule/daemon/daemon.js.map +0 -1
  1005. package/dist/schedule/daemon/endpoint.js +0 -158
  1006. package/dist/schedule/daemon/endpoint.js.map +0 -1
  1007. package/dist/schedule/daemon/exit.js +0 -8
  1008. package/dist/schedule/daemon/exit.js.map +0 -1
  1009. package/dist/schedule/daemon/log.js +0 -53
  1010. package/dist/schedule/daemon/log.js.map +0 -1
  1011. package/dist/schedule/daemon/notify.js +0 -158
  1012. package/dist/schedule/daemon/notify.js.map +0 -1
  1013. package/dist/schedule/daemon/retention.js +0 -46
  1014. package/dist/schedule/daemon/retention.js.map +0 -1
  1015. package/dist/schedule/daemon/sessions.js +0 -52
  1016. package/dist/schedule/daemon/sessions.js.map +0 -1
  1017. package/dist/schedule/env.js +0 -106
  1018. package/dist/schedule/env.js.map +0 -1
  1019. package/dist/schedule/fire/browser-preflight.js +0 -73
  1020. package/dist/schedule/fire/browser-preflight.js.map +0 -1
  1021. package/dist/schedule/fire/calls.js +0 -114
  1022. package/dist/schedule/fire/calls.js.map +0 -1
  1023. package/dist/schedule/fire/fire.js +0 -681
  1024. package/dist/schedule/fire/fire.js.map +0 -1
  1025. package/dist/schedule/fire/result.js +0 -19
  1026. package/dist/schedule/fire/result.js.map +0 -1
  1027. package/dist/schedule/fire/run-script.js +0 -81
  1028. package/dist/schedule/fire/run-script.js.map +0 -1
  1029. package/dist/schedule/fire/unattended-note.js +0 -51
  1030. package/dist/schedule/fire/unattended-note.js.map +0 -1
  1031. package/dist/schedule/fire/wake-gate.js +0 -90
  1032. package/dist/schedule/fire/wake-gate.js.map +0 -1
  1033. package/dist/schedule/floor.js +0 -1561
  1034. package/dist/schedule/floor.js.map +0 -1
  1035. package/dist/schedule/folder.js +0 -84
  1036. package/dist/schedule/folder.js.map +0 -1
  1037. package/dist/schedule/paths.js +0 -53
  1038. package/dist/schedule/paths.js.map +0 -1
  1039. package/dist/schedule/policy.js +0 -414
  1040. package/dist/schedule/policy.js.map +0 -1
  1041. package/dist/schedule/resume-command.js +0 -72
  1042. package/dist/schedule/resume-command.js.map +0 -1
  1043. package/dist/schedule/script-check.js +0 -146
  1044. package/dist/schedule/script-check.js.map +0 -1
  1045. package/dist/schedule/script-shell.js +0 -5
  1046. package/dist/schedule/script-shell.js.map +0 -1
  1047. package/dist/schedule/service/detect.js +0 -29
  1048. package/dist/schedule/service/detect.js.map +0 -1
  1049. package/dist/schedule/service/index.js +0 -361
  1050. package/dist/schedule/service/index.js.map +0 -1
  1051. package/dist/schedule/service/launchd.js +0 -84
  1052. package/dist/schedule/service/launchd.js.map +0 -1
  1053. package/dist/schedule/service/manifest.js +0 -16
  1054. package/dist/schedule/service/manifest.js.map +0 -1
  1055. package/dist/schedule/service/names.js +0 -22
  1056. package/dist/schedule/service/names.js.map +0 -1
  1057. package/dist/schedule/service/quote.js +0 -64
  1058. package/dist/schedule/service/quote.js.map +0 -1
  1059. package/dist/schedule/service/runner.js +0 -31
  1060. package/dist/schedule/service/runner.js.map +0 -1
  1061. package/dist/schedule/service/systemd.js +0 -96
  1062. package/dist/schedule/service/systemd.js.map +0 -1
  1063. package/dist/schedule/service/windows-task.js +0 -199
  1064. package/dist/schedule/service/windows-task.js.map +0 -1
  1065. package/dist/schedule/service/wsl.js +0 -121
  1066. package/dist/schedule/service/wsl.js.map +0 -1
  1067. package/dist/schedule/store/atomic.js +0 -138
  1068. package/dist/schedule/store/atomic.js.map +0 -1
  1069. package/dist/schedule/store/claims.js +0 -57
  1070. package/dist/schedule/store/claims.js.map +0 -1
  1071. package/dist/schedule/store/digest.js +0 -139
  1072. package/dist/schedule/store/digest.js.map +0 -1
  1073. package/dist/schedule/store/history.js +0 -117
  1074. package/dist/schedule/store/history.js.map +0 -1
  1075. package/dist/schedule/store/jobs.js +0 -277
  1076. package/dist/schedule/store/jobs.js.map +0 -1
  1077. package/dist/schedule/store/state.js +0 -38
  1078. package/dist/schedule/store/state.js.map +0 -1
  1079. package/dist/schedule/types.js +0 -33
  1080. package/dist/schedule/types.js.map +0 -1
  1081. package/dist/schedule/visible-source.js +0 -59
  1082. package/dist/schedule/visible-source.js.map +0 -1
  1083. package/dist/skills/audit.js +0 -75
  1084. package/dist/skills/audit.js.map +0 -1
  1085. package/dist/skills/catalog.js +0 -226
  1086. package/dist/skills/catalog.js.map +0 -1
  1087. package/dist/skills/directory.js +0 -51
  1088. package/dist/skills/directory.js.map +0 -1
  1089. package/dist/skills/save.js +0 -344
  1090. package/dist/skills/save.js.map +0 -1
  1091. package/dist/skills/store.js +0 -351
  1092. package/dist/skills/store.js.map +0 -1
  1093. package/dist/termination.js +0 -143
  1094. package/dist/termination.js.map +0 -1
  1095. package/dist/test-support/toolset.js +0 -27
  1096. package/dist/test-support/toolset.js.map +0 -1
  1097. package/dist/tui/AgentExplorer.js +0 -789
  1098. package/dist/tui/AgentExplorer.js.map +0 -1
  1099. package/dist/tui/App.js +0 -8499
  1100. package/dist/tui/App.js.map +0 -1
  1101. package/dist/tui/BackgroundJobsPanel.js +0 -129
  1102. package/dist/tui/BackgroundJobsPanel.js.map +0 -1
  1103. package/dist/tui/BrandHeader.js +0 -14
  1104. package/dist/tui/BrandHeader.js.map +0 -1
  1105. package/dist/tui/Checklist.js +0 -90
  1106. package/dist/tui/Checklist.js.map +0 -1
  1107. package/dist/tui/ChoicePicker.js +0 -64
  1108. package/dist/tui/ChoicePicker.js.map +0 -1
  1109. package/dist/tui/Composer.js +0 -939
  1110. package/dist/tui/Composer.js.map +0 -1
  1111. package/dist/tui/ComposerFrame.js +0 -79
  1112. package/dist/tui/ComposerFrame.js.map +0 -1
  1113. package/dist/tui/CopyPicker.js +0 -19
  1114. package/dist/tui/CopyPicker.js.map +0 -1
  1115. package/dist/tui/EditPromptPicker.js +0 -17
  1116. package/dist/tui/EditPromptPicker.js.map +0 -1
  1117. package/dist/tui/EffortSlider.js +0 -134
  1118. package/dist/tui/EffortSlider.js.map +0 -1
  1119. package/dist/tui/LiveActivity.js +0 -89
  1120. package/dist/tui/LiveActivity.js.map +0 -1
  1121. package/dist/tui/Markdown.js +0 -137
  1122. package/dist/tui/Markdown.js.map +0 -1
  1123. package/dist/tui/PendingInputPanel.js +0 -108
  1124. package/dist/tui/PendingInputPanel.js.map +0 -1
  1125. package/dist/tui/PermissionOverlay.js +0 -278
  1126. package/dist/tui/PermissionOverlay.js.map +0 -1
  1127. package/dist/tui/Picker.js +0 -1310
  1128. package/dist/tui/Picker.js.map +0 -1
  1129. package/dist/tui/ProviderSetup.js +0 -125
  1130. package/dist/tui/ProviderSetup.js.map +0 -1
  1131. package/dist/tui/ResumePicker.js +0 -34
  1132. package/dist/tui/ResumePicker.js.map +0 -1
  1133. package/dist/tui/SaveSkillOverlay.js +0 -118
  1134. package/dist/tui/SaveSkillOverlay.js.map +0 -1
  1135. package/dist/tui/ScheduleReviewOverlay.js +0 -166
  1136. package/dist/tui/ScheduleReviewOverlay.js.map +0 -1
  1137. package/dist/tui/StatusBar.js +0 -182
  1138. package/dist/tui/StatusBar.js.map +0 -1
  1139. package/dist/tui/StatusPanel.js +0 -11
  1140. package/dist/tui/StatusPanel.js.map +0 -1
  1141. package/dist/tui/TaskList.js +0 -43
  1142. package/dist/tui/TaskList.js.map +0 -1
  1143. package/dist/tui/TextPrompt.js +0 -185
  1144. package/dist/tui/TextPrompt.js.map +0 -1
  1145. package/dist/tui/ToolOutputViewer.js +0 -39
  1146. package/dist/tui/ToolOutputViewer.js.map +0 -1
  1147. package/dist/tui/Transcript.js +0 -235
  1148. package/dist/tui/Transcript.js.map +0 -1
  1149. package/dist/tui/TrustPrompt.js +0 -13
  1150. package/dist/tui/TrustPrompt.js.map +0 -1
  1151. package/dist/tui/ViewportBound.js +0 -55
  1152. package/dist/tui/ViewportBound.js.map +0 -1
  1153. package/dist/tui/agent-transcript-rows.js +0 -115
  1154. package/dist/tui/agent-transcript-rows.js.map +0 -1
  1155. package/dist/tui/agent.js +0 -4301
  1156. package/dist/tui/agent.js.map +0 -1
  1157. package/dist/tui/browser-notices.js +0 -107
  1158. package/dist/tui/browser-notices.js.map +0 -1
  1159. package/dist/tui/choice-selection.js +0 -38
  1160. package/dist/tui/choice-selection.js.map +0 -1
  1161. package/dist/tui/compact-transcript.js +0 -46
  1162. package/dist/tui/compact-transcript.js.map +0 -1
  1163. package/dist/tui/consent-timing.js +0 -48
  1164. package/dist/tui/consent-timing.js.map +0 -1
  1165. package/dist/tui/conversation-evidence-view.js +0 -96
  1166. package/dist/tui/conversation-evidence-view.js.map +0 -1
  1167. package/dist/tui/conversation-history.js +0 -33
  1168. package/dist/tui/conversation-history.js.map +0 -1
  1169. package/dist/tui/copy-targets.js +0 -189
  1170. package/dist/tui/copy-targets.js.map +0 -1
  1171. package/dist/tui/credential-entry.js +0 -134
  1172. package/dist/tui/credential-entry.js.map +0 -1
  1173. package/dist/tui/edit-prompts.js +0 -35
  1174. package/dist/tui/edit-prompts.js.map +0 -1
  1175. package/dist/tui/exit-summary.js +0 -30
  1176. package/dist/tui/exit-summary.js.map +0 -1
  1177. package/dist/tui/external-editor.js +0 -169
  1178. package/dist/tui/external-editor.js.map +0 -1
  1179. package/dist/tui/hypermode.js +0 -58
  1180. package/dist/tui/hypermode.js.map +0 -1
  1181. package/dist/tui/index.js +0 -81
  1182. package/dist/tui/index.js.map +0 -1
  1183. package/dist/tui/live-window.js +0 -281
  1184. package/dist/tui/live-window.js.map +0 -1
  1185. package/dist/tui/log-pane.js +0 -100
  1186. package/dist/tui/log-pane.js.map +0 -1
  1187. package/dist/tui/login-prompt.js +0 -105
  1188. package/dist/tui/login-prompt.js.map +0 -1
  1189. package/dist/tui/logo.js +0 -9
  1190. package/dist/tui/logo.js.map +0 -1
  1191. package/dist/tui/markdown-block-cache.js +0 -76
  1192. package/dist/tui/markdown-block-cache.js.map +0 -1
  1193. package/dist/tui/markdown-table.js +0 -175
  1194. package/dist/tui/markdown-table.js.map +0 -1
  1195. package/dist/tui/markdown-wrap.js +0 -189
  1196. package/dist/tui/markdown-wrap.js.map +0 -1
  1197. package/dist/tui/markdownParser.js +0 -237
  1198. package/dist/tui/markdownParser.js.map +0 -1
  1199. package/dist/tui/mentions.js +0 -150
  1200. package/dist/tui/mentions.js.map +0 -1
  1201. package/dist/tui/model-catalogue-view.js +0 -75
  1202. package/dist/tui/model-catalogue-view.js.map +0 -1
  1203. package/dist/tui/model-choices.js +0 -157
  1204. package/dist/tui/model-choices.js.map +0 -1
  1205. package/dist/tui/model-search.js +0 -28
  1206. package/dist/tui/model-search.js.map +0 -1
  1207. package/dist/tui/model-selection-intent.js +0 -96
  1208. package/dist/tui/model-selection-intent.js.map +0 -1
  1209. package/dist/tui/model-switch-tool.js +0 -74
  1210. package/dist/tui/model-switch-tool.js.map +0 -1
  1211. package/dist/tui/model-switch.js +0 -106
  1212. package/dist/tui/model-switch.js.map +0 -1
  1213. package/dist/tui/notices.js +0 -27
  1214. package/dist/tui/notices.js.map +0 -1
  1215. package/dist/tui/open-browser.js +0 -147
  1216. package/dist/tui/open-browser.js.map +0 -1
  1217. package/dist/tui/permission-review.js +0 -858
  1218. package/dist/tui/permission-review.js.map +0 -1
  1219. package/dist/tui/plugin-view.js +0 -59
  1220. package/dist/tui/plugin-view.js.map +0 -1
  1221. package/dist/tui/provider-list.js +0 -327
  1222. package/dist/tui/provider-list.js.map +0 -1
  1223. package/dist/tui/provider-selection.js +0 -16
  1224. package/dist/tui/provider-selection.js.map +0 -1
  1225. package/dist/tui/schedule/host-commands.js +0 -428
  1226. package/dist/tui/schedule/host-commands.js.map +0 -1
  1227. package/dist/tui/schedule/integration.js +0 -150
  1228. package/dist/tui/schedule/integration.js.map +0 -1
  1229. package/dist/tui/schedule/loop-host.js +0 -153
  1230. package/dist/tui/schedule/loop-host.js.map +0 -1
  1231. package/dist/tui/schedule/resume.js +0 -333
  1232. package/dist/tui/schedule/resume.js.map +0 -1
  1233. package/dist/tui/schedule/startup.js +0 -121
  1234. package/dist/tui/schedule/startup.js.map +0 -1
  1235. package/dist/tui/schedule/tool-host.js +0 -619
  1236. package/dist/tui/schedule/tool-host.js.map +0 -1
  1237. package/dist/tui/selection-window.js +0 -37
  1238. package/dist/tui/selection-window.js.map +0 -1
  1239. package/dist/tui/shell-escape.js +0 -110
  1240. package/dist/tui/shell-escape.js.map +0 -1
  1241. package/dist/tui/skills/learning.js +0 -131
  1242. package/dist/tui/skills/learning.js.map +0 -1
  1243. package/dist/tui/skills/suggest-setting.js +0 -55
  1244. package/dist/tui/skills/suggest-setting.js.map +0 -1
  1245. package/dist/tui/skills/suggestion-ledger.js +0 -52
  1246. package/dist/tui/skills/suggestion-ledger.js.map +0 -1
  1247. package/dist/tui/slashCommands.js +0 -1588
  1248. package/dist/tui/slashCommands.js.map +0 -1
  1249. package/dist/tui/status-card.js +0 -30
  1250. package/dist/tui/status-card.js.map +0 -1
  1251. package/dist/tui/status-panel-layout.js +0 -42
  1252. package/dist/tui/status-panel-layout.js.map +0 -1
  1253. package/dist/tui/stream-blocks.js +0 -187
  1254. package/dist/tui/stream-blocks.js.map +0 -1
  1255. package/dist/tui/task-activity.js +0 -157
  1256. package/dist/tui/task-activity.js.map +0 -1
  1257. package/dist/tui/terminal-choice-text.js +0 -118
  1258. package/dist/tui/terminal-choice-text.js.map +0 -1
  1259. package/dist/tui/terminal-display.js +0 -65
  1260. package/dist/tui/terminal-display.js.map +0 -1
  1261. package/dist/tui/terminal-hyperlinks.js +0 -70
  1262. package/dist/tui/terminal-hyperlinks.js.map +0 -1
  1263. package/dist/tui/theme.js +0 -34
  1264. package/dist/tui/theme.js.map +0 -1
  1265. package/dist/tui/triggers/analyze.js +0 -221
  1266. package/dist/tui/triggers/analyze.js.map +0 -1
  1267. package/dist/tui/triggers/context-text.js +0 -44
  1268. package/dist/tui/triggers/context-text.js.map +0 -1
  1269. package/dist/tui/triggers/copy.js +0 -163
  1270. package/dist/tui/triggers/copy.js.map +0 -1
  1271. package/dist/tui/triggers/detect.js +0 -295
  1272. package/dist/tui/triggers/detect.js.map +0 -1
  1273. package/dist/tui/triggers/fold.js +0 -44
  1274. package/dist/tui/triggers/fold.js.map +0 -1
  1275. package/dist/tui/triggers/pattern.js +0 -243
  1276. package/dist/tui/triggers/pattern.js.map +0 -1
  1277. package/dist/tui/triggers/provenance.js +0 -98
  1278. package/dist/tui/triggers/provenance.js.map +0 -1
  1279. package/dist/tui/triggers/registry.js +0 -164
  1280. package/dist/tui/triggers/registry.js.map +0 -1
  1281. package/dist/tui/triggers/setting.js +0 -61
  1282. package/dist/tui/triggers/setting.js.map +0 -1
  1283. package/dist/tui/triggers/verbs.js +0 -140
  1284. package/dist/tui/triggers/verbs.js.map +0 -1
  1285. package/dist/tui/turn-interruption.js +0 -160
  1286. package/dist/tui/turn-interruption.js.map +0 -1
  1287. package/dist/tui/turn-limits-settings.js +0 -88
  1288. package/dist/tui/turn-limits-settings.js.map +0 -1
  1289. package/dist/tui/types.js +0 -7
  1290. package/dist/tui/types.js.map +0 -1
  1291. package/dist/tui/units.js +0 -20
  1292. package/dist/tui/units.js.map +0 -1
  1293. package/dist/tui/use-selection-index.js +0 -13
  1294. package/dist/tui/use-selection-index.js.map +0 -1
  1295. package/dist/tui/web-activity.js +0 -105
  1296. package/dist/tui/web-activity.js.map +0 -1
  1297. package/dist/tui/workspace-diff.js +0 -101
  1298. package/dist/tui/workspace-diff.js.map +0 -1
  1299. package/dist/tui/workspace-review.js +0 -67
  1300. package/dist/tui/workspace-review.js.map +0 -1
  1301. package/dist/user-commands/store.js +0 -235
  1302. package/dist/user-commands/store.js.map +0 -1
  1303. package/dist/version.js +0 -23
  1304. package/dist/version.js.map +0 -1
@@ -0,0 +1,1633 @@
1
+ import { createRequire as __namzuCreateRequire } from 'node:module';
2
+ const require = __namzuCreateRequire(import.meta.url);
3
+ import {
4
+ EXIT_STOP_REQUESTED,
5
+ ScheduleDaemon,
6
+ daemonLogPath,
7
+ daemonLogSink,
8
+ installedFingerprint,
9
+ isFinal,
10
+ parseFireArgs,
11
+ readRunResult,
12
+ requestStop,
13
+ runFire,
14
+ spawnFireProcess,
15
+ stopRequestPath,
16
+ writeRunResult
17
+ } from "./chunk-YKLKHDZU.js";
18
+ import "./chunk-6ZPODOJN.js";
19
+ import "./chunk-E5VLANCO.js";
20
+ import "./chunk-MS3IYQ72.js";
21
+ import {
22
+ parkedRunWords,
23
+ resumeCommand
24
+ } from "./chunk-U6GZ7EW4.js";
25
+ import {
26
+ readState
27
+ } from "./chunk-WT6TFCPV.js";
28
+ import {
29
+ flag,
30
+ has,
31
+ parseArgs,
32
+ parseMs,
33
+ pathsFor
34
+ } from "./chunk-BCZR2B3Y.js";
35
+ import {
36
+ callEndpoint,
37
+ readEndpoint
38
+ } from "./chunk-6YG7D7U4.js";
39
+ import "./chunk-WHODOMXA.js";
40
+ import "./chunk-OWXJOD4H.js";
41
+ import {
42
+ readManifest,
43
+ removeManifest,
44
+ writeManifest
45
+ } from "./chunk-AK2U3N2A.js";
46
+ import {
47
+ listJobs,
48
+ sanitizeLine
49
+ } from "./chunk-SKKWMMFP.js";
50
+ import "./chunk-OEW7CJKK.js";
51
+ import "./chunk-A22MBIYU.js";
52
+ import {
53
+ loadBootstrapConfigWithProvenance
54
+ } from "./chunk-YYQJIECC.js";
55
+ import "./chunk-KONYGNG6.js";
56
+ import "./chunk-NICLKFBG.js";
57
+ import {
58
+ CLI_VERSION
59
+ } from "./chunk-HE7WUOX2.js";
60
+ import "./chunk-CHIEVVQ2.js";
61
+ import "./chunk-42ZK2AH4.js";
62
+ import "./chunk-US5ZFPAU.js";
63
+ import {
64
+ detectWsl,
65
+ readWslMountRoot,
66
+ wslSystem32
67
+ } from "./chunk-SB6UD3ED.js";
68
+ import "./chunk-6LLJQ3KY.js";
69
+ import {
70
+ EXIT_NO_CONFIG,
71
+ EXIT_OK,
72
+ EXIT_UNAVAILABLE,
73
+ EXIT_USAGE
74
+ } from "./chunk-Y7B67G22.js";
75
+ import "./chunk-XEUQN4JC.js";
76
+ import "./chunk-NIPHHZ5G.js";
77
+ import "./chunk-N6SR54VC.js";
78
+ import {
79
+ cliLogger,
80
+ installCliLogging
81
+ } from "./chunk-6CPT2ZBS.js";
82
+ import "./chunk-EEDZOGV4.js";
83
+ import "./chunk-AHIDYIRB.js";
84
+ import "./chunk-GIXSS6KW.js";
85
+ import "./chunk-DIHEHK7K.js";
86
+ import "./chunk-H6B6AROX.js";
87
+ import "./chunk-N3ZEXVSS.js";
88
+ import "./chunk-YQEWD2EN.js";
89
+ import "./chunk-FJNDNNNQ.js";
90
+ import "./chunk-JORONMD3.js";
91
+ import "./chunk-M3IAMIBJ.js";
92
+ import "./chunk-FOFGMP7O.js";
93
+ import "./chunk-K5HARZ7G.js";
94
+ import {
95
+ __name
96
+ } from "./chunk-76FLAFCG.js";
97
+
98
+ // src/schedule/commands/service.ts
99
+ import { randomUUID } from "node:crypto";
100
+ import { existsSync as existsSync5, readFileSync as readFileSync2, realpathSync, rmSync as rmSync4 } from "node:fs";
101
+ import { dirname as dirname3, join as join6 } from "node:path";
102
+ import { fileURLToPath } from "node:url";
103
+
104
+ // src/integrations/notifications/desktop.ts
105
+ import { execFile } from "node:child_process";
106
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
107
+ import { join } from "node:path";
108
+
109
+ // src/integrations/notifications/desktop/freedesktop.ts
110
+ function gvariantString(text) {
111
+ return `'${text.replaceAll("\\", "\\\\").replaceAll("'", "\\'")}'`;
112
+ }
113
+ __name(gvariantString, "gvariantString");
114
+ function notifySendArguments(title, body) {
115
+ return ["--app-name=namzu", "--", title, body];
116
+ }
117
+ __name(notifySendArguments, "notifySendArguments");
118
+ function gdbusArguments(title, body) {
119
+ return [
120
+ "call",
121
+ "--session",
122
+ "--dest",
123
+ "org.freedesktop.Notifications",
124
+ "--object-path",
125
+ "/org/freedesktop/Notifications",
126
+ "--method",
127
+ "org.freedesktop.Notifications.Notify",
128
+ gvariantString("namzu"),
129
+ "0",
130
+ gvariantString(""),
131
+ gvariantString(title),
132
+ gvariantString(body),
133
+ "[]",
134
+ "{}",
135
+ "10000"
136
+ ];
137
+ }
138
+ __name(gdbusArguments, "gdbusArguments");
139
+
140
+ // src/integrations/notifications/desktop/macos.ts
141
+ function osascriptArguments(title, body) {
142
+ return [
143
+ "-e",
144
+ "on run argv",
145
+ "-e",
146
+ "display notification (item 2 of argv) with title (item 1 of argv)",
147
+ "-e",
148
+ "end run",
149
+ title,
150
+ body
151
+ ];
152
+ }
153
+ __name(osascriptArguments, "osascriptArguments");
154
+
155
+ // src/integrations/notifications/desktop/windows-toast.ts
156
+ var TOAST_SCRIPT = [
157
+ "$ErrorActionPreference = 'Stop'",
158
+ "[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null",
159
+ "[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null",
160
+ "$title = [Security.SecurityElement]::Escape([string]$env:NAMZU_NOTIFY_TITLE)",
161
+ "$body = [Security.SecurityElement]::Escape([string]$env:NAMZU_NOTIFY_BODY)",
162
+ "$xml = New-Object Windows.Data.Xml.Dom.XmlDocument",
163
+ `$xml.LoadXml('<toast><visual><binding template="ToastGeneric"><text>' + $title + '</text><text>' + $body + '</text></binding></visual></toast>')`,
164
+ "$app = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\\WindowsPowerShell\\v1.0\\powershell.exe'",
165
+ "[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($app).Show([Windows.UI.Notifications.ToastNotification]::new($xml))"
166
+ ].join("\n");
167
+ function encodedToastScript() {
168
+ return Buffer.from(TOAST_SCRIPT, "utf16le").toString("base64");
169
+ }
170
+ __name(encodedToastScript, "encodedToastScript");
171
+ function toastArguments() {
172
+ return [
173
+ "-NoProfile",
174
+ "-NonInteractive",
175
+ "-ExecutionPolicy",
176
+ "Bypass",
177
+ "-EncodedCommand",
178
+ encodedToastScript()
179
+ ];
180
+ }
181
+ __name(toastArguments, "toastArguments");
182
+ function toastEnvironment(base, title, body, wsl) {
183
+ const env = { ...base, NAMZU_NOTIFY_TITLE: title, NAMZU_NOTIFY_BODY: body };
184
+ if (wsl) {
185
+ const existing = (base.WSLENV ?? "").split(":").filter((v) => v && !v.startsWith("NAMZU_NOTIFY_"));
186
+ env.WSLENV = [...existing, "NAMZU_NOTIFY_TITLE", "NAMZU_NOTIFY_BODY"].join(":");
187
+ }
188
+ return env;
189
+ }
190
+ __name(toastEnvironment, "toastEnvironment");
191
+
192
+ // src/integrations/notifications/desktop.ts
193
+ function readOsRelease() {
194
+ try {
195
+ return readFileSync("/proc/sys/kernel/osrelease", "utf8");
196
+ } catch {
197
+ return void 0;
198
+ }
199
+ }
200
+ __name(readOsRelease, "readOsRelease");
201
+ function whichOnPath(env, exists) {
202
+ return (name) => {
203
+ for (const dir of (env.PATH ?? "").split(":")) {
204
+ if (!dir || dir.startsWith("/mnt/")) continue;
205
+ const candidate = join(dir, name);
206
+ if (exists(candidate)) return candidate;
207
+ }
208
+ return void 0;
209
+ };
210
+ }
211
+ __name(whichOnPath, "whichOnPath");
212
+ var WSL_RUN_DIR = "/run/WSL";
213
+ function listInteropSockets() {
214
+ const sockets = [];
215
+ let names;
216
+ try {
217
+ names = readdirSync(WSL_RUN_DIR);
218
+ } catch {
219
+ return sockets;
220
+ }
221
+ for (const name of names) {
222
+ if (!/^\d+_interop$/.test(name)) continue;
223
+ const path = join(WSL_RUN_DIR, name);
224
+ try {
225
+ const stat = statSync(path);
226
+ if (stat.isSocket()) sockets.push({ path, mtimeMs: stat.mtimeMs });
227
+ } catch {
228
+ }
229
+ }
230
+ return sockets;
231
+ }
232
+ __name(listInteropSockets, "listInteropSockets");
233
+ function findInteropSocket(sockets) {
234
+ const stable = sockets.find((socket) => socket.path === join(WSL_RUN_DIR, "1_interop"));
235
+ if (stable) return stable.path;
236
+ return [...sockets].sort((a, b) => b.mtimeMs - a.mtimeMs)[0]?.path;
237
+ }
238
+ __name(findInteropSocket, "findInteropSocket");
239
+ function selectDesktopBackend(probe = {}) {
240
+ const platform = probe.platform ?? process.platform;
241
+ const env = probe.env ?? process.env;
242
+ const exists = probe.exists ?? existsSync;
243
+ const which = probe.which ?? whichOnPath(env, exists);
244
+ if (platform === "darwin") {
245
+ return {
246
+ kind: "macos",
247
+ detail: "osascript",
248
+ command: "/usr/bin/osascript",
249
+ args: osascriptArguments
250
+ };
251
+ }
252
+ if (platform === "win32") {
253
+ return {
254
+ kind: "windows-toast",
255
+ detail: "powershell.exe",
256
+ command: "powershell.exe",
257
+ args: /* @__PURE__ */ __name(() => toastArguments(), "args"),
258
+ env: /* @__PURE__ */ __name((base, title, body) => toastEnvironment(base, title, body, false), "env")
259
+ };
260
+ }
261
+ const mountRoot = probe.mountRoot ?? readWslMountRoot();
262
+ const wsl = detectWsl(env, { exists, list: /* @__PURE__ */ __name(() => [], "list"), mountRoot });
263
+ const wslKernel = !wsl && /microsoft/i.test((probe.osRelease ?? readOsRelease)() ?? "");
264
+ if (wsl || wslKernel) {
265
+ const enabled = wsl?.interop ?? exists("/proc/sys/fs/binfmt_misc/WSLInterop");
266
+ const socket = enabled ? env.WSL_INTEROP || findInteropSocket((probe.interopSockets ?? listInteropSockets)()) : void 0;
267
+ if (!socket) {
268
+ return {
269
+ kind: "none",
270
+ detail: enabled ? "WSL interop is not available to this process (no WSL_INTEROP and no interop socket under /run/WSL), so Windows notifications cannot be shown" : "WSL interop is disabled ([interop] enabled=false in /etc/wsl.conf), so Windows notifications cannot be shown"
271
+ };
272
+ }
273
+ const powershell = probe.powershell ?? `${wslSystem32(mountRoot)}/WindowsPowerShell/v1.0/powershell.exe`;
274
+ if (!exists(powershell)) return { kind: "none", detail: `${powershell} was not found` };
275
+ const found = env.WSL_INTEROP ? void 0 : socket;
276
+ return {
277
+ kind: "wsl-toast",
278
+ detail: found ? `${powershell} (interop through ${found})` : powershell,
279
+ command: powershell,
280
+ args: /* @__PURE__ */ __name(() => toastArguments(), "args"),
281
+ env: /* @__PURE__ */ __name((base, title, body) => ({
282
+ ...toastEnvironment(base, title, body, true),
283
+ ...found ? { WSL_INTEROP: found } : {}
284
+ }), "env"),
285
+ cwd: `${mountRoot}c`
286
+ };
287
+ }
288
+ const bus = env.DBUS_SESSION_BUS_ADDRESS || (env.XDG_RUNTIME_DIR && exists(join(env.XDG_RUNTIME_DIR, "bus")) ? "runtime-bus" : "");
289
+ if (!bus)
290
+ return { kind: "none", detail: "no desktop session bus (DBUS_SESSION_BUS_ADDRESS is unset)" };
291
+ const notifySend = which("notify-send");
292
+ if (notifySend)
293
+ return {
294
+ kind: "freedesktop",
295
+ detail: notifySend,
296
+ command: notifySend,
297
+ args: notifySendArguments
298
+ };
299
+ const gdbus = which("gdbus");
300
+ if (gdbus) return { kind: "freedesktop", detail: gdbus, command: gdbus, args: gdbusArguments };
301
+ return { kind: "none", detail: "neither notify-send nor gdbus is installed" };
302
+ }
303
+ __name(selectDesktopBackend, "selectDesktopBackend");
304
+ var defaultSpawn = /* @__PURE__ */ __name((command, args, options) => new Promise((resolve2) => {
305
+ execFile(
306
+ command,
307
+ [...args],
308
+ {
309
+ env: options.env,
310
+ ...options.cwd ? { cwd: options.cwd } : {},
311
+ timeout: options.timeoutMs,
312
+ windowsHide: true
313
+ },
314
+ (error, _stdout, stderr) => {
315
+ const code = error ? typeof error.code === "number" ? error.code : 1 : 0;
316
+ resolve2({ code, stderr: String(stderr ?? "").slice(0, 500) });
317
+ }
318
+ );
319
+ }), "defaultSpawn");
320
+ async function sendDesktopNotification(backend, notification, options = {}) {
321
+ if (backend.kind === "none" || !backend.command || !backend.args) {
322
+ return { kind: "unavailable", detail: backend.detail };
323
+ }
324
+ const title = sanitizeLine(notification.title, 64);
325
+ const body = sanitizeLine(notification.body, 200);
326
+ const base = options.env ?? process.env;
327
+ const env = backend.env ? backend.env(base, title, body) : base;
328
+ try {
329
+ const result = await (options.spawn ?? defaultSpawn)(
330
+ backend.command,
331
+ backend.args(title, body),
332
+ {
333
+ env,
334
+ ...backend.cwd ? { cwd: backend.cwd } : {},
335
+ timeoutMs: 15e3
336
+ }
337
+ );
338
+ return result.code === 0 ? { kind: "sent" } : { kind: "failed", detail: result.stderr || `exit ${String(result.code)}` };
339
+ } catch (error) {
340
+ return { kind: "failed", detail: error instanceof Error ? error.message : String(error) };
341
+ }
342
+ }
343
+ __name(sendDesktopNotification, "sendDesktopNotification");
344
+
345
+ // src/schedule/service/detect.ts
346
+ function detectPlatform(options = {}) {
347
+ const platform = options.platform ?? process.platform;
348
+ if (platform === "darwin") return { platform: "launchd" };
349
+ if (platform === "win32") return { platform: "windows-task" };
350
+ if (platform === "linux") {
351
+ if (detectWsl(options.env ?? process.env)) return { platform: "wsl-windows-task" };
352
+ if (options.systemdUser) return { platform: "systemd-user" };
353
+ return {
354
+ platform: null,
355
+ reason: "no systemd user manager answers here; run `namzu schedule daemon` under a supervisor of your own"
356
+ };
357
+ }
358
+ return { platform: null, reason: `${platform} has no supported supervisor` };
359
+ }
360
+ __name(detectPlatform, "detectPlatform");
361
+
362
+ // src/schedule/service/index.ts
363
+ import { mkdirSync as mkdirSync3, rmSync as rmSync3, rmdirSync, writeFileSync as writeFileSync3 } from "node:fs";
364
+ import { userInfo } from "node:os";
365
+ import { isAbsolute, join as join4 } from "node:path";
366
+
367
+ // src/schedule/service/launchd.ts
368
+ import { existsSync as existsSync2, mkdirSync, rmSync, writeFileSync } from "node:fs";
369
+ import { homedir } from "node:os";
370
+ import { dirname, join as join2 } from "node:path";
371
+
372
+ // src/schedule/service/quote.ts
373
+ function systemdWord(text) {
374
+ const escaped = text.replaceAll("\\", "\\\\").replaceAll('"', '\\"').replaceAll("%", "%%").replaceAll("$", "$$$$");
375
+ return `"${escaped}"`;
376
+ }
377
+ __name(systemdWord, "systemdWord");
378
+ function systemdAssignment(key, value) {
379
+ return systemdWord(`${key}=${value}`);
380
+ }
381
+ __name(systemdAssignment, "systemdAssignment");
382
+ function xmlText(text) {
383
+ return text.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&apos;");
384
+ }
385
+ __name(xmlText, "xmlText");
386
+ function windowsArgument(text) {
387
+ if (text !== "" && !/[\s"]/.test(text)) return text;
388
+ let out = '"';
389
+ let slashes = 0;
390
+ for (const ch of text) {
391
+ if (ch === "\\") {
392
+ slashes++;
393
+ continue;
394
+ }
395
+ if (ch === '"') {
396
+ out += `${"\\".repeat(slashes * 2 + 1)}"`;
397
+ } else {
398
+ out += "\\".repeat(slashes) + ch;
399
+ }
400
+ slashes = 0;
401
+ }
402
+ return `${out}${"\\".repeat(slashes * 2)}"`;
403
+ }
404
+ __name(windowsArgument, "windowsArgument");
405
+ var WSL_SAFE_PATH = /^[A-Za-z0-9._/@+-]+$/;
406
+ function checkWslPath(label, path) {
407
+ if (!WSL_SAFE_PATH.test(path)) {
408
+ throw new Error(
409
+ `${label} ${path} contains characters wsl.exe would re-read (only letters, digits and . _ / @ + - are passed through safely); install node and namzu under a plain path, or use --platform systemd-user`
410
+ );
411
+ }
412
+ return path;
413
+ }
414
+ __name(checkWslPath, "checkWslPath");
415
+
416
+ // src/schedule/service/launchd.ts
417
+ function launchdLabel(name) {
418
+ return name === "namzu-scheduler" ? "com.namzu.scheduler" : `com.namzu.${name.replace(/^namzu-/, "")}`;
419
+ }
420
+ __name(launchdLabel, "launchdLabel");
421
+ function launchdPlistPath(label, home = homedir()) {
422
+ return join2(home, "Library", "LaunchAgents", `${label}.plist`);
423
+ }
424
+ __name(launchdPlistPath, "launchdPlistPath");
425
+ function launchdPlist(label, program2) {
426
+ const args = [program2.node, program2.bin, "schedule", "daemon", "--home", program2.namzuHome];
427
+ const log = join2(program2.namzuHome, "schedule", "daemon");
428
+ return [
429
+ '<?xml version="1.0" encoding="UTF-8"?>',
430
+ '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">',
431
+ '<plist version="1.0">',
432
+ "<dict>",
433
+ " <key>Label</key>",
434
+ ` <string>${xmlText(label)}</string>`,
435
+ " <key>ProgramArguments</key>",
436
+ " <array>",
437
+ ...args.map((a) => ` <string>${xmlText(a)}</string>`),
438
+ " </array>",
439
+ " <key>EnvironmentVariables</key>",
440
+ " <dict>",
441
+ " <key>NAMZU_HOME</key>",
442
+ ` <string>${xmlText(program2.namzuHome)}</string>`,
443
+ " </dict>",
444
+ " <key>RunAtLoad</key>",
445
+ " <true/>",
446
+ " <key>KeepAlive</key>",
447
+ " <true/>",
448
+ " <key>ThrottleInterval</key>",
449
+ " <integer>10</integer>",
450
+ " <key>ProcessType</key>",
451
+ " <string>Background</string>",
452
+ " <key>AbandonProcessGroup</key>",
453
+ " <true/>",
454
+ " <key>LimitLoadToSessionType</key>",
455
+ " <string>Aqua</string>",
456
+ " <key>StandardOutPath</key>",
457
+ ` <string>${xmlText(join2(log, "launchd.out.log"))}</string>`,
458
+ " <key>StandardErrorPath</key>",
459
+ ` <string>${xmlText(join2(log, "launchd.err.log"))}</string>`,
460
+ "</dict>",
461
+ "</plist>",
462
+ ""
463
+ ].join("\n");
464
+ }
465
+ __name(launchdPlist, "launchdPlist");
466
+ async function installLaunchd(label, program2, steps, plistPath = launchdPlistPath(label)) {
467
+ mkdirSync(dirname(plistPath), { recursive: true });
468
+ writeFileSync(plistPath, launchdPlist(label, program2), { mode: 420 });
469
+ for (const domain of [`gui/${steps.uid}`, `user/${steps.uid}`]) {
470
+ await steps.run("launchctl", ["bootout", `${domain}/${label}`]);
471
+ const result = await steps.run("launchctl", ["bootstrap", domain, plistPath]);
472
+ if (result.code === 0) return { domain, problems: [] };
473
+ }
474
+ return { domain: `gui/${steps.uid}`, problems: [`launchctl bootstrap failed for ${plistPath}`] };
475
+ }
476
+ __name(installLaunchd, "installLaunchd");
477
+ async function uninstallLaunchd(label, domain, steps, plistPath = launchdPlistPath(label)) {
478
+ await steps.run("launchctl", ["bootout", `${domain}/${label}`]);
479
+ rmSync(plistPath, { force: true });
480
+ const problems = [];
481
+ if (existsSync2(plistPath)) problems.push(`${plistPath} is still there`);
482
+ const printed = await steps.run("launchctl", ["print", `${domain}/${label}`]);
483
+ if (printed.code === 0) problems.push(`${label} is still loaded in ${domain}`);
484
+ return problems;
485
+ }
486
+ __name(uninstallLaunchd, "uninstallLaunchd");
487
+
488
+ // src/schedule/service/systemd.ts
489
+ import { existsSync as existsSync3, mkdirSync as mkdirSync2, rmSync as rmSync2, writeFileSync as writeFileSync2 } from "node:fs";
490
+ import { homedir as homedir2 } from "node:os";
491
+ import { dirname as dirname2, join as join3 } from "node:path";
492
+ function systemdUnitPath(name, env = process.env, home = homedir2()) {
493
+ const config = env.XDG_CONFIG_HOME || join3(home, ".config");
494
+ return join3(config, "systemd", "user", `${name}.service`);
495
+ }
496
+ __name(systemdUnitPath, "systemdUnitPath");
497
+ function systemdUnit(program2) {
498
+ return [
499
+ "[Unit]",
500
+ `Description=namzu scheduler (NAMZU_HOME=${program2.namzuHome.replaceAll("%", "%%")})`,
501
+ "Documentation=https://github.com/cogitave/namzu/blob/main/docs/cli/scheduler-service.md",
502
+ "StartLimitIntervalSec=0",
503
+ "",
504
+ "[Service]",
505
+ "Type=simple",
506
+ `ExecStart=${[program2.node, program2.bin, "schedule", "daemon", "--home", program2.namzuHome].map(systemdWord).join(" ")}`,
507
+ `Environment=${systemdAssignment("NAMZU_HOME", program2.namzuHome)}`,
508
+ "Restart=always",
509
+ "RestartSec=10",
510
+ `SuccessExitStatus=${EXIT_STOP_REQUESTED}`,
511
+ `RestartPreventExitStatus=${EXIT_STOP_REQUESTED}`,
512
+ "KillMode=process",
513
+ "TimeoutStopSec=20",
514
+ "",
515
+ "[Install]",
516
+ "WantedBy=default.target",
517
+ ""
518
+ ].join("\n");
519
+ }
520
+ __name(systemdUnit, "systemdUnit");
521
+ async function systemctl(steps, ...args) {
522
+ return steps.run(steps.systemctl ?? "systemctl", ["--user", ...args]);
523
+ }
524
+ __name(systemctl, "systemctl");
525
+ async function installSystemd(name, program2, steps, unitPath = systemdUnitPath(name)) {
526
+ mkdirSync2(dirname2(unitPath), { recursive: true });
527
+ writeFileSync2(unitPath, systemdUnit(program2), { mode: 420 });
528
+ const problems = [];
529
+ for (const args of [["daemon-reload"], ["enable", "--now", `${name}.service`]]) {
530
+ const result = await systemctl(steps, ...args);
531
+ if (result.code !== 0)
532
+ problems.push(
533
+ `systemctl --user ${args.join(" ")}: ${result.stderr.trim() || `exit ${result.code}`}`
534
+ );
535
+ }
536
+ return problems;
537
+ }
538
+ __name(installSystemd, "installSystemd");
539
+ async function uninstallSystemd(name, steps, unitPath = systemdUnitPath(name)) {
540
+ const problems = [];
541
+ await systemctl(steps, "disable", "--now", `${name}.service`);
542
+ rmSync2(unitPath, { force: true });
543
+ await systemctl(steps, "daemon-reload");
544
+ await systemctl(steps, "reset-failed", `${name}.service`);
545
+ if (existsSync3(unitPath)) problems.push(`${unitPath} is still there`);
546
+ const shown = await systemctl(steps, "show", `${name}.service`, "--property=LoadState");
547
+ if (shown.code === 0 && /LoadState=loaded/.test(shown.stdout))
548
+ problems.push(`${name}.service is still loaded`);
549
+ return problems;
550
+ }
551
+ __name(uninstallSystemd, "uninstallSystemd");
552
+ async function systemdState(name, steps) {
553
+ const result = await systemctl(steps, "is-active", `${name}.service`);
554
+ return result.stdout.trim() || result.stderr.trim() || "unknown";
555
+ }
556
+ __name(systemdState, "systemdState");
557
+ async function startSystemd(name, steps) {
558
+ const result = await systemctl(steps, "enable", "--now", `${name}.service`);
559
+ return result.code === 0 ? [] : [result.stderr.trim() || `exit ${result.code}`];
560
+ }
561
+ __name(startSystemd, "startSystemd");
562
+ async function stopSystemd(name, steps) {
563
+ const result = await systemctl(steps, "disable", "--now", `${name}.service`);
564
+ return result.code === 0 ? [] : [result.stderr.trim() || `exit ${result.code}`];
565
+ }
566
+ __name(stopSystemd, "stopSystemd");
567
+ async function systemdUserAvailable(steps) {
568
+ if (!existsSync3("/run/systemd/system")) return false;
569
+ const result = await systemctl(steps, "show-environment");
570
+ return result.code === 0;
571
+ }
572
+ __name(systemdUserAvailable, "systemdUserAvailable");
573
+
574
+ // src/schedule/service/windows-task.ts
575
+ function taskXml(task) {
576
+ const start = task.startBoundary ?? "2026-01-01T00:00:00";
577
+ return [
578
+ '<?xml version="1.0" encoding="UTF-16"?>',
579
+ '<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">',
580
+ " <RegistrationInfo>",
581
+ ` <Description>${xmlText(task.description)}</Description>`,
582
+ ` <Author>${xmlText(task.userId)}</Author>`,
583
+ " </RegistrationInfo>",
584
+ " <Triggers>",
585
+ " <LogonTrigger>",
586
+ " <Enabled>true</Enabled>",
587
+ ` <UserId>${xmlText(task.userId)}</UserId>`,
588
+ " </LogonTrigger>",
589
+ " <TimeTrigger>",
590
+ " <Repetition>",
591
+ " <Interval>PT5M</Interval>",
592
+ " <StopAtDurationEnd>false</StopAtDurationEnd>",
593
+ " </Repetition>",
594
+ ` <StartBoundary>${xmlText(start)}</StartBoundary>`,
595
+ " <Enabled>true</Enabled>",
596
+ " </TimeTrigger>",
597
+ " </Triggers>",
598
+ " <Principals>",
599
+ ' <Principal id="Author">',
600
+ ` <UserId>${xmlText(task.userId)}</UserId>`,
601
+ " <LogonType>InteractiveToken</LogonType>",
602
+ " <RunLevel>LeastPrivilege</RunLevel>",
603
+ " </Principal>",
604
+ " </Principals>",
605
+ " <Settings>",
606
+ " <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>",
607
+ " <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>",
608
+ " <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>",
609
+ " <AllowHardTerminate>true</AllowHardTerminate>",
610
+ " <StartWhenAvailable>true</StartWhenAvailable>",
611
+ " <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>",
612
+ " <IdleSettings>",
613
+ " <StopOnIdleEnd>false</StopOnIdleEnd>",
614
+ " <RestartOnIdle>false</RestartOnIdle>",
615
+ " </IdleSettings>",
616
+ " <AllowStartOnDemand>true</AllowStartOnDemand>",
617
+ " <Enabled>true</Enabled>",
618
+ " <Hidden>false</Hidden>",
619
+ " <RunOnlyIfIdle>false</RunOnlyIfIdle>",
620
+ " <WakeToRun>false</WakeToRun>",
621
+ " <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>",
622
+ " <Priority>7</Priority>",
623
+ " </Settings>",
624
+ ' <Actions Context="Author">',
625
+ " <Exec>",
626
+ ` <Command>${xmlText(task.command)}</Command>`,
627
+ ` <Arguments>${xmlText(task.args.map(windowsArgument).join(" "))}</Arguments>`,
628
+ " </Exec>",
629
+ " </Actions>",
630
+ "</Task>",
631
+ ""
632
+ ].join("\r\n");
633
+ }
634
+ __name(taskXml, "taskXml");
635
+ function taskXmlBytes(xml) {
636
+ return Buffer.concat([Buffer.from([255, 254]), Buffer.from(xml, "utf16le")]);
637
+ }
638
+ __name(taskXmlBytes, "taskXmlBytes");
639
+ function taskPath(name) {
640
+ return `\\namzu\\${name}`;
641
+ }
642
+ __name(taskPath, "taskPath");
643
+ var REMOVE_EMPTY_TASK_FOLDER_SCRIPT = [
644
+ "$ErrorActionPreference = 'Stop'",
645
+ "$s = New-Object -ComObject Schedule.Service",
646
+ "$s.Connect()",
647
+ "try { $f = $s.GetFolder('\\namzu') } catch { exit 0 }",
648
+ "if ($f.GetTasks(1).Count -gt 0 -or $f.GetFolders(0).Count -gt 0) { exit 0 }",
649
+ "try { $s.GetFolder('\\').DeleteFolder('namzu', 0) } catch { exit 1 }",
650
+ "exit 0"
651
+ ].join("; ");
652
+ function removeEmptyTaskFolderArguments() {
653
+ return [
654
+ "-NoProfile",
655
+ "-NonInteractive",
656
+ "-ExecutionPolicy",
657
+ "Bypass",
658
+ "-EncodedCommand",
659
+ Buffer.from(REMOVE_EMPTY_TASK_FOLDER_SCRIPT, "utf16le").toString("base64")
660
+ ];
661
+ }
662
+ __name(removeEmptyTaskFolderArguments, "removeEmptyTaskFolderArguments");
663
+ var TASK_RESULTS = /* @__PURE__ */ new Map([
664
+ [0, "succeeded"],
665
+ [267008, "ready to run"],
666
+ [267009, "running"],
667
+ [267010, "disabled"],
668
+ [267011, "not run yet"],
669
+ [267012, "no more runs scheduled"],
670
+ [267014, "ended by a person or a stop"],
671
+ [267015, "no trigger is enabled"],
672
+ [2147750687, "an instance was already running, so a new one was not started"],
673
+ // IgnoreNew answers the five-minute re-check this way while the
674
+ // scheduler runs: the expected result, not a failure.
675
+ [
676
+ 2147946720,
677
+ "an instance was already running, so a new one was not started; expected, since the task checks every five minutes"
678
+ ],
679
+ [2147750694, "the task is disabled"],
680
+ [2147942402, "the program was not found"],
681
+ [2147942405, "access was denied"],
682
+ [2147942667, "the start folder is not valid"],
683
+ [2147943645, "the user was not logged on"],
684
+ [3221225786, "ended when its console closed"],
685
+ [1073807364, "ended by a sign-out or shutdown"]
686
+ ]);
687
+ var DAEMON_EXITS = /* @__PURE__ */ new Map([
688
+ [1, "the program exited with an error; see namzu schedule logs"],
689
+ [75, "the scheduler exited: another one owns this NAMZU_HOME"],
690
+ [EXIT_STOP_REQUESTED, "the scheduler exited: namzu schedule stop asked it to"]
691
+ ]);
692
+ function describeTaskResult(raw) {
693
+ const text = raw.trim();
694
+ let value;
695
+ if (/^0x[0-9a-f]{1,8}$/i.test(text)) value = Number.parseInt(text.slice(2), 16);
696
+ else if (/^-?\d{1,10}$/.test(text)) value = Number(text);
697
+ else return text;
698
+ const code = value >>> 0;
699
+ const hex = `0x${code.toString(16).toUpperCase()}`;
700
+ const number = code < 256 || /^0x/i.test(text) ? text : `${text}, ${hex}`;
701
+ const words = TASK_RESULTS.get(code) ?? DAEMON_EXITS.get(code) ?? (code < 256 ? "the program exited" : void 0);
702
+ if (words !== void 0) return `${words} (${number})`;
703
+ return number === text ? text : `${text} (${hex})`;
704
+ }
705
+ __name(describeTaskResult, "describeTaskResult");
706
+ function parseTaskQuery(output) {
707
+ const field = /* @__PURE__ */ __name((label) => {
708
+ for (const line of output.split(/\r?\n/)) {
709
+ const match = /^([^:]+):\s*(.*)$/.exec(line);
710
+ if (match && label.test((match[1] ?? "").trim())) return (match[2] ?? "").trim();
711
+ }
712
+ return void 0;
713
+ }, "field");
714
+ const status = field(/^Status$/i);
715
+ const state = field(/^Scheduled Task State$/i);
716
+ const lastResult = field(/^Last Result$/i);
717
+ return {
718
+ ...status !== void 0 ? { status } : {},
719
+ ...state !== void 0 ? { state } : {},
720
+ ...lastResult !== void 0 ? { lastResult } : {}
721
+ };
722
+ }
723
+ __name(parseTaskQuery, "parseTaskQuery");
724
+
725
+ // src/schedule/service/wsl.ts
726
+ import { existsSync as existsSync4 } from "node:fs";
727
+ var DEFAULT_SYSTEM32 = wslSystem32();
728
+ function windowsTools(system32 = wslSystem32(readWslMountRoot())) {
729
+ const systemRoot = system32.replace(/\/System32$/i, "");
730
+ const drive = systemRoot.replace(/\/Windows$/i, "");
731
+ return {
732
+ mountRoot: drive.replace(/[^/]+$/, ""),
733
+ drive,
734
+ systemRoot,
735
+ cmd: `${system32}/cmd.exe`,
736
+ schtasks: `${system32}/schtasks.exe`,
737
+ powershell: `${system32}/WindowsPowerShell/v1.0/powershell.exe`,
738
+ whoami: `${system32}/whoami.exe`,
739
+ conhost: `${system32}/conhost.exe`,
740
+ wsl: `${system32}/wsl.exe`
741
+ };
742
+ }
743
+ __name(windowsTools, "windowsTools");
744
+ async function probeInterop(run, tools, env = process.env) {
745
+ if (!existsSync4(tools.cmd))
746
+ return { ok: false, reason: `${tools.cmd} was not found (is C: mounted at ${tools.drive}?)` };
747
+ if (!env.WSL_INTEROP && !existsSync4("/proc/sys/fs/binfmt_misc/WSLInterop")) {
748
+ return {
749
+ ok: false,
750
+ reason: "WSL interop is disabled ([interop] enabled=false in /etc/wsl.conf)"
751
+ };
752
+ }
753
+ const result = await run(tools.cmd, ["/d", "/c", "ver"], { timeoutMs: 2e4, cwd: tools.drive });
754
+ return result.code === 0 ? { ok: true } : {
755
+ ok: false,
756
+ reason: `a Windows program did not start through interop (${result.stderr.trim() || `exit ${result.code}`})`
757
+ };
758
+ }
759
+ __name(probeInterop, "probeInterop");
760
+ async function windowsUser(run, tools) {
761
+ const result = await run(tools.whoami, [], { timeoutMs: 2e4, cwd: tools.drive });
762
+ const user = result.stdout.trim();
763
+ if (result.code !== 0 || !/^[^\\\s]+\\[^\\\s]+$/.test(user)) {
764
+ throw new Error(
765
+ `could not read the Windows user from whoami.exe (${result.stderr.trim() || user || `exit ${result.code}`})`
766
+ );
767
+ }
768
+ return user;
769
+ }
770
+ __name(windowsUser, "windowsUser");
771
+ async function toWindowsPath(run, path) {
772
+ const result = await run("wslpath", ["-w", path], { timeoutMs: 1e4 });
773
+ if (result.code !== 0 || !result.stdout.trim()) throw new Error(`wslpath -w ${path} failed`);
774
+ return result.stdout.trim();
775
+ }
776
+ __name(toWindowsPath, "toWindowsPath");
777
+ function isEphemeralBin(bin) {
778
+ return /[\\/]_npx[\\/]/.test(bin) || /[\\/]\.npm[\\/]_cacache[\\/]/.test(bin);
779
+ }
780
+ __name(isEphemeralBin, "isEphemeralBin");
781
+ function wslTaskName(name, distro) {
782
+ return `${name}-wsl-${distro.replace(/[^A-Za-z0-9._-]/g, "_")}`;
783
+ }
784
+ __name(wslTaskName, "wslTaskName");
785
+ function wslTaskDefinition(options) {
786
+ checkWslPath("node", options.node);
787
+ checkWslPath("the namzu CLI", options.bin);
788
+ checkWslPath("NAMZU_HOME", options.namzuHome);
789
+ if (!/^[A-Za-z0-9._-]+$/.test(options.distro))
790
+ throw new Error(`unusual WSL distro name: ${options.distro}`);
791
+ if (!/^[a-z_][a-z0-9_-]*\$?$/i.test(options.linuxUser))
792
+ throw new Error(`unusual Linux user name: ${options.linuxUser}`);
793
+ const root = options.systemRoot ?? "C:\\Windows";
794
+ return {
795
+ userId: options.userId,
796
+ description: `namzu scheduler for NAMZU_HOME=${options.namzuHome} in WSL ${options.distro}`,
797
+ command: `${root}\\System32\\conhost.exe`,
798
+ args: [
799
+ "--headless",
800
+ `${root}\\System32\\wsl.exe`,
801
+ "-d",
802
+ options.distro,
803
+ "-u",
804
+ options.linuxUser,
805
+ "--cd",
806
+ "/",
807
+ "--exec",
808
+ "/usr/bin/env",
809
+ `NAMZU_HOME=${options.namzuHome}`,
810
+ options.node,
811
+ options.bin,
812
+ "schedule",
813
+ "daemon",
814
+ "--home",
815
+ options.namzuHome
816
+ ]
817
+ };
818
+ }
819
+ __name(wslTaskDefinition, "wslTaskDefinition");
820
+
821
+ // src/schedule/service/index.ts
822
+ function windowsCwd(ctx, manifest) {
823
+ return manifest.platform === "wsl-windows-task" ? { cwd: (ctx.tools ?? windowsTools()).drive } : {};
824
+ }
825
+ __name(windowsCwd, "windowsCwd");
826
+ var ServiceRefusal = class extends Error {
827
+ static {
828
+ __name(this, "ServiceRefusal");
829
+ }
830
+ name = "ServiceRefusal";
831
+ };
832
+ function refuseUnsafeProgram(program2) {
833
+ if (!isAbsolute(program2.node) && !/^[A-Za-z]:\\/.test(program2.node)) {
834
+ throw new ServiceRefusal(`node must be an absolute path, got ${program2.node}`);
835
+ }
836
+ if (isEphemeralBin(program2.bin)) {
837
+ throw new ServiceRefusal(
838
+ `namzu is running from the npx cache (${program2.bin}), which is not kept; install it (npm i -g @namzu/cli) and run schedule install from that`
839
+ );
840
+ }
841
+ }
842
+ __name(refuseUnsafeProgram, "refuseUnsafeProgram");
843
+ async function lingerEnabled(run, user) {
844
+ const result = await run("loginctl", ["show-user", user, "-p", "Linger"]);
845
+ return /Linger=yes/.test(result.stdout);
846
+ }
847
+ __name(lingerEnabled, "lingerEnabled");
848
+ async function installService(ctx, request) {
849
+ refuseUnsafeProgram(request.program);
850
+ const { paths, run } = ctx;
851
+ const notes = [];
852
+ const base = {
853
+ v: 1,
854
+ kind: "schedule-service",
855
+ platform: request.platform,
856
+ name: request.name,
857
+ installedAt: (/* @__PURE__ */ new Date()).toISOString(),
858
+ cliVersion: ctx.version,
859
+ nodePath: request.program.node,
860
+ binPath: request.program.bin,
861
+ namzuHome: request.program.namzuHome
862
+ };
863
+ switch (request.platform) {
864
+ case "systemd-user": {
865
+ const unit = systemdUnitPath(request.name, ctx.env);
866
+ const problems = await installSystemd(request.name, request.program, { run }, unit);
867
+ let enabledLinger = false;
868
+ if (request.atBoot) {
869
+ const user = userInfo().username;
870
+ if (!await lingerEnabled(run, user)) {
871
+ const result = await run("loginctl", ["enable-linger", user]);
872
+ if (result.code === 0) enabledLinger = true;
873
+ else
874
+ problems.push(
875
+ `loginctl enable-linger ${user}: ${result.stderr.trim() || `exit ${result.code}`}`
876
+ );
877
+ }
878
+ } else {
879
+ notes.push(
880
+ "The daemon starts when you log in; --at-boot keeps it running without a login (linger)."
881
+ );
882
+ }
883
+ const manifest = {
884
+ ...base,
885
+ enabledLinger,
886
+ artifacts: [
887
+ { type: "file", path: unit },
888
+ { type: "systemd-unit", name: `${request.name}.service` }
889
+ ]
890
+ };
891
+ writeManifest(paths, manifest);
892
+ return { manifest, problems, notes };
893
+ }
894
+ case "launchd": {
895
+ const label = launchdLabel(request.name);
896
+ const plist = launchdPlistPath(label);
897
+ const { domain, problems } = await installLaunchd(
898
+ label,
899
+ request.program,
900
+ {
901
+ run,
902
+ uid: process.getuid?.() ?? 501
903
+ },
904
+ plist
905
+ );
906
+ const manifest = {
907
+ ...base,
908
+ artifacts: [
909
+ { type: "file", path: plist },
910
+ { type: "launchd-agent", label, domain }
911
+ ]
912
+ };
913
+ writeManifest(paths, manifest);
914
+ notes.push("A LaunchAgent starts at login, not at boot.");
915
+ return { manifest, problems, notes };
916
+ }
917
+ case "windows-task": {
918
+ const root = ctx.env.SystemRoot ?? "C:\\Windows";
919
+ const schtasks = `${root}\\System32\\schtasks.exe`;
920
+ const who = await run(`${root}\\System32\\whoami.exe`, []);
921
+ const userId = who.stdout.trim();
922
+ if (who.code !== 0 || !userId.includes("\\"))
923
+ throw new ServiceRefusal("could not read the Windows user from whoami.exe");
924
+ const path = taskPath(request.name);
925
+ const xml = taskXml({
926
+ userId,
927
+ description: `namzu scheduler for NAMZU_HOME=${request.program.namzuHome}`,
928
+ command: `${root}\\System32\\conhost.exe`,
929
+ args: [
930
+ "--headless",
931
+ request.program.node,
932
+ request.program.bin,
933
+ "schedule",
934
+ "daemon",
935
+ "--home",
936
+ request.program.namzuHome
937
+ ]
938
+ });
939
+ const file = join4(paths.daemon, `${request.name}.task.xml`);
940
+ mkdirSync3(paths.daemon, { recursive: true });
941
+ writeFileSync3(file, taskXmlBytes(xml));
942
+ const problems = [];
943
+ try {
944
+ const created = await run(schtasks, ["/Create", "/TN", path, "/XML", file, "/F"]);
945
+ if (created.code !== 0)
946
+ problems.push(`schtasks /Create: ${created.stderr.trim() || created.stdout.trim()}`);
947
+ else await run(schtasks, ["/Run", "/TN", path]);
948
+ } finally {
949
+ rmSync3(file, { force: true });
950
+ }
951
+ const manifest = {
952
+ ...base,
953
+ artifacts: [{ type: "windows-task", taskPath: path }],
954
+ windows: { taskPath: path, schtasks }
955
+ };
956
+ writeManifest(paths, manifest);
957
+ notes.push("The task starts at logon; jobs run while you are logged on.");
958
+ return { manifest, problems, notes };
959
+ }
960
+ case "wsl-windows-task": {
961
+ const tools = ctx.tools ?? windowsTools();
962
+ const interop = await probeInterop(run, tools, ctx.env);
963
+ if (!interop.ok)
964
+ throw new ServiceRefusal(
965
+ `WSL interop is not usable: ${interop.reason}. Use --platform systemd-user instead.`
966
+ );
967
+ const distro = ctx.env.WSL_DISTRO_NAME;
968
+ if (!distro)
969
+ throw new ServiceRefusal("WSL_DISTRO_NAME is not set; cannot name the distro for wsl.exe");
970
+ const userId = await windowsUser(run, tools);
971
+ const definition = wslTaskDefinition({
972
+ userId,
973
+ distro,
974
+ linuxUser: userInfo().username,
975
+ node: request.program.node,
976
+ bin: request.program.bin,
977
+ namzuHome: request.program.namzuHome
978
+ });
979
+ const name = wslTaskName(request.name, distro);
980
+ const path = taskPath(name);
981
+ const localAppData = (await run(tools.cmd, ["/d", "/c", "echo", "%LOCALAPPDATA%"], { cwd: tools.drive })).stdout.trim();
982
+ if (!/^[A-Za-z]:\\/.test(localAppData))
983
+ throw new ServiceRefusal("could not resolve %LOCALAPPDATA% through interop");
984
+ const linuxDir = (await run("wslpath", ["-u", `${localAppData}\\namzu`])).stdout.trim();
985
+ if (!linuxDir.startsWith(tools.mountRoot))
986
+ throw new ServiceRefusal(`could not map ${localAppData} into WSL`);
987
+ mkdirSync3(linuxDir, { recursive: true });
988
+ const linuxFile = join4(linuxDir, `${name}.xml`);
989
+ writeFileSync3(linuxFile, taskXmlBytes(taskXml(definition)));
990
+ const problems = [];
991
+ try {
992
+ const windowsFile = await toWindowsPath(run, linuxFile);
993
+ const created = await run(
994
+ tools.schtasks,
995
+ ["/Create", "/TN", path, "/XML", windowsFile, "/F"],
996
+ { cwd: tools.drive }
997
+ );
998
+ if (created.code !== 0)
999
+ problems.push(`schtasks.exe /Create: ${created.stderr.trim() || created.stdout.trim()}`);
1000
+ else {
1001
+ const started = await run(tools.schtasks, ["/Run", "/TN", path], { cwd: tools.drive });
1002
+ if (started.code !== 0)
1003
+ problems.push(`schtasks.exe /Run: ${started.stderr.trim() || started.stdout.trim()}`);
1004
+ }
1005
+ } finally {
1006
+ rmSync3(linuxFile, { force: true });
1007
+ try {
1008
+ rmdirSync(linuxDir);
1009
+ } catch {
1010
+ }
1011
+ }
1012
+ const manifest = {
1013
+ ...base,
1014
+ name,
1015
+ artifacts: [{ type: "windows-task", taskPath: path }],
1016
+ windows: {
1017
+ taskPath: path,
1018
+ schtasks: tools.schtasks,
1019
+ powershell: tools.powershell,
1020
+ distro,
1021
+ user: userId
1022
+ }
1023
+ };
1024
+ writeManifest(paths, manifest);
1025
+ notes.push(
1026
+ "Windows Task Scheduler starts the daemon in this distro at logon and re-checks it every 5 minutes; jobs run while you are logged on to Windows."
1027
+ );
1028
+ return { manifest, problems, notes };
1029
+ }
1030
+ }
1031
+ }
1032
+ __name(installService, "installService");
1033
+ async function removeArtifact(ctx, manifest, artifact) {
1034
+ switch (artifact.type) {
1035
+ case "file":
1036
+ rmSync3(artifact.path, { force: true });
1037
+ return [];
1038
+ case "systemd-unit": {
1039
+ const unitFile = manifest.artifacts.find((a) => a.type === "file");
1040
+ return uninstallSystemd(
1041
+ artifact.name.replace(/\.service$/, ""),
1042
+ { run: ctx.run },
1043
+ unitFile?.type === "file" ? unitFile.path : systemdUnitPath(manifest.name, ctx.env)
1044
+ );
1045
+ }
1046
+ case "launchd-agent":
1047
+ return uninstallLaunchd(artifact.label, artifact.domain, {
1048
+ run: ctx.run,
1049
+ uid: process.getuid?.() ?? 501
1050
+ });
1051
+ case "windows-task": {
1052
+ const schtasks = manifest.windows?.schtasks ?? "schtasks.exe";
1053
+ const cwd = windowsCwd(ctx, manifest);
1054
+ await ctx.run(schtasks, ["/End", "/TN", artifact.taskPath], cwd);
1055
+ await ctx.run(schtasks, ["/Delete", "/TN", artifact.taskPath, "/F"], cwd);
1056
+ const queried = await ctx.run(schtasks, ["/Query", "/TN", artifact.taskPath], cwd);
1057
+ if (queried.code === 0) return [`task ${artifact.taskPath} is still registered`];
1058
+ const powershell = manifest.windows?.powershell ?? (manifest.platform === "wsl-windows-task" ? (ctx.tools ?? windowsTools()).powershell : `${ctx.env.SystemRoot ?? "C:\\Windows"}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`);
1059
+ const folder = await ctx.run(powershell, removeEmptyTaskFolderArguments(), cwd);
1060
+ return folder.code === 0 ? [] : ["the empty Task Scheduler folder \\namzu is still there; delete it in Task Scheduler"];
1061
+ }
1062
+ }
1063
+ }
1064
+ __name(removeArtifact, "removeArtifact");
1065
+ async function uninstallService(ctx) {
1066
+ const manifest = readManifest(ctx.paths);
1067
+ if (!manifest) return { problems: [] };
1068
+ const problems = [];
1069
+ const ordered = [...manifest.artifacts].sort(
1070
+ (a, b) => (a.type === "file" ? 1 : 0) - (b.type === "file" ? 1 : 0)
1071
+ );
1072
+ for (const artifact of ordered) problems.push(...await removeArtifact(ctx, manifest, artifact));
1073
+ if (manifest.enabledLinger) {
1074
+ const result = await ctx.run("loginctl", ["disable-linger", userInfo().username]);
1075
+ if (result.code !== 0) problems.push("loginctl disable-linger failed (install had enabled it)");
1076
+ }
1077
+ if (problems.length === 0) removeManifest(ctx.paths);
1078
+ return { problems, manifest };
1079
+ }
1080
+ __name(uninstallService, "uninstallService");
1081
+ async function serviceState(ctx, manifest) {
1082
+ switch (manifest.platform) {
1083
+ case "systemd-user":
1084
+ return `systemd: ${await systemdState(manifest.name, { run: ctx.run })}`;
1085
+ case "launchd": {
1086
+ const agent = manifest.artifacts.find((a) => a.type === "launchd-agent");
1087
+ if (agent?.type !== "launchd-agent") return "launchd: unknown";
1088
+ const printed = await ctx.run("launchctl", ["print", `${agent.domain}/${agent.label}`]);
1089
+ return printed.code === 0 ? `launchd: loaded (${/state = (\w+)/.exec(printed.stdout)?.[1] ?? "unknown"})` : "launchd: not loaded";
1090
+ }
1091
+ case "windows-task":
1092
+ case "wsl-windows-task": {
1093
+ const schtasks = manifest.windows?.schtasks ?? "schtasks.exe";
1094
+ const cwd = windowsCwd(ctx, manifest);
1095
+ const queried = await ctx.run(
1096
+ schtasks,
1097
+ ["/Query", "/TN", manifest.windows?.taskPath ?? "", "/FO", "LIST", "/V"],
1098
+ cwd
1099
+ );
1100
+ if (queried.code !== 0) return "Task Scheduler: task not found";
1101
+ const fields = parseTaskQuery(queried.stdout);
1102
+ return `Task Scheduler: ${fields.status ?? "unknown"}${fields.state ? `, ${fields.state.toLowerCase()}` : ""}${fields.lastResult ? `, last result: ${describeTaskResult(fields.lastResult)}` : ""}`;
1103
+ }
1104
+ }
1105
+ }
1106
+ __name(serviceState, "serviceState");
1107
+ async function startService(ctx, manifest) {
1108
+ switch (manifest.platform) {
1109
+ case "systemd-user":
1110
+ return startSystemd(manifest.name, { run: ctx.run });
1111
+ case "launchd": {
1112
+ const agent = manifest.artifacts.find((a) => a.type === "launchd-agent");
1113
+ if (agent?.type !== "launchd-agent") return ["no launchd agent in the manifest"];
1114
+ const plist = manifest.artifacts.find((a) => a.type === "file");
1115
+ await ctx.run("launchctl", ["enable", `${agent.domain}/${agent.label}`]);
1116
+ const booted = await ctx.run("launchctl", [
1117
+ "bootstrap",
1118
+ agent.domain,
1119
+ plist?.type === "file" ? plist.path : ""
1120
+ ]);
1121
+ if (booted.code === 0) return [];
1122
+ const kicked = await ctx.run("launchctl", ["kickstart", `${agent.domain}/${agent.label}`]);
1123
+ return kicked.code === 0 ? [] : [kicked.stderr.trim() || "launchctl kickstart failed"];
1124
+ }
1125
+ case "windows-task":
1126
+ case "wsl-windows-task": {
1127
+ const schtasks = manifest.windows?.schtasks ?? "schtasks.exe";
1128
+ const cwd = windowsCwd(ctx, manifest);
1129
+ const task = manifest.windows?.taskPath ?? "";
1130
+ const enabled = await ctx.run(schtasks, ["/Change", "/TN", task, "/ENABLE"], cwd);
1131
+ if (enabled.code !== 0) return [enabled.stderr.trim() || "schtasks /Change /ENABLE failed"];
1132
+ const ran = await ctx.run(schtasks, ["/Run", "/TN", task], cwd);
1133
+ return ran.code === 0 ? [] : [ran.stderr.trim() || "schtasks /Run failed"];
1134
+ }
1135
+ }
1136
+ }
1137
+ __name(startService, "startService");
1138
+ async function stopService(ctx, manifest) {
1139
+ switch (manifest.platform) {
1140
+ case "systemd-user":
1141
+ return stopSystemd(manifest.name, { run: ctx.run });
1142
+ case "launchd": {
1143
+ const agent = manifest.artifacts.find((a) => a.type === "launchd-agent");
1144
+ if (agent?.type !== "launchd-agent") return ["no launchd agent in the manifest"];
1145
+ const disabled = await ctx.run("launchctl", ["disable", `${agent.domain}/${agent.label}`]);
1146
+ const out = await ctx.run("launchctl", ["bootout", `${agent.domain}/${agent.label}`]);
1147
+ if (disabled.code !== 0) return [disabled.stderr.trim() || "launchctl disable failed"];
1148
+ return out.code === 0 ? [] : [out.stderr.trim() || "launchctl bootout failed"];
1149
+ }
1150
+ case "windows-task":
1151
+ case "wsl-windows-task": {
1152
+ const schtasks = manifest.windows?.schtasks ?? "schtasks.exe";
1153
+ const cwd = windowsCwd(ctx, manifest);
1154
+ const task = manifest.windows?.taskPath ?? "";
1155
+ const disabled = await ctx.run(schtasks, ["/Change", "/TN", task, "/DISABLE"], cwd);
1156
+ await ctx.run(schtasks, ["/End", "/TN", task], cwd);
1157
+ return disabled.code === 0 ? [] : [disabled.stderr.trim() || "schtasks /Change /DISABLE failed"];
1158
+ }
1159
+ }
1160
+ }
1161
+ __name(stopService, "stopService");
1162
+
1163
+ // src/schedule/service/names.ts
1164
+ import { createHash } from "node:crypto";
1165
+ import { homedir as homedir3 } from "node:os";
1166
+ import { join as join5, resolve } from "node:path";
1167
+ var SERVICE_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]{0,62}$/;
1168
+ function defaultServiceName(namzuHome, osHome = homedir3()) {
1169
+ if (resolve(namzuHome) === resolve(join5(osHome, ".namzu"))) return "namzu-scheduler";
1170
+ const h8 = createHash("sha256").update(resolve(namzuHome)).digest("hex").slice(0, 8);
1171
+ return `namzu-scheduler-${h8}`;
1172
+ }
1173
+ __name(defaultServiceName, "defaultServiceName");
1174
+ function checkServiceName(name) {
1175
+ if (!SERVICE_NAME.test(name)) {
1176
+ throw new Error(
1177
+ `"${name}" is not a service name: letters, digits, dot, dash and underscore only`
1178
+ );
1179
+ }
1180
+ return name;
1181
+ }
1182
+ __name(checkServiceName, "checkServiceName");
1183
+
1184
+ // src/schedule/service/runner.ts
1185
+ import { execFile as execFile2 } from "node:child_process";
1186
+ var runCommand = /* @__PURE__ */ __name((command, args, options = {}) => new Promise((resolve2) => {
1187
+ execFile2(
1188
+ command,
1189
+ [...args],
1190
+ {
1191
+ timeout: options.timeoutMs ?? 3e4,
1192
+ windowsHide: true,
1193
+ maxBuffer: 4 * 1024 * 1024,
1194
+ ...options.cwd ? { cwd: options.cwd } : {},
1195
+ ...options.env ? { env: options.env } : {},
1196
+ encoding: "buffer"
1197
+ },
1198
+ (error, stdout, stderr) => {
1199
+ const code = error ? typeof error.code === "number" ? error.code : 127 : 0;
1200
+ resolve2({ code, stdout: decode(stdout), stderr: decode(stderr) });
1201
+ }
1202
+ );
1203
+ }), "runCommand");
1204
+ function decode(buffer) {
1205
+ if (typeof buffer === "string") return buffer;
1206
+ if (buffer.length >= 2 && buffer[0] === 255 && buffer[1] === 254)
1207
+ return buffer.subarray(2).toString("utf16le");
1208
+ if (buffer.length >= 4 && buffer[1] === 0 && buffer[3] === 0) return buffer.toString("utf16le");
1209
+ return buffer.toString("utf8");
1210
+ }
1211
+ __name(decode, "decode");
1212
+
1213
+ // src/schedule/commands/service.ts
1214
+ var PLATFORMS = [
1215
+ "auto",
1216
+ "systemd-user",
1217
+ "launchd",
1218
+ "windows-task",
1219
+ "wsl-windows-task"
1220
+ ];
1221
+ function installedBin() {
1222
+ const here = dirname3(fileURLToPath(new URL("../", import.meta.url).href + "schedule/commands/service.js"));
1223
+ const candidate = join6(here, "..", "..", "bin.js");
1224
+ try {
1225
+ return realpathSync(candidate);
1226
+ } catch {
1227
+ return realpathSync(process.argv[1] ?? candidate);
1228
+ }
1229
+ }
1230
+ __name(installedBin, "installedBin");
1231
+ function program(paths) {
1232
+ return { node: realpathSync(process.execPath), bin: installedBin(), namzuHome: paths.home };
1233
+ }
1234
+ __name(program, "program");
1235
+ async function installCommand(ctx, argv) {
1236
+ const args = parseArgs(argv, ["home", "platform", "name", "at-boot!", "dry-run!"]);
1237
+ const platformFlag = flag(args, "platform") ?? "auto";
1238
+ if (args.unknown.length > 0 || !PLATFORMS.includes(platformFlag)) {
1239
+ ctx.formatter.error({
1240
+ message: `usage: namzu schedule install [--platform ${PLATFORMS.join("|")}] [--name <n>] [--at-boot] [--dry-run]`
1241
+ });
1242
+ return EXIT_USAGE;
1243
+ }
1244
+ const paths = pathsFor(args);
1245
+ let platform;
1246
+ if (platformFlag === "auto") {
1247
+ const detected = detectPlatform({
1248
+ systemdUser: await systemdUserAvailable({ run: runCommand })
1249
+ });
1250
+ if (!detected.platform) {
1251
+ ctx.formatter.error({ message: detected.reason });
1252
+ return EXIT_UNAVAILABLE;
1253
+ }
1254
+ platform = detected.platform;
1255
+ } else platform = platformFlag;
1256
+ const name = checkServiceName(flag(args, "name") ?? defaultServiceName(paths.home));
1257
+ const prog = program(paths);
1258
+ if (has(args, "dry-run")) {
1259
+ let text;
1260
+ switch (platform) {
1261
+ case "systemd-user":
1262
+ text = systemdUnit(prog);
1263
+ break;
1264
+ case "launchd":
1265
+ text = launchdPlist(launchdLabel(name), prog);
1266
+ break;
1267
+ case "windows-task":
1268
+ text = taskXml({
1269
+ userId: "DOMAIN\\user",
1270
+ description: "namzu scheduler",
1271
+ command: "C:\\Windows\\System32\\conhost.exe",
1272
+ args: ["--headless", prog.node, prog.bin, "schedule", "daemon", "--home", prog.namzuHome]
1273
+ });
1274
+ break;
1275
+ case "wsl-windows-task":
1276
+ text = taskXml(
1277
+ wslTaskDefinition({
1278
+ userId: "DOMAIN\\user",
1279
+ distro: process.env.WSL_DISTRO_NAME ?? "distro",
1280
+ linuxUser: process.env.USER ?? "user",
1281
+ ...prog
1282
+ })
1283
+ );
1284
+ break;
1285
+ }
1286
+ ctx.formatter.print({ text, platform, name });
1287
+ return EXIT_OK;
1288
+ }
1289
+ const existing = readManifest(paths);
1290
+ if (existing && existing.name !== name && existing.platform !== platform) {
1291
+ ctx.formatter.error({
1292
+ message: `a scheduler service (${existing.name}, ${existing.platform}) is already installed for this home; uninstall it first`
1293
+ });
1294
+ return 1;
1295
+ }
1296
+ try {
1297
+ requestStop(paths, false);
1298
+ const { manifest, problems, notes } = await installService(
1299
+ { paths, run: runCommand, env: process.env, version: CLI_VERSION },
1300
+ { platform, name, program: prog, atBoot: has(args, "at-boot") }
1301
+ );
1302
+ for (const note of notes) ctx.formatter.info(note);
1303
+ if (problems.length > 0) {
1304
+ ctx.formatter.error({ message: `installed with problems:
1305
+ ${problems.join("\n")}` });
1306
+ return 1;
1307
+ }
1308
+ ctx.formatter.print({
1309
+ text: `Installed ${manifest.name} (${manifest.platform}). Check it with \`namzu schedule status\`.`,
1310
+ platform: manifest.platform,
1311
+ name: manifest.name
1312
+ });
1313
+ return EXIT_OK;
1314
+ } catch (error) {
1315
+ ctx.formatter.error({ message: error instanceof Error ? error.message : String(error) });
1316
+ return error instanceof ServiceRefusal ? EXIT_UNAVAILABLE : 1;
1317
+ }
1318
+ }
1319
+ __name(installCommand, "installCommand");
1320
+ function runsInFlight(paths) {
1321
+ let n = 0;
1322
+ for (const job of listJobs(paths).jobs) {
1323
+ const run = readState(paths, job.id).activeRun;
1324
+ if (run?.status === "running" && !isFinal(readRunResult(paths, job.id, run.runId))) n++;
1325
+ }
1326
+ return n;
1327
+ }
1328
+ __name(runsInFlight, "runsInFlight");
1329
+ async function uninstallCommand(ctx, argv) {
1330
+ const args = parseArgs(argv, ["home", "keep-data!", "purge-data!", "wait", "interrupt-runs!"]);
1331
+ if (args.unknown.length > 0 || has(args, "keep-data") && has(args, "purge-data")) {
1332
+ ctx.formatter.error({
1333
+ message: "usage: namzu schedule uninstall [--keep-data | --purge-data] [--wait 10m | --interrupt-runs]"
1334
+ });
1335
+ return EXIT_USAGE;
1336
+ }
1337
+ const paths = pathsFor(args);
1338
+ const manifest = readManifest(paths);
1339
+ const endpoint = readEndpoint(paths.endpoint);
1340
+ requestStop(paths, true);
1341
+ if (endpoint) await callEndpoint(endpoint, "stop");
1342
+ if (manifest)
1343
+ await stopService({ paths, run: runCommand, env: process.env, version: CLI_VERSION }, manifest);
1344
+ if (!has(args, "interrupt-runs")) {
1345
+ const waitMs = parseMs("--wait", flag(args, "wait")) ?? 10 * 6e4;
1346
+ const deadline = Date.now() + waitMs;
1347
+ while (runsInFlight(paths) > 0 && Date.now() < deadline) {
1348
+ ctx.formatter.info(`waiting for ${runsInFlight(paths)} run(s) in progress to finish\u2026`);
1349
+ await new Promise((r) => setTimeout(r, 5e3));
1350
+ }
1351
+ }
1352
+ const inFlight = runsInFlight(paths);
1353
+ if (inFlight > 0)
1354
+ ctx.formatter.info(`${inFlight} run(s) are still in progress; they finish on their own.`);
1355
+ const { problems } = await uninstallService({
1356
+ paths,
1357
+ run: runCommand,
1358
+ env: process.env,
1359
+ version: CLI_VERSION
1360
+ });
1361
+ if (problems.length > 0) {
1362
+ ctx.formatter.error({ message: `could not remove everything:
1363
+ ${problems.join("\n")}` });
1364
+ return 1;
1365
+ }
1366
+ if (has(args, "purge-data")) rmSync4(paths.root, { recursive: true, force: true });
1367
+ ctx.formatter.print({
1368
+ text: manifest ? `Removed ${manifest.name}.${has(args, "purge-data") ? " Scheduler data deleted." : " Jobs and history are kept."}` : `No scheduler service was installed for ${paths.home}.${has(args, "purge-data") ? " Scheduler data deleted." : ""}`
1369
+ });
1370
+ return EXIT_OK;
1371
+ }
1372
+ __name(uninstallCommand, "uninstallCommand");
1373
+ function readHeartbeat(paths) {
1374
+ try {
1375
+ return JSON.parse(readFileSync2(paths.heartbeat, "utf8"));
1376
+ } catch {
1377
+ return void 0;
1378
+ }
1379
+ }
1380
+ __name(readHeartbeat, "readHeartbeat");
1381
+ function daemonNotifications(heartbeat, live) {
1382
+ const reported = typeof live?.notifications === "string" ? live.notifications : heartbeat?.notifications;
1383
+ if (!reported || reported === "unknown") return void 0;
1384
+ const at = reported.indexOf(": ");
1385
+ return at < 0 ? { kind: reported, detail: "" } : { kind: reported.slice(0, at), detail: reported.slice(at + 2) };
1386
+ }
1387
+ __name(daemonNotifications, "daemonNotifications");
1388
+ async function statusCommand(ctx, argv) {
1389
+ const args = parseArgs(argv, ["home", "json!"]);
1390
+ if (args.unknown.length > 0) {
1391
+ ctx.formatter.error({ message: `unknown option: ${args.unknown.join(", ")}` });
1392
+ return EXIT_USAGE;
1393
+ }
1394
+ const paths = pathsFor(args);
1395
+ const manifest = readManifest(paths);
1396
+ const heartbeat = readHeartbeat(paths);
1397
+ const endpoint = readEndpoint(paths.endpoint);
1398
+ const live = endpoint ? await callEndpoint(endpoint, "status") : void 0;
1399
+ const age = heartbeat ? Date.now() - Date.parse(heartbeat.at) : void 0;
1400
+ const supervisor = manifest ? await serviceState(
1401
+ { paths, run: runCommand, env: process.env, version: CLI_VERSION },
1402
+ manifest
1403
+ ) : "not installed";
1404
+ const jobs = listJobs(paths).jobs;
1405
+ const backend = daemonNotifications(heartbeat, live) ?? {
1406
+ ...selectDesktopBackend(
1407
+ manifest?.windows?.powershell ? { powershell: manifest.windows.powershell } : {}
1408
+ ),
1409
+ guessed: true
1410
+ };
1411
+ const pathProblems = [];
1412
+ if (manifest) {
1413
+ for (const [label, path] of [
1414
+ ["node", manifest.nodePath],
1415
+ ["namzu", manifest.binPath]
1416
+ ]) {
1417
+ try {
1418
+ realpathSync(path);
1419
+ } catch {
1420
+ pathProblems.push(`${label} ${path} no longer exists; run namzu schedule install again`);
1421
+ }
1422
+ }
1423
+ if (manifest.cliVersion !== CLI_VERSION)
1424
+ pathProblems.push(
1425
+ `installed by namzu ${manifest.cliVersion}, this is ${CLI_VERSION}; the daemon restarts on the new code by itself`
1426
+ );
1427
+ }
1428
+ const healthy = Boolean(live) || age !== void 0 && age < 9e4;
1429
+ const awaitingApproval = jobs.flatMap((job) => {
1430
+ const run = readState(paths, job.id).activeRun;
1431
+ return run?.status === "awaiting-approval" && run.sessionId ? [
1432
+ {
1433
+ job: job.name,
1434
+ sessionId: run.sessionId,
1435
+ resumeCommand: resumeCommand(job, run.sessionId),
1436
+ ...run.handoff ? { handoff: { reason: run.handoff.reason } } : {},
1437
+ waitingFor: parkedRunWords(run)
1438
+ }
1439
+ ] : [];
1440
+ });
1441
+ const payload = {
1442
+ v: 1,
1443
+ installed: Boolean(manifest),
1444
+ platform: manifest?.platform ?? null,
1445
+ name: manifest?.name ?? null,
1446
+ supervisor,
1447
+ daemon: live ? { responding: true, ...live } : heartbeat ? {
1448
+ responding: false,
1449
+ lastSeen: heartbeat.at,
1450
+ standby: heartbeat.standby,
1451
+ pid: heartbeat.pid,
1452
+ version: heartbeat.version
1453
+ } : null,
1454
+ notifications: `${backend.kind} (${backend.detail})${"guessed" in backend ? " \u2014 the daemon has not reported, so this is what this shell would pick" : ""}`,
1455
+ jobs: { total: jobs.length, active: jobs.filter((j) => j.state === "active").length },
1456
+ runsInFlight: runsInFlight(paths),
1457
+ awaitingApproval,
1458
+ problems: pathProblems,
1459
+ log: daemonLogPath(paths.daemonLog)
1460
+ };
1461
+ if (has(args, "json") || ctx.formatter.name !== "text") {
1462
+ ctx.formatter.print(ctx.formatter.name === "text" ? JSON.stringify(payload, null, 2) : payload);
1463
+ } else {
1464
+ ctx.formatter.print(
1465
+ [
1466
+ `Service ${manifest ? `${manifest.name} (${manifest.platform})` : "not installed \u2014 namzu schedule install"}`,
1467
+ `Supervisor ${supervisor}`,
1468
+ `Daemon ${live ? `running, pid ${String(live.pid)}, version ${String(live.version)}${live.standby ? ", on standby" : ""}${live.draining ? ", draining for a restart" : ""}` : heartbeat ? `not answering; last seen ${Math.round((age ?? 0) / 1e3)} s ago${heartbeat.standby ? " (on standby)" : ""}` : "never started"}`,
1469
+ `Notifications ${backend.kind}${backend.kind === "none" ? ` \u2014 ${backend.detail}` : ""}${"guessed" in backend ? " (not reported by the daemon yet; this shell would pick it)" : ""}`,
1470
+ `Jobs ${payload.jobs.active} active of ${payload.jobs.total}; ${payload.runsInFlight} run(s) in progress`,
1471
+ ...awaitingApproval.map(
1472
+ (w) => w.handoff ? `Waiting ${w.job} ${w.waitingFor}; when that is done: ${w.resumeCommand}` : `Waiting ${w.job} needs your approval: ${w.resumeCommand}`
1473
+ ),
1474
+ `Log ${payload.log}`,
1475
+ ...pathProblems.map((p) => `Warning ${p}`)
1476
+ ].join("\n")
1477
+ );
1478
+ }
1479
+ if (!manifest && !live) return EXIT_NO_CONFIG;
1480
+ return healthy ? EXIT_OK : EXIT_UNAVAILABLE;
1481
+ }
1482
+ __name(statusCommand, "statusCommand");
1483
+ async function startStopCommand(ctx, argv, verb) {
1484
+ const args = parseArgs(argv, ["home"]);
1485
+ const paths = pathsFor(args);
1486
+ const manifest = readManifest(paths);
1487
+ if (!manifest) {
1488
+ ctx.formatter.error({
1489
+ message: "no scheduler service is installed for this home; namzu schedule install"
1490
+ });
1491
+ return EXIT_NO_CONFIG;
1492
+ }
1493
+ const context = { paths, run: runCommand, env: process.env, version: CLI_VERSION };
1494
+ requestStop(paths, verb === "stop");
1495
+ const problems = verb === "start" ? await startService(context, manifest) : await stopService(context, manifest);
1496
+ if (verb === "stop") {
1497
+ const endpoint = readEndpoint(paths.endpoint);
1498
+ if (endpoint) await callEndpoint(endpoint, "stop");
1499
+ }
1500
+ if (problems.length > 0) {
1501
+ ctx.formatter.error({ message: problems.join("\n") });
1502
+ return 1;
1503
+ }
1504
+ ctx.formatter.print({
1505
+ text: verb === "start" ? `Started ${manifest.name}.` : `Stopped ${manifest.name}; it stays stopped until namzu schedule start.`
1506
+ });
1507
+ return EXIT_OK;
1508
+ }
1509
+ __name(startStopCommand, "startStopCommand");
1510
+ async function daemonCommand(ctx, argv) {
1511
+ const args = parseArgs(argv, ["home", "foreground!", "once-or-exit!"]);
1512
+ if (args.unknown.length > 0) {
1513
+ ctx.formatter.error({ message: `unknown option: ${args.unknown.join(", ")}` });
1514
+ return EXIT_USAGE;
1515
+ }
1516
+ const paths = pathsFor(args);
1517
+ process.env.NAMZU_HOME = paths.home;
1518
+ const config = (() => {
1519
+ try {
1520
+ return loadBootstrapConfigWithProvenance({ env: process.env }).config;
1521
+ } catch {
1522
+ return ctx.config;
1523
+ }
1524
+ })();
1525
+ installCliLogging(daemonLogSink(paths.daemonLog), "info");
1526
+ const log = cliLogger();
1527
+ const manifest = (() => {
1528
+ try {
1529
+ return readManifest(paths);
1530
+ } catch {
1531
+ return void 0;
1532
+ }
1533
+ })();
1534
+ const backend = selectDesktopBackend(
1535
+ manifest?.windows?.powershell ? { powershell: manifest.windows.powershell } : {}
1536
+ );
1537
+ const bin = installedBin();
1538
+ if (existsSync5(stopRequestPath(paths))) {
1539
+ ctx.formatter.error({
1540
+ message: `the scheduler for ${paths.home} was stopped with \`namzu schedule stop\`; \`namzu schedule start\` lets it run again`
1541
+ });
1542
+ return EXIT_STOP_REQUESTED;
1543
+ }
1544
+ const daemon = new ScheduleDaemon({
1545
+ paths,
1546
+ log,
1547
+ version: CLI_VERSION,
1548
+ epoch: randomUUID(),
1549
+ maxConcurrentRuns: config.schedule?.maxConcurrentRuns ?? 2,
1550
+ notifications: config.schedule?.notifications ?? true,
1551
+ notificationBackend: `${backend.kind}: ${backend.detail}`,
1552
+ spawnFire: spawnFireProcess({ node: process.execPath, bin, paths, env: process.env }),
1553
+ notify: /* @__PURE__ */ __name(async (notice) => {
1554
+ const result = await sendDesktopNotification(backend, notice);
1555
+ if (result.kind !== "sent") {
1556
+ log.warn("scheduled run notification not shown", {
1557
+ "namzu.schedule.job_id": notice.jobId,
1558
+ "namzu.schedule.notify_result": result.kind
1559
+ });
1560
+ }
1561
+ }, "notify"),
1562
+ fingerprint: installedFingerprint(bin),
1563
+ onceOrExit: has(args, "once-or-exit")
1564
+ });
1565
+ const stop = /* @__PURE__ */ __name(() => daemon.stop(), "stop");
1566
+ process.on("SIGTERM", stop);
1567
+ process.on("SIGINT", stop);
1568
+ process.on("SIGHUP", stop);
1569
+ log.info("scheduler starting", {
1570
+ "namzu.schedule.home": paths.home,
1571
+ "namzu.schedule.version": CLI_VERSION
1572
+ });
1573
+ try {
1574
+ const code = await daemon.run();
1575
+ if (code === 75) {
1576
+ const endpoint = readEndpoint(paths.endpoint);
1577
+ ctx.formatter.error({
1578
+ message: `another scheduler owns ${paths.home}${endpoint ? ` (pid ${endpoint.pid})` : ""}`
1579
+ });
1580
+ }
1581
+ return code;
1582
+ } finally {
1583
+ process.removeListener("SIGTERM", stop);
1584
+ process.removeListener("SIGINT", stop);
1585
+ process.removeListener("SIGHUP", stop);
1586
+ }
1587
+ }
1588
+ __name(daemonCommand, "daemonCommand");
1589
+ async function fireCommand(ctx, argv, termination) {
1590
+ const args = parseArgs(argv, [
1591
+ "home",
1592
+ "job",
1593
+ "run",
1594
+ "key",
1595
+ "revision",
1596
+ "trigger",
1597
+ "scheduled-for",
1598
+ "epoch"
1599
+ ]);
1600
+ const parsed = parseFireArgs(argv);
1601
+ if ("error" in parsed || args.unknown.length > 0) {
1602
+ ctx.formatter.error({
1603
+ message: "error" in parsed ? parsed.error : `unknown option: ${args.unknown.join(", ")}`
1604
+ });
1605
+ return EXIT_USAGE;
1606
+ }
1607
+ const paths = pathsFor(args);
1608
+ const fire = parsed;
1609
+ termination?.onTerminate(async (signal) => {
1610
+ const current = readRunResult(paths, fire.jobId, fire.runId);
1611
+ if (current && current.status === "running") {
1612
+ writeRunResult(paths, {
1613
+ ...current,
1614
+ status: "interrupted",
1615
+ exitCode: 1,
1616
+ reason: `stopped by ${signal}`,
1617
+ endedAt: (/* @__PURE__ */ new Date()).toISOString()
1618
+ });
1619
+ }
1620
+ });
1621
+ return runFire(ctx, paths, fire);
1622
+ }
1623
+ __name(fireCommand, "fireCommand");
1624
+ export {
1625
+ daemonCommand,
1626
+ fireCommand,
1627
+ installCommand,
1628
+ installedBin,
1629
+ startStopCommand,
1630
+ statusCommand,
1631
+ uninstallCommand
1632
+ };
1633
+ //# sourceMappingURL=service-WSW3M6K5.js.map