@namzu/cli 29.0.1 → 29.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +20 -0
  3. package/dist/browser/commands.d.ts +29 -0
  4. package/dist/browser/commands.d.ts.map +1 -0
  5. package/dist/browser/commands.js +361 -0
  6. package/dist/browser/commands.js.map +1 -0
  7. package/dist/browser/control.d.ts +79 -0
  8. package/dist/browser/control.d.ts.map +1 -0
  9. package/dist/browser/control.js +140 -0
  10. package/dist/browser/control.js.map +1 -0
  11. package/dist/browser/describe.d.ts +12 -0
  12. package/dist/browser/describe.d.ts.map +1 -0
  13. package/dist/browser/describe.js +27 -0
  14. package/dist/browser/describe.js.map +1 -0
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +29 -2
  17. package/dist/cli.js.map +1 -1
  18. package/dist/commands/acp.d.ts.map +1 -1
  19. package/dist/commands/acp.js +1 -0
  20. package/dist/commands/acp.js.map +1 -1
  21. package/dist/commands/browser.d.ts +7 -0
  22. package/dist/commands/browser.d.ts.map +1 -0
  23. package/dist/commands/browser.js +16 -0
  24. package/dist/commands/browser.js.map +1 -0
  25. package/dist/commands/drain.d.ts +2 -1
  26. package/dist/commands/drain.d.ts.map +1 -1
  27. package/dist/commands/drain.js +6 -3
  28. package/dist/commands/drain.js.map +1 -1
  29. package/dist/commands/exec-flags.d.ts +2 -1
  30. package/dist/commands/exec-flags.d.ts.map +1 -1
  31. package/dist/commands/exec-flags.js +6 -3
  32. package/dist/commands/exec-flags.js.map +1 -1
  33. package/dist/commands/exec-json.d.ts.map +1 -1
  34. package/dist/commands/exec-json.js +2 -1
  35. package/dist/commands/exec-json.js.map +1 -1
  36. package/dist/commands/exec.d.ts.map +1 -1
  37. package/dist/commands/exec.js +2 -1
  38. package/dist/commands/exec.js.map +1 -1
  39. package/dist/commands/host-queries.d.ts.map +1 -1
  40. package/dist/commands/host-queries.js +10 -3
  41. package/dist/commands/host-queries.js.map +1 -1
  42. package/dist/commands/schedule.d.ts +9 -0
  43. package/dist/commands/schedule.d.ts.map +1 -0
  44. package/dist/commands/schedule.js +126 -0
  45. package/dist/commands/schedule.js.map +1 -0
  46. package/dist/commands/serve.d.ts +3 -1
  47. package/dist/commands/serve.d.ts.map +1 -1
  48. package/dist/commands/serve.js +5 -3
  49. package/dist/commands/serve.js.map +1 -1
  50. package/dist/commands/skills.d.ts +10 -0
  51. package/dist/commands/skills.d.ts.map +1 -1
  52. package/dist/commands/skills.js +23 -7
  53. package/dist/commands/skills.js.map +1 -1
  54. package/dist/commands/upgrade.d.ts +5 -0
  55. package/dist/commands/upgrade.d.ts.map +1 -1
  56. package/dist/commands/upgrade.js +11 -0
  57. package/dist/commands/upgrade.js.map +1 -1
  58. package/dist/config/load.d.ts +39 -0
  59. package/dist/config/load.d.ts.map +1 -1
  60. package/dist/config/load.js +232 -1
  61. package/dist/config/load.js.map +1 -1
  62. package/dist/config/schema.d.ts +78 -0
  63. package/dist/config/schema.d.ts.map +1 -1
  64. package/dist/config/schema.js.map +1 -1
  65. package/dist/config/user-config.d.ts +23 -0
  66. package/dist/config/user-config.d.ts.map +1 -0
  67. package/dist/config/user-config.js +48 -0
  68. package/dist/config/user-config.js.map +1 -0
  69. package/dist/context/capabilities.d.ts +1 -1
  70. package/dist/context/capabilities.d.ts.map +1 -1
  71. package/dist/context/capabilities.js +1 -0
  72. package/dist/context/capabilities.js.map +1 -1
  73. package/dist/doctor/checks/browser.d.ts +15 -0
  74. package/dist/doctor/checks/browser.d.ts.map +1 -0
  75. package/dist/doctor/checks/browser.js +63 -0
  76. package/dist/doctor/checks/browser.js.map +1 -0
  77. package/dist/doctor/checks/index.d.ts +4 -1
  78. package/dist/doctor/checks/index.d.ts.map +1 -1
  79. package/dist/doctor/checks/index.js +8 -1
  80. package/dist/doctor/checks/index.js.map +1 -1
  81. package/dist/doctor/checks/scheduler.d.ts +10 -0
  82. package/dist/doctor/checks/scheduler.d.ts.map +1 -0
  83. package/dist/doctor/checks/scheduler.js +74 -0
  84. package/dist/doctor/checks/scheduler.js.map +1 -0
  85. package/dist/index.d.ts +1 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +1 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/integrations/notifications/desktop/freedesktop.d.ts +10 -0
  90. package/dist/integrations/notifications/desktop/freedesktop.d.ts.map +1 -0
  91. package/dist/integrations/notifications/desktop/freedesktop.js +33 -0
  92. package/dist/integrations/notifications/desktop/freedesktop.js.map +1 -0
  93. package/dist/integrations/notifications/desktop/macos.d.ts +6 -0
  94. package/dist/integrations/notifications/desktop/macos.d.ts.map +1 -0
  95. package/dist/integrations/notifications/desktop/macos.js +17 -0
  96. package/dist/integrations/notifications/desktop/macos.js.map +1 -0
  97. package/dist/integrations/notifications/desktop/sanitize.d.ts +16 -0
  98. package/dist/integrations/notifications/desktop/sanitize.d.ts.map +1 -0
  99. package/dist/integrations/notifications/desktop/sanitize.js +49 -0
  100. package/dist/integrations/notifications/desktop/sanitize.js.map +1 -0
  101. package/dist/integrations/notifications/desktop/throttle.d.ts +10 -0
  102. package/dist/integrations/notifications/desktop/throttle.d.ts.map +1 -0
  103. package/dist/integrations/notifications/desktop/throttle.js +39 -0
  104. package/dist/integrations/notifications/desktop/throttle.js.map +1 -0
  105. package/dist/integrations/notifications/desktop/windows-toast.d.ts +23 -0
  106. package/dist/integrations/notifications/desktop/windows-toast.d.ts.map +1 -0
  107. package/dist/integrations/notifications/desktop/windows-toast.js +56 -0
  108. package/dist/integrations/notifications/desktop/windows-toast.js.map +1 -0
  109. package/dist/integrations/notifications/desktop.d.ts +82 -0
  110. package/dist/integrations/notifications/desktop.d.ts.map +1 -0
  111. package/dist/integrations/notifications/desktop.js +198 -0
  112. package/dist/integrations/notifications/desktop.js.map +1 -0
  113. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  114. package/dist/integrations/resident/session-step.js +1 -0
  115. package/dist/integrations/resident/session-step.js.map +1 -1
  116. package/dist/integrations/subagents/runtime.d.ts +6 -0
  117. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  118. package/dist/integrations/subagents/runtime.js +14 -5
  119. package/dist/integrations/subagents/runtime.js.map +1 -1
  120. package/dist/permissions/browser-sites.d.ts +95 -0
  121. package/dist/permissions/browser-sites.d.ts.map +1 -0
  122. package/dist/permissions/browser-sites.js +270 -0
  123. package/dist/permissions/browser-sites.js.map +1 -0
  124. package/dist/schedule/build.d.ts +79 -0
  125. package/dist/schedule/build.d.ts.map +1 -0
  126. package/dist/schedule/build.js +246 -0
  127. package/dist/schedule/build.js.map +1 -0
  128. package/dist/schedule/changes.d.ts +22 -0
  129. package/dist/schedule/changes.d.ts.map +1 -0
  130. package/dist/schedule/changes.js +55 -0
  131. package/dist/schedule/changes.js.map +1 -0
  132. package/dist/schedule/commands/add.d.ts +24 -0
  133. package/dist/schedule/commands/add.d.ts.map +1 -0
  134. package/dist/schedule/commands/add.js +459 -0
  135. package/dist/schedule/commands/add.js.map +1 -0
  136. package/dist/schedule/commands/args.d.ts +22 -0
  137. package/dist/schedule/commands/args.d.ts.map +1 -0
  138. package/dist/schedule/commands/args.js +80 -0
  139. package/dist/schedule/commands/args.js.map +1 -0
  140. package/dist/schedule/commands/confirm-prompt.d.ts +6 -0
  141. package/dist/schedule/commands/confirm-prompt.d.ts.map +1 -0
  142. package/dist/schedule/commands/confirm-prompt.js +21 -0
  143. package/dist/schedule/commands/confirm-prompt.js.map +1 -0
  144. package/dist/schedule/commands/lifecycle.d.ts +39 -0
  145. package/dist/schedule/commands/lifecycle.d.ts.map +1 -0
  146. package/dist/schedule/commands/lifecycle.js +585 -0
  147. package/dist/schedule/commands/lifecycle.js.map +1 -0
  148. package/dist/schedule/commands/list.d.ts +33 -0
  149. package/dist/schedule/commands/list.d.ts.map +1 -0
  150. package/dist/schedule/commands/list.js +202 -0
  151. package/dist/schedule/commands/list.js.map +1 -0
  152. package/dist/schedule/commands/logs.d.ts +7 -0
  153. package/dist/schedule/commands/logs.d.ts.map +1 -0
  154. package/dist/schedule/commands/logs.js +106 -0
  155. package/dist/schedule/commands/logs.js.map +1 -0
  156. package/dist/schedule/commands/service.d.ts +16 -0
  157. package/dist/schedule/commands/service.d.ts.map +1 -0
  158. package/dist/schedule/commands/service.js +458 -0
  159. package/dist/schedule/commands/service.js.map +1 -0
  160. package/dist/schedule/daemon/daemon.d.ts +156 -0
  161. package/dist/schedule/daemon/daemon.d.ts.map +1 -0
  162. package/dist/schedule/daemon/daemon.js +1248 -0
  163. package/dist/schedule/daemon/daemon.js.map +1 -0
  164. package/dist/schedule/daemon/endpoint.d.ts +38 -0
  165. package/dist/schedule/daemon/endpoint.d.ts.map +1 -0
  166. package/dist/schedule/daemon/endpoint.js +158 -0
  167. package/dist/schedule/daemon/endpoint.js.map +1 -0
  168. package/dist/schedule/daemon/exit.d.ts +8 -0
  169. package/dist/schedule/daemon/exit.d.ts.map +1 -0
  170. package/dist/schedule/daemon/exit.js +8 -0
  171. package/dist/schedule/daemon/exit.js.map +1 -0
  172. package/dist/schedule/daemon/log.d.ts +12 -0
  173. package/dist/schedule/daemon/log.d.ts.map +1 -0
  174. package/dist/schedule/daemon/log.js +53 -0
  175. package/dist/schedule/daemon/log.js.map +1 -0
  176. package/dist/schedule/daemon/notify.d.ts +31 -0
  177. package/dist/schedule/daemon/notify.d.ts.map +1 -0
  178. package/dist/schedule/daemon/notify.js +89 -0
  179. package/dist/schedule/daemon/notify.js.map +1 -0
  180. package/dist/schedule/daemon/retention.d.ts +16 -0
  181. package/dist/schedule/daemon/retention.d.ts.map +1 -0
  182. package/dist/schedule/daemon/retention.js +46 -0
  183. package/dist/schedule/daemon/retention.js.map +1 -0
  184. package/dist/schedule/daemon/sessions.d.ts +23 -0
  185. package/dist/schedule/daemon/sessions.d.ts.map +1 -0
  186. package/dist/schedule/daemon/sessions.js +52 -0
  187. package/dist/schedule/daemon/sessions.js.map +1 -0
  188. package/dist/schedule/env.d.ts +28 -0
  189. package/dist/schedule/env.d.ts.map +1 -0
  190. package/dist/schedule/env.js +99 -0
  191. package/dist/schedule/env.js.map +1 -0
  192. package/dist/schedule/fire/browser-preflight.d.ts +41 -0
  193. package/dist/schedule/fire/browser-preflight.d.ts.map +1 -0
  194. package/dist/schedule/fire/browser-preflight.js +73 -0
  195. package/dist/schedule/fire/browser-preflight.js.map +1 -0
  196. package/dist/schedule/fire/fire.d.ts +78 -0
  197. package/dist/schedule/fire/fire.d.ts.map +1 -0
  198. package/dist/schedule/fire/fire.js +482 -0
  199. package/dist/schedule/fire/fire.js.map +1 -0
  200. package/dist/schedule/fire/result.d.ts +13 -0
  201. package/dist/schedule/fire/result.d.ts.map +1 -0
  202. package/dist/schedule/fire/result.js +18 -0
  203. package/dist/schedule/fire/result.js.map +1 -0
  204. package/dist/schedule/fire/unattended-note.d.ts +22 -0
  205. package/dist/schedule/fire/unattended-note.d.ts.map +1 -0
  206. package/dist/schedule/fire/unattended-note.js +46 -0
  207. package/dist/schedule/fire/unattended-note.js.map +1 -0
  208. package/dist/schedule/floor.d.ts +116 -0
  209. package/dist/schedule/floor.d.ts.map +1 -0
  210. package/dist/schedule/floor.js +1051 -0
  211. package/dist/schedule/floor.js.map +1 -0
  212. package/dist/schedule/folder.d.ts +34 -0
  213. package/dist/schedule/folder.d.ts.map +1 -0
  214. package/dist/schedule/folder.js +84 -0
  215. package/dist/schedule/folder.js.map +1 -0
  216. package/dist/schedule/paths.d.ts +49 -0
  217. package/dist/schedule/paths.d.ts.map +1 -0
  218. package/dist/schedule/paths.js +53 -0
  219. package/dist/schedule/paths.js.map +1 -0
  220. package/dist/schedule/policy.d.ts +141 -0
  221. package/dist/schedule/policy.d.ts.map +1 -0
  222. package/dist/schedule/policy.js +378 -0
  223. package/dist/schedule/policy.js.map +1 -0
  224. package/dist/schedule/resume-command.d.ts +36 -0
  225. package/dist/schedule/resume-command.d.ts.map +1 -0
  226. package/dist/schedule/resume-command.js +72 -0
  227. package/dist/schedule/resume-command.js.map +1 -0
  228. package/dist/schedule/service/detect.d.ts +22 -0
  229. package/dist/schedule/service/detect.d.ts.map +1 -0
  230. package/dist/schedule/service/detect.js +29 -0
  231. package/dist/schedule/service/detect.js.map +1 -0
  232. package/dist/schedule/service/index.d.ts +48 -0
  233. package/dist/schedule/service/index.d.ts.map +1 -0
  234. package/dist/schedule/service/index.js +352 -0
  235. package/dist/schedule/service/index.js.map +1 -0
  236. package/dist/schedule/service/launchd.d.ts +24 -0
  237. package/dist/schedule/service/launchd.d.ts.map +1 -0
  238. package/dist/schedule/service/launchd.js +84 -0
  239. package/dist/schedule/service/launchd.js.map +1 -0
  240. package/dist/schedule/service/manifest.d.ts +44 -0
  241. package/dist/schedule/service/manifest.d.ts.map +1 -0
  242. package/dist/schedule/service/manifest.js +16 -0
  243. package/dist/schedule/service/manifest.js.map +1 -0
  244. package/dist/schedule/service/names.d.ts +9 -0
  245. package/dist/schedule/service/names.d.ts.map +1 -0
  246. package/dist/schedule/service/names.js +22 -0
  247. package/dist/schedule/service/names.js.map +1 -0
  248. package/dist/schedule/service/quote.d.ts +24 -0
  249. package/dist/schedule/service/quote.d.ts.map +1 -0
  250. package/dist/schedule/service/quote.js +64 -0
  251. package/dist/schedule/service/quote.js.map +1 -0
  252. package/dist/schedule/service/runner.d.ts +17 -0
  253. package/dist/schedule/service/runner.d.ts.map +1 -0
  254. package/dist/schedule/service/runner.js +31 -0
  255. package/dist/schedule/service/runner.js.map +1 -0
  256. package/dist/schedule/service/systemd.d.ts +37 -0
  257. package/dist/schedule/service/systemd.d.ts.map +1 -0
  258. package/dist/schedule/service/systemd.js +96 -0
  259. package/dist/schedule/service/systemd.js.map +1 -0
  260. package/dist/schedule/service/windows-task.d.ts +51 -0
  261. package/dist/schedule/service/windows-task.d.ts.map +1 -0
  262. package/dist/schedule/service/windows-task.js +134 -0
  263. package/dist/schedule/service/windows-task.js.map +1 -0
  264. package/dist/schedule/service/wsl.d.ts +57 -0
  265. package/dist/schedule/service/wsl.d.ts.map +1 -0
  266. package/dist/schedule/service/wsl.js +111 -0
  267. package/dist/schedule/service/wsl.js.map +1 -0
  268. package/dist/schedule/store/atomic.d.ts +43 -0
  269. package/dist/schedule/store/atomic.d.ts.map +1 -0
  270. package/dist/schedule/store/atomic.js +135 -0
  271. package/dist/schedule/store/atomic.js.map +1 -0
  272. package/dist/schedule/store/claims.d.ts +26 -0
  273. package/dist/schedule/store/claims.d.ts.map +1 -0
  274. package/dist/schedule/store/claims.js +57 -0
  275. package/dist/schedule/store/claims.js.map +1 -0
  276. package/dist/schedule/store/digest.d.ts +18 -0
  277. package/dist/schedule/store/digest.d.ts.map +1 -0
  278. package/dist/schedule/store/digest.js +139 -0
  279. package/dist/schedule/store/digest.js.map +1 -0
  280. package/dist/schedule/store/history.d.ts +21 -0
  281. package/dist/schedule/store/history.d.ts.map +1 -0
  282. package/dist/schedule/store/history.js +114 -0
  283. package/dist/schedule/store/history.js.map +1 -0
  284. package/dist/schedule/store/jobs.d.ts +61 -0
  285. package/dist/schedule/store/jobs.d.ts.map +1 -0
  286. package/dist/schedule/store/jobs.js +210 -0
  287. package/dist/schedule/store/jobs.js.map +1 -0
  288. package/dist/schedule/store/state.d.ts +19 -0
  289. package/dist/schedule/store/state.d.ts.map +1 -0
  290. package/dist/schedule/store/state.js +38 -0
  291. package/dist/schedule/store/state.js.map +1 -0
  292. package/dist/schedule/types.d.ts +256 -0
  293. package/dist/schedule/types.d.ts.map +1 -0
  294. package/dist/schedule/types.js +9 -0
  295. package/dist/schedule/types.js.map +1 -0
  296. package/dist/skills/catalog.d.ts +96 -0
  297. package/dist/skills/catalog.d.ts.map +1 -0
  298. package/dist/skills/catalog.js +226 -0
  299. package/dist/skills/catalog.js.map +1 -0
  300. package/dist/skills/save.d.ts +148 -0
  301. package/dist/skills/save.d.ts.map +1 -0
  302. package/dist/skills/save.js +344 -0
  303. package/dist/skills/save.js.map +1 -0
  304. package/dist/skills/store.d.ts +103 -16
  305. package/dist/skills/store.d.ts.map +1 -1
  306. package/dist/skills/store.js +227 -30
  307. package/dist/skills/store.js.map +1 -1
  308. package/dist/tui/App.d.ts.map +1 -1
  309. package/dist/tui/App.js +591 -72
  310. package/dist/tui/App.js.map +1 -1
  311. package/dist/tui/LiveActivity.d.ts +8 -1
  312. package/dist/tui/LiveActivity.d.ts.map +1 -1
  313. package/dist/tui/LiveActivity.js +20 -4
  314. package/dist/tui/LiveActivity.js.map +1 -1
  315. package/dist/tui/PermissionOverlay.d.ts +24 -4
  316. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  317. package/dist/tui/PermissionOverlay.js +113 -15
  318. package/dist/tui/PermissionOverlay.js.map +1 -1
  319. package/dist/tui/SaveSkillOverlay.d.ts +33 -0
  320. package/dist/tui/SaveSkillOverlay.d.ts.map +1 -0
  321. package/dist/tui/SaveSkillOverlay.js +118 -0
  322. package/dist/tui/SaveSkillOverlay.js.map +1 -0
  323. package/dist/tui/agent.d.ts +185 -5
  324. package/dist/tui/agent.d.ts.map +1 -1
  325. package/dist/tui/agent.js +325 -54
  326. package/dist/tui/agent.js.map +1 -1
  327. package/dist/tui/browser-notices.d.ts +33 -0
  328. package/dist/tui/browser-notices.d.ts.map +1 -0
  329. package/dist/tui/browser-notices.js +102 -0
  330. package/dist/tui/browser-notices.js.map +1 -0
  331. package/dist/tui/permission-review.d.ts.map +1 -1
  332. package/dist/tui/permission-review.js +53 -4
  333. package/dist/tui/permission-review.js.map +1 -1
  334. package/dist/tui/schedule/host-commands.d.ts +34 -0
  335. package/dist/tui/schedule/host-commands.d.ts.map +1 -0
  336. package/dist/tui/schedule/host-commands.js +309 -0
  337. package/dist/tui/schedule/host-commands.js.map +1 -0
  338. package/dist/tui/schedule/integration.d.ts +62 -0
  339. package/dist/tui/schedule/integration.d.ts.map +1 -0
  340. package/dist/tui/schedule/integration.js +145 -0
  341. package/dist/tui/schedule/integration.js.map +1 -0
  342. package/dist/tui/schedule/loop-host.d.ts +42 -0
  343. package/dist/tui/schedule/loop-host.d.ts.map +1 -0
  344. package/dist/tui/schedule/loop-host.js +153 -0
  345. package/dist/tui/schedule/loop-host.js.map +1 -0
  346. package/dist/tui/schedule/resume.d.ts +122 -0
  347. package/dist/tui/schedule/resume.d.ts.map +1 -0
  348. package/dist/tui/schedule/resume.js +324 -0
  349. package/dist/tui/schedule/resume.js.map +1 -0
  350. package/dist/tui/schedule/startup.d.ts +11 -0
  351. package/dist/tui/schedule/startup.d.ts.map +1 -0
  352. package/dist/tui/schedule/startup.js +121 -0
  353. package/dist/tui/schedule/startup.js.map +1 -0
  354. package/dist/tui/schedule/tool-host.d.ts +44 -0
  355. package/dist/tui/schedule/tool-host.d.ts.map +1 -0
  356. package/dist/tui/schedule/tool-host.js +294 -0
  357. package/dist/tui/schedule/tool-host.js.map +1 -0
  358. package/dist/tui/skills/learning.d.ts +74 -0
  359. package/dist/tui/skills/learning.d.ts.map +1 -0
  360. package/dist/tui/skills/learning.js +131 -0
  361. package/dist/tui/skills/learning.js.map +1 -0
  362. package/dist/tui/skills/suggest-setting.d.ts +22 -0
  363. package/dist/tui/skills/suggest-setting.d.ts.map +1 -0
  364. package/dist/tui/skills/suggest-setting.js +55 -0
  365. package/dist/tui/skills/suggest-setting.js.map +1 -0
  366. package/dist/tui/skills/suggestion-ledger.d.ts +35 -0
  367. package/dist/tui/skills/suggestion-ledger.d.ts.map +1 -0
  368. package/dist/tui/skills/suggestion-ledger.js +52 -0
  369. package/dist/tui/skills/suggestion-ledger.js.map +1 -0
  370. package/dist/tui/slashCommands.d.ts +20 -0
  371. package/dist/tui/slashCommands.d.ts.map +1 -1
  372. package/dist/tui/slashCommands.js +76 -2
  373. package/dist/tui/slashCommands.js.map +1 -1
  374. package/dist/tui/turn-interruption.d.ts +20 -1
  375. package/dist/tui/turn-interruption.d.ts.map +1 -1
  376. package/dist/tui/turn-interruption.js +43 -0
  377. package/dist/tui/turn-interruption.js.map +1 -1
  378. package/dist/tui/types.d.ts +9 -1
  379. package/dist/tui/types.d.ts.map +1 -1
  380. package/package.json +6 -4
  381. package/skills/README.md +15 -0
  382. package/skills/browser-automation/SKILL.md +84 -0
  383. package/skills/schedule-task/SKILL.md +140 -0
  384. package/skills/skill-creator/SKILL.md +101 -0
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Whether a finished turn is worth proposing as a skill.
3
+ *
4
+ * The interactive TUI's alone: `exec`, `drain`, ACP, a scheduled run and a
5
+ * sub-agent never import this (a test says so). Nothing here saves anything
6
+ * or costs a model call; it only decides whether one dim line is printed
7
+ * under the reply. Saving is `/skills save`, which the operator types.
8
+ *
9
+ * Pure: it reads the turn's `AgentEvent`s and the facts the App passes in.
10
+ * Persistence of the anti-nag counter lives in `suggestion-ledger.ts`.
11
+ */
12
+ import { REVIEW_EXEMPT_WRITES, SKILL_TOOL_NAME } from '@namzu/sdk';
13
+ import { SAVE_SKILL_TOOL_NAME } from '../../skills/save.js';
14
+ /** `skills.suggestMinToolCalls` when the config does not say. */
15
+ export const DEFAULT_SUGGEST_MIN_TOOL_CALLS = 6;
16
+ /** Distinct tools a turn must have used. One tool run many times is a loop, not a procedure. */
17
+ export const SUGGEST_MIN_DISTINCT_TOOLS = 2;
18
+ /** How many of the last tool results must have succeeded. */
19
+ export const SUGGEST_CLEAN_TAIL = 3;
20
+ /**
21
+ * What the kernel writes in place of a result for a call that never ran
22
+ * (`deniedToolOutput`): a review the operator rejected, a gate rule, a mode
23
+ * that refuses the tool.
24
+ */
25
+ const DENIED_OUTPUT = /^Error: Tool "([^"]+)" was not executed\./;
26
+ export function createTurnActivity() {
27
+ return {
28
+ steps: 0,
29
+ tools: new Set(),
30
+ changedSomething: false,
31
+ results: [],
32
+ unresolvedDenials: new Set(),
33
+ skillUsed: false,
34
+ savedSkill: false,
35
+ ending: 'running',
36
+ started: new Map(),
37
+ };
38
+ }
39
+ /** Feed one event of the turn. Events of other kinds are ignored. */
40
+ export function observeTurnEvent(activity, event) {
41
+ switch (event.kind) {
42
+ case 'tool-start': {
43
+ activity.started.set(event.toolUseId, {
44
+ toolName: event.toolName,
45
+ readOnly: event.readOnly === true,
46
+ });
47
+ if (event.toolName === SKILL_TOOL_NAME)
48
+ activity.skillUsed = true;
49
+ if (event.toolName === SAVE_SKILL_TOOL_NAME)
50
+ activity.savedSkill = true;
51
+ return;
52
+ }
53
+ case 'tool-end': {
54
+ const start = activity.started.get(event.toolUseId);
55
+ const toolName = start?.toolName ?? event.toolName;
56
+ if (toolName === SKILL_TOOL_NAME)
57
+ activity.skillUsed = true;
58
+ if (toolName === SAVE_SKILL_TOOL_NAME)
59
+ activity.savedSkill = true;
60
+ activity.results.push(!event.isError);
61
+ if (event.isError) {
62
+ const denied = DENIED_OUTPUT.exec(event.output ?? '');
63
+ if (denied)
64
+ activity.unresolvedDenials.add(denied[1] ?? toolName);
65
+ return;
66
+ }
67
+ activity.unresolvedDenials.delete(toolName);
68
+ if (REVIEW_EXEMPT_WRITES.has(toolName.toLowerCase()))
69
+ return;
70
+ activity.steps += 1;
71
+ activity.tools.add(toolName);
72
+ // A call with no start (a provider-hosted search) only reads.
73
+ if (start && !start.readOnly)
74
+ activity.changedSomething = true;
75
+ return;
76
+ }
77
+ case 'done':
78
+ activity.ending =
79
+ event.stopReason === undefined || event.stopReason === 'end_turn' ? 'answered' : 'stopped';
80
+ return;
81
+ case 'paused':
82
+ activity.ending = 'paused';
83
+ return;
84
+ case 'error':
85
+ activity.ending = 'failed';
86
+ return;
87
+ default:
88
+ return;
89
+ }
90
+ }
91
+ /** Whether this turn earns the proposal. The order is cheapest reason first. */
92
+ export function judgeSkillSuggestion(activity, context) {
93
+ const no = (reason) => ({ suggest: false, reason });
94
+ if (context.suggest === false)
95
+ return no('turned-off');
96
+ if (activity.ending !== 'answered')
97
+ return no('not-answered');
98
+ if (context.planMode)
99
+ return no('plan-mode');
100
+ if (context.proposedInConversation)
101
+ return no('already-proposed');
102
+ if (context.skillUsedInConversation || activity.skillUsed)
103
+ return no('skill-used');
104
+ if (context.skillFlowTurn || activity.savedSkill)
105
+ return no('skill-flow');
106
+ const min = normaliseMinToolCalls(context.minToolCalls);
107
+ if (activity.steps < min)
108
+ return no('too-few-steps');
109
+ if (activity.tools.size < SUGGEST_MIN_DISTINCT_TOOLS)
110
+ return no('one-tool');
111
+ if (!activity.changedSomething)
112
+ return no('read-only');
113
+ const tail = activity.results.slice(-SUGGEST_CLEAN_TAIL);
114
+ if (tail.some((ok) => !ok))
115
+ return no('failing-tail');
116
+ if (activity.unresolvedDenials.size > 0)
117
+ return no('unresolved-denial');
118
+ return { suggest: true, steps: activity.steps, tools: activity.tools.size };
119
+ }
120
+ function normaliseMinToolCalls(value) {
121
+ return value !== undefined && Number.isInteger(value) && value >= 1
122
+ ? value
123
+ : DEFAULT_SUGGEST_MIN_TOOL_CALLS;
124
+ }
125
+ /** The dim row under the reply. */
126
+ export function skillSuggestionNotice(steps, tools) {
127
+ return `That took ${steps} steps across ${tools} tools. Save it as a reusable skill? /skills save [name] · /skills save off to stop suggesting`;
128
+ }
129
+ /** Said once, in place of the proposal that would have followed three ignored ones. */
130
+ export const SUGGESTIONS_STOPPED_NOTICE = 'Not suggesting skills any more: the last three suggestions went unused. /skills save on turns them back on.';
131
+ //# sourceMappingURL=learning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../../src/tui/skills/learning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAElE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG3D,iEAAiE;AACjE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAA;AAC/C,gGAAgG;AAChG,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAC3C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAEnC;;;;GAIG;AACH,MAAM,aAAa,GAAG,2CAA2C,CAAA;AAsBjE,MAAM,UAAU,kBAAkB;IACjC,OAAO;QACN,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,gBAAgB,EAAE,KAAK;QACvB,OAAO,EAAE,EAAE;QACX,iBAAiB,EAAE,IAAI,GAAG,EAAE;QAC5B,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,IAAI,GAAG,EAAE;KAClB,CAAA;AACF,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAC,QAAsB,EAAE,KAAiB;IACzE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,YAAY,CAAC,CAAC,CAAC;YACnB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;gBACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI;aACjC,CAAC,CAAA;YACF,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAe;gBAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAA;YACjE,IAAI,KAAK,CAAC,QAAQ,KAAK,oBAAoB;gBAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAA;YACvE,OAAM;QACP,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACnD,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAA;YAClD,IAAI,QAAQ,KAAK,eAAe;gBAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAA;YAC3D,IAAI,QAAQ,KAAK,oBAAoB;gBAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAA;YACjE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;gBACrD,IAAI,MAAM;oBAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAA;gBACjE,OAAM;YACP,CAAC;YACD,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC3C,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAAE,OAAM;YAC5D,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAA;YACnB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC5B,8DAA8D;YAC9D,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAAE,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC9D,OAAM;QACP,CAAC;QACD,KAAK,MAAM;YACV,QAAQ,CAAC,MAAM;gBACd,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;YAC3F,OAAM;QACP,KAAK,QAAQ;YACZ,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAA;YAC1B,OAAM;QACP,KAAK,OAAO;YACX,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAA;YAC1B,OAAM;QACP;YACC,OAAM;IACR,CAAC;AACF,CAAC;AAmCD,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CACnC,QAAsB,EACtB,OAA0B;IAE1B,MAAM,EAAE,GAAG,CAAC,MAAyB,EAAqB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACzF,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC,YAAY,CAAC,CAAA;IACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,EAAE,CAAC,cAAc,CAAC,CAAA;IAC7D,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;IAC5C,IAAI,OAAO,CAAC,sBAAsB;QAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAA;IACjE,IAAI,OAAO,CAAC,uBAAuB,IAAI,QAAQ,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC,YAAY,CAAC,CAAA;IAClF,IAAI,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC,YAAY,CAAC,CAAA;IACzE,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IACvD,IAAI,QAAQ,CAAC,KAAK,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC,eAAe,CAAC,CAAA;IACpD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,0BAA0B;QAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAA;IAC3E,IAAI,CAAC,QAAQ,CAAC,gBAAgB;QAAE,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAA;IACxD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC,cAAc,CAAC,CAAA;IACrD,IAAI,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAA;IACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AAC5E,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAyB;IACvD,OAAO,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAClE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,8BAA8B,CAAA;AAClC,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,KAAa;IACjE,OAAO,aAAa,KAAK,iBAAiB,KAAK,gGAAgG,CAAA;AAChJ,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,MAAM,0BAA0B,GACtC,6GAA6G,CAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `/skills save off|on`: write `skills.suggest` to the user config, then read
3
+ * the whole cascade back and say whether the value will take effect.
4
+ *
5
+ * The cascade replaces a top-level key whole, so a `skills` block in the
6
+ * project file, a selected profile or the managed file hides the user file's
7
+ * `skills.suggest` entirely (and the environment never sets it). Writing the
8
+ * user file and saying "done" would then be false the next time namzu starts.
9
+ * The running session follows the operator's choice either way; the message
10
+ * says so, and names the file that wins later.
11
+ */
12
+ import { type LoadConfigOptions } from '../../config/load.js';
13
+ export interface SkillSuggestionsWrite {
14
+ /** The user config written, or absent when the write failed. */
15
+ readonly file?: string;
16
+ /** What `skills.suggest` resolves to from the files after the write, when it could be read. */
17
+ readonly effective?: boolean;
18
+ /** The sentence for the transcript. */
19
+ readonly message: string;
20
+ }
21
+ export declare function setSkillSuggestions(on: boolean, opts?: Pick<LoadConfigOptions, 'cwd' | 'env' | 'home' | 'profile' | 'managedPath'>): SkillSuggestionsWrite;
22
+ //# sourceMappingURL=suggest-setting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-setting.d.ts","sourceRoot":"","sources":["../../../src/tui/skills/suggest-setting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,sBAAsB,CAAA;AAGvF,MAAM,WAAW,qBAAqB;IACrC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,mBAAmB,CAClC,EAAE,EAAE,OAAO,EACX,IAAI,GAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAM,GACpF,qBAAqB,CAqCvB"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `/skills save off|on`: write `skills.suggest` to the user config, then read
3
+ * the whole cascade back and say whether the value will take effect.
4
+ *
5
+ * The cascade replaces a top-level key whole, so a `skills` block in the
6
+ * project file, a selected profile or the managed file hides the user file's
7
+ * `skills.suggest` entirely (and the environment never sets it). Writing the
8
+ * user file and saying "done" would then be false the next time namzu starts.
9
+ * The running session follows the operator's choice either way; the message
10
+ * says so, and names the file that wins later.
11
+ */
12
+ import { formatConfigSource } from '../../config/debug.js';
13
+ import { loadConfigWithProvenance } from '../../config/load.js';
14
+ import { setUserConfigValue } from '../../config/user-config.js';
15
+ export function setSkillSuggestions(on, opts = {}) {
16
+ const value = on ? 'true' : 'false';
17
+ let file;
18
+ try {
19
+ file = setUserConfigValue(['skills', 'suggest'], on, {
20
+ ...(opts.home ? { home: opts.home } : {}),
21
+ ...(opts.env ? { env: opts.env } : {}),
22
+ });
23
+ }
24
+ catch (error) {
25
+ return {
26
+ message: `Could not save skills.suggest: ${error instanceof Error ? error.message : String(error)} This session ${on ? 'suggests skills' : 'stops suggesting skills'} until it ends.`,
27
+ };
28
+ }
29
+ const saved = on
30
+ ? `Skill suggestions are on: after a multi-step task you will be offered /skills save. Saved skills.suggest: ${value} to ${file}.`
31
+ : `Skill suggestions are off. Saved skills.suggest: ${value} to ${file}; /skills save on turns them back on. /skills save and /skills new still work.`;
32
+ let resolved;
33
+ try {
34
+ resolved = loadConfigWithProvenance(opts);
35
+ }
36
+ catch (error) {
37
+ return {
38
+ file,
39
+ message: `${saved} Could not check the other config files (${error instanceof Error ? error.message : String(error)}), so a project, profile or managed skills block may still override it when namzu next starts; this session follows your choice.`,
40
+ };
41
+ }
42
+ const effective = resolved.config.skills?.suggest ?? true;
43
+ if (effective === on)
44
+ return { file, effective, message: saved };
45
+ const source = resolved.provenance.skills;
46
+ const winner = source && source.kind !== 'user-file' && source.kind !== 'default'
47
+ ? formatConfigSource(source)
48
+ : 'another config layer';
49
+ return {
50
+ file,
51
+ effective,
52
+ message: `${saved} But ${winner} sets its own skills block, which replaces the user file's, so from the next start skills.suggest will be ${effective ? 'true' : 'false'}. Add suggest: ${value} under skills there to make it stick; this session follows your choice.`,
53
+ };
54
+ }
55
+ //# sourceMappingURL=suggest-setting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-setting.js","sourceRoot":"","sources":["../../../src/tui/skills/suggest-setting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAA0B,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAWhE,MAAM,UAAU,mBAAmB,CAClC,EAAW,EACX,OAAoF,EAAE;IAEtF,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;IACnC,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACJ,IAAI,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE;YACpD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtC,CAAC,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,OAAO,EAAE,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,yBAAyB,iBAAiB;SACrL,CAAA;IACF,CAAC;IACD,MAAM,KAAK,GAAG,EAAE;QACf,CAAC,CAAC,6GAA6G,KAAK,OAAO,IAAI,GAAG;QAClI,CAAC,CAAC,oDAAoD,KAAK,OAAO,IAAI,gFAAgF,CAAA;IACvJ,IAAI,QAAqD,CAAA;IACzD,IAAI,CAAC;QACJ,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,IAAI;YACJ,OAAO,EAAE,GAAG,KAAK,4CAA4C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,kIAAkI;SACrP,CAAA;IACF,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAA;IACzD,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAA;IACzC,MAAM,MAAM,GACX,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QACjE,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC5B,CAAC,CAAC,sBAAsB,CAAA;IAC1B,OAAO;QACN,IAAI;QACJ,SAAS;QACT,OAAO,EAAE,GAAG,KAAK,QAAQ,MAAM,6GAA6G,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAAkB,KAAK,yEAAyE;KACxQ,CAAA;AACF,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * How many skill proposals in a row went unused, across conversations.
3
+ *
4
+ * `NAMZU_HOME/skills/.suggestions.json`. A proposal counts as unused until
5
+ * the operator types `/skills save`; the fourth proposal after three unused
6
+ * ones is replaced by a single line saying proposals have stopped, and none
7
+ * follow until `/skills save on`. A missing or unreadable file reads as a
8
+ * fresh start: the worst case is one more dim line.
9
+ */
10
+ /** Proposals left unused in a row before they stop. */
11
+ export declare const SUGGESTION_IGNORE_LIMIT = 3;
12
+ export interface SuggestionLedger {
13
+ readonly v: 1;
14
+ /** Proposals shown since the operator last used `/skills save`. */
15
+ readonly unanswered: number;
16
+ /** Proposals stopped after {@link SUGGESTION_IGNORE_LIMIT} unused ones. */
17
+ readonly stopped: boolean;
18
+ }
19
+ export declare const FRESH_LEDGER: SuggestionLedger;
20
+ export declare function suggestionLedgerPath(namzuHome: string): string;
21
+ export declare function readSuggestionLedger(namzuHome: string): SuggestionLedger;
22
+ /** Best effort: a ledger that cannot be written leaves proposals as they were. */
23
+ export declare function writeSuggestionLedger(namzuHome: string, ledger: SuggestionLedger): void;
24
+ export type SuggestionAdmission = {
25
+ readonly show: 'proposal';
26
+ readonly next: SuggestionLedger;
27
+ } | {
28
+ readonly show: 'stopped-notice';
29
+ readonly next: SuggestionLedger;
30
+ } | {
31
+ readonly show: 'nothing';
32
+ };
33
+ /** A turn earned a proposal: may it be shown, and what the ledger becomes. */
34
+ export declare function admitSuggestion(ledger: SuggestionLedger): SuggestionAdmission;
35
+ //# sourceMappingURL=suggestion-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion-ledger.d.ts","sourceRoot":"","sources":["../../../src/tui/skills/suggestion-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,uDAAuD;AACvD,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAA;IACb,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CACzB;AAED,eAAO,MAAM,YAAY,EAAE,gBAA0D,CAAA;AAErF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAcxE;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAUvF;AAED,MAAM,MAAM,mBAAmB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAE/B,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,CAM7E"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * How many skill proposals in a row went unused, across conversations.
3
+ *
4
+ * `NAMZU_HOME/skills/.suggestions.json`. A proposal counts as unused until
5
+ * the operator types `/skills save`; the fourth proposal after three unused
6
+ * ones is replaced by a single line saying proposals have stopped, and none
7
+ * follow until `/skills save on`. A missing or unreadable file reads as a
8
+ * fresh start: the worst case is one more dim line.
9
+ */
10
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
11
+ import { dirname, join } from 'node:path';
12
+ /** Proposals left unused in a row before they stop. */
13
+ export const SUGGESTION_IGNORE_LIMIT = 3;
14
+ export const FRESH_LEDGER = { v: 1, unanswered: 0, stopped: false };
15
+ export function suggestionLedgerPath(namzuHome) {
16
+ return join(namzuHome, 'skills', '.suggestions.json');
17
+ }
18
+ export function readSuggestionLedger(namzuHome) {
19
+ try {
20
+ const raw = JSON.parse(readFileSync(suggestionLedgerPath(namzuHome), 'utf8'));
21
+ const unanswered = typeof raw.unanswered === 'number' && Number.isInteger(raw.unanswered) && raw.unanswered >= 0
22
+ ? raw.unanswered
23
+ : 0;
24
+ return { v: 1, unanswered, stopped: raw.stopped === true };
25
+ }
26
+ catch {
27
+ return FRESH_LEDGER;
28
+ }
29
+ }
30
+ /** Best effort: a ledger that cannot be written leaves proposals as they were. */
31
+ export function writeSuggestionLedger(namzuHome, ledger) {
32
+ const path = suggestionLedgerPath(namzuHome);
33
+ try {
34
+ mkdirSync(dirname(path), { recursive: true });
35
+ const temp = `${path}.${process.pid}.tmp`;
36
+ writeFileSync(temp, `${JSON.stringify(ledger)}\n`, { mode: 0o600 });
37
+ renameSync(temp, path);
38
+ }
39
+ catch {
40
+ // Nothing depends on it but the anti-nag count.
41
+ }
42
+ }
43
+ /** A turn earned a proposal: may it be shown, and what the ledger becomes. */
44
+ export function admitSuggestion(ledger) {
45
+ if (ledger.stopped)
46
+ return { show: 'nothing' };
47
+ if (ledger.unanswered >= SUGGESTION_IGNORE_LIMIT) {
48
+ return { show: 'stopped-notice', next: { ...ledger, stopped: true } };
49
+ }
50
+ return { show: 'proposal', next: { ...ledger, unanswered: ledger.unanswered + 1 } };
51
+ }
52
+ //# sourceMappingURL=suggestion-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion-ledger.js","sourceRoot":"","sources":["../../../src/tui/skills/suggestion-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,uDAAuD;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AAUxC,MAAM,CAAC,MAAM,YAAY,GAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAErF,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACrD,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACrD,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAG3E,CAAA;QACD,MAAM,UAAU,GACf,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC;YAC5F,CAAC,CAAC,GAAG,CAAC,UAAU;YAChB,CAAC,CAAC,CAAC,CAAA;QACL,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAA;IAC3D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,YAAY,CAAA;IACpB,CAAC;AACF,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,MAAwB;IAChF,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAC5C,IAAI,CAAC;QACJ,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAA;QACzC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACnE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACR,gDAAgD;IACjD,CAAC;AACF,CAAC;AAOD,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,MAAwB;IACvD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IAC9C,IAAI,MAAM,CAAC,UAAU,IAAI,uBAAuB,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAA;IACtE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,EAAE,CAAA;AACpF,CAAC"}
@@ -60,6 +60,11 @@ export type SlashAction = {
60
60
  kind: 'provider-setup';
61
61
  } | {
62
62
  kind: 'goal-picker';
63
+ }
64
+ /** `/browser [status] | profile [<name>]`, answered by App against the session's browser. */
65
+ | {
66
+ kind: 'browser';
67
+ args: readonly string[];
63
68
  } | {
64
69
  kind: 'goal-editor';
65
70
  edit: boolean;
@@ -142,6 +147,21 @@ export type SlashAction = {
142
147
  } | {
143
148
  kind: 'load-skill';
144
149
  name: string;
150
+ }
151
+ /** `/skills new [idea]`: start the skill-creator interview. */
152
+ | {
153
+ kind: 'new-skill';
154
+ idea: string;
155
+ }
156
+ /** `/skills save [name]`: turn this conversation's work into a skill. */
157
+ | {
158
+ kind: 'save-skill';
159
+ name?: string;
160
+ }
161
+ /** `/skills save off|on`: stop or resume proposing skills after a task. */
162
+ | {
163
+ kind: 'skill-suggestions';
164
+ on: boolean;
145
165
  } | {
146
166
  kind: 'resume';
147
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"slashCommands.d.ts","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slashCommands.d.ts","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ import { isMemoryType, kernelHostCommands, } from '@namzu/sdk';
29
29
  import { renderConfigDebug } from '../config/debug.js';
30
30
  import { effectivePermissionMode, isPermissionMode, permissionModeDescription, permissionModeLabel, } from '../permissions/mode.js';
31
31
  import { readChangelog, renderReleaseNotes } from '../release-notes.js';
32
+ import { SKILL_NAME_MAX_CHARS, SKILL_NAME_PATTERN } from '../skills/save.js';
32
33
  import { ARGUMENTS_TOKEN, expandCommand } from '../user-commands/store.js';
33
34
  import { isCompletionArgument } from './login-prompt.js';
34
35
  function renameConversationAction(_ctx, args) {
@@ -330,6 +331,45 @@ export const CLI_LOCAL_COMMANDS = [
330
331
  return { kind: 'host-command', name: 'goal', args };
331
332
  },
332
333
  },
334
+ {
335
+ name: 'schedule',
336
+ description: 'Scheduled jobs that run while namzu is closed: list, confirm, pause, run, add.',
337
+ help: {
338
+ usage: [
339
+ '/schedule',
340
+ '/schedule confirm|pause|resume|run|remove <job>',
341
+ '/schedule add <name> "<when>" <read-only|edit-in-folder> <prompt…>',
342
+ ],
343
+ details: [
344
+ 'A run waiting for your approval is answered with /resume of its conversation in its folder.',
345
+ 'The scheduler itself is installed with `namzu schedule install`.',
346
+ ],
347
+ },
348
+ action: (_ctx, args) => ({ kind: 'host-command', name: 'schedule', args }),
349
+ },
350
+ {
351
+ name: 'browser',
352
+ description: 'The browser this session drives: engine, profile, site rules; switch profile.',
353
+ help: {
354
+ usage: ['/browser', '/browser profile <name>'],
355
+ details: [
356
+ 'A profile holds your sign-ins; sign in once with `namzu browser login <profile> <url>`.',
357
+ 'Site rules come from `browser.sites` in your config.',
358
+ ],
359
+ },
360
+ action: (_ctx, args) => ({ kind: 'browser', args }),
361
+ },
362
+ {
363
+ name: 'loop',
364
+ description: 'Re-send a prompt to this conversation on an interval, between turns.',
365
+ help: {
366
+ usage: ['/loop <interval> <prompt or /command>', '/loop list', '/loop stop <id>|all'],
367
+ details: [
368
+ '5m, 1h, or a five-field cron expression. Fires once when idle, never once per missed interval; expires after 7 days.',
369
+ ],
370
+ },
371
+ action: (_ctx, args) => ({ kind: 'host-command', name: 'loop', args }),
372
+ },
333
373
  {
334
374
  name: 'help',
335
375
  description: 'Browse commands, or show usage with /help <command>.',
@@ -553,14 +593,46 @@ export const CLI_LOCAL_COMMANDS = [
553
593
  },
554
594
  {
555
595
  name: 'skills',
556
- help: { usage: ['/skills', '/skills list', '/skills <name>'] },
557
- description: 'Choose an available skill; use /skills list for the full roster.',
596
+ help: {
597
+ usage: [
598
+ '/skills',
599
+ '/skills list',
600
+ '/skills new [what it should do]',
601
+ '/skills save [name]',
602
+ '/skills save off|on',
603
+ '/skills <name>',
604
+ ],
605
+ details: [
606
+ '/skills new starts the skill-creator interview; the model drafts a SKILL.md and nothing is saved until you choose where on its confirmation screen.',
607
+ '/skills save turns what this conversation just did into a skill, generalised and without secrets or tool output, ending on the same confirmation screen.',
608
+ '/skills save off stops the proposal printed after a multi-step task, in your user config; /skills save on turns it back on.',
609
+ ],
610
+ },
611
+ description: 'Choose an available skill; /skills list shows them all, /skills new makes one.',
558
612
  action: (_ctx, args) => {
559
613
  const choice = args.join(' ').trim();
560
614
  if (choice.length === 0)
561
615
  return { kind: 'skill-picker' };
562
616
  if (choice.toLowerCase() === 'list')
563
617
  return { kind: 'list-skills' };
618
+ if (args[0]?.toLowerCase() === 'new')
619
+ return { kind: 'new-skill', idea: args.slice(1).join(' ').trim() };
620
+ if (args[0]?.toLowerCase() === 'save') {
621
+ const rest = args.slice(1).join(' ').trim();
622
+ const word = rest.toLowerCase();
623
+ if (word === 'off' || word === 'on')
624
+ return { kind: 'skill-suggestions', on: word === 'on' };
625
+ if (rest.length === 0)
626
+ return { kind: 'save-skill' };
627
+ if (!SKILL_NAME_PATTERN.test(rest) || rest.length > SKILL_NAME_MAX_CHARS) {
628
+ return {
629
+ kind: 'message',
630
+ role: 'system',
631
+ content: `"${rest}" is not a skill name: use lowercase letters, digits and single hyphens, at most ${SKILL_NAME_MAX_CHARS} characters (/skills save release-notes).`,
632
+ };
633
+ }
634
+ return { kind: 'save-skill', name: rest };
635
+ }
564
636
  return { kind: 'load-skill', name: choice };
565
637
  },
566
638
  },
@@ -1390,6 +1462,8 @@ function describeRule(rule) {
1390
1462
  const where = rule.target === 'both' ? 'name+args' : rule.target;
1391
1463
  return `${verb} ${where} matching ${rule.pattern}`;
1392
1464
  }
1465
+ case 'predicate':
1466
+ return `decide ${rule.description}`;
1393
1467
  default: {
1394
1468
  const exhaustive = rule;
1395
1469
  return `unrecognised rule: ${JSON.stringify(exhaustive)}`;