@namzu/cli 29.0.0 → 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 (390) hide show
  1. package/CHANGELOG.md +146 -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/permissions/checks.d.ts.map +1 -1
  125. package/dist/permissions/checks.js +7 -1
  126. package/dist/permissions/checks.js.map +1 -1
  127. package/dist/permissions/rules.d.ts.map +1 -1
  128. package/dist/permissions/rules.js +4 -8
  129. package/dist/permissions/rules.js.map +1 -1
  130. package/dist/schedule/build.d.ts +79 -0
  131. package/dist/schedule/build.d.ts.map +1 -0
  132. package/dist/schedule/build.js +246 -0
  133. package/dist/schedule/build.js.map +1 -0
  134. package/dist/schedule/changes.d.ts +22 -0
  135. package/dist/schedule/changes.d.ts.map +1 -0
  136. package/dist/schedule/changes.js +55 -0
  137. package/dist/schedule/changes.js.map +1 -0
  138. package/dist/schedule/commands/add.d.ts +24 -0
  139. package/dist/schedule/commands/add.d.ts.map +1 -0
  140. package/dist/schedule/commands/add.js +459 -0
  141. package/dist/schedule/commands/add.js.map +1 -0
  142. package/dist/schedule/commands/args.d.ts +22 -0
  143. package/dist/schedule/commands/args.d.ts.map +1 -0
  144. package/dist/schedule/commands/args.js +80 -0
  145. package/dist/schedule/commands/args.js.map +1 -0
  146. package/dist/schedule/commands/confirm-prompt.d.ts +6 -0
  147. package/dist/schedule/commands/confirm-prompt.d.ts.map +1 -0
  148. package/dist/schedule/commands/confirm-prompt.js +21 -0
  149. package/dist/schedule/commands/confirm-prompt.js.map +1 -0
  150. package/dist/schedule/commands/lifecycle.d.ts +39 -0
  151. package/dist/schedule/commands/lifecycle.d.ts.map +1 -0
  152. package/dist/schedule/commands/lifecycle.js +585 -0
  153. package/dist/schedule/commands/lifecycle.js.map +1 -0
  154. package/dist/schedule/commands/list.d.ts +33 -0
  155. package/dist/schedule/commands/list.d.ts.map +1 -0
  156. package/dist/schedule/commands/list.js +202 -0
  157. package/dist/schedule/commands/list.js.map +1 -0
  158. package/dist/schedule/commands/logs.d.ts +7 -0
  159. package/dist/schedule/commands/logs.d.ts.map +1 -0
  160. package/dist/schedule/commands/logs.js +106 -0
  161. package/dist/schedule/commands/logs.js.map +1 -0
  162. package/dist/schedule/commands/service.d.ts +16 -0
  163. package/dist/schedule/commands/service.d.ts.map +1 -0
  164. package/dist/schedule/commands/service.js +458 -0
  165. package/dist/schedule/commands/service.js.map +1 -0
  166. package/dist/schedule/daemon/daemon.d.ts +156 -0
  167. package/dist/schedule/daemon/daemon.d.ts.map +1 -0
  168. package/dist/schedule/daemon/daemon.js +1248 -0
  169. package/dist/schedule/daemon/daemon.js.map +1 -0
  170. package/dist/schedule/daemon/endpoint.d.ts +38 -0
  171. package/dist/schedule/daemon/endpoint.d.ts.map +1 -0
  172. package/dist/schedule/daemon/endpoint.js +158 -0
  173. package/dist/schedule/daemon/endpoint.js.map +1 -0
  174. package/dist/schedule/daemon/exit.d.ts +8 -0
  175. package/dist/schedule/daemon/exit.d.ts.map +1 -0
  176. package/dist/schedule/daemon/exit.js +8 -0
  177. package/dist/schedule/daemon/exit.js.map +1 -0
  178. package/dist/schedule/daemon/log.d.ts +12 -0
  179. package/dist/schedule/daemon/log.d.ts.map +1 -0
  180. package/dist/schedule/daemon/log.js +53 -0
  181. package/dist/schedule/daemon/log.js.map +1 -0
  182. package/dist/schedule/daemon/notify.d.ts +31 -0
  183. package/dist/schedule/daemon/notify.d.ts.map +1 -0
  184. package/dist/schedule/daemon/notify.js +89 -0
  185. package/dist/schedule/daemon/notify.js.map +1 -0
  186. package/dist/schedule/daemon/retention.d.ts +16 -0
  187. package/dist/schedule/daemon/retention.d.ts.map +1 -0
  188. package/dist/schedule/daemon/retention.js +46 -0
  189. package/dist/schedule/daemon/retention.js.map +1 -0
  190. package/dist/schedule/daemon/sessions.d.ts +23 -0
  191. package/dist/schedule/daemon/sessions.d.ts.map +1 -0
  192. package/dist/schedule/daemon/sessions.js +52 -0
  193. package/dist/schedule/daemon/sessions.js.map +1 -0
  194. package/dist/schedule/env.d.ts +28 -0
  195. package/dist/schedule/env.d.ts.map +1 -0
  196. package/dist/schedule/env.js +99 -0
  197. package/dist/schedule/env.js.map +1 -0
  198. package/dist/schedule/fire/browser-preflight.d.ts +41 -0
  199. package/dist/schedule/fire/browser-preflight.d.ts.map +1 -0
  200. package/dist/schedule/fire/browser-preflight.js +73 -0
  201. package/dist/schedule/fire/browser-preflight.js.map +1 -0
  202. package/dist/schedule/fire/fire.d.ts +78 -0
  203. package/dist/schedule/fire/fire.d.ts.map +1 -0
  204. package/dist/schedule/fire/fire.js +482 -0
  205. package/dist/schedule/fire/fire.js.map +1 -0
  206. package/dist/schedule/fire/result.d.ts +13 -0
  207. package/dist/schedule/fire/result.d.ts.map +1 -0
  208. package/dist/schedule/fire/result.js +18 -0
  209. package/dist/schedule/fire/result.js.map +1 -0
  210. package/dist/schedule/fire/unattended-note.d.ts +22 -0
  211. package/dist/schedule/fire/unattended-note.d.ts.map +1 -0
  212. package/dist/schedule/fire/unattended-note.js +46 -0
  213. package/dist/schedule/fire/unattended-note.js.map +1 -0
  214. package/dist/schedule/floor.d.ts +116 -0
  215. package/dist/schedule/floor.d.ts.map +1 -0
  216. package/dist/schedule/floor.js +1051 -0
  217. package/dist/schedule/floor.js.map +1 -0
  218. package/dist/schedule/folder.d.ts +34 -0
  219. package/dist/schedule/folder.d.ts.map +1 -0
  220. package/dist/schedule/folder.js +84 -0
  221. package/dist/schedule/folder.js.map +1 -0
  222. package/dist/schedule/paths.d.ts +49 -0
  223. package/dist/schedule/paths.d.ts.map +1 -0
  224. package/dist/schedule/paths.js +53 -0
  225. package/dist/schedule/paths.js.map +1 -0
  226. package/dist/schedule/policy.d.ts +141 -0
  227. package/dist/schedule/policy.d.ts.map +1 -0
  228. package/dist/schedule/policy.js +378 -0
  229. package/dist/schedule/policy.js.map +1 -0
  230. package/dist/schedule/resume-command.d.ts +36 -0
  231. package/dist/schedule/resume-command.d.ts.map +1 -0
  232. package/dist/schedule/resume-command.js +72 -0
  233. package/dist/schedule/resume-command.js.map +1 -0
  234. package/dist/schedule/service/detect.d.ts +22 -0
  235. package/dist/schedule/service/detect.d.ts.map +1 -0
  236. package/dist/schedule/service/detect.js +29 -0
  237. package/dist/schedule/service/detect.js.map +1 -0
  238. package/dist/schedule/service/index.d.ts +48 -0
  239. package/dist/schedule/service/index.d.ts.map +1 -0
  240. package/dist/schedule/service/index.js +352 -0
  241. package/dist/schedule/service/index.js.map +1 -0
  242. package/dist/schedule/service/launchd.d.ts +24 -0
  243. package/dist/schedule/service/launchd.d.ts.map +1 -0
  244. package/dist/schedule/service/launchd.js +84 -0
  245. package/dist/schedule/service/launchd.js.map +1 -0
  246. package/dist/schedule/service/manifest.d.ts +44 -0
  247. package/dist/schedule/service/manifest.d.ts.map +1 -0
  248. package/dist/schedule/service/manifest.js +16 -0
  249. package/dist/schedule/service/manifest.js.map +1 -0
  250. package/dist/schedule/service/names.d.ts +9 -0
  251. package/dist/schedule/service/names.d.ts.map +1 -0
  252. package/dist/schedule/service/names.js +22 -0
  253. package/dist/schedule/service/names.js.map +1 -0
  254. package/dist/schedule/service/quote.d.ts +24 -0
  255. package/dist/schedule/service/quote.d.ts.map +1 -0
  256. package/dist/schedule/service/quote.js +64 -0
  257. package/dist/schedule/service/quote.js.map +1 -0
  258. package/dist/schedule/service/runner.d.ts +17 -0
  259. package/dist/schedule/service/runner.d.ts.map +1 -0
  260. package/dist/schedule/service/runner.js +31 -0
  261. package/dist/schedule/service/runner.js.map +1 -0
  262. package/dist/schedule/service/systemd.d.ts +37 -0
  263. package/dist/schedule/service/systemd.d.ts.map +1 -0
  264. package/dist/schedule/service/systemd.js +96 -0
  265. package/dist/schedule/service/systemd.js.map +1 -0
  266. package/dist/schedule/service/windows-task.d.ts +51 -0
  267. package/dist/schedule/service/windows-task.d.ts.map +1 -0
  268. package/dist/schedule/service/windows-task.js +134 -0
  269. package/dist/schedule/service/windows-task.js.map +1 -0
  270. package/dist/schedule/service/wsl.d.ts +57 -0
  271. package/dist/schedule/service/wsl.d.ts.map +1 -0
  272. package/dist/schedule/service/wsl.js +111 -0
  273. package/dist/schedule/service/wsl.js.map +1 -0
  274. package/dist/schedule/store/atomic.d.ts +43 -0
  275. package/dist/schedule/store/atomic.d.ts.map +1 -0
  276. package/dist/schedule/store/atomic.js +135 -0
  277. package/dist/schedule/store/atomic.js.map +1 -0
  278. package/dist/schedule/store/claims.d.ts +26 -0
  279. package/dist/schedule/store/claims.d.ts.map +1 -0
  280. package/dist/schedule/store/claims.js +57 -0
  281. package/dist/schedule/store/claims.js.map +1 -0
  282. package/dist/schedule/store/digest.d.ts +18 -0
  283. package/dist/schedule/store/digest.d.ts.map +1 -0
  284. package/dist/schedule/store/digest.js +139 -0
  285. package/dist/schedule/store/digest.js.map +1 -0
  286. package/dist/schedule/store/history.d.ts +21 -0
  287. package/dist/schedule/store/history.d.ts.map +1 -0
  288. package/dist/schedule/store/history.js +114 -0
  289. package/dist/schedule/store/history.js.map +1 -0
  290. package/dist/schedule/store/jobs.d.ts +61 -0
  291. package/dist/schedule/store/jobs.d.ts.map +1 -0
  292. package/dist/schedule/store/jobs.js +210 -0
  293. package/dist/schedule/store/jobs.js.map +1 -0
  294. package/dist/schedule/store/state.d.ts +19 -0
  295. package/dist/schedule/store/state.d.ts.map +1 -0
  296. package/dist/schedule/store/state.js +38 -0
  297. package/dist/schedule/store/state.js.map +1 -0
  298. package/dist/schedule/types.d.ts +256 -0
  299. package/dist/schedule/types.d.ts.map +1 -0
  300. package/dist/schedule/types.js +9 -0
  301. package/dist/schedule/types.js.map +1 -0
  302. package/dist/skills/catalog.d.ts +96 -0
  303. package/dist/skills/catalog.d.ts.map +1 -0
  304. package/dist/skills/catalog.js +226 -0
  305. package/dist/skills/catalog.js.map +1 -0
  306. package/dist/skills/save.d.ts +148 -0
  307. package/dist/skills/save.d.ts.map +1 -0
  308. package/dist/skills/save.js +344 -0
  309. package/dist/skills/save.js.map +1 -0
  310. package/dist/skills/store.d.ts +103 -16
  311. package/dist/skills/store.d.ts.map +1 -1
  312. package/dist/skills/store.js +230 -29
  313. package/dist/skills/store.js.map +1 -1
  314. package/dist/tui/App.d.ts.map +1 -1
  315. package/dist/tui/App.js +591 -72
  316. package/dist/tui/App.js.map +1 -1
  317. package/dist/tui/LiveActivity.d.ts +8 -1
  318. package/dist/tui/LiveActivity.d.ts.map +1 -1
  319. package/dist/tui/LiveActivity.js +20 -4
  320. package/dist/tui/LiveActivity.js.map +1 -1
  321. package/dist/tui/PermissionOverlay.d.ts +24 -4
  322. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  323. package/dist/tui/PermissionOverlay.js +113 -15
  324. package/dist/tui/PermissionOverlay.js.map +1 -1
  325. package/dist/tui/SaveSkillOverlay.d.ts +33 -0
  326. package/dist/tui/SaveSkillOverlay.d.ts.map +1 -0
  327. package/dist/tui/SaveSkillOverlay.js +118 -0
  328. package/dist/tui/SaveSkillOverlay.js.map +1 -0
  329. package/dist/tui/agent.d.ts +185 -5
  330. package/dist/tui/agent.d.ts.map +1 -1
  331. package/dist/tui/agent.js +325 -54
  332. package/dist/tui/agent.js.map +1 -1
  333. package/dist/tui/browser-notices.d.ts +33 -0
  334. package/dist/tui/browser-notices.d.ts.map +1 -0
  335. package/dist/tui/browser-notices.js +102 -0
  336. package/dist/tui/browser-notices.js.map +1 -0
  337. package/dist/tui/permission-review.d.ts.map +1 -1
  338. package/dist/tui/permission-review.js +53 -4
  339. package/dist/tui/permission-review.js.map +1 -1
  340. package/dist/tui/schedule/host-commands.d.ts +34 -0
  341. package/dist/tui/schedule/host-commands.d.ts.map +1 -0
  342. package/dist/tui/schedule/host-commands.js +309 -0
  343. package/dist/tui/schedule/host-commands.js.map +1 -0
  344. package/dist/tui/schedule/integration.d.ts +62 -0
  345. package/dist/tui/schedule/integration.d.ts.map +1 -0
  346. package/dist/tui/schedule/integration.js +145 -0
  347. package/dist/tui/schedule/integration.js.map +1 -0
  348. package/dist/tui/schedule/loop-host.d.ts +42 -0
  349. package/dist/tui/schedule/loop-host.d.ts.map +1 -0
  350. package/dist/tui/schedule/loop-host.js +153 -0
  351. package/dist/tui/schedule/loop-host.js.map +1 -0
  352. package/dist/tui/schedule/resume.d.ts +122 -0
  353. package/dist/tui/schedule/resume.d.ts.map +1 -0
  354. package/dist/tui/schedule/resume.js +324 -0
  355. package/dist/tui/schedule/resume.js.map +1 -0
  356. package/dist/tui/schedule/startup.d.ts +11 -0
  357. package/dist/tui/schedule/startup.d.ts.map +1 -0
  358. package/dist/tui/schedule/startup.js +121 -0
  359. package/dist/tui/schedule/startup.js.map +1 -0
  360. package/dist/tui/schedule/tool-host.d.ts +44 -0
  361. package/dist/tui/schedule/tool-host.d.ts.map +1 -0
  362. package/dist/tui/schedule/tool-host.js +294 -0
  363. package/dist/tui/schedule/tool-host.js.map +1 -0
  364. package/dist/tui/skills/learning.d.ts +74 -0
  365. package/dist/tui/skills/learning.d.ts.map +1 -0
  366. package/dist/tui/skills/learning.js +131 -0
  367. package/dist/tui/skills/learning.js.map +1 -0
  368. package/dist/tui/skills/suggest-setting.d.ts +22 -0
  369. package/dist/tui/skills/suggest-setting.d.ts.map +1 -0
  370. package/dist/tui/skills/suggest-setting.js +55 -0
  371. package/dist/tui/skills/suggest-setting.js.map +1 -0
  372. package/dist/tui/skills/suggestion-ledger.d.ts +35 -0
  373. package/dist/tui/skills/suggestion-ledger.d.ts.map +1 -0
  374. package/dist/tui/skills/suggestion-ledger.js +52 -0
  375. package/dist/tui/skills/suggestion-ledger.js.map +1 -0
  376. package/dist/tui/slashCommands.d.ts +20 -0
  377. package/dist/tui/slashCommands.d.ts.map +1 -1
  378. package/dist/tui/slashCommands.js +76 -2
  379. package/dist/tui/slashCommands.js.map +1 -1
  380. package/dist/tui/turn-interruption.d.ts +20 -1
  381. package/dist/tui/turn-interruption.d.ts.map +1 -1
  382. package/dist/tui/turn-interruption.js +43 -0
  383. package/dist/tui/turn-interruption.js.map +1 -1
  384. package/dist/tui/types.d.ts +9 -1
  385. package/dist/tui/types.d.ts.map +1 -1
  386. package/package.json +5 -3
  387. package/skills/README.md +15 -0
  388. package/skills/browser-automation/SKILL.md +84 -0
  389. package/skills/schedule-task/SKILL.md +140 -0
  390. package/skills/skill-creator/SKILL.md +101 -0
