oh-my-codex 0.12.5 → 0.12.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 +5 -5
- package/Cargo.toml +1 -1
- package/README.md +17 -0
- package/dist/cli/__tests__/ask.test.js +26 -0
- package/dist/cli/__tests__/ask.test.js.map +1 -1
- package/dist/cli/__tests__/explore.test.js +95 -8
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +58 -0
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +169 -0
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-parity.test.js +31 -0
- package/dist/cli/__tests__/mcp-parity.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +66 -2
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-refresh.test.js +11 -1
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +92 -0
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +14 -1
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/cleanup.js +1 -1
- package/dist/cli/cleanup.js.map +1 -1
- package/dist/cli/constants.d.ts +1 -0
- package/dist/cli/constants.d.ts.map +1 -1
- package/dist/cli/constants.js +1 -0
- package/dist/cli/constants.js.map +1 -1
- package/dist/cli/explore.d.ts +1 -0
- package/dist/cli/explore.d.ts.map +1 -1
- package/dist/cli/explore.js +45 -1
- package/dist/cli/explore.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +103 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-parity.d.ts +1 -1
- package/dist/cli/mcp-parity.d.ts.map +1 -1
- package/dist/cli/mcp-parity.js +24 -0
- package/dist/cli/mcp-parity.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +2 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +54 -14
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +1 -0
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +1 -0
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/mcp-registry.test.js +61 -0
- package/dist/config/__tests__/mcp-registry.test.js.map +1 -1
- package/dist/config/__tests__/wiki-config-contract.test.d.ts +2 -0
- package/dist/config/__tests__/wiki-config-contract.test.d.ts.map +1 -0
- package/dist/config/__tests__/wiki-config-contract.test.js +19 -0
- package/dist/config/__tests__/wiki-config-contract.test.js.map +1 -0
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +8 -0
- package/dist/config/generator.js.map +1 -1
- package/dist/config/mcp-registry.d.ts +2 -0
- package/dist/config/mcp-registry.d.ts.map +1 -1
- package/dist/config/mcp-registry.js +12 -0
- package/dist/config/mcp-registry.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +18 -0
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +75 -0
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +140 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +35 -0
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js +86 -2
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +176 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +193 -0
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +90 -2
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/session.test.js +41 -1
- package/dist/hooks/__tests__/session.test.js.map +1 -1
- package/dist/hooks/__tests__/wiki-docs-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/wiki-docs-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/wiki-docs-contract.test.js +34 -0
- package/dist/hooks/__tests__/wiki-docs-contract.test.js.map +1 -0
- package/dist/hooks/agents-overlay.d.ts.map +1 -1
- package/dist/hooks/agents-overlay.js +0 -1
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js +32 -0
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/sdk.test.js +33 -3
- package/dist/hooks/extensibility/__tests__/sdk.test.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js +41 -0
- package/dist/hooks/extensibility/dispatcher.js.map +1 -1
- package/dist/hooks/extensibility/sdk/runtime-state.d.ts.map +1 -1
- package/dist/hooks/extensibility/sdk/runtime-state.js +7 -1
- package/dist/hooks/extensibility/sdk/runtime-state.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +42 -5
- 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 +3 -0
- package/dist/hooks/keyword-registry.js.map +1 -1
- package/dist/hooks/session.d.ts.map +1 -1
- package/dist/hooks/session.js +26 -4
- package/dist/hooks/session.js.map +1 -1
- package/dist/hud/__tests__/state.test.js +27 -0
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +3 -1
- package/dist/hud/state.js.map +1 -1
- package/dist/mcp/__tests__/bootstrap.test.js +65 -1
- package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server.test.js +31 -0
- package/dist/mcp/__tests__/state-server.test.js.map +1 -1
- package/dist/mcp/__tests__/wiki-server.test.d.ts +2 -0
- package/dist/mcp/__tests__/wiki-server.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/wiki-server.test.js +30 -0
- package/dist/mcp/__tests__/wiki-server.test.js.map +1 -0
- package/dist/mcp/bootstrap.d.ts +18 -1
- package/dist/mcp/bootstrap.d.ts.map +1 -1
- package/dist/mcp/bootstrap.js +158 -0
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/state-server.d.ts +4 -4
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/mcp/state-server.js +27 -22
- package/dist/mcp/state-server.js.map +1 -1
- package/dist/mcp/wiki-server.d.ts +181 -0
- package/dist/mcp/wiki-server.d.ts.map +1 -0
- package/dist/mcp/wiki-server.js +235 -0
- package/dist/mcp/wiki-server.js.map +1 -0
- package/dist/modes/__tests__/base-autoresearch-contract.test.js +22 -1
- package/dist/modes/__tests__/base-autoresearch-contract.test.js.map +1 -1
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +10 -0
- package/dist/modes/base.js.map +1 -1
- package/dist/notifications/__tests__/formatter.test.js +11 -0
- package/dist/notifications/__tests__/formatter.test.js.map +1 -1
- package/dist/notifications/__tests__/idle-cooldown.test.js +32 -1
- package/dist/notifications/__tests__/idle-cooldown.test.js.map +1 -1
- package/dist/notifications/__tests__/index.test.d.ts +2 -0
- package/dist/notifications/__tests__/index.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/index.test.js +113 -0
- package/dist/notifications/__tests__/index.test.js.map +1 -0
- package/dist/notifications/__tests__/lifecycle-dedupe.test.d.ts +2 -0
- package/dist/notifications/__tests__/lifecycle-dedupe.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/lifecycle-dedupe.test.js +86 -0
- package/dist/notifications/__tests__/lifecycle-dedupe.test.js.map +1 -0
- package/dist/notifications/__tests__/reply-listener.test.js +155 -0
- package/dist/notifications/__tests__/reply-listener.test.js.map +1 -1
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.d.ts +2 -0
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js +93 -0
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js.map +1 -0
- package/dist/notifications/__tests__/session-registry.test.js +48 -1
- package/dist/notifications/__tests__/session-registry.test.js.map +1 -1
- package/dist/notifications/__tests__/session-status.test.d.ts +2 -0
- package/dist/notifications/__tests__/session-status.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/session-status.test.js +159 -0
- package/dist/notifications/__tests__/session-status.test.js.map +1 -0
- package/dist/notifications/__tests__/tmux.test.js +58 -1
- package/dist/notifications/__tests__/tmux.test.js.map +1 -1
- package/dist/notifications/idle-cooldown.d.ts +11 -0
- package/dist/notifications/idle-cooldown.d.ts.map +1 -1
- package/dist/notifications/idle-cooldown.js +42 -8
- package/dist/notifications/idle-cooldown.js.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +41 -8
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/lifecycle-dedupe.d.ts +8 -0
- package/dist/notifications/lifecycle-dedupe.d.ts.map +1 -0
- package/dist/notifications/lifecycle-dedupe.js +112 -0
- package/dist/notifications/lifecycle-dedupe.js.map +1 -0
- package/dist/notifications/reply-listener.d.ts +2 -0
- package/dist/notifications/reply-listener.d.ts.map +1 -1
- package/dist/notifications/reply-listener.js +42 -6
- package/dist/notifications/reply-listener.js.map +1 -1
- package/dist/notifications/session-registry.d.ts.map +1 -1
- package/dist/notifications/session-registry.js +7 -1
- package/dist/notifications/session-registry.js.map +1 -1
- package/dist/notifications/session-status.d.ts +23 -0
- package/dist/notifications/session-status.d.ts.map +1 -0
- package/dist/notifications/session-status.js +187 -0
- package/dist/notifications/session-status.js.map +1 -0
- package/dist/notifications/tmux.d.ts +10 -0
- package/dist/notifications/tmux.d.ts.map +1 -1
- package/dist/notifications/tmux.js +59 -5
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/notifications/types.d.ts +2 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/index.test.js +84 -0
- package/dist/openclaw/__tests__/index.test.js.map +1 -1
- package/dist/openclaw/index.d.ts.map +1 -1
- package/dist/openclaw/index.js +7 -14
- package/dist/openclaw/index.js.map +1 -1
- package/dist/openclaw/types.d.ts +2 -2
- package/dist/openclaw/types.d.ts.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +270 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/hook-derived-watcher.test.d.ts +2 -0
- package/dist/scripts/__tests__/hook-derived-watcher.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/hook-derived-watcher.test.js +87 -0
- package/dist/scripts/__tests__/hook-derived-watcher.test.js.map +1 -0
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +134 -6
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/hook-derived-watcher.js +43 -1
- package/dist/scripts/hook-derived-watcher.js.map +1 -1
- package/dist/scripts/notify-fallback-watcher.js +27 -2
- package/dist/scripts/notify-fallback-watcher.js.map +1 -1
- package/dist/scripts/notify-hook/auto-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/auto-nudge.js +17 -1
- package/dist/scripts/notify-hook/auto-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.d.ts.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.js +5 -3
- package/dist/scripts/notify-hook/managed-tmux.js.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.js +305 -167
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.js +79 -3
- package/dist/scripts/notify-hook/team-leader-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.js +2 -1
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
- package/dist/scripts/run-provider-advisor.js +20 -2
- package/dist/scripts/run-provider-advisor.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +1 -8
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +12 -68
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/state/__tests__/operations.test.js +113 -0
- package/dist/state/__tests__/operations.test.js.map +1 -1
- package/dist/state/operations.d.ts +1 -1
- package/dist/state/operations.d.ts.map +1 -1
- package/dist/state/operations.js +88 -2
- package/dist/state/operations.js.map +1 -1
- package/dist/state/skill-active.d.ts +1 -1
- package/dist/state/skill-active.d.ts.map +1 -1
- package/dist/state/skill-active.js +1 -0
- package/dist/state/skill-active.js.map +1 -1
- package/dist/team/__tests__/api-interop.test.js +90 -0
- package/dist/team/__tests__/api-interop.test.js.map +1 -1
- package/dist/team/__tests__/hardening-e2e.test.js +17 -0
- package/dist/team/__tests__/hardening-e2e.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +23 -0
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +210 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +10 -1
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/delivery-log.d.ts +1 -1
- package/dist/team/delivery-log.d.ts.map +1 -1
- package/dist/team/delivery-log.js.map +1 -1
- package/dist/team/leader-activity.d.ts +1 -0
- package/dist/team/leader-activity.d.ts.map +1 -1
- package/dist/team/leader-activity.js +4 -2
- package/dist/team/leader-activity.js.map +1 -1
- package/dist/team/progress-evidence.d.ts +2 -0
- package/dist/team/progress-evidence.d.ts.map +1 -0
- package/dist/team/progress-evidence.js +77 -0
- package/dist/team/progress-evidence.js.map +1 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +44 -0
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +57 -8
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worktree.d.ts +6 -1
- package/dist/team/worktree.d.ts.map +1 -1
- package/dist/team/worktree.js +4 -2
- package/dist/team/worktree.js.map +1 -1
- package/dist/utils/__tests__/agents-md.test.js +21 -1
- package/dist/utils/__tests__/agents-md.test.js.map +1 -1
- package/dist/utils/__tests__/repo-deps.test.d.ts +2 -0
- package/dist/utils/__tests__/repo-deps.test.d.ts.map +1 -0
- package/dist/utils/__tests__/repo-deps.test.js +71 -0
- package/dist/utils/__tests__/repo-deps.test.js.map +1 -0
- package/dist/utils/agents-md.d.ts +1 -0
- package/dist/utils/agents-md.d.ts.map +1 -1
- package/dist/utils/agents-md.js +7 -3
- package/dist/utils/agents-md.js.map +1 -1
- package/dist/utils/paths.d.ts +4 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +20 -0
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/repo-deps.d.ts +20 -0
- package/dist/utils/repo-deps.d.ts.map +1 -0
- package/dist/utils/repo-deps.js +78 -0
- package/dist/utils/repo-deps.js.map +1 -0
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.d.ts +2 -0
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.d.ts.map +1 -0
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js +54 -0
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js.map +1 -0
- package/dist/wiki/__tests__/cjk-tokenize.test.d.ts +12 -0
- package/dist/wiki/__tests__/cjk-tokenize.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/cjk-tokenize.test.js +139 -0
- package/dist/wiki/__tests__/cjk-tokenize.test.js.map +1 -0
- package/dist/wiki/__tests__/crlf-parse.test.d.ts +2 -0
- package/dist/wiki/__tests__/crlf-parse.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/crlf-parse.test.js +24 -0
- package/dist/wiki/__tests__/crlf-parse.test.js.map +1 -0
- package/dist/wiki/__tests__/escape-newline.test.d.ts +2 -0
- package/dist/wiki/__tests__/escape-newline.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/escape-newline.test.js +45 -0
- package/dist/wiki/__tests__/escape-newline.test.js.map +1 -0
- package/dist/wiki/__tests__/ingest.test.d.ts +5 -0
- package/dist/wiki/__tests__/ingest.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/ingest.test.js +181 -0
- package/dist/wiki/__tests__/ingest.test.js.map +1 -0
- package/dist/wiki/__tests__/lint.test.d.ts +5 -0
- package/dist/wiki/__tests__/lint.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/lint.test.js +163 -0
- package/dist/wiki/__tests__/lint.test.js.map +1 -0
- package/dist/wiki/__tests__/query.test.d.ts +5 -0
- package/dist/wiki/__tests__/query.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/query.test.js +141 -0
- package/dist/wiki/__tests__/query.test.js.map +1 -0
- package/dist/wiki/__tests__/reserved-file-guard.test.d.ts +2 -0
- package/dist/wiki/__tests__/reserved-file-guard.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/reserved-file-guard.test.js +44 -0
- package/dist/wiki/__tests__/reserved-file-guard.test.js.map +1 -0
- package/dist/wiki/__tests__/session-hooks.test.d.ts +5 -0
- package/dist/wiki/__tests__/session-hooks.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/session-hooks.test.js +36 -0
- package/dist/wiki/__tests__/session-hooks.test.js.map +1 -0
- package/dist/wiki/__tests__/slug-nonascii.test.d.ts +2 -0
- package/dist/wiki/__tests__/slug-nonascii.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/slug-nonascii.test.js +24 -0
- package/dist/wiki/__tests__/slug-nonascii.test.js.map +1 -0
- package/dist/wiki/__tests__/storage.test.d.ts +5 -0
- package/dist/wiki/__tests__/storage.test.d.ts.map +1 -0
- package/dist/wiki/__tests__/storage.test.js +278 -0
- package/dist/wiki/__tests__/storage.test.js.map +1 -0
- package/dist/wiki/__tests__/test-helpers.d.ts +31 -0
- package/dist/wiki/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/wiki/__tests__/test-helpers.js +108 -0
- package/dist/wiki/__tests__/test-helpers.js.map +1 -0
- package/dist/wiki/index.d.ts +14 -0
- package/dist/wiki/index.d.ts.map +1 -0
- package/dist/wiki/index.js +17 -0
- package/dist/wiki/index.js.map +1 -0
- package/dist/wiki/ingest.d.ts +20 -0
- package/dist/wiki/ingest.d.ts.map +1 -0
- package/dist/wiki/ingest.js +115 -0
- package/dist/wiki/ingest.js.map +1 -0
- package/dist/wiki/lifecycle.d.ts +20 -0
- package/dist/wiki/lifecycle.d.ts.map +1 -0
- package/dist/wiki/lifecycle.js +212 -0
- package/dist/wiki/lifecycle.js.map +1 -0
- package/dist/wiki/lint.d.ts +25 -0
- package/dist/wiki/lint.d.ts.map +1 -0
- package/dist/wiki/lint.js +166 -0
- package/dist/wiki/lint.js.map +1 -0
- package/dist/wiki/query.d.ts +36 -0
- package/dist/wiki/query.d.ts.map +1 -0
- package/dist/wiki/query.js +138 -0
- package/dist/wiki/query.js.map +1 -0
- package/dist/wiki/storage.d.ts +33 -0
- package/dist/wiki/storage.d.ts.map +1 -0
- package/dist/wiki/storage.js +321 -0
- package/dist/wiki/storage.js.map +1 -0
- package/dist/wiki/types.d.ts +83 -0
- package/dist/wiki/types.d.ts.map +1 -0
- package/dist/wiki/types.js +15 -0
- package/dist/wiki/types.js.map +1 -0
- package/package.json +3 -1
- package/skills/configure-notifications/SKILL.md +1 -0
- package/skills/doctor/SKILL.md +11 -0
- package/skills/omx-setup/SKILL.md +1 -1
- package/skills/wiki/SKILL.md +57 -0
- package/src/scripts/__tests__/codex-native-hook.test.ts +378 -0
- package/src/scripts/__tests__/hook-derived-watcher.test.ts +111 -0
- package/src/scripts/codex-native-hook.ts +187 -7
- package/src/scripts/hook-derived-watcher.ts +43 -1
- package/src/scripts/notify-fallback-watcher.ts +26 -2
- package/src/scripts/notify-hook/auto-nudge.ts +19 -1
- package/src/scripts/notify-hook/managed-tmux.ts +8 -3
- package/src/scripts/notify-hook/team-dispatch.ts +326 -168
- package/src/scripts/notify-hook/team-leader-nudge.ts +82 -3
- package/src/scripts/notify-hook/tmux-injection.ts +2 -1
- package/src/scripts/run-provider-advisor.ts +20 -2
- package/src/scripts/smoke-packed-install.ts +16 -83
|
@@ -63,6 +63,10 @@ const VIEWPORT_WITHOUT_VISIBLE_PROMPT_CAPTURE = `╭─────────
|
|
|
63
63
|
const VIEWPORT_SCROLLBACK_READY_CAPTURE = `${VIEWPORT_WITHOUT_VISIBLE_PROMPT_CAPTURE}
|
|
64
64
|
|
|
65
65
|
› support lane on multi-image attach`;
|
|
66
|
+
const QUEUED_AFTER_TOOL_CALL_CAPTURE = `• Messages to be submitted after next tool call (press esc to interrupt and send immediately)
|
|
67
|
+
↳ Read $OMX_TEAM_STATE_ROOT/team/demo/workers/worker-1/inbox.md, work now, report progress
|
|
68
|
+
|
|
69
|
+
› Write tests for @filename`;
|
|
66
70
|
async function withMockTmuxFixture(dirPrefix, tmuxScript, run) {
|
|
67
71
|
const fakeBinDir = await mkdtemp(join(tmpdir(), dirPrefix));
|
|
68
72
|
const logPath = join(fakeBinDir, 'tmux.log');
|
|
@@ -306,6 +310,111 @@ esac
|
|
|
306
310
|
assert.ok(acceptIndex < submitIndex, `expected bypass acceptance before worker text:\n${log}`);
|
|
307
311
|
});
|
|
308
312
|
});
|
|
313
|
+
it('ignores stale queued-next-tool-call banner text that only survives in scrollback history', async () => {
|
|
314
|
+
await withMockTmuxFixture('omx-tmux-codex-stale-queued-scrollback-', (logPath) => `#!/bin/sh
|
|
315
|
+
set -eu
|
|
316
|
+
state_dir="$(dirname "${logPath}")"
|
|
317
|
+
text_sent_file="$state_dir/text-sent"
|
|
318
|
+
printf '%s\n' "$*" >> "${logPath}"
|
|
319
|
+
case "$1" in
|
|
320
|
+
capture-pane)
|
|
321
|
+
if printf '%s\n' "$*" | grep -q -- ' -S -80'; then
|
|
322
|
+
if [ -f "$text_sent_file" ]; then
|
|
323
|
+
cat <<'EOF'
|
|
324
|
+
${QUEUED_AFTER_TOOL_CALL_CAPTURE}
|
|
325
|
+
EOF
|
|
326
|
+
else
|
|
327
|
+
cat <<'EOF'
|
|
328
|
+
${READY_HELPER_CAPTURE}
|
|
329
|
+
EOF
|
|
330
|
+
fi
|
|
331
|
+
else
|
|
332
|
+
cat <<'EOF'
|
|
333
|
+
${READY_HELPER_CAPTURE}
|
|
334
|
+
EOF
|
|
335
|
+
fi
|
|
336
|
+
exit 0
|
|
337
|
+
;;
|
|
338
|
+
send-keys)
|
|
339
|
+
if [ "\${4:-}" = "-l" ] && [ "\${6:-}" = "check inbox" ]; then
|
|
340
|
+
: > "$text_sent_file"
|
|
341
|
+
fi
|
|
342
|
+
exit 0
|
|
343
|
+
;;
|
|
344
|
+
*)
|
|
345
|
+
exit 0
|
|
346
|
+
;;
|
|
347
|
+
esac
|
|
348
|
+
`, async ({ logPath }) => {
|
|
349
|
+
await sendToWorker('omx-team-x', 1, 'check inbox');
|
|
350
|
+
const log = await readFile(logPath, 'utf-8');
|
|
351
|
+
const enterCount = (log.match(/send-keys -t omx-team-x:1 C-m/g) || []).length;
|
|
352
|
+
assert.equal(enterCount, 2, `expected only the baseline submit presses when the queued banner is stale scrollback:\n${log}`);
|
|
353
|
+
assert.match(log, /capture-pane -t omx-team-x:1 -p/);
|
|
354
|
+
assert.match(log, /capture-pane -t omx-team-x:1 -p -S -80/);
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
it('keeps nudging Codex when the visible pane still shows a live queued-next-tool-call banner', async () => {
|
|
358
|
+
await withMockTmuxFixture('omx-tmux-codex-visible-queued-submit-', (logPath) => `#!/bin/sh
|
|
359
|
+
set -eu
|
|
360
|
+
state_dir="$(dirname "${logPath}")"
|
|
361
|
+
text_sent_file="$state_dir/text-sent"
|
|
362
|
+
enter_count_file="$state_dir/enter-count"
|
|
363
|
+
printf '%s\n' "$*" >> "${logPath}"
|
|
364
|
+
case "$1" in
|
|
365
|
+
capture-pane)
|
|
366
|
+
enter_count=0
|
|
367
|
+
if [ -f "$enter_count_file" ]; then
|
|
368
|
+
enter_count=$(cat "$enter_count_file")
|
|
369
|
+
fi
|
|
370
|
+
if printf '%s\n' "$*" | grep -q -- ' -S -80'; then
|
|
371
|
+
cat <<'EOF'
|
|
372
|
+
${READY_HELPER_CAPTURE}
|
|
373
|
+
EOF
|
|
374
|
+
else
|
|
375
|
+
if [ "$enter_count" -ge 4 ]; then
|
|
376
|
+
cat <<'EOF'
|
|
377
|
+
initialized in .
|
|
378
|
+
|
|
379
|
+
◦ Waiting for background terminal (59s…)
|
|
380
|
+
EOF
|
|
381
|
+
elif [ -f "$text_sent_file" ]; then
|
|
382
|
+
cat <<'EOF'
|
|
383
|
+
${QUEUED_AFTER_TOOL_CALL_CAPTURE}
|
|
384
|
+
EOF
|
|
385
|
+
else
|
|
386
|
+
cat <<'EOF'
|
|
387
|
+
${READY_HELPER_CAPTURE}
|
|
388
|
+
EOF
|
|
389
|
+
fi
|
|
390
|
+
fi
|
|
391
|
+
exit 0
|
|
392
|
+
;;
|
|
393
|
+
send-keys)
|
|
394
|
+
if [ "\${4:-}" = "-l" ] && [ "\${6:-}" = "check inbox" ]; then
|
|
395
|
+
: > "$text_sent_file"
|
|
396
|
+
fi
|
|
397
|
+
if [ "\${4:-}" = "C-m" ]; then
|
|
398
|
+
enter_count=0
|
|
399
|
+
if [ -f "$enter_count_file" ]; then
|
|
400
|
+
enter_count=$(cat "$enter_count_file")
|
|
401
|
+
fi
|
|
402
|
+
enter_count=$((enter_count + 1))
|
|
403
|
+
printf '%s' "$enter_count" > "$enter_count_file"
|
|
404
|
+
fi
|
|
405
|
+
exit 0
|
|
406
|
+
;;
|
|
407
|
+
*)
|
|
408
|
+
exit 0
|
|
409
|
+
;;
|
|
410
|
+
esac
|
|
411
|
+
`, async ({ logPath }) => {
|
|
412
|
+
await sendToWorker('omx-team-x', 1, 'check inbox');
|
|
413
|
+
const log = await readFile(logPath, 'utf-8');
|
|
414
|
+
const enterCount = (log.match(/send-keys -t omx-team-x:1 C-m/g) || []).length;
|
|
415
|
+
assert.ok(enterCount >= 4, `expected extra submit nudges when Codex queues the trigger:\n${log}`);
|
|
416
|
+
});
|
|
417
|
+
});
|
|
309
418
|
});
|
|
310
419
|
describe('shouldAttemptAdaptiveRetry', () => {
|
|
311
420
|
it('returns false when adaptive retry is disabled', () => {
|
|
@@ -669,6 +778,87 @@ describe('buildWorkerStartupCommand', () => {
|
|
|
669
778
|
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
670
779
|
}
|
|
671
780
|
});
|
|
781
|
+
it('inherits only allowlisted ambient proxy env vars for tmux startup commands', () => {
|
|
782
|
+
const prevShell = process.env.SHELL;
|
|
783
|
+
const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
784
|
+
const prevHttpsProxy = process.env.HTTPS_PROXY;
|
|
785
|
+
const prevHttpProxy = process.env.HTTP_PROXY;
|
|
786
|
+
const prevNoProxy = process.env.NO_PROXY;
|
|
787
|
+
const prevLowerHttpsProxy = process.env.https_proxy;
|
|
788
|
+
const prevCustom = process.env.AWS_SECRET_ACCESS_KEY;
|
|
789
|
+
process.env.SHELL = '/bin/bash';
|
|
790
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
|
|
791
|
+
process.env.HTTPS_PROXY = 'https://upper-proxy.example:443';
|
|
792
|
+
process.env.HTTP_PROXY = 'http://upper-proxy.example:80';
|
|
793
|
+
process.env.NO_PROXY = 'localhost,127.0.0.1';
|
|
794
|
+
process.env.https_proxy = 'https://lower-proxy.example:443';
|
|
795
|
+
process.env.AWS_SECRET_ACCESS_KEY = 'should-not-inherit';
|
|
796
|
+
try {
|
|
797
|
+
const cmd = buildWorkerStartupCommand('alpha', 1, [], '/tmp/project');
|
|
798
|
+
assert.match(cmd, /HTTPS_PROXY=https:\/\/upper-proxy\.example:443/);
|
|
799
|
+
assert.match(cmd, /HTTP_PROXY=http:\/\/upper-proxy\.example:80/);
|
|
800
|
+
assert.match(cmd, /NO_PROXY=localhost,127\.0\.0\.1/);
|
|
801
|
+
assert.match(cmd, /https_proxy=https:\/\/lower-proxy\.example:443/);
|
|
802
|
+
assert.doesNotMatch(cmd, /AWS_SECRET_ACCESS_KEY=should-not-inherit/);
|
|
803
|
+
}
|
|
804
|
+
finally {
|
|
805
|
+
if (typeof prevShell === 'string')
|
|
806
|
+
process.env.SHELL = prevShell;
|
|
807
|
+
else
|
|
808
|
+
delete process.env.SHELL;
|
|
809
|
+
if (typeof prevBypass === 'string')
|
|
810
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
|
|
811
|
+
else
|
|
812
|
+
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
813
|
+
if (typeof prevHttpsProxy === 'string')
|
|
814
|
+
process.env.HTTPS_PROXY = prevHttpsProxy;
|
|
815
|
+
else
|
|
816
|
+
delete process.env.HTTPS_PROXY;
|
|
817
|
+
if (typeof prevHttpProxy === 'string')
|
|
818
|
+
process.env.HTTP_PROXY = prevHttpProxy;
|
|
819
|
+
else
|
|
820
|
+
delete process.env.HTTP_PROXY;
|
|
821
|
+
if (typeof prevNoProxy === 'string')
|
|
822
|
+
process.env.NO_PROXY = prevNoProxy;
|
|
823
|
+
else
|
|
824
|
+
delete process.env.NO_PROXY;
|
|
825
|
+
if (typeof prevLowerHttpsProxy === 'string')
|
|
826
|
+
process.env.https_proxy = prevLowerHttpsProxy;
|
|
827
|
+
else
|
|
828
|
+
delete process.env.https_proxy;
|
|
829
|
+
if (typeof prevCustom === 'string')
|
|
830
|
+
process.env.AWS_SECRET_ACCESS_KEY = prevCustom;
|
|
831
|
+
else
|
|
832
|
+
delete process.env.AWS_SECRET_ACCESS_KEY;
|
|
833
|
+
}
|
|
834
|
+
});
|
|
835
|
+
it('preserves explicit worker env precedence over inherited ambient proxy vars', () => {
|
|
836
|
+
const prevShell = process.env.SHELL;
|
|
837
|
+
const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
838
|
+
const prevHttpsProxy = process.env.HTTPS_PROXY;
|
|
839
|
+
process.env.SHELL = '/bin/bash';
|
|
840
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
|
|
841
|
+
process.env.HTTPS_PROXY = 'https://ambient-proxy.example:443';
|
|
842
|
+
try {
|
|
843
|
+
const cmd = buildWorkerStartupCommand('alpha', 1, [], '/tmp/project', { HTTPS_PROXY: 'https://explicit-proxy.example:8443' });
|
|
844
|
+
assert.match(cmd, /HTTPS_PROXY=https:\/\/explicit-proxy\.example:8443/);
|
|
845
|
+
assert.doesNotMatch(cmd, /HTTPS_PROXY=https:\/\/ambient-proxy\.example:443/);
|
|
846
|
+
}
|
|
847
|
+
finally {
|
|
848
|
+
if (typeof prevShell === 'string')
|
|
849
|
+
process.env.SHELL = prevShell;
|
|
850
|
+
else
|
|
851
|
+
delete process.env.SHELL;
|
|
852
|
+
if (typeof prevBypass === 'string')
|
|
853
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
|
|
854
|
+
else
|
|
855
|
+
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
856
|
+
if (typeof prevHttpsProxy === 'string')
|
|
857
|
+
process.env.HTTPS_PROXY = prevHttpsProxy;
|
|
858
|
+
else
|
|
859
|
+
delete process.env.HTTPS_PROXY;
|
|
860
|
+
}
|
|
861
|
+
});
|
|
672
862
|
it('resolves POSIX leader paths before building fish worker startup commands', async () => {
|
|
673
863
|
const fakeBin = await mkdtemp(join(tmpdir(), 'omx-worker-startup-posix-'));
|
|
674
864
|
const prevPath = process.env.PATH;
|
|
@@ -1652,6 +1842,26 @@ describe('team worker launch mode helpers', () => {
|
|
|
1652
1842
|
await rm(workerCodexHome, { recursive: true, force: true });
|
|
1653
1843
|
}
|
|
1654
1844
|
});
|
|
1845
|
+
it('buildWorkerProcessLaunchSpec keeps the worker env contract unchanged for ambient proxy vars', () => {
|
|
1846
|
+
const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1847
|
+
const prevHttpsProxy = process.env.HTTPS_PROXY;
|
|
1848
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
|
|
1849
|
+
process.env.HTTPS_PROXY = 'https://ambient-proxy.example:443';
|
|
1850
|
+
try {
|
|
1851
|
+
const spec = buildWorkerProcessLaunchSpec('eta-team', 1, [], '/tmp/workspace', {}, 'codex');
|
|
1852
|
+
assert.equal(spec.env.HTTPS_PROXY, undefined);
|
|
1853
|
+
}
|
|
1854
|
+
finally {
|
|
1855
|
+
if (typeof prevBypass === 'string')
|
|
1856
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
|
|
1857
|
+
else
|
|
1858
|
+
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1859
|
+
if (typeof prevHttpsProxy === 'string')
|
|
1860
|
+
process.env.HTTPS_PROXY = prevHttpsProxy;
|
|
1861
|
+
else
|
|
1862
|
+
delete process.env.HTTPS_PROXY;
|
|
1863
|
+
}
|
|
1864
|
+
});
|
|
1655
1865
|
it('buildWorkerProcessLaunchSpec resolves relative worker CODEX_HOME against the worker cwd', async () => {
|
|
1656
1866
|
const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1657
1867
|
const prevCodexHome = process.env.CODEX_HOME;
|