@songsid/agend 2.3.2 → 2.3.3-beta.10
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/dist/agent-cli-instructions.md +2 -2
- package/dist/agent-cli.js +13 -112
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.d.ts +0 -1
- package/dist/agent-endpoint.js +1 -9
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-whats-new.d.ts +23 -5
- package/dist/agent-whats-new.js +58 -40
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.d.ts +0 -7
- package/dist/auth-api.js +1 -15
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/authority-state.js +1 -1
- package/dist/authority/authority-state.js.map +1 -1
- package/dist/authority/web-authority.d.ts +9 -4
- package/dist/authority/web-authority.js +10 -5
- package/dist/authority/web-authority.js.map +1 -1
- package/dist/backend/antigravity.js +6 -1
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +20 -1
- package/dist/backend/claude-code.js +54 -29
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/claude-transcript-errors.d.ts +18 -0
- package/dist/backend/claude-transcript-errors.js +19 -0
- package/dist/backend/claude-transcript-errors.js.map +1 -0
- package/dist/backend/codex-session-lookup.d.ts +16 -3
- package/dist/backend/codex-session-lookup.js +45 -11
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex.d.ts +16 -0
- package/dist/backend/codex.js +184 -35
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/grok.js +58 -12
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro-reconcile-store.js +8 -1
- package/dist/backend/kiro-reconcile-store.js.map +1 -1
- package/dist/backend/kiro.d.ts +0 -5
- package/dist/backend/kiro.js +2 -10
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.js +2 -1
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +53 -4
- package/dist/backend/types.js.map +1 -1
- package/dist/bundled-skills.d.ts +4 -6
- package/dist/bundled-skills.js +10 -14
- package/dist/bundled-skills.js.map +1 -1
- package/dist/channel/adapters/discord.js +60 -17
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/mcp-server.js +5 -5
- package/dist/channel/mcp-server.js.map +1 -1
- package/dist/channel/mcp-tools.d.ts +1 -3
- package/dist/channel/mcp-tools.js +4 -58
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +4 -1
- package/dist/classic-channel-manager.js +21 -7
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +23 -6
- package/dist/cli.js.map +1 -1
- package/dist/config-history.d.ts +50 -0
- package/dist/config-history.js +263 -0
- package/dist/config-history.js.map +1 -0
- package/dist/config-validator.js +10 -8
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.js +11 -4
- package/dist/config.js.map +1 -1
- package/dist/cross-instance-envelope.d.ts +10 -5
- package/dist/cross-instance-envelope.js +20 -17
- package/dist/cross-instance-envelope.js.map +1 -1
- package/dist/daemon.d.ts +130 -64
- package/dist/daemon.js +603 -428
- package/dist/daemon.js.map +1 -1
- package/dist/daily-summary.d.ts +8 -1
- package/dist/daily-summary.js +8 -5
- package/dist/daily-summary.js.map +1 -1
- package/dist/dashboard-live.d.ts +1 -1
- package/dist/dashboard-live.js +3 -3
- package/dist/dashboard-live.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +1 -1
- package/dist/dashboard-permissions.js +1 -3
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/delivery-outbox.d.ts +31 -22
- package/dist/delivery-outbox.js +119 -161
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-outbox.test.js +10 -25
- package/dist/delivery-outbox.test.js.map +1 -1
- package/dist/doctor.d.ts +4 -0
- package/dist/doctor.js +16 -1
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-level-config.js +1 -1
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +74 -66
- package/dist/fleet-manager.js +285 -414
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-process-handlers.d.ts +5 -0
- package/dist/fleet-process-handlers.js +21 -0
- package/dist/fleet-process-handlers.js.map +1 -1
- package/dist/fleet-service-owner.d.ts +11 -0
- package/dist/fleet-service-owner.js +3 -0
- package/dist/fleet-service-owner.js.map +1 -0
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +11 -1
- package/dist/general-knowledge/skills/delegation-playbook/SKILL.md +1 -1
- package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
- package/dist/general-knowledge/skills/session-management/SKILL.md +7 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +13 -204
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +30 -68
- package/dist/instance-lifecycle.d.ts +19 -0
- package/dist/instance-lifecycle.js +73 -15
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.js +6 -7
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-reconcile.js +3 -3
- package/dist/kiro-reconcile.js.map +1 -1
- package/dist/locale.js +96 -58
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +1 -1
- package/dist/log-service.js.map +1 -1
- package/dist/needs-you-hub.d.ts +1 -0
- package/dist/needs-you-hub.js +6 -3
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you-live.d.ts +3 -1
- package/dist/needs-you-live.js +24 -2
- package/dist/needs-you-live.js.map +1 -1
- package/dist/needs-you.d.ts +13 -2
- package/dist/needs-you.js +11 -1
- package/dist/needs-you.js.map +1 -1
- package/dist/notify-socket.d.ts +10 -0
- package/dist/notify-socket.js +45 -0
- package/dist/notify-socket.js.map +1 -0
- package/dist/outbound-handlers.js +20 -8
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +0 -62
- package/dist/outbound-schemas.js +4 -43
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/parked-notices.d.ts +87 -0
- package/dist/parked-notices.js +194 -0
- package/dist/parked-notices.js.map +1 -0
- package/dist/public-link-progress.d.ts +5 -2
- package/dist/public-link-progress.js +4 -3
- package/dist/public-link-progress.js.map +1 -1
- package/dist/public-web-gateway.js +0 -9
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +12 -0
- package/dist/public-web-link.js +29 -5
- package/dist/public-web-link.js.map +1 -1
- package/dist/quota-notice.d.ts +23 -0
- package/dist/quota-notice.js +22 -0
- package/dist/quota-notice.js.map +1 -0
- package/dist/scheduler/task-board.d.ts +17 -25
- package/dist/scheduler/task-board.js +29 -39
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/sd-notify.d.ts +23 -15
- package/dist/sd-notify.js +88 -29
- package/dist/sd-notify.js.map +1 -1
- package/dist/search/search-docs.d.ts +1 -1
- package/dist/search/search-docs.js +2 -2
- package/dist/search/search-docs.js.map +1 -1
- package/dist/settings-api.d.ts +16 -1
- package/dist/settings-api.js +56 -16
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +3 -1
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-confirmation.d.ts +17 -3
- package/dist/settings-confirmation.js +8 -5
- package/dist/settings-confirmation.js.map +1 -1
- package/dist/settings-effect.js +0 -2
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.js +31 -1
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/setup-wizard.d.ts +3 -0
- package/dist/setup-wizard.js +4 -2
- package/dist/setup-wizard.js.map +1 -1
- package/dist/task-board-waker.d.ts +43 -1
- package/dist/task-board-waker.js +121 -9
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tmux-control.d.ts +1 -1
- package/dist/tmux-control.js +3 -2
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.js +18 -16
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.d.ts +2 -0
- package/dist/tmux-read.js +7 -1
- package/dist/tmux-read.js.map +1 -1
- package/dist/tool-permissions.js +3 -10
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +29 -7
- package/dist/topic-commands.js +97 -37
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-monitor.d.ts +7 -0
- package/dist/transcript-monitor.js +48 -3
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/tunnel/cloudflared.d.ts +5 -0
- package/dist/tunnel/cloudflared.js +32 -1
- package/dist/tunnel/cloudflared.js.map +1 -1
- package/dist/tunnel/named-diagnostics.d.ts +2 -1
- package/dist/tunnel/named-diagnostics.js +4 -1
- package/dist/tunnel/named-diagnostics.js.map +1 -1
- package/dist/tunnel/named-link-test.d.ts +90 -0
- package/dist/tunnel/named-link-test.js +270 -0
- package/dist/tunnel/named-link-test.js.map +1 -0
- package/dist/tunnel/purpose-lane.d.ts +3 -1
- package/dist/tunnel/purpose-lane.js +2 -0
- package/dist/tunnel/purpose-lane.js.map +1 -1
- package/dist/types.d.ts +9 -11
- package/dist/ui/chat-ambient.js +4 -4
- package/dist/ui/chat-commands.js +3 -2
- package/dist/ui/chat-store.js +4 -1
- package/dist/ui/chat-strings.js +12 -46
- package/dist/ui/chat-thread.js +51 -59
- package/dist/ui/fleet-office-skin.js +37 -14
- package/dist/ui/fleet-office.js +31 -7
- package/dist/ui/html-attachment.js +22 -8
- package/dist/ui/panel-chat.js +21 -50
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/panel-needs.js +11 -9
- package/dist/ui/panel-settings.js +5 -3
- package/dist/ui/preview-panel.js +12 -21
- package/dist/ui/preview.js +10 -3
- package/dist/ui/search-dialog.js +30 -14
- package/dist/ui/settings-appearance.js +3 -37
- package/dist/ui/settings-confirm.js +18 -0
- package/dist/ui/settings-guests.js +13 -4
- package/dist/ui/settings-learn.js +1 -1
- package/dist/ui/settings-mods.js +5 -12
- package/dist/ui/settings-named-test.js +144 -0
- package/dist/ui/settings-registry.js +0 -2
- package/dist/ui/settings-strings.js +16 -16
- package/dist/ui/settings-web-authority.js +4 -3
- package/dist/ui/shared/app-i18n.js +15 -4
- package/dist/ui/shared/app-needs.js +5 -1
- package/dist/ui/shared/app-prefs.js +17 -17
- package/dist/ui/shared/app-shell.js +47 -9
- package/dist/ui/shared/app-store.js +6 -2
- package/dist/ui/shared/app.css +33 -39
- package/dist/ui/shared/app.js +5 -4
- package/dist/ui/shared/instance-nav.js +9 -9
- package/dist/ui/shared/instance-switch.js +8 -2
- package/dist/ui/shared/panel-view.js +22 -8
- package/dist/ui/shared/view-strings.js +6 -0
- package/dist/ui/shared/web-authorize.js +35 -13
- package/dist/update-check.d.ts +13 -4
- package/dist/update-check.js +17 -4
- package/dist/update-check.js.map +1 -1
- package/dist/usage/usage-api.d.ts +3 -0
- package/dist/usage/usage-api.js +5 -1
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/view-api.d.ts +2 -0
- package/dist/view-api.js +64 -0
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +9 -17
- package/dist/web-api.js +257 -371
- package/dist/web-api.js.map +1 -1
- package/dist/web-appearance-tools.d.ts +0 -2
- package/dist/web-appearance-tools.js +2 -5
- package/dist/web-appearance-tools.js.map +1 -1
- package/dist/web-appearance-view.d.ts +0 -6
- package/dist/web-appearance-view.js +0 -1
- package/dist/web-appearance-view.js.map +1 -1
- package/dist/web-appearance.d.ts +14 -7
- package/dist/web-appearance.js +5 -6
- package/dist/web-appearance.js.map +1 -1
- package/dist/web-asset-parts.d.ts +1 -17
- package/dist/web-asset-parts.js +1 -15
- package/dist/web-asset-parts.js.map +1 -1
- package/dist/web-auth.js +1 -7
- package/dist/web-auth.js.map +1 -1
- package/dist/web-chat-history.d.ts +3 -7
- package/dist/web-chat-history.js +10 -17
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +9 -1
- package/dist/web-commands.js +13 -0
- package/dist/web-commands.js.map +1 -1
- package/dist/web-experimental.d.ts +3 -8
- package/dist/web-experimental.js +9 -33
- package/dist/web-experimental.js.map +1 -1
- package/dist/web-guest-access.d.ts +40 -2
- package/dist/web-guest-access.js +50 -14
- package/dist/web-guest-access.js.map +1 -1
- package/dist/web-mod-bundle.d.ts +2 -45
- package/dist/web-mod-bundle.js +15 -63
- package/dist/web-mod-bundle.js.map +1 -1
- package/dist/web-mod-store.d.ts +3 -48
- package/dist/web-mod-store.js +30 -97
- package/dist/web-mod-store.js.map +1 -1
- package/dist/web-prefs.d.ts +13 -0
- package/dist/web-prefs.js +38 -0
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +6 -13
- package/dist/web-preview.js +12 -23
- package/dist/web-preview.js.map +1 -1
- package/dist/web-session.d.ts +11 -3
- package/dist/web-session.js +22 -11
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +1 -1
- package/dist/web-settings-patch.js +9 -7
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-settings-tools.d.ts +0 -13
- package/dist/web-settings-tools.js +12 -84
- package/dist/web-settings-tools.js.map +1 -1
- package/dist/workflow-templates/default.md +2 -2
- package/dist/working-recovery.d.ts +0 -2
- package/dist/working-recovery.js +2 -23
- package/dist/working-recovery.js.map +1 -1
- package/launcher/agend-install.cjs +7 -1
- package/launcher/fleet-service-owner.cjs +150 -0
- package/package.json +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +0 -376
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +0 -673
- package/dist/task-board-summary.d.ts +0 -101
- package/dist/task-board-summary.js +0 -177
- package/dist/task-board-summary.js.map +0 -1
- package/dist/ui/app-effects.js +0 -251
- package/dist/ui/chat-effect-posters.js +0 -42
- package/dist/ui/chat-effects.js +0 -167
- package/dist/ui/effect-trial-controller.js +0 -124
- package/dist/ui/effect-trial-offer.js +0 -2
- package/dist/ui/effect-trial-panel.js +0 -40
- package/dist/ui/effects-waker.js +0 -2
- package/dist/ui/settings-effects.js +0 -202
- package/dist/ui/settings-owner-effects.js +0 -82
- package/dist/ui/shared/effect-app-runtime.js +0 -299
- package/dist/ui/shared/effect-baseline.js +0 -64
- package/dist/ui/shared/effect-chat-runtime.js +0 -162
- package/dist/ui/shared/effect-cursor.js +0 -126
- package/dist/ui/shared/effect-display-metadata.js +0 -39
- package/dist/ui/shared/effect-frame.js +0 -146
- package/dist/ui/shared/effect-geometry.js +0 -137
- package/dist/ui/shared/effect-host-style.js +0 -10
- package/dist/ui/shared/effect-owner-regions.js +0 -74
- package/dist/ui/shared/effect-owner-source.js +0 -122
- package/dist/ui/shared/effect-policy.js +0 -151
- package/dist/ui/shared/effect-poster-reader.js +0 -98
- package/dist/ui/shared/effect-posters.js +0 -117
- package/dist/ui/shared/effect-profiler.js +0 -184
- package/dist/ui/shared/effect-profiles.js +0 -65
- package/dist/ui/shared/effect-registry.js +0 -545
- package/dist/ui/shared/effect-runtime-loader.js +0 -236
- package/dist/ui/shared/effect-safety.js +0 -153
- package/dist/ui/shared/effect-stock-snapshot.js +0 -43
- package/dist/ui/shared/effect-stock-trust.js +0 -217
- package/dist/ui/shared/effect-trial-shadow.js +0 -62
- package/dist/ui/shared/effect-trial-source.js +0 -103
- package/dist/ui/shared/effect-trial-stage.js +0 -170
- package/dist/ui/shared/effect-trial.css +0 -40
- package/dist/ui/shared/feature-flags.js +0 -127
- package/dist/ui/shared/owner-effect-prefs.js +0 -117
- package/dist/upgrade-notices.d.ts +0 -17
- package/dist/upgrade-notices.js +0 -93
- package/dist/upgrade-notices.js.map +0 -1
- package/dist/web-effect-bootstrap.d.ts +0 -12
- package/dist/web-effect-bootstrap.js +0 -49
- package/dist/web-effect-bootstrap.js.map +0 -1
- package/dist/web-effect-bundle.d.ts +0 -28
- package/dist/web-effect-bundle.js +0 -171
- package/dist/web-effect-bundle.js.map +0 -1
- package/dist/web-effect-canonical.d.ts +0 -8
- package/dist/web-effect-canonical.js +0 -27
- package/dist/web-effect-canonical.js.map +0 -1
- package/dist/web-effect-library.d.ts +0 -114
- package/dist/web-effect-library.js +0 -530
- package/dist/web-effect-library.js.map +0 -1
- package/dist/web-effect-playback.d.ts +0 -30
- package/dist/web-effect-playback.js +0 -71
- package/dist/web-effect-playback.js.map +0 -1
- package/dist/web-effect-poster.d.ts +0 -8
- package/dist/web-effect-poster.js +0 -52
- package/dist/web-effect-poster.js.map +0 -1
- package/dist/web-effect-profiles.d.ts +0 -118
- package/dist/web-effect-profiles.js +0 -181
- package/dist/web-effect-profiles.js.map +0 -1
- package/dist/web-effect-service.d.ts +0 -93
- package/dist/web-effect-service.js +0 -335
- package/dist/web-effect-service.js.map +0 -1
- package/dist/web-effect-tools.d.ts +0 -48
- package/dist/web-effect-tools.js +0 -129
- package/dist/web-effect-tools.js.map +0 -1
- package/dist/web-effect-trials.d.ts +0 -86
- package/dist/web-effect-trials.js +0 -204
- package/dist/web-effect-trials.js.map +0 -1
- package/dist/web-effect-upload.d.ts +0 -27
- package/dist/web-effect-upload.js +0 -185
- package/dist/web-effect-upload.js.map +0 -1
- package/dist/web-effect-worker.d.ts +0 -8
- package/dist/web-effect-worker.js +0 -170
- package/dist/web-effect-worker.js.map +0 -1
- package/dist/web-effect.d.ts +0 -103
- package/dist/web-effect.js +0 -153
- package/dist/web-effect.js.map +0 -1
- package/dist/web-experimental-http.d.ts +0 -2
- package/dist/web-experimental-http.js +0 -12
- package/dist/web-experimental-http.js.map +0 -1
- package/dist/web-mod-agent.d.ts +0 -50
- package/dist/web-mod-agent.js +0 -207
- package/dist/web-mod-agent.js.map +0 -1
|
@@ -38,6 +38,19 @@ export declare function openCodexStateReadonly(path: string): Database.Database;
|
|
|
38
38
|
* file) is not "absent" and stays for the lookup to report as unreadable.
|
|
39
39
|
*/
|
|
40
40
|
export declare function codexStateDbAbsent(path: string): boolean;
|
|
41
|
+
/** bigint stat of a cwd candidate. ino can exceed Number.MAX_SAFE_INTEGER (WSL 9P). */
|
|
42
|
+
export type CwdStat = (path: string) => {
|
|
43
|
+
isDirectory(): boolean;
|
|
44
|
+
dev: bigint;
|
|
45
|
+
ino: bigint;
|
|
46
|
+
};
|
|
47
|
+
export declare function defaultCwdStat(path: string): ReturnType<CwdStat>;
|
|
48
|
+
/**
|
|
49
|
+
* The working directory as configured, as the filesystem resolves it, and — only when
|
|
50
|
+
* `stat` proves they are the same directory (same dev, nonzero identical ino) — the
|
|
51
|
+
* lowercase spelling Codex stores on a case-insensitive mount (#2817).
|
|
52
|
+
*/
|
|
53
|
+
export declare function cwdCandidates(workingDirectory: string, stat?: CwdStat): string[];
|
|
41
54
|
/**
|
|
42
55
|
* Newest interactive thread recorded for exactly this directory. Exact
|
|
43
56
|
* equality only: a prefix or LIKE match would take a subdirectory's (or a
|
|
@@ -59,7 +72,7 @@ export declare function codexStateDbAbsent(path: string): boolean;
|
|
|
59
72
|
* context — writes `task_started`, a `turn_context` or a `response_item`.
|
|
60
73
|
* tests/fixtures/codex-real-threads.json holds the real rows behind this.
|
|
61
74
|
*/
|
|
62
|
-
export declare function findExactCwdCodexSession(stateDbPath: string, workingDirectory: string, open?: (path: string) => Database.Database, rolloutHasTurn?: (path: string) => boolean): ExactCwdSession;
|
|
75
|
+
export declare function findExactCwdCodexSession(stateDbPath: string, workingDirectory: string, open?: (path: string) => Database.Database, rolloutHasTurn?: (path: string) => boolean, stat?: CwdStat): ExactCwdSession;
|
|
63
76
|
/**
|
|
64
77
|
* Whether a Codex rollout (JSONL) may hold a conversation. Read-only, in
|
|
65
78
|
* chunks, stopping at the first entry that is not part of an untouched thread
|
|
@@ -85,7 +98,7 @@ export declare function rolloutRecordsTurn(path: string): boolean;
|
|
|
85
98
|
* it, if any; null for a workspace that never had one. Read only when the
|
|
86
99
|
* lookup already said "none", so the walk costs nothing on a normal resume.
|
|
87
100
|
*/
|
|
88
|
-
export declare function newestMissedCwdRollout(sessionsDir: string, workingDirectory: string, rolloutHasTurn?: (path: string) => boolean): {
|
|
101
|
+
export declare function newestMissedCwdRollout(sessionsDir: string, workingDirectory: string, rolloutHasTurn?: (path: string) => boolean, stat?: CwdStat): {
|
|
89
102
|
id: string;
|
|
90
103
|
path: string;
|
|
91
104
|
} | null;
|
|
@@ -97,7 +110,7 @@ export declare function newestMissedCwdRollout(sessionsDir: string, workingDirec
|
|
|
97
110
|
* instead of a quiet fresh start. Any rollout of this directory counts,
|
|
98
111
|
* with or without a turn.
|
|
99
112
|
*/
|
|
100
|
-
export declare function cwdRolloutsProvenAbsent(sessionsDir: string, workingDirectory: string): boolean;
|
|
113
|
+
export declare function cwdRolloutsProvenAbsent(sessionsDir: string, workingDirectory: string, stat?: CwdStat): boolean;
|
|
101
114
|
/**
|
|
102
115
|
* The directory's git common dir: a string for a repo, null for "not a git
|
|
103
116
|
* repository", "unknown" for anything else (timeout, git missing, …).
|
|
@@ -42,15 +42,48 @@ export function codexStateDbAbsent(path) {
|
|
|
42
42
|
return err.code === "ENOENT";
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
export function defaultCwdStat(path) {
|
|
46
|
+
return statSync(path, { bigint: true });
|
|
47
|
+
}
|
|
48
|
+
function sameDirectory(a, b, stat) {
|
|
49
|
+
try {
|
|
50
|
+
const sa = stat(a);
|
|
51
|
+
const sb = stat(b);
|
|
52
|
+
return sa.isDirectory() && sb.isDirectory() && sa.dev === sb.dev && sa.ino !== 0n && sa.ino === sb.ino;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The working directory as configured, as the filesystem resolves it, and — only when
|
|
60
|
+
* `stat` proves they are the same directory (same dev, nonzero identical ino) — the
|
|
61
|
+
* lowercase spelling Codex stores on a case-insensitive mount (#2817).
|
|
62
|
+
*/
|
|
63
|
+
export function cwdCandidates(workingDirectory, stat = defaultCwdStat) {
|
|
47
64
|
const configured = resolve(workingDirectory);
|
|
48
65
|
let real = null;
|
|
49
66
|
try {
|
|
50
67
|
real = realpathSync(configured);
|
|
51
68
|
}
|
|
52
69
|
catch { /* a missing dir still matches as configured */ }
|
|
53
|
-
|
|
70
|
+
const base = real && real !== configured ? [configured, real] : [configured];
|
|
71
|
+
const out = [];
|
|
72
|
+
const seen = new Set();
|
|
73
|
+
const add = (p) => { if (!seen.has(p)) {
|
|
74
|
+
seen.add(p);
|
|
75
|
+
out.push(p);
|
|
76
|
+
} };
|
|
77
|
+
for (const p of base)
|
|
78
|
+
add(p);
|
|
79
|
+
for (const p of [...out]) {
|
|
80
|
+
const lower = p.toLowerCase();
|
|
81
|
+
if (lower === p)
|
|
82
|
+
continue;
|
|
83
|
+
if (sameDirectory(p, lower, stat))
|
|
84
|
+
add(lower);
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
54
87
|
}
|
|
55
88
|
/**
|
|
56
89
|
* Newest interactive thread recorded for exactly this directory. Exact
|
|
@@ -73,7 +106,7 @@ function cwdCandidates(workingDirectory) {
|
|
|
73
106
|
* context — writes `task_started`, a `turn_context` or a `response_item`.
|
|
74
107
|
* tests/fixtures/codex-real-threads.json holds the real rows behind this.
|
|
75
108
|
*/
|
|
76
|
-
export function findExactCwdCodexSession(stateDbPath, workingDirectory, open = openCodexStateReadonly, rolloutHasTurn = rolloutRecordsTurn) {
|
|
109
|
+
export function findExactCwdCodexSession(stateDbPath, workingDirectory, open = openCodexStateReadonly, rolloutHasTurn = rolloutRecordsTurn, stat = defaultCwdStat) {
|
|
77
110
|
let db = null;
|
|
78
111
|
try {
|
|
79
112
|
db = open(stateDbPath);
|
|
@@ -81,16 +114,17 @@ export function findExactCwdCodexSession(stateDbPath, workingDirectory, open = o
|
|
|
81
114
|
const missing = CODEX_THREAD_COLUMNS.filter(c => !columns.has(c));
|
|
82
115
|
if (missing.length > 0)
|
|
83
116
|
return { kind: "unreadable", reason: `threads schema missing: ${missing.join(", ")}` };
|
|
84
|
-
const
|
|
117
|
+
const candidates = cwdCandidates(workingDirectory, stat);
|
|
118
|
+
const placeholders = candidates.map(() => "?").join(", ");
|
|
85
119
|
// Every thread of this directory, newest first, until one has content —
|
|
86
120
|
// no page limit, so a run of empty threads cannot hide an older session.
|
|
87
121
|
const rows = db.prepare(`
|
|
88
122
|
SELECT id, has_user_event, first_user_message, rollout_path FROM threads
|
|
89
|
-
WHERE cwd IN (
|
|
123
|
+
WHERE cwd IN (${placeholders})
|
|
90
124
|
AND source = 'cli'
|
|
91
125
|
AND archived = 0
|
|
92
126
|
ORDER BY recency_at_ms DESC, updated_at_ms DESC, id DESC
|
|
93
|
-
`).iterate(
|
|
127
|
+
`).iterate(...candidates);
|
|
94
128
|
let row;
|
|
95
129
|
for (const r of rows) {
|
|
96
130
|
// Any sign of content is enough; only a thread with none is skipped.
|
|
@@ -202,8 +236,8 @@ export function rolloutRecordsTurn(path) {
|
|
|
202
236
|
* it, if any; null for a workspace that never had one. Read only when the
|
|
203
237
|
* lookup already said "none", so the walk costs nothing on a normal resume.
|
|
204
238
|
*/
|
|
205
|
-
export function newestMissedCwdRollout(sessionsDir, workingDirectory, rolloutHasTurn = rolloutRecordsTurn) {
|
|
206
|
-
const candidates = new Set(cwdCandidates(workingDirectory));
|
|
239
|
+
export function newestMissedCwdRollout(sessionsDir, workingDirectory, rolloutHasTurn = rolloutRecordsTurn, stat = defaultCwdStat) {
|
|
240
|
+
const candidates = new Set(cwdCandidates(workingDirectory, stat));
|
|
207
241
|
const files = [];
|
|
208
242
|
const walk = (dir, depth) => {
|
|
209
243
|
let entries;
|
|
@@ -244,8 +278,8 @@ export function newestMissedCwdRollout(sessionsDir, workingDirectory, rolloutHas
|
|
|
244
278
|
* instead of a quiet fresh start. Any rollout of this directory counts,
|
|
245
279
|
* with or without a turn.
|
|
246
280
|
*/
|
|
247
|
-
export function cwdRolloutsProvenAbsent(sessionsDir, workingDirectory) {
|
|
248
|
-
const candidates = new Set(cwdCandidates(workingDirectory));
|
|
281
|
+
export function cwdRolloutsProvenAbsent(sessionsDir, workingDirectory, stat = defaultCwdStat) {
|
|
282
|
+
const candidates = new Set(cwdCandidates(workingDirectory, stat));
|
|
249
283
|
const code = (err) => err.code;
|
|
250
284
|
const walk = (dir, depth) => {
|
|
251
285
|
let entries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-session-lookup.js","sourceRoot":"","sources":["../../src/backend/codex-session-lookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,gFAAgF;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe;CACnH,CAAC;AAEX,MAAM,aAAa,GAAG,iEAAiE,CAAC;AAexF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAQ,GAAyB,CAAC,IAAI,KAAK,QAAQ,CAAC;IACtD,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,aAAa,CAAC,gBAAwB;IAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,CAAC;QAAC,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,+CAA+C,CAAC,CAAC;IAClG,OAAO,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,gBAAwB,EACxB,IAAI,GAAwC,sBAAsB,EAClE,cAAc,GAA8B,kBAAkB;IAE9D,IAAI,EAAE,GAA6B,IAAI,CAAC;IACxC,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAE,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtH,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/G,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAChE,wEAAwE;QACxE,yEAAyE;QACzE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;KAMvB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAmH,CAAC;QAC5I,IAAI,GAAgC,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,qEAAqE;YACrE,qEAAqE;YACrE,0DAA0D;YAC1D,IAAI,CAAC,CAAC,cAAc,KAAK,CAAC;mBACrB,CAAC,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ,IAAI,CAAC,CAAC,kBAAkB,KAAK,EAAE,CAAC;mBACzE,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;gBAAC,GAAG,GAAG,CAAC,CAAC;gBAAC,MAAM;YAAC,CAAC;QAClG,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAClC,yEAAyE;QACzE,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA0C,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5E,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEvC;;;GAGG;AACH,SAAS,sBAAsB,CAAC,KAAuD;IACrF,OAAO,KAAK,CAAC,IAAI,KAAK,cAAc;WAC/B,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,yBAAyB,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC9C,wEAAwE;QACxE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YACjE,QAAQ,IAAI,IAAI,CAAC;YACjB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3B,IAAI,KAAuD,CAAC;gBAC5D,IAAI,CAAC;oBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC,CAAC,kCAAkC;gBAC3G,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAChD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;oBAAE,UAAU,GAAG,IAAI,CAAC;YACvD,CAAC;YACD,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,CAAC,UAAU,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,EAAE,KAAK,IAAI;YAAE,IAAI,CAAC;gBAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,gBAAwB,EACxB,cAAc,GAA8B,kBAAkB;IAE9D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAA6C,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;QAChD,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK,GAAG,CAAC;oBAAE,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;qBACjD,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACzH,CAAC;YAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,SAAS;QACnF,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB,EAAE,gBAAwB;IACnF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,GAAY,EAAsB,EAAE,CAAE,GAAyB,CAAC,IAAI,CAAC;IACnF,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAW,EAAE;QACnD,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;QAAC,CAAC;QAClF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACvB,IAAI,EAA+B,CAAC;YACpC,IAAI,CAAC;gBAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAAE,SAAS,CAAC,sBAAsB;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACtD,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,4FAA4F;AAC5F,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,uEAAuE;QACvE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAoF,CAAC;QACnH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,OAAO,EAAE,GAAG,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnF,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACnF,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,EAAE,KAAK,IAAI;YAAE,IAAI,CAAC;gBAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,MAAM,mBAAmB,GAAiB,GAAG,CAAC,EAAE;IACrD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,EAAE;YACjG,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA2D,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,gBAAwB,EACxB,uBAA0C,EAC1C,YAAY,GAAiB,mBAAmB;IAEhD,MAAM,GAAG,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,uBAAuB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,UAAU,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,QAA4B;IACnF,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IACtE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC3E,IAAI,QAAQ,EAAE,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,0BAA0B;YAClC,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,OAAO,EAAE,sCAAsC,MAAM,CAAC,MAAM,uKAAuK;SACpO,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,OAAO,EAAE,sCAAsC,MAAM,CAAC,MAAM,uFAAuF;KACpJ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"codex-session-lookup.js","sourceRoot":"","sources":["../../src/backend/codex-session-lookup.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/codex.d.ts
CHANGED
|
@@ -253,7 +253,22 @@ export declare class CodexBackend implements CliBackend {
|
|
|
253
253
|
* the operator; listed before the generic selection hold for a clear notice.
|
|
254
254
|
*/
|
|
255
255
|
private sessionHoldDialogs;
|
|
256
|
+
/**
|
|
257
|
+
* The user's decision (hmsg-53600a2c): codex's folder-trust prompt in an AgEnD session is always answered Trust — the
|
|
258
|
+
* workspace is the agent's own, whatever preTrust covered (preTrust stays, so the prompt rarely shows at all). Enter,
|
|
259
|
+
* only with the cursor on "Trust and continue" among the known options (trustCursor); any other layout or row is
|
|
260
|
+
* held (trustHoldDialog). It trusts the folder only: per-action approvals are separate dialogs and are not touched.
|
|
261
|
+
*/
|
|
262
|
+
private autoTrustDialog;
|
|
256
263
|
private trustHoldDialog;
|
|
264
|
+
/**
|
|
265
|
+
* #2893: why the authorized folder-trust answer did not take this prompt (log only): what the pane shows against what
|
|
266
|
+
* preTrust authorized for this launch, and whether the instance's config trusts the folder codex is asking about. A
|
|
267
|
+
* field case of a held trust prompt then explains itself in daemon.log.
|
|
268
|
+
*/
|
|
269
|
+
private trustHoldReason;
|
|
270
|
+
/** What an auto-trust answered (log only): the folder and root on the prompt, what preTrust covered, and the config path. */
|
|
271
|
+
private trustPaneFields;
|
|
257
272
|
/**
|
|
258
273
|
* #1008: the rate-limit model-switch picker parked unattended instances (it
|
|
259
274
|
* waits forever and its default option changes the model). Prevention is
|
|
@@ -269,6 +284,7 @@ export declare class CodexBackend implements CliBackend {
|
|
|
269
284
|
private rateSwitchPickerDialog;
|
|
270
285
|
private updatePickerDialog;
|
|
271
286
|
private usageLimitLunaReserveDialog;
|
|
287
|
+
private workspaceLimitPromptDialog;
|
|
272
288
|
private unknownSelectionHoldDialog;
|
|
273
289
|
getRuntimeDialogs(): RuntimeDialog[];
|
|
274
290
|
getInputUnavailableTransients(): InputUnavailableTransient[];
|
package/dist/backend/codex.js
CHANGED
|
@@ -14,6 +14,7 @@ import { codexEffort } from "./launch-effort.js";
|
|
|
14
14
|
import { appendWithMarker, removeMarker } from "./marker-utils.js";
|
|
15
15
|
import { codexSiblingState, codexStateDbAbsent, cwdRolloutsProvenAbsent, findExactCwdCodexSession, planCodexResume, newestMissedCwdRollout } from "./codex-session-lookup.js";
|
|
16
16
|
import { t } from "../locale.js";
|
|
17
|
+
import { quotaLine, quotaLowLine, quotaPausedLine } from "../quota-notice.js";
|
|
17
18
|
import { parse as parseToml } from "smol-toml";
|
|
18
19
|
const CODEX_PROJECT_DOC_MAX_BYTES = 32_768;
|
|
19
20
|
const SAFE_MODEL_ID_RE = /^[A-Za-z0-9._:/-]+$/;
|
|
@@ -296,7 +297,7 @@ function setProjectTrusted(content, root) {
|
|
|
296
297
|
}
|
|
297
298
|
/** Only the bottom, live Codex 0.156 folder-access screen can own stdin. */
|
|
298
299
|
function codexTrustPromptState(pane) {
|
|
299
|
-
const noPrompt = { active: false, folder: null, root: null, rootNote: "absent", safeChoice: false };
|
|
300
|
+
const noPrompt = { active: false, folder: null, root: null, rootNote: "absent", safeChoice: false, trustCursor: false };
|
|
300
301
|
const rows = pane.replace(/\r/g, "").split("\n");
|
|
301
302
|
let last = rows.length - 1;
|
|
302
303
|
while (last >= 0 && rows[last].trim() === "")
|
|
@@ -343,7 +344,16 @@ function codexTrustPromptState(pane) {
|
|
|
343
344
|
&& choices[0].cursor === "›" && choices[0].number === "1" && choices[0].text === "Trust and continue"
|
|
344
345
|
&& choices[1].cursor === "" && choices[1].number === "2" && choices[1].text === "Quit"
|
|
345
346
|
&& /^\s*enter continue\s*·\s*esc quit\s*$/i.test(rows[last]);
|
|
346
|
-
|
|
347
|
+
const known = new Set(["Trust and continue", "Open restricted", "Quit"]);
|
|
348
|
+
// Exactly one selection marker, whichever form (› ❯ >), and it is on Trust; the footer is the one both 0.160 and 0.166
|
|
349
|
+
// show. Two markers, another footer mapping or an unknown option is held — never a guess where Enter lands (#2896 review).
|
|
350
|
+
const atCursor = choices.filter(choice => choice.cursor !== "");
|
|
351
|
+
const trustCursor = choices.length >= 2 && choices.every(choice => known.has(choice.text))
|
|
352
|
+
&& choices.every((choice, index) => index === 0 || choice.row === choices[index - 1].row + 1)
|
|
353
|
+
&& rows.slice(choices[choices.length - 1].row + 1, last).every(row => row.trim() === "")
|
|
354
|
+
&& atCursor.length === 1 && atCursor[0].cursor === "›" && atCursor[0].text === "Trust and continue"
|
|
355
|
+
&& /^\s*enter continue\s*·\s*esc quit\s*$/i.test(rows[last]);
|
|
356
|
+
return { active: true, folder, root, rootNote, safeChoice, trustCursor };
|
|
347
357
|
}
|
|
348
358
|
/** Unknown/older trust layouts are still input-blocking, never auto-answered. */
|
|
349
359
|
function codexTrustVariantActive(pane) {
|
|
@@ -538,6 +548,55 @@ function codexRateSwitchPickerVisible(pane) {
|
|
|
538
548
|
&& take(/^\s*Switch to \S.{0,120} for lower credit usage\?\s*$/, false)
|
|
539
549
|
&& take(/^\s*Approaching rate limits\s*$/, false);
|
|
540
550
|
}
|
|
551
|
+
/**
|
|
552
|
+
* The workspace-member limit prompt (#2844), as codex 0.160.0–0.165.0 paint it
|
|
553
|
+
* (`open_workspace_owner_nudge_prompt`, codex-rs/tui chatwidget/rate_limits.rs),
|
|
554
|
+
* captured live on 0.165.0 against the mock's wscredits/wsspend modes:
|
|
555
|
+
*
|
|
556
|
+
* ■ Your workspace is out of credits. Ask your workspace owner to refill in order to continue.
|
|
557
|
+
* Usage limit reached
|
|
558
|
+
* Request a limit increase from your owner to continue using codex. Request increase?
|
|
559
|
+
*
|
|
560
|
+
* 1. Yes (y)
|
|
561
|
+
* › 2. No (default) (n)
|
|
562
|
+
*
|
|
563
|
+
* enter select · esc back
|
|
564
|
+
*
|
|
565
|
+
* The other title is "You've reached your workspace credit limit" with "…Ask your
|
|
566
|
+
* workspace owner to add more. Notify owner?". Yes emails the workspace owner;
|
|
567
|
+
* Escape (the prompt's cancel) and No only close it, send nothing, and leave the
|
|
568
|
+
* error row above the composer, where the quota pause reads it.
|
|
569
|
+
*
|
|
570
|
+
* Bottom-anchored, every row exact: the hint last, the two options directly
|
|
571
|
+
* above it, the question (wrapped onto up to three rows on a narrow pane) and its
|
|
572
|
+
* own title above those. A quote in the transcript is followed by the composer
|
|
573
|
+
* and never matches.
|
|
574
|
+
*/
|
|
575
|
+
const WORKSPACE_LIMIT_PROMPTS = [
|
|
576
|
+
[/^\s*Usage limit reached\s*$/, "Request a limit increase from your owner to continue using codex. Request increase?"],
|
|
577
|
+
[/^\s*You['’]ve reached your workspace credit limit\s*$/, "Your workspace is out of credits. Ask your workspace owner to add more. Notify owner?"],
|
|
578
|
+
];
|
|
579
|
+
function codexWorkspaceLimitPromptVisible(pane) {
|
|
580
|
+
const rows = pane.replace(/\r/g, "").split("\n").filter(row => row.trim() !== "");
|
|
581
|
+
let i = rows.length - 1;
|
|
582
|
+
const take = (shape) => {
|
|
583
|
+
if (i < 0 || !shape.test(rows[i]))
|
|
584
|
+
return false;
|
|
585
|
+
i--;
|
|
586
|
+
return true;
|
|
587
|
+
};
|
|
588
|
+
if (!(take(/^\s*enter select\s*[·•]\s*esc back\s*$/i)
|
|
589
|
+
&& take(/^\s*[›❯>]?\s*2\.\s+No \(default\)\s+\(n\)\s*$/)
|
|
590
|
+
&& take(/^\s*[›❯>]?\s*1\.\s+Yes\s+\(y\)\s*$/)))
|
|
591
|
+
return false;
|
|
592
|
+
for (let lines = 1; lines <= 3 && i - lines >= 0; lines++) {
|
|
593
|
+
const question = rows.slice(i - lines + 1, i + 1).map(row => row.trim()).join(" ");
|
|
594
|
+
const title = rows[i - lines];
|
|
595
|
+
if (WORKSPACE_LIMIT_PROMPTS.some(([shape, text]) => question === text && shape.test(title)))
|
|
596
|
+
return true;
|
|
597
|
+
}
|
|
598
|
+
return false;
|
|
599
|
+
}
|
|
541
600
|
/** Unknown pickers own stdin too; never type or press Enter into one. */
|
|
542
601
|
function codexUnknownSelectionVisible(pane) {
|
|
543
602
|
const rows = pane.replace(/\r/g, "").split("\n");
|
|
@@ -1169,9 +1228,11 @@ export class CodexBackend {
|
|
|
1169
1228
|
buildCommand(config) {
|
|
1170
1229
|
this.lastKnownModel = config.model?.trim() || null;
|
|
1171
1230
|
this.credentialProfile = this.readProfile(config);
|
|
1231
|
+
// #2886: `--full-auto` is gone from codex (no supported version, 0.155 on, accepts it: the instance never started);
|
|
1232
|
+
// spelled out, it was a workspace-write sandbox that asks for approval on request.
|
|
1172
1233
|
const approvalFlag = config.skipPermissions !== false
|
|
1173
1234
|
? "--dangerously-bypass-approvals-and-sandbox"
|
|
1174
|
-
: "--
|
|
1235
|
+
: "--sandbox workspace-write --ask-for-approval on-request";
|
|
1175
1236
|
// #984: never trust `codex resume --last` to pick this instance's session.
|
|
1176
1237
|
// Codex 0.157 scopes it to the git REPOSITORY, so in a worktree it resumes
|
|
1177
1238
|
// the newest session of any sibling worktree (a lock screen while that
|
|
@@ -1894,6 +1955,7 @@ export class CodexBackend {
|
|
|
1894
1955
|
type: "quota",
|
|
1895
1956
|
action: "pause",
|
|
1896
1957
|
message: "OpenAI quota exceeded",
|
|
1958
|
+
notice: () => quotaPausedLine("OpenAI", "api_quota"),
|
|
1897
1959
|
},
|
|
1898
1960
|
{
|
|
1899
1961
|
// Codex already exhausted HTTP retries and returned to its composer.
|
|
@@ -1929,7 +1991,8 @@ export class CodexBackend {
|
|
|
1929
1991
|
// Codex writes the apostrophe as U+2019 ("You’ve hit your usage limit.") since
|
|
1930
1992
|
// 0.156 and as ASCII before (0.153.4): both must match, or no usage limit
|
|
1931
1993
|
// ever pauses the instance (#1098).
|
|
1932
|
-
{ pattern: /you['’]ve hit your usage limit/i, type: "quota", action: "pause", message: "Codex usage limit reached — upgrade plan required"
|
|
1994
|
+
{ pattern: /you['’]ve hit your usage limit/i, type: "quota", action: "pause", message: "Codex usage limit reached — upgrade plan required",
|
|
1995
|
+
notice: () => quotaPausedLine("Codex", "usage") },
|
|
1933
1996
|
{
|
|
1934
1997
|
// The terminal stage of a lost app-server (#1099): Codex has given up
|
|
1935
1998
|
// reconnecting and says so, with a counter that never stops. Nothing
|
|
@@ -1982,27 +2045,53 @@ export class CodexBackend {
|
|
|
1982
2045
|
skipCooldown: true,
|
|
1983
2046
|
skipRecoveryWait: true,
|
|
1984
2047
|
},
|
|
1985
|
-
// Workspace (
|
|
1986
|
-
// ones
|
|
1987
|
-
//
|
|
1988
|
-
//
|
|
2048
|
+
// Workspace (business) accounts report exhaustion differently from personal
|
|
2049
|
+
// ones, with codex's own rows (codex-rs/protocol error.rs and tui
|
|
2050
|
+
// turn_runtime.rs, unchanged 0.160.0–0.165.0):
|
|
2051
|
+
// member: "■ Your workspace is out of credits. Ask your workspace owner to refill in order to continue."
|
|
2052
|
+
// "■ You hit your spend cap set by the owner of your workspace. Ask an owner to increase your spend cap to continue."
|
|
2053
|
+
// owner: "■ You're out of credits. Your workspace is out of credits. Add credits to continue using Codex."
|
|
2054
|
+
// "■ Your workspace is out of credits. Add credits to continue."
|
|
2055
|
+
// "■ You hit your spend cap set in your workspace. Increase your spend cap to continue."
|
|
2056
|
+
// "■ Usage limit reached. You've reached your usage limit. Increase your limits to continue using codex."
|
|
1989
2057
|
// Neither `insufficient_quota|billing` nor `you've hit your usage limit`
|
|
1990
|
-
// matches
|
|
2058
|
+
// matches them.
|
|
1991
2059
|
//
|
|
1992
|
-
//
|
|
1993
|
-
//
|
|
1994
|
-
//
|
|
1995
|
-
//
|
|
2060
|
+
// pause, not notify: nothing works until someone refills or raises the cap.
|
|
2061
|
+
// Anchored to the status glyph in COLUMN 0, because these skip the
|
|
2062
|
+
// usage-window check (a workspace limit is not one of those windows, so the
|
|
2063
|
+
// check would call it "available"): codex draws its own error cells there,
|
|
2064
|
+
// while an agent's message, quote or code block is indented under its `•`
|
|
2065
|
+
// (captured live, tests/fixtures/codex-0165-workspace-quoted.pane.txt).
|
|
2066
|
+
// `\s+` at each word gap: capture-pane runs without -J, so tmux's hard wrap
|
|
2067
|
+
// can land a newline anywhere in the sentence. A resumed transcript reprints
|
|
2068
|
+
// these rows, and the first live composer of a spawn takes them as history.
|
|
1996
2069
|
{
|
|
1997
|
-
pattern:
|
|
2070
|
+
pattern: new RegExp(String.raw `^(?:${CODEX_STATUS_GLYPH})[ \t]+(?:You['’]re\s+out\s+of\s+credits\.\s+)?Your\s+workspace\s+is\s+out\s+of\s+credits\.`, "m"),
|
|
1998
2071
|
type: "quota",
|
|
1999
|
-
// pause, not notify: exhausted credits are a dead end until someone
|
|
2000
|
-
// refills, so leaving the instance running just burns cycles failing.
|
|
2001
|
-
// Matches how the other terminal quota states behave (claude-code's
|
|
2002
|
-
// "credit balance is too low", codex's own "you've hit your usage
|
|
2003
|
-
// limit"). Costs a manual resume after the refill.
|
|
2004
2072
|
action: "pause",
|
|
2005
2073
|
message: "Codex workspace credits exhausted — workspace owner must refill",
|
|
2074
|
+
notice: () => quotaPausedLine("Codex", "workspace_credits"),
|
|
2075
|
+
skipUsageVerify: true,
|
|
2076
|
+
historyUntilLiveComposer: true,
|
|
2077
|
+
},
|
|
2078
|
+
{
|
|
2079
|
+
pattern: new RegExp(String.raw `^(?:${CODEX_STATUS_GLYPH})[ \t]+You\s+hit\s+your\s+spend\s+cap\s+set\s+(?:by\s+the\s+owner\s+of|in)\s+your\s+workspace\.`, "m"),
|
|
2080
|
+
type: "quota",
|
|
2081
|
+
action: "pause",
|
|
2082
|
+
message: "Codex workspace spend cap reached — workspace owner must raise it",
|
|
2083
|
+
notice: () => t("inst.quota_spend_cap"),
|
|
2084
|
+
skipUsageVerify: true,
|
|
2085
|
+
historyUntilLiveComposer: true,
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
pattern: new RegExp(String.raw `^(?:${CODEX_STATUS_GLYPH})[ \t]+Usage\s+limit\s+reached\.\s+You['’]ve\s+reached\s+your\s+usage\s+limit\.\s+Increase\s+your\s+limits`, "m"),
|
|
2089
|
+
type: "quota",
|
|
2090
|
+
action: "pause",
|
|
2091
|
+
message: "Codex workspace usage limit reached — increase the workspace limits to continue",
|
|
2092
|
+
notice: () => quotaPausedLine("Codex", "workspace_usage"),
|
|
2093
|
+
skipUsageVerify: true,
|
|
2094
|
+
historyUntilLiveComposer: true,
|
|
2006
2095
|
},
|
|
2007
2096
|
// Codex warns at 10% and 5% remaining, and scopes the limit by period —
|
|
2008
2097
|
// "weekly" alone missed every `monthly limit` warning.
|
|
@@ -2021,28 +2110,14 @@ export class CodexBackend {
|
|
|
2021
2110
|
action: "notify",
|
|
2022
2111
|
message: "Codex usage limit running low",
|
|
2023
2112
|
formatMessage: (m) => `Codex ${m[2].toLowerCase()} limit: less than ${m[1]}% left`,
|
|
2113
|
+
notice: (m) => (m ? quotaLowLine(m[2], m[1]) : quotaLine("Codex", "usage")),
|
|
2024
2114
|
},
|
|
2025
2115
|
];
|
|
2026
2116
|
}
|
|
2027
2117
|
getStartupDialogs() {
|
|
2028
2118
|
const trustHold = this.trustHoldDialog();
|
|
2029
2119
|
return [
|
|
2030
|
-
|
|
2031
|
-
pattern: /^\s*Trust this folder\?/m,
|
|
2032
|
-
keys: ["Enter"],
|
|
2033
|
-
description: "Codex authorized folder trust dialog",
|
|
2034
|
-
blocksDelivery: true,
|
|
2035
|
-
inputBlocked: true,
|
|
2036
|
-
autoResolutionKey: "codex-authorized-folder-trust",
|
|
2037
|
-
isActive: pane => {
|
|
2038
|
-
const state = codexTrustPromptState(pane);
|
|
2039
|
-
const authorized = this.authorizedTrust;
|
|
2040
|
-
return state.active && state.safeChoice && authorized !== null
|
|
2041
|
-
&& state.folder === authorized.cwd
|
|
2042
|
-
&& (state.rootNote === "absent" ? authorized.root === authorized.cwd
|
|
2043
|
-
: state.rootNote === "parsed" && state.root === authorized.root);
|
|
2044
|
-
},
|
|
2045
|
-
},
|
|
2120
|
+
this.autoTrustDialog(),
|
|
2046
2121
|
trustHold,
|
|
2047
2122
|
this.updatePickerDialog(),
|
|
2048
2123
|
this.rateSwitchPickerDialog(),
|
|
@@ -2077,6 +2152,26 @@ export class CodexBackend {
|
|
|
2077
2152
|
},
|
|
2078
2153
|
];
|
|
2079
2154
|
}
|
|
2155
|
+
/**
|
|
2156
|
+
* The user's decision (hmsg-53600a2c): codex's folder-trust prompt in an AgEnD session is always answered Trust — the
|
|
2157
|
+
* workspace is the agent's own, whatever preTrust covered (preTrust stays, so the prompt rarely shows at all). Enter,
|
|
2158
|
+
* only with the cursor on "Trust and continue" among the known options (trustCursor); any other layout or row is
|
|
2159
|
+
* held (trustHoldDialog). It trusts the folder only: per-action approvals are separate dialogs and are not touched.
|
|
2160
|
+
*/
|
|
2161
|
+
autoTrustDialog() {
|
|
2162
|
+
return {
|
|
2163
|
+
pattern: /^\s*Trust this folder\?/m,
|
|
2164
|
+
keys: ["Enter"],
|
|
2165
|
+
description: "Codex folder trust — trusting the agent's own folder",
|
|
2166
|
+
blocksDelivery: true,
|
|
2167
|
+
inputBlocked: true,
|
|
2168
|
+
autoResolutionKey: "codex-folder-auto-trust",
|
|
2169
|
+
// One Enter per prompt (claimed, then checked): a prompt still up after it is held, never pressed again (#2896 review).
|
|
2170
|
+
verifyAfterKeys: true,
|
|
2171
|
+
isActive: pane => codexTrustPromptState(pane).trustCursor,
|
|
2172
|
+
answerDetail: pane => ({ autoTrusted: true, ...this.trustPaneFields(pane) }),
|
|
2173
|
+
};
|
|
2174
|
+
}
|
|
2080
2175
|
trustHoldDialog() {
|
|
2081
2176
|
return {
|
|
2082
2177
|
pattern: /^\s*(?:Folder access|Trust this folder\?|Do you trust the files in this folder\?)/im,
|
|
@@ -2086,8 +2181,42 @@ export class CodexBackend {
|
|
|
2086
2181
|
blocksDelivery: true,
|
|
2087
2182
|
inputBlocked: true,
|
|
2088
2183
|
isActive: codexTrustVariantActive,
|
|
2184
|
+
heldReason: pane => this.trustHoldReason(pane),
|
|
2089
2185
|
};
|
|
2090
2186
|
}
|
|
2187
|
+
/**
|
|
2188
|
+
* #2893: why the authorized folder-trust answer did not take this prompt (log only): what the pane shows against what
|
|
2189
|
+
* preTrust authorized for this launch, and whether the instance's config trusts the folder codex is asking about. A
|
|
2190
|
+
* field case of a held trust prompt then explains itself in daemon.log.
|
|
2191
|
+
*/
|
|
2192
|
+
trustHoldReason(pane) {
|
|
2193
|
+
const state = codexTrustPromptState(pane), authorized = this.authorizedTrust;
|
|
2194
|
+
const configPath = join(this.isolatedCodexHome, "config.toml");
|
|
2195
|
+
let configTrust = "unreadable";
|
|
2196
|
+
if (state.folder) {
|
|
2197
|
+
try {
|
|
2198
|
+
configTrust = effectiveProjectTrust(readFileSync(configPath, "utf-8"), state.root ?? state.folder) ?? "absent";
|
|
2199
|
+
}
|
|
2200
|
+
catch { /* unreadable */ }
|
|
2201
|
+
}
|
|
2202
|
+
// The same test as the startup entry's authorized answer: when it holds, nothing differs — say so, never a mismatch.
|
|
2203
|
+
const rootMatches = authorized !== null && (state.rootNote === "absent" ? authorized.root === authorized.cwd
|
|
2204
|
+
: state.rootNote === "parsed" && state.root === authorized.root);
|
|
2205
|
+
const authorizedMatch = state.active && state.safeChoice && authorized !== null && state.folder === authorized.cwd && rootMatches;
|
|
2206
|
+
// hmsg-53600a2c: Trust is pressed whenever the cursor is on it; a hold is a layout, a row, or a press that did not take.
|
|
2207
|
+
const reason = !state.active ? "a trust layout AgEnD never answers (Folder access options, or Do you trust the files…)"
|
|
2208
|
+
: !state.trustCursor ? "the cursor is not on Trust and continue, or the options are not the known ones"
|
|
2209
|
+
: "Trust was already pressed for this prompt and it is still up";
|
|
2210
|
+
return { trustHoldReason: reason, authorizedMatch, promptFolder: state.folder, promptRoot: state.root, rootNote: state.rootNote,
|
|
2211
|
+
authorizedCwd: authorized?.cwd ?? null, authorizedRoot: authorized?.root ?? null, configPath, configTrust };
|
|
2212
|
+
}
|
|
2213
|
+
/** What an auto-trust answered (log only): the folder and root on the prompt, what preTrust covered, and the config path. */
|
|
2214
|
+
trustPaneFields(pane) {
|
|
2215
|
+
const state = codexTrustPromptState(pane), authorized = this.authorizedTrust;
|
|
2216
|
+
return { promptFolder: state.folder, promptRoot: state.root, rootNote: state.rootNote,
|
|
2217
|
+
authorizedCwd: authorized?.cwd ?? null, authorizedRoot: authorized?.root ?? null,
|
|
2218
|
+
configPath: join(this.isolatedCodexHome, "config.toml") };
|
|
2219
|
+
}
|
|
2091
2220
|
/**
|
|
2092
2221
|
* #1008: the rate-limit model-switch picker parked unattended instances (it
|
|
2093
2222
|
* waits forever and its default option changes the model). Prevention is
|
|
@@ -2163,6 +2292,24 @@ export class CodexBackend {
|
|
|
2163
2292
|
},
|
|
2164
2293
|
};
|
|
2165
2294
|
}
|
|
2295
|
+
workspaceLimitPromptDialog() {
|
|
2296
|
+
// Escape via sendSpecialKey, the same as the Luna Reserve menu: never a paste
|
|
2297
|
+
// (its implicit Enter would confirm the cursor's row) and never "y". The error
|
|
2298
|
+
// row codex printed above the prompt stays, and the quota pause takes it from
|
|
2299
|
+
// there: one notice, no parked dialog.
|
|
2300
|
+
return {
|
|
2301
|
+
pattern: /^\s*enter select\s*[·•]\s*esc back\s*$/im,
|
|
2302
|
+
keys: ["Escape"],
|
|
2303
|
+
description: "Codex workspace limit prompt — pressing Escape (never asking the owner)",
|
|
2304
|
+
blocksDelivery: true,
|
|
2305
|
+
inputBlocked: true,
|
|
2306
|
+
isActive: codexWorkspaceLimitPromptVisible,
|
|
2307
|
+
verifyAfterKeys: true,
|
|
2308
|
+
autoResolutionKey: "codex-workspace-limit-prompt",
|
|
2309
|
+
answeredByAgend: true,
|
|
2310
|
+
marksLiveIncident: true,
|
|
2311
|
+
};
|
|
2312
|
+
}
|
|
2166
2313
|
unknownSelectionHoldDialog() {
|
|
2167
2314
|
return {
|
|
2168
2315
|
pattern: /^\s*[›❯>]\s+\S/m,
|
|
@@ -2176,6 +2323,7 @@ export class CodexBackend {
|
|
|
2176
2323
|
}
|
|
2177
2324
|
getRuntimeDialogs() {
|
|
2178
2325
|
return [
|
|
2326
|
+
this.autoTrustDialog(),
|
|
2179
2327
|
this.trustHoldDialog(),
|
|
2180
2328
|
this.rateSwitchPickerDialog(),
|
|
2181
2329
|
{
|
|
@@ -2193,6 +2341,7 @@ export class CodexBackend {
|
|
|
2193
2341
|
},
|
|
2194
2342
|
this.updatePickerDialog(),
|
|
2195
2343
|
this.usageLimitLunaReserveDialog(),
|
|
2344
|
+
this.workspaceLimitPromptDialog(),
|
|
2196
2345
|
...this.sessionHoldDialogs(),
|
|
2197
2346
|
this.unknownSelectionHoldDialog(),
|
|
2198
2347
|
];
|