@@ -2,22 +2,37 @@
2
2
  * Skill loader — agentskills.io-style `SKILL.md` files.
3
3
  *
4
4
  * A skill is a directory containing a `SKILL.md` with YAML frontmatter
5
- * (`name`, `description`) and a markdown body. Skills are discovered from
6
- * two roots:
7
- * - user: `~/.namzu/skills/<name>/SKILL.md`
8
- * - project: `<cwd>/.namzu/skills/<name>/SKILL.md`
9
- * - legacy project: `<cwd>/skills/<name>/SKILL.md`
5
+ * (`name`, `description`) and a markdown body. Skills are discovered from six
6
+ * tiers, lowest precedence first; a later tier shadows an earlier one's skill
7
+ * of the same name:
10
8
  *
11
- * Project skills shadow user skills with the same name. The TUI lists them
12
- * (`/skills`) and activates one (`/skill <name>`) by injecting its body
13
- * into the agent's system prompt for subsequent turns.
9
+ * 1. system: `<package>/skills/<name>/SKILL.md` (shipped with the CLI)
10
+ * 2. `~/.agents/skills/<name>/SKILL.md` (shared with other agents)
11
+ * 3. `~/.namzu/skills/<name>/SKILL.md`
12
+ * 4. legacy project: `<cwd>/skills/<name>/SKILL.md`
13
+ * 5. `.agents/skills/<name>/SKILL.md` in every directory from the checkout's
14
+ * root down to `<cwd>` (deeper wins)
15
+ * 6. project: `<cwd>/.namzu/skills/<name>/SKILL.md`
16
+ *
17
+ * The operator lists them (`/skills list`, `namzu skills`) and activates one
18
+ * (`/skills <name>`) by injecting its body into the system prompt; the model
19
+ * sees them through the session catalog (`catalog.ts`) and loads one with
20
+ * the kernel's `skill` tool.
14
21
  */
