@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,482 @@
1
+ /**
2
+ * `namzu schedule __fire`: one scheduled run, as a headless turn in the
3
+ * job's folder. Started only by the daemon (or `schedule run-now` without
4
+ * one), never by hand, and not listed in help.
5
+ *
6
+ * It composes what `exec` composes — trust, the project's config, a new
7
+ * conversation, `createAgentSession`, `send`, the provider wait — without
8
+ * sharing `exec`'s runner: `exec` resolves `prompt` into `auto` because
9
+ * nobody can answer, and a scheduled run must do the opposite. Here every
10
+ * batch that would reach a person is HELD (`SendOptions.reviewHold`): the
11
+ * turn parks durably, the run records `awaiting-approval`, and the operator
12
+ * answers later in the TUI.
13
+ *
14
+ * Checks before any model call, each ending the run as `blocked-config` with
15
+ * zero tokens spent: the job still exists at the revision the daemon
16
+ * claimed, is active and still matches its confirmation; the folder is the
17
+ * canonical folder trust was granted for and can be listed; the project's
18
+ * code-executing config is the one confirmed; every permission rule compiles;
19
+ * the pinned provider has a credential in the service's environment.
20
+ *
21
+ * The child's own watchdog enforces the wall clock: the kernel's turn
22
+ * timeout first, then, a minute later, it releases its session lease and
23
+ * exits. The daemon never kills a run by a pid it read from disk.
24
+ */
25
+ import { hostname } from 'node:os';
26
+ import { TurnCancelled, asSessionId, describeSchedule, hostTimeZone, releaseHeldSessionLeases, } from '@namzu/sdk';
27
+ import { pauseWait } from '../../commands/provider-wait.js';
28
+ import { readPermissionLayers } from '../../config/load.js';
29
+ import { resolveTrustedProjectContext } from '../../config/trusted-project-context.js';
30
+ import { sanitizeLine, summaryOf } from '../../integrations/notifications/desktop/sanitize.js';
31
+ import { closeSessions, openSessions, setTitle, startConversation, } from '../../integrations/sessions/store.js';
32
+ import { cliLogger, createStderrSink, installCliLogging } from '../../logging.js';
33
+ import { describeTurnInterruption, retryAfterMs } from '../../tui/turn-interruption.js';
34
+ import { readDaemonEnv } from '../env.js';
35
+ import { checkJobFolder, folderReadable } from '../folder.js';
36
+ import { compileJobPolicy, withheldTools } from '../policy.js';
37
+ import { computeProjectDigest, projectDigestChanges } from '../store/digest.js';
38
+ import { confirmationHolds, readJob } from '../store/jobs.js';
39
+ import { browserPreflight } from './browser-preflight.js';
40
+ import { writeRunResult } from './result.js';
41
+ import { unattendedNote } from './unattended-note.js';
42
+ export const HOLD_REASON = 'Scheduled run: waiting for the operator to approve';
43
+ /** How long past the turn's own timeout the child waits before it stops itself. */
44
+ export const WATCHDOG_GRACE_MS = 60_000;
45
+ export function parseFireArgs(argv) {
46
+ const get = (name) => {
47
+ const at = argv.indexOf(`--${name}`);
48
+ return at >= 0 ? argv[at + 1] : undefined;
49
+ };
50
+ const jobId = get('job');
51
+ const runId = get('run');
52
+ const key = get('key');
53
+ const revision = Number(get('revision'));
54
+ const trigger = (get('trigger') ?? 'scheduled');
55
+ if (!jobId || !runId || !key || !Number.isSafeInteger(revision)) {
56
+ return { error: '__fire needs --job, --run, --key and --revision' };
57
+ }
58
+ if (!['scheduled', 'late', 'catch-up', 'manual'].includes(trigger)) {
59
+ return { error: `__fire: unknown trigger ${trigger}` };
60
+ }
61
+ const scheduledFor = get('scheduled-for');
62
+ const daemonEpoch = get('epoch');
63
+ return {
64
+ jobId,
65
+ runId,
66
+ key,
67
+ revision,
68
+ trigger,
69
+ ...(scheduledFor ? { scheduledFor } : {}),
70
+ ...(daemonEpoch ? { daemonEpoch } : {}),
71
+ };
72
+ }
73
+ /** Where a credential came from, in words, and whether it is another program's. */
74
+ function credentialSource(source) {
75
+ switch (source.kind) {
76
+ case 'env':
77
+ return { text: `environment variable ${source.envName ?? ''}`.trim(), borrowed: false };
78
+ case 'claude-file':
79
+ return { text: `Claude Code's sign-in (${source.path ?? ''})`, borrowed: true };
80
+ case 'codex-file':
81
+ return { text: `Codex's sign-in (${source.path ?? ''})`, borrowed: true };
82
+ case 'gemini-file':
83
+ return { text: `Gemini CLI's sign-in (${source.path ?? ''})`, borrowed: true };
84
+ case 'stored':
85
+ return { text: `namzu's credential store (${source.path ?? ''})`, borrowed: false };
86
+ case 'keychain':
87
+ return { text: 'the system keychain', borrowed: true };
88
+ default:
89
+ return { text: source.kind, borrowed: false };
90
+ }
91
+ }
92
+ export const BORROWED_CREDENTIAL_WARNING = "This run used another program's sign-in. Refreshing it here can race that program's own refresh; store a credential with `namzu login` or daemon.env for unattended runs.";
93
+ /**
94
+ * Run one fire. Returns the exit code; the result file is the record. Exit
95
+ * codes follow `exec`: 0 completed or parked, 1 failed, 64 usage, 75 the
96
+ * provider stayed unavailable, 77 the folder is not trusted for this job.
97
+ */
98
+ export async function runFire(ctx, paths, args, deps = {}) {
99
+ const now = deps.now ?? (() => new Date());
100
+ const startedAt = now().toISOString();
101
+ if (!deps.keepLogging)
102
+ installCliLogging(createStderrSink('json'), 'info');
103
+ const log = cliLogger();
104
+ let sessionId;
105
+ let projectSlug;
106
+ let turnId;
107
+ const warnings = [];
108
+ const found = {};
109
+ const base = () => ({
110
+ v: 1,
111
+ kind: 'schedule-run-result',
112
+ runId: args.runId,
113
+ jobId: args.jobId,
114
+ startedAt,
115
+ ...(sessionId ? { sessionId } : {}),
116
+ ...(projectSlug ? { projectSlug } : {}),
117
+ ...(turnId ? { turnId } : {}),
118
+ ...(found.credential ? { credentialSource: found.credential } : {}),
119
+ ...(warnings.length > 0 ? { warnings: [...warnings] } : {}),
120
+ });
121
+ // Once the watchdog has recorded the wall clock, nothing after it rewrites the result.
122
+ let settledByWatchdog = false;
123
+ const finish = (status, exitCode, extra = {}) => {
124
+ if (settledByWatchdog)
125
+ return 1;
126
+ writeRunResult(paths, { ...base(), status, exitCode, endedAt: now().toISOString(), ...extra });
127
+ log.info('scheduled run finished', {
128
+ 'namzu.schedule.job_id': args.jobId,
129
+ 'namzu.schedule.run_id': args.runId,
130
+ 'namzu.schedule.status': status,
131
+ });
132
+ return exitCode;
133
+ };
134
+ const blocked = (reason, exitCode = 1) => finish('blocked-config', exitCode, { reason });
135
+ writeRunResult(paths, { ...base(), status: 'running', exitCode: 0 });
136
+ // ── the job, as claimed ───────────────────────────────────────────────
137
+ let job;
138
+ try {
139
+ job = readJob(paths, args.jobId);
140
+ }
141
+ catch (error) {
142
+ return blocked(error instanceof Error ? error.message : String(error));
143
+ }
144
+ if (!job)
145
+ return blocked('the job was removed before the run started');
146
+ if (job.revision !== args.revision) {
147
+ return blocked(`job changed: revision ${job.revision}, the run was claimed for ${args.revision}`);
148
+ }
149
+ if (job.state !== 'active')
150
+ return blocked(`the job is ${job.state}`);
151
+ if (!confirmationHolds(job)) {
152
+ return blocked(`job changed outside namzu since it was confirmed; run namzu schedule confirm ${job.name}`);
153
+ }
154
+ // ── the folder, as trusted ────────────────────────────────────────────
155
+ const folder = checkJobFolder(job.folder.path, { namzuHome: paths.home });
156
+ if (!folder.ok)
157
+ return blocked(folder.reason, 77);
158
+ if (folder.canonical !== job.folder.canonical || job.trust?.canonical !== folder.canonical) {
159
+ return blocked(`folder moved or replaced: ${job.folder.path} is now ${folder.canonical}, the job was confirmed for ${job.folder.canonical}`, 77);
160
+ }
161
+ const readable = folderReadable(folder.canonical);
162
+ if (!readable.ok)
163
+ return blocked(readable.reason);
164
+ const changed = projectDigestChanges(job.projectDigest, computeProjectDigest(folder.canonical));
165
+ if (changed.length > 0) {
166
+ return blocked(`project config changed since the job was confirmed (${changed.join(', ')}); run namzu schedule confirm ${job.name}`);
167
+ }
168
+ // ── what the run may do ───────────────────────────────────────────────
169
+ let projectCtx;
170
+ let layers;
171
+ try {
172
+ projectCtx = resolveTrustedProjectContext(ctx, folder.canonical);
173
+ // The user config is the scheduler's home's, whatever NAMZU_HOME the
174
+ // environment given to the run names (or leaves unset).
175
+ layers = readPermissionLayers({
176
+ cwd: folder.canonical,
177
+ env: { ...(deps.env ?? process.env), NAMZU_HOME: paths.home },
178
+ });
179
+ }
180
+ catch (error) {
181
+ return blocked(`config cannot be read: ${error instanceof Error ? error.message : String(error)}`);
182
+ }
183
+ const policy = compileJobPolicy(job.permissions, {
184
+ layers,
185
+ namzuHome: paths.home,
186
+ folder: job.folder,
187
+ });
188
+ if (policy.diagnostics.length > 0) {
189
+ // A rule someone believes is in force and that would be dropped is
190
+ // worse than not running.
191
+ return blocked(`permission rules do not compile: ${policy.diagnostics.join('; ')}`);
192
+ }
193
+ // ── the browser, when the job has one ─────────────────────────────────
194
+ const grant = job.permissions.browser;
195
+ let browser;
196
+ if (grant) {
197
+ const checked = await (deps.browserPreflight ?? browserPreflight)(grant, paths.home, {
198
+ env: deps.env ?? process.env,
199
+ });
200
+ if (!checked.ok)
201
+ return blocked(checked.reason);
202
+ browser = checked;
203
+ warnings.push(...checked.warnings);
204
+ }
205
+ // ── the provider, as the service sees it ──────────────────────────────
206
+ const daemonEnv = readDaemonEnv(paths.daemonEnv);
207
+ warnings.push(...daemonEnv.warnings);
208
+ const discoveryEnv = { ...(deps.env ?? process.env), ...daemonEnv.values };
209
+ const agent = deps.agent ?? (await import('../../tui/agent.js'));
210
+ const probe = await agent.probeAgentSession({ env: discoveryEnv });
211
+ const detected = probe.detected.find((d) => d.entry.id === job.model.provider);
212
+ if (!detected) {
213
+ return blocked(`no credential for ${job.model.provider} in the scheduler's environment; run namzu login, or put the key in ${paths.daemonEnv}`);
214
+ }
215
+ const source = credentialSource(detected.source);
216
+ found.credential = source.text;
217
+ if (source.borrowed)
218
+ warnings.push(BORROWED_CREDENTIAL_WARNING);
219
+ const prefs = {
220
+ version: 3,
221
+ providers: [
222
+ {
223
+ id: job.model.provider,
224
+ ...(job.model.model ? { model: job.model.model } : {}),
225
+ },
226
+ ],
227
+ subagents: { active: [] },
228
+ };
229
+ // ── the conversation ──────────────────────────────────────────────────
230
+ let sessions;
231
+ try {
232
+ sessions = await openSessions(folder.canonical, { stateRoot: paths.home });
233
+ projectSlug = sessions.slug;
234
+ sessionId = await startConversation(sessions, {
235
+ origin: { protocol: 'cli', kind: 'prompt' },
236
+ });
237
+ const when = args.scheduledFor ?? startedAt;
238
+ const tz = job.schedule.kind === 'cron' ? job.schedule.tz : undefined;
239
+ await setTitle(sessions, asSessionId(sessionId), `⏲ ${job.name} · ${describeWhen(when, tz)}`);
240
+ }
241
+ catch (error) {
242
+ return finish('failed', 1, {
243
+ reason: `the conversation could not be started: ${error instanceof Error ? error.message : String(error)}`,
244
+ });
245
+ }
246
+ writeRunResult(paths, { ...base(), status: 'running', exitCode: 0 });
247
+ const config = projectCtx.config;
248
+ const session = await agent.createAgentSession(prefs, [detected], {
249
+ cwd: folder.canonical,
250
+ stateRoot: paths.home,
251
+ conversationSessions: sessions,
252
+ scope: {
253
+ sessionId: asSessionId(sessionId),
254
+ topicId: sessions.topicId,
255
+ projectId: sessions.projectId,
256
+ tenantId: sessions.tenantId,
257
+ },
258
+ rules: policy.rules,
259
+ permissionMode: policy.mode,
260
+ withheldTools: withheldTools(job.permissions, policy),
261
+ ...(config.mcpServers ? { mcpServers: config.mcpServers } : {}),
262
+ ...(config.plugins ? { plugins: config.plugins } : {}),
263
+ ...(config.skills ? { skills: config.skills } : {}),
264
+ ...(config.hooks ? { hooks: config.hooks } : {}),
265
+ ...(policy.network && config.web ? { web: config.web } : {}),
266
+ ...(config.compaction ? { compaction: config.compaction } : {}),
267
+ ...(config.memory ? { memory: config.memory } : {}),
268
+ sandbox: job.permissions.execution === 'sandbox'
269
+ ? { ...(config.sandbox ?? {}), enabled: true }
270
+ : { enabled: false },
271
+ ...(job.permissions.additionalDirectories
272
+ ? { additionalDirectories: [...job.permissions.additionalDirectories] }
273
+ : {}),
274
+ ...(grant && browser
275
+ ? {
276
+ browser: {
277
+ profile: grant.profile,
278
+ engine: browser.engine,
279
+ headless: grant.headed ? 'never' : 'always',
280
+ // The host checks every landing against the same sites the
281
+ // gate was given: the grant, what a config file denies, and
282
+ // nothing else.
283
+ sites: {
284
+ ...grant.sites,
285
+ ...Object.fromEntries(layers.flatMap((layer) => layer.browserDenies ?? []).map((site) => [site, 'deny'])),
286
+ '*': 'deny',
287
+ },
288
+ home: paths.home,
289
+ mode: 'unattended',
290
+ },
291
+ }
292
+ : {}),
293
+ limits: {
294
+ maxIterations: job.budget.maxIterations,
295
+ tokenBudget: job.budget.tokenBudget,
296
+ timeoutMs: job.budget.timeoutMs,
297
+ },
298
+ });
299
+ const closeAll = async () => {
300
+ await session.close().catch(() => undefined);
301
+ closeSessions(sessions);
302
+ };
303
+ if (!session.hasProvider) {
304
+ await closeAll();
305
+ return blocked(session.errorHint ?? 'the provider could not be started');
306
+ }
307
+ if (session.mcpFailed.length > 0) {
308
+ await closeAll();
309
+ return blocked(`tool servers unavailable: ${session.mcpFailed.map((f) => `${f.name} (${f.reason})`).join(', ')}`);
310
+ }
311
+ // ── the turn ──────────────────────────────────────────────────────────
312
+ const abort = new AbortController();
313
+ const exit = deps.exit ?? ((code) => process.exit(code));
314
+ const watchdog = setTimeout(() => {
315
+ abort.abort(new TurnCancelled('user'));
316
+ void (async () => {
317
+ finish('timed-out', 1, {
318
+ reason: `the run exceeded its ${job.budget.timeoutMs} ms wall clock`,
319
+ });
320
+ settledByWatchdog = true;
321
+ await releaseHeldSessionLeases().catch(() => undefined);
322
+ exit(1);
323
+ })();
324
+ }, job.budget.timeoutMs + (deps.graceMs ?? WATCHDOG_GRACE_MS));
325
+ watchdog.unref();
326
+ let text = '';
327
+ let totalTokens;
328
+ let costUsd;
329
+ let paused = null;
330
+ let failed = null;
331
+ let stopReason;
332
+ const consume = async (stream) => {
333
+ paused = null;
334
+ failed = null;
335
+ for await (const event of stream) {
336
+ switch (event.kind) {
337
+ case 'delta':
338
+ text += event.text;
339
+ break;
340
+ case 'usage':
341
+ totalTokens = event.totalTokens;
342
+ costUsd = event.cost?.totalCost;
343
+ break;
344
+ case 'paused':
345
+ paused = event;
346
+ turnId = event.turnId;
347
+ failed = describeTurnInterruption(event);
348
+ break;
349
+ case 'error':
350
+ failed = describeTurnInterruption(event);
351
+ break;
352
+ case 'done':
353
+ if (event.text !== undefined)
354
+ text = event.text;
355
+ stopReason = event.stopReason;
356
+ if (event.turnId)
357
+ turnId = event.turnId;
358
+ break;
359
+ case 'tool-start':
360
+ log.info('scheduled run tool call', {
361
+ 'namzu.schedule.run_id': args.runId,
362
+ 'namzu.tool.name': event.toolName,
363
+ });
364
+ break;
365
+ }
366
+ }
367
+ };
368
+ try {
369
+ await consume(session.send([{ role: 'user', content: job.prompt, timestamp: Date.now() }], {
370
+ signal: abort.signal,
371
+ permissionMode: policy.mode,
372
+ reviewHold: { reason: HOLD_REASON },
373
+ systemNote: unattendedNote(job.name, {
374
+ browser: grant !== undefined,
375
+ now: now(),
376
+ tz: job.schedule.kind === 'cron' ? job.schedule.tz : hostTimeZone(),
377
+ }),
378
+ ...(job.model.effort ? { effort: job.model.effort } : {}),
379
+ }));
380
+ // A provider pause is waited out inside the job's budget, from the
381
+ // checkpoint, as `exec --wait-for-provider` does.
382
+ let waits = 0;
383
+ let waitedMs = 0;
384
+ for (;;) {
385
+ const current = paused;
386
+ if (!current || !(current.providerError || current.failure))
387
+ break;
388
+ const asked = retryAfterMs(current);
389
+ const decision = pauseWait({
390
+ waited: waits,
391
+ ...(asked !== undefined ? { retryAfterMs: asked } : {}),
392
+ waitedMs,
393
+ budgetMs: job.budget.waitForProviderMs,
394
+ });
395
+ if (decision.kind === 'stop') {
396
+ await closeAll();
397
+ clearTimeout(watchdog);
398
+ return finish('failed', 75, {
399
+ reason: `${failed ?? 'the provider paused the turn'}; not resumed: ${decision.reason}`,
400
+ ...(asked !== undefined ? { retryAfterMs: asked } : {}),
401
+ });
402
+ }
403
+ waits++;
404
+ await new Promise((resolve) => setTimeout(resolve, decision.delayMs));
405
+ waitedMs += decision.delayMs;
406
+ await consume(session.resumePaused({
407
+ turnId: current.turnId,
408
+ checkpointId: current.checkpointId,
409
+ signal: abort.signal,
410
+ permissionMode: policy.mode,
411
+ reviewHold: { reason: HOLD_REASON },
412
+ }));
413
+ }
414
+ }
415
+ finally {
416
+ clearTimeout(watchdog);
417
+ }
418
+ await closeAll();
419
+ const usage = {
420
+ ...(totalTokens !== undefined ? { totalTokens } : {}),
421
+ ...(costUsd !== undefined ? { costUsd } : {}),
422
+ };
423
+ const withUsage = Object.keys(usage).length > 0 ? { usage } : {};
424
+ const summary = summaryOf(text);
425
+ const parked = paused;
426
+ if (parked) {
427
+ // A tool that asked for a person parks the run the same way a held
428
+ // batch does: the operator continues it from the TUI. The reason is
429
+ // what they have to do, so it is recorded as the reason.
430
+ const handoff = parked.handoff ? sanitizeLine(handoffReason(parked.handoff), 300) : '';
431
+ return finish('awaiting-approval', 0, {
432
+ reason: handoff || parked.reason,
433
+ ...(handoff ? { handoff: { reason: handoff } } : {}),
434
+ ...(summary ? { summary } : {}),
435
+ ...withUsage,
436
+ });
437
+ }
438
+ if (failed)
439
+ return finish('failed', 1, { reason: failed, ...(summary ? { summary } : {}), ...withUsage });
440
+ if (stopReason === 'timeout') {
441
+ return finish('timed-out', 1, {
442
+ reason: `the turn reached its ${job.budget.timeoutMs} ms time limit`,
443
+ ...(summary ? { summary } : {}),
444
+ ...withUsage,
445
+ });
446
+ }
447
+ if (stopReason && stopReason !== 'end_turn') {
448
+ return finish('failed', 1, {
449
+ reason: `the turn did not finish normally: ${stopReason}`,
450
+ ...(summary ? { summary } : {}),
451
+ ...withUsage,
452
+ });
453
+ }
454
+ return finish('completed', 0, { ...(summary ? { summary } : {}), ...withUsage });
455
+ }
456
+ /**
457
+ * What a parked run tells the operator it needs: the tool's reason, and for
458
+ * the browser the command that signs in again. "http://… is showing a
459
+ * sign-in page" alone, in a notification and `schedule list`, left what to
460
+ * do unsaid.
461
+ */
462
+ export function handoffReason(handoff) {
463
+ const login = handoff.detail?.tool === 'browser' ? handoff.detail.loginCommand : undefined;
464
+ return login ? `${handoff.reason}; sign in again with ${login}` : handoff.reason;
465
+ }
466
+ function describeWhen(iso, tz) {
467
+ try {
468
+ return new Intl.DateTimeFormat('en-GB', {
469
+ dateStyle: 'medium',
470
+ timeStyle: 'short',
471
+ ...(tz ? { timeZone: tz } : {}),
472
+ }).format(new Date(iso));
473
+ }
474
+ catch {
475
+ return iso;
476
+ }
477
+ }
478
+ /** A one-line description for logs and notifications; never the prompt. */
479
+ export function describeJob(job) {
480
+ return `${job.name} (${describeSchedule(job.schedule, job.schedule.kind === 'cron' ? { tz: job.schedule.tz } : {})}) on ${hostname()}`;
481
+ }
482
+ //# sourceMappingURL=fire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fire.js","sourceRoot":"","sources":["../../../src/schedule/fire/fire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `schedule/runs/<job-id>/<run-id>.json`: what a fire child leaves behind.
3
+ * Written first when the run starts (so a session id is visible while it
4
+ * runs) and again when it ends. The daemon finalises from this file, never
5
+ * from an exit code alone.
6
+ */
7
+ import type { SchedulePaths } from '../paths.js';
8
+ import type { ScheduleRunResult } from '../types.js';
9
+ export declare function writeRunResult(paths: SchedulePaths, result: ScheduleRunResult): void;
10
+ export declare function readRunResult(paths: SchedulePaths, jobId: string, runId: string): ScheduleRunResult | undefined;
11
+ /** Whether a result is final (the child is done with it). */
12
+ export declare function isFinal(result: ScheduleRunResult | undefined): boolean;
13
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/schedule/fire/result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAEpF;AAED,wBAAgB,aAAa,CAC5B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAE/B;AAED,6DAA6D;AAC7D,wBAAgB,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAEtE"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `schedule/runs/<job-id>/<run-id>.json`: what a fire child leaves behind.
3
+ * Written first when the run starts (so a session id is visible while it
4
+ * runs) and again when it ends. The daemon finalises from this file, never
5
+ * from an exit code alone.
6
+ */
7
+ import { readVersioned, writeJsonAtomic } from '../store/atomic.js';
8
+ export function writeRunResult(paths, result) {
9
+ writeJsonAtomic(paths.runResult(result.jobId, result.runId), result);
10
+ }
11
+ export function readRunResult(paths, jobId, runId) {
12
+ return readVersioned(paths.runResult(jobId, runId), 'schedule-run-result');
13
+ }
14
+ /** Whether a result is final (the child is done with it). */
15
+ export function isFinal(result) {
16
+ return result !== undefined && result.status !== 'running';
17
+ }
18
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/schedule/fire/result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGnE,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,MAAyB;IAC7E,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,aAAa,CAC5B,KAAoB,EACpB,KAAa,EACb,KAAa;IAEb,OAAO,aAAa,CAAoB,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAA;AAC9F,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,OAAO,CAAC,MAAqC;IAC5D,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAA;AAC3D,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The current time where the job runs, for a turn that has no clock of its
3
+ * own: `Wednesday 23 September 2026 at 21:04 GMT+03:00 (Europe/Istanbul)`.
4
+ * The system prompt gives the date only, and a scheduled run with no shell
5
+ * wrote "Günaydın! (18:04)" at 21:04, having guessed the time in UTC.
6
+ */
7
+ export declare function localTimeText(now: Date, tz: string): string;
8
+ /**
9
+ * The time, said so that the model uses it: one run was refused `date`, and
10
+ * the next, told the time, still tried `date` first.
11
+ */
12
+ export declare function currentTimeLine(now: Date, tz: string): string;
13
+ /**
14
+ * What a scheduled turn is told about its circumstances, in its system prompt.
15
+ */
16
+ export declare function unattendedNote(jobName: string, options?: {
17
+ readonly browser?: boolean;
18
+ /** The run's start, and the zone the job's times are in. */
19
+ readonly now?: Date;
20
+ readonly tz?: string;
21
+ }): string;
22
+ //# sourceMappingURL=unattended-note.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unattended-note.d.ts","sourceRoot":"","sources":["../../../src/schedule/fire/unattended-note.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAa3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACR,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CACf,GACJ,MAAM,CAcR"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The current time where the job runs, for a turn that has no clock of its
3
+ * own: `Wednesday 23 September 2026 at 21:04 GMT+03:00 (Europe/Istanbul)`.
4
+ * The system prompt gives the date only, and a scheduled run with no shell
5
+ * wrote "Günaydın! (18:04)" at 21:04, having guessed the time in UTC.
6
+ */
7
+ export function localTimeText(now, tz) {
8
+ const when = new Intl.DateTimeFormat('en-GB', {
9
+ weekday: 'long',
10
+ day: 'numeric',
11
+ month: 'long',
12
+ year: 'numeric',
13
+ hour: '2-digit',
14
+ minute: '2-digit',
15
+ hourCycle: 'h23',
16
+ timeZone: tz,
17
+ timeZoneName: 'longOffset',
18
+ }).format(now);
19
+ return `${when} (${tz})`;
20
+ }
21
+ /**
22
+ * The time, said so that the model uses it: one run was refused `date`, and
23
+ * the next, told the time, still tried `date` first.
24
+ */
25
+ export function currentTimeLine(now, tz) {
26
+ return `It is now ${localTimeText(now, tz)}. This is the current local time, already looked up: use it when the task needs the time, and do not run date or guess another.`;
27
+ }
28
+ /**
29
+ * What a scheduled turn is told about its circumstances, in its system prompt.
30
+ */
31
+ export function unattendedNote(jobName, options = {}) {
32
+ return [
33
+ `This turn is a scheduled run of the job "${jobName}". Nobody is watching it.`,
34
+ ...(options.now && options.tz ? [`- ${currentTimeLine(options.now, options.tz)}`] : []),
35
+ '- There is no one to answer questions: do not ask the user anything; decide, or say what you could not decide in your final answer.',
36
+ '- A call the job does not allow either is refused or waits for the operator to approve it later; the run then stops until they do. Prefer what the permissions allow.',
37
+ '- Background jobs (run_in_background) end when this run ends; do not leave servers running for later.',
38
+ "- Your final answer is the record of this run: say what you did and what you found, in a sentence first. Write it in the language the job's prompt is written in, not in English by default.",
39
+ ...(options.browser
40
+ ? [
41
+ '- The browser is signed in as the operator. If a page asks for a person (a sign-in, a password, a code, a CAPTCHA), the run stops there and the operator is told; do not try to get past it, never type a password or a code, and do not reach the same page another way.',
42
+ ]
43
+ : []),
44
+ ].join('\n');
45
+ }
46
+ //# sourceMappingURL=unattended-note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unattended-note.js","sourceRoot":"","sources":["../../../src/schedule/fire/unattended-note.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAS,EAAE,EAAU;IAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,YAAY;KAC1B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACd,OAAO,GAAG,IAAI,KAAK,EAAE,GAAG,CAAA;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAS,EAAE,EAAU;IACpD,OAAO,aAAa,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,iIAAiI,CAAA;AAC5K,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC7B,OAAe,EACf,UAKI,EAAE;IAEN,OAAO;QACN,4CAA4C,OAAO,2BAA2B;QAC9E,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,qIAAqI;QACrI,uKAAuK;QACvK,uGAAuG;QACvG,8LAA8L;QAC9L,GAAG,CAAC,OAAO,CAAC,OAAO;YAClB,CAAC,CAAC;gBACA,2QAA2Q;aAC3Q;YACF,CAAC,CAAC,EAAE,CAAC;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACb,CAAC"}