@namzu/cli 30.0.0 → 32.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/CHANGELOG.md +217 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +5 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/acp.d.ts +20 -2
  6. package/dist/commands/acp.d.ts.map +1 -1
  7. package/dist/commands/acp.js +42 -5
  8. package/dist/commands/acp.js.map +1 -1
  9. package/dist/commands/drain.d.ts.map +1 -1
  10. package/dist/commands/drain.js +2 -1
  11. package/dist/commands/drain.js.map +1 -1
  12. package/dist/commands/exec-json.d.ts.map +1 -1
  13. package/dist/commands/exec-json.js +24 -1
  14. package/dist/commands/exec-json.js.map +1 -1
  15. package/dist/commands/exec.d.ts.map +1 -1
  16. package/dist/commands/exec.js +2 -1
  17. package/dist/commands/exec.js.map +1 -1
  18. package/dist/commands/prior-messages.d.ts.map +1 -1
  19. package/dist/commands/prior-messages.js +42 -2
  20. package/dist/commands/prior-messages.js.map +1 -1
  21. package/dist/commands/schedule.d.ts.map +1 -1
  22. package/dist/commands/schedule.js +7 -5
  23. package/dist/commands/schedule.js.map +1 -1
  24. package/dist/config/composer-triggers.d.ts +41 -0
  25. package/dist/config/composer-triggers.d.ts.map +1 -0
  26. package/dist/config/composer-triggers.js +80 -0
  27. package/dist/config/composer-triggers.js.map +1 -0
  28. package/dist/config/load.d.ts.map +1 -1
  29. package/dist/config/load.js +58 -0
  30. package/dist/config/load.js.map +1 -1
  31. package/dist/config/schema.d.ts +34 -0
  32. package/dist/config/schema.d.ts.map +1 -1
  33. package/dist/config/schema.js.map +1 -1
  34. package/dist/context/doctrine.d.ts +3 -3
  35. package/dist/context/doctrine.d.ts.map +1 -1
  36. package/dist/context/doctrine.js +3 -3
  37. package/dist/context/doctrine.js.map +1 -1
  38. package/dist/context/runtime-message.d.ts.map +1 -1
  39. package/dist/context/runtime-message.js +4 -0
  40. package/dist/context/runtime-message.js.map +1 -1
  41. package/dist/integrations/mcp/servers.d.ts +72 -5
  42. package/dist/integrations/mcp/servers.d.ts.map +1 -1
  43. package/dist/integrations/mcp/servers.js +144 -23
  44. package/dist/integrations/mcp/servers.js.map +1 -1
  45. package/dist/integrations/plugins/runtime.d.ts +11 -9
  46. package/dist/integrations/plugins/runtime.d.ts.map +1 -1
  47. package/dist/integrations/plugins/runtime.js +17 -36
  48. package/dist/integrations/plugins/runtime.js.map +1 -1
  49. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  50. package/dist/integrations/resident/session-step.js +2 -1
  51. package/dist/integrations/resident/session-step.js.map +1 -1
  52. package/dist/integrations/sessions/store.d.ts.map +1 -1
  53. package/dist/integrations/sessions/store.js +20 -2
  54. package/dist/integrations/sessions/store.js.map +1 -1
  55. package/dist/integrations/subagents/NamzuCliAgent.d.ts +8 -0
  56. package/dist/integrations/subagents/NamzuCliAgent.d.ts.map +1 -0
  57. package/dist/integrations/subagents/NamzuCliAgent.js +9 -0
  58. package/dist/integrations/subagents/NamzuCliAgent.js.map +1 -0
  59. package/dist/integrations/subagents/runtime.d.ts +5 -4
  60. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  61. package/dist/integrations/subagents/runtime.js +46 -11
  62. package/dist/integrations/subagents/runtime.js.map +1 -1
  63. package/dist/integrations/web/search.d.ts.map +1 -1
  64. package/dist/integrations/web/search.js +8 -6
  65. package/dist/integrations/web/search.js.map +1 -1
  66. package/dist/permissions/rules.d.ts +5 -1
  67. package/dist/permissions/rules.d.ts.map +1 -1
  68. package/dist/permissions/rules.js +85 -3
  69. package/dist/permissions/rules.js.map +1 -1
  70. package/dist/schedule/build.d.ts +19 -2
  71. package/dist/schedule/build.d.ts.map +1 -1
  72. package/dist/schedule/build.js +119 -21
  73. package/dist/schedule/build.js.map +1 -1
  74. package/dist/schedule/changes.d.ts.map +1 -1
  75. package/dist/schedule/changes.js +13 -0
  76. package/dist/schedule/changes.js.map +1 -1
  77. package/dist/schedule/commands/add.d.ts +1 -1
  78. package/dist/schedule/commands/add.d.ts.map +1 -1
  79. package/dist/schedule/commands/add.js +186 -40
  80. package/dist/schedule/commands/add.js.map +1 -1
  81. package/dist/schedule/commands/list.d.ts +2 -0
  82. package/dist/schedule/commands/list.d.ts.map +1 -1
  83. package/dist/schedule/commands/list.js +64 -19
  84. package/dist/schedule/commands/list.js.map +1 -1
  85. package/dist/schedule/daemon/daemon.d.ts +1 -1
  86. package/dist/schedule/daemon/daemon.d.ts.map +1 -1
  87. package/dist/schedule/daemon/daemon.js +17 -5
  88. package/dist/schedule/daemon/daemon.js.map +1 -1
  89. package/dist/schedule/daemon/notify.d.ts +21 -1
  90. package/dist/schedule/daemon/notify.d.ts.map +1 -1
  91. package/dist/schedule/daemon/notify.js +43 -0
  92. package/dist/schedule/daemon/notify.js.map +1 -1
  93. package/dist/schedule/fire/fire.d.ts +1 -1
  94. package/dist/schedule/fire/fire.d.ts.map +1 -1
  95. package/dist/schedule/fire/fire.js +200 -14
  96. package/dist/schedule/fire/fire.js.map +1 -1
  97. package/dist/schedule/fire/result.d.ts +1 -1
  98. package/dist/schedule/fire/result.d.ts.map +1 -1
  99. package/dist/schedule/fire/result.js +2 -1
  100. package/dist/schedule/fire/result.js.map +1 -1
  101. package/dist/schedule/fire/run-script.d.ts +46 -0
  102. package/dist/schedule/fire/run-script.d.ts.map +1 -0
  103. package/dist/schedule/fire/run-script.js +81 -0
  104. package/dist/schedule/fire/run-script.js.map +1 -0
  105. package/dist/schedule/fire/unattended-note.d.ts +8 -0
  106. package/dist/schedule/fire/unattended-note.d.ts.map +1 -1
  107. package/dist/schedule/fire/unattended-note.js +5 -0
  108. package/dist/schedule/fire/unattended-note.js.map +1 -1
  109. package/dist/schedule/fire/wake-gate.d.ts +39 -0
  110. package/dist/schedule/fire/wake-gate.d.ts.map +1 -0
  111. package/dist/schedule/fire/wake-gate.js +90 -0
  112. package/dist/schedule/fire/wake-gate.js.map +1 -0
  113. package/dist/schedule/floor.d.ts +1 -1
  114. package/dist/schedule/floor.d.ts.map +1 -1
  115. package/dist/schedule/floor.js +288 -16
  116. package/dist/schedule/floor.js.map +1 -1
  117. package/dist/schedule/policy.d.ts +40 -0
  118. package/dist/schedule/policy.d.ts.map +1 -1
  119. package/dist/schedule/policy.js +36 -0
  120. package/dist/schedule/policy.js.map +1 -1
  121. package/dist/schedule/script-check.d.ts +53 -0
  122. package/dist/schedule/script-check.d.ts.map +1 -0
  123. package/dist/schedule/script-check.js +145 -0
  124. package/dist/schedule/script-check.js.map +1 -0
  125. package/dist/schedule/script-shell.d.ts +3 -0
  126. package/dist/schedule/script-shell.d.ts.map +1 -0
  127. package/dist/schedule/script-shell.js +5 -0
  128. package/dist/schedule/script-shell.js.map +1 -0
  129. package/dist/schedule/service/manifest.js +1 -1
  130. package/dist/schedule/service/manifest.js.map +1 -1
  131. package/dist/schedule/store/atomic.d.ts +5 -2
  132. package/dist/schedule/store/atomic.d.ts.map +1 -1
  133. package/dist/schedule/store/atomic.js +7 -4
  134. package/dist/schedule/store/atomic.js.map +1 -1
  135. package/dist/schedule/store/claims.js +1 -1
  136. package/dist/schedule/store/claims.js.map +1 -1
  137. package/dist/schedule/store/history.d.ts +1 -1
  138. package/dist/schedule/store/history.d.ts.map +1 -1
  139. package/dist/schedule/store/history.js +4 -1
  140. package/dist/schedule/store/history.js.map +1 -1
  141. package/dist/schedule/store/jobs.d.ts +19 -3
  142. package/dist/schedule/store/jobs.d.ts.map +1 -1
  143. package/dist/schedule/store/jobs.js +83 -16
  144. package/dist/schedule/store/jobs.js.map +1 -1
  145. package/dist/schedule/store/state.js +1 -1
  146. package/dist/schedule/store/state.js.map +1 -1
  147. package/dist/schedule/types.d.ts +71 -6
  148. package/dist/schedule/types.d.ts.map +1 -1
  149. package/dist/schedule/types.js +25 -1
  150. package/dist/schedule/types.js.map +1 -1
  151. package/dist/schedule/visible-source.d.ts +18 -0
  152. package/dist/schedule/visible-source.d.ts.map +1 -0
  153. package/dist/schedule/visible-source.js +59 -0
  154. package/dist/schedule/visible-source.js.map +1 -0
  155. package/dist/test-support/toolset.d.ts +23 -0
  156. package/dist/test-support/toolset.d.ts.map +1 -0
  157. package/dist/test-support/toolset.js +27 -0
  158. package/dist/test-support/toolset.js.map +1 -0
  159. package/dist/tui/App.d.ts.map +1 -1
  160. package/dist/tui/App.js +323 -60
  161. package/dist/tui/App.js.map +1 -1
  162. package/dist/tui/ChoicePicker.d.ts +2 -0
  163. package/dist/tui/ChoicePicker.d.ts.map +1 -1
  164. package/dist/tui/ChoicePicker.js +10 -2
  165. package/dist/tui/ChoicePicker.js.map +1 -1
  166. package/dist/tui/Composer.d.ts +62 -3
  167. package/dist/tui/Composer.d.ts.map +1 -1
  168. package/dist/tui/Composer.js +162 -25
  169. package/dist/tui/Composer.js.map +1 -1
  170. package/dist/tui/ComposerFrame.d.ts +1 -1
  171. package/dist/tui/ComposerFrame.js +3 -3
  172. package/dist/tui/ComposerFrame.js.map +1 -1
  173. package/dist/tui/EffortSlider.d.ts +8 -9
  174. package/dist/tui/EffortSlider.d.ts.map +1 -1
  175. package/dist/tui/EffortSlider.js +15 -12
  176. package/dist/tui/EffortSlider.js.map +1 -1
  177. package/dist/tui/StatusBar.d.ts +12 -12
  178. package/dist/tui/StatusBar.d.ts.map +1 -1
  179. package/dist/tui/StatusBar.js +15 -15
  180. package/dist/tui/StatusBar.js.map +1 -1
  181. package/dist/tui/agent.d.ts +46 -7
  182. package/dist/tui/agent.d.ts.map +1 -1
  183. package/dist/tui/agent.js +386 -178
  184. package/dist/tui/agent.js.map +1 -1
  185. package/dist/tui/hypermode.d.ts +37 -0
  186. package/dist/tui/hypermode.d.ts.map +1 -0
  187. package/dist/tui/hypermode.js +58 -0
  188. package/dist/tui/hypermode.js.map +1 -0
  189. package/dist/tui/permission-review.d.ts +1 -1
  190. package/dist/tui/permission-review.js +1 -1
  191. package/dist/tui/schedule/host-commands.d.ts.map +1 -1
  192. package/dist/tui/schedule/host-commands.js +94 -33
  193. package/dist/tui/schedule/host-commands.js.map +1 -1
  194. package/dist/tui/schedule/integration.d.ts +6 -2
  195. package/dist/tui/schedule/integration.d.ts.map +1 -1
  196. package/dist/tui/schedule/integration.js +3 -1
  197. package/dist/tui/schedule/integration.js.map +1 -1
  198. package/dist/tui/schedule/resume.d.ts.map +1 -1
  199. package/dist/tui/schedule/resume.js +10 -1
  200. package/dist/tui/schedule/resume.js.map +1 -1
  201. package/dist/tui/schedule/tool-host.d.ts +4 -1
  202. package/dist/tui/schedule/tool-host.d.ts.map +1 -1
  203. package/dist/tui/schedule/tool-host.js +155 -40
  204. package/dist/tui/schedule/tool-host.js.map +1 -1
  205. package/dist/tui/slashCommands.d.ts +23 -5
  206. package/dist/tui/slashCommands.d.ts.map +1 -1
  207. package/dist/tui/slashCommands.js +80 -31
  208. package/dist/tui/slashCommands.js.map +1 -1
  209. package/dist/tui/theme.d.ts +10 -4
  210. package/dist/tui/theme.d.ts.map +1 -1
  211. package/dist/tui/theme.js +4 -3
  212. package/dist/tui/theme.js.map +1 -1
  213. package/dist/tui/triggers/analyze.d.ts +57 -0
  214. package/dist/tui/triggers/analyze.d.ts.map +1 -0
  215. package/dist/tui/triggers/analyze.js +221 -0
  216. package/dist/tui/triggers/analyze.js.map +1 -0
  217. package/dist/tui/triggers/context-text.d.ts +21 -0
  218. package/dist/tui/triggers/context-text.d.ts.map +1 -0
  219. package/dist/tui/triggers/context-text.js +44 -0
  220. package/dist/tui/triggers/context-text.js.map +1 -0
  221. package/dist/tui/triggers/copy.d.ts +38 -0
  222. package/dist/tui/triggers/copy.d.ts.map +1 -0
  223. package/dist/tui/triggers/copy.js +163 -0
  224. package/dist/tui/triggers/copy.js.map +1 -0
  225. package/dist/tui/triggers/detect.d.ts +83 -0
  226. package/dist/tui/triggers/detect.d.ts.map +1 -0
  227. package/dist/tui/triggers/detect.js +295 -0
  228. package/dist/tui/triggers/detect.js.map +1 -0
  229. package/dist/tui/triggers/fold.d.ts +34 -0
  230. package/dist/tui/triggers/fold.d.ts.map +1 -0
  231. package/dist/tui/triggers/fold.js +44 -0
  232. package/dist/tui/triggers/fold.js.map +1 -0
  233. package/dist/tui/triggers/pattern.d.ts +66 -0
  234. package/dist/tui/triggers/pattern.d.ts.map +1 -0
  235. package/dist/tui/triggers/pattern.js +243 -0
  236. package/dist/tui/triggers/pattern.js.map +1 -0
  237. package/dist/tui/triggers/provenance.d.ts +58 -0
  238. package/dist/tui/triggers/provenance.d.ts.map +1 -0
  239. package/dist/tui/triggers/provenance.js +98 -0
  240. package/dist/tui/triggers/provenance.js.map +1 -0
  241. package/dist/tui/triggers/registry.d.ts +113 -0
  242. package/dist/tui/triggers/registry.d.ts.map +1 -0
  243. package/dist/tui/triggers/registry.js +164 -0
  244. package/dist/tui/triggers/registry.js.map +1 -0
  245. package/dist/tui/triggers/setting.d.ts +18 -0
  246. package/dist/tui/triggers/setting.d.ts.map +1 -0
  247. package/dist/tui/triggers/setting.js +61 -0
  248. package/dist/tui/triggers/setting.js.map +1 -0
  249. package/dist/tui/triggers/verbs.d.ts +29 -0
  250. package/dist/tui/triggers/verbs.d.ts.map +1 -0
  251. package/dist/tui/triggers/verbs.js +140 -0
  252. package/dist/tui/triggers/verbs.js.map +1 -0
  253. package/dist/tui/types.d.ts +3 -1
  254. package/dist/tui/types.d.ts.map +1 -1
  255. package/package.json +12 -12
  256. package/skills/schedule-task/SKILL.md +115 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-shell.d.ts","sourceRoot":"","sources":["../../src/schedule/script-shell.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEzE"}