15
- export type SkillSource = 'user' | 'project';
22
+ import type { SkillsConfig } from '../config/schema.js';
23
+ /** Who a skill belongs to: shipped with the CLI, the operator's, or the project's. */
24
+ export type SkillSource = 'system' | 'user' | 'project';
25
+ /** The directory family a skill was found in, lowest precedence first. */
26
+ export type SkillTier = 'system' | 'agents-user' | 'user' | 'legacy-project' | 'agents-project' | 'project';
27
+ /** Precedence order, lowest first. A later tier shadows an earlier one. */
28
+ export declare const SKILL_TIERS: readonly SkillTier[];
16
29
  export interface SkillInfo {
17
30
  readonly name: string;
18
31
  readonly description: string;
19
32
  readonly path: string;
20
33
  readonly source: SkillSource;
34
+ /** The directory family it came from; see {@link SKILL_TIERS}. */
35
+ readonly tier: SkillTier;
21
36
  /**
22
37
  * Why this skill cannot be used, when it cannot.
23
38
  *
@@ -25,15 +40,60 @@ export interface SkillInfo {
25
40
  * loaded with the metadata missing, but refusing it must not take the rest
26
41
  * of the roster with it: one unreadable file in `~/.namzu/skills` would
27
42
  * otherwise leave the operator with no skills and no reason. So it stays in
28
- * the list, named, carrying the reason it is unusable.
43
+ * the list, named, carrying the reason it is unusable. A skill named in
44
+ * `skills.disabled` is listed the same way.
29
45
  */
30
46
  readonly problem?: string;
47
+ /** Named in the config's `skills.disabled`. */
48
+ readonly disabled?: boolean;
49
+ /**
50
+ * `operator` when the author wrote `invocation: operator` or
51
+ * `disable-model-invocation: true`: the model is never offered it.
52
+ */
53
+ readonly invocation?: 'model' | 'operator' | 'both';
54
+ /** Tools the session must have for the model to be offered it (`metadata.namzu-requires-tools`). */
55
+ readonly requiresTools?: readonly string[];
56
+ /** Lower-precedence `SKILL.md` files of the same name this one hides. */
57
+ readonly shadows?: readonly string[];
31
58
  }
