@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.
- package/CHANGELOG.md +217 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts +20 -2
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +42 -5
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +2 -1
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/exec-json.d.ts.map +1 -1
- package/dist/commands/exec-json.js +24 -1
- package/dist/commands/exec-json.js.map +1 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +2 -1
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/prior-messages.d.ts.map +1 -1
- package/dist/commands/prior-messages.js +42 -2
- package/dist/commands/prior-messages.js.map +1 -1
- package/dist/commands/schedule.d.ts.map +1 -1
- package/dist/commands/schedule.js +7 -5
- package/dist/commands/schedule.js.map +1 -1
- package/dist/config/composer-triggers.d.ts +41 -0
- package/dist/config/composer-triggers.d.ts.map +1 -0
- package/dist/config/composer-triggers.js +80 -0
- package/dist/config/composer-triggers.js.map +1 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +58 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +34 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/context/doctrine.d.ts +3 -3
- package/dist/context/doctrine.d.ts.map +1 -1
- package/dist/context/doctrine.js +3 -3
- package/dist/context/doctrine.js.map +1 -1
- package/dist/context/runtime-message.d.ts.map +1 -1
- package/dist/context/runtime-message.js +4 -0
- package/dist/context/runtime-message.js.map +1 -1
- package/dist/integrations/mcp/servers.d.ts +72 -5
- package/dist/integrations/mcp/servers.d.ts.map +1 -1
- package/dist/integrations/mcp/servers.js +144 -23
- package/dist/integrations/mcp/servers.js.map +1 -1
- package/dist/integrations/plugins/runtime.d.ts +11 -9
- package/dist/integrations/plugins/runtime.d.ts.map +1 -1
- package/dist/integrations/plugins/runtime.js +17 -36
- package/dist/integrations/plugins/runtime.js.map +1 -1
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/resident/session-step.js +2 -1
- package/dist/integrations/resident/session-step.js.map +1 -1
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +20 -2
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/subagents/NamzuCliAgent.d.ts +8 -0
- package/dist/integrations/subagents/NamzuCliAgent.d.ts.map +1 -0
- package/dist/integrations/subagents/NamzuCliAgent.js +9 -0
- package/dist/integrations/subagents/NamzuCliAgent.js.map +1 -0
- package/dist/integrations/subagents/runtime.d.ts +5 -4
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +46 -11
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/integrations/web/search.d.ts.map +1 -1
- package/dist/integrations/web/search.js +8 -6
- package/dist/integrations/web/search.js.map +1 -1
- package/dist/permissions/rules.d.ts +5 -1
- package/dist/permissions/rules.d.ts.map +1 -1
- package/dist/permissions/rules.js +85 -3
- package/dist/permissions/rules.js.map +1 -1
- package/dist/schedule/build.d.ts +19 -2
- package/dist/schedule/build.d.ts.map +1 -1
- package/dist/schedule/build.js +119 -21
- package/dist/schedule/build.js.map +1 -1
- package/dist/schedule/changes.d.ts.map +1 -1
- package/dist/schedule/changes.js +13 -0
- package/dist/schedule/changes.js.map +1 -1
- package/dist/schedule/commands/add.d.ts +1 -1
- package/dist/schedule/commands/add.d.ts.map +1 -1
- package/dist/schedule/commands/add.js +186 -40
- package/dist/schedule/commands/add.js.map +1 -1
- package/dist/schedule/commands/list.d.ts +2 -0
- package/dist/schedule/commands/list.d.ts.map +1 -1
- package/dist/schedule/commands/list.js +64 -19
- package/dist/schedule/commands/list.js.map +1 -1
- package/dist/schedule/daemon/daemon.d.ts +1 -1
- package/dist/schedule/daemon/daemon.d.ts.map +1 -1
- package/dist/schedule/daemon/daemon.js +17 -5
- package/dist/schedule/daemon/daemon.js.map +1 -1
- package/dist/schedule/daemon/notify.d.ts +21 -1
- package/dist/schedule/daemon/notify.d.ts.map +1 -1
- package/dist/schedule/daemon/notify.js +43 -0
- package/dist/schedule/daemon/notify.js.map +1 -1
- package/dist/schedule/fire/fire.d.ts +1 -1
- package/dist/schedule/fire/fire.d.ts.map +1 -1
- package/dist/schedule/fire/fire.js +200 -14
- package/dist/schedule/fire/fire.js.map +1 -1
- package/dist/schedule/fire/result.d.ts +1 -1
- package/dist/schedule/fire/result.d.ts.map +1 -1
- package/dist/schedule/fire/result.js +2 -1
- package/dist/schedule/fire/result.js.map +1 -1
- package/dist/schedule/fire/run-script.d.ts +46 -0
- package/dist/schedule/fire/run-script.d.ts.map +1 -0
- package/dist/schedule/fire/run-script.js +81 -0
- package/dist/schedule/fire/run-script.js.map +1 -0
- package/dist/schedule/fire/unattended-note.d.ts +8 -0
- package/dist/schedule/fire/unattended-note.d.ts.map +1 -1
- package/dist/schedule/fire/unattended-note.js +5 -0
- package/dist/schedule/fire/unattended-note.js.map +1 -1
- package/dist/schedule/fire/wake-gate.d.ts +39 -0
- package/dist/schedule/fire/wake-gate.d.ts.map +1 -0
- package/dist/schedule/fire/wake-gate.js +90 -0
- package/dist/schedule/fire/wake-gate.js.map +1 -0
- package/dist/schedule/floor.d.ts +1 -1
- package/dist/schedule/floor.d.ts.map +1 -1
- package/dist/schedule/floor.js +288 -16
- package/dist/schedule/floor.js.map +1 -1
- package/dist/schedule/policy.d.ts +40 -0
- package/dist/schedule/policy.d.ts.map +1 -1
- package/dist/schedule/policy.js +36 -0
- package/dist/schedule/policy.js.map +1 -1
- package/dist/schedule/script-check.d.ts +53 -0
- package/dist/schedule/script-check.d.ts.map +1 -0
- package/dist/schedule/script-check.js +145 -0
- package/dist/schedule/script-check.js.map +1 -0
- package/dist/schedule/script-shell.d.ts +3 -0
- package/dist/schedule/script-shell.d.ts.map +1 -0
- package/dist/schedule/script-shell.js +5 -0
- package/dist/schedule/script-shell.js.map +1 -0
- package/dist/schedule/service/manifest.js +1 -1
- package/dist/schedule/service/manifest.js.map +1 -1
- package/dist/schedule/store/atomic.d.ts +5 -2
- package/dist/schedule/store/atomic.d.ts.map +1 -1
- package/dist/schedule/store/atomic.js +7 -4
- package/dist/schedule/store/atomic.js.map +1 -1
- package/dist/schedule/store/claims.js +1 -1
- package/dist/schedule/store/claims.js.map +1 -1
- package/dist/schedule/store/history.d.ts +1 -1
- package/dist/schedule/store/history.d.ts.map +1 -1
- package/dist/schedule/store/history.js +4 -1
- package/dist/schedule/store/history.js.map +1 -1
- package/dist/schedule/store/jobs.d.ts +19 -3
- package/dist/schedule/store/jobs.d.ts.map +1 -1
- package/dist/schedule/store/jobs.js +83 -16
- package/dist/schedule/store/jobs.js.map +1 -1
- package/dist/schedule/store/state.js +1 -1
- package/dist/schedule/store/state.js.map +1 -1
- package/dist/schedule/types.d.ts +71 -6
- package/dist/schedule/types.d.ts.map +1 -1
- package/dist/schedule/types.js +25 -1
- package/dist/schedule/types.js.map +1 -1
- package/dist/schedule/visible-source.d.ts +18 -0
- package/dist/schedule/visible-source.d.ts.map +1 -0
- package/dist/schedule/visible-source.js +59 -0
- package/dist/schedule/visible-source.js.map +1 -0
- package/dist/test-support/toolset.d.ts +23 -0
- package/dist/test-support/toolset.d.ts.map +1 -0
- package/dist/test-support/toolset.js +27 -0
- package/dist/test-support/toolset.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +323 -60
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/ChoicePicker.d.ts +2 -0
- package/dist/tui/ChoicePicker.d.ts.map +1 -1
- package/dist/tui/ChoicePicker.js +10 -2
- package/dist/tui/ChoicePicker.js.map +1 -1
- package/dist/tui/Composer.d.ts +62 -3
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/Composer.js +162 -25
- package/dist/tui/Composer.js.map +1 -1
- package/dist/tui/ComposerFrame.d.ts +1 -1
- package/dist/tui/ComposerFrame.js +3 -3
- package/dist/tui/ComposerFrame.js.map +1 -1
- package/dist/tui/EffortSlider.d.ts +8 -9
- package/dist/tui/EffortSlider.d.ts.map +1 -1
- package/dist/tui/EffortSlider.js +15 -12
- package/dist/tui/EffortSlider.js.map +1 -1
- package/dist/tui/StatusBar.d.ts +12 -12
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/StatusBar.js +15 -15
- package/dist/tui/StatusBar.js.map +1 -1
- package/dist/tui/agent.d.ts +46 -7
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +386 -178
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/hypermode.d.ts +37 -0
- package/dist/tui/hypermode.d.ts.map +1 -0
- package/dist/tui/hypermode.js +58 -0
- package/dist/tui/hypermode.js.map +1 -0
- package/dist/tui/permission-review.d.ts +1 -1
- package/dist/tui/permission-review.js +1 -1
- package/dist/tui/schedule/host-commands.d.ts.map +1 -1
- package/dist/tui/schedule/host-commands.js +94 -33
- package/dist/tui/schedule/host-commands.js.map +1 -1
- package/dist/tui/schedule/integration.d.ts +6 -2
- package/dist/tui/schedule/integration.d.ts.map +1 -1
- package/dist/tui/schedule/integration.js +3 -1
- package/dist/tui/schedule/integration.js.map +1 -1
- package/dist/tui/schedule/resume.d.ts.map +1 -1
- package/dist/tui/schedule/resume.js +10 -1
- package/dist/tui/schedule/resume.js.map +1 -1
- package/dist/tui/schedule/tool-host.d.ts +4 -1
- package/dist/tui/schedule/tool-host.d.ts.map +1 -1
- package/dist/tui/schedule/tool-host.js +155 -40
- package/dist/tui/schedule/tool-host.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +23 -5
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +80 -31
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/theme.d.ts +10 -4
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/theme.js +4 -3
- package/dist/tui/theme.js.map +1 -1
- package/dist/tui/triggers/analyze.d.ts +57 -0
- package/dist/tui/triggers/analyze.d.ts.map +1 -0
- package/dist/tui/triggers/analyze.js +221 -0
- package/dist/tui/triggers/analyze.js.map +1 -0
- package/dist/tui/triggers/context-text.d.ts +21 -0
- package/dist/tui/triggers/context-text.d.ts.map +1 -0
- package/dist/tui/triggers/context-text.js +44 -0
- package/dist/tui/triggers/context-text.js.map +1 -0
- package/dist/tui/triggers/copy.d.ts +38 -0
- package/dist/tui/triggers/copy.d.ts.map +1 -0
- package/dist/tui/triggers/copy.js +163 -0
- package/dist/tui/triggers/copy.js.map +1 -0
- package/dist/tui/triggers/detect.d.ts +83 -0
- package/dist/tui/triggers/detect.d.ts.map +1 -0
- package/dist/tui/triggers/detect.js +295 -0
- package/dist/tui/triggers/detect.js.map +1 -0
- package/dist/tui/triggers/fold.d.ts +34 -0
- package/dist/tui/triggers/fold.d.ts.map +1 -0
- package/dist/tui/triggers/fold.js +44 -0
- package/dist/tui/triggers/fold.js.map +1 -0
- package/dist/tui/triggers/pattern.d.ts +66 -0
- package/dist/tui/triggers/pattern.d.ts.map +1 -0
- package/dist/tui/triggers/pattern.js +243 -0
- package/dist/tui/triggers/pattern.js.map +1 -0
- package/dist/tui/triggers/provenance.d.ts +58 -0
- package/dist/tui/triggers/provenance.d.ts.map +1 -0
- package/dist/tui/triggers/provenance.js +98 -0
- package/dist/tui/triggers/provenance.js.map +1 -0
- package/dist/tui/triggers/registry.d.ts +113 -0
- package/dist/tui/triggers/registry.d.ts.map +1 -0
- package/dist/tui/triggers/registry.js +164 -0
- package/dist/tui/triggers/registry.js.map +1 -0
- package/dist/tui/triggers/setting.d.ts +18 -0
- package/dist/tui/triggers/setting.d.ts.map +1 -0
- package/dist/tui/triggers/setting.js +61 -0
- package/dist/tui/triggers/setting.js.map +1 -0
- package/dist/tui/triggers/verbs.d.ts +29 -0
- package/dist/tui/triggers/verbs.d.ts.map +1 -0
- package/dist/tui/triggers/verbs.js +140 -0
- package/dist/tui/triggers/verbs.js.map +1 -0
- package/dist/tui/types.d.ts +3 -1
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +12 -12
- 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;
|
|
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
|
|
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
|
|
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
|
|
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 >
|
|
131
|
-
throw new ScheduleFormatError(path, `was written by a newer namzu (format ${String(record.v)}); this one reads format
|
|
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":"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
|
|
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;
|
|
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
|
|
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,
|
|
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 &&
|
|
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":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
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
|
|
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
|
|
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
|
-
/**
|
|
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,
|
|
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
|
|
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.
|
|
112
|
-
|
|
113
|
-
|
|
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
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (
|
|
119
|
-
throw
|
|
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
|
-
...
|
|
254
|
+
...mutated,
|
|
193
255
|
id: current.id,
|
|
194
|
-
|
|
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,
|
|
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"}
|
package/dist/schedule/types.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
}
|