oh-my-codex 0.10.5 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.lock +162 -2
- package/Cargo.toml +8 -2
- package/README.md +3 -1
- package/crates/omx-mux/Cargo.toml +10 -0
- package/crates/omx-mux/src/lib.rs +91 -0
- package/crates/omx-mux/src/tmux.rs +282 -0
- package/crates/omx-mux/src/types.rs +306 -0
- package/crates/omx-runtime/Cargo.toml +12 -0
- package/crates/omx-runtime/src/main.rs +121 -0
- package/crates/omx-runtime/tests/execution.rs +212 -0
- package/crates/omx-runtime-core/Cargo.toml +12 -0
- package/crates/omx-runtime-core/src/authority.rs +239 -0
- package/crates/omx-runtime-core/src/dispatch.rs +329 -0
- package/crates/omx-runtime-core/src/engine.rs +735 -0
- package/crates/omx-runtime-core/src/lib.rs +636 -0
- package/crates/omx-runtime-core/src/mailbox.rs +260 -0
- package/crates/omx-runtime-core/src/replay.rs +104 -0
- package/crates/omx-sparkshell/Cargo.lock +7 -0
- package/crates/omx-sparkshell/Cargo.toml +10 -0
- package/crates/omx-sparkshell/src/codex_bridge.rs +406 -0
- package/crates/omx-sparkshell/src/error.rs +45 -0
- package/crates/omx-sparkshell/src/exec.rs +115 -0
- package/crates/omx-sparkshell/src/main.rs +337 -0
- package/crates/omx-sparkshell/src/prompt.rs +341 -0
- package/crates/omx-sparkshell/src/registry/c_cpp.rs +9 -0
- package/crates/omx-sparkshell/src/registry/csharp.rs +10 -0
- package/crates/omx-sparkshell/src/registry/generic_shell.rs +11 -0
- package/crates/omx-sparkshell/src/registry/git.rs +10 -0
- package/crates/omx-sparkshell/src/registry/go.rs +9 -0
- package/crates/omx-sparkshell/src/registry/java_kotlin.rs +9 -0
- package/crates/omx-sparkshell/src/registry/mod.rs +85 -0
- package/crates/omx-sparkshell/src/registry/node_js.rs +9 -0
- package/crates/omx-sparkshell/src/registry/python.rs +9 -0
- package/crates/omx-sparkshell/src/registry/ruby.rs +9 -0
- package/crates/omx-sparkshell/src/registry/rust.rs +9 -0
- package/crates/omx-sparkshell/src/registry/swift.rs +10 -0
- package/crates/omx-sparkshell/src/test_support.rs +10 -0
- package/crates/omx-sparkshell/src/threshold.rs +74 -0
- package/crates/omx-sparkshell/tests/execution.rs +473 -0
- package/crates/omx-sparkshell/tests/registry.rs +99 -0
- package/dist/agents/__tests__/definitions.test.js +22 -0
- package/dist/agents/__tests__/definitions.test.js.map +1 -1
- package/dist/agents/__tests__/native-config.test.js +42 -2
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/definitions.js +14 -14
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/native-config.d.ts +7 -1
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +41 -3
- package/dist/agents/native-config.js.map +1 -1
- package/dist/cli/__tests__/agents-init.test.js +1 -1
- package/dist/cli/__tests__/agents-init.test.js.map +1 -1
- package/dist/cli/__tests__/agents.test.js +1 -1
- package/dist/cli/__tests__/agents.test.js.map +1 -1
- package/dist/cli/__tests__/ask.test.js +1 -1
- package/dist/cli/__tests__/ask.test.js.map +1 -1
- package/dist/cli/__tests__/autoresearch.test.js +1 -1
- package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-invalid-config.test.js +1 -1
- package/dist/cli/__tests__/doctor-invalid-config.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-team.test.js +1 -1
- package/dist/cli/__tests__/doctor-team.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/exec.test.js +1 -1
- package/dist/cli/__tests__/exec.test.js.map +1 -1
- package/dist/cli/__tests__/explore.test.js +1 -1
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +39 -13
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/native-hook-dispatch-contract.test.d.ts +2 -0
- package/dist/cli/__tests__/native-hook-dispatch-contract.test.d.ts.map +1 -0
- package/dist/cli/__tests__/native-hook-dispatch-contract.test.js +11 -0
- package/dist/cli/__tests__/native-hook-dispatch-contract.test.js.map +1 -0
- package/dist/cli/__tests__/nested-help-routing.test.js +1 -1
- package/dist/cli/__tests__/nested-help-routing.test.js.map +1 -1
- package/dist/cli/__tests__/package-bin-contract.test.js +15 -12
- package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
- package/dist/cli/__tests__/resume.test.js +1 -1
- package/dist/cli/__tests__/resume.test.js.map +1 -1
- package/dist/cli/__tests__/session-scoped-runtime.test.js +1 -1
- package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
- package/dist/cli/__tests__/session-search-help.test.js +1 -1
- package/dist/cli/__tests__/session-search-help.test.js.map +1 -1
- package/dist/cli/__tests__/session-search.test.js +1 -1
- package/dist/cli/__tests__/session-search.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +1 -0
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-gh-star.test.js +1 -1
- package/dist/cli/__tests__/setup-gh-star.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +1 -1
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-packaging.test.js +12 -12
- package/dist/cli/__tests__/sparkshell-packaging.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +1 -1
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/__tests__/version-sync-contract.test.js +14 -2
- package/dist/cli/__tests__/version-sync-contract.test.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +24 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/hooks.js +3 -3
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/index.d.ts +6 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +65 -87
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/omx.d.ts +3 -0
- package/dist/cli/omx.d.ts.map +1 -0
- package/{bin → dist/cli}/omx.js +9 -12
- package/dist/cli/omx.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +4 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/tmux-hook.js +1 -1
- package/dist/cli/tmux-hook.js.map +1 -1
- package/dist/compat/__tests__/doctor-contract.test.js +1 -1
- package/dist/compat/__tests__/doctor-contract.test.js.map +1 -1
- package/dist/compat/__tests__/rust-runtime-compat.test.d.ts +2 -0
- package/dist/compat/__tests__/rust-runtime-compat.test.d.ts.map +1 -0
- package/dist/compat/__tests__/rust-runtime-compat.test.js +135 -0
- package/dist/compat/__tests__/rust-runtime-compat.test.js.map +1 -0
- package/dist/config/__tests__/models.test.js +23 -1
- package/dist/config/__tests__/models.test.js.map +1 -1
- package/dist/config/generator.js +1 -1
- package/dist/config/generator.js.map +1 -1
- package/dist/config/models.d.ts +9 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +15 -0
- package/dist/config/models.js.map +1 -1
- package/dist/hooks/__tests__/codebase-map.test.js +1 -1
- package/dist/hooks/__tests__/codebase-map.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +15 -15
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +2 -2
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +98 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +1 -1
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-linked-sync.test.js +1 -1
- package/dist/hooks/__tests__/notify-hook-linked-sync.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.js +14 -0
- package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.js.map +1 -0
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js +1 -1
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js +4 -4
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +18 -18
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +86 -10
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.d.ts +2 -0
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js +98 -0
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js.map +1 -0
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +2 -2
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/tmux-hook-engine.test.js +1 -1
- package/dist/hooks/__tests__/tmux-hook-engine.test.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js +5 -5
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/loader.test.js +12 -6
- package/dist/hooks/extensibility/__tests__/loader.test.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/runtime.test.js +5 -4
- package/dist/hooks/extensibility/__tests__/runtime.test.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.d.ts +1 -1
- package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js +49 -40
- package/dist/hooks/extensibility/dispatcher.js.map +1 -1
- package/dist/hooks/extensibility/loader.d.ts.map +1 -1
- package/dist/hooks/extensibility/loader.js +4 -1
- package/dist/hooks/extensibility/loader.js.map +1 -1
- package/dist/hooks/extensibility/runtime.d.ts.map +1 -1
- package/dist/hooks/extensibility/runtime.js +4 -1
- package/dist/hooks/extensibility/runtime.js.map +1 -1
- package/dist/hud/__tests__/authority.test.d.ts +2 -0
- package/dist/hud/__tests__/authority.test.d.ts.map +1 -0
- package/dist/hud/__tests__/authority.test.js +56 -0
- package/dist/hud/__tests__/authority.test.js.map +1 -0
- package/dist/hud/__tests__/index.test.js +23 -0
- package/dist/hud/__tests__/index.test.js.map +1 -1
- package/dist/hud/authority.d.ts +17 -0
- package/dist/hud/authority.d.ts.map +1 -0
- package/dist/hud/authority.js +54 -0
- package/dist/hud/authority.js.map +1 -0
- package/dist/hud/index.d.ts +3 -0
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +6 -36
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +10 -1
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/types.d.ts +2 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/modes/base.d.ts +1 -1
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +1 -1
- package/dist/modes/base.js.map +1 -1
- package/dist/notifications/tmux-detector.d.ts +6 -0
- package/dist/notifications/tmux-detector.d.ts.map +1 -1
- package/dist/notifications/tmux-detector.js +12 -0
- package/dist/notifications/tmux-detector.js.map +1 -1
- package/dist/runtime/bridge.d.ts +185 -0
- package/dist/runtime/bridge.d.ts.map +1 -0
- package/dist/runtime/bridge.js +163 -0
- package/dist/runtime/bridge.js.map +1 -0
- package/dist/scripts/__tests__/smoke-packed-install.test.d.ts +2 -0
- package/dist/scripts/__tests__/smoke-packed-install.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/smoke-packed-install.test.js +156 -0
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -0
- package/dist/scripts/build-explore-harness.d.ts +3 -0
- package/dist/scripts/build-explore-harness.d.ts.map +1 -0
- package/dist/scripts/build-explore-harness.js +50 -0
- package/dist/scripts/build-explore-harness.js.map +1 -0
- package/dist/scripts/build-sparkshell.d.ts +2 -0
- package/dist/scripts/build-sparkshell.d.ts.map +1 -0
- package/dist/scripts/build-sparkshell.js +46 -0
- package/dist/scripts/build-sparkshell.js.map +1 -0
- package/dist/scripts/check-runtime-syntax.d.ts +3 -0
- package/dist/scripts/check-runtime-syntax.d.ts.map +1 -0
- package/dist/scripts/check-runtime-syntax.js +57 -0
- package/dist/scripts/check-runtime-syntax.js.map +1 -0
- package/dist/scripts/check-version-sync.d.ts +3 -0
- package/dist/scripts/check-version-sync.d.ts.map +1 -0
- package/dist/scripts/check-version-sync.js +49 -0
- package/dist/scripts/check-version-sync.js.map +1 -0
- package/dist/scripts/cleanup-explore-harness.d.ts +3 -0
- package/dist/scripts/cleanup-explore-harness.d.ts.map +1 -0
- package/dist/scripts/cleanup-explore-harness.js +16 -0
- package/dist/scripts/cleanup-explore-harness.js.map +1 -0
- package/dist/scripts/eval/eval-candidate-handoff.d.ts +2 -0
- package/dist/scripts/eval/eval-candidate-handoff.d.ts.map +1 -0
- package/dist/scripts/eval/eval-candidate-handoff.js +11 -0
- package/dist/scripts/eval/eval-candidate-handoff.js.map +1 -0
- package/dist/scripts/eval/eval-cli-discoverability.d.ts +3 -0
- package/dist/scripts/eval/eval-cli-discoverability.d.ts.map +1 -0
- package/dist/scripts/eval/eval-cli-discoverability.js +37 -0
- package/dist/scripts/eval/eval-cli-discoverability.js.map +1 -0
- package/dist/scripts/eval/eval-fresh-run-tagging.d.ts +2 -0
- package/dist/scripts/eval/eval-fresh-run-tagging.d.ts.map +1 -0
- package/dist/scripts/eval/eval-fresh-run-tagging.js +11 -0
- package/dist/scripts/eval/eval-fresh-run-tagging.js.map +1 -0
- package/dist/scripts/eval/eval-help-consistency.d.ts +2 -0
- package/dist/scripts/eval/eval-help-consistency.d.ts.map +1 -0
- package/dist/scripts/eval/eval-help-consistency.js +12 -0
- package/dist/scripts/eval/eval-help-consistency.js.map +1 -0
- package/dist/scripts/eval/eval-in-action-cat-shellout-demo.d.ts +2 -0
- package/dist/scripts/eval/eval-in-action-cat-shellout-demo.d.ts.map +1 -0
- package/dist/scripts/eval/eval-in-action-cat-shellout-demo.js +31 -0
- package/dist/scripts/eval/eval-in-action-cat-shellout-demo.js.map +1 -0
- package/dist/scripts/eval/eval-parity-smoke.d.ts +2 -0
- package/dist/scripts/eval/eval-parity-smoke.d.ts.map +1 -0
- package/dist/scripts/eval/eval-parity-smoke.js +23 -0
- package/dist/scripts/eval/eval-parity-smoke.js.map +1 -0
- package/dist/scripts/eval/eval-parity-sweep.d.ts +2 -0
- package/dist/scripts/eval/eval-parity-sweep.d.ts.map +1 -0
- package/dist/scripts/eval/eval-parity-sweep.js +29 -0
- package/dist/scripts/eval/eval-parity-sweep.js.map +1 -0
- package/dist/scripts/eval/eval-resume-dirty-guard.d.ts +2 -0
- package/dist/scripts/eval/eval-resume-dirty-guard.d.ts.map +1 -0
- package/dist/scripts/eval/eval-resume-dirty-guard.js +11 -0
- package/dist/scripts/eval/eval-resume-dirty-guard.js.map +1 -0
- package/dist/scripts/eval/eval-security-path-traversal.d.ts +3 -0
- package/dist/scripts/eval/eval-security-path-traversal.d.ts.map +1 -0
- package/dist/scripts/eval/eval-security-path-traversal.js +35 -0
- package/dist/scripts/eval/eval-security-path-traversal.js.map +1 -0
- package/dist/scripts/fixtures/ask-advisor-stub.d.ts +3 -0
- package/dist/scripts/fixtures/ask-advisor-stub.d.ts.map +1 -0
- package/dist/scripts/fixtures/ask-advisor-stub.js +13 -0
- package/dist/scripts/fixtures/ask-advisor-stub.js.map +1 -0
- package/dist/scripts/generate-catalog-docs.d.ts +3 -0
- package/dist/scripts/generate-catalog-docs.d.ts.map +1 -0
- package/dist/scripts/generate-catalog-docs.js +99 -0
- package/dist/scripts/generate-catalog-docs.js.map +1 -0
- package/dist/scripts/generate-native-release-manifest.d.ts +3 -0
- package/dist/scripts/generate-native-release-manifest.d.ts.map +1 -0
- package/dist/scripts/generate-native-release-manifest.js +107 -0
- package/dist/scripts/generate-native-release-manifest.js.map +1 -0
- package/dist/scripts/hook-derived-watcher.d.ts +3 -0
- package/dist/scripts/hook-derived-watcher.d.ts.map +1 -0
- package/dist/scripts/hook-derived-watcher.js +475 -0
- package/dist/scripts/hook-derived-watcher.js.map +1 -0
- package/dist/scripts/notify-fallback-watcher.d.ts +3 -0
- package/dist/scripts/notify-fallback-watcher.d.ts.map +1 -0
- package/dist/scripts/notify-fallback-watcher.js +746 -0
- package/dist/scripts/notify-fallback-watcher.js.map +1 -0
- package/dist/scripts/notify-hook/auto-nudge.d.ts +60 -0
- package/dist/scripts/notify-hook/auto-nudge.d.ts.map +1 -0
- package/dist/scripts/notify-hook/auto-nudge.js +423 -0
- package/dist/scripts/notify-hook/auto-nudge.js.map +1 -0
- package/dist/scripts/notify-hook/linked-sync.d.ts +6 -0
- package/dist/scripts/notify-hook/linked-sync.d.ts.map +1 -0
- package/dist/scripts/notify-hook/linked-sync.js +58 -0
- package/dist/scripts/notify-hook/linked-sync.js.map +1 -0
- package/dist/scripts/notify-hook/log.d.ts +6 -0
- package/dist/scripts/notify-hook/log.d.ts.map +1 -0
- package/dist/scripts/notify-hook/log.js +14 -0
- package/dist/scripts/notify-hook/log.js.map +1 -0
- package/dist/scripts/notify-hook/operational-events.d.ts +14 -0
- package/dist/scripts/notify-hook/operational-events.d.ts.map +1 -0
- package/dist/scripts/notify-hook/operational-events.js +227 -0
- package/dist/scripts/notify-hook/operational-events.js.map +1 -0
- package/dist/scripts/notify-hook/payload-parser.d.ts +13 -0
- package/dist/scripts/notify-hook/payload-parser.d.ts.map +1 -0
- package/dist/scripts/notify-hook/payload-parser.js +134 -0
- package/dist/scripts/notify-hook/payload-parser.js.map +1 -0
- package/dist/scripts/notify-hook/process-runner.d.ts +9 -0
- package/dist/scripts/notify-hook/process-runner.d.ts.map +1 -0
- package/dist/scripts/notify-hook/process-runner.js +45 -0
- package/dist/scripts/notify-hook/process-runner.js.map +1 -0
- package/dist/scripts/notify-hook/state-io.d.ts +12 -0
- package/dist/scripts/notify-hook/state-io.d.ts.map +1 -0
- package/dist/scripts/notify-hook/state-io.js +92 -0
- package/dist/scripts/notify-hook/state-io.js.map +1 -0
- package/dist/scripts/notify-hook/team-dispatch.d.ts +27 -0
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -0
- package/dist/scripts/notify-hook/team-dispatch.js +655 -0
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -0
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts +20 -0
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts.map +1 -0
- package/dist/scripts/notify-hook/team-leader-nudge.js +767 -0
- package/dist/scripts/notify-hook/team-leader-nudge.js.map +1 -0
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts +11 -0
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts.map +1 -0
- package/dist/scripts/notify-hook/team-tmux-guard.js +190 -0
- package/dist/scripts/notify-hook/team-tmux-guard.js.map +1 -0
- package/dist/scripts/notify-hook/team-worker.d.ts +33 -0
- package/dist/scripts/notify-hook/team-worker.d.ts.map +1 -0
- package/dist/scripts/notify-hook/team-worker.js +655 -0
- package/dist/scripts/notify-hook/team-worker.js.map +1 -0
- package/dist/scripts/notify-hook/tmux-injection.d.ts +9 -0
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -0
- package/dist/scripts/notify-hook/tmux-injection.js +396 -0
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -0
- package/dist/scripts/notify-hook/utils.d.ts +9 -0
- package/dist/scripts/notify-hook/utils.d.ts.map +1 -0
- package/dist/scripts/notify-hook/utils.js +36 -0
- package/dist/scripts/notify-hook/utils.js.map +1 -0
- package/dist/scripts/notify-hook/visual-verdict.d.ts +29 -0
- package/dist/scripts/notify-hook/visual-verdict.d.ts.map +1 -0
- package/dist/scripts/notify-hook/visual-verdict.js +145 -0
- package/dist/scripts/notify-hook/visual-verdict.js.map +1 -0
- package/dist/scripts/notify-hook.d.ts +21 -0
- package/dist/scripts/notify-hook.d.ts.map +1 -0
- package/dist/scripts/notify-hook.js +527 -0
- package/dist/scripts/notify-hook.js.map +1 -0
- package/dist/scripts/run-provider-advisor.d.ts +3 -0
- package/dist/scripts/run-provider-advisor.d.ts.map +1 -0
- package/dist/scripts/run-provider-advisor.js +151 -0
- package/dist/scripts/run-provider-advisor.js.map +1 -0
- package/dist/scripts/smoke-packed-install.d.ts +24 -0
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -0
- package/dist/scripts/smoke-packed-install.js +310 -0
- package/dist/scripts/smoke-packed-install.js.map +1 -0
- package/dist/scripts/sync-prompt-guidance-fragments.d.ts +3 -0
- package/dist/scripts/sync-prompt-guidance-fragments.d.ts.map +1 -0
- package/dist/scripts/sync-prompt-guidance-fragments.js +45 -0
- package/dist/scripts/sync-prompt-guidance-fragments.js.map +1 -0
- package/dist/scripts/team-hardening-benchmark.d.ts +3 -0
- package/dist/scripts/team-hardening-benchmark.d.ts.map +1 -0
- package/dist/scripts/team-hardening-benchmark.js +91 -0
- package/dist/scripts/team-hardening-benchmark.js.map +1 -0
- package/dist/scripts/test-sparkshell.d.ts +2 -0
- package/dist/scripts/test-sparkshell.d.ts.map +1 -0
- package/dist/scripts/test-sparkshell.js +25 -0
- package/dist/scripts/test-sparkshell.js.map +1 -0
- package/dist/scripts/tmux-hook-engine.d.ts +42 -0
- package/dist/scripts/tmux-hook-engine.d.ts.map +1 -0
- package/dist/scripts/tmux-hook-engine.js +292 -0
- package/dist/scripts/tmux-hook-engine.js.map +1 -0
- package/dist/scripts/verify-native-release-assets.d.ts +3 -0
- package/dist/scripts/verify-native-release-assets.d.ts.map +1 -0
- package/dist/scripts/verify-native-release-assets.js +62 -0
- package/dist/scripts/verify-native-release-assets.js.map +1 -0
- package/dist/subagents/__tests__/tracker.test.js +3 -3
- package/dist/subagents/__tests__/tracker.test.js.map +1 -1
- package/dist/team/__tests__/model-contract.test.js +10 -3
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/runtime-cli.test.js +35 -1
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +81 -43
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +352 -1
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/state.test.js +3 -0
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +85 -4
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +26 -2
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/idle-nudge.js +1 -1
- package/dist/team/idle-nudge.js.map +1 -1
- package/dist/team/model-contract.d.ts +1 -0
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +22 -2
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +163 -31
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +136 -13
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/dispatch.d.ts +1 -0
- package/dist/team/state/dispatch.d.ts.map +1 -1
- package/dist/team/state/dispatch.js +35 -0
- package/dist/team/state/dispatch.js.map +1 -1
- package/dist/team/state/mailbox.d.ts.map +1 -1
- package/dist/team/state/mailbox.js +22 -1
- package/dist/team/state/mailbox.js.map +1 -1
- package/dist/team/state/types.d.ts +4 -0
- package/dist/team/state/types.d.ts.map +1 -1
- package/dist/team/state/types.js.map +1 -1
- package/dist/team/state.d.ts +4 -0
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +5 -0
- package/dist/team/state.js.map +1 -1
- package/dist/team/tmux-session.d.ts +1 -1
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +8 -3
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +14 -0
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +190 -5
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/utils/__tests__/agents-model-table.test.js +15 -3
- package/dist/utils/__tests__/agents-model-table.test.js.map +1 -1
- package/dist/utils/agents-model-table.d.ts.map +1 -1
- package/dist/utils/agents-model-table.js +9 -3
- package/dist/utils/agents-model-table.js.map +1 -1
- package/dist/verification/__tests__/explore-harness-release-workflow.test.js +1 -1
- package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.d.ts +2 -0
- package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.d.ts.map +1 -0
- package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.js +32 -0
- package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.js.map +1 -0
- package/package.json +13 -17
- package/prompts/vision.md +1 -1
- package/prompts/writer.md +1 -1
- package/{scripts/__tests__/smoke-packed-install.test.mjs → src/scripts/__tests__/smoke-packed-install.test.ts} +12 -11
- package/{scripts/build-explore-harness.js → src/scripts/build-explore-harness.ts} +1 -1
- package/{scripts/build-sparkshell.mjs → src/scripts/build-sparkshell.ts} +4 -2
- package/src/scripts/check-runtime-syntax.ts +63 -0
- package/src/scripts/check-version-sync.ts +50 -0
- package/{scripts/cleanup-explore-harness.js → src/scripts/cleanup-explore-harness.ts} +1 -1
- package/{scripts/eval-cli-discoverability.js → src/scripts/eval/eval-cli-discoverability.ts} +2 -2
- package/{scripts/eval-security-path-traversal.js → src/scripts/eval/eval-security-path-traversal.ts} +2 -2
- package/{scripts/fixtures/ask-advisor-stub.js → src/scripts/fixtures/ask-advisor-stub.ts} +0 -0
- package/{scripts/generate-catalog-docs.js → src/scripts/generate-catalog-docs.ts} +15 -14
- package/{scripts/generate-native-release-manifest.mjs → src/scripts/generate-native-release-manifest.ts} +57 -17
- package/{scripts/hook-derived-watcher.js → src/scripts/hook-derived-watcher.ts} +95 -44
- package/{scripts/notify-fallback-watcher.js → src/scripts/notify-fallback-watcher.ts} +129 -376
- package/{scripts/notify-hook/auto-nudge.js → src/scripts/notify-hook/auto-nudge.ts} +6 -3
- package/{scripts/notify-hook/linked-sync.js → src/scripts/notify-hook/linked-sync.ts} +2 -2
- package/{scripts/notify-hook/log.js → src/scripts/notify-hook/log.ts} +2 -2
- package/{scripts/notify-hook/operational-events.js → src/scripts/notify-hook/operational-events.ts} +17 -17
- package/{scripts/notify-hook/payload-parser.js → src/scripts/notify-hook/payload-parser.ts} +9 -9
- package/{scripts/notify-hook/process-runner.js → src/scripts/notify-hook/process-runner.ts} +5 -5
- package/{scripts/notify-hook/state-io.js → src/scripts/notify-hook/state-io.ts} +8 -8
- package/{scripts/notify-hook/team-dispatch.js → src/scripts/notify-hook/team-dispatch.ts} +46 -23
- package/{scripts/notify-hook/team-leader-nudge.js → src/scripts/notify-hook/team-leader-nudge.ts} +60 -20
- package/{scripts/notify-hook/team-tmux-guard.js → src/scripts/notify-hook/team-tmux-guard.ts} +65 -19
- package/{scripts/notify-hook/team-worker.js → src/scripts/notify-hook/team-worker.ts} +17 -13
- package/{scripts/notify-hook/tmux-injection.js → src/scripts/notify-hook/tmux-injection.ts} +18 -16
- package/{scripts/notify-hook/utils.js → src/scripts/notify-hook/utils.ts} +4 -4
- package/{scripts/notify-hook/visual-verdict.js → src/scripts/notify-hook/visual-verdict.ts} +9 -9
- package/{scripts/notify-hook.js → src/scripts/notify-hook.ts} +15 -15
- package/{scripts/run-provider-advisor.js → src/scripts/run-provider-advisor.ts} +17 -11
- package/{scripts/smoke-packed-install.mjs → src/scripts/smoke-packed-install.ts} +44 -28
- package/{scripts/sync-prompt-guidance-fragments.js → src/scripts/sync-prompt-guidance-fragments.ts} +3 -3
- package/{scripts/team-hardening-benchmark.mjs → src/scripts/team-hardening-benchmark.ts} +11 -11
- package/{scripts/test-sparkshell.mjs → src/scripts/test-sparkshell.ts} +3 -1
- package/{scripts/tmux-hook-engine.js → src/scripts/tmux-hook-engine.ts} +88 -21
- package/{scripts/verify-native-release-assets.mjs → src/scripts/verify-native-release-assets.ts} +16 -8
- package/dist/agents/__tests__/role-model-tier.test.d.ts +0 -2
- package/dist/agents/__tests__/role-model-tier.test.d.ts.map +0 -1
- package/dist/agents/__tests__/role-model-tier.test.js +0 -45
- package/dist/agents/__tests__/role-model-tier.test.js.map +0 -1
- package/dist/agents/__tests__/skill-bridge.test.d.ts +0 -2
- package/dist/agents/__tests__/skill-bridge.test.d.ts.map +0 -1
- package/dist/agents/__tests__/skill-bridge.test.js +0 -71
- package/dist/agents/__tests__/skill-bridge.test.js.map +0 -1
- package/dist/agents/model-routing.d.ts +0 -14
- package/dist/agents/model-routing.d.ts.map +0 -1
- package/dist/agents/model-routing.js +0 -34
- package/dist/agents/model-routing.js.map +0 -1
- package/dist/agents/skill-bridge.d.ts +0 -20
- package/dist/agents/skill-bridge.d.ts.map +0 -1
- package/dist/agents/skill-bridge.js +0 -150
- package/dist/agents/skill-bridge.js.map +0 -1
- package/dist/cli/__tests__/ralphthon.test.d.ts +0 -2
- package/dist/cli/__tests__/ralphthon.test.d.ts.map +0 -1
- package/dist/cli/__tests__/ralphthon.test.js +0 -28
- package/dist/cli/__tests__/ralphthon.test.js.map +0 -1
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts +0 -2
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts.map +0 -1
- package/dist/cli/__tests__/runtime-native-resolution.test.js.map +0 -1
- package/dist/cli/__tests__/runtime-native.test.d.ts +0 -2
- package/dist/cli/__tests__/runtime-native.test.d.ts.map +0 -1
- package/dist/cli/__tests__/runtime-native.test.js.map +0 -1
- package/dist/cli/ralphthon.d.ts +0 -14
- package/dist/cli/ralphthon.d.ts.map +0 -1
- package/dist/cli/ralphthon.js +0 -234
- package/dist/cli/ralphthon.js.map +0 -1
- package/dist/cli/runtime-native.d.ts +0 -23
- package/dist/cli/runtime-native.d.ts.map +0 -1
- package/dist/cli/runtime-native.js +0 -86
- package/dist/cli/runtime-native.js.map +0 -1
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts +0 -2
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts.map +0 -1
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js +0 -193
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js.map +0 -1
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts +0 -2
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts.map +0 -1
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.js.map +0 -1
- package/dist/ralphthon/__tests__/bootstrap.test.d.ts +0 -2
- package/dist/ralphthon/__tests__/bootstrap.test.d.ts.map +0 -1
- package/dist/ralphthon/__tests__/bootstrap.test.js +0 -23
- package/dist/ralphthon/__tests__/bootstrap.test.js.map +0 -1
- package/dist/ralphthon/__tests__/orchestrator.test.d.ts +0 -2
- package/dist/ralphthon/__tests__/orchestrator.test.d.ts.map +0 -1
- package/dist/ralphthon/__tests__/orchestrator.test.js +0 -309
- package/dist/ralphthon/__tests__/orchestrator.test.js.map +0 -1
- package/dist/ralphthon/__tests__/prd.test.d.ts +0 -2
- package/dist/ralphthon/__tests__/prd.test.d.ts.map +0 -1
- package/dist/ralphthon/__tests__/prd.test.js +0 -133
- package/dist/ralphthon/__tests__/prd.test.js.map +0 -1
- package/dist/ralphthon/bootstrap.d.ts +0 -3
- package/dist/ralphthon/bootstrap.d.ts.map +0 -1
- package/dist/ralphthon/bootstrap.js +0 -84
- package/dist/ralphthon/bootstrap.js.map +0 -1
- package/dist/ralphthon/orchestrator.d.ts +0 -50
- package/dist/ralphthon/orchestrator.d.ts.map +0 -1
- package/dist/ralphthon/orchestrator.js +0 -362
- package/dist/ralphthon/orchestrator.js.map +0 -1
- package/dist/ralphthon/prd.d.ts +0 -191
- package/dist/ralphthon/prd.d.ts.map +0 -1
- package/dist/ralphthon/prd.js +0 -359
- package/dist/ralphthon/prd.js.map +0 -1
- package/dist/ralphthon/runtime.d.ts +0 -31
- package/dist/ralphthon/runtime.d.ts.map +0 -1
- package/dist/ralphthon/runtime.js +0 -108
- package/dist/ralphthon/runtime.js.map +0 -1
- package/dist/ralphthon/tmux.d.ts +0 -3
- package/dist/ralphthon/tmux.d.ts.map +0 -1
- package/dist/ralphthon/tmux.js +0 -39
- package/dist/ralphthon/tmux.js.map +0 -1
- package/dist/utils/__tests__/agents-model-table-role-split.test.d.ts +0 -2
- package/dist/utils/__tests__/agents-model-table-role-split.test.d.ts.map +0 -1
- package/dist/utils/__tests__/agents-model-table-role-split.test.js +0 -19
- package/dist/utils/__tests__/agents-model-table-role-split.test.js.map +0 -1
- package/scripts/check-version-sync.mjs +0 -38
- /package/{scripts → src/scripts}/ask-claude.sh +0 -0
- /package/{scripts → src/scripts}/ask-gemini.sh +0 -0
- /package/{scripts → src/scripts}/demo-claude-workers.sh +0 -0
- /package/{scripts → src/scripts}/demo-team-e2e.sh +0 -0
- /package/{scripts → src/scripts/eval}/eval-adaptive-sort-optimization.py +0 -0
- /package/{scripts/eval-candidate-handoff.js → src/scripts/eval/eval-candidate-handoff.ts} +0 -0
- /package/{scripts/eval-fresh-run-tagging.js → src/scripts/eval/eval-fresh-run-tagging.ts} +0 -0
- /package/{scripts/eval-help-consistency.js → src/scripts/eval/eval-help-consistency.ts} +0 -0
- /package/{scripts/eval-in-action-cat-shellout-demo.js → src/scripts/eval/eval-in-action-cat-shellout-demo.ts} +0 -0
- /package/{scripts → src/scripts/eval}/eval-ml-kaggle-model-optimization.py +0 -0
- /package/{scripts → src/scripts/eval}/eval-noisy-bayesopt-highdim.py +0 -0
- /package/{scripts → src/scripts/eval}/eval-noisy-latent-subspace-discovery.py +0 -0
- /package/{scripts/eval-parity-smoke.js → src/scripts/eval/eval-parity-smoke.ts} +0 -0
- /package/{scripts/eval-parity-sweep.js → src/scripts/eval/eval-parity-sweep.ts} +0 -0
- /package/{scripts/eval-resume-dirty-guard.js → src/scripts/eval/eval-resume-dirty-guard.ts} +0 -0
- /package/{scripts → src/scripts}/run-autoresearch-showcase.sh +0 -0
package/Cargo.lock
CHANGED
|
@@ -2,10 +2,170 @@
|
|
|
2
2
|
# It is not intended for manual editing.
|
|
3
3
|
version = 4
|
|
4
4
|
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "fs2"
|
|
7
|
+
version = "0.4.3"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
|
|
10
|
+
dependencies = [
|
|
11
|
+
"libc",
|
|
12
|
+
"winapi",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[[package]]
|
|
16
|
+
name = "itoa"
|
|
17
|
+
version = "1.0.17"
|
|
18
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
19
|
+
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
|
20
|
+
|
|
21
|
+
[[package]]
|
|
22
|
+
name = "libc"
|
|
23
|
+
version = "0.2.183"
|
|
24
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
25
|
+
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
|
|
26
|
+
|
|
27
|
+
[[package]]
|
|
28
|
+
name = "memchr"
|
|
29
|
+
version = "2.8.0"
|
|
30
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
31
|
+
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
|
32
|
+
|
|
5
33
|
[[package]]
|
|
6
34
|
name = "omx-explore-harness"
|
|
7
|
-
version = "0.
|
|
35
|
+
version = "0.11.0"
|
|
36
|
+
|
|
37
|
+
[[package]]
|
|
38
|
+
name = "omx-mux"
|
|
39
|
+
version = "0.11.0"
|
|
40
|
+
dependencies = [
|
|
41
|
+
"serde",
|
|
42
|
+
"serde_json",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[[package]]
|
|
46
|
+
name = "omx-runtime"
|
|
47
|
+
version = "0.11.0"
|
|
48
|
+
dependencies = [
|
|
49
|
+
"omx-mux",
|
|
50
|
+
"omx-runtime-core",
|
|
51
|
+
"serde_json",
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
[[package]]
|
|
55
|
+
name = "omx-runtime-core"
|
|
56
|
+
version = "0.11.0"
|
|
57
|
+
dependencies = [
|
|
58
|
+
"fs2",
|
|
59
|
+
"serde",
|
|
60
|
+
"serde_json",
|
|
61
|
+
]
|
|
8
62
|
|
|
9
63
|
[[package]]
|
|
10
64
|
name = "omx-sparkshell"
|
|
11
|
-
version = "0.
|
|
65
|
+
version = "0.11.0"
|
|
66
|
+
|
|
67
|
+
[[package]]
|
|
68
|
+
name = "proc-macro2"
|
|
69
|
+
version = "1.0.106"
|
|
70
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
71
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
72
|
+
dependencies = [
|
|
73
|
+
"unicode-ident",
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
[[package]]
|
|
77
|
+
name = "quote"
|
|
78
|
+
version = "1.0.45"
|
|
79
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
80
|
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
81
|
+
dependencies = [
|
|
82
|
+
"proc-macro2",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
[[package]]
|
|
86
|
+
name = "serde"
|
|
87
|
+
version = "1.0.228"
|
|
88
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
89
|
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
|
90
|
+
dependencies = [
|
|
91
|
+
"serde_core",
|
|
92
|
+
"serde_derive",
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
[[package]]
|
|
96
|
+
name = "serde_core"
|
|
97
|
+
version = "1.0.228"
|
|
98
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
99
|
+
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
|
100
|
+
dependencies = [
|
|
101
|
+
"serde_derive",
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
[[package]]
|
|
105
|
+
name = "serde_derive"
|
|
106
|
+
version = "1.0.228"
|
|
107
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
108
|
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
|
109
|
+
dependencies = [
|
|
110
|
+
"proc-macro2",
|
|
111
|
+
"quote",
|
|
112
|
+
"syn",
|
|
113
|
+
]
|
|
114
|
+
|
|
115
|
+
[[package]]
|
|
116
|
+
name = "serde_json"
|
|
117
|
+
version = "1.0.149"
|
|
118
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
119
|
+
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
|
|
120
|
+
dependencies = [
|
|
121
|
+
"itoa",
|
|
122
|
+
"memchr",
|
|
123
|
+
"serde",
|
|
124
|
+
"serde_core",
|
|
125
|
+
"zmij",
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
[[package]]
|
|
129
|
+
name = "syn"
|
|
130
|
+
version = "2.0.117"
|
|
131
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
132
|
+
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
|
133
|
+
dependencies = [
|
|
134
|
+
"proc-macro2",
|
|
135
|
+
"quote",
|
|
136
|
+
"unicode-ident",
|
|
137
|
+
]
|
|
138
|
+
|
|
139
|
+
[[package]]
|
|
140
|
+
name = "unicode-ident"
|
|
141
|
+
version = "1.0.24"
|
|
142
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
143
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
144
|
+
|
|
145
|
+
[[package]]
|
|
146
|
+
name = "winapi"
|
|
147
|
+
version = "0.3.9"
|
|
148
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
149
|
+
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
|
150
|
+
dependencies = [
|
|
151
|
+
"winapi-i686-pc-windows-gnu",
|
|
152
|
+
"winapi-x86_64-pc-windows-gnu",
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
[[package]]
|
|
156
|
+
name = "winapi-i686-pc-windows-gnu"
|
|
157
|
+
version = "0.4.0"
|
|
158
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
159
|
+
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
|
160
|
+
|
|
161
|
+
[[package]]
|
|
162
|
+
name = "winapi-x86_64-pc-windows-gnu"
|
|
163
|
+
version = "0.4.0"
|
|
164
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
165
|
+
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
|
166
|
+
|
|
167
|
+
[[package]]
|
|
168
|
+
name = "zmij"
|
|
169
|
+
version = "1.0.21"
|
|
170
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
171
|
+
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|
package/Cargo.toml
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
[workspace]
|
|
2
|
-
members = [
|
|
2
|
+
members = [
|
|
3
|
+
"crates/omx-explore",
|
|
4
|
+
"crates/omx-mux",
|
|
5
|
+
"crates/omx-runtime-core",
|
|
6
|
+
"crates/omx-runtime",
|
|
7
|
+
"crates/omx-sparkshell",
|
|
8
|
+
]
|
|
3
9
|
resolver = "2"
|
|
4
10
|
|
|
5
11
|
[workspace.package]
|
|
6
|
-
version = "0.
|
|
12
|
+
version = "0.11.0"
|
|
7
13
|
edition = "2021"
|
|
8
14
|
license = "MIT"
|
|
9
15
|
repository = "https://github.com/Yeachan-Heo/oh-my-codex"
|
package/README.md
CHANGED
|
@@ -112,6 +112,7 @@ omx team 3:executor "ship the scoped task with verification"
|
|
|
112
112
|
OMX treats default model selection as a small explicit contract:
|
|
113
113
|
|
|
114
114
|
- `OMX_DEFAULT_FRONTIER_MODEL` — canonical frontier/default leader model
|
|
115
|
+
- `OMX_DEFAULT_STANDARD_MODEL` — canonical standard subagent model
|
|
115
116
|
- `OMX_DEFAULT_SPARK_MODEL` — canonical spark / low-complexity worker model
|
|
116
117
|
|
|
117
118
|
If upstream defaults change, update the single canonical source instead of scattering model literals across prompts/docs/runtime.
|
|
@@ -122,6 +123,7 @@ For local-model setups, you can persist overrides in `~/.codex/.omx-config.json`
|
|
|
122
123
|
{
|
|
123
124
|
"env": {
|
|
124
125
|
"OMX_DEFAULT_FRONTIER_MODEL": "your-frontier-model",
|
|
126
|
+
"OMX_DEFAULT_STANDARD_MODEL": "your-standard-model",
|
|
125
127
|
"OMX_DEFAULT_SPARK_MODEL": "your-spark-model"
|
|
126
128
|
}
|
|
127
129
|
}
|
|
@@ -133,7 +135,7 @@ Resolution order:
|
|
|
133
135
|
2. `.omx-config.json` `env` overrides
|
|
134
136
|
3. OMX built-in canonical defaults
|
|
135
137
|
|
|
136
|
-
The same config-driven env overrides are forwarded when OMX launches native helpers such as `omx sparkshell`, so local-model routing stays consistent.
|
|
138
|
+
The same config-driven env overrides are forwarded when OMX launches native helpers such as `omx sparkshell`, so local-model routing stays consistent. By default OMX ships a three-lane split: frontier roles on `gpt-5.4`, standard subagents on `gpt-5.4-mini`, and spark/fast roles on `gpt-5.3-codex-spark`.
|
|
137
139
|
|
|
138
140
|
Recommended trusted-environment launch profile:
|
|
139
141
|
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
mod tmux;
|
|
2
|
+
mod types;
|
|
3
|
+
|
|
4
|
+
pub use tmux::TmuxAdapter;
|
|
5
|
+
pub use types::*;
|
|
6
|
+
|
|
7
|
+
pub fn canonical_contract_summary() -> String {
|
|
8
|
+
format!(
|
|
9
|
+
"mux-operations={operations}\nmux-target-kinds={target_kinds}\nsubmit-policy={submit_policy}\nreadiness={readiness}\nconfirmation={confirmation}\nadapter=tmux",
|
|
10
|
+
operations = MUX_OPERATION_NAMES.join(", "),
|
|
11
|
+
target_kinds = MUX_TARGET_KINDS.join(", "),
|
|
12
|
+
submit_policy = SubmitPolicy::enter(2, 100),
|
|
13
|
+
readiness = PaneReadinessReason::Ok,
|
|
14
|
+
confirmation = DeliveryConfirmation::Confirmed,
|
|
15
|
+
)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
#[cfg(test)]
|
|
19
|
+
mod tests {
|
|
20
|
+
use super::*;
|
|
21
|
+
|
|
22
|
+
#[test]
|
|
23
|
+
fn canonical_contract_names_remain_generic() {
|
|
24
|
+
assert_eq!(
|
|
25
|
+
MUX_OPERATION_NAMES,
|
|
26
|
+
&[
|
|
27
|
+
"resolve-target",
|
|
28
|
+
"send-input",
|
|
29
|
+
"capture-tail",
|
|
30
|
+
"inspect-liveness",
|
|
31
|
+
"attach",
|
|
32
|
+
"detach",
|
|
33
|
+
]
|
|
34
|
+
);
|
|
35
|
+
assert_eq!(MUX_TARGET_KINDS, &["delivery-handle", "detached"]);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#[test]
|
|
39
|
+
fn input_envelope_normalizes_literal_text_for_typed_send() {
|
|
40
|
+
let envelope = InputEnvelope::new("hello\nbridge", SubmitPolicy::enter(2, 100));
|
|
41
|
+
assert_eq!(envelope.normalized_text(), "hello bridge");
|
|
42
|
+
assert_eq!(envelope.submit.presses(), 2);
|
|
43
|
+
assert_eq!(
|
|
44
|
+
format!("{}", envelope.submit),
|
|
45
|
+
"enter(presses=2, delay_ms=100)"
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
#[test]
|
|
50
|
+
fn confirmation_policy_defaults_match_notify_hook_expectations() {
|
|
51
|
+
let policy = ConfirmationPolicy::default();
|
|
52
|
+
assert_eq!(policy.narrow_capture_lines, 8);
|
|
53
|
+
assert_eq!(policy.wide_capture_lines, 80);
|
|
54
|
+
assert_eq!(policy.verify_delay_ms, 250);
|
|
55
|
+
assert_eq!(policy.verify_rounds, 3);
|
|
56
|
+
assert!(policy.allow_active_task_confirmation);
|
|
57
|
+
assert!(policy.require_ready_for_worker_targets);
|
|
58
|
+
assert_eq!(policy.non_empty_tail_lines, 24);
|
|
59
|
+
assert!(policy.retry_submit_without_retyping);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#[test]
|
|
63
|
+
fn serde_roundtrip_mux_operation() {
|
|
64
|
+
let op = MuxOperation::SendInput {
|
|
65
|
+
target: MuxTarget::DeliveryHandle("sess:0.1".into()),
|
|
66
|
+
envelope: InputEnvelope::new("test", SubmitPolicy::enter(1, 50)),
|
|
67
|
+
};
|
|
68
|
+
let json = serde_json::to_string(&op).expect("serialize");
|
|
69
|
+
let deserialized: MuxOperation = serde_json::from_str(&json).expect("deserialize");
|
|
70
|
+
assert_eq!(format!("{deserialized:?}"), format!("{op:?}"));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#[test]
|
|
74
|
+
fn serde_roundtrip_mux_outcome() {
|
|
75
|
+
let outcome = MuxOutcome::TailCaptured {
|
|
76
|
+
visible_lines: 80,
|
|
77
|
+
body: "hello".into(),
|
|
78
|
+
};
|
|
79
|
+
let json = serde_json::to_string(&outcome).expect("serialize");
|
|
80
|
+
let deserialized: MuxOutcome = serde_json::from_str(&json).expect("deserialize");
|
|
81
|
+
assert_eq!(deserialized, outcome);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#[test]
|
|
85
|
+
fn serde_roundtrip_mux_error() {
|
|
86
|
+
let err = MuxError::InvalidTarget("bad".into());
|
|
87
|
+
let json = serde_json::to_string(&err).expect("serialize");
|
|
88
|
+
let deserialized: MuxError = serde_json::from_str(&json).expect("deserialize");
|
|
89
|
+
assert_eq!(deserialized, err);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
use std::process::Command;
|
|
2
|
+
use std::thread;
|
|
3
|
+
use std::time::Duration;
|
|
4
|
+
|
|
5
|
+
use crate::types::{MuxAdapter, MuxError, MuxOperation, MuxOutcome, MuxTarget, SubmitPolicy};
|
|
6
|
+
|
|
7
|
+
/// Run a tmux command with the given arguments. Returns stdout on success.
|
|
8
|
+
fn run_tmux(args: &[&str]) -> Result<String, MuxError> {
|
|
9
|
+
let output = Command::new("tmux")
|
|
10
|
+
.args(args)
|
|
11
|
+
.output()
|
|
12
|
+
.map_err(|e| MuxError::AdapterFailed(format!("failed to run tmux: {e}")))?;
|
|
13
|
+
|
|
14
|
+
if output.status.success() {
|
|
15
|
+
String::from_utf8(output.stdout)
|
|
16
|
+
.map_err(|e| MuxError::AdapterFailed(format!("invalid utf-8 from tmux: {e}")))
|
|
17
|
+
} else {
|
|
18
|
+
let stderr = String::from_utf8_lossy(&output.stderr);
|
|
19
|
+
Err(MuxError::AdapterFailed(format!(
|
|
20
|
+
"tmux {} failed: {}",
|
|
21
|
+
args.first().unwrap_or(&""),
|
|
22
|
+
stderr.trim()
|
|
23
|
+
)))
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/// Extract a tmux target string from a `MuxTarget`.
|
|
28
|
+
fn resolve_target_handle(target: &MuxTarget) -> Result<String, MuxError> {
|
|
29
|
+
match target {
|
|
30
|
+
MuxTarget::DeliveryHandle(handle) => {
|
|
31
|
+
if handle.is_empty() {
|
|
32
|
+
Err(MuxError::InvalidTarget("empty delivery handle".into()))
|
|
33
|
+
} else {
|
|
34
|
+
Ok(handle.clone())
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
MuxTarget::Detached => Err(MuxError::InvalidTarget(
|
|
38
|
+
"cannot operate on a detached target".into(),
|
|
39
|
+
)),
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/// Extract the session name portion from a tmux target string (e.g. "mysess:0.1" -> "mysess").
|
|
44
|
+
fn session_from_handle(handle: &str) -> &str {
|
|
45
|
+
handle.split(':').next().unwrap_or(handle)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/// Build the argument list for `tmux send-keys` with literal text.
|
|
49
|
+
pub(crate) fn build_send_keys_args<'a>(target: &'a str, text: &'a str) -> Vec<&'a str> {
|
|
50
|
+
vec!["send-keys", "-t", target, "-l", text]
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/// Build the argument list for `tmux send-keys` enter press.
|
|
54
|
+
pub(crate) fn build_enter_key_args(target: &str) -> Vec<String> {
|
|
55
|
+
vec!["send-keys".into(), "-t".into(), target.into(), "C-m".into()]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/// Build the argument list for `tmux capture-pane`.
|
|
59
|
+
pub(crate) fn build_capture_pane_args(target: &str, visible_lines: usize) -> Vec<String> {
|
|
60
|
+
vec![
|
|
61
|
+
"capture-pane".into(),
|
|
62
|
+
"-t".into(),
|
|
63
|
+
target.into(),
|
|
64
|
+
"-p".into(),
|
|
65
|
+
"-S".into(),
|
|
66
|
+
format!("-{visible_lines}"),
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#[derive(Debug, Clone, Copy, Default)]
|
|
71
|
+
pub struct TmuxAdapter;
|
|
72
|
+
|
|
73
|
+
impl TmuxAdapter {
|
|
74
|
+
pub fn new() -> Self {
|
|
75
|
+
Self
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
pub fn status(&self) -> &'static str {
|
|
79
|
+
"tmux adapter ready"
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
fn do_resolve_target(&self, target: &MuxTarget) -> Result<MuxOutcome, MuxError> {
|
|
83
|
+
let handle = resolve_target_handle(target)?;
|
|
84
|
+
|
|
85
|
+
// Verify the target exists by listing all panes
|
|
86
|
+
let pane_list = run_tmux(&[
|
|
87
|
+
"list-panes",
|
|
88
|
+
"-a",
|
|
89
|
+
"-F",
|
|
90
|
+
"#{session_name}:#{window_index}.#{pane_index}",
|
|
91
|
+
])?;
|
|
92
|
+
|
|
93
|
+
let found = pane_list.lines().any(|line| line.trim() == handle);
|
|
94
|
+
if found {
|
|
95
|
+
Ok(MuxOutcome::TargetResolved {
|
|
96
|
+
resolved_handle: handle,
|
|
97
|
+
})
|
|
98
|
+
} else {
|
|
99
|
+
Err(MuxError::InvalidTarget(format!("pane not found: {handle}")))
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
fn do_send_input(
|
|
104
|
+
&self,
|
|
105
|
+
target: &MuxTarget,
|
|
106
|
+
envelope: &crate::types::InputEnvelope,
|
|
107
|
+
) -> Result<MuxOutcome, MuxError> {
|
|
108
|
+
let handle = resolve_target_handle(target)?;
|
|
109
|
+
let text = envelope.normalized_text();
|
|
110
|
+
|
|
111
|
+
// Send the literal text
|
|
112
|
+
let args = build_send_keys_args(&handle, &text);
|
|
113
|
+
run_tmux(&args)?;
|
|
114
|
+
|
|
115
|
+
// Send enter presses per submit policy
|
|
116
|
+
if let SubmitPolicy::Enter { presses, delay_ms } = &envelope.submit {
|
|
117
|
+
for i in 0..*presses {
|
|
118
|
+
if i > 0 && *delay_ms > 0 {
|
|
119
|
+
thread::sleep(Duration::from_millis(*delay_ms));
|
|
120
|
+
}
|
|
121
|
+
let enter_args = build_enter_key_args(&handle);
|
|
122
|
+
let str_args: Vec<&str> = enter_args.iter().map(|s| s.as_str()).collect();
|
|
123
|
+
run_tmux(&str_args)?;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
Ok(MuxOutcome::InputAccepted {
|
|
128
|
+
bytes_written: text.len(),
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
fn do_capture_tail(
|
|
133
|
+
&self,
|
|
134
|
+
target: &MuxTarget,
|
|
135
|
+
visible_lines: usize,
|
|
136
|
+
) -> Result<MuxOutcome, MuxError> {
|
|
137
|
+
let handle = resolve_target_handle(target)?;
|
|
138
|
+
let args = build_capture_pane_args(&handle, visible_lines);
|
|
139
|
+
let str_args: Vec<&str> = args.iter().map(|s| s.as_str()).collect();
|
|
140
|
+
let body = run_tmux(&str_args)?;
|
|
141
|
+
|
|
142
|
+
Ok(MuxOutcome::TailCaptured {
|
|
143
|
+
visible_lines,
|
|
144
|
+
body,
|
|
145
|
+
})
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
fn do_inspect_liveness(&self, target: &MuxTarget) -> Result<MuxOutcome, MuxError> {
|
|
149
|
+
let handle = resolve_target_handle(target)?;
|
|
150
|
+
let session = session_from_handle(&handle);
|
|
151
|
+
|
|
152
|
+
let output = Command::new("tmux")
|
|
153
|
+
.args(["has-session", "-t", session])
|
|
154
|
+
.output()
|
|
155
|
+
.map_err(|e| MuxError::AdapterFailed(format!("failed to run tmux: {e}")))?;
|
|
156
|
+
|
|
157
|
+
Ok(MuxOutcome::LivenessChecked {
|
|
158
|
+
alive: output.status.success(),
|
|
159
|
+
})
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
fn do_attach(&self, target: &MuxTarget) -> Result<MuxOutcome, MuxError> {
|
|
163
|
+
let handle = resolve_target_handle(target)?;
|
|
164
|
+
run_tmux(&["attach-session", "-t", &handle])?;
|
|
165
|
+
Ok(MuxOutcome::Attached { handle })
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
fn do_detach(&self, target: &MuxTarget) -> Result<MuxOutcome, MuxError> {
|
|
169
|
+
let handle = resolve_target_handle(target)?;
|
|
170
|
+
run_tmux(&["detach-client", "-t", &handle])?;
|
|
171
|
+
Ok(MuxOutcome::Detached { handle })
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
impl MuxAdapter for TmuxAdapter {
|
|
176
|
+
fn adapter_name(&self) -> &'static str {
|
|
177
|
+
"tmux"
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
fn execute(&self, operation: &MuxOperation) -> Result<MuxOutcome, MuxError> {
|
|
181
|
+
match operation {
|
|
182
|
+
MuxOperation::ResolveTarget { target } => self.do_resolve_target(target),
|
|
183
|
+
MuxOperation::SendInput { target, envelope } => self.do_send_input(target, envelope),
|
|
184
|
+
MuxOperation::CaptureTail {
|
|
185
|
+
target,
|
|
186
|
+
visible_lines,
|
|
187
|
+
} => self.do_capture_tail(target, *visible_lines),
|
|
188
|
+
MuxOperation::InspectLiveness { target } => self.do_inspect_liveness(target),
|
|
189
|
+
MuxOperation::Attach { target } => self.do_attach(target),
|
|
190
|
+
MuxOperation::Detach { target } => self.do_detach(target),
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
#[cfg(test)]
|
|
196
|
+
mod tests {
|
|
197
|
+
use super::*;
|
|
198
|
+
use crate::types::{InputEnvelope, SubmitPolicy};
|
|
199
|
+
|
|
200
|
+
#[test]
|
|
201
|
+
fn resolve_target_handle_rejects_empty() {
|
|
202
|
+
let err = resolve_target_handle(&MuxTarget::DeliveryHandle(String::new()))
|
|
203
|
+
.expect_err("should reject empty");
|
|
204
|
+
assert!(matches!(err, MuxError::InvalidTarget(_)));
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
#[test]
|
|
208
|
+
fn resolve_target_handle_rejects_detached() {
|
|
209
|
+
let err = resolve_target_handle(&MuxTarget::Detached).expect_err("should reject detached");
|
|
210
|
+
assert!(matches!(err, MuxError::InvalidTarget(_)));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
#[test]
|
|
214
|
+
fn resolve_target_handle_accepts_valid() {
|
|
215
|
+
let handle = resolve_target_handle(&MuxTarget::DeliveryHandle("sess:0.1".into()))
|
|
216
|
+
.expect("should accept valid handle");
|
|
217
|
+
assert_eq!(handle, "sess:0.1");
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
#[test]
|
|
221
|
+
fn session_from_handle_extracts_session() {
|
|
222
|
+
assert_eq!(session_from_handle("mysess:0.1"), "mysess");
|
|
223
|
+
assert_eq!(session_from_handle("plain"), "plain");
|
|
224
|
+
assert_eq!(session_from_handle("a:b:c"), "a");
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
#[test]
|
|
228
|
+
fn build_send_keys_args_constructs_correct_args() {
|
|
229
|
+
let args = build_send_keys_args("sess:0.1", "hello world");
|
|
230
|
+
assert_eq!(
|
|
231
|
+
args,
|
|
232
|
+
vec!["send-keys", "-t", "sess:0.1", "-l", "hello world"]
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
#[test]
|
|
237
|
+
fn build_enter_key_args_constructs_correct_args() {
|
|
238
|
+
let args = build_enter_key_args("sess:0.1");
|
|
239
|
+
assert_eq!(args, vec!["send-keys", "-t", "sess:0.1", "C-m"]);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
#[test]
|
|
243
|
+
fn build_capture_pane_args_constructs_correct_args() {
|
|
244
|
+
let args = build_capture_pane_args("sess:0.1", 80);
|
|
245
|
+
assert_eq!(
|
|
246
|
+
args,
|
|
247
|
+
vec!["capture-pane", "-t", "sess:0.1", "-p", "-S", "-80"]
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
#[test]
|
|
252
|
+
fn send_keys_uses_normalized_text() {
|
|
253
|
+
let envelope = InputEnvelope::new("line1\nline2", SubmitPolicy::None);
|
|
254
|
+
let text = envelope.normalized_text();
|
|
255
|
+
assert_eq!(text, "line1 line2");
|
|
256
|
+
let args = build_send_keys_args("t:0.0", &text);
|
|
257
|
+
assert_eq!(args[4], "line1 line2");
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
#[test]
|
|
261
|
+
fn adapter_name_is_tmux() {
|
|
262
|
+
let adapter = TmuxAdapter::new();
|
|
263
|
+
assert_eq!(adapter.adapter_name(), "tmux");
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
#[test]
|
|
267
|
+
fn status_reports_ready() {
|
|
268
|
+
let adapter = TmuxAdapter::new();
|
|
269
|
+
assert_eq!(adapter.status(), "tmux adapter ready");
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
#[test]
|
|
273
|
+
fn execute_rejects_detached_target() {
|
|
274
|
+
let adapter = TmuxAdapter::new();
|
|
275
|
+
let result = adapter.execute(&MuxOperation::ResolveTarget {
|
|
276
|
+
target: MuxTarget::Detached,
|
|
277
|
+
});
|
|
278
|
+
assert!(result.is_err());
|
|
279
|
+
let err = result.unwrap_err();
|
|
280
|
+
assert!(matches!(err, MuxError::InvalidTarget(_)));
|
|
281
|
+
}
|
|
282
|
+
}
|