59
+ export interface SkillDiscoveryOptions {
60
+ /** The operator's home directory; `~/.agents` and `~/.namzu` resolve under it. */
61
+ readonly home?: string;
62
+ readonly cwd?: string;
63
+ readonly config?: SkillsConfig;
64
+ /** The system tier's directory. Defaults to the one shipped in this package. */
65
+ readonly systemDir?: string;
66
+ }
67
+ /**
68
+ * The built-in skills shipped in this package's `skills/` directory.
69
+ *
70
+ * Resolved from this module's own location, so it is the same directory from
71
+ * `src/skills/store.ts` under the test runner and from `dist/skills/store.js`
72
+ * in an installed package — both sit two levels below the package root.
73
+ */
74
+ export declare function systemSkillsDir(): string;
75
+ export declare function agentsUserSkillsDir(home?: string): string;
32
76
  export declare function userSkillsDir(home?: string): string;
33
77
  export declare function projectSkillsDir(cwd?: string): string;
78
+ /**
79
+ * Every `.agents/skills` from the checkout's root down to `cwd`, shallowest
80
+ * first. Outside a checkout, only `cwd`'s own.
81
+ *
82
+ * The root is the nearest ancestor holding a `.git` entry (a directory, or a
83
+ * file in a worktree). Directories above it are not read: a skill in
84
+ * `~/code/.agents/skills` belongs to no project in particular.
85
+ */
86
+ export declare function agentsProjectSkillsDirs(cwd?: string): string[];
87
+ /** The directories read, in precedence order (lowest first). */
88
+ export declare function skillRoots(opts?: SkillDiscoveryOptions): {
89
+ readonly tier: SkillTier;
90
+ readonly dir: string;
91
+ }[];
34
92
  interface ParsedSkill {
35
93
  readonly name?: string;
36
94
  readonly description?: string;
95
+ readonly invocation?: 'model' | 'operator' | 'both';
96
+ readonly requiresTools?: readonly string[];
37
97
  readonly body: string;
38
98
  }
