oh-my-codex 0.20.1 → 0.20.3
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 +7 -6
- package/Cargo.toml +1 -1
- package/README.md +36 -1
- package/crates/omx-runtime/Cargo.toml +1 -0
- package/crates/omx-runtime/src/main.rs +25 -2
- package/crates/omx-runtime/tests/execution.rs +219 -0
- package/crates/omx-runtime-core/src/dispatch.rs +96 -10
- package/crates/omx-runtime-core/src/engine.rs +839 -29
- package/crates/omx-runtime-core/src/lib.rs +8 -0
- package/dist/adapt/__tests__/hermes.test.js.map +1 -1
- package/dist/adapt/contracts.d.ts.map +1 -1
- package/dist/agents/__tests__/definitions.test.js +81 -0
- package/dist/agents/__tests__/definitions.test.js.map +1 -1
- package/dist/agents/__tests__/native-config.test.js +25 -0
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/native-config.d.ts +2 -1
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js.map +1 -1
- package/dist/auth/__tests__/hotswap.test.d.ts +2 -0
- package/dist/auth/__tests__/hotswap.test.d.ts.map +1 -0
- package/dist/auth/__tests__/hotswap.test.js +183 -0
- package/dist/auth/__tests__/hotswap.test.js.map +1 -0
- package/dist/auth/hotswap.d.ts +6 -0
- package/dist/auth/hotswap.d.ts.map +1 -1
- package/dist/auth/hotswap.js +102 -19
- package/dist/auth/hotswap.js.map +1 -1
- package/dist/auth/paths.js.map +1 -1
- package/dist/auth/storage.js.map +1 -1
- package/dist/autopilot/__tests__/ralplan-gate.test.js +5 -5
- package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -1
- package/dist/autopilot/completion-gate.js.map +1 -1
- package/dist/autopilot/fsm.d.ts +1 -1
- package/dist/autopilot/fsm.d.ts.map +1 -1
- package/dist/autoresearch/goal.js.map +1 -1
- package/dist/autoresearch/runtime.js.map +1 -1
- package/dist/capabilities/lockfile.js.map +1 -1
- package/dist/catalog/reader.js.map +1 -1
- package/dist/catalog/skill-mirror.js.map +1 -1
- package/dist/cli/__tests__/adapt-help.test.js.map +1 -1
- package/dist/cli/__tests__/agents-init.test.js.map +1 -1
- package/dist/cli/__tests__/agents.test.js.map +1 -1
- package/dist/cli/__tests__/api.test.js.map +1 -1
- package/dist/cli/__tests__/ask.test.js.map +1 -1
- package/dist/cli/__tests__/auth.test.js +60 -6
- package/dist/cli/__tests__/auth.test.js.map +1 -1
- package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
- package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
- package/dist/cli/__tests__/capabilities.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +80 -0
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-context-window-warning.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-invalid-config.test.js +47 -4
- package/dist/cli/__tests__/doctor-invalid-config.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-team.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +752 -15
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/exec.test.js +136 -0
- package/dist/cli/__tests__/exec.test.js.map +1 -1
- package/dist/cli/__tests__/imagegen-continuation.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +473 -14
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +336 -4
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-parity.test.js +87 -12
- package/dist/cli/__tests__/mcp-parity.test.js.map +1 -1
- package/dist/cli/__tests__/native-hook-claim-journal.test.d.ts +2 -0
- package/dist/cli/__tests__/native-hook-claim-journal.test.d.ts.map +1 -0
- package/dist/cli/__tests__/native-hook-claim-journal.test.js +206 -0
- package/dist/cli/__tests__/native-hook-claim-journal.test.js.map +1 -0
- package/dist/cli/__tests__/nested-help-routing.test.js.map +1 -1
- package/dist/cli/__tests__/question.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-deslop-contract.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js +6 -0
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-prd-smoke.test.js.map +1 -1
- package/dist/cli/__tests__/ralph.test.js +8 -3
- package/dist/cli/__tests__/ralph.test.js.map +1 -1
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.d.ts +2 -0
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.js +72 -0
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.js.map +1 -0
- package/dist/cli/__tests__/ralplan.test.d.ts +2 -0
- package/dist/cli/__tests__/ralplan.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralplan.test.js +55 -0
- package/dist/cli/__tests__/ralplan.test.js.map +1 -0
- package/dist/cli/__tests__/resume.test.js +17 -11
- package/dist/cli/__tests__/resume.test.js.map +1 -1
- package/dist/cli/__tests__/session-scoped-runtime.test.js +25 -0
- package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
- package/dist/cli/__tests__/session-search-help.test.js +25 -1
- package/dist/cli/__tests__/session-search-help.test.js.map +1 -1
- package/dist/cli/__tests__/session-search.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +79 -0
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-gh-star.test.js.map +1 -1
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js +77 -3
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js.map +1 -1
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.js +285 -0
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.js.map +1 -0
- package/dist/cli/__tests__/setup-install-mode.test.js +2579 -294
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/setup-preferences.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-preferences.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-preferences.test.js +79 -0
- package/dist/cli/__tests__/setup-preferences.test.js.map +1 -0
- package/dist/cli/__tests__/setup-refresh.test.js +33 -2
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +46 -3
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/state.test.js +37 -0
- package/dist/cli/__tests__/state.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +105 -7
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/ultragoal.test.js +61 -1
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +1817 -24
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/__tests__/update.test.js +58 -0
- package/dist/cli/__tests__/update.test.js.map +1 -1
- package/dist/cli/__tests__/url.test.js.map +1 -1
- package/dist/cli/__tests__/windows-popup-loop-contract.test.js +2 -1
- package/dist/cli/__tests__/windows-popup-loop-contract.test.js.map +1 -1
- package/dist/cli/adapt.js.map +1 -1
- package/dist/cli/agents-init.js.map +1 -1
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/api.js.map +1 -1
- package/dist/cli/ask.d.ts +1 -1
- package/dist/cli/ask.d.ts.map +1 -1
- package/dist/cli/ask.js.map +1 -1
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/autoresearch-guided.js.map +1 -1
- package/dist/cli/autoresearch-intake.js.map +1 -1
- package/dist/cli/capabilities.js.map +1 -1
- package/dist/cli/cleanup.js.map +1 -1
- package/dist/cli/codex-feature-probe.js.map +1 -1
- package/dist/cli/codex-home.js.map +1 -1
- package/dist/cli/doctor.d.ts +21 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +607 -130
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/explore.js.map +1 -1
- package/dist/cli/index.d.ts +14 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +245 -57
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-parity.js +2 -2
- package/dist/cli/mcp-parity.js.map +1 -1
- package/dist/cli/mcp-serve.js.map +1 -1
- package/dist/cli/mission.js.map +1 -1
- package/dist/cli/native-assets.js.map +1 -1
- package/dist/cli/native-hook-claim-journal.d.ts +29 -0
- package/dist/cli/native-hook-claim-journal.d.ts.map +1 -0
- package/dist/cli/native-hook-claim-journal.js +252 -0
- package/dist/cli/native-hook-claim-journal.js.map +1 -0
- package/dist/cli/omx.js.map +1 -1
- package/dist/cli/plugin-marketplace.js.map +1 -1
- package/dist/cli/project-runtime-codex-homes.js.map +1 -1
- package/dist/cli/question.js.map +1 -1
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +3 -2
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/ralplan.d.ts +10 -0
- package/dist/cli/ralplan.d.ts.map +1 -0
- package/dist/cli/ralplan.js +110 -0
- package/dist/cli/ralplan.js.map +1 -0
- package/dist/cli/session-search.d.ts +5 -0
- package/dist/cli/session-search.d.ts.map +1 -1
- package/dist/cli/session-search.js +87 -0
- package/dist/cli/session-search.js.map +1 -1
- package/dist/cli/setup-preferences.d.ts +11 -0
- package/dist/cli/setup-preferences.d.ts.map +1 -1
- package/dist/cli/setup-preferences.js +32 -0
- package/dist/cli/setup-preferences.js.map +1 -1
- package/dist/cli/setup.d.ts +58 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +1450 -398
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/sparkshell.js.map +1 -1
- package/dist/cli/star-prompt.js.map +1 -1
- package/dist/cli/state.d.ts.map +1 -1
- package/dist/cli/state.js +2 -1
- package/dist/cli/state.js.map +1 -1
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/ultragoal.d.ts +5 -1
- package/dist/cli/ultragoal.d.ts.map +1 -1
- package/dist/cli/ultragoal.js +34 -2
- package/dist/cli/ultragoal.js.map +1 -1
- package/dist/cli/uninstall.d.ts +17 -0
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +986 -95
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +8 -1
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/url.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/compat/__tests__/rust-runtime-compat.test.js +1 -1
- package/dist/compat/__tests__/rust-runtime-compat.test.js.map +1 -1
- package/dist/config/__tests__/codex-hooks.test.js +1287 -11
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +1179 -32
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +6 -1
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/__tests__/models.test.js +67 -3
- package/dist/config/__tests__/models.test.js.map +1 -1
- package/dist/config/codex-feature-flags.d.ts.map +1 -1
- package/dist/config/codex-feature-flags.js.map +1 -1
- package/dist/config/codex-hooks.d.ts +124 -1
- package/dist/config/codex-hooks.d.ts.map +1 -1
- package/dist/config/codex-hooks.js +2142 -265
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/config/commit-lore-guard.js.map +1 -1
- package/dist/config/generator.d.ts +23 -34
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +1480 -246
- package/dist/config/generator.js.map +1 -1
- package/dist/config/mcp-registry.js.map +1 -1
- package/dist/config/models.d.ts +14 -4
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +15 -1
- package/dist/config/models.js.map +1 -1
- package/dist/config/omx-first-party-mcp.js.map +1 -1
- package/dist/config/team-mode.d.ts.map +1 -1
- package/dist/document-refresh/__tests__/enforcer.test.js.map +1 -1
- package/dist/document-refresh/enforcer.js.map +1 -1
- package/dist/exec/followup.js.map +1 -1
- package/dist/goal-workflows/artifacts.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +7 -4
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/analyze-routing-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/analyze-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +9 -3
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/design-skill.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +1376 -6
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +252 -543
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +38 -4
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +765 -10
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +2 -0
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js +142 -1
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-modules.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-non-omx-guard.test.js +48 -2
- package/dist/hooks/__tests__/notify-hook-non-omx-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js +61 -44
- package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.js +3 -2
- package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js +243 -4
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +531 -12
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +163 -24
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js +482 -32
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +68 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js +7 -1
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-visual-verdict.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +43 -4
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/openclaw-setup-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/pre-context-gate-skills.test.js.map +1 -1
- package/dist/hooks/__tests__/prometheus-strict-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-guidance-fragments.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-guidance-test-helpers.js.map +1 -1
- package/dist/hooks/__tests__/prompt-session-provenance.test.d.ts +2 -0
- package/dist/hooks/__tests__/prompt-session-provenance.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/prompt-session-provenance.test.js +82 -0
- package/dist/hooks/__tests__/prompt-session-provenance.test.js.map +1 -0
- package/dist/hooks/__tests__/session.test.js +878 -11
- package/dist/hooks/__tests__/session.test.js.map +1 -1
- package/dist/hooks/__tests__/skill-catalog-hygiene.test.js.map +1 -1
- package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/visual-ralph-skill.test.js.map +1 -1
- package/dist/hooks/__tests__/visual-verdict-loop.test.js.map +1 -1
- package/dist/hooks/agents-overlay.js +5 -5
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hooks/code-simplifier/index.js.map +1 -1
- package/dist/hooks/explore-routing.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js.map +1 -1
- package/dist/hooks/extensibility/events.js.map +1 -1
- package/dist/hooks/extensibility/loader.js.map +1 -1
- package/dist/hooks/extensibility/plugin-runner-stdin.js.map +1 -1
- package/dist/hooks/extensibility/sdk/logging.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts +33 -7
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +2228 -119
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/keyword-registry.d.ts +12 -0
- package/dist/hooks/keyword-registry.d.ts.map +1 -1
- package/dist/hooks/keyword-registry.js +41 -0
- package/dist/hooks/keyword-registry.js.map +1 -1
- package/dist/hooks/prompt-session-provenance.d.ts +87 -0
- package/dist/hooks/prompt-session-provenance.d.ts.map +1 -0
- package/dist/hooks/prompt-session-provenance.js +180 -0
- package/dist/hooks/prompt-session-provenance.js.map +1 -0
- package/dist/hooks/session.d.ts +163 -34
- package/dist/hooks/session.d.ts.map +1 -1
- package/dist/hooks/session.js +1395 -317
- package/dist/hooks/session.js.map +1 -1
- package/dist/hooks/task-size-detector.js.map +1 -1
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/authority.js.map +1 -1
- package/dist/hud/constants.js.map +1 -1
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/reconcile.js.map +1 -1
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/tmux.js.map +1 -1
- package/dist/leader/__tests__/contract.test.js +153 -1
- package/dist/leader/__tests__/contract.test.js.map +1 -1
- package/dist/leader/contract.d.ts +42 -5
- package/dist/leader/contract.d.ts.map +1 -1
- package/dist/leader/contract.js +184 -3
- package/dist/leader/contract.js.map +1 -1
- package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
- package/dist/mcp/__tests__/code-intel-server.test.js +31 -3
- package/dist/mcp/__tests__/code-intel-server.test.js.map +1 -1
- package/dist/mcp/__tests__/server-lifecycle.test.js +15 -2
- package/dist/mcp/__tests__/server-lifecycle.test.js.map +1 -1
- package/dist/mcp/__tests__/state-paths.test.js +98 -1
- package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
- package/dist/mcp/__tests__/wiki-server.test.js +18 -0
- package/dist/mcp/__tests__/wiki-server.test.js.map +1 -1
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/code-intel-server.d.ts +58 -58
- package/dist/mcp/code-intel-server.d.ts.map +1 -1
- package/dist/mcp/code-intel-server.js +13 -3
- package/dist/mcp/code-intel-server.js.map +1 -1
- package/dist/mcp/hermes-bridge.js.map +1 -1
- package/dist/mcp/hermes-server.d.ts +70 -70
- package/dist/mcp/hermes-server.d.ts.map +1 -1
- package/dist/mcp/lifecycle-telemetry.js.map +1 -1
- package/dist/mcp/memory-server.d.ts +34 -34
- package/dist/mcp/memory-server.d.ts.map +1 -1
- package/dist/mcp/memory-server.js.map +1 -1
- package/dist/mcp/state-paths.d.ts +14 -0
- package/dist/mcp/state-paths.d.ts.map +1 -1
- package/dist/mcp/state-paths.js +96 -20
- package/dist/mcp/state-paths.js.map +1 -1
- package/dist/mcp/state-server.d.ts +47 -47
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/mcp/trace-server.d.ts +4 -4
- package/dist/mcp/trace-server.d.ts.map +1 -1
- package/dist/mcp/trace-server.js.map +1 -1
- package/dist/mcp/wiki-server.d.ts +34 -23
- package/dist/mcp/wiki-server.d.ts.map +1 -1
- package/dist/mcp/wiki-server.js +9 -2
- package/dist/mcp/wiki-server.js.map +1 -1
- package/dist/modes/__tests__/base-session-scope.test.js +53 -1
- package/dist/modes/__tests__/base-session-scope.test.js.map +1 -1
- package/dist/modes/__tests__/base-tmux-pane.test.js +4 -4
- package/dist/modes/__tests__/base-tmux-pane.test.js.map +1 -1
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +5 -5
- package/dist/modes/base.js.map +1 -1
- package/dist/notifications/__tests__/lifecycle-dedupe.test.js.map +1 -1
- package/dist/notifications/__tests__/reply-listener.test.js.map +1 -1
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js +177 -85
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js.map +1 -1
- package/dist/notifications/__tests__/session-registry.test.js.map +1 -1
- package/dist/notifications/__tests__/template-engine.test.js.map +1 -1
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -1
- package/dist/notifications/http-client.js.map +1 -1
- package/dist/notifications/index.d.ts +4 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +3 -9
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/lifecycle-dedupe.js.map +1 -1
- package/dist/notifications/reply-listener.d.ts.map +1 -1
- package/dist/notifications/reply-listener.js.map +1 -1
- package/dist/notifications/session-registry.js.map +1 -1
- package/dist/notifications/session-status.js.map +1 -1
- package/dist/notifications/temp-contract.d.ts.map +1 -1
- package/dist/notifications/temp-contract.js +4 -0
- package/dist/notifications/temp-contract.js.map +1 -1
- package/dist/notifications/tmux-detector.js.map +1 -1
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/openclaw/config.js.map +1 -1
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/pipeline/__tests__/orchestrator.test.js +4 -4
- package/dist/pipeline/__tests__/orchestrator.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +16 -13
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/stages/code-review.js.map +1 -1
- package/dist/pipeline/stages/ralph-verify.js.map +1 -1
- package/dist/pipeline/stages/ralplan.js.map +1 -1
- package/dist/pipeline/stages/team-exec.js.map +1 -1
- package/dist/pipeline/stages/ultragoal.js.map +1 -1
- package/dist/pipeline/stages/ultraqa.js.map +1 -1
- package/dist/planning/__tests__/approved-execution-lifecycle-matrix.test.js.map +1 -1
- package/dist/planning/artifact-names.js.map +1 -1
- package/dist/planning/artifacts.js.map +1 -1
- package/dist/question/__tests__/state.test.js.map +1 -1
- package/dist/question/__tests__/ui.test.js.map +1 -1
- package/dist/question/autopilot-wait.js.map +1 -1
- package/dist/question/client.d.ts.map +1 -1
- package/dist/question/client.js.map +1 -1
- package/dist/question/deep-interview.js.map +1 -1
- package/dist/question/events.js.map +1 -1
- package/dist/question/renderer.js.map +1 -1
- package/dist/question/state.d.ts.map +1 -1
- package/dist/question/state.js.map +1 -1
- package/dist/question/ui.js.map +1 -1
- package/dist/ralph/contract.d.ts +1 -1
- package/dist/ralph/contract.d.ts.map +1 -1
- package/dist/ralplan/__tests__/consensus-gate.test.js +527 -8
- package/dist/ralplan/__tests__/consensus-gate.test.js.map +1 -1
- package/dist/ralplan/__tests__/documented-leader-preflight.test.d.ts +2 -0
- package/dist/ralplan/__tests__/documented-leader-preflight.test.d.ts.map +1 -0
- package/dist/ralplan/__tests__/documented-leader-preflight.test.js +46 -0
- package/dist/ralplan/__tests__/documented-leader-preflight.test.js.map +1 -0
- package/dist/ralplan/__tests__/runtime.test.js +116 -14
- package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
- package/dist/ralplan/consensus-gate.d.ts +3 -3
- package/dist/ralplan/consensus-gate.d.ts.map +1 -1
- package/dist/ralplan/consensus-gate.js +173 -70
- package/dist/ralplan/consensus-gate.js.map +1 -1
- package/dist/ralplan/documented-leader-preflight.d.ts +34 -0
- package/dist/ralplan/documented-leader-preflight.d.ts.map +1 -0
- package/dist/ralplan/documented-leader-preflight.js +58 -0
- package/dist/ralplan/documented-leader-preflight.js.map +1 -0
- package/dist/ralplan/runtime.d.ts +3 -2
- package/dist/ralplan/runtime.d.ts.map +1 -1
- package/dist/ralplan/runtime.js +12 -9
- package/dist/ralplan/runtime.js.map +1 -1
- package/dist/runtime/__tests__/bridge.test.js +42 -1
- package/dist/runtime/__tests__/bridge.test.js.map +1 -1
- package/dist/runtime/bridge.d.ts +12 -0
- package/dist/runtime/bridge.d.ts.map +1 -1
- package/dist/runtime/bridge.js +52 -1
- package/dist/runtime/bridge.js.map +1 -1
- package/dist/runtime/process-tree.js.map +1 -1
- package/dist/runtime/run-loop.js.map +1 -1
- package/dist/runtime/run-outcome.d.ts +3 -3
- package/dist/runtime/run-outcome.d.ts.map +1 -1
- package/dist/runtime/run-outcome.js.map +1 -1
- package/dist/runtime/run-state.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +6657 -995
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.d.ts +2 -0
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.d.ts.map +1 -0
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.js +634 -0
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.js.map +1 -0
- package/dist/scripts/__tests__/generate-release-body.test.js.map +1 -1
- package/dist/scripts/__tests__/hook-derived-watcher.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-dispatcher.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-fallback-delivery.test.d.ts +2 -0
- package/dist/scripts/__tests__/notify-fallback-delivery.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/notify-fallback-delivery.test.js +174 -0
- package/dist/scripts/__tests__/notify-fallback-delivery.test.js.map +1 -0
- package/dist/scripts/__tests__/notify-state-io.test.js +57 -1
- package/dist/scripts/__tests__/notify-state-io.test.js.map +1 -1
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.d.ts +2 -0
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.js +108 -0
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.js.map +1 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.d.ts +2 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.js +78 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.js.map +1 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.d.ts +2 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.js +55 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.js.map +1 -0
- package/dist/scripts/__tests__/run-test-files.test.js.map +1 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js +1100 -4
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/__tests__/test-reply-listener-live.test.js.map +1 -1
- package/dist/scripts/build-api.js.map +1 -1
- package/dist/scripts/build-explore-harness.js.map +1 -1
- package/dist/scripts/build-sparkshell.js.map +1 -1
- package/dist/scripts/cleanup-explore-harness.js.map +1 -1
- package/dist/scripts/codex-execution-surface.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts +4 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +11577 -1184
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/generate-native-release-manifest.js.map +1 -1
- package/dist/scripts/generate-release-body.js.map +1 -1
- package/dist/scripts/hook-payload-guard.d.ts.map +1 -1
- package/dist/scripts/hook-payload-guard.js.map +1 -1
- package/dist/scripts/notify-fallback-delivery.d.ts +48 -0
- package/dist/scripts/notify-fallback-delivery.d.ts.map +1 -0
- package/dist/scripts/notify-fallback-delivery.js +419 -0
- package/dist/scripts/notify-fallback-delivery.js.map +1 -0
- package/dist/scripts/notify-fallback-watcher.js +218 -138
- package/dist/scripts/notify-fallback-watcher.js.map +1 -1
- package/dist/scripts/notify-hook/auto-nudge.d.ts +18 -9
- package/dist/scripts/notify-hook/auto-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/auto-nudge.js +112 -15
- package/dist/scripts/notify-hook/auto-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.d.ts +23 -0
- package/dist/scripts/notify-hook/managed-tmux.d.ts.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.js +122 -12
- package/dist/scripts/notify-hook/managed-tmux.js.map +1 -1
- package/dist/scripts/notify-hook/orchestration-intent.d.ts +7 -7
- package/dist/scripts/notify-hook/orchestration-intent.d.ts.map +1 -1
- package/dist/scripts/notify-hook/ralph-session-resume.d.ts +5 -2
- package/dist/scripts/notify-hook/ralph-session-resume.d.ts.map +1 -1
- package/dist/scripts/notify-hook/ralph-session-resume.js +33 -37
- package/dist/scripts/notify-hook/ralph-session-resume.js.map +1 -1
- package/dist/scripts/notify-hook/state-io.d.ts +17 -0
- package/dist/scripts/notify-hook/state-io.d.ts.map +1 -1
- package/dist/scripts/notify-hook/state-io.js +73 -11
- package/dist/scripts/notify-hook/state-io.js.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts +10 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.js +234 -79
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts +2 -2
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.js +39 -13
- package/dist/scripts/notify-hook/team-leader-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts +16 -8
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.js +365 -44
- package/dist/scripts/notify-hook/team-tmux-guard.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker-posttooluse.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.d.ts +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.js +19 -18
- package/dist/scripts/notify-hook/team-worker-stop.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker.d.ts +5 -2
- package/dist/scripts/notify-hook/team-worker.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker.js +37 -28
- package/dist/scripts/notify-hook/team-worker.js.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts +8 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.js +53 -18
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
- package/dist/scripts/notify-hook/visual-verdict.d.ts +1 -1
- package/dist/scripts/notify-hook/visual-verdict.d.ts.map +1 -1
- package/dist/scripts/notify-hook/visual-verdict.js +15 -13
- package/dist/scripts/notify-hook/visual-verdict.js.map +1 -1
- package/dist/scripts/notify-hook.d.ts +24 -1
- package/dist/scripts/notify-hook.d.ts.map +1 -1
- package/dist/scripts/notify-hook.js +267 -90
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/scripts/prompt-inventory.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +927 -5
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +4317 -13
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.js.map +1 -1
- package/dist/scripts/test-reply-listener-live.js.map +1 -1
- package/dist/scripts/test-sparkshell.js.map +1 -1
- package/dist/scripts/verify-native-agents.js.map +1 -1
- package/dist/session-history/friction.js.map +1 -1
- package/dist/session-history/search.js.map +1 -1
- package/dist/sidecar/__tests__/boundary.test.js.map +1 -1
- package/dist/sidecar/collector.js.map +1 -1
- package/dist/sidecar/index.js.map +1 -1
- package/dist/sidecar/render.js.map +1 -1
- package/dist/sidecar/tmux.js.map +1 -1
- package/dist/state/__tests__/mode-state-context.test.js +54 -0
- package/dist/state/__tests__/mode-state-context.test.js.map +1 -1
- package/dist/state/__tests__/operations.test.js +66 -15
- package/dist/state/__tests__/operations.test.js.map +1 -1
- package/dist/state/__tests__/skill-active.test.js +19 -1
- package/dist/state/__tests__/skill-active.test.js.map +1 -1
- package/dist/state/__tests__/workflow-transition.test.js +61 -0
- package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
- package/dist/state/mode-state-context.d.ts +5 -0
- package/dist/state/mode-state-context.d.ts.map +1 -1
- package/dist/state/mode-state-context.js +59 -0
- package/dist/state/mode-state-context.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 +49 -55
- package/dist/state/operations.js.map +1 -1
- package/dist/state/paths.d.ts +1 -1
- package/dist/state/paths.d.ts.map +1 -1
- package/dist/state/paths.js +1 -1
- package/dist/state/paths.js.map +1 -1
- package/dist/state/skill-active.d.ts +13 -1
- package/dist/state/skill-active.d.ts.map +1 -1
- package/dist/state/skill-active.js +43 -4
- package/dist/state/skill-active.js.map +1 -1
- package/dist/state/terminal-normalization.js.map +1 -1
- package/dist/state/workflow-transition-reconcile.d.ts.map +1 -1
- package/dist/state/workflow-transition-reconcile.js +20 -4
- package/dist/state/workflow-transition-reconcile.js.map +1 -1
- package/dist/state/workflow-transition.d.ts +1 -1
- package/dist/state/workflow-transition.d.ts.map +1 -1
- package/dist/state/workflow-transition.js.map +1 -1
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.d.ts +2 -0
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.d.ts.map +1 -0
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.js +52 -0
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.js.map +1 -0
- package/dist/subagents/__tests__/tracker.test.js +1550 -10
- package/dist/subagents/__tests__/tracker.test.js.map +1 -1
- package/dist/subagents/role-routing-marker.d.ts +10 -0
- package/dist/subagents/role-routing-marker.d.ts.map +1 -0
- package/dist/subagents/role-routing-marker.js +136 -0
- package/dist/subagents/role-routing-marker.js.map +1 -0
- package/dist/subagents/tracker.d.ts +91 -0
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +806 -62
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/team/__tests__/api-interop.test.js +91 -1
- package/dist/team/__tests__/api-interop.test.js.map +1 -1
- package/dist/team/__tests__/approved-execution.test.js.map +1 -1
- package/dist/team/__tests__/delivery-e2e-smoke.test.js +52 -10
- package/dist/team/__tests__/delivery-e2e-smoke.test.js.map +1 -1
- package/dist/team/__tests__/idle-nudge.test.js +45 -15
- package/dist/team/__tests__/idle-nudge.test.js.map +1 -1
- package/dist/team/__tests__/mcp-comm.test.js +93 -27
- package/dist/team/__tests__/mcp-comm.test.js.map +1 -1
- package/dist/team/__tests__/model-contract.test.js +341 -4
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/role-router.test.js.map +1 -1
- package/dist/team/__tests__/runtime-cli.test.js +9 -0
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +3624 -355
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +2516 -118
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/state-root.test.js.map +1 -1
- package/dist/team/__tests__/state.test.js +804 -36
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/__tests__/team-ops-contract.test.js +6 -0
- package/dist/team/__tests__/team-ops-contract.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +3664 -969
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/tmux-test-fixture.js.map +1 -1
- package/dist/team/__tests__/worker-runtime-identity.test.js +38 -2
- package/dist/team/__tests__/worker-runtime-identity.test.js.map +1 -1
- package/dist/team/__tests__/worktree.test.js +6 -0
- package/dist/team/__tests__/worktree.test.js.map +1 -1
- package/dist/team/api-interop.d.ts +2 -2
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +15 -9
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/commit-hygiene.js.map +1 -1
- package/dist/team/contracts.d.ts +5 -5
- package/dist/team/contracts.d.ts.map +1 -1
- package/dist/team/delivery-log.js.map +1 -1
- package/dist/team/exact-pane.d.ts +23 -0
- package/dist/team/exact-pane.d.ts.map +1 -0
- package/dist/team/exact-pane.js +133 -0
- package/dist/team/exact-pane.js.map +1 -0
- package/dist/team/followup-planner.js.map +1 -1
- package/dist/team/goal-workflow.js.map +1 -1
- package/dist/team/idle-nudge.d.ts +12 -1
- package/dist/team/idle-nudge.d.ts.map +1 -1
- package/dist/team/idle-nudge.js +41 -14
- package/dist/team/idle-nudge.js.map +1 -1
- package/dist/team/model-contract.d.ts +18 -2
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +314 -35
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/orchestrator.js.map +1 -1
- package/dist/team/pane-status.js.map +1 -1
- package/dist/team/phase-controller.js.map +1 -1
- package/dist/team/reminder-intents.d.ts +1 -1
- package/dist/team/reminder-intents.d.ts.map +1 -1
- package/dist/team/reminder-intents.js.map +1 -1
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime.d.ts +1 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +1326 -231
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts +22 -8
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +1463 -376
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/dispatch-lock.js.map +1 -1
- package/dist/team/state/dispatch.d.ts.map +1 -1
- package/dist/team/state/dispatch.js +26 -8
- package/dist/team/state/dispatch.js.map +1 -1
- package/dist/team/state/events.js.map +1 -1
- package/dist/team/state/locks.d.ts.map +1 -1
- package/dist/team/state/locks.js +61 -13
- package/dist/team/state/locks.js.map +1 -1
- package/dist/team/state/tasks.d.ts.map +1 -1
- package/dist/team/state/tasks.js +4 -3
- package/dist/team/state/tasks.js.map +1 -1
- package/dist/team/state-root.js.map +1 -1
- package/dist/team/state.d.ts +67 -1
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +636 -129
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-identity.d.ts.map +1 -1
- package/dist/team/team-identity.js.map +1 -1
- package/dist/team/team-ops.d.ts +5 -0
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +4 -0
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/tmux-session.d.ts +125 -23
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +1340 -333
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/team/worktree.d.ts.map +1 -1
- package/dist/team/worktree.js +4 -0
- package/dist/team/worktree.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +4 -1
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/url-reader/index.js.map +1 -1
- package/dist/utils/__tests__/file-durability.test.d.ts +2 -0
- package/dist/utils/__tests__/file-durability.test.d.ts.map +1 -0
- package/dist/utils/__tests__/file-durability.test.js +57 -0
- package/dist/utils/__tests__/file-durability.test.js.map +1 -0
- package/dist/utils/agents-model-table.js.map +1 -1
- package/dist/utils/file-durability.d.ts +15 -0
- package/dist/utils/file-durability.d.ts.map +1 -0
- package/dist/utils/file-durability.js +37 -0
- package/dist/utils/file-durability.js.map +1 -0
- package/dist/utils/package.js.map +1 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-command.js.map +1 -1
- package/dist/utils/repo-deps.js.map +1 -1
- package/dist/utils/version.js.map +1 -1
- package/dist/verification/__tests__/ci-rust-gates.test.js +1 -1
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js +3 -0
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js.map +1 -1
- package/dist/verification/verifier.js.map +1 -1
- package/dist/visual/constants.d.ts +1 -1
- package/dist/visual/constants.d.ts.map +1 -1
- package/dist/vscode/__tests__/index.test.js.map +1 -1
- package/dist/vscode/index.js.map +1 -1
- package/dist/wiki/__tests__/cjk-tokenize.test.js.map +1 -1
- package/dist/wiki/__tests__/lint.test.js.map +1 -1
- package/dist/wiki/__tests__/query.test.js.map +1 -1
- package/dist/wiki/__tests__/storage.test.js.map +1 -1
- package/dist/wiki/__tests__/test-helpers.d.ts.map +1 -1
- package/dist/wiki/lint.d.ts +4 -1
- package/dist/wiki/lint.d.ts.map +1 -1
- package/dist/wiki/lint.js +3 -2
- package/dist/wiki/lint.js.map +1 -1
- package/dist/wiki/query.js.map +1 -1
- package/dist/wiki/storage.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/hooks/codex-native-hook.mjs +24 -0
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +10 -5
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +6 -2
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +6 -2
- package/plugins/oh-my-codex/skills/team/SKILL.md +13 -9
- package/skills/omx-setup/SKILL.md +10 -5
- package/skills/ralph/SKILL.md +6 -2
- package/skills/ralplan/SKILL.md +6 -2
- package/skills/team/SKILL.md +13 -9
- package/src/scripts/__tests__/codex-native-hook.test.ts +20048 -10827
- package/src/scripts/__tests__/fixtures/issue-3138-installed-smoke.ts +734 -0
- package/src/scripts/__tests__/notify-fallback-delivery.test.ts +177 -0
- package/src/scripts/__tests__/notify-state-io.test.ts +73 -0
- package/src/scripts/__tests__/reasoning-artifact-contract.test.ts +129 -0
- package/src/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.ts +78 -0
- package/src/scripts/__tests__/role-intent-durable-recovery-3181.test.ts +60 -0
- package/src/scripts/__tests__/smoke-packed-install.test.ts +1309 -4
- package/src/scripts/codex-native-hook.ts +11429 -1163
- package/src/scripts/notify-fallback-delivery.ts +416 -0
- package/src/scripts/notify-fallback-watcher.ts +216 -155
- package/src/scripts/notify-hook/auto-nudge.ts +113 -14
- package/src/scripts/notify-hook/managed-tmux.ts +149 -12
- package/src/scripts/notify-hook/ralph-session-resume.ts +37 -36
- package/src/scripts/notify-hook/state-io.ts +100 -13
- package/src/scripts/notify-hook/team-dispatch.ts +242 -75
- package/src/scripts/notify-hook/team-leader-nudge.ts +40 -18
- package/src/scripts/notify-hook/team-tmux-guard.ts +366 -39
- package/src/scripts/notify-hook/team-worker-stop.ts +20 -16
- package/src/scripts/notify-hook/team-worker.ts +39 -26
- package/src/scripts/notify-hook/tmux-injection.ts +66 -23
- package/src/scripts/notify-hook/visual-verdict.ts +22 -12
- package/src/scripts/notify-hook.ts +336 -90
- package/src/scripts/smoke-packed-install.ts +5154 -149
|
@@ -11,8 +11,7 @@ import { asNumber, safeString, isTerminalPhase } from './utils.js';
|
|
|
11
11
|
import { readJsonIfExists, getScopedStateDirsForCurrentSession } from './state-io.js';
|
|
12
12
|
import { runProcess } from './process-runner.js';
|
|
13
13
|
import { logTmuxHookEvent } from './log.js';
|
|
14
|
-
import { evaluatePaneInjectionReadiness,
|
|
15
|
-
import { resolvePaneTarget } from './tmux-injection.js';
|
|
14
|
+
import { evaluatePaneInjectionReadiness, normalizeExactPaneId, sendPaneInput } from './team-tmux-guard.js';
|
|
16
15
|
import { listNotifyCanonicalActiveTeams } from './active-team.js';
|
|
17
16
|
import {
|
|
18
17
|
classifyLeaderActionState,
|
|
@@ -28,6 +27,7 @@ import { isDeepInterviewStateActive } from './auto-nudge.js';
|
|
|
28
27
|
const LEADER_PANE_MISSING_NO_INJECTION_REASON = 'leader_pane_missing_no_injection';
|
|
29
28
|
const LEADER_PANE_SHELL_NO_INJECTION_REASON = 'leader_pane_shell_no_injection';
|
|
30
29
|
const TEAM_SHUTDOWN_NO_INJECTION_REASON = 'team_state_gone_or_shutdown';
|
|
30
|
+
const LEADER_PANE_OWNER_MISSING_NO_INJECTION_REASON = 'leader_pane_owner_missing_no_injection';
|
|
31
31
|
const LEADER_PANE_SAME_CLASSIFIED_STATE_SUPPRESSED_REASON = 'pane_already_shows_same_classified_state';
|
|
32
32
|
const LEADER_NOTIFICATION_DEFERRED_TYPE = 'leader_notification_deferred';
|
|
33
33
|
const ACK_WITHOUT_START_EVIDENCE_REASON = 'ack_without_start_evidence';
|
|
@@ -37,6 +37,10 @@ const ACK_LIKE_PATTERNS = [
|
|
|
37
37
|
/^(?:on it|will do|i(?:'|')ll do it|working on it)[.!]*$/i,
|
|
38
38
|
];
|
|
39
39
|
|
|
40
|
+
function positivePanePid(value) {
|
|
41
|
+
return Number.isInteger(value) && Number(value) > 0 ? Number(value) : undefined;
|
|
42
|
+
}
|
|
43
|
+
|
|
40
44
|
let atomicJsonWriteCounter = 0;
|
|
41
45
|
|
|
42
46
|
// Synchronous test-only callbacks let regression tests emulate filesystem races
|
|
@@ -729,6 +733,9 @@ export async function maybeNudgeTeamLeader({
|
|
|
729
733
|
let leaderPaneId = '';
|
|
730
734
|
let ownerSessionId = '';
|
|
731
735
|
let workers = [];
|
|
736
|
+
let hudPaneId = '';
|
|
737
|
+
let leaderPanePid;
|
|
738
|
+
let tmuxPaneOwnerId = '';
|
|
732
739
|
try {
|
|
733
740
|
const manifestPath = join(omxDir, 'state', 'team', teamName, 'manifest.v2.json');
|
|
734
741
|
const configPath = join(omxDir, 'state', 'team', teamName, 'config.json');
|
|
@@ -737,6 +744,9 @@ export async function maybeNudgeTeamLeader({
|
|
|
737
744
|
const raw = JSON.parse(await readFile(srcPath, 'utf-8'));
|
|
738
745
|
tmuxSession = safeString(raw && raw.tmux_session ? raw.tmux_session : '').trim();
|
|
739
746
|
leaderPaneId = safeString(raw && raw.leader_pane_id ? raw.leader_pane_id : '').trim();
|
|
747
|
+
hudPaneId = safeString(raw && raw.hud_pane_id ? raw.hud_pane_id : '').trim();
|
|
748
|
+
leaderPanePid = positivePanePid(raw && raw.leader_pane_pid);
|
|
749
|
+
tmuxPaneOwnerId = typeof raw?.tmux_pane_owner_id === 'string' ? raw.tmux_pane_owner_id.trim() : '';
|
|
740
750
|
ownerSessionId = safeString(raw && raw.leader && raw.leader.session_id ? raw.leader.session_id : '').trim();
|
|
741
751
|
if (Array.isArray(raw && raw.workers)) workers = raw.workers;
|
|
742
752
|
}
|
|
@@ -761,23 +771,20 @@ export async function maybeNudgeTeamLeader({
|
|
|
761
771
|
const workerPaneIds = Array.isArray(workers)
|
|
762
772
|
? workers.map((w) => safeString(w && w.pane_id ? w.pane_id : '')).filter(Boolean)
|
|
763
773
|
: [];
|
|
764
|
-
const
|
|
774
|
+
const normalizedLeaderPaneId = normalizeExactPaneId(leaderPaneId);
|
|
775
|
+
const canonicalLeaderPaneId = normalizedLeaderPaneId && normalizedLeaderPaneId !== normalizeExactPaneId(hudPaneId)
|
|
776
|
+
? normalizedLeaderPaneId
|
|
777
|
+
: '';
|
|
765
778
|
if (!tmuxSession && !canonicalLeaderPaneId) continue;
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
{ type: 'pane', value: canonicalLeaderPaneId },
|
|
770
|
-
'',
|
|
771
|
-
canonicalLeaderPaneId,
|
|
772
|
-
'',
|
|
773
|
-
{},
|
|
774
|
-
).catch(() => null);
|
|
775
|
-
if (resolvedLeaderTarget?.paneTarget) {
|
|
776
|
-
tmuxTarget = safeString(resolvedLeaderTarget.paneTarget).trim();
|
|
777
|
-
} else if (resolvedLeaderTarget && ['target_is_hud_pane', 'pane_cwd_mismatch'].includes(safeString(resolvedLeaderTarget.reason).trim())) {
|
|
778
|
-
tmuxTarget = '';
|
|
779
|
-
}
|
|
779
|
+
if (!tmuxPaneOwnerId) {
|
|
780
|
+
await recordSuppressedLeaderNudge({ logsDir, source, teamName, reason: LEADER_PANE_OWNER_MISSING_NO_INJECTION_REASON });
|
|
781
|
+
continue;
|
|
780
782
|
}
|
|
783
|
+
if (canonicalLeaderPaneId && !leaderPanePid) {
|
|
784
|
+
await recordSuppressedLeaderNudge({ logsDir, source, teamName, reason: 'leader_pane_pid_missing' });
|
|
785
|
+
continue;
|
|
786
|
+
}
|
|
787
|
+
const tmuxTarget = canonicalLeaderPaneId;
|
|
781
788
|
const paneStatus = tmuxSession
|
|
782
789
|
? await checkWorkerPanesAlive(tmuxSession, workerPaneIds)
|
|
783
790
|
: { alive: false, paneCount: 0 };
|
|
@@ -1087,6 +1094,10 @@ export async function maybeNudgeTeamLeader({
|
|
|
1087
1094
|
requireRunningAgent: true,
|
|
1088
1095
|
requireReady: false,
|
|
1089
1096
|
requireIdle: false,
|
|
1097
|
+
exactPaneId: canonicalLeaderPaneId,
|
|
1098
|
+
expectedPanePid: leaderPanePid,
|
|
1099
|
+
expectedPaneOwnerId: tmuxPaneOwnerId,
|
|
1100
|
+
expectedHudPaneId: hudPaneId,
|
|
1090
1101
|
});
|
|
1091
1102
|
if (!paneGuard.ok) {
|
|
1092
1103
|
const deferredReason = paneGuard.reason === 'pane_running_shell'
|
|
@@ -1188,9 +1199,16 @@ export async function maybeNudgeTeamLeader({
|
|
|
1188
1199
|
const leaderHasActiveTask = paneHasActiveTask(paneGuard.paneCapture);
|
|
1189
1200
|
let deliveryMode = 'sent';
|
|
1190
1201
|
if (leaderHasActiveTask) {
|
|
1191
|
-
const sendResult = await
|
|
1202
|
+
const sendResult = await sendPaneInput({
|
|
1192
1203
|
paneTarget: tmuxTarget,
|
|
1193
1204
|
prompt: markedText,
|
|
1205
|
+
submitKeyPresses: 1,
|
|
1206
|
+
submitDelayMs: 80,
|
|
1207
|
+
queueFirstSubmit: true,
|
|
1208
|
+
exactPaneId: canonicalLeaderPaneId,
|
|
1209
|
+
expectedPanePid: leaderPanePid,
|
|
1210
|
+
expectedPaneOwnerId: tmuxPaneOwnerId,
|
|
1211
|
+
expectedHudPaneId: hudPaneId,
|
|
1194
1212
|
});
|
|
1195
1213
|
if (!sendResult.ok) {
|
|
1196
1214
|
throw new Error(sendResult.error || sendResult.reason);
|
|
@@ -1202,6 +1220,10 @@ export async function maybeNudgeTeamLeader({
|
|
|
1202
1220
|
prompt: markedText,
|
|
1203
1221
|
submitKeyPresses: 2,
|
|
1204
1222
|
submitDelayMs: 100,
|
|
1223
|
+
exactPaneId: canonicalLeaderPaneId,
|
|
1224
|
+
expectedPanePid: leaderPanePid,
|
|
1225
|
+
expectedPaneOwnerId: tmuxPaneOwnerId,
|
|
1226
|
+
expectedHudPaneId: hudPaneId,
|
|
1205
1227
|
});
|
|
1206
1228
|
if (!sendResult.ok) {
|
|
1207
1229
|
throw new Error(sendResult.error || sendResult.reason);
|
|
@@ -9,6 +9,158 @@ import {
|
|
|
9
9
|
paneHasActiveTask,
|
|
10
10
|
paneLooksReady,
|
|
11
11
|
} from '../tmux-hook-engine.js';
|
|
12
|
+
import { readExactPaneProof } from '../../team/exact-pane.js';
|
|
13
|
+
|
|
14
|
+
export const EXACT_PANE_UNAVAILABLE_REASON = 'exact_pane_unavailable';
|
|
15
|
+
const EXACT_PANE_ID_RE = /^%\d+$/;
|
|
16
|
+
|
|
17
|
+
function explicitPaneIdentity(value: any): { provided: boolean; paneId: string } {
|
|
18
|
+
const paneId = safeString(value).trim();
|
|
19
|
+
return { provided: paneId !== '', paneId: EXACT_PANE_ID_RE.test(paneId) ? paneId : '' };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function normalizeExactPaneId(value: any): string {
|
|
23
|
+
return explicitPaneIdentity(value).paneId;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function exactPaneBindingFailure(target: string, exactPaneId: any): any | null {
|
|
27
|
+
const identity = explicitPaneIdentity(exactPaneId);
|
|
28
|
+
const targetIsExactPane = EXACT_PANE_ID_RE.test(target);
|
|
29
|
+
if (targetIsExactPane && !identity.provided) {
|
|
30
|
+
return {
|
|
31
|
+
ok: false,
|
|
32
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
33
|
+
paneId: target,
|
|
34
|
+
proof: { status: 'unavailable', paneId: target, reason: 'missing_exact_pane_id' },
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (identity.provided && !identity.paneId) {
|
|
38
|
+
return {
|
|
39
|
+
ok: false,
|
|
40
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
41
|
+
paneId: '',
|
|
42
|
+
proof: { status: 'unavailable', paneId: safeString(exactPaneId).trim(), reason: 'invalid_pane_id' },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (identity.paneId && identity.paneId !== target) {
|
|
46
|
+
return {
|
|
47
|
+
ok: false,
|
|
48
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
49
|
+
paneId: identity.paneId,
|
|
50
|
+
proof: { status: 'unavailable', paneId: identity.paneId, reason: 'pane_target_mismatch' },
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function verifyExactPaneLive(exactPaneId: any, expectedPanePid?: number): Promise<any> {
|
|
57
|
+
const identity = explicitPaneIdentity(exactPaneId);
|
|
58
|
+
if (!identity.provided) return { ok: true, paneId: '', proof: null };
|
|
59
|
+
if (!identity.paneId) {
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
63
|
+
paneId: '',
|
|
64
|
+
proof: {
|
|
65
|
+
status: 'unavailable',
|
|
66
|
+
paneId: safeString(exactPaneId).trim(),
|
|
67
|
+
reason: 'invalid_pane_id',
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
const proof = await readExactPaneProof(identity.paneId);
|
|
74
|
+
if (proof.status === 'live' && proof.paneId === identity.paneId) {
|
|
75
|
+
if (typeof expectedPanePid === 'number' && proof.pid !== expectedPanePid) {
|
|
76
|
+
return {
|
|
77
|
+
ok: false,
|
|
78
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
79
|
+
paneId: identity.paneId,
|
|
80
|
+
proof: { ...proof, status: 'unavailable', reason: 'pane_pid_changed', expectedPid: expectedPanePid },
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return { ok: true, paneId: identity.paneId, proof };
|
|
84
|
+
}
|
|
85
|
+
return { ok: false, reason: EXACT_PANE_UNAVAILABLE_REASON, paneId: identity.paneId, proof };
|
|
86
|
+
} catch (error) {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
90
|
+
paneId: identity.paneId,
|
|
91
|
+
proof: {
|
|
92
|
+
status: 'unavailable',
|
|
93
|
+
paneId: identity.paneId,
|
|
94
|
+
reason: 'query_failed',
|
|
95
|
+
detail: error instanceof Error ? error.message : safeString(error),
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export async function verifyExactPaneOwnerLive(exactPaneId: any, expectedPanePid: number | undefined, expectedPaneOwnerId: any): Promise<any> {
|
|
102
|
+
const expectedOwner = safeString(expectedPaneOwnerId).trim();
|
|
103
|
+
if (!expectedOwner || !Number.isInteger(expectedPanePid) || Number(expectedPanePid) <= 0) {
|
|
104
|
+
return {
|
|
105
|
+
ok: false,
|
|
106
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
107
|
+
paneId: normalizeExactPaneId(exactPaneId),
|
|
108
|
+
proof: {
|
|
109
|
+
status: 'unavailable',
|
|
110
|
+
paneId: normalizeExactPaneId(exactPaneId),
|
|
111
|
+
reason: !expectedOwner ? 'missing_expected_pane_owner' : 'missing_expected_pane_pid',
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const beforeOwner = await verifyExactPaneLive(exactPaneId, expectedPanePid);
|
|
116
|
+
if (!beforeOwner.ok) return beforeOwner;
|
|
117
|
+
try {
|
|
118
|
+
const ownerResult = await runProcess(
|
|
119
|
+
'tmux',
|
|
120
|
+
['show-option', '-qv', '-p', '-t', beforeOwner.paneId, '@omx_team_pane_owner_id'],
|
|
121
|
+
3000,
|
|
122
|
+
);
|
|
123
|
+
const actualOwner = safeString(ownerResult.stdout).trim();
|
|
124
|
+
if (actualOwner !== expectedOwner) {
|
|
125
|
+
return {
|
|
126
|
+
ok: false,
|
|
127
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
128
|
+
paneId: beforeOwner.paneId,
|
|
129
|
+
proof: {
|
|
130
|
+
status: 'unavailable',
|
|
131
|
+
paneId: beforeOwner.paneId,
|
|
132
|
+
reason: actualOwner ? 'pane_owner_changed' : 'pane_owner_unavailable',
|
|
133
|
+
expectedOwner,
|
|
134
|
+
actualOwner: actualOwner || undefined,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
} catch (error) {
|
|
139
|
+
return {
|
|
140
|
+
ok: false,
|
|
141
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
142
|
+
paneId: beforeOwner.paneId,
|
|
143
|
+
proof: {
|
|
144
|
+
status: 'unavailable',
|
|
145
|
+
paneId: beforeOwner.paneId,
|
|
146
|
+
reason: 'pane_owner_unavailable',
|
|
147
|
+
detail: error instanceof Error ? error.message : safeString(error),
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
return verifyExactPaneLive(exactPaneId, expectedPanePid);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function exactPaneUnavailableResult(target: string, paneProof: any, extra: any = {}): any {
|
|
155
|
+
return {
|
|
156
|
+
ok: false,
|
|
157
|
+
sent: false,
|
|
158
|
+
reason: EXACT_PANE_UNAVAILABLE_REASON,
|
|
159
|
+
paneTarget: target,
|
|
160
|
+
exactPaneProof: paneProof.proof || null,
|
|
161
|
+
...extra,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
12
164
|
|
|
13
165
|
export const PANE_READINESS_UNVERIFIED_REASON = 'pane_readiness_unverified';
|
|
14
166
|
let nextTmuxBufferId = 0;
|
|
@@ -46,6 +198,10 @@ export async function evaluatePaneInjectionReadiness(paneTarget: any, {
|
|
|
46
198
|
requireIdle = true,
|
|
47
199
|
requireObservableState = false,
|
|
48
200
|
requireCaptureEvidence = undefined,
|
|
201
|
+
exactPaneId = undefined,
|
|
202
|
+
expectedPanePid = undefined,
|
|
203
|
+
expectedPaneOwnerId = undefined,
|
|
204
|
+
expectedHudPaneId = undefined,
|
|
49
205
|
} = {}): Promise<any> {
|
|
50
206
|
const normalizedRequireObservableState = typeof requireCaptureEvidence === 'boolean' ? requireCaptureEvidence : requireObservableState;
|
|
51
207
|
const target = safeString(paneTarget).trim();
|
|
@@ -59,24 +215,26 @@ export async function evaluatePaneInjectionReadiness(paneTarget: any, {
|
|
|
59
215
|
paneCapture: '',
|
|
60
216
|
};
|
|
61
217
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const modeResult = await runProcess('tmux', buildPaneInModeArgv(target), 3000);
|
|
65
|
-
if (safeString(modeResult.stdout).trim() === '1') {
|
|
66
|
-
return {
|
|
67
|
-
ok: false,
|
|
68
|
-
sent: false,
|
|
69
|
-
reason: 'scroll_active',
|
|
70
|
-
paneTarget: target,
|
|
71
|
-
paneCurrentCommand: '',
|
|
72
|
-
paneCapture: '',
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
} catch {
|
|
76
|
-
// Non-fatal: continue with remaining preflight checks.
|
|
77
|
-
}
|
|
78
|
-
}
|
|
218
|
+
const bindingFailure = exactPaneBindingFailure(target, exactPaneId);
|
|
219
|
+
if (bindingFailure) return exactPaneUnavailableResult(target, bindingFailure);
|
|
79
220
|
|
|
221
|
+
const exactPaneIdentity = safeString(exactPaneId).trim();
|
|
222
|
+
const exactPaneIdentityProvided = explicitPaneIdentity(exactPaneId).provided;
|
|
223
|
+
const expectedOwner = safeString(expectedPaneOwnerId).trim();
|
|
224
|
+
const expectedHudPane = normalizeExactPaneId(expectedHudPaneId);
|
|
225
|
+
const requiresTeamReadAuthority = exactPaneIdentityProvided && (
|
|
226
|
+
expectedPanePid !== undefined || expectedOwner || expectedHudPane
|
|
227
|
+
);
|
|
228
|
+
let exactPaneProof: any = null;
|
|
229
|
+
let pinnedPanePid = typeof expectedPanePid === 'number' ? expectedPanePid : undefined;
|
|
230
|
+
const verifyExplicitPane = async () => {
|
|
231
|
+
const paneProof = requiresTeamReadAuthority
|
|
232
|
+
? await verifyExactPaneOwnerLive(exactPaneIdentity, pinnedPanePid, expectedOwner)
|
|
233
|
+
: await verifyExactPaneLive(exactPaneIdentity, pinnedPanePid);
|
|
234
|
+
exactPaneProof = paneProof.proof || null;
|
|
235
|
+
if (paneProof.ok && typeof paneProof.proof?.pid === 'number') pinnedPanePid ??= paneProof.proof.pid;
|
|
236
|
+
return paneProof;
|
|
237
|
+
};
|
|
80
238
|
let paneCurrentCommand = '';
|
|
81
239
|
let paneRunningShell = false;
|
|
82
240
|
const buildReadinessResult = (ok: boolean, reason: string, paneCapture: string, readinessEvidence: string) => ({
|
|
@@ -87,18 +245,91 @@ export async function evaluatePaneInjectionReadiness(paneTarget: any, {
|
|
|
87
245
|
paneCurrentCommand,
|
|
88
246
|
paneCapture,
|
|
89
247
|
readinessEvidence,
|
|
248
|
+
exactPaneProof,
|
|
90
249
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
250
|
+
const exactPaneFailure = (paneProof: any, paneCapture = '') => exactPaneUnavailableResult(target, paneProof, {
|
|
251
|
+
paneCurrentCommand,
|
|
252
|
+
paneCapture,
|
|
253
|
+
readinessEvidence: 'exact_pane_unavailable',
|
|
254
|
+
});
|
|
255
|
+
if (expectedHudPane && expectedHudPane === exactPaneIdentity) {
|
|
256
|
+
return buildReadinessResult(false, 'hud_pane_target', '', 'hud_pane_rejected');
|
|
97
257
|
}
|
|
98
258
|
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
|
|
259
|
+
const readExplicitPane = async (argv: string[]) => {
|
|
260
|
+
const beforeRead = await verifyExplicitPane();
|
|
261
|
+
if (!beforeRead.ok) return { ok: false, paneProof: beforeRead, result: null };
|
|
262
|
+
try {
|
|
263
|
+
const result = await runProcess('tmux', argv, 3000);
|
|
264
|
+
if (requiresTeamReadAuthority) {
|
|
265
|
+
const afterRead = await verifyExplicitPane();
|
|
266
|
+
if (!afterRead.ok) return { ok: false, paneProof: afterRead, result: null };
|
|
267
|
+
}
|
|
268
|
+
return { ok: true, paneProof: beforeRead, result };
|
|
269
|
+
} catch (error) {
|
|
270
|
+
return { ok: false, paneProof: null, result: null, error };
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
if (skipIfScrolling) {
|
|
275
|
+
const read = await readExplicitPane(buildPaneInModeArgv(target));
|
|
276
|
+
if (!read.ok) {
|
|
277
|
+
if (read.paneProof) return exactPaneFailure(read.paneProof);
|
|
278
|
+
// Non-fatal: continue with remaining preflight checks.
|
|
279
|
+
} else if (safeString(read.result?.stdout).trim() === '1') {
|
|
280
|
+
return {
|
|
281
|
+
ok: false,
|
|
282
|
+
sent: false,
|
|
283
|
+
reason: 'scroll_active',
|
|
284
|
+
paneTarget: target,
|
|
285
|
+
paneCurrentCommand: '',
|
|
286
|
+
paneCapture: '',
|
|
287
|
+
exactPaneProof,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (exactPaneIdentityProvided) {
|
|
293
|
+
const read = await readExplicitPane(['display-message', '-p', '-t', target, '#{pane_start_command}']);
|
|
294
|
+
if (!read.ok) {
|
|
295
|
+
if (read.paneProof) return exactPaneFailure(read.paneProof);
|
|
296
|
+
return buildReadinessResult(false, PANE_READINESS_UNVERIFIED_REASON, '', 'start_command_failed');
|
|
297
|
+
}
|
|
298
|
+
if (/\bomx\b.*\bhud\b.*--watch/i.test(safeString(read.result?.stdout))) {
|
|
299
|
+
return buildReadinessResult(false, 'hud_pane_target', '', 'hud_pane_rejected');
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
{
|
|
304
|
+
const read = await readExplicitPane(buildPaneCurrentCommandArgv(target));
|
|
305
|
+
if (!read.ok) {
|
|
306
|
+
if (read.paneProof) return exactPaneFailure(read.paneProof);
|
|
307
|
+
if (exactPaneIdentityProvided) {
|
|
308
|
+
return buildReadinessResult(false, PANE_READINESS_UNVERIFIED_REASON, '', 'command_failed');
|
|
309
|
+
}
|
|
310
|
+
paneCurrentCommand = '';
|
|
311
|
+
} else {
|
|
312
|
+
paneCurrentCommand = safeString(read.result?.stdout).trim();
|
|
313
|
+
paneRunningShell = requireRunningAgent && isPaneRunningShell(paneCurrentCommand);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
{
|
|
318
|
+
const read = await readExplicitPane(buildCapturePaneArgv(target, captureLines));
|
|
319
|
+
if (!read.ok) {
|
|
320
|
+
if (read.paneProof) return exactPaneFailure(read.paneProof);
|
|
321
|
+
if (exactPaneIdentityProvided) {
|
|
322
|
+
return buildReadinessResult(false, PANE_READINESS_UNVERIFIED_REASON, '', 'capture_failed');
|
|
323
|
+
}
|
|
324
|
+
if (paneRunningShell) {
|
|
325
|
+
return buildReadinessResult(false, 'pane_running_shell', '', 'capture_failed');
|
|
326
|
+
}
|
|
327
|
+
if (normalizedRequireObservableState) {
|
|
328
|
+
return buildReadinessResult(false, PANE_READINESS_UNVERIFIED_REASON, '', 'capture_failed');
|
|
329
|
+
}
|
|
330
|
+
return buildReadinessResult(true, 'ok', '', paneCurrentCommand ? 'command_only' : 'none');
|
|
331
|
+
}
|
|
332
|
+
const paneCapture = safeString(read.result?.stdout);
|
|
102
333
|
const hasCaptureEvidence = paneCapture.trim() !== '';
|
|
103
334
|
if (hasCaptureEvidence) {
|
|
104
335
|
const paneShowsLiveAgent = paneLooksReady(paneCapture) || paneHasActiveTask(paneCapture);
|
|
@@ -122,6 +353,7 @@ export async function evaluatePaneInjectionReadiness(paneTarget: any, {
|
|
|
122
353
|
paneTarget: target,
|
|
123
354
|
paneCurrentCommand,
|
|
124
355
|
paneCapture,
|
|
356
|
+
exactPaneProof,
|
|
125
357
|
};
|
|
126
358
|
}
|
|
127
359
|
}
|
|
@@ -133,20 +365,13 @@ export async function evaluatePaneInjectionReadiness(paneTarget: any, {
|
|
|
133
365
|
paneTarget: target,
|
|
134
366
|
paneCurrentCommand,
|
|
135
367
|
paneCapture,
|
|
368
|
+
exactPaneProof,
|
|
136
369
|
};
|
|
137
370
|
}
|
|
138
371
|
if (normalizedRequireObservableState && !hasCaptureEvidence && !paneCurrentCommand) {
|
|
139
372
|
return buildReadinessResult(false, PANE_READINESS_UNVERIFIED_REASON, paneCapture, 'capture_empty');
|
|
140
373
|
}
|
|
141
374
|
return buildReadinessResult(true, 'ok', paneCapture, hasCaptureEvidence ? 'captured' : (paneCurrentCommand ? 'command_only' : 'none'));
|
|
142
|
-
} catch {
|
|
143
|
-
if (paneRunningShell) {
|
|
144
|
-
return buildReadinessResult(false, 'pane_running_shell', '', 'capture_failed');
|
|
145
|
-
}
|
|
146
|
-
if (normalizedRequireObservableState) {
|
|
147
|
-
return buildReadinessResult(false, PANE_READINESS_UNVERIFIED_REASON, '', 'capture_failed');
|
|
148
|
-
}
|
|
149
|
-
return buildReadinessResult(true, 'ok', '', paneCurrentCommand ? 'command_only' : 'none');
|
|
150
375
|
}
|
|
151
376
|
}
|
|
152
377
|
|
|
@@ -157,11 +382,59 @@ export async function sendPaneInput({
|
|
|
157
382
|
submitDelayMs = 0,
|
|
158
383
|
typePrompt = true,
|
|
159
384
|
queueFirstSubmit = false,
|
|
385
|
+
exactPaneId = undefined,
|
|
386
|
+
expectedPanePid = undefined,
|
|
387
|
+
expectedPaneOwnerId = undefined,
|
|
388
|
+
expectedHudPaneId = undefined,
|
|
160
389
|
}: any): Promise<any> {
|
|
161
390
|
const target = safeString(paneTarget).trim();
|
|
162
391
|
if (!target) {
|
|
163
392
|
return { ok: false, sent: false, reason: 'missing_pane_target', paneTarget: '' };
|
|
164
393
|
}
|
|
394
|
+
const bindingFailure = exactPaneBindingFailure(target, exactPaneId);
|
|
395
|
+
if (bindingFailure) return exactPaneUnavailableResult(target, bindingFailure);
|
|
396
|
+
|
|
397
|
+
const exactPaneIdentity = safeString(exactPaneId).trim();
|
|
398
|
+
let exactPaneProof: any = null;
|
|
399
|
+
let pinnedPanePid = typeof expectedPanePid === 'number' ? expectedPanePid : undefined;
|
|
400
|
+
const verifyExplicitPane = async () => {
|
|
401
|
+
const paneProof = await verifyExactPaneLive(exactPaneIdentity, pinnedPanePid);
|
|
402
|
+
exactPaneProof = paneProof.proof || null;
|
|
403
|
+
if (paneProof.ok && typeof paneProof.proof?.pid === 'number') pinnedPanePid ??= paneProof.proof.pid;
|
|
404
|
+
return paneProof;
|
|
405
|
+
};
|
|
406
|
+
const expectedOwner = safeString(expectedPaneOwnerId).trim();
|
|
407
|
+
const expectedHudPane = normalizeExactPaneId(expectedHudPaneId);
|
|
408
|
+
if (expectedHudPane && expectedHudPane === exactPaneIdentity) {
|
|
409
|
+
return { ok: false, sent: false, reason: 'hud_pane_target', paneTarget: target };
|
|
410
|
+
}
|
|
411
|
+
const verifyForEffect = async () => {
|
|
412
|
+
if (expectedOwner) {
|
|
413
|
+
const paneProof = await verifyExactPaneOwnerLive(exactPaneIdentity, pinnedPanePid, expectedOwner);
|
|
414
|
+
exactPaneProof = paneProof.proof || null;
|
|
415
|
+
return paneProof;
|
|
416
|
+
}
|
|
417
|
+
return verifyExplicitPane();
|
|
418
|
+
};
|
|
419
|
+
const initialProof = await verifyForEffect();
|
|
420
|
+
if (!initialProof.ok) return exactPaneUnavailableResult(target, initialProof);
|
|
421
|
+
try {
|
|
422
|
+
const startCommandResult = await runProcess('tmux', ['display-message', '-p', '-t', target, '#{pane_start_command}'], 3000);
|
|
423
|
+
if (/\bomx\b.*\bhud\b.*--watch/i.test(safeString(startCommandResult.stdout))) {
|
|
424
|
+
return { ok: false, sent: false, reason: 'hud_pane_target', paneTarget: target, exactPaneProof };
|
|
425
|
+
}
|
|
426
|
+
} catch {
|
|
427
|
+
return {
|
|
428
|
+
ok: false,
|
|
429
|
+
sent: false,
|
|
430
|
+
reason: PANE_READINESS_UNVERIFIED_REASON,
|
|
431
|
+
paneTarget: target,
|
|
432
|
+
exactPaneProof,
|
|
433
|
+
readinessEvidence: 'start_command_failed',
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
const postHudProof = await verifyForEffect();
|
|
437
|
+
if (!postHudProof.ok) return exactPaneUnavailableResult(target, postHudProof);
|
|
165
438
|
|
|
166
439
|
const normalizedSubmitKeyPresses = Number.isFinite(submitKeyPresses)
|
|
167
440
|
? Math.max(0, Math.floor(submitKeyPresses))
|
|
@@ -176,7 +449,7 @@ export async function sendPaneInput({
|
|
|
176
449
|
submitKeyPresses: normalizedSubmitKeyPresses,
|
|
177
450
|
})?.submitArgv;
|
|
178
451
|
if (!submitArgv) {
|
|
179
|
-
return { ok: false, sent: false, reason: 'send_failed', paneTarget: target };
|
|
452
|
+
return { ok: false, sent: false, reason: 'send_failed', paneTarget: target, exactPaneProof };
|
|
180
453
|
}
|
|
181
454
|
const pasteArgv = buildSafePasteArgv(target, literalPrompt);
|
|
182
455
|
const argv = {
|
|
@@ -203,6 +476,7 @@ export async function sendPaneInput({
|
|
|
203
476
|
reason: 'buffer_set_failed',
|
|
204
477
|
paneTarget: target,
|
|
205
478
|
argv,
|
|
479
|
+
exactPaneProof,
|
|
206
480
|
error: error instanceof Error ? error.message : safeString(error),
|
|
207
481
|
};
|
|
208
482
|
}
|
|
@@ -216,6 +490,7 @@ export async function sendPaneInput({
|
|
|
216
490
|
reason: 'buffer_show_failed',
|
|
217
491
|
paneTarget: target,
|
|
218
492
|
argv,
|
|
493
|
+
exactPaneProof,
|
|
219
494
|
error: error instanceof Error ? error.message : safeString(error),
|
|
220
495
|
};
|
|
221
496
|
}
|
|
@@ -226,12 +501,31 @@ export async function sendPaneInput({
|
|
|
226
501
|
reason: 'buffer_verify_failed',
|
|
227
502
|
paneTarget: target,
|
|
228
503
|
argv,
|
|
504
|
+
exactPaneProof,
|
|
229
505
|
expectedBytes: literalPrompt.length,
|
|
230
506
|
actualBytes: verifiedBuffer.stdout.length,
|
|
231
507
|
};
|
|
232
508
|
}
|
|
509
|
+
|
|
510
|
+
const clearProof = await verifyForEffect();
|
|
511
|
+
if (!clearProof.ok) return exactPaneUnavailableResult(target, clearProof, { argv });
|
|
233
512
|
try {
|
|
234
513
|
await runProcess('tmux', pasteArgv.clearComposerArgv, 3000);
|
|
514
|
+
} catch (error) {
|
|
515
|
+
return {
|
|
516
|
+
ok: false,
|
|
517
|
+
sent: false,
|
|
518
|
+
reason: 'buffer_paste_failed',
|
|
519
|
+
paneTarget: target,
|
|
520
|
+
argv,
|
|
521
|
+
exactPaneProof,
|
|
522
|
+
error: error instanceof Error ? error.message : safeString(error),
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
const pasteProof = await verifyForEffect();
|
|
527
|
+
if (!pasteProof.ok) return exactPaneUnavailableResult(target, pasteProof, { argv });
|
|
528
|
+
try {
|
|
235
529
|
await runProcess('tmux', pasteArgv.pasteBufferArgv, 3000);
|
|
236
530
|
} catch (error) {
|
|
237
531
|
return {
|
|
@@ -240,11 +534,14 @@ export async function sendPaneInput({
|
|
|
240
534
|
reason: 'buffer_paste_failed',
|
|
241
535
|
paneTarget: target,
|
|
242
536
|
argv,
|
|
537
|
+
exactPaneProof,
|
|
243
538
|
error: error instanceof Error ? error.message : safeString(error),
|
|
244
539
|
};
|
|
245
540
|
}
|
|
246
541
|
}
|
|
247
542
|
if (queueFirstSubmit && argv.submitArgv.length > 0) {
|
|
543
|
+
const queueProof = await verifyForEffect();
|
|
544
|
+
if (!queueProof.ok) return exactPaneUnavailableResult(target, queueProof, { argv });
|
|
248
545
|
await runProcess('tmux', ['send-keys', '-t', target, 'Tab'], 3000);
|
|
249
546
|
if (submitDelayMs > 0) {
|
|
250
547
|
await new Promise((resolve) => setTimeout(resolve, submitDelayMs));
|
|
@@ -254,9 +551,11 @@ export async function sendPaneInput({
|
|
|
254
551
|
if (submitDelayMs > 0) {
|
|
255
552
|
await new Promise((resolve) => setTimeout(resolve, submitDelayMs));
|
|
256
553
|
}
|
|
554
|
+
const submitProof = await verifyForEffect();
|
|
555
|
+
if (!submitProof.ok) return exactPaneUnavailableResult(target, submitProof, { argv });
|
|
257
556
|
await runProcess('tmux', submit, 3000);
|
|
258
557
|
}
|
|
259
|
-
return { ok: true, sent: true, reason: 'sent', paneTarget: target, argv };
|
|
558
|
+
return { ok: true, sent: true, reason: 'sent', paneTarget: target, argv, exactPaneProof };
|
|
260
559
|
} catch (error) {
|
|
261
560
|
return {
|
|
262
561
|
ok: false,
|
|
@@ -264,6 +563,7 @@ export async function sendPaneInput({
|
|
|
264
563
|
reason: 'send_failed',
|
|
265
564
|
paneTarget: target,
|
|
266
565
|
argv,
|
|
566
|
+
exactPaneProof,
|
|
267
567
|
error: error instanceof Error ? error.message : safeString(error),
|
|
268
568
|
};
|
|
269
569
|
} finally {
|
|
@@ -277,24 +577,49 @@ export async function queuePaneInput({
|
|
|
277
577
|
paneTarget,
|
|
278
578
|
prompt,
|
|
279
579
|
submitDelayMs = 80,
|
|
580
|
+
exactPaneId = undefined,
|
|
280
581
|
}: any): Promise<any> {
|
|
582
|
+
const target = safeString(paneTarget).trim();
|
|
583
|
+
const exactPaneIdentity = safeString(exactPaneId).trim();
|
|
584
|
+
const bindingFailure = exactPaneBindingFailure(target, exactPaneId);
|
|
585
|
+
if (bindingFailure) return exactPaneUnavailableResult(target, bindingFailure);
|
|
281
586
|
const sendResult = await sendPaneInput({
|
|
282
587
|
paneTarget,
|
|
283
588
|
prompt,
|
|
284
589
|
submitKeyPresses: 0,
|
|
590
|
+
exactPaneId: exactPaneIdentity,
|
|
285
591
|
});
|
|
286
592
|
if (!sendResult.ok) return sendResult;
|
|
287
593
|
|
|
288
|
-
|
|
594
|
+
let exactPaneProof = sendResult.exactPaneProof || null;
|
|
595
|
+
let expectedPanePid = typeof sendResult.exactPaneProof?.pid === 'number' ? sendResult.exactPaneProof.pid : undefined;
|
|
596
|
+
const verifyExplicitPane = async () => {
|
|
597
|
+
const paneProof = await verifyExactPaneLive(exactPaneIdentity, expectedPanePid);
|
|
598
|
+
exactPaneProof = paneProof.proof || null;
|
|
599
|
+
if (paneProof.ok && typeof paneProof.proof?.pid === 'number') expectedPanePid ??= paneProof.proof.pid;
|
|
600
|
+
return paneProof;
|
|
601
|
+
};
|
|
289
602
|
const submitArgv = [
|
|
290
603
|
['send-keys', '-t', target, 'Tab'],
|
|
291
604
|
['send-keys', '-t', target, 'C-m'],
|
|
292
605
|
];
|
|
606
|
+
const firstSubmitProof = await verifyExplicitPane();
|
|
607
|
+
if (!firstSubmitProof.ok) {
|
|
608
|
+
return exactPaneUnavailableResult(target, firstSubmitProof, {
|
|
609
|
+
argv: { typeArgv: sendResult.argv?.typeArgv || null, submitArgv },
|
|
610
|
+
});
|
|
611
|
+
}
|
|
293
612
|
try {
|
|
294
613
|
await runProcess('tmux', submitArgv[0], 3000);
|
|
295
614
|
if (submitDelayMs > 0) {
|
|
296
615
|
await new Promise((resolve) => setTimeout(resolve, submitDelayMs));
|
|
297
616
|
}
|
|
617
|
+
const secondSubmitProof = await verifyExplicitPane();
|
|
618
|
+
if (!secondSubmitProof.ok) {
|
|
619
|
+
return exactPaneUnavailableResult(target, secondSubmitProof, {
|
|
620
|
+
argv: { typeArgv: sendResult.argv?.typeArgv || null, submitArgv },
|
|
621
|
+
});
|
|
622
|
+
}
|
|
298
623
|
await runProcess('tmux', submitArgv[1], 3000);
|
|
299
624
|
return {
|
|
300
625
|
ok: true,
|
|
@@ -302,6 +627,7 @@ export async function queuePaneInput({
|
|
|
302
627
|
reason: 'queued',
|
|
303
628
|
paneTarget: target,
|
|
304
629
|
argv: { typeArgv: sendResult.argv?.typeArgv || null, submitArgv },
|
|
630
|
+
exactPaneProof,
|
|
305
631
|
};
|
|
306
632
|
} catch (error) {
|
|
307
633
|
return {
|
|
@@ -310,11 +636,12 @@ export async function queuePaneInput({
|
|
|
310
636
|
reason: 'queue_failed',
|
|
311
637
|
paneTarget: target,
|
|
312
638
|
argv: { typeArgv: sendResult.argv?.typeArgv || null, submitArgv },
|
|
639
|
+
exactPaneProof,
|
|
313
640
|
error: error instanceof Error ? error.message : safeString(error),
|
|
314
641
|
};
|
|
315
642
|
}
|
|
316
643
|
}
|
|
317
644
|
|
|
318
|
-
export async function checkPaneReadyForTeamSendKeys(paneTarget: any): Promise<any> {
|
|
319
|
-
return evaluatePaneInjectionReadiness(paneTarget);
|
|
645
|
+
export async function checkPaneReadyForTeamSendKeys(paneTarget: any, exactPaneId: any): Promise<any> {
|
|
646
|
+
return evaluatePaneInjectionReadiness(paneTarget, { exactPaneId });
|
|
320
647
|
}
|