@@ -0,0 +1,5 @@
1
+ /** The same diagnostic at creation, confirmation and fire when a chosen interpreter is absent. */
2
+ export function scriptShellUnavailableReason(shell) {
3
+ return `the requested ${shell} shell is not executable on this host; install it or choose an installed shell before confirming this job`;
4
+ }
5
+ //# sourceMappingURL=script-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-shell.js","sourceRoot":"","sources":["../../src/schedule/script-shell.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,MAAM,UAAU,4BAA4B,CAAC,KAAoB;IAChE,OAAO,iBAAiB,KAAK,2GAA2G,CAAA;AACzI,CAAC"}
@@ -5,7 +5,7 @@
5
5
  import { rmSync } from 'node:fs';
6
6
  import { readVersioned, writeJsonAtomic } from '../store/atomic.js';
7
7
  export function readManifest(paths) {
8
- return readVersioned(paths.service, 'schedule-service');
8
+ return readVersioned(paths.service, 'schedule-service', 1);
9
9
  }
10
10
  export function writeManifest(paths, manifest) {
11
11
  writeJsonAtomic(paths.service, manifest);
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/schedule/service/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AA+BnE,MAAM,UAAU,YAAY,CAAC,KAAoB;IAChD,OAAO,aAAa,CAAkB,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;AACzE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAoB,EAAE,QAAyB;IAC5E,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB;IAClD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACvC,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/schedule/service/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AA+BnE,MAAM,UAAU,YAAY,CAAC,KAAoB;IAChD,OAAO,aAAa,CAAkB,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAoB,EAAE,QAAyB;IAC5E,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB;IAClD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACvC,CAAC"}
@@ -34,10 +34,13 @@ export declare function writeJsonAtomic(path: string, value: unknown): void;
34
34
  export declare function publishExclusive(path: string, value: unknown): boolean;
35
35
  /**
36
36
  * Read a scheduler file of `kind`, or `undefined` when there is none.
37
- * Refuses a newer version or another kind, naming the file.
37
+ * Refuses a version newer than `maxVersion` or another kind, naming the
38
+ * file. `maxVersion` is this reader's own ceiling for this record kind, not
39
+ * a single global number: a job reader's ceiling moves independently of a
40
+ * claim reader's.
38
41
  */
39
42
  export declare function readVersioned<T extends {
40
43
  readonly v: number;
41
44
  readonly kind: string;
42
- }>(path: string, kind: T['kind']): T | undefined;
45
+ }>(path: string, kind: T['kind'], maxVersion: number): T | undefined;
43
46
  //# sourceMappingURL=atomic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"atomic.d.ts","sourceRoot":"","sources":["../../../src/schedule/store/atomic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAgBH,eAAO,MAAM,iBAAiB,MAAQ,CAAA;AACtC,eAAO,MAAM,gBAAgB,MAAQ,CAAA;AAErC,kEAAkE;AAClE,qBAAa,mBAAoB,SAAQ,KAAK;IAG5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFtB,SAAkB,IAAI,yBAAwB;gBAEpC,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAIhB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAgCD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAalE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GACb,CAAC,GAAG,SAAS,CAyBf"}