39
99
  /**
@@ -67,13 +127,31 @@ interface ParsedSkill {
67
127
  */
68
128
  export declare function parseSkillMarkdown(raw: string, source?: string): ParsedSkill;
69
129
  /**
70
- * Discover all skills, project shadowing user on name clash. Returns an
71
- * empty list when no skill dirs exist.
130
+ * `metadata.namzu-requires-tools`: tool names separated by commas or spaces.
131
+ * Undefined when absent or empty.
132
+ */
133
+ export declare function parseRequiredTools(declared: string | undefined): readonly string[] | undefined;
134
+ /** Every skill found, winners and the ones they shadow. */
135
+ export interface SkillRoster {
136
+ /** One per name: the highest-precedence tier's, sorted by name. */
137
+ readonly skills: readonly SkillInfo[];
138
+ /** The lower-precedence files hidden by a winner, each naming the path that hides it. */
139
+ readonly shadowed: readonly (SkillInfo & {
140
+ readonly shadowedBy: string;
141
+ })[];
142
+ }
143
+ /**
144
+ * Discover every tier and resolve shadowing. A name in `skills.disabled` is
145
+ * kept in the list, marked, with the reason it cannot be used.
72
146
  */
73
- export declare function discoverSkills(opts?: {
74
- home?: string;
75
- cwd?: string;
76
- }): SkillInfo[];
147
+ export declare function discoverSkillRoster(opts?: SkillDiscoveryOptions): SkillRoster;
148
+ /**
149
+ * Discover all skills, the highest-precedence tier winning on a name clash.
150
+ * Returns an empty list when no skill dirs exist.
151
+ */
152
+ export declare function discoverSkills(opts?: SkillDiscoveryOptions): SkillInfo[];
153
+ /** How a tier reads in a listing: where the file lives, in the operator's words. */
154
+ export declare function skillTierLabel(tier: SkillTier): string;
77
155
  /** Read a skill's markdown body (frontmatter stripped). */
78
156
  export declare function loadSkillBody(info: SkillInfo): string;
79
157
  /** Compose the active-skills system block, or null when none are active. */
@@ -81,5 +159,14 @@ export declare function composeSkillsPrompt(active: ReadonlyArray<{
81
159
  name: string;
82
160
  body: string;
83
161
  }>): string | null;
162
+ /** What `/skills` says when no tier holds a skill. */
163
+ export declare const NO_SKILLS_FOUND = "No skills found. Add one at ~/.namzu/skills/<name>/SKILL.md, ~/.agents/skills/<name>/SKILL.md or ./.agents/skills/<name>/SKILL.md.";
164
+ /**
165
+ * `/skills list`: every skill with where it came from, what it hides, and why
166
+ * it cannot be used when it cannot. A refused skill is shown with its reason
167
+ * rather than hidden — dropping it silently would leave someone wondering
168
+ * where a file they can see on disk went.
169
+ */
170
+ export declare function renderSkillRoster(skills: readonly SkillInfo[], activeNames: ReadonlySet<string>): string;
84
171
  export {};
85
172
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;AAE5C,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEpE;AAMD,UAAU,WAAW;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAa,GAAG,WAAW,CAahF;AA8CD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,EAAE,CAStF;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAGrD;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,GAAG,IAAI,CASf"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"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"}
@@ -2,20 +2,59 @@
2
2
  * Skill loader — agentskills.io-style `SKILL.md` files.
3
3
  *
4
4
  * A skill is a directory containing a `SKILL.md` with YAML frontmatter
