oh-my-codex 0.21.4 → 0.21.6
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/Cargo.lock +6 -6
- package/Cargo.toml +1 -1
- package/README.md +6 -2
- package/crates/omx-runtime/src/lease_mutex.rs +379 -0
- package/crates/omx-runtime/src/main.rs +4 -0
- package/crates/omx-runtime/tests/execution.rs +152 -0
- package/dist/agents/native-config.d.ts +0 -1
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +0 -1
- package/dist/agents/native-config.js.map +1 -1
- package/dist/agents/policy.d.ts +0 -1
- package/dist/agents/policy.d.ts.map +1 -1
- package/dist/agents/policy.js +0 -5
- package/dist/agents/policy.js.map +1 -1
- package/dist/auth/__tests__/config-sessions.test.js +15 -1
- package/dist/auth/__tests__/config-sessions.test.js.map +1 -1
- package/dist/auth/__tests__/hotswap.test.js +80 -0
- package/dist/auth/__tests__/hotswap.test.js.map +1 -1
- package/dist/auth/__tests__/redact.test.js +94 -1
- package/dist/auth/__tests__/redact.test.js.map +1 -1
- package/dist/auth/__tests__/storage.test.js +168 -2
- package/dist/auth/__tests__/storage.test.js.map +1 -1
- package/dist/auth/hotswap.d.ts.map +1 -1
- package/dist/auth/hotswap.js +4 -3
- package/dist/auth/hotswap.js.map +1 -1
- package/dist/auth/paths.d.ts.map +1 -1
- package/dist/auth/paths.js +22 -0
- package/dist/auth/paths.js.map +1 -1
- package/dist/auth/redact.d.ts +5 -0
- package/dist/auth/redact.d.ts.map +1 -1
- package/dist/auth/redact.js +79 -0
- package/dist/auth/redact.js.map +1 -1
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/sessions.js +21 -10
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/storage.d.ts.map +1 -1
- package/dist/auth/storage.js +75 -35
- package/dist/auth/storage.js.map +1 -1
- package/dist/autoresearch/runtime.d.ts +0 -1
- package/dist/autoresearch/runtime.d.ts.map +1 -1
- package/dist/autoresearch/runtime.js +0 -11
- package/dist/autoresearch/runtime.js.map +1 -1
- package/dist/catalog/reader.d.ts +0 -1
- package/dist/catalog/reader.d.ts.map +1 -1
- package/dist/catalog/reader.js +0 -4
- package/dist/catalog/reader.js.map +1 -1
- package/dist/cli/__tests__/doctor-process-identity-readiness.test.js +1 -1
- package/dist/cli/__tests__/doctor-process-identity-readiness.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-state-root-binding.test.js +36 -0
- package/dist/cli/__tests__/doctor-state-root-binding.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +100 -4
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/exec.test.js +10 -5
- package/dist/cli/__tests__/exec.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +130 -7
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +34 -0
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/package-bin-contract.test.js +1 -1
- package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
- package/dist/cli/__tests__/plugin-cache-symlink-provenance-3552.test.js +17 -13
- package/dist/cli/__tests__/plugin-cache-symlink-provenance-3552.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +11 -9
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +66 -0
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/setup-reasoning-preserve.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-reasoning-preserve.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-reasoning-preserve.test.js +198 -0
- package/dist/cli/__tests__/setup-reasoning-preserve.test.js.map +1 -0
- package/dist/cli/__tests__/team.test.js +67 -1
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/update.test.js +47 -0
- package/dist/cli/__tests__/update.test.js.map +1 -1
- package/dist/cli/auth.d.ts +0 -1
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +0 -4
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/codex-feature-probe.d.ts +2 -1
- package/dist/cli/codex-feature-probe.d.ts.map +1 -1
- package/dist/cli/codex-feature-probe.js +4 -2
- package/dist/cli/codex-feature-probe.js.map +1 -1
- package/dist/cli/codex-home.d.ts +14 -0
- package/dist/cli/codex-home.d.ts.map +1 -1
- package/dist/cli/codex-home.js +21 -0
- package/dist/cli/codex-home.js.map +1 -1
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +122 -9
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/hooks.d.ts +0 -2
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +0 -3
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +97 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/launch-credential-provenance.d.ts +49 -0
- package/dist/cli/launch-credential-provenance.d.ts.map +1 -0
- package/dist/cli/launch-credential-provenance.js +163 -0
- package/dist/cli/launch-credential-provenance.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +11 -3
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +23 -7
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/uninstall.js +1 -1
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +7 -0
- package/dist/cli/update.js.map +1 -1
- package/dist/compat/__tests__/doctor-contract.test.js +5 -1
- package/dist/compat/__tests__/doctor-contract.test.js.map +1 -1
- package/dist/config/__tests__/codex-feature-flags.test.js +10 -1
- package/dist/config/__tests__/codex-feature-flags.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +9 -0
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/codex-feature-flags.d.ts +4 -0
- package/dist/config/codex-feature-flags.d.ts.map +1 -1
- package/dist/config/codex-feature-flags.js +17 -1
- package/dist/config/codex-feature-flags.js.map +1 -1
- package/dist/config/generator.d.ts +8 -1
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +24 -84
- package/dist/config/generator.js.map +1 -1
- package/dist/evals/astra-defaults/__tests__/report.test.d.ts +2 -0
- package/dist/evals/astra-defaults/__tests__/report.test.d.ts.map +1 -0
- package/dist/evals/astra-defaults/__tests__/report.test.js +127 -0
- package/dist/evals/astra-defaults/__tests__/report.test.js.map +1 -0
- package/dist/evals/astra-defaults/__tests__/stage-transition.test.d.ts +2 -0
- package/dist/evals/astra-defaults/__tests__/stage-transition.test.d.ts.map +1 -0
- package/dist/evals/astra-defaults/__tests__/stage-transition.test.js +260 -0
- package/dist/evals/astra-defaults/__tests__/stage-transition.test.js.map +1 -0
- package/dist/evals/astra-defaults/__tests__/suite.test.d.ts +2 -0
- package/dist/evals/astra-defaults/__tests__/suite.test.d.ts.map +1 -0
- package/dist/evals/astra-defaults/__tests__/suite.test.js +132 -0
- package/dist/evals/astra-defaults/__tests__/suite.test.js.map +1 -0
- package/dist/evals/astra-defaults/index.d.ts +4 -0
- package/dist/evals/astra-defaults/index.d.ts.map +1 -0
- package/dist/evals/astra-defaults/index.js +4 -0
- package/dist/evals/astra-defaults/index.js.map +1 -0
- package/dist/evals/astra-defaults/report.d.ts +33 -0
- package/dist/evals/astra-defaults/report.d.ts.map +1 -0
- package/dist/evals/astra-defaults/report.js +224 -0
- package/dist/evals/astra-defaults/report.js.map +1 -0
- package/dist/evals/astra-defaults/suite.d.ts +13 -0
- package/dist/evals/astra-defaults/suite.d.ts.map +1 -0
- package/dist/evals/astra-defaults/suite.js +319 -0
- package/dist/evals/astra-defaults/suite.js.map +1 -0
- package/dist/evals/astra-defaults/types.d.ts +128 -0
- package/dist/evals/astra-defaults/types.d.ts.map +1 -0
- package/dist/evals/astra-defaults/types.js +9 -0
- package/dist/evals/astra-defaults/types.js.map +1 -0
- package/dist/evals/astra-defaults/usage.d.ts +16 -0
- package/dist/evals/astra-defaults/usage.d.ts.map +1 -0
- package/dist/evals/astra-defaults/usage.js +44 -0
- package/dist/evals/astra-defaults/usage.js.map +1 -0
- package/dist/hooks/__tests__/agents-overlay.test.js +13 -123
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/anti-slop-workflow.test.js +2 -2
- package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
- package/dist/hooks/__tests__/code-review-skill-contract.test.js +3 -3
- package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +6 -7
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +6 -4
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +16 -33
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +9 -29
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js +9 -29
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js.map +1 -1
- package/dist/hooks/__tests__/ordinary-task-routing.test.d.ts +2 -0
- package/dist/hooks/__tests__/ordinary-task-routing.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/ordinary-task-routing.test.js +125 -0
- package/dist/hooks/__tests__/ordinary-task-routing.test.js.map +1 -0
- package/dist/hooks/__tests__/prompt-guidance-contract.test.js +10 -7
- package/dist/hooks/__tests__/prompt-guidance-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/session.test.js +41 -6
- package/dist/hooks/__tests__/session.test.js.map +1 -1
- package/dist/hooks/__tests__/sunset-routing-contract.test.js +23 -0
- package/dist/hooks/__tests__/sunset-routing-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/visual-ralph-skill.test.js +3 -3
- package/dist/hooks/__tests__/visual-ralph-skill.test.js.map +1 -1
- package/dist/hooks/agents-overlay.d.ts +10 -3
- package/dist/hooks/agents-overlay.d.ts.map +1 -1
- package/dist/hooks/agents-overlay.js +12 -68
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hooks/keyword-detector.js +4 -4
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/keyword-registry.d.ts.map +1 -1
- package/dist/hooks/keyword-registry.js +0 -2
- package/dist/hooks/keyword-registry.js.map +1 -1
- package/dist/hooks/session.d.ts +1 -1
- package/dist/hooks/session.d.ts.map +1 -1
- package/dist/hooks/session.js +85 -29
- package/dist/hooks/session.js.map +1 -1
- package/dist/hooks/sunset-stub.d.ts +0 -2
- package/dist/hooks/sunset-stub.d.ts.map +1 -1
- package/dist/hooks/sunset-stub.js +8 -14
- package/dist/hooks/sunset-stub.js.map +1 -1
- package/dist/hud/__tests__/index.test.js +130 -2
- package/dist/hud/__tests__/index.test.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.js +214 -0
- package/dist/hud/__tests__/reconcile.test.js.map +1 -1
- package/dist/hud/__tests__/render.test.js +155 -4
- package/dist/hud/__tests__/render.test.js.map +1 -1
- package/dist/hud/__tests__/roster-height-realtmux.test.d.ts +2 -0
- package/dist/hud/__tests__/roster-height-realtmux.test.d.ts.map +1 -0
- package/dist/hud/__tests__/roster-height-realtmux.test.js +70 -0
- package/dist/hud/__tests__/roster-height-realtmux.test.js.map +1 -0
- package/dist/hud/__tests__/state.test.js +92 -1
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/__tests__/tmux.test.js +37 -2
- package/dist/hud/__tests__/tmux.test.js.map +1 -1
- package/dist/hud/__tests__/watch-owner.test.d.ts +2 -0
- package/dist/hud/__tests__/watch-owner.test.d.ts.map +1 -0
- package/dist/hud/__tests__/watch-owner.test.js +125 -0
- package/dist/hud/__tests__/watch-owner.test.js.map +1 -0
- package/dist/hud/__tests__/watch-realtmux.test.js +113 -2
- package/dist/hud/__tests__/watch-realtmux.test.js.map +1 -1
- package/dist/hud/index.d.ts +5 -0
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +61 -41
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/reconcile.d.ts +2 -1
- package/dist/hud/reconcile.d.ts.map +1 -1
- package/dist/hud/reconcile.js +28 -3
- package/dist/hud/reconcile.js.map +1 -1
- package/dist/hud/render.d.ts +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +81 -7
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +38 -3
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/tmux.d.ts +4 -0
- package/dist/hud/tmux.d.ts.map +1 -1
- package/dist/hud/tmux.js +67 -13
- package/dist/hud/tmux.js.map +1 -1
- package/dist/hud/types.d.ts +9 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/hud/watch-owner.d.ts +9 -0
- package/dist/hud/watch-owner.d.ts.map +1 -0
- package/dist/hud/watch-owner.js +54 -0
- package/dist/hud/watch-owner.js.map +1 -0
- package/dist/leader/__tests__/contract.test.js +9 -2
- package/dist/leader/__tests__/contract.test.js.map +1 -1
- package/dist/leader/contract.d.ts +2 -2
- package/dist/leader/contract.d.ts.map +1 -1
- package/dist/leader/contract.js +2 -2
- package/dist/leader/contract.js.map +1 -1
- package/dist/notifications/__tests__/formatter.test.js +10 -0
- package/dist/notifications/__tests__/formatter.test.js.map +1 -1
- package/dist/notifications/__tests__/tmux.test.js +10 -0
- package/dist/notifications/__tests__/tmux.test.js.map +1 -1
- package/dist/notifications/formatter.js +1 -1
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/notifications/tmux.js +1 -1
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/ralplan/__tests__/advisory-activation.test.js +3 -3
- package/dist/ralplan/__tests__/advisory-activation.test.js.map +1 -1
- package/dist/runtime/__tests__/bridge.test.js +91 -23
- package/dist/runtime/__tests__/bridge.test.js.map +1 -1
- package/dist/runtime/bridge.d.ts.map +1 -1
- package/dist/runtime/bridge.js +7 -1
- package/dist/runtime/bridge.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +44 -16
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.d.ts +2 -0
- package/dist/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.js +83 -0
- package/dist/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.js.map +1 -0
- package/dist/scripts/__tests__/prompt-inventory.test.js +83 -2
- package/dist/scripts/__tests__/prompt-inventory.test.js.map +1 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js +75 -23
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +6 -61
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/eval/eval-astra-defaults.d.ts +2 -0
- package/dist/scripts/eval/eval-astra-defaults.d.ts.map +1 -0
- package/dist/scripts/eval/eval-astra-defaults.js +52 -0
- package/dist/scripts/eval/eval-astra-defaults.js.map +1 -0
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.js +20 -1
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/scripts/prompt-inventory.d.ts +17 -0
- package/dist/scripts/prompt-inventory.d.ts.map +1 -1
- package/dist/scripts/prompt-inventory.js +64 -11
- package/dist/scripts/prompt-inventory.js.map +1 -1
- package/dist/scripts/run-test-files.js +1 -0
- package/dist/scripts/run-test-files.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +1 -1
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +46 -17
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/state/__tests__/mode-binding-lease.test.js +58 -2
- package/dist/state/__tests__/mode-binding-lease.test.js.map +1 -1
- package/dist/state/mode-binding-lease-helper.js +9 -41
- package/dist/state/mode-binding-lease-helper.js.map +1 -1
- package/dist/state/mode-binding-lease.d.ts.map +1 -1
- package/dist/state/mode-binding-lease.js +32 -10
- package/dist/state/mode-binding-lease.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +14 -1
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +5 -1
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +124 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/tmux-source-authority-realtmux.test.js +2 -2
- package/dist/team/__tests__/tmux-source-authority-realtmux.test.js.map +1 -1
- package/dist/team/runtime-cli.js +4 -2
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime.d.ts +11 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +24 -3
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +11 -5
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state.d.ts +1 -1
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +5 -3
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-identity.d.ts.map +1 -1
- package/dist/team/team-identity.js +8 -14
- package/dist/team/team-identity.js.map +1 -1
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +26 -13
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +43 -0
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts +1 -0
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +9 -5
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/utils/__tests__/file-durability.test.js +20 -1
- package/dist/utils/__tests__/file-durability.test.js.map +1 -1
- package/dist/utils/__tests__/platform-command.test.js +39 -1
- package/dist/utils/__tests__/platform-command.test.js.map +1 -1
- package/dist/utils/__tests__/safe-json.test.d.ts +2 -0
- package/dist/utils/__tests__/safe-json.test.d.ts.map +1 -0
- package/dist/utils/__tests__/safe-json.test.js +19 -0
- package/dist/utils/__tests__/safe-json.test.js.map +1 -0
- package/dist/utils/__tests__/toml.test.d.ts +2 -0
- package/dist/utils/__tests__/toml.test.d.ts.map +1 -0
- package/dist/utils/__tests__/toml.test.js +36 -0
- package/dist/utils/__tests__/toml.test.js.map +1 -0
- package/dist/utils/file-durability.d.ts +8 -0
- package/dist/utils/file-durability.d.ts.map +1 -1
- package/dist/utils/file-durability.js +19 -1
- package/dist/utils/file-durability.js.map +1 -1
- package/dist/utils/platform-command.d.ts.map +1 -1
- package/dist/utils/platform-command.js +24 -7
- package/dist/utils/platform-command.js.map +1 -1
- package/dist/utils/safe-json.d.ts +0 -1
- package/dist/utils/safe-json.d.ts.map +1 -1
- package/dist/utils/safe-json.js +0 -10
- package/dist/utils/safe-json.js.map +1 -1
- package/dist/utils/toml-source.d.ts +13 -0
- package/dist/utils/toml-source.d.ts.map +1 -0
- package/dist/utils/toml-source.js +76 -0
- package/dist/utils/toml-source.js.map +1 -0
- package/dist/utils/toml.d.ts.map +1 -1
- package/dist/utils/toml.js +15 -6
- package/dist/utils/toml.js.map +1 -1
- package/dist/verification/__tests__/ci-rust-gates.test.js +11 -0
- package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
- package/package.json +2 -2
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/skills/ai-slop-cleaner/SKILL.md +2 -3
- package/plugins/oh-my-codex/skills/best-practice-research/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/code-review/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +13 -22
- package/plugins/oh-my-codex/skills/design/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/hud/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/plan/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +9 -74
- package/plugins/oh-my-codex/skills/visual-ralph/SKILL.md +7 -7
- package/skills/ai-slop-cleaner/SKILL.md +2 -3
- package/skills/best-practice-research/SKILL.md +1 -1
- package/skills/code-review/SKILL.md +1 -1
- package/skills/deep-interview/SKILL.md +13 -22
- package/skills/design/SKILL.md +1 -1
- package/skills/hud/SKILL.md +1 -1
- package/skills/plan/SKILL.md +1 -1
- package/skills/ralplan/SKILL.md +9 -74
- package/skills/visual-ralph/SKILL.md +7 -7
- package/src/scripts/__tests__/codex-native-hook.test.ts +43 -16
- package/src/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.ts +95 -0
- package/src/scripts/__tests__/prompt-inventory.test.ts +84 -1
- package/src/scripts/__tests__/smoke-packed-install.test.ts +75 -23
- package/src/scripts/codex-native-hook.ts +6 -61
- package/src/scripts/eval/eval-astra-defaults.ts +54 -0
- package/src/scripts/notify-hook/team-dispatch.ts +19 -1
- package/src/scripts/prompt-inventory.ts +71 -12
- package/src/scripts/run-test-files.ts +1 -0
- package/src/scripts/smoke-packed-install.ts +56 -17
- package/templates/AGENTS.md +4 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-config.js","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAmB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,EACpC,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"native-config.js","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/policy.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export declare function isNativeAgentInstallableStatus(status: CatalogEntryStatu
|
|
|
4
4
|
export declare function getCatalogAgentStatusByName(manifest: Pick<CatalogManifest, "agents">): Map<string, CatalogEntryStatus>;
|
|
5
5
|
export declare function getCatalogAgentByName(manifest: Pick<CatalogManifest, "agents">): Map<string, CatalogAgentEntry>;
|
|
6
6
|
export declare function getInstallableNativeAgentNames(manifest: Pick<CatalogManifest, "agents">): Set<string>;
|
|
7
|
-
export declare function getNonInstallableNativeAgentNames(manifest: Pick<CatalogManifest, "agents">): Set<string>;
|
|
8
7
|
export declare function isSetupPromptAssetName(promptName: string, manifest: Pick<CatalogManifest, "agents">): boolean;
|
|
9
8
|
export declare function assertNativeAgentCanonicalTargets(manifest: Pick<CatalogManifest, "agents">): void;
|
|
10
9
|
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/agents/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,8BAA8B,aAGzC,CAAC;AAEH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAC9C,OAAO,CAET;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAEjC;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAEhC;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,GAAG,CAAC,MAAM,CAAC,CAMb;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/agents/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,8BAA8B,aAGzC,CAAC;AAEH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAC9C,OAAO,CAET;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAEjC;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAEhC;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,GAAG,CAAC,MAAM,CAAC,CAMb;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,OAAO,CAKT;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GACxC,IAAI,CAwCN"}
|
package/dist/agents/policy.js
CHANGED
|
@@ -16,11 +16,6 @@ export function getInstallableNativeAgentNames(manifest) {
|
|
|
16
16
|
.filter((agent) => isNativeAgentInstallableStatus(agent.status))
|
|
17
17
|
.map((agent) => agent.name));
|
|
18
18
|
}
|
|
19
|
-
export function getNonInstallableNativeAgentNames(manifest) {
|
|
20
|
-
return new Set(manifest.agents
|
|
21
|
-
.filter((agent) => !isNativeAgentInstallableStatus(agent.status))
|
|
22
|
-
.map((agent) => agent.name));
|
|
23
|
-
}
|
|
24
19
|
export function isSetupPromptAssetName(promptName, manifest) {
|
|
25
20
|
return (manifest.agents.some((agent) => agent.name === promptName) ||
|
|
26
21
|
NON_NATIVE_AGENT_PROMPT_ASSETS.has(promptName));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/agents/policy.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,iBAAiB;IACjB,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,8BAA8B,CAC5C,MAA+C;IAE/C,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAAyC;IAEzC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAyC;IAEzC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,QAAyC;IAEzC,OAAO,IAAI,GAAG,CACZ,QAAQ,CAAC,MAAM;SACZ,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC/D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/agents/policy.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,iBAAiB;IACjB,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,8BAA8B,CAC5C,MAA+C;IAE/C,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAAyC;IAEzC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAyC;IAEzC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,QAAyC;IAEzC,OAAO,IAAI,GAAG,CACZ,QAAQ,CAAC,MAAM;SACZ,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC/D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,QAAyC;IAEzC,OAAO,CACL,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;QAC1D,8BAA8B,CAAC,GAAG,CAAC,UAAU,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,QAAyC;IAEzC,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE/C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QAEpE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb;gBACE,gCAAgC;gBAChC,SAAS,KAAK,CAAC,IAAI,EAAE;gBACrB,oEAAoE;aACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb;gBACE,gCAAgC;gBAChC,SAAS,KAAK,CAAC,IAAI,EAAE;gBACrB,aAAa,KAAK,CAAC,SAAS,EAAE;gBAC9B,oEAAoE;aACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb;gBACE,gCAAgC;gBAChC,SAAS,KAAK,CAAC,IAAI,EAAE;gBACrB,aAAa,KAAK,CAAC,SAAS,EAAE;gBAC9B,oBAAoB,SAAS,CAAC,MAAM,EAAE;gBACtC,oEAAoE;aACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
import { readAuthConfig } from "../config.js";
|
|
7
|
-
import { findLatestRolloutSession } from "../sessions.js";
|
|
7
|
+
import { extractRolloutSessionId, findLatestRolloutSession } from "../sessions.js";
|
|
8
8
|
describe("auth config", () => {
|
|
9
9
|
it("merges project keys over user keys per absent key fallback", async () => {
|
|
10
10
|
const home = await mkdtemp(join(tmpdir(), "omx-auth-config-home-"));
|
|
@@ -26,6 +26,20 @@ describe("auth config", () => {
|
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
28
|
describe("Codex rollout session heuristic", () => {
|
|
29
|
+
it("uses session_meta payload identity instead of the timestamped filename", async () => {
|
|
30
|
+
const home = await mkdtemp(join(tmpdir(), "omx-auth-session-id-"));
|
|
31
|
+
try {
|
|
32
|
+
const id = "019c6e27-e55b-73d1-87d8-4e01f1f75043";
|
|
33
|
+
const file = join(home, `rollout-2026-09-10T10-00-00-${id}.jsonl`);
|
|
34
|
+
await writeFile(file, JSON.stringify({ type: "session_meta", payload: { id } }) + "\n");
|
|
35
|
+
assert.equal(await extractRolloutSessionId(file), id);
|
|
36
|
+
await writeFile(file, "invalid metadata\n");
|
|
37
|
+
assert.equal(await extractRolloutSessionId(file), id);
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
await rm(home, { recursive: true, force: true });
|
|
41
|
+
}
|
|
42
|
+
});
|
|
29
43
|
it("returns newest rollout id by mtime", async () => {
|
|
30
44
|
const home = await mkdtemp(join(tmpdir(), "omx-auth-sessions-"));
|
|
31
45
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-sessions.test.js","sourceRoot":"","sources":["../../../src/auth/__tests__/config-sessions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-sessions.test.js","sourceRoot":"","sources":["../../../src/auth/__tests__/config-sessions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,86 @@ async function writeAuthSlot(home, slot = "first") {
|
|
|
45
45
|
return slotPath;
|
|
46
46
|
}
|
|
47
47
|
describe("auth hotswap pointer abort lifecycle", () => {
|
|
48
|
+
it("redacts OAuth fields split across child stderr chunks", { skip: process.platform === "win32" }, async (t) => {
|
|
49
|
+
const home = await mkdtemp(join(tmpdir(), "omx-hotswap-stderr-"));
|
|
50
|
+
let output = "";
|
|
51
|
+
const capture = t.mock.method(process.stderr, "write", (chunk) => {
|
|
52
|
+
output += String(chunk);
|
|
53
|
+
return true;
|
|
54
|
+
});
|
|
55
|
+
try {
|
|
56
|
+
await writeAuthSlot(home);
|
|
57
|
+
const bin = join(home, "bin");
|
|
58
|
+
await mkdir(bin);
|
|
59
|
+
const executable = join(bin, "codex");
|
|
60
|
+
await writeFile(executable, `#!${process.execPath}\nprocess.stderr.write('{"access_'); setTimeout(() => { process.stderr.write('token":"synthetic-secret"}\\n'); process.exitCode = 1; }, 100);\n`);
|
|
61
|
+
await chmod(executable, 0o755);
|
|
62
|
+
const status = await runAuthHotswap({
|
|
63
|
+
cwd: home, home, env: { PATH: bin }, argv: [], lifecycle: lifecycle(),
|
|
64
|
+
});
|
|
65
|
+
assert.equal(status, 1);
|
|
66
|
+
assert.match(output, /REDACTED/);
|
|
67
|
+
assert.doesNotMatch(output, /synthetic-secret/);
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
capture.mock.restore();
|
|
71
|
+
await rm(home, { recursive: true, force: true });
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
it("still detects a quota line that follows an oversized stderr record", { skip: process.platform === "win32" }, async (t) => {
|
|
75
|
+
const cwd = await mkdtemp(join(tmpdir(), "omx-hotswap-oversized-quota-"));
|
|
76
|
+
const home = join(cwd, "home");
|
|
77
|
+
const runtimeHome = join(cwd, "runtime-codex-home");
|
|
78
|
+
const binDir = join(cwd, "bin");
|
|
79
|
+
const codexLog = join(cwd, "codex.log");
|
|
80
|
+
try {
|
|
81
|
+
await writeAuthSlot(home);
|
|
82
|
+
await writeFile(join(home, ".omx", "auth", "second.json"), '{"access_token":"second-secret"}\n');
|
|
83
|
+
await writeFile(join(home, ".omx", "auth", "slots.json"), JSON.stringify({
|
|
84
|
+
version: 1,
|
|
85
|
+
currentSlot: "first",
|
|
86
|
+
slots: [
|
|
87
|
+
{ slot: "first", createdAt: "now", updatedAt: "now" },
|
|
88
|
+
{ slot: "second", createdAt: "now", updatedAt: "now" },
|
|
89
|
+
],
|
|
90
|
+
}));
|
|
91
|
+
await mkdir(binDir, { recursive: true });
|
|
92
|
+
// A verbose upstream payload overflows the redaction buffer before the
|
|
93
|
+
// quota marker. Suppressing the rest of stderr would hide the rotation
|
|
94
|
+
// signal and turn a recoverable quota exit into a plain failure.
|
|
95
|
+
await writeFile(join(binDir, "codex"), `#!/bin/sh\nprintf 'spawned\\n' >> ${JSON.stringify(codexLog)}\nawk 'BEGIN { while (i++ < 70000) printf "x" ; printf "\\n" }' >&2\necho 'error: 429 quota exceeded' >&2\nexit 1\n`);
|
|
96
|
+
await chmod(join(binDir, "codex"), 0o755);
|
|
97
|
+
let captured = "";
|
|
98
|
+
const capture = t.mock.method(process.stderr, "write", (chunk) => {
|
|
99
|
+
captured += String(chunk);
|
|
100
|
+
return true;
|
|
101
|
+
});
|
|
102
|
+
try {
|
|
103
|
+
await runAuthHotswap({
|
|
104
|
+
cwd,
|
|
105
|
+
home,
|
|
106
|
+
env: { CODEX_HOME: runtimeHome, PATH: `${binDir}:/usr/bin:/bin` },
|
|
107
|
+
argv: [],
|
|
108
|
+
lifecycle: lifecycle({
|
|
109
|
+
prepareCodexHomeForLaunch: async () => ({ codexHomeOverride: runtimeHome }),
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
capture.mock.restore();
|
|
115
|
+
}
|
|
116
|
+
assert.equal(await readFile(codexLog, "utf-8"), "spawned\n");
|
|
117
|
+
// Suppressing the rest of stderr would classify this as a plain failure,
|
|
118
|
+
// leaving the slot unmarked and skipping rotation entirely.
|
|
119
|
+
assert.match(captured, /quota detected/);
|
|
120
|
+
const metadata = JSON.parse(await readFile(join(home, ".omx", "auth", "slots.json"), "utf-8"));
|
|
121
|
+
assert.ok(metadata.slots.find((slot) => slot.slot === "first")?.exhaustedAt);
|
|
122
|
+
assert.doesNotMatch(captured, /xxx/);
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
await rm(cwd, { recursive: true, force: true });
|
|
126
|
+
}
|
|
127
|
+
});
|
|
48
128
|
it("skips the initial slot mutation and postLaunch for a typed pointer abort", async () => {
|
|
49
129
|
const cwd = await mkdtemp(join(tmpdir(), "omx-hotswap-pointer-abort-"));
|
|
50
130
|
const home = join(cwd, "home");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotswap.test.js","sourceRoot":"","sources":["../../../src/auth/__tests__/hotswap.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAyB,MAAM,eAAe,CAAC;AAGtE,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,EAAE;QACtE,IAAI,EAAE,2BAA2B;QACjC,SAAS,EAAE,KAAK;QAChB,GAAG;QACH,IAAI,EAAE,iCAAiC;QACvC,SAAS,EAAE,yBAAyB;QACpC,mBAAmB,EAAE,aAAa;QAClC,MAAM,EAAE,sCAAsC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,SAAS,GAA8B,EAAE;IAC1D,OAAO;QACL,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3C,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAA0B,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;QACjG,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QAC1B,uBAAuB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACvC,wBAAwB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;QACxC,iCAAiC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI;QACvD,4BAA4B,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,KAAK,CAAC;QAC9E,uBAAuB,EAAE,GAAG,EAAE,CAAC,SAAS;QACxC,yBAAyB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAC3B,eAAe,EAAE,IAAI;SACtB,CAAC;QACF,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,IAAI,GAAG,OAAO;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,SAAS,CAAC,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAC9D,MAAM,SAAS,CACb,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAC3B,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KACtD,CAAC,CACH,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,SAAS,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,GAAG;gBACH,IAAI;gBACJ,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;gBAChC,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,SAAS,CAAC;oBACnB,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;wBACtC,iBAAiB,EAAE,WAAW;wBAC9B,0BAA0B,EAAE,WAAW;qBACxC,CAAC;oBACF,SAAS,EAAE,KAAK,IAAI,EAAE;wBACpB,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBACjC,CAAC;oBACD,UAAU,EAAE,KAAK,IAAI,EAAE;wBACrB,eAAe,IAAI,CAAC,CAAC;oBACvB,CAAC;oBACD,uBAAuB,EAAE,KAAK,IAAI,EAAE;wBAClC,YAAY,IAAI,CAAC,CAAC;oBACpB,CAAC;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CACV,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,EACrC,oCAAoC,CACrC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,SAAS,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,GAAG;gBACH,IAAI;gBACJ,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;gBAChC,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,SAAS,CAAC;oBACnB,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;oBAC3E,SAAS,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;oBACvE,UAAU,EAAE,KAAK,IAAI,EAAE,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC;iBAClD,CAAC;aACH,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,oCAAoC,CAAC,CAAC;QAC5F,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;QAC7G,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACpD,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,GAAG;gBACH,IAAI;gBACJ,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE;gBAChC,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,SAAS,CAAC;oBACnB,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;wBACtC,iBAAiB,EAAE,WAAW;wBAC9B,0BAA0B,EAAE,WAAW;qBACxC,CAAC;oBACF,SAAS,EAAE,KAAK,IAAI,EAAE;wBACpB,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;wBACnB,OAAO,EAAE,OAAO,EAAE,EAA0B,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;oBAClF,CAAC;oBACD,UAAU,EAAE,KAAK,IAAI,EAAE;wBACrB,eAAe,IAAI,CAAC,CAAC;oBACvB,CAAC;oBACD,uBAAuB,EAAE,KAAK,IAAI,EAAE;wBAClC,YAAY,IAAI,CAAC,CAAC;oBACpB,CAAC;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wCAAwC,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACjE,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,SAAS,CAAC,cAAc,EAAE,oCAAoC,CAAC,CAAC;YACtE,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;oBACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;iBACvD;aACF,CAAC,CACH,CAAC;YACF,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,MAAM,SAAS,CACb,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EACrB,qCAAqC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,wCAAwC,CACtG,CAAC;YACF,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,GAAG;gBACH,IAAI;gBACJ,GAAG,EAAE;oBACH,UAAU,EAAE,WAAW;oBACvB,IAAI,EAAE,GAAG,MAAM,gBAAgB;iBAChC;gBACD,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,SAAS,CAAC;oBACnB,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;wBACtC,iBAAiB,EAAE,WAAW;wBAC9B,0BAA0B,EAAE,WAAW;qBACxC,CAAC;oBACF,SAAS,EAAE,KAAK,IAAI,EAAE;wBACpB,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;wBACzB,OAAO,EAAE,OAAO,EAAE,EAA0B,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;oBAClF,CAAC;oBACD,UAAU,EAAE,KAAK,IAAI,EAAE;wBACrB,eAAe,IAAI,CAAC,CAAC;oBACvB,CAAC;oBACD,uBAAuB,EAAE,KAAK,IAAI,EAAE;wBAClC,YAAY,IAAI,CAAC,CAAC;oBACpB,CAAC;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,GAAG;gBACH,IAAI;gBACJ,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,EAAE;gBACjE,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,SAAS,CAAC;oBACnB,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;oBAC3E,UAAU,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;iBACtE,CAAC;aACH,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hotswap.test.js","sourceRoot":"","sources":["../../../src/auth/__tests__/hotswap.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,100 @@
|
|
|
1
1
|
import { describe, it } from "node:test";
|
|
2
2
|
import assert from "node:assert/strict";
|
|
3
|
-
import { redactAuthSecrets } from "../redact.js";
|
|
3
|
+
import { createAuthStderrRedactor, redactAuthSecrets } from "../redact.js";
|
|
4
4
|
describe("auth secret redaction", () => {
|
|
5
|
+
it("does not release a multiline token value after overflowing its field prefix", () => {
|
|
6
|
+
const prefix = '{"access_token":\n' + " ".repeat(65 * 1024);
|
|
7
|
+
const record = prefix + '\n"synthetic-secret"}\n';
|
|
8
|
+
for (const split of [0, 16, 64 * 1024, prefix.length, record.length]) {
|
|
9
|
+
let output = "";
|
|
10
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
11
|
+
redactor.write(Buffer.from(record.slice(0, split)));
|
|
12
|
+
redactor.write(Buffer.from(record.slice(split)));
|
|
13
|
+
redactor.end();
|
|
14
|
+
assert.doesNotMatch(output, /synthetic-secret/);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
it("redacts every byte split of token records, including multiline fields and UTF-8", () => {
|
|
18
|
+
for (const record of [
|
|
19
|
+
'{"access_token":"synthetic-secret"}\n',
|
|
20
|
+
'{"refresh_token":\n "synthetic-secret"}\n',
|
|
21
|
+
'{"id_token"\n :\n "synthetic-secret"}\n',
|
|
22
|
+
"Bearer synthetic-secret\n",
|
|
23
|
+
'árvíz {"access_token":"synthetic-secret"}',
|
|
24
|
+
]) {
|
|
25
|
+
const bytes = Buffer.from(record);
|
|
26
|
+
for (let split = 0; split <= bytes.length; split++) {
|
|
27
|
+
let output = "";
|
|
28
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
29
|
+
redactor.write(bytes.subarray(0, split));
|
|
30
|
+
redactor.write(bytes.subarray(split));
|
|
31
|
+
redactor.end();
|
|
32
|
+
assert.equal(output, redactAuthSecrets(record), `split ${split}: ${record}`);
|
|
33
|
+
assert.doesNotMatch(output, /synthetic-secret/);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
it("suppresses an oversized record but resumes at the next safe boundary", () => {
|
|
38
|
+
let output = "";
|
|
39
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
40
|
+
redactor.write(Buffer.from("safe line\n"));
|
|
41
|
+
assert.equal(output, "safe line\n");
|
|
42
|
+
redactor.write(Buffer.from('{"access_token":"' + "x".repeat(65 * 1024)));
|
|
43
|
+
redactor.write(Buffer.from('synthetic-secret"}\nquota exceeded\n'));
|
|
44
|
+
redactor.end();
|
|
45
|
+
assert.doesNotMatch(output, /synthetic-secret|xxx/);
|
|
46
|
+
assert.match(output, /oversized stderr record suppressed\nquota exceeded\n$/);
|
|
47
|
+
});
|
|
48
|
+
it("preserves a quota line when the oversized record and next line share one write", () => {
|
|
49
|
+
let output = "";
|
|
50
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
51
|
+
redactor.write(Buffer.from(`${"x".repeat(70_000)}\nerror: 429 quota exceeded\n`));
|
|
52
|
+
redactor.end();
|
|
53
|
+
assert.equal(output, "[omx auth] oversized stderr record suppressed\nerror: 429 quota exceeded\n");
|
|
54
|
+
});
|
|
55
|
+
it("preserves a quota line when the oversized record terminator arrives separately", () => {
|
|
56
|
+
let output = "";
|
|
57
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
58
|
+
redactor.write(Buffer.from("x".repeat(70_000)));
|
|
59
|
+
redactor.write(Buffer.from("\n"));
|
|
60
|
+
redactor.write(Buffer.from("error: 429 quota exceeded\n"));
|
|
61
|
+
redactor.end();
|
|
62
|
+
assert.equal(output, "[omx auth] oversized stderr record suppressed\nerror: 429 quota exceeded\n");
|
|
63
|
+
});
|
|
64
|
+
it("resumes when an overflowing chunk contains the record terminator and next record start", () => {
|
|
65
|
+
let output = "";
|
|
66
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
67
|
+
redactor.write(Buffer.from(`${"x".repeat(70_000)}\nerror: 429`));
|
|
68
|
+
redactor.write(Buffer.from(" quota exceeded\n"));
|
|
69
|
+
redactor.end();
|
|
70
|
+
assert.equal(output, "[omx auth] oversized stderr record suppressed\nerror: 429 quota exceeded\n");
|
|
71
|
+
});
|
|
72
|
+
it("redacts credentials on a line after an oversized record", () => {
|
|
73
|
+
let output = "";
|
|
74
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
75
|
+
redactor.write(Buffer.from(`${"x".repeat(70_000)}\n{"access_token":"next-secret"}\n`));
|
|
76
|
+
redactor.end();
|
|
77
|
+
assert.equal(output, '[omx auth] oversized stderr record suppressed\n{"access_token":"[REDACTED]"}\n');
|
|
78
|
+
});
|
|
79
|
+
it("redacts multiline token fields that arrive after suppression resumes", () => {
|
|
80
|
+
let output = "";
|
|
81
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
82
|
+
redactor.write(Buffer.from("x".repeat(65 * 1024)));
|
|
83
|
+
redactor.write(Buffer.from('padding\n{"refresh_token":\n'));
|
|
84
|
+
redactor.write(Buffer.from('"synthetic-secret"}\nquota exceeded\n'));
|
|
85
|
+
redactor.end();
|
|
86
|
+
assert.doesNotMatch(output, /synthetic-secret|xxx/);
|
|
87
|
+
assert.match(output, /"refresh_token":\n"\[REDACTED\]"\}\nquota exceeded\n$/);
|
|
88
|
+
});
|
|
89
|
+
it("never resumes on a blank tail long enough to evict the token field prefix", () => {
|
|
90
|
+
let output = "";
|
|
91
|
+
const redactor = createAuthStderrRedactor((text) => { output += text; });
|
|
92
|
+
redactor.write(Buffer.from('{"access_token":' + " ".repeat(65 * 1024)));
|
|
93
|
+
// A blank run far longer than the boundary window must not look safe.
|
|
94
|
+
redactor.write(Buffer.from(`${" ".repeat(8 * 1024)}\n"synthetic-secret"}\n`));
|
|
95
|
+
redactor.end();
|
|
96
|
+
assert.doesNotMatch(output, /synthetic-secret/);
|
|
97
|
+
});
|
|
5
98
|
it("redacts JSON quoted OAuth token fields while preserving key names", () => {
|
|
6
99
|
const redacted = redactAuthSecrets('{"access_token":"sentinel-secret","refresh_token":"refresh-secret","id_token":"id-secret","safe":"visible"}');
|
|
7
100
|
assert.doesNotMatch(redacted, /sentinel-secret|refresh-secret|id-secret/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact.test.js","sourceRoot":"","sources":["../../../src/auth/__tests__/redact.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"redact.test.js","sourceRoot":"","sources":["../../../src/auth/__tests__/redact.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,177 @@
|
|
|
1
1
|
import { describe, it } from "node:test";
|
|
2
2
|
import assert from "node:assert/strict";
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
|
-
import { mkdir, mkdtemp, readFile, rm, stat, symlink, writeFile } from "node:fs/promises";
|
|
4
|
+
import { link, mkdir, mkdtemp, readFile, rm, stat, symlink, writeFile } from "node:fs/promises";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
6
|
import { join } from "node:path";
|
|
7
|
-
import {
|
|
7
|
+
import { execFile } from "node:child_process";
|
|
8
|
+
import { promisify } from "node:util";
|
|
9
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
10
|
+
import { atomicWriteFile, addSlotFromAuthFile, listSlots, readAuthMetadata, useSlot, markSlotQuota, clearSlotExhaustion } from "../storage.js";
|
|
8
11
|
import { resolveAuthMetadataPath, resolveLiveAuthPath, resolveOmxAuthDir, resolveSlotPath, validateSlotName, } from "../paths.js";
|
|
9
12
|
async function tempHome() {
|
|
10
13
|
return await mkdtemp(join(tmpdir(), "omx-auth-storage-"));
|
|
11
14
|
}
|
|
12
15
|
describe("auth slot storage", () => {
|
|
16
|
+
for (const operation of [addSlotFromAuthFile, useSlot]) {
|
|
17
|
+
it(`rechecks legacy file identity after acquiring the lock in ${operation.name}`, async (t) => {
|
|
18
|
+
const home = await tempHome();
|
|
19
|
+
try {
|
|
20
|
+
const live = join(home, "auth.json");
|
|
21
|
+
await writeFile(live, '{"access_token":"test-only"}\n');
|
|
22
|
+
await addSlotFromAuthFile("work", live, home);
|
|
23
|
+
const metadataPath = resolveAuthMetadataPath(home);
|
|
24
|
+
const legacyPath = join(resolveOmxAuthDir(home), "Slots.json");
|
|
25
|
+
if (existsSync(legacyPath)) {
|
|
26
|
+
t.skip("requires case-distinct filenames");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
await writeFile(legacyPath, '{"access_token":"legacy"}\n');
|
|
30
|
+
const before = await readFile(metadataPath, "utf-8");
|
|
31
|
+
const lockPath = join(resolveOmxAuthDir(home), ".metadata-lock");
|
|
32
|
+
await mkdir(lockPath);
|
|
33
|
+
const result = operation("Slots", live, home).then(() => null, (error) => error);
|
|
34
|
+
await delay(100);
|
|
35
|
+
await rm(legacyPath);
|
|
36
|
+
await link(metadataPath, legacyPath);
|
|
37
|
+
await rm(lockPath, { recursive: true });
|
|
38
|
+
assert.match(String(await result), /reserved/i);
|
|
39
|
+
assert.equal(await readFile(metadataPath, "utf-8"), before);
|
|
40
|
+
assert.equal(await readFile(live, "utf-8"), '{"access_token":"test-only"}\n');
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
await rm(home, { recursive: true, force: true });
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
it("rejects the reserved metadata basename before changing any auth files", async () => {
|
|
48
|
+
const home = await tempHome();
|
|
49
|
+
try {
|
|
50
|
+
const live = join(home, "auth.json");
|
|
51
|
+
await writeFile(live, '{"access_token":"test-only"}\n');
|
|
52
|
+
await addSlotFromAuthFile("work", live, home);
|
|
53
|
+
const before = await readFile(resolveAuthMetadataPath(home), "utf-8");
|
|
54
|
+
for (const reserved of ["slots", "Slots", "SLOTS"]) {
|
|
55
|
+
await assert.rejects(addSlotFromAuthFile(reserved, live, home), /reserved/i);
|
|
56
|
+
await assert.rejects(useSlot(reserved, live, home), /reserved/i);
|
|
57
|
+
}
|
|
58
|
+
assert.equal(await readFile(resolveAuthMetadataPath(home), "utf-8"), before);
|
|
59
|
+
assert.equal(await readFile(live, "utf-8"), '{"access_token":"test-only"}\n');
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
await rm(home, { recursive: true, force: true });
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
it("preserves concurrent account additions and quota updates", async () => {
|
|
66
|
+
const home = await tempHome();
|
|
67
|
+
try {
|
|
68
|
+
const live = join(home, "auth.json");
|
|
69
|
+
await writeFile(live, '{"access_token":"test-only"}\n');
|
|
70
|
+
const names = Array.from({ length: 8 }, (_, i) => `account-${i}`);
|
|
71
|
+
await Promise.all(names.map(name => addSlotFromAuthFile(name, live, home)));
|
|
72
|
+
assert.deepEqual((await listSlots(home)).map(record => record.slot), names);
|
|
73
|
+
await Promise.all(names.map(name => markSlotQuota(name, home)));
|
|
74
|
+
assert.ok((await readAuthMetadata(home)).slots.every(record => record.exhaustedAt));
|
|
75
|
+
await Promise.all(names.map(name => clearSlotExhaustion(name, home)));
|
|
76
|
+
assert.ok((await readAuthMetadata(home)).slots.every(record => !record.exhaustedAt));
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
await rm(home, { recursive: true, force: true });
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
it("preserves access to an existing distinct Slots account and unrelated accounts", async (t) => {
|
|
83
|
+
const home = await tempHome();
|
|
84
|
+
try {
|
|
85
|
+
const authDir = resolveOmxAuthDir(home);
|
|
86
|
+
await mkdir(authDir, { recursive: true });
|
|
87
|
+
const legacyPath = join(authDir, "Slots.json");
|
|
88
|
+
const metadataPath = resolveAuthMetadataPath(home);
|
|
89
|
+
await writeFile(legacyPath, '{"access_token":"legacy-test-only"}\n');
|
|
90
|
+
await writeFile(join(authDir, "work.json"), '{"access_token":"work-test-only"}\n');
|
|
91
|
+
await writeFile(metadataPath, JSON.stringify({
|
|
92
|
+
version: 1,
|
|
93
|
+
slots: ["Slots", "work"].map(slot => ({ slot, createdAt: "2026-09-01", updatedAt: "2026-09-01" })),
|
|
94
|
+
}));
|
|
95
|
+
const [legacy, metadata] = await Promise.all([stat(legacyPath), stat(metadataPath)]);
|
|
96
|
+
if (legacy.dev === metadata.dev && legacy.ino === metadata.ino) {
|
|
97
|
+
t.skip("filesystem does not support distinct Slots.json and slots.json");
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
assert.deepEqual((await listSlots(home)).map(slot => slot.slot), ["Slots", "work"]);
|
|
101
|
+
const live = join(home, "auth.json");
|
|
102
|
+
await useSlot("work", live, home);
|
|
103
|
+
assert.equal(await readFile(live, "utf-8"), '{"access_token":"work-test-only"}\n');
|
|
104
|
+
await useSlot("Slots", live, home);
|
|
105
|
+
assert.equal(await readFile(live, "utf-8"), '{"access_token":"legacy-test-only"}\n');
|
|
106
|
+
await addSlotFromAuthFile("Slots", live, home);
|
|
107
|
+
assert.deepEqual((await readAuthMetadata(home)).slots.map(slot => slot.slot), ["Slots", "work"]);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
await rm(home, { recursive: true, force: true });
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
it("rejects a case-variant credential path that aliases the metadata file", async () => {
|
|
114
|
+
const home = await tempHome();
|
|
115
|
+
try {
|
|
116
|
+
const live = join(home, "auth.json");
|
|
117
|
+
await writeFile(live, '{"access_token":"test-only"}\n');
|
|
118
|
+
await addSlotFromAuthFile("work", live, home);
|
|
119
|
+
const metadataPath = resolveAuthMetadataPath(home);
|
|
120
|
+
const aliasPath = join(resolveOmxAuthDir(home), "Slots.json");
|
|
121
|
+
if (!existsSync(aliasPath))
|
|
122
|
+
await link(metadataPath, aliasPath);
|
|
123
|
+
const before = await readFile(metadataPath, "utf-8");
|
|
124
|
+
await assert.rejects(addSlotFromAuthFile("Slots", live, home), /reserved/i);
|
|
125
|
+
await assert.rejects(useSlot("Slots", live, home), /reserved/i);
|
|
126
|
+
assert.equal(await readFile(metadataPath, "utf-8"), before);
|
|
127
|
+
assert.equal(await readFile(live, "utf-8"), '{"access_token":"test-only"}\n');
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
await rm(home, { recursive: true, force: true });
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
it("serializes account additions from separate CLI processes", async () => {
|
|
134
|
+
const home = await tempHome();
|
|
135
|
+
try {
|
|
136
|
+
const live = join(home, "auth.json");
|
|
137
|
+
await writeFile(live, '{"access_token":"test-only"}\n');
|
|
138
|
+
const moduleUrl = new URL("../storage.js", import.meta.url).href;
|
|
139
|
+
const run = promisify(execFile);
|
|
140
|
+
await Promise.all(Array.from({ length: 4 }, (_, worker) => run(process.execPath, [
|
|
141
|
+
"--input-type=module", "-e",
|
|
142
|
+
`import { addSlotFromAuthFile } from ${JSON.stringify(moduleUrl)};
|
|
143
|
+
const [home, live, worker] = process.argv.slice(1);
|
|
144
|
+
await Promise.all(Array.from({ length: 3 }, (_, i) =>
|
|
145
|
+
addSlotFromAuthFile('worker-' + worker + '-' + i, live, home)));`,
|
|
146
|
+
home, live, String(worker),
|
|
147
|
+
], { timeout: 15_000 })));
|
|
148
|
+
const slots = await listSlots(home);
|
|
149
|
+
assert.equal(slots.length, 12);
|
|
150
|
+
assert.equal(new Set(slots.map(slot => slot.slot)).size, 12);
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
await rm(home, { recursive: true, force: true });
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
it("keeps the live credentials and current slot consistent after concurrent switches", async () => {
|
|
157
|
+
const home = await tempHome();
|
|
158
|
+
try {
|
|
159
|
+
const live = join(home, "auth.json");
|
|
160
|
+
const names = Array.from({ length: 4 }, (_, i) => `account-${i}`);
|
|
161
|
+
for (const name of names) {
|
|
162
|
+
await writeFile(live, JSON.stringify({ access_token: `test-only-${name}` }));
|
|
163
|
+
await addSlotFromAuthFile(name, live, home);
|
|
164
|
+
}
|
|
165
|
+
await Promise.all(names.map(name => useSlot(name, live, home)));
|
|
166
|
+
const metadata = await readAuthMetadata(home);
|
|
167
|
+
assert.ok(metadata.currentSlot);
|
|
168
|
+
assert.equal(await readFile(live, "utf-8"), await readFile(resolveSlotPath(metadata.currentSlot, home), "utf-8"));
|
|
169
|
+
assert.ok(metadata.slots.every(slot => slot.lastUsedAt));
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
await rm(home, { recursive: true, force: true });
|
|
173
|
+
}
|
|
174
|
+
});
|
|
13
175
|
it("adds, lists, and uses auth slots without exposing blob contents", async () => {
|
|
14
176
|
const home = await tempHome();
|
|
15
177
|
try {
|
|
@@ -100,6 +262,10 @@ describe("auth slot storage", () => {
|
|
|
100
262
|
await writeFile(resolveAuthMetadataPath(home), "{not-json\n");
|
|
101
263
|
await assert.rejects(useSlot("work", live, home));
|
|
102
264
|
assert.equal(await readFile(live, "utf-8"), '{"access_token":"original"}\n');
|
|
265
|
+
assert.equal(existsSync(join(resolveOmxAuthDir(home), ".metadata-lock")), false);
|
|
266
|
+
await writeFile(resolveAuthMetadataPath(home), '{"version":1,"slots":[]}\n');
|
|
267
|
+
await useSlot("work", live, home);
|
|
268
|
+
assert.equal(await readFile(live, "utf-8"), '{"access_token":"replacement"}\n');
|
|
103
269
|
}
|
|
104
270
|
finally {
|
|
105
271
|
await rm(home, { recursive: true, force: true });
|