1
+ {"version":3,"file":"atomic.d.ts","sourceRoot":"","sources":["../../../src/schedule/store/atomic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAgBH,eAAO,MAAM,iBAAiB,MAAQ,CAAA;AACtC,eAAO,MAAM,gBAAgB,MAAQ,CAAA;AAErC,kEAAkE;AAClE,qBAAa,mBAAoB,SAAQ,KAAK;IAG5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFtB,SAAkB,IAAI,yBAAwB;gBAEpC,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAIhB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAgCD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAalE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBtE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EACf,UAAU,EAAE,MAAM,GAChB,CAAC,GAAG,SAAS,CAyBf"}
@@ -104,9 +104,12 @@ export function publishExclusive(path, value) {
104
104
  }
105
105
  /**
106
106
  * Read a scheduler file of `kind`, or `undefined` when there is none.
107
- * Refuses a newer version or another kind, naming the file.
107
+ * Refuses a version newer than `maxVersion` or another kind, naming the
108
+ * file. `maxVersion` is this reader's own ceiling for this record kind, not
109
+ * a single global number: a job reader's ceiling moves independently of a
110
+ * claim reader's.
108
111
  */
109
- export function readVersioned(path, kind) {
112
+ export function readVersioned(path, kind, maxVersion) {
110
113
  let text;
111
114
  try {
112
115
  text = readFileSync(path, 'utf8');
@@ -127,8 +130,8 @@ export function readVersioned(path, kind) {
127
130
  if (typeof record !== 'object' || record === null || record.kind !== kind) {
128
131
  throw new ScheduleFormatError(path, `is not a ${kind} file`);
129
132
  }
130
- if (typeof record.v !== 'number' || record.v > 1) {
131
- throw new ScheduleFormatError(path, `was written by a newer namzu (format ${String(record.v)}); this one reads format 1 and will not change it`);
133
+ if (typeof record.v !== 'number' || record.v > maxVersion) {
134
+ throw new ScheduleFormatError(path, `was written by a newer namzu (format ${String(record.v)}); this one reads up to format ${maxVersion} and will not change it`);
132
135
  }
133
136
  return parsed;
134
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../../src/schedule/store/atomic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EACN,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,GACT,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAA;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAA;AAErC,kEAAkE;AAClE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAGnC;IAFQ,IAAI,GAAG,qBAAqB,CAAA;IAC9C,YACU,IAAY,EACrB,OAAe;QAEf,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;QAHnB,SAAI,GAAJ,IAAI,CAAQ;IAItB,CAAC;CACD;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACpC,OAAO,IAAI,CACV,OAAO,CAAC,IAAI,CAAC,EACb,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CACzE,CAAA;AACF,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY;IAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAA;IAClD,IAAI,CAAC;QACJ,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnB,SAAS,CAAC,EAAE,CAAC,CAAA;IACd,CAAC;YAAS,CAAC;QACV,SAAS,CAAC,EAAE,CAAC,CAAA;IACd,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC7B,IAAI,CAAC;QACJ,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACJ,SAAS,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;gBAAS,CAAC;YACV,SAAS,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,mEAAmE;IACpE,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAc;IAC3D,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACxB,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACvC,YAAY,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9D,IAAI,CAAC;QACJ,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC;YACJ,UAAU,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,KAAK,CAAA;IACZ,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAc;IAC5D,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACxB,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACvC,YAAY,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACrD,IAAI,CAAC;QACJ,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QACzB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QACpE,MAAM,KAAK,CAAA;IACZ,CAAC;YAAS,CAAC;QACV,IAAI,CAAC;YACJ,UAAU,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACX,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC5B,IAAY,EACZ,IAAe;IAEf,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACJ,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACxE,MAAM,KAAK,CAAA;IACZ,CAAC;IACD,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,MAAyC,CAAA;IACxD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC3E,MAAM,IAAI,mBAAmB,CAAC,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,mBAAmB,CAC5B,IAAI,EACJ,wCAAwC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mDAAmD,CAC3G,CAAA;IACF,CAAC;IACD,OAAO,MAAW,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../../src/schedule/store/atomic.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export function claimOccurrence(paths, claim) {
22
22
  });
23
23
  }
24
24
  export function readClaim(paths, jobId, key) {
25
- return readVersioned(paths.claim(jobId, key), 'schedule-claim');
25
+ return readVersioned(paths.claim(jobId, key), 'schedule-claim', 1);
26
26
  }
27
27
  export function isClaimed(paths, jobId, key) {
28
28
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"claims.js","sourceRoot":"","sources":["../../../src/schedule/store/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAY7D,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAC9B,KAAoB,EACpB,KAAwC;IAExC,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACd,sEAAsE,KAAK,CAAC,GAAG,EAAE,CACjF,CAAA;IACF,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;QAC5D,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,gBAAgB;QACtB,GAAG,KAAK;KACR,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,KAAoB,EACpB,KAAa,EACb,GAAW;IAEX,OAAO,aAAa,CAAgB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAE,GAAW;IACzE,IAAI,CAAC;QACJ,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAC1B,KAAoB,EACpB,KAAa,EACb,QAAgB,EAChB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,KAAe,CAAA;IACnB,IAAI,CAAC;QACJ,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,CAAA;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC1D,OAAO,EAAE,CAAA;QACV,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"claims.js","sourceRoot":"","sources":["../../../src/schedule/store/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAY7D,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAC9B,KAAoB,EACpB,KAAwC;IAExC,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACd,sEAAsE,KAAK,CAAC,GAAG,EAAE,CACjF,CAAA;IACF,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;QAC5D,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,gBAAgB;QACtB,GAAG,KAAK;KACR,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,KAAoB,EACpB,KAAa,EACb,GAAW;IAEX,OAAO,aAAa,CAAgB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAE,GAAW;IACzE,IAAI,CAAC;QACJ,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAC1B,KAAoB,EACpB,KAAa,EACb,QAAgB,EAChB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,KAAe,CAAA;IACnB,IAAI,CAAC;QACJ,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,CAAA;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC1D,OAAO,EAAE,CAAA;QACV,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAA;AACf,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * compaction.
8
8
  */
9
9
  import type { SchedulePaths } from '../paths.js';
10
- import type { ScheduleHistoryRecord } from '../types.js';
10
+ import { type ScheduleHistoryRecord } from '../types.js';
11
11
  export declare function appendHistory(paths: SchedulePaths, jobId: string, record: ScheduleHistoryRecord): void;
12
12
  /** Every readable record, oldest first. A torn or foreign line is skipped. */
13
13
  export declare function readHistory(paths: SchedulePaths, jobId: string): ScheduleHistoryRecord[];
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/schedule/store/history.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AA2BxD,wBAAgB,aAAa,CAC5B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,qBAAqB,GAC3B,IAAI,CASN;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAgBxF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,GAAG,qBAAqB,EAAE,CAe9F;AAED,+FAA+F;AAC/F,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM,CAoB5F"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/schedule/store/history.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAGN,KAAK,qBAAqB,EAC1B,MAAM,aAAa,CAAA;AA2BpB,wBAAgB,aAAa,CAC5B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,qBAAqB,GAC3B,IAAI,CASN;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAqBxF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,GAAG,qBAAqB,EAAE,CAe9F;AAED,+FAA+F;AAC/F,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM,CAoB5F"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { closeSync, openSync, readFileSync, renameSync, statSync, writeSync } from 'node:fs';
10
10
  import { dirname } from 'node:path';
11
+ import { SCHEDULE_FORMAT_VERSION, SCHEDULE_FORMAT_VERSION_LEGACY, } from '../types.js';
11
12
  import { PRIVATE_FILE_MODE, ensureDir } from './atomic.js';
12
13
  const MAX_LINE = 4_000;
13
14
  const KEEP_RECORDS = 500;
@@ -58,7 +59,9 @@ export function readHistory(paths, jobId) {
58
59
  continue;
59
60
  try {
60
61
  const record = JSON.parse(line);
61
- if (record && record.v === 1 && typeof record.kind === 'string')
62
+ if (record &&
63
+ (record.v === SCHEDULE_FORMAT_VERSION_LEGACY || record.v === SCHEDULE_FORMAT_VERSION) &&
64
+ typeof record.kind === 'string')
62
65
  out.push(record);
63
66
  }
64
67
  catch { }
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/schedule/store/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/schedule/store/history.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * longer matches, and the daemon holds the job until someone confirms it.
16
16
  */
17
17
  import type { SchedulePaths } from '../paths.js';
18
- import type { ScheduleJob } from '../types.js';
18
+ import { type ScheduleJob } from '../types.js';
19
19
  export declare const JOB_NAME: RegExp;
20
20
  export declare class ScheduleConflictError extends Error {
21
21
  readonly jobId: string;
@@ -32,7 +32,15 @@ export declare function stableStringify(value: unknown): string;
32
32
  /**
33
33
  * The digest of what a confirmation vouches for: the prompt, the folder and
34
34
  * its trust, the permissions, the schedule, the model, the budget, the
35
- * approval window and the pinned project config. Not a secret — a tripwire.
35
+ * approval window, the pinned project config, and — when the job runs one —
36
+ * the script's exact text, shell and timeout. Not a secret — a tripwire: a
37
+ * later change to the script needs re-confirmation exactly as a change to
38
+ * the prompt does, through this same digest, not a second mechanism.
39
+ *
40
+ * `runKind`/`script`/`wakeGate` are folded in only when the job actually has
41
+ * a non-`agent` `runKind`: an ordinary `agent` job's digest is byte-for-byte
42
+ * what it always was, so upgrading namzu never holds an already-confirmed
43
+ * `v:1` job that this design never touched.
36
44
  */
37
45
  export declare function jobSecurityDigest(job: ScheduleJob): string;
38
46
  /** Whether a job's confirmation still vouches for what the file says. */
@@ -40,10 +48,18 @@ export declare function confirmationHolds(job: ScheduleJob): boolean;
40
48
  export declare function readJob(paths: SchedulePaths, id: string): ScheduleJob | undefined;
41
49
  export interface JobListing {
42
50
  readonly jobs: ScheduleJob[];
43
- /** Files that could not be read, with why. Never silently dropped. */
51
+ /**
52
+ * Files that could not be read, with why. Never silently dropped. `id`/
53
+ * `name` are filled in when the raw JSON has them as strings — read
54
+ * leniently, without validating anything else about the file — so a job
55
+ * `readVersioned` refused (a newer namzu's format, a hand-broken file)
56
+ * is still nameable: `createJob`'s uniqueness check and `findJob` see it.
57
+ */
44
58
  readonly errors: {
45
59
  readonly path: string;
46
60
  readonly message: string;
61
+ readonly id?: string;
62
+ readonly name?: string;
47
63
  }[];
48
64
  }
49
65
  export declare function listJobs(paths: SchedulePaths): JobListing;
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../src/schedule/store/jobs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAS9C,eAAO,MAAM,QAAQ,QAA8B,CAAA;AAMnD,qBAAa,qBAAsB,SAAQ,KAAK;IAEnC,QAAQ,CAAC,KAAK,EAAE,MAAM;IADlC,SAAkB,IAAI,2BAA0B;gBAC3B,KAAK,EAAE,MAAM;CAGlC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,GAAG,EAAE,MAAM;IADhC,SAAkB,IAAI,8BAA6B;gBAC9B,GAAG,EAAE,MAAM;CAGhC;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAStD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAgB1D;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAE3D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEjF;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAA;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACtE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAuBzD;AAED,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CActE;AA4CD,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAe7E;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACxB,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,MAAM,EACV,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,WAAW,EACzC,GAAG,GAAE,IAAiB,GACpB,WAAW,CAgBb;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAKhE"}
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../src/schedule/store/jobs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAA2B,KAAK,WAAW,EAAoB,MAAM,aAAa,CAAA;AASzF,eAAO,MAAM,QAAQ,QAA8B,CAAA;AAMnD,qBAAa,qBAAsB,SAAQ,KAAK;IAEnC,QAAQ,CAAC,KAAK,EAAE,MAAM;IADlC,SAAkB,IAAI,2BAA0B;gBAC3B,KAAK,EAAE,MAAM;CAGlC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,GAAG,EAAE,MAAM;IADhC,SAAkB,IAAI,8BAA6B;gBAC9B,GAAG,EAAE,MAAM;CAGhC;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAStD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAqB1D;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAE3D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEjF;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAA;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KACtB,EAAE,CAAA;CACH;AAeD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAwBzD;AAYD,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CA4BtE;AAsDD,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAwB7E;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACxB,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,MAAM,EACV,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,WAAW,EACzC,GAAG,GAAE,IAAiB,GACpB,WAAW,CAsBb;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAKhE"}
@@ -15,8 +15,9 @@
15
15
  * longer matches, and the daemon holds the job until someone confirms it.
16
16
  */
17
17
  import { createHash } from 'node:crypto';
18
- import { readdirSync, rmSync, statSync, unlinkSync } from 'node:fs';
18
+ import { readFileSync, readdirSync, rmSync, statSync, unlinkSync } from 'node:fs';
19
19
  import { join } from 'node:path';
20
+ import { SCHEDULE_FORMAT_VERSION, jobFormatVersion } from '../types.js';
20
21
  import { ScheduleFormatError, ensureDir, publishExclusive, readVersioned, writeJsonAtomic, } from './atomic.js';
21
22
  export const JOB_NAME = /^[a-z0-9][a-z0-9-]{0,62}$/;
22
23
  /** A revision marker older than this whose revision never landed was abandoned by a crashed writer. */
@@ -53,9 +54,20 @@ export function stableStringify(value) {
53
54
  /**
54
55
  * The digest of what a confirmation vouches for: the prompt, the folder and
55
56
  * its trust, the permissions, the schedule, the model, the budget, the
56
- * approval window and the pinned project config. Not a secret — a tripwire.
57
+ * approval window, the pinned project config, and — when the job runs one —
58
+ * the script's exact text, shell and timeout. Not a secret — a tripwire: a
59
+ * later change to the script needs re-confirmation exactly as a change to
60
+ * the prompt does, through this same digest, not a second mechanism.
61
+ *
62
+ * `runKind`/`script`/`wakeGate` are folded in only when the job actually has
63
+ * a non-`agent` `runKind`: an ordinary `agent` job's digest is byte-for-byte
64
+ * what it always was, so upgrading namzu never holds an already-confirmed
65
+ * `v:1` job that this design never touched.
57
66
  */
58
67
  export function jobSecurityDigest(job) {
68
+ const script = job.runKind !== undefined && job.runKind !== 'agent'
69
+ ? { runKind: job.runKind, script: job.script ?? null, wakeGate: job.wakeGate ?? null }
70
+ : {};
59
71
  return createHash('sha256')
60
72
  .update(stableStringify({
61
73
  prompt: job.prompt,
@@ -67,6 +79,7 @@ export function jobSecurityDigest(job) {
67
79
  budget: job.budget,
68
80
  approvalTtlMs: job.approvalTtlMs,
69
81
  projectDigest: job.projectDigest,
82
+ ...script,
70
83
  }))
71
84
  .digest('hex');
72
85
  }
@@ -75,7 +88,20 @@ export function confirmationHolds(job) {
75
88
  return job.confirmation !== null && job.confirmation.digest === jobSecurityDigest(job);
76
89
  }
77
90
  export function readJob(paths, id) {
78
- return readVersioned(paths.job(id), 'schedule-job');
91
+ return readVersioned(paths.job(id), 'schedule-job', SCHEDULE_FORMAT_VERSION);
92
+ }
93
+ /** `id`/`name` read straight off the raw JSON, ignoring everything else — for a file the real reader refused. */
94
+ function identifyLeniently(path) {
95
+ try {
96
+ const raw = JSON.parse(readFileSync(path, 'utf8'));
97
+ return {
98
+ ...(typeof raw.id === 'string' ? { id: raw.id } : {}),
99
+ ...(typeof raw.name === 'string' ? { name: raw.name } : {}),
100
+ };
101
+ }
102
+ catch {
103
+ return {};
104
+ }
79
105
  }
80
106
  export function listJobs(paths) {
81
107
  let names;
@@ -92,7 +118,7 @@ export function listJobs(paths) {
92
118
  continue;
93
119
  const path = join(paths.jobs, name);
94
120
  try {
95
- const job = readVersioned(path, 'schedule-job');
121
+ const job = readVersioned(path, 'schedule-job', SCHEDULE_FORMAT_VERSION);
96
122
  if (job)
97
123
  jobs.push(job);
98
124
  }
@@ -100,27 +126,55 @@ export function listJobs(paths) {
100
126
  errors.push({
101
127
  path,
102
128
  message: error instanceof ScheduleFormatError ? error.message : String(error),
129
+ ...identifyLeniently(path),
103
130
  });
104
131
  }
105
132
  }
106
133
  return { jobs: jobs.sort((a, b) => a.name.localeCompare(b.name)), errors };
107
134
  }
135
+ /** How to tell one of several same-named or same-prefixed READABLE jobs from the rest. */
136
+ function addressReadable(job) {
137
+ return `${job.name} (id ${job.id}) — address it with the full id ${job.id} if its name ever collides again`;
138
+ }
139
+ /** How to tell one of several same-named or same-prefixed UNREADABLE jobs from the rest. */
140
+ function addressUnreadable(job) {
141
+ return `id ${job.id ?? '(unknown, not recorded in the file)'} — its file could not be fully read (${job.message}); address it with the full id once it can be, or fix/remove the file`;
142
+ }
108
143
  /** A job by exact name or by an unambiguous id prefix (four characters at least). */
109
144
  export function findJob(paths, ref) {
110
- const { jobs } = listJobs(paths);
111
- const byName = jobs.find((j) => j.name === ref);
112
- if (byName)
113
- return byName;
145
+ const { jobs, errors } = listJobs(paths);
146
+ const byName = jobs.filter((j) => j.name === ref);
147
+ const unreadableByName = errors.filter((e) => e.name === ref);
148
+ if (byName.length + unreadableByName.length > 1) {
149
+ throw ambiguity(ref, byName, unreadableByName);
150
+ }
151
+ if (byName.length === 1)
152
+ return byName[0];
153
+ if (unreadableByName.length === 1) {
154
+ const only = unreadableByName[0];
155
+ throw new Error(`"${ref}" exists but its file could not be fully read: ${only.message}`);
156
+ }
114
157
  if (ref.length >= 4) {
115
- const matches = jobs.filter((j) => j.id.startsWith(ref.toLowerCase()));
116
- if (matches.length === 1)
117
- return matches[0];
118
- if (matches.length > 1) {
119
- throw new Error(`"${ref}" matches ${matches.length} jobs (${matches.map((j) => j.name).join(', ')}); use the name.`);
158
+ const lower = ref.toLowerCase();
159
+ const byId = jobs.filter((j) => j.id.startsWith(lower));
160
+ const unreadableById = errors.filter((e) => e.id?.toLowerCase().startsWith(lower));
161
+ if (byId.length + unreadableById.length > 1) {
162
+ throw ambiguity(ref, byId, unreadableById);
163
+ }
164
+ if (byId.length === 1)
165
+ return byId[0];
166
+ if (unreadableById.length === 1) {
167
+ const only = unreadableById[0];
168
+ throw new Error(`"${ref}" matches a job whose file could not be fully read (id ${only.id}): ${only.message}`);
120
169
  }
121
170
  }
122
171
  throw new ScheduleJobNotFoundError(ref);
123
172
  }
173
+ function ambiguity(ref, readable, unreadable) {
174
+ const total = readable.length + unreadable.length;
175
+ const parts = [...readable.map(addressReadable), ...unreadable.map(addressUnreadable)];
176
+ return new Error(`"${ref}" matches ${total} jobs: ${parts.join('; ')}.`);
177
+ }
124
178
  function markerDir(paths, id) {
125
179
  return join(paths.jobs, '.revisions', id);
126
180
  }
@@ -167,10 +221,17 @@ export function createJob(paths, job) {
167
221
  if (!JOB_NAME.test(job.name)) {
168
222
  throw new Error(`"${job.name}" is not a job name: lowercase letters, digits and dashes, starting with a letter or digit.`);
169
223
  }
170
- const { jobs } = listJobs(paths);
224
+ const { jobs, errors } = listJobs(paths);
171
225
  if (jobs.some((j) => j.name === job.name)) {
172
226
  throw new Error(`A job named "${job.name}" already exists.`);
173
227
  }
228
+ // A file `readVersioned` could not fully parse is still a real job with
229
+ // this name as far as uniqueness goes — leniently read, so it is not
230
+ // invisible to this check just because the real reader refused it.
231
+ const unreadable = errors.find((e) => e.name === job.name);
232
+ if (unreadable) {
233
+ throw new Error(`A job named "${job.name}" already exists, in a file that could not be fully read (${unreadable.message}); rename this one, or fix/remove ${unreadable.path} first.`);
234
+ }
174
235
  ensureDir(paths.jobs);
175
236
  claimRevision(paths, job.id, 0);
176
237
  const created = { ...job, revision: 1 };
@@ -188,10 +249,16 @@ export function updateJob(paths, id, expectedRevision, mutate, now = new Date())
188
249
  if (current.revision !== expectedRevision)
189
250
  throw new ScheduleConflictError(id);
190
251
  const revision = claimRevision(paths, id, current.revision);
252
+ const mutated = mutate(current);
191
253
  const next = {
192
- ...mutate(current),
254
+ ...mutated,
193
255
  id: current.id,
194
- v: 1,
256
+ // A job that does not touch `runKind`/`script` keeps its file at
257
+ // whatever version it already read at (usually `v:1`), so an
258
+ // unrelated edit never forces a re-confirmation cycle a v:1 job never
259
+ // needed. One that gains a non-`agent` runKind is written at the
260
+ // current version from here on.
261
+ v: jobFormatVersion(mutated),
195
262
  kind: 'schedule-job',
196
263
  revision,
197
264
  updatedAt: now.toISOString(),
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../src/schedule/store/jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../src/schedule/store/jobs.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export function emptyState(jobId) {
14
14
  };
15
15
  }
16
16
  export function readState(paths, jobId) {
17
- return (readVersioned(paths.stateOf(jobId), 'schedule-state') ?? emptyState(jobId));
17
+ return (readVersioned(paths.stateOf(jobId), 'schedule-state', 1) ?? emptyState(jobId));
18
18
  }
19
19
  export function writeState(paths, state) {
20
20
  writeJsonAtomic(paths.stateOf(state.jobId), state);
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/schedule/store/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,OAAO;QACN,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,gBAAgB;QACtB,KAAK;QACL,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;KACpD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAoB,EAAE,KAAa;IAC5D,OAAO,CACN,aAAa,CAAmB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAC5F,CAAA;AACF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAoB,EAAE,KAAuB;IACvE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACzB,GAA4C,EAC5C,KAA2C,EAC3C,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC5C,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE;QAAE,OAAO,KAAK,CAAC,UAAU,CAAA;IAC7F,OAAO,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,CAAA;AACtD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAmB,KAAQ;IAC1D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAM,CAAA;AACzF,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/schedule/store/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,OAAO;QACN,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,gBAAgB;QACtB,KAAK;QACL,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;KACpD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAoB,EAAE,KAAa;IAC5D,OAAO,CACN,aAAa,CAAmB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAC/F,CAAA;AACF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAoB,EAAE,KAAuB;IACvE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACzB,GAA4C,EAC5C,KAA2C,EAC3C,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC5C,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE;QAAE,OAAO,KAAK,CAAC,UAAU,CAAA;IAC7F,OAAO,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,CAAA;AACtD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAmB,KAAQ;IAC1D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAM,CAAA;AACzF,CAAC"}
@@ -7,7 +7,17 @@
7
7
  */
8
8
  import type { ScheduleBrowserGrant, ScheduleJobLifecycle, ScheduleSpec } from '@namzu/sdk';
9
9
  import type { PermissionsConfig } from '../permissions/rules.js';
10
- export declare const SCHEDULE_FORMAT_VERSION = 1;
10
+ /** The format before `runKind`/`script`/`check-failed` existed. Always readable. */
11
+ export declare const SCHEDULE_FORMAT_VERSION_LEGACY = 1;
12
+ /**
13
+ * The current format. A job/run-result/history record is written at this
14
+ * version only when it actually carries what a `SCHEDULE_FORMAT_VERSION_LEGACY`
15
+ * reader cannot interpret (`runKind !== 'agent'`, a `script` block, a
16
+ * `check-failed` status, `gateResult` or `scriptOutput`); everything else is
17
+ * still written at the legacy version, unchanged, so an old namzu keeps
18
+ * reading every job and record it always could.
19
+ */
20
+ export declare const SCHEDULE_FORMAT_VERSION = 2;
11
21
  /** What a scheduled run may do. Required on every job; there is no default. */
12
22
  export interface SchedulePermissionSet {
13
23
  /** A call no rule covers: `park` (wait for the operator), `deny`, or `allow`. */
@@ -47,8 +57,10 @@ export interface ProjectDigest {
47
57
  readonly sections: readonly string[];
48
58
  }
49
59
  export type ConfirmationSurface = 'cli-tty' | 'tui' | 'tool-confirmed' | 'cli-noninteractive';
60
+ /** What a run does. Absent (a `v:1` file): `'agent'`. */
61
+ export type ScheduleRunKind = 'agent' | 'script' | 'script+agent';
50
62
  export interface ScheduleJob {
51
- readonly v: 1;
63
+ readonly v: 1 | 2;
52
64
  readonly kind: 'schedule-job';
53
65
  readonly id: string;
54
66
  readonly name: string;
@@ -59,7 +71,24 @@ export interface ScheduleJob {
59
71
  readonly surface: 'cli' | 'tui' | 'tool';
60
72
  readonly sessionId?: string;
61
73
  };
74
+ /** The operator's instruction to the model. Empty for a pure `script` job. */
62
75
  readonly prompt: string;
76
+ /** What this job does. Absent on a `v:1` file, which is read as `'agent'`. */
77
+ readonly runKind?: ScheduleRunKind;
78
+ /** Present for `runKind: 'script'` and as the wake-gate for `'script+agent'`. */
79
+ readonly script?: {
80
+ /** The confirmed script text, verbatim. */
81
+ readonly body: string;
82
+ /** No default: chosen when the script was proposed. */
83
+ readonly shell: 'bash' | 'sh';
84
+ /** Separate from `budget.timeoutMs`. */
85
+ readonly timeoutMs: number;
86
+ };
87
+ /** Present only for `runKind: 'script+agent'`. */
88
+ readonly wakeGate?: {
89
+ /** Cap on the gate's `context` string, cut with an explicit marker. */
90
+ readonly maxContextChars: number;
91
+ };
63
92
  readonly folder: {
64
93
  readonly path: string;
65
94
  readonly canonical: string;
@@ -72,7 +101,8 @@ export interface ScheduleJob {
72
101
  readonly schedule: ScheduleSpec;
73
102
  readonly permissions: SchedulePermissionSet;
74
103
  readonly budget: ScheduleBudget;
75
- readonly model: {
104
+ /** Required for agent and script+agent jobs; unused and absent on new pure script jobs. */
105
+ readonly model?: {
76
106
  readonly provider: string;
77
107
  readonly model?: string;
78
108
  readonly effort?: string;
@@ -106,7 +136,22 @@ export interface ScheduleJob {
106
136
  readonly digest: string;
107
137
  } | null;
108
138
  }
109
- export type ScheduleRunStatus = 'running' | 'completed' | 'failed' | 'awaiting-approval' | 'approval-expired' | 'interrupted' | 'timed-out' | 'blocked-config' | 'cancelled';
139
+ export type ScheduleRunStatus = 'running' | 'completed' | 'failed' | 'awaiting-approval' | 'approval-expired' | 'interrupted' | 'timed-out' | 'blocked-config' | 'cancelled'
140
+ /**
141
+ * `runKind: 'script'` or `'script+agent'` only: the script (or the
142
+ * wake-gate) itself malfunctioned — non-zero exit, its own timeout, or
143
+ * stdout that is not the wake-gate's contract. Independent of whether an
144
+ * agent phase would have succeeded.
145
+ */
146
+ | 'check-failed';
147
+ /** `v:2` only when the job actually uses what a `v:1` reader cannot interpret. */
148
+ export declare function jobFormatVersion(job: Pick<ScheduleJob, 'runKind'>): 1 | 2;
149
+ /** `v:2` only when the record carries what a `v:1` reader cannot interpret. */
150
+ export declare function runResultVersion(fields: {
151
+ readonly status: ScheduleRunStatus;
152
+ readonly gateResult?: unknown;
153
+ readonly scriptOutput?: unknown;
154
+ }): 1 | 2;
110
155
  export type ScheduleRunTrigger = 'scheduled' | 'late' | 'catch-up' | 'manual';
111
156
  /**
112
157
  * Tool calls of one run that were refused (never ran) or failed (ran and
@@ -188,7 +233,7 @@ export interface ScheduleJobState {
188
233
  readonly archivedSessions?: readonly string[];
189
234
  }
190
235
  export type ScheduleHistoryRecord = {
191
- readonly v: 1;
236
+ readonly v: 1 | 2;
192
237
  readonly kind: 'run';
193
238
  readonly at: string;
194
239
  readonly runId: string;
@@ -211,6 +256,16 @@ export type ScheduleHistoryRecord = {
211
256
  readonly warnings?: readonly string[];
212
257
  readonly refusedCalls?: ScheduleCallTally;
213
258
  readonly failedCalls?: ScheduleCallTally;
259
+ /** `runKind: 'script+agent'` only: what its wake-gate decided. */
260
+ readonly gateResult?: {
261
+ readonly wake: boolean;
262
+ readonly contextChars: number;
263
+ };
264
+ /** `runKind: 'script'` or `'script+agent'` only: the script's captured output, capped. */
265
+ readonly scriptOutput?: {
266
+ readonly stdout: string;
267
+ readonly stderr: string;
268
+ };
214
269
  } | {
215
270
  readonly v: 1;
216
271
  readonly kind: 'skip';
@@ -241,7 +296,7 @@ export type ScheduleHistoryRecord = {
241
296
  };
242
297
  /** What a fire child leaves behind. Authoritative over its exit code. */
243
298
  export interface ScheduleRunResult {
244
- readonly v: 1;
299
+ readonly v: 1 | 2;
245
300
  readonly kind: 'schedule-run-result';
246
301
  readonly runId: string;
247
302
  readonly jobId: string;
@@ -277,6 +332,16 @@ export interface ScheduleRunResult {
277
332
  readonly refusedCalls?: ScheduleCallTally;
278
333
  /** Calls that ran and returned an error. */
279
334
  readonly failedCalls?: ScheduleCallTally;
335
+ /** `runKind: 'script+agent'` only: what its wake-gate decided. */
336
+ readonly gateResult?: {
337
+ readonly wake: boolean;
338
+ readonly contextChars: number;
339
+ };
340
+ /** `runKind: 'script'` or `'script+agent'` only: the script's captured output, capped. */
341
+ readonly scriptOutput?: {
342
+ readonly stdout: string;
343
+ readonly stderr: string;
344
+ };
280
345
  readonly startedAt: string;
281
346
  readonly endedAt?: string;
282
347
  }