5
- * (`name`, `description`) and a markdown body. Skills are discovered from
6
- * two roots:
7
- * - user: `~/.namzu/skills/<name>/SKILL.md`
8
- * - project: `<cwd>/.namzu/skills/<name>/SKILL.md`
9
- * - legacy project: `<cwd>/skills/<name>/SKILL.md`
5
+ * (`name`, `description`) and a markdown body. Skills are discovered from six
6
+ * tiers, lowest precedence first; a later tier shadows an earlier one's skill
7
+ * of the same name:
10
8
  *
11
- * Project skills shadow user skills with the same name. The TUI lists them
12
- * (`/skills`) and activates one (`/skill <name>`) by injecting its body
13
- * into the agent's system prompt for subsequent turns.
9
+ * 1. system: `<package>/skills/<name>/SKILL.md` (shipped with the CLI)
10
+ * 2. `~/.agents/skills/<name>/SKILL.md` (shared with other agents)
11
+ * 3. `~/.namzu/skills/<name>/SKILL.md`
12
+ * 4. legacy project: `<cwd>/skills/<name>/SKILL.md`
13
+ * 5. `.agents/skills/<name>/SKILL.md` in every directory from the checkout's
14
+ * root down to `<cwd>` (deeper wins)
15
+ * 6. project: `<cwd>/.namzu/skills/<name>/SKILL.md`
16
+ *
17
+ * The operator lists them (`/skills list`, `namzu skills`) and activates one
18
+ * (`/skills <name>`) by injecting its body into the system prompt; the model
19
+ * sees them through the session catalog (`catalog.ts`) and loads one with
20
+ * the kernel's `skill` tool.
14
21
  */
15
- import { readFileSync, readdirSync } from 'node:fs';
16
- import { join } from 'node:path';
17
- import { parseFrontmatter } from '@namzu/sdk';
22
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
23
+ import { homedir } from 'node:os';
24
+ import { dirname, join, relative, resolve, sep } from 'node:path';
25
+ import { fileURLToPath } from 'node:url';
26
+ import { SKILL_FRONTMATTER_KEYS, parseFrontmatter } from '@namzu/sdk';
18
27
  import { namzuHomePath } from '../integrations/state/home.js';
28
+ /** Precedence order, lowest first. A later tier shadows an earlier one. */
29
+ export const SKILL_TIERS = [
30
+ 'system',
31
+ 'agents-user',
32
+ 'user',
33
+ 'legacy-project',
34
+ 'agents-project',
35
+ 'project',
36
+ ];
37
+ const TIER_SOURCE = {
38
+ system: 'system',
39
+ 'agents-user': 'user',
40
+ user: 'user',
41
+ 'legacy-project': 'project',
42
+ 'agents-project': 'project',
43
+ project: 'project',
44
+ };
45
+ /**
46
+ * The built-in skills shipped in this package's `skills/` directory.
47
+ *
48
+ * Resolved from this module's own location, so it is the same directory from
49
+ * `src/skills/store.ts` under the test runner and from `dist/skills/store.js`
50
+ * in an installed package — both sit two levels below the package root.
51
+ */
52
+ export function systemSkillsDir() {
53
+ return fileURLToPath(new URL('../../skills/', import.meta.url));
54
+ }
55
+ export function agentsUserSkillsDir(home) {
56
+ return join(home ?? homedir(), '.agents', 'skills');
57
+ }
19
58
  export function userSkillsDir(home) {
20
59
  return join(namzuHomePath(home), 'skills');
21
60
  }
