@namzu/cli 29.1.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 +296 -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 +5 -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/environment.d.ts +26 -3
- package/dist/context/environment.d.ts.map +1 -1
- package/dist/context/environment.js +68 -9
- package/dist/context/environment.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/notifications/desktop.d.ts +2 -0
- package/dist/integrations/notifications/desktop.d.ts.map +1 -1
- package/dist/integrations/notifications/desktop.js +6 -5
- package/dist/integrations/notifications/desktop.js.map +1 -1
- package/dist/integrations/plugins/runtime.d.ts +10 -2
- package/dist/integrations/plugins/runtime.d.ts.map +1 -1
- package/dist/integrations/plugins/runtime.js +16 -29
- package/dist/integrations/plugins/runtime.js.map +1 -1
- package/dist/integrations/providers/harness-credentials.d.ts +9 -4
- package/dist/integrations/providers/harness-credentials.d.ts.map +1 -1
- package/dist/integrations/providers/harness-credentials.js +16 -8
- package/dist/integrations/providers/harness-credentials.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/open-url.d.ts +24 -0
- package/dist/integrations/web/open-url.d.ts.map +1 -0
- package/dist/integrations/web/open-url.js +73 -0
- package/dist/integrations/web/open-url.js.map +1 -0
- 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 +26 -2
- package/dist/schedule/build.d.ts.map +1 -1
- package/dist/schedule/build.js +139 -20
- package/dist/schedule/build.js.map +1 -1
- package/dist/schedule/changes.d.ts +6 -0
- package/dist/schedule/changes.d.ts.map +1 -1
- package/dist/schedule/changes.js +23 -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 +188 -54
- package/dist/schedule/commands/add.js.map +1 -1
- package/dist/schedule/commands/lifecycle.d.ts.map +1 -1
- package/dist/schedule/commands/lifecycle.js +2 -1
- package/dist/schedule/commands/lifecycle.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 +69 -20
- 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 +22 -5
- package/dist/schedule/daemon/daemon.js.map +1 -1
- package/dist/schedule/daemon/notify.d.ts +29 -2
- package/dist/schedule/daemon/notify.d.ts.map +1 -1
- package/dist/schedule/daemon/notify.js +71 -2
- package/dist/schedule/daemon/notify.js.map +1 -1
- package/dist/schedule/env.d.ts +8 -4
- package/dist/schedule/env.d.ts.map +1 -1
- package/dist/schedule/env.js +13 -6
- package/dist/schedule/env.js.map +1 -1
- package/dist/schedule/fire/calls.d.ts +49 -0
- package/dist/schedule/fire/calls.d.ts.map +1 -0
- package/dist/schedule/fire/calls.js +114 -0
- package/dist/schedule/fire/calls.js.map +1 -0
- 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 +209 -15
- 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 +28 -8
- package/dist/schedule/floor.d.ts.map +1 -1
- package/dist/schedule/floor.js +624 -114
- 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/index.d.ts +1 -1
- package/dist/schedule/service/index.d.ts.map +1 -1
- package/dist/schedule/service/index.js +20 -11
- package/dist/schedule/service/index.js.map +1 -1
- package/dist/schedule/service/manifest.js +1 -1
- package/dist/schedule/service/manifest.js.map +1 -1
- package/dist/schedule/service/windows-task.d.ts +7 -0
- package/dist/schedule/service/windows-task.d.ts.map +1 -1
- package/dist/schedule/service/windows-task.js +65 -0
- package/dist/schedule/service/windows-task.js.map +1 -1
- package/dist/schedule/service/wsl.d.ts +13 -1
- package/dist/schedule/service/wsl.d.ts.map +1 -1
- package/dist/schedule/service/wsl.js +16 -6
- package/dist/schedule/service/wsl.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 +98 -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/skills/directory.d.ts +38 -0
- package/dist/skills/directory.d.ts.map +1 -0
- package/dist/skills/directory.js +51 -0
- package/dist/skills/directory.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 +343 -64
- 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/PermissionOverlay.d.ts +13 -1
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +26 -4
- package/dist/tui/PermissionOverlay.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 +73 -12
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +430 -180
- 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/open-browser.d.ts +29 -1
- package/dist/tui/open-browser.d.ts.map +1 -1
- package/dist/tui/open-browser.js +83 -11
- package/dist/tui/open-browser.js.map +1 -1
- package/dist/tui/permission-review.d.ts +11 -2
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/permission-review.js +176 -19
- package/dist/tui/permission-review.js.map +1 -1
- package/dist/tui/schedule/host-commands.d.ts.map +1 -1
- package/dist/tui/schedule/host-commands.js +95 -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 +18 -1
- package/dist/tui/schedule/tool-host.d.ts.map +1 -1
- package/dist/tui/schedule/tool-host.js +384 -84
- 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/README.md +5 -0
- package/skills/schedule-task/SKILL.md +123 -5
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
* the model wrote reaches a lock screen unless the job asked for its summary
|
|
6
6
|
* (`notify.includeSummary`), and then only as one sanitised line.
|
|
7
7
|
*/
|
|
8
|
-
import type { ScheduleJob } from '../types.js';
|
|
9
|
-
export type NoticeKind = 'finished' | 'failed' | 'timed-out' | 'interrupted' | 'blocked-config' | 'awaiting-approval' | 'approval-expired' | 'catch-up' | 'held' | 'needs-confirmation' | 'auto-paused'
|
|
8
|
+
import type { ScheduleCallTally, ScheduleJob } from '../types.js';
|
|
9
|
+
export type NoticeKind = 'finished' | 'failed' | 'timed-out' | 'interrupted' | 'blocked-config' | 'awaiting-approval' | 'approval-expired' | 'catch-up' | 'held' | 'needs-confirmation' | 'auto-paused'
|
|
10
|
+
/** `runKind: 'script'`/`'script+agent'`: the script (or wake-gate) itself malfunctioned. */
|
|
11
|
+
| 'check-failed';
|
|
10
12
|
/** The longest body a notification carries whole (`sendDesktopNotification` cuts the rest). */
|
|
11
13
|
export declare const NOTICE_BODY_MAX = 200;
|
|
12
14
|
export declare function noticeText(kind: NoticeKind, job: Pick<ScheduleJob, 'name' | 'notify'>, extra: {
|
|
@@ -22,10 +24,35 @@ export declare function noticeText(kind: NoticeKind, job: Pick<ScheduleJob, 'nam
|
|
|
22
24
|
* the tool, not the model, and already one sanitised line.
|
|
23
25
|
*/
|
|
24
26
|
readonly handoff?: string;
|
|
27
|
+
/**
|
|
28
|
+
* For a finished run: the calls its permissions refused. The reason
|
|
29
|
+
* may quote the command the model wrote, so it is said only where the
|
|
30
|
+
* job asked for its summary; otherwise the tool is named and `show`
|
|
31
|
+
* says why.
|
|
32
|
+
*/
|
|
33
|
+
readonly refused?: ScheduleCallTally;
|
|
34
|
+
/**
|
|
35
|
+
* For `check-failed`: why the script or wake-gate malfunctioned. May
|
|
36
|
+
* quote the script's own output, so — like `refused` — it is said only
|
|
37
|
+
* where the job asked for its summary; otherwise `show` says why.
|
|
38
|
+
*/
|
|
39
|
+
readonly reason?: string;
|
|
25
40
|
}): {
|
|
26
41
|
title: string;
|
|
27
42
|
body: string;
|
|
28
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* What `notify.includeSummary` shows for a `completed` `script`/`script+
|
|
46
|
+
* agent` run: there is no model text, so the last line of the script's
|
|
47
|
+
* stdout that is not itself the wake-gate's JSON contract line stands in
|
|
48
|
+
* for it — the same "one line, gated behind the flag" shape a `finished`
|
|
49
|
+
* agent notice already gives the model's own summary.
|
|
50
|
+
*/
|
|
51
|
+
export declare function scriptSummaryOf(result: {
|
|
52
|
+
readonly scriptOutput?: {
|
|
53
|
+
readonly stdout: string;
|
|
54
|
+
};
|
|
55
|
+
}): string | undefined;
|
|
29
56
|
/** The same failure told once: status plus the reason with numbers and ids removed. */
|
|
30
57
|
export declare function failureSignature(status: string, reason: string | undefined): string;
|
|
31
58
|
//# sourceMappingURL=notify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../../src/schedule/daemon/notify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../../src/schedule/daemon/notify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,MAAM,UAAU,GACnB,UAAU,GACV,QAAQ,GACR,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,UAAU,GACV,MAAM,GACN,oBAAoB,GACpB,aAAa;AACf,4FAA4F;GAC1F,cAAc,CAAA;AAUjB,+FAA+F;AAC/F,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,wBAAgB,UAAU,CACzB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,EACzC,KAAK,EAAE;IACN,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IACpC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAoGjC;AAUD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACnD,GAAG,MAAM,GAAG,SAAS,CAerB;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQnF"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* the model wrote reaches a lock screen unless the job asked for its summary
|
|
6
6
|
* (`notify.includeSummary`), and then only as one sanitised line.
|
|
7
7
|
*/
|
|
8
|
+
import { sanitizeLine } from '../../integrations/notifications/desktop/sanitize.js';
|
|
9
|
+
import { callsWords } from '../fire/calls.js';
|
|
8
10
|
function clock(at) {
|
|
9
11
|
return new Intl.DateTimeFormat('en-GB', {
|
|
10
12
|
weekday: 'short',
|
|
@@ -19,10 +21,44 @@ export function noticeText(kind, job, extra) {
|
|
|
19
21
|
const when = clock(extra.at);
|
|
20
22
|
const summary = job.notify.includeSummary && extra.summary ? ` — ${extra.summary}` : '';
|
|
21
23
|
switch (kind) {
|
|
22
|
-
case 'finished':
|
|
23
|
-
|
|
24
|
+
case 'finished': {
|
|
25
|
+
const refused = extra.refused;
|
|
26
|
+
if (!refused)
|
|
27
|
+
return { title, body: `finished at ${when}${summary}` };
|
|
28
|
+
const done = `done at ${when}, but ${callsWords(refused, 'refused')}`;
|
|
29
|
+
if (!job.notify.includeSummary)
|
|
30
|
+
return {
|
|
31
|
+
title,
|
|
32
|
+
body: fit(`${done} (${refused.first.tool}); namzu schedule show ${job.name} says why`, `${done} (${refused.first.tool})`),
|
|
33
|
+
};
|
|
34
|
+
// The reason is cut, never the words before it or the summary's absence.
|
|
35
|
+
const head = `${done}: `;
|
|
36
|
+
const room = NOTICE_BODY_MAX - [...head].length - [...summary].length;
|
|
37
|
+
const reason = [...refused.first.reason];
|
|
38
|
+
const said = reason.length <= room
|
|
39
|
+
? refused.first.reason
|
|
40
|
+
: `${reason.slice(0, Math.max(room - 1, 0)).join('')}…`;
|
|
41
|
+
return { title, body: fit(`${head}${said}${summary}`, `${head}${said}`) };
|
|
42
|
+
}
|
|
24
43
|
case 'failed':
|
|
25
44
|
return { title, body: `failed at ${when}${summary}` };
|
|
45
|
+
case 'check-failed': {
|
|
46
|
+
if (!job.notify.includeSummary || !extra.reason) {
|
|
47
|
+
return {
|
|
48
|
+
title,
|
|
49
|
+
body: `check failed at ${when}; namzu schedule show ${job.name} says why`,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const head = `check failed at ${when}: `;
|
|
53
|
+
const room = NOTICE_BODY_MAX - [...head].length;
|
|
54
|
+
// The reason can quote the script's own (untrusted) output; make it
|
|
55
|
+
// safe for a notification the same way a refused call's reason
|
|
56
|
+
// already is, even though its own producer already should have.
|
|
57
|
+
const safeReason = sanitizeLine(extra.reason, 1_000);
|
|
58
|
+
const reason = [...safeReason];
|
|
59
|
+
const said = reason.length <= room ? safeReason : `${reason.slice(0, Math.max(room - 1, 0)).join('')}…`;
|
|
60
|
+
return { title, body: fit(`${head}${said}`, `check failed at ${when}`) };
|
|
61
|
+
}
|
|
26
62
|
case 'timed-out':
|
|
27
63
|
return { title, body: `stopped at its time limit at ${when}` };
|
|
28
64
|
case 'interrupted':
|
|
@@ -76,6 +112,39 @@ export function noticeText(kind, job, extra) {
|
|
|
76
112
|
return { title, body: `paused after ${extra.failures ?? 'several'} failed runs in a row` };
|
|
77
113
|
}
|
|
78
114
|
}
|
|
115
|
+
/** The first text that fits a notification whole, else the last cut to fit. */
|
|
116
|
+
function fit(...candidates) {
|
|
117
|
+
const whole = candidates.find((text) => [...text].length <= NOTICE_BODY_MAX);
|
|
118
|
+
if (whole !== undefined)
|
|
119
|
+
return whole;
|
|
120
|
+
const last = [...(candidates.at(-1) ?? '')];
|
|
121
|
+
return `${last.slice(0, NOTICE_BODY_MAX - 1).join('')}…`;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* What `notify.includeSummary` shows for a `completed` `script`/`script+
|
|
125
|
+
* agent` run: there is no model text, so the last line of the script's
|
|
126
|
+
* stdout that is not itself the wake-gate's JSON contract line stands in
|
|
127
|
+
* for it — the same "one line, gated behind the flag" shape a `finished`
|
|
128
|
+
* agent notice already gives the model's own summary.
|
|
129
|
+
*/
|
|
130
|
+
export function scriptSummaryOf(result) {
|
|
131
|
+
const stdout = result.scriptOutput?.stdout;
|
|
132
|
+
if (!stdout)
|
|
133
|
+
return undefined;
|
|
134
|
+
const lines = stdout
|
|
135
|
+
.split(/\r?\n/)
|
|
136
|
+
.map((line) => line.trim())
|
|
137
|
+
.filter((line) => line.length > 0);
|
|
138
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
139
|
+
const line = lines[i];
|
|
140
|
+
const looksLikeContract = line.startsWith('{') && line.endsWith('}');
|
|
141
|
+
// The script's own stdout is untrusted, exactly like a model's answer
|
|
142
|
+
// is: made safe the same way, before it ever reaches a notification.
|
|
143
|
+
if (!looksLikeContract)
|
|
144
|
+
return sanitizeLine(line, 200);
|
|
145
|
+
}
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
79
148
|
/** The same failure told once: status plus the reason with numbers and ids removed. */
|
|
80
149
|
export function failureSignature(status, reason) {
|
|
81
150
|
const normal = (reason ?? '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../src/schedule/daemon/notify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../src/schedule/daemon/notify.ts"],"names":[],"mappings":"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"}
|
package/dist/schedule/env.d.ts
CHANGED
|
@@ -11,10 +11,14 @@
|
|
|
11
11
|
*/
|
|
12
12
|
/** Variables a child inherits from the daemon. Nothing else. */
|
|
13
13
|
export declare const CHILD_ENV_ALLOWLIST: readonly ["HOME", "USER", "LOGNAME", "LANG", "LC_ALL", "TZ", "TMPDIR", "SHELL", "XDG_RUNTIME_DIR", "XDG_CONFIG_HOME", "DBUS_SESSION_BUS_ADDRESS", "WSL_DISTRO_NAME", "WSL_INTEROP", "SystemRoot", "USERPROFILE", "APPDATA", "LOCALAPPDATA", "DISPLAY", "WAYLAND_DISPLAY", "XAUTHORITY"];
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
/**
|
|
15
|
+
* `PATH` without Windows drive mounts: under WSL a failed lookup through
|
|
16
|
+
* `/mnt/c` costs seconds. The drives are the one-letter directories under
|
|
17
|
+
* the mount root `/etc/wsl.conf` sets (`[automount] root`, `/mnt/` by default).
|
|
18
|
+
*/
|
|
19
|
+
export declare function stripWindowsMounts(path: string | undefined, mountRoot?: string): string;
|
|
20
|
+
/** The environment of a fire child. `mountRoot` is for a test; absent reads `/etc/wsl.conf`. */
|
|
21
|
+
export declare function childEnvironment(source: NodeJS.ProcessEnv, namzuHome: string, mountRoot?: string): NodeJS.ProcessEnv;
|
|
18
22
|
export interface DaemonEnvFile {
|
|
19
23
|
readonly values: Readonly<Record<string, string>>;
|
|
20
24
|
readonly warnings: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/schedule/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/schedule/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,yRAuBtB,CAAA;AAEV;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,SAAS,GAAE,MAA2B,GACpC,MAAM,CAOR;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GAChB,MAAM,CAAC,UAAU,CAUnB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CA8BzD"}
|
package/dist/schedule/env.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* have.
|
|
11
11
|
*/
|
|
12
12
|
import { readFileSync, statSync } from 'node:fs';
|
|
13
|
+
import { readWslMountRoot } from '../context/environment.js';
|
|
13
14
|
/** Variables a child inherits from the daemon. Nothing else. */
|
|
14
15
|
export const CHILD_ENV_ALLOWLIST = [
|
|
15
16
|
'HOME',
|
|
@@ -35,15 +36,21 @@ export const CHILD_ENV_ALLOWLIST = [
|
|
|
35
36
|
'WAYLAND_DISPLAY',
|
|
36
37
|
'XAUTHORITY',
|
|
37
38
|
];
|
|
38
|
-
/**
|
|
39
|
-
|
|
39
|
+
/**
|
|
40
|
+
* `PATH` without Windows drive mounts: under WSL a failed lookup through
|
|
41
|
+
* `/mnt/c` costs seconds. The drives are the one-letter directories under
|
|
42
|
+
* the mount root `/etc/wsl.conf` sets (`[automount] root`, `/mnt/` by default).
|
|
43
|
+
*/
|
|
44
|
+
export function stripWindowsMounts(path, mountRoot = readWslMountRoot()) {
|
|
45
|
+
const root = mountRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
46
|
+
const drive = new RegExp(`^${root}[a-z](/|$)`, 'i');
|
|
40
47
|
return (path ?? '')
|
|
41
48
|
.split(':')
|
|
42
|
-
.filter((entry) => entry !== '' &&
|
|
49
|
+
.filter((entry) => entry !== '' && !drive.test(entry))
|
|
43
50
|
.join(':');
|
|
44
51
|
}
|
|
45
|
-
/** The environment of a fire child. */
|
|
46
|
-
export function childEnvironment(source, namzuHome) {
|
|
52
|
+
/** The environment of a fire child. `mountRoot` is for a test; absent reads `/etc/wsl.conf`. */
|
|
53
|
+
export function childEnvironment(source, namzuHome, mountRoot) {
|
|
47
54
|
const env = {};
|
|
48
55
|
for (const key of CHILD_ENV_ALLOWLIST)
|
|
49
56
|
if (source[key] !== undefined)
|
|
@@ -51,7 +58,7 @@ export function childEnvironment(source, namzuHome) {
|
|
|
51
58
|
env.PATH =
|
|
52
59
|
process.platform === 'win32'
|
|
53
60
|
? (source.PATH ?? source.Path ?? '')
|
|
54
|
-
: stripWindowsMounts(source.PATH);
|
|
61
|
+
: stripWindowsMounts(source.PATH, mountRoot);
|
|
55
62
|
if (!env.PATH)
|
|
56
63
|
env.PATH = '/usr/local/bin:/usr/bin:/bin';
|
|
57
64
|
env.NAMZU_HOME = namzuHome;
|
package/dist/schedule/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/schedule/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/schedule/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tool calls of one scheduled run that did not do what they were for:
|
|
3
|
+
* refused (they never ran — a gate rule, the scheduled-run floor, the mode, a
|
|
4
|
+
* declined review) and failed (they ran and returned an error).
|
|
5
|
+
*
|
|
6
|
+
* A run ends `completed` when its turn ends normally, whatever its calls
|
|
7
|
+
* did: a run whose only command the floor refused ended `completed`, and its
|
|
8
|
+
* notification said `finished`. How the turn ended stays the status, and the
|
|
9
|
+
* counts with each kind's first reason travel beside it, in the run's
|
|
10
|
+
* result, its history record, the job's state and its notification.
|
|
11
|
+
*/
|
|
12
|
+
import type { ScheduleCallTally } from '../types.js';
|
|
13
|
+
/** How long a recorded reason may be. */
|
|
14
|
+
export declare const CALL_REASON_MAX = 300;
|
|
15
|
+
export interface CallEnd {
|
|
16
|
+
readonly toolName: string;
|
|
17
|
+
readonly isError: boolean;
|
|
18
|
+
readonly output?: string;
|
|
19
|
+
readonly summary: string;
|
|
20
|
+
/** The person declined on the tool's own screen: nothing failed. */
|
|
21
|
+
readonly cancelled?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface CallTallies {
|
|
24
|
+
readonly refusedCalls?: ScheduleCallTally;
|
|
25
|
+
readonly failedCalls?: ScheduleCallTally;
|
|
26
|
+
}
|
|
27
|
+
export declare class CallTally {
|
|
28
|
+
#private;
|
|
29
|
+
/**
|
|
30
|
+
* `withheld`: the tools the run was not given because its permissions
|
|
31
|
+
* never let it use them. A call to one comes back as an unknown tool, and
|
|
32
|
+
* is a refusal, not a failure.
|
|
33
|
+
*/
|
|
34
|
+
constructor(withheld?: Iterable<string>);
|
|
35
|
+
/** Count one finished call. */
|
|
36
|
+
observe(call: CallEnd): void;
|
|
37
|
+
/** The counts so far, each only when above zero. */
|
|
38
|
+
tallies(): CallTallies;
|
|
39
|
+
}
|
|
40
|
+
/** `1 call was refused (bash: <reason>); 2 calls failed (read: <reason>)`, or nothing. */
|
|
41
|
+
export declare function callsLine(result: CallTallies): string;
|
|
42
|
+
/** `1 call refused, 2 failed` for a job's last run, from its state's counts, or nothing. */
|
|
43
|
+
export declare function callsCount(last: {
|
|
44
|
+
readonly refusedCalls?: number;
|
|
45
|
+
readonly failedCalls?: number;
|
|
46
|
+
}): string;
|
|
47
|
+
/** `1 call was refused`, `2 calls failed`: a count in words. */
|
|
48
|
+
export declare function callsWords(tally: ScheduleCallTally, verb: 'refused' | 'failed'): string;
|
|
49
|
+
//# sourceMappingURL=calls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/schedule/fire/calls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAapD,yCAAyC;AACzC,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAA;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;CACxC;AAED,qBAAa,SAAS;;IAOrB;;;;OAIG;gBACS,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAM;IAI3C,+BAA+B;IAC/B,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAiC5B,oDAAoD;IACpD,OAAO,IAAI,WAAW;CAUtB;AAED,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAarD;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC7B,GAAG,MAAM,CAMT;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAKvF"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tool calls of one scheduled run that did not do what they were for:
|
|
3
|
+
* refused (they never ran — a gate rule, the scheduled-run floor, the mode, a
|
|
4
|
+
* declined review) and failed (they ran and returned an error).
|
|
5
|
+
*
|
|
6
|
+
* A run ends `completed` when its turn ends normally, whatever its calls
|
|
7
|
+
* did: a run whose only command the floor refused ended `completed`, and its
|
|
8
|
+
* notification said `finished`. How the turn ended stays the status, and the
|
|
9
|
+
* counts with each kind's first reason travel beside it, in the run's
|
|
10
|
+
* result, its history record, the job's state and its notification.
|
|
11
|
+
*/
|
|
12
|
+
import { sanitizeLine } from '../../integrations/notifications/desktop/sanitize.js';
|
|
13
|
+
/** What the kernel writes in place of a result for a call that never ran (`deniedToolOutput`). */
|
|
14
|
+
const NOT_EXECUTED = /^Error: Tool "[^"]*" was not executed\.\s*/;
|
|
15
|
+
/**
|
|
16
|
+
* What the kernel writes for a call to a tool the session does not have, in
|
|
17
|
+
* each of its forms: `Error: Unknown tool "x"`, followed by `. Available: …`
|
|
18
|
+
* (what the step can call) when the registry says it lacks the name, and
|
|
19
|
+
* `Error: Unknown or unavailable tool "x": …` from a direct call.
|
|
20
|
+
*/
|
|
21
|
+
const UNKNOWN_TOOL = /^Error: Unknown (?:or unavailable )?tool "/;
|
|
22
|
+
/** The gate's prefix, which says nothing the word "refused" does not. */
|
|
23
|
+
const GATE = /^Blocked by the authorization gate:\s*/;
|
|
24
|
+
/** How long a recorded reason may be. */
|
|
25
|
+
export const CALL_REASON_MAX = 300;
|
|
26
|
+
export class CallTally {
|
|
27
|
+
#refused = 0;
|
|
28
|
+
#failed = 0;
|
|
29
|
+
#firstRefused;
|
|
30
|
+
#firstFailed;
|
|
31
|
+
#withheld;
|
|
32
|
+
/**
|
|
33
|
+
* `withheld`: the tools the run was not given because its permissions
|
|
34
|
+
* never let it use them. A call to one comes back as an unknown tool, and
|
|
35
|
+
* is a refusal, not a failure.
|
|
36
|
+
*/
|
|
37
|
+
constructor(withheld = []) {
|
|
38
|
+
this.#withheld = new Set(withheld);
|
|
39
|
+
}
|
|
40
|
+
/** Count one finished call. */
|
|
41
|
+
observe(call) {
|
|
42
|
+
if (!call.isError || call.cancelled)
|
|
43
|
+
return;
|
|
44
|
+
const text = call.output ?? call.summary;
|
|
45
|
+
const refused = NOT_EXECUTED.exec(text);
|
|
46
|
+
if (refused) {
|
|
47
|
+
this.#refused++;
|
|
48
|
+
this.#firstRefused ??= {
|
|
49
|
+
tool: call.toolName,
|
|
50
|
+
reason: sanitizeLine(text.slice(refused[0].length).replace(GATE, ''), CALL_REASON_MAX),
|
|
51
|
+
};
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (this.#withheld.has(call.toolName) && UNKNOWN_TOOL.test(text)) {
|
|
55
|
+
this.#refused++;
|
|
56
|
+
this.#firstRefused ??= {
|
|
57
|
+
tool: call.toolName,
|
|
58
|
+
reason: `the job's permissions never let a run use ${call.toolName}, so the run was not given it`,
|
|
59
|
+
};
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.#failed++;
|
|
63
|
+
this.#firstFailed ??= {
|
|
64
|
+
tool: call.toolName,
|
|
65
|
+
reason: sanitizeLine(text
|
|
66
|
+
.replace(/^Error:\s*/, '')
|
|
67
|
+
.split(/\r?\n/)
|
|
68
|
+
.find((line) => line.trim().length > 0) ?? '', CALL_REASON_MAX),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** The counts so far, each only when above zero. */
|
|
72
|
+
tallies() {
|
|
73
|
+
return {
|
|
74
|
+
...(this.#refused > 0 && this.#firstRefused
|
|
75
|
+
? { refusedCalls: { count: this.#refused, first: this.#firstRefused } }
|
|
76
|
+
: {}),
|
|
77
|
+
...(this.#failed > 0 && this.#firstFailed
|
|
78
|
+
? { failedCalls: { count: this.#failed, first: this.#firstFailed } }
|
|
79
|
+
: {}),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** `1 call was refused (bash: <reason>); 2 calls failed (read: <reason>)`, or nothing. */
|
|
84
|
+
export function callsLine(result) {
|
|
85
|
+
return [
|
|
86
|
+
...(result.refusedCalls
|
|
87
|
+
? [
|
|
88
|
+
`${callsWords(result.refusedCalls, 'refused')} (${result.refusedCalls.first.tool}: ${result.refusedCalls.first.reason})`,
|
|
89
|
+
]
|
|
90
|
+
: []),
|
|
91
|
+
...(result.failedCalls
|
|
92
|
+
? [
|
|
93
|
+
`${callsWords(result.failedCalls, 'failed')} (${result.failedCalls.first.tool}: ${result.failedCalls.first.reason})`,
|
|
94
|
+
]
|
|
95
|
+
: []),
|
|
96
|
+
].join('; ');
|
|
97
|
+
}
|
|
98
|
+
/** `1 call refused, 2 failed` for a job's last run, from its state's counts, or nothing. */
|
|
99
|
+
export function callsCount(last) {
|
|
100
|
+
const refused = last.refusedCalls ?? 0;
|
|
101
|
+
const failed = last.failedCalls ?? 0;
|
|
102
|
+
const calls = (n) => `${n} call${n === 1 ? '' : 's'}`;
|
|
103
|
+
if (refused > 0)
|
|
104
|
+
return `${calls(refused)} refused${failed > 0 ? `, ${failed} failed` : ''}`;
|
|
105
|
+
return failed > 0 ? `${calls(failed)} failed` : '';
|
|
106
|
+
}
|
|
107
|
+
/** `1 call was refused`, `2 calls failed`: a count in words. */
|
|
108
|
+
export function callsWords(tally, verb) {
|
|
109
|
+
const n = tally.count;
|
|
110
|
+
return verb === 'refused'
|
|
111
|
+
? `${n} call${n === 1 ? ' was' : 's were'} refused`
|
|
112
|
+
: `${n} call${n === 1 ? '' : 's'} failed`;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=calls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../src/schedule/fire/calls.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import type { CommandContext } from '../../commands/types.js';
|
|
26
26
|
import type { SchedulePaths } from '../paths.js';
|
|
27
|
-
import type
|
|
27
|
+
import { type ScheduleJob, type ScheduleRunTrigger } from '../types.js';
|
|
28
28
|
import { browserPreflight } from './browser-preflight.js';
|
|
29
29
|
export declare const HOLD_REASON = "Scheduled run: waiting for the operator to approve";
|
|
30
30
|
/** How long past the turn's own timeout the child waits before it stops itself. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fire.d.ts","sourceRoot":"","sources":["../../../src/schedule/fire/fire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"fire.d.ts","sourceRoot":"","sources":["../../../src/schedule/fire/fire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAeH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAiB7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,OAAO,EACN,KAAK,WAAW,EAGhB,KAAK,kBAAkB,EAEvB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAyB,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAOhF,eAAO,MAAM,WAAW,uDAAuD,CAAA;AAC/E,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,QAAS,CAAA;AAEvC,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA2BnF;AAyCD,eAAO,MAAM,2BAA2B,8KACoI,CAAA;AAE5K,MAAM,WAAW,gBAAgB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAChC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CACpB,cAAc,oBAAoB,CAAC,EACnC,mBAAmB,GAAG,oBAAoB,CAC1C,CAAA;IACD,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,uDAAuD;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAA;CACnD;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAC5B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,QAAQ,EACd,IAAI,GAAE,gBAAqB,GACzB,OAAO,CAAC,MAAM,CAAC,CAshBjB;AAwDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAClD,GAAG,MAAM,CAGT;AAcD,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEpD"}
|