@@ -25,6 +64,53 @@ export function projectSkillsDir(cwd = process.cwd()) {
25
64
  function legacyProjectSkillsDir(cwd = process.cwd()) {
26
65
  return join(cwd, 'skills');
27
66
  }
67
+ /**
68
+ * Every `.agents/skills` from the checkout's root down to `cwd`, shallowest
69
+ * first. Outside a checkout, only `cwd`'s own.
70
+ *
71
+ * The root is the nearest ancestor holding a `.git` entry (a directory, or a
72
+ * file in a worktree). Directories above it are not read: a skill in
73
+ * `~/code/.agents/skills` belongs to no project in particular.
74
+ */
75
+ export function agentsProjectSkillsDirs(cwd = process.cwd()) {
76
+ const start = resolve(cwd);
77
+ let root;
78
+ for (let dir = start;; dir = dirname(dir)) {
79
+ if (existsSync(join(dir, '.git'))) {
80
+ root = dir;
81
+ break;
82
+ }
83
+ if (dirname(dir) === dir)
84
+ break;
85
+ }
86
+ if (root === undefined)
87
+ return [join(start, '.agents', 'skills')];
88
+ const dirs = [root];
89
+ const rest = relative(root, start);
90
+ if (rest) {
91
+ let current = root;
92
+ for (const part of rest.split(sep)) {
93
+ current = join(current, part);
94
+ dirs.push(current);
95
+ }
96
+ }
97
+ return dirs.map((dir) => join(dir, '.agents', 'skills'));
98
+ }
99
+ /** The directories read, in precedence order (lowest first). */
100
+ export function skillRoots(opts = {}) {
101
+ const roots = [];
102
+ if (opts.config?.builtin !== false) {
103
+ roots.push({ tier: 'system', dir: opts.systemDir ?? systemSkillsDir() });
104
+ }
105
+ roots.push({ tier: 'agents-user', dir: agentsUserSkillsDir(opts.home) });
106
+ roots.push({ tier: 'user', dir: userSkillsDir(opts.home) });
107
+ roots.push({ tier: 'legacy-project', dir: legacyProjectSkillsDir(opts.cwd) });
108
+ for (const dir of agentsProjectSkillsDirs(opts.cwd))
109
+ roots.push({ tier: 'agents-project', dir });
110
+ roots.push({ tier: 'project', dir: projectSkillsDir(opts.cwd) });
111
+ return roots;
112
+ }
113
+ const READS_SKILL_KEY = (key) => SKILL_FRONTMATTER_KEYS.includes(key);
28
114
  /**
29
115
  * Split `SKILL.md` into frontmatter (name/description) + body.
30
116
  *
@@ -57,21 +143,65 @@ function legacyProjectSkillsDir(cwd = process.cwd()) {
57
143
  export function parseSkillMarkdown(raw, source = 'SKILL.md') {
58
144
  if (!raw.trimStart().startsWith('---'))
59
145
  return { body: raw.trim() };
60
- const { values, body } = parseFrontmatter(raw, source);
146
+ // The kernel loader's vocabulary: a key it does not read is skipped whole,
147
+ // so a skill written for another agent (`argument-hint: [file]`) is not
148
+ // refused here over a field nothing reads. `allowed-tools` may be a YAML
149
+ // list, as the Agent Skills format writes it; the kernel's loader accepts
150
+ // the same.
151
+ const { values, body } = parseFrontmatter(raw, source, {
152
+ lists: ['allowed-tools'],
153
+ readsKey: READS_SKILL_KEY,
154
+ });
61
155
  // A non-scalar `name` or `description` is dropped rather than rendered:
62
156
  // there is no sensible string for a block of indented pairs, and the
63
157
  // fallbacks below (directory name, "(no description)") are the honest
64
158
  // answer for a key that did not carry one.
65
159
  const name = values.name?.kind === 'scalar' ? values.name.value : undefined;
66
160
  const description = values.description?.kind === 'scalar' ? values.description.value : undefined;
67
- return { name, description, body };
161
+ const declared = values.invocation?.kind === 'scalar' ? values.invocation.value : undefined;
162
+ const disableModel = values['disable-model-invocation']?.kind === 'scalar'
163
+ ? values['disable-model-invocation'].value
164
+ : undefined;
165
+ const invocation = disableModel === 'true'
166
+ ? 'operator'
167
+ : declared === 'model' || declared === 'operator' || declared === 'both'
168
+ ? declared
169
+ : undefined;
170
+ const metadata = values.metadata?.kind === 'mapping' ? values.metadata.entries : undefined;
171
+ const requiresTools = parseRequiredTools(metadata && Object.hasOwn(metadata, 'namzu-requires-tools')
172
+ ? metadata['namzu-requires-tools']
173
+ : undefined);
174
+ return {
175
+ name,
176
+ description,
177
+ ...(invocation ? { invocation } : {}),
178
+ ...(requiresTools ? { requiresTools } : {}),
179
+ body,
180
+ };
181
+ }
182
+ /**
183
+ * `metadata.namzu-requires-tools`: tool names separated by commas or spaces.
184
+ * Undefined when absent or empty.
185
+ */
186
+ export function parseRequiredTools(declared) {
187
+ if (declared === undefined)
188
+ return undefined;
189
+ const names = declared
190
+ .split(/[\s,]+/)
191
+ .map((name) => name.trim())
192
+ .filter((name) => name.length > 0);
193
+ return names.length > 0 ? names : undefined;
68
194
  }
69
- function readSkillsFrom(dir, source) {
195
+ function readSkillsFrom(dir, tier) {
196
+ const source = TIER_SOURCE[tier];
70
197
  let entries;
71
198
  try {
72
199
  entries = readdirSync(dir, { withFileTypes: true })
73
- .filter((e) => e.isDirectory())
74
- .map((e) => e.name);
200
+ // Hidden and `_`-prefixed entries are not skills, as in the kernel's
201
+ // own discovery: `.gitkeep`-style placeholders and drafts stay out.
202
+ .filter((e) => e.isDirectory() && !e.name.startsWith('.') && !e.name.startsWith('_'))
203
+ .map((e) => e.name)
204
+ .sort();
75
205
  }
76
206
  catch {
77
207
  return [];
@@ -99,6 +229,7 @@ function readSkillsFrom(dir, source) {
99
229
  description: '(could not be read)',
100
230
  path,
101
231
  source,
232
+ tier,
102
233
  problem: err instanceof Error ? err.message : String(err),
103
234
  });
104
235
  continue;
@@ -108,26 +239,71 @@ function readSkillsFrom(dir, source) {
108
239
  description: parsed.description ?? '(no description)',
109
240
  path,
110
241
  source,
242
+ tier,
243
+ ...(parsed.invocation ? { invocation: parsed.invocation } : {}),
244
+ ...(parsed.requiresTools ? { requiresTools: parsed.requiresTools } : {}),
111
245
  });
112
246
  }
113
247
  return skills;
114
248
  }
115
249
  /**
116
- * Discover all skills, project shadowing user on name clash. Returns an
117
- * empty list when no skill dirs exist.
250
+ * Discover every tier and resolve shadowing. A name in `skills.disabled` is
251
+ * kept in the list, marked, with the reason it cannot be used.
118
252
  */
119
- export function discoverSkills(opts = {}) {
120
- const user = readSkillsFrom(userSkillsDir(opts.home), 'user');
121
- const legacyProject = readSkillsFrom(legacyProjectSkillsDir(opts.cwd), 'project');
122
- const project = readSkillsFrom(projectSkillsDir(opts.cwd), 'project');
253
+ export function discoverSkillRoster(opts = {}) {
254
+ const disabled = new Set(opts.config?.disabled ?? []);
123
255
  const byName = new Map();
124
- for (const s of user)
125
- byName.set(s.name, s);
126
- for (const s of legacyProject)
127
- byName.set(s.name, s);
128
- for (const s of project)
129
- byName.set(s.name, s); // project wins
130
- return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
256
+ for (const root of skillRoots(opts)) {
257
+ for (const skill of readSkillsFrom(root.dir, root.tier)) {
258
+ const list = byName.get(skill.name) ?? [];
259
+ list.push(skill);
260
+ byName.set(skill.name, list);
261
+ }
262
+ }
263
+ const skills = [];
264
+ const shadowed = [];
265
+ for (const [name, found] of byName) {
266
+ const winner = found[found.length - 1];
267
+ const hidden = found.slice(0, -1).reverse();
268
+ for (const lower of hidden)
269
+ shadowed.push({ ...lower, shadowedBy: winner.path });
270
+ skills.push({
271
+ ...winner,
272
+ ...(hidden.length > 0 ? { shadows: hidden.map((lower) => lower.path) } : {}),
273
+ ...(disabled.has(name)
274
+ ? {
275
+ disabled: true,
276
+ problem: winner.problem ?? 'disabled by skills.disabled in the config',
277
+ }
278
+ : {}),
279
+ });
280
+ }
281
+ skills.sort((a, b) => a.name.localeCompare(b.name));
282
+ return { skills, shadowed };
283
+ }
284
+ /**
285
+ * Discover all skills, the highest-precedence tier winning on a name clash.
286
+ * Returns an empty list when no skill dirs exist.
287
+ */
288
+ export function discoverSkills(opts = {}) {
289
+ return [...discoverSkillRoster(opts).skills];
290
+ }
291
+ /** How a tier reads in a listing: where the file lives, in the operator's words. */
292
+ export function skillTierLabel(tier) {
293
+ switch (tier) {
294
+ case 'system':
295
+ return 'built-in';
296
+ case 'agents-user':
297
+ return '~/.agents/skills';
298
+ case 'user':
299
+ return '~/.namzu/skills';
300
+ case 'legacy-project':
301
+ return './skills';
302
+ case 'agents-project':
303
+ return '.agents/skills';
304
+ case 'project':
305
+ return './.namzu/skills';
306
+ }
131
307
  }
132
308
  /** Read a skill's markdown body (frontmatter stripped). */
133
309
  export function loadSkillBody(info) {
@@ -147,4 +323,29 @@ export function composeSkillsPrompt(active) {
147
323
  blocks.join('\n\n'),
148
324
  ].join('\n');
149
325
  }
326
+ /** What `/skills` says when no tier holds a skill. */
327
+ export const NO_SKILLS_FOUND = 'No skills found. Add one at ~/.namzu/skills/<name>/SKILL.md, ~/.agents/skills/<name>/SKILL.md or ./.agents/skills/<name>/SKILL.md.';
328
+ /**
329
+ * `/skills list`: every skill with where it came from, what it hides, and why
330
+ * it cannot be used when it cannot. A refused skill is shown with its reason
331
+ * rather than hidden — dropping it silently would leave someone wondering
332
+ * where a file they can see on disk went.
333
+ */
334
+ export function renderSkillRoster(skills, activeNames) {
335
+ const lines = [];
336
+ for (const s of skills) {
337
+ const where = skillTierLabel(s.tier);
338
+ if (s.problem)
339
+ lines.push(`! ${s.name} [${where}] — ${s.problem}`);
340
+ else
341
+ lines.push(`${activeNames.has(s.name) ? '● ' : '○ '}${s.name} [${where}] — ${s.description}`);
342
+ if (s.invocation === 'operator')
343
+ lines.push(' operator only: not offered to the model');
344
+ if (s.requiresTools)
345
+ lines.push(` offered to the model when these tools exist: ${s.requiresTools.join(', ')}`);
346
+ for (const hidden of s.shadows ?? [])
347
+ lines.push(` shadows ${hidden}`);
348
+ }
349
+ return `Skills (● active):\n ${lines.join('\n ')}`;
350
+ }
150
351
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAON,KAAK,OAAO,EAkBZ,MAAM,YAAY,CAAA;AA8JnB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAuDvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAa/D,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC1D,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAA;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAA;CAC3D;AAOD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC5B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AA0RrB,6EAA6E;AAC7E,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,MAAM,EAAE,CAM7F;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,MAAM,MAAM,EACpB,iBAAiB,GAAE,SAAS,MAAM,EAAO,GACvC,SAAS,iBAAiB,EAAE,CAqE9B;AAoHD,wBAAgB,GAAG,CAAC,EACnB,GAAG,EAAE,UAAU,EACf,aAAa,EACb,cAAsC,EACtC,eAAe,GACf,EAAE,QAAQ,2CAqmPV"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAON,KAAK,OAAO,EAmBZ,MAAM,YAAY,CAAA;AAkMnB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AA8DvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAa/D,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC1D,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAA;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAA;CAC3D;AASD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC5B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAmSrB,6EAA6E;AAC7E,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,MAAM,EAAE,CAM7F;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,MAAM,MAAM,EACpB,iBAAiB,GAAE,SAAS,MAAM,EAAO,GACvC,SAAS,iBAAiB,EAAE,CAqE9B;AAsHD,wBAAgB,GAAG,CAAC,EACnB,GAAG,EAAE,UAAU,EACf,aAAa,EACb,cAAsC,EACtC,eAAe,GACf,EAAE,QAAQ,2CA4oQV"}