oh-my-codex 0.20.3 → 0.20.5
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 +35 -18
- package/Cargo.toml +1 -1
- package/README.md +2 -2
- package/crates/omx-runtime/Cargo.toml +3 -0
- package/crates/omx-runtime/src/main.rs +390 -0
- package/crates/omx-runtime/tests/execution.rs +264 -0
- package/dist/adapt/__tests__/herdr-target.test.d.ts +2 -0
- package/dist/adapt/__tests__/herdr-target.test.d.ts.map +1 -0
- package/dist/adapt/__tests__/herdr-target.test.js +72 -0
- package/dist/adapt/__tests__/herdr-target.test.js.map +1 -0
- package/dist/adapt/contracts.d.ts +1 -1
- package/dist/adapt/contracts.d.ts.map +1 -1
- package/dist/adapt/contracts.js +1 -1
- package/dist/adapt/contracts.js.map +1 -1
- package/dist/adapt/herdr/__tests__/authority.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/authority.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/authority.test.js +49 -0
- package/dist/adapt/herdr/__tests__/authority.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/bridge.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/bridge.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/bridge.test.js +176 -0
- package/dist/adapt/herdr/__tests__/bridge.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/sanitize.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/sanitize.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/sanitize.test.js +45 -0
- package/dist/adapt/herdr/__tests__/sanitize.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/semantic.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/semantic.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/semantic.test.js +130 -0
- package/dist/adapt/herdr/__tests__/semantic.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/seq-store.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/seq-store.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/seq-store.test.js +54 -0
- package/dist/adapt/herdr/__tests__/seq-store.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/socket-live.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/socket-live.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/socket-live.test.js +104 -0
- package/dist/adapt/herdr/__tests__/socket-live.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/team-map.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/team-map.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/team-map.test.js +46 -0
- package/dist/adapt/herdr/__tests__/team-map.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/transport.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/transport.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/transport.test.js +160 -0
- package/dist/adapt/herdr/__tests__/transport.test.js.map +1 -0
- package/dist/adapt/herdr/__tests__/wiring.test.d.ts +2 -0
- package/dist/adapt/herdr/__tests__/wiring.test.d.ts.map +1 -0
- package/dist/adapt/herdr/__tests__/wiring.test.js +118 -0
- package/dist/adapt/herdr/__tests__/wiring.test.js.map +1 -0
- package/dist/adapt/herdr/authority.d.ts +34 -0
- package/dist/adapt/herdr/authority.d.ts.map +1 -0
- package/dist/adapt/herdr/authority.js +71 -0
- package/dist/adapt/herdr/authority.js.map +1 -0
- package/dist/adapt/herdr/bridge.d.ts +84 -0
- package/dist/adapt/herdr/bridge.d.ts.map +1 -0
- package/dist/adapt/herdr/bridge.js +222 -0
- package/dist/adapt/herdr/bridge.js.map +1 -0
- package/dist/adapt/herdr/sanitize.d.ts +20 -0
- package/dist/adapt/herdr/sanitize.d.ts.map +1 -0
- package/dist/adapt/herdr/sanitize.js +70 -0
- package/dist/adapt/herdr/sanitize.js.map +1 -0
- package/dist/adapt/herdr/semantic.d.ts +67 -0
- package/dist/adapt/herdr/semantic.d.ts.map +1 -0
- package/dist/adapt/herdr/semantic.js +170 -0
- package/dist/adapt/herdr/semantic.js.map +1 -0
- package/dist/adapt/herdr/seq-store.d.ts +32 -0
- package/dist/adapt/herdr/seq-store.d.ts.map +1 -0
- package/dist/adapt/herdr/seq-store.js +126 -0
- package/dist/adapt/herdr/seq-store.js.map +1 -0
- package/dist/adapt/herdr/team-map.d.ts +30 -0
- package/dist/adapt/herdr/team-map.d.ts.map +1 -0
- package/dist/adapt/herdr/team-map.js +37 -0
- package/dist/adapt/herdr/team-map.js.map +1 -0
- package/dist/adapt/herdr/transport.d.ts +115 -0
- package/dist/adapt/herdr/transport.d.ts.map +1 -0
- package/dist/adapt/herdr/transport.js +260 -0
- package/dist/adapt/herdr/transport.js.map +1 -0
- package/dist/adapt/herdr/wiring.d.ts +24 -0
- package/dist/adapt/herdr/wiring.d.ts.map +1 -0
- package/dist/adapt/herdr/wiring.js +62 -0
- package/dist/adapt/herdr/wiring.js.map +1 -0
- package/dist/adapt/herdr.d.ts +19 -0
- package/dist/adapt/herdr.d.ts.map +1 -0
- package/dist/adapt/herdr.js +115 -0
- package/dist/adapt/herdr.js.map +1 -0
- package/dist/adapt/index.d.ts +4 -0
- package/dist/adapt/index.d.ts.map +1 -1
- package/dist/adapt/index.js +48 -0
- package/dist/adapt/index.js.map +1 -1
- package/dist/adapt/registry.d.ts.map +1 -1
- package/dist/adapt/registry.js +11 -0
- package/dist/adapt/registry.js.map +1 -1
- package/dist/auth/__tests__/hotswap.test.js +60 -1
- package/dist/auth/__tests__/hotswap.test.js.map +1 -1
- package/dist/auth/__tests__/storage.test.js +33 -1
- package/dist/auth/__tests__/storage.test.js.map +1 -1
- package/dist/auth/hotswap.d.ts +16 -2
- package/dist/auth/hotswap.d.ts.map +1 -1
- package/dist/auth/hotswap.js +22 -7
- package/dist/auth/hotswap.js.map +1 -1
- package/dist/auth/storage.js +1 -1
- package/dist/auth/storage.js.map +1 -1
- package/dist/autopilot/__tests__/ralplan-gate.test.js +86 -1333
- package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -1
- package/dist/autopilot/ralplan-gate.d.ts.map +1 -1
- package/dist/autopilot/ralplan-gate.js +7 -6
- package/dist/autopilot/ralplan-gate.js.map +1 -1
- package/dist/cli/__tests__/agents-init.test.js +4 -23
- package/dist/cli/__tests__/agents-init.test.js.map +1 -1
- package/dist/cli/__tests__/api.test.js +61 -24
- package/dist/cli/__tests__/api.test.js.map +1 -1
- package/dist/cli/__tests__/auth.test.js +3 -1
- package/dist/cli/__tests__/auth.test.js.map +1 -1
- package/dist/cli/__tests__/codex-feature-probe.test.js +66 -1
- package/dist/cli/__tests__/codex-feature-probe.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +70 -2
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/detached-leader-teardown.test.d.ts +2 -0
- package/dist/cli/__tests__/detached-leader-teardown.test.d.ts.map +1 -0
- package/dist/cli/__tests__/detached-leader-teardown.test.js +473 -0
- package/dist/cli/__tests__/detached-leader-teardown.test.js.map +1 -0
- package/dist/cli/__tests__/doctor-process-identity-readiness.test.d.ts +2 -0
- package/dist/cli/__tests__/doctor-process-identity-readiness.test.d.ts.map +1 -0
- package/dist/cli/__tests__/doctor-process-identity-readiness.test.js +103 -0
- package/dist/cli/__tests__/doctor-process-identity-readiness.test.js.map +1 -0
- package/dist/cli/__tests__/doctor-state-root-binding.test.d.ts +2 -0
- package/dist/cli/__tests__/doctor-state-root-binding.test.d.ts.map +1 -0
- package/dist/cli/__tests__/doctor-state-root-binding.test.js +139 -0
- package/dist/cli/__tests__/doctor-state-root-binding.test.js.map +1 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.js +35 -3
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/exec.test.js +75 -0
- package/dist/cli/__tests__/exec.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +621 -460
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +1020 -143
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-parity.test.js +4 -3
- package/dist/cli/__tests__/mcp-parity.test.js.map +1 -1
- package/dist/cli/__tests__/native-assets.test.js +398 -16
- package/dist/cli/__tests__/native-assets.test.js.map +1 -1
- package/dist/cli/__tests__/native-hook-claim-journal.test.js +53 -5
- package/dist/cli/__tests__/native-hook-claim-journal.test.js.map +1 -1
- package/dist/cli/__tests__/ralph.test.js +2 -2
- package/dist/cli/__tests__/ralph.test.js.map +1 -1
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.js +57 -57
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.js.map +1 -1
- package/dist/cli/__tests__/ralplan-child-binding-3212.test.d.ts +2 -0
- package/dist/cli/__tests__/ralplan-child-binding-3212.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralplan-child-binding-3212.test.js +56 -0
- package/dist/cli/__tests__/ralplan-child-binding-3212.test.js.map +1 -0
- package/dist/cli/__tests__/ralplan.test.js +84 -12
- package/dist/cli/__tests__/ralplan.test.js.map +1 -1
- package/dist/cli/__tests__/session-scoped-runtime.test.js +1118 -43
- package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +8 -55
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +183 -4
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js +93 -41
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +45 -1
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/ultragoal.test.js +117 -2
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +50 -5
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/__tests__/update.test.js +669 -177
- package/dist/cli/__tests__/update.test.js.map +1 -1
- package/dist/cli/__tests__/windows-popup-loop-contract.test.js +32 -2
- package/dist/cli/__tests__/windows-popup-loop-contract.test.js.map +1 -1
- package/dist/cli/api.d.ts.map +1 -1
- package/dist/cli/api.js +9 -10
- package/dist/cli/api.js.map +1 -1
- package/dist/cli/codex-feature-probe.d.ts +16 -0
- package/dist/cli/codex-feature-probe.d.ts.map +1 -1
- package/dist/cli/codex-feature-probe.js +44 -0
- package/dist/cli/codex-feature-probe.js.map +1 -1
- package/dist/cli/codex-home.d.ts.map +1 -1
- package/dist/cli/codex-home.js +7 -4
- package/dist/cli/codex-home.js.map +1 -1
- package/dist/cli/doctor.d.ts +17 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +277 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +231 -12
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2298 -735
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/native-assets.d.ts +25 -0
- package/dist/cli/native-assets.d.ts.map +1 -1
- package/dist/cli/native-assets.js +448 -51
- package/dist/cli/native-assets.js.map +1 -1
- package/dist/cli/native-hook-claim-journal.d.ts +8 -4
- package/dist/cli/native-hook-claim-journal.d.ts.map +1 -1
- package/dist/cli/native-hook-claim-journal.js +30 -8
- package/dist/cli/native-hook-claim-journal.js.map +1 -1
- package/dist/cli/package-manager-ownership.d.ts +63 -0
- package/dist/cli/package-manager-ownership.d.ts.map +1 -0
- package/dist/cli/package-manager-ownership.js +323 -0
- package/dist/cli/package-manager-ownership.js.map +1 -0
- package/dist/cli/ralph.js +2 -2
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/ralplan.d.ts +4 -2
- package/dist/cli/ralplan.d.ts.map +1 -1
- package/dist/cli/ralplan.js +76 -34
- package/dist/cli/ralplan.js.map +1 -1
- package/dist/cli/setup-preferences.d.ts +15 -0
- package/dist/cli/setup-preferences.d.ts.map +1 -1
- package/dist/cli/setup-preferences.js +27 -1
- package/dist/cli/setup-preferences.js.map +1 -1
- package/dist/cli/setup.d.ts +3 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +55 -32
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/sparkshell.d.ts.map +1 -1
- package/dist/cli/sparkshell.js +52 -9
- package/dist/cli/sparkshell.js.map +1 -1
- package/dist/cli/ultragoal.d.ts.map +1 -1
- package/dist/cli/ultragoal.js +2 -2
- package/dist/cli/ultragoal.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +27 -28
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/cli/update-worker.d.ts +2 -0
- package/dist/cli/update-worker.d.ts.map +1 -0
- package/dist/cli/update-worker.js +142 -0
- package/dist/cli/update-worker.js.map +1 -0
- package/dist/cli/update.d.ts +14 -22
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +192 -241
- package/dist/cli/update.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +173 -29
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +3 -1
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/generator.d.ts +25 -3
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +113 -35
- package/dist/config/generator.js.map +1 -1
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js +25 -0
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.d.ts +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.d.ts.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.js +2 -0
- package/dist/goal-workflows/codex-goal-snapshot.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +3 -1
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +27 -4
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/issue-3293-autopilot-handoff.test.d.ts +2 -0
- package/dist/hooks/__tests__/issue-3293-autopilot-handoff.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/issue-3293-autopilot-handoff.test.js +172 -0
- package/dist/hooks/__tests__/issue-3293-autopilot-handoff.test.js.map +1 -0
- package/dist/hooks/__tests__/keyword-detector.test.js +172 -33
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +173 -11
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +1 -0
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +65 -17
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +27 -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 +10 -118
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js +7 -0
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +2 -2
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +4 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.js +2 -1
- package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +1 -0
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-guidance-contract.test.js +9 -0
- package/dist/hooks/__tests__/prompt-guidance-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/session.test.js +2976 -557
- package/dist/hooks/__tests__/session.test.js.map +1 -1
- package/dist/hooks/agents-overlay.js +1 -1
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js +108 -2
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/sdk.test.js +151 -1
- package/dist/hooks/extensibility/__tests__/sdk.test.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js +20 -3
- package/dist/hooks/extensibility/dispatcher.js.map +1 -1
- package/dist/hooks/extensibility/plugin-runner.js +1 -0
- package/dist/hooks/extensibility/plugin-runner.js.map +1 -1
- package/dist/hooks/extensibility/runtime.d.ts.map +1 -1
- package/dist/hooks/extensibility/runtime.js.map +1 -1
- package/dist/hooks/extensibility/sdk/paths.d.ts +1 -1
- package/dist/hooks/extensibility/sdk/paths.d.ts.map +1 -1
- package/dist/hooks/extensibility/sdk/paths.js +2 -2
- package/dist/hooks/extensibility/sdk/paths.js.map +1 -1
- package/dist/hooks/extensibility/sdk/runtime-state.d.ts +1 -1
- package/dist/hooks/extensibility/sdk/runtime-state.d.ts.map +1 -1
- package/dist/hooks/extensibility/sdk/runtime-state.js +55 -15
- package/dist/hooks/extensibility/sdk/runtime-state.js.map +1 -1
- package/dist/hooks/extensibility/sdk.d.ts +1 -0
- package/dist/hooks/extensibility/sdk.d.ts.map +1 -1
- package/dist/hooks/extensibility/sdk.js +1 -1
- package/dist/hooks/extensibility/sdk.js.map +1 -1
- package/dist/hooks/extensibility/types.d.ts +7 -0
- package/dist/hooks/extensibility/types.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.d.ts +10 -3
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +116 -20
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/session.d.ts +180 -14
- package/dist/hooks/session.d.ts.map +1 -1
- package/dist/hooks/session.js +1402 -281
- package/dist/hooks/session.js.map +1 -1
- package/dist/hud/__tests__/hud-tmux-injection.test.js +6 -6
- package/dist/hud/__tests__/hud-tmux-injection.test.js.map +1 -1
- package/dist/hud/__tests__/index.test.js +26 -16
- package/dist/hud/__tests__/index.test.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.js +83 -78
- package/dist/hud/__tests__/reconcile.test.js.map +1 -1
- package/dist/hud/__tests__/state.test.js +36 -31
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/__tests__/tmux.test.js +155 -198
- package/dist/hud/__tests__/tmux.test.js.map +1 -1
- package/dist/hud/tmux.d.ts +42 -4
- package/dist/hud/tmux.d.ts.map +1 -1
- package/dist/hud/tmux.js +1017 -139
- package/dist/hud/tmux.js.map +1 -1
- package/dist/leader/__tests__/contract.test.js +71 -34
- package/dist/leader/__tests__/contract.test.js.map +1 -1
- package/dist/leader/contract.d.ts +1 -6
- package/dist/leader/contract.d.ts.map +1 -1
- package/dist/leader/contract.js +25 -24
- package/dist/leader/contract.js.map +1 -1
- package/dist/mcp/__tests__/hermes-bridge.test.js +17 -0
- package/dist/mcp/__tests__/hermes-bridge.test.js.map +1 -1
- package/dist/mcp/__tests__/server-lifecycle.test.js +4 -4
- package/dist/mcp/__tests__/state-paths.test.js +735 -4
- package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server.test.js +1 -1
- package/dist/mcp/__tests__/state-server.test.js.map +1 -1
- package/dist/mcp/__tests__/trace-server.test.js +2 -2
- package/dist/mcp/__tests__/trace-server.test.js.map +1 -1
- package/dist/mcp/hermes-bridge.d.ts.map +1 -1
- package/dist/mcp/hermes-bridge.js +2 -2
- package/dist/mcp/hermes-bridge.js.map +1 -1
- package/dist/mcp/state-paths.d.ts +78 -4
- package/dist/mcp/state-paths.d.ts.map +1 -1
- package/dist/mcp/state-paths.js +543 -40
- package/dist/mcp/state-paths.js.map +1 -1
- package/dist/mcp/state-server.d.ts +4 -4
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/modes/__tests__/base-autopilot-gates.test.js +36 -7
- package/dist/modes/__tests__/base-autopilot-gates.test.js.map +1 -1
- package/dist/modes/__tests__/base-multi-state-compat.test.js +1 -1
- package/dist/modes/__tests__/base-multi-state-compat.test.js.map +1 -1
- package/dist/modes/__tests__/base-session-scope.test.js +17 -8
- package/dist/modes/__tests__/base-session-scope.test.js.map +1 -1
- package/dist/modes/base.d.ts +5 -5
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +76 -21
- package/dist/modes/base.js.map +1 -1
- package/dist/native-assets/archive.d.ts +17 -0
- package/dist/native-assets/archive.d.ts.map +1 -0
- package/dist/native-assets/archive.js +238 -0
- package/dist/native-assets/archive.js.map +1 -0
- package/dist/native-assets/policy.d.ts +42 -0
- package/dist/native-assets/policy.d.ts.map +1 -0
- package/dist/native-assets/policy.js +155 -0
- package/dist/native-assets/policy.js.map +1 -0
- package/dist/pipeline/__tests__/orchestrator.test.js +162 -40
- package/dist/pipeline/__tests__/orchestrator.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +66 -149
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/orchestrator.d.ts.map +1 -1
- package/dist/pipeline/orchestrator.js +124 -18
- package/dist/pipeline/orchestrator.js.map +1 -1
- package/dist/pipeline/stages/ralplan.d.ts.map +1 -1
- package/dist/pipeline/stages/ralplan.js +36 -8
- package/dist/pipeline/stages/ralplan.js.map +1 -1
- package/dist/ralplan/__tests__/consensus-gate.test.js +70 -1437
- package/dist/ralplan/__tests__/consensus-gate.test.js.map +1 -1
- package/dist/ralplan/__tests__/documented-leader-preflight.test.js +328 -39
- package/dist/ralplan/__tests__/documented-leader-preflight.test.js.map +1 -1
- package/dist/ralplan/__tests__/runtime.test.js +82 -102
- package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
- package/dist/ralplan/consensus-gate.d.ts +9 -1
- package/dist/ralplan/consensus-gate.d.ts.map +1 -1
- package/dist/ralplan/consensus-gate.js +40 -304
- package/dist/ralplan/consensus-gate.js.map +1 -1
- package/dist/ralplan/documented-leader-preflight.d.ts +15 -8
- package/dist/ralplan/documented-leader-preflight.d.ts.map +1 -1
- package/dist/ralplan/documented-leader-preflight.js +356 -54
- package/dist/ralplan/documented-leader-preflight.js.map +1 -1
- package/dist/ralplan/runtime.d.ts +1 -1
- package/dist/ralplan/runtime.d.ts.map +1 -1
- package/dist/ralplan/runtime.js +68 -173
- package/dist/ralplan/runtime.js.map +1 -1
- package/dist/runtime/run-state.d.ts +5 -1
- package/dist/runtime/run-state.d.ts.map +1 -1
- package/dist/runtime/run-state.js +15 -8
- package/dist/runtime/run-state.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +14071 -8859
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/issue-3293-callsite-parity.test.d.ts +2 -0
- package/dist/scripts/__tests__/issue-3293-callsite-parity.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/issue-3293-callsite-parity.test.js +225 -0
- package/dist/scripts/__tests__/issue-3293-callsite-parity.test.js.map +1 -0
- package/dist/scripts/__tests__/issue-3293-cancel-transaction.test.d.ts +2 -0
- package/dist/scripts/__tests__/issue-3293-cancel-transaction.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/issue-3293-cancel-transaction.test.js +188 -0
- package/dist/scripts/__tests__/issue-3293-cancel-transaction.test.js.map +1 -0
- package/dist/scripts/__tests__/issue-3293-hook-owned-cancel.test.d.ts +2 -0
- package/dist/scripts/__tests__/issue-3293-hook-owned-cancel.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/issue-3293-hook-owned-cancel.test.js +259 -0
- package/dist/scripts/__tests__/issue-3293-hook-owned-cancel.test.js.map +1 -0
- package/dist/scripts/__tests__/issue-3311-ultragoal-native-outside-tmux.test.d.ts +2 -0
- package/dist/scripts/__tests__/issue-3311-ultragoal-native-outside-tmux.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/issue-3311-ultragoal-native-outside-tmux.test.js +491 -0
- package/dist/scripts/__tests__/issue-3311-ultragoal-native-outside-tmux.test.js.map +1 -0
- package/dist/scripts/__tests__/issue-3358-ultragoal-cancel-lifecycle.test.d.ts +2 -0
- package/dist/scripts/__tests__/issue-3358-ultragoal-cancel-lifecycle.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/issue-3358-ultragoal-cancel-lifecycle.test.js +708 -0
- package/dist/scripts/__tests__/issue-3358-ultragoal-cancel-lifecycle.test.js.map +1 -0
- package/dist/scripts/__tests__/issue-3369-autopilot-ralplan-state-machine.test.d.ts +2 -0
- package/dist/scripts/__tests__/issue-3369-autopilot-ralplan-state-machine.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/issue-3369-autopilot-ralplan-state-machine.test.js +208 -0
- package/dist/scripts/__tests__/issue-3369-autopilot-ralplan-state-machine.test.js.map +1 -0
- package/dist/scripts/__tests__/notify-state-io.test.js +26 -0
- package/dist/scripts/__tests__/notify-state-io.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-tmux-injection.test.js +23 -1
- package/dist/scripts/__tests__/notify-tmux-injection.test.js.map +1 -1
- package/dist/scripts/__tests__/postinstall.test.js +19 -1
- package/dist/scripts/__tests__/postinstall.test.js.map +1 -1
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.js +25 -8
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.js.map +1 -1
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.js +60 -25
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.js.map +1 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js +155 -16
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/__tests__/verify-native-release-assets.test.d.ts +2 -0
- package/dist/scripts/__tests__/verify-native-release-assets.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/verify-native-release-assets.test.js +235 -0
- package/dist/scripts/__tests__/verify-native-release-assets.test.js.map +1 -0
- package/dist/scripts/codex-native-hook.d.ts +50 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +3559 -451
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/codex-native-pre-post.d.ts +9 -0
- package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
- package/dist/scripts/codex-native-pre-post.js +35 -12
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/generate-native-release-manifest.js +80 -51
- package/dist/scripts/generate-native-release-manifest.js.map +1 -1
- package/dist/scripts/notify-fallback-watcher.js +28 -39
- package/dist/scripts/notify-fallback-watcher.js.map +1 -1
- package/dist/scripts/notify-hook/state-io.d.ts.map +1 -1
- package/dist/scripts/notify-hook/state-io.js +5 -0
- package/dist/scripts/notify-hook/state-io.js.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.js +32 -3
- package/dist/scripts/notify-hook/team-leader-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.js +23 -3
- package/dist/scripts/notify-hook/team-worker-stop.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker.js +45 -5
- package/dist/scripts/notify-hook/team-worker.js.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts +1 -0
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.js +4 -1
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
- package/dist/scripts/notify-hook.js +78 -82
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/scripts/postinstall-advisory.d.ts +14 -0
- package/dist/scripts/postinstall-advisory.d.ts.map +1 -0
- package/dist/scripts/postinstall-advisory.js +49 -0
- package/dist/scripts/postinstall-advisory.js.map +1 -0
- package/dist/scripts/postinstall.d.ts +1 -1
- package/dist/scripts/postinstall.d.ts.map +1 -1
- package/dist/scripts/postinstall.js +1 -1
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +32 -1
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +413 -60
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.d.ts.map +1 -1
- package/dist/scripts/sync-plugin-mirror.js +16 -1
- package/dist/scripts/sync-plugin-mirror.js.map +1 -1
- package/dist/scripts/verify-native-release-assets.js +37 -23
- package/dist/scripts/verify-native-release-assets.js.map +1 -1
- package/dist/state/__tests__/mode-state-context.test.js +12 -5
- package/dist/state/__tests__/mode-state-context.test.js.map +1 -1
- package/dist/state/__tests__/operations.test.js +460 -850
- package/dist/state/__tests__/operations.test.js.map +1 -1
- package/dist/state/__tests__/skill-active.test.js +400 -2
- package/dist/state/__tests__/skill-active.test.js.map +1 -1
- package/dist/state/mode-state-context.d.ts +3 -0
- package/dist/state/mode-state-context.d.ts.map +1 -1
- package/dist/state/mode-state-context.js +27 -13
- package/dist/state/mode-state-context.js.map +1 -1
- package/dist/state/operations.d.ts +3 -0
- package/dist/state/operations.d.ts.map +1 -1
- package/dist/state/operations.js +144 -40
- package/dist/state/operations.js.map +1 -1
- package/dist/state/skill-active.d.ts +18 -1
- package/dist/state/skill-active.d.ts.map +1 -1
- package/dist/state/skill-active.js +420 -23
- package/dist/state/skill-active.js.map +1 -1
- package/dist/state/workflow-transition-reconcile.d.ts +3 -0
- package/dist/state/workflow-transition-reconcile.d.ts.map +1 -1
- package/dist/state/workflow-transition-reconcile.js +10 -4
- package/dist/state/workflow-transition-reconcile.js.map +1 -1
- package/dist/state/workflow-transition.d.ts.map +1 -1
- package/dist/state/workflow-transition.js +3 -1
- package/dist/state/workflow-transition.js.map +1 -1
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.js +27 -0
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.js.map +1 -1
- package/dist/subagents/__tests__/tracker.test.js +837 -1048
- package/dist/subagents/__tests__/tracker.test.js.map +1 -1
- package/dist/subagents/tracker.d.ts +64 -60
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +809 -358
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/team/__tests__/delivery-e2e-smoke.test.js +6 -7
- package/dist/team/__tests__/delivery-e2e-smoke.test.js.map +1 -1
- package/dist/team/__tests__/mcp-comm.test.js +104 -3
- package/dist/team/__tests__/mcp-comm.test.js.map +1 -1
- package/dist/team/__tests__/notice-ledger.test.d.ts +2 -0
- package/dist/team/__tests__/notice-ledger.test.d.ts.map +1 -0
- package/dist/team/__tests__/notice-ledger.test.js +131 -0
- package/dist/team/__tests__/notice-ledger.test.js.map +1 -0
- package/dist/team/__tests__/pane-teardown-residue-e2e.test.d.ts +2 -0
- package/dist/team/__tests__/pane-teardown-residue-e2e.test.d.ts.map +1 -0
- package/dist/team/__tests__/pane-teardown-residue-e2e.test.js +410 -0
- package/dist/team/__tests__/pane-teardown-residue-e2e.test.js.map +1 -0
- package/dist/team/__tests__/phase-controller.test.js +20 -0
- package/dist/team/__tests__/phase-controller.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +725 -59
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +222 -237
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/state-root.test.js +117 -2
- package/dist/team/__tests__/state-root.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +887 -92
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/tmux-source-authority-realtmux.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-source-authority-realtmux.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-source-authority-realtmux.test.js +149 -0
- package/dist/team/__tests__/tmux-source-authority-realtmux.test.js.map +1 -0
- package/dist/team/__tests__/tmux-test-fixture.d.ts +69 -0
- package/dist/team/__tests__/tmux-test-fixture.d.ts.map +1 -1
- package/dist/team/__tests__/tmux-test-fixture.js +242 -15
- package/dist/team/__tests__/tmux-test-fixture.js.map +1 -1
- package/dist/team/__tests__/tmux-test-fixture.test.js +177 -1
- package/dist/team/__tests__/tmux-test-fixture.test.js.map +1 -1
- package/dist/team/__tests__/worker-runtime-identity.test.js +45 -72
- package/dist/team/__tests__/worker-runtime-identity.test.js.map +1 -1
- package/dist/team/notice-ledger.d.ts +54 -0
- package/dist/team/notice-ledger.d.ts.map +1 -0
- package/dist/team/notice-ledger.js +259 -0
- package/dist/team/notice-ledger.js.map +1 -0
- package/dist/team/phase-controller.d.ts.map +1 -1
- package/dist/team/phase-controller.js +2 -0
- package/dist/team/phase-controller.js.map +1 -1
- package/dist/team/runtime.d.ts +3 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +314 -142
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +161 -91
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/monitor.d.ts +10 -0
- package/dist/team/state/monitor.d.ts.map +1 -1
- package/dist/team/state/monitor.js +13 -0
- package/dist/team/state/monitor.js.map +1 -1
- package/dist/team/state/types.d.ts +15 -0
- package/dist/team/state/types.d.ts.map +1 -1
- package/dist/team/state/types.js.map +1 -1
- package/dist/team/state-root.d.ts +12 -0
- package/dist/team/state-root.d.ts.map +1 -1
- package/dist/team/state-root.js +177 -0
- package/dist/team/state-root.js.map +1 -1
- package/dist/team/state.d.ts +18 -0
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +36 -0
- package/dist/team/state.js.map +1 -1
- package/dist/team/tmux-session.d.ts +40 -4
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +513 -166
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +950 -2
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js +1 -0
- package/dist/ultragoal/__tests__/docs-contract.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts +35 -1
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +232 -46
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/utils/__tests__/file-durability.test.js +58 -1
- package/dist/utils/__tests__/file-durability.test.js.map +1 -1
- package/dist/utils/__tests__/paths.test.js +21 -1
- package/dist/utils/__tests__/paths.test.js.map +1 -1
- package/dist/utils/file-durability.d.ts +10 -0
- package/dist/utils/file-durability.d.ts.map +1 -1
- package/dist/utils/file-durability.js +34 -4
- package/dist/utils/file-durability.js.map +1 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +14 -6
- package/dist/utils/paths.js.map +1 -1
- package/dist/verification/__tests__/ci-rust-gates.test.js +49 -4
- package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
- package/dist/verification/__tests__/explore-harness-release-workflow.test.js +60 -0
- package/dist/verification/__tests__/explore-harness-release-workflow.test.js.map +1 -1
- package/dist/verification/__tests__/native-release-manifest.test.js +157 -4
- package/dist/verification/__tests__/native-release-manifest.test.js.map +1 -1
- package/package.json +13 -5
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +81 -17
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +13 -5
- package/plugins/oh-my-codex/skills/cancel/SKILL.md +30 -85
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +5 -5
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +15 -17
- package/plugins/oh-my-codex/skills/ultragoal/SKILL.md +3 -2
- package/skills/autopilot/SKILL.md +13 -5
- package/skills/cancel/SKILL.md +30 -85
- package/skills/ralph/SKILL.md +5 -5
- package/skills/ralplan/SKILL.md +15 -17
- package/skills/ultragoal/SKILL.md +3 -2
- package/src/scripts/__tests__/codex-native-hook.test.ts +6091 -540
- package/src/scripts/__tests__/issue-3293-callsite-parity.test.ts +187 -0
- package/src/scripts/__tests__/issue-3293-cancel-transaction.test.ts +189 -0
- package/src/scripts/__tests__/issue-3293-hook-owned-cancel.test.ts +187 -0
- package/src/scripts/__tests__/issue-3311-ultragoal-native-outside-tmux.test.ts +591 -0
- package/src/scripts/__tests__/issue-3358-ultragoal-cancel-lifecycle.test.ts +701 -0
- package/src/scripts/__tests__/issue-3369-autopilot-ralplan-state-machine.test.ts +211 -0
- package/src/scripts/__tests__/notify-state-io.test.ts +29 -0
- package/src/scripts/__tests__/notify-tmux-injection.test.ts +26 -1
- package/src/scripts/__tests__/postinstall.test.ts +23 -1
- package/src/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.ts +27 -8
- package/src/scripts/__tests__/role-intent-durable-recovery-3181.test.ts +61 -27
- package/src/scripts/__tests__/smoke-packed-install.test.ts +209 -18
- package/src/scripts/__tests__/verify-native-release-assets.test.ts +240 -0
- package/src/scripts/codex-native-hook.ts +3638 -475
- package/src/scripts/codex-native-pre-post.ts +43 -12
- package/src/scripts/generate-native-release-manifest.ts +83 -79
- package/src/scripts/notify-fallback-watcher.ts +38 -38
- package/src/scripts/notify-hook/state-io.ts +11 -0
- package/src/scripts/notify-hook/team-leader-nudge.ts +32 -4
- package/src/scripts/notify-hook/team-worker-stop.ts +23 -4
- package/src/scripts/notify-hook/team-worker.ts +43 -5
- package/src/scripts/notify-hook/tmux-injection.ts +5 -1
- package/src/scripts/notify-hook.ts +83 -82
- package/src/scripts/postinstall-advisory.ts +67 -0
- package/src/scripts/postinstall.ts +1 -1
- package/src/scripts/smoke-packed-install.ts +446 -59
- package/src/scripts/sync-plugin-mirror.ts +17 -1
- package/src/scripts/verify-native-release-assets.ts +39 -31
- package/templates/AGENTS.md +1 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { clearAuthority, recordAuthority, } from "./authority.js";
|
|
2
|
+
import { sanitizeMessage, sanitizeMetadata } from "./sanitize.js";
|
|
3
|
+
import { isTerminalHookEvent, mapHookEventToHerdrState, rollupTeamState, } from "./semantic.js";
|
|
4
|
+
import { nextSeq as durableNextSeq } from "./seq-store.js";
|
|
5
|
+
import { CliHerdrTransport, SocketHerdrTransport, detectHerdrEnv, } from "./transport.js";
|
|
6
|
+
export const HERDR_BRIDGE_SOURCE = "omx:runtime";
|
|
7
|
+
export const HERDR_BRIDGE_AGENT = "codex";
|
|
8
|
+
/**
|
|
9
|
+
* Opt-in, best-effort OMX -> Herdr lifecycle/status bridge.
|
|
10
|
+
*
|
|
11
|
+
* - No behavior change outside a detected Herdr pane.
|
|
12
|
+
* - Ordered: seq comes from a durable cross-process per-source store, so stale
|
|
13
|
+
* reports cannot win across concurrent hook processes or restarts.
|
|
14
|
+
* - Non-blocking / failure-isolated: transport errors are captured and returned,
|
|
15
|
+
* never thrown.
|
|
16
|
+
* - Release is gated on remaining active workflows and records/clears authority
|
|
17
|
+
* for crash reconciliation.
|
|
18
|
+
*/
|
|
19
|
+
export class HerdrBridge {
|
|
20
|
+
env;
|
|
21
|
+
transport;
|
|
22
|
+
source;
|
|
23
|
+
agent;
|
|
24
|
+
seqFn;
|
|
25
|
+
workflowActiveFn;
|
|
26
|
+
stateBaseDir;
|
|
27
|
+
sessionId;
|
|
28
|
+
logger;
|
|
29
|
+
released = false;
|
|
30
|
+
authorityRecorded = false;
|
|
31
|
+
constructor(options = {}) {
|
|
32
|
+
this.env = options.env ?? detectHerdrEnv();
|
|
33
|
+
this.source = options.source ?? HERDR_BRIDGE_SOURCE;
|
|
34
|
+
this.agent = options.agent ?? HERDR_BRIDGE_AGENT;
|
|
35
|
+
this.stateBaseDir = options.stateBaseDir;
|
|
36
|
+
this.sessionId = options.sessionId;
|
|
37
|
+
this.logger = options.logger;
|
|
38
|
+
this.seqFn =
|
|
39
|
+
options.seqFn ??
|
|
40
|
+
((source) => durableNextSeq(source, { baseDir: this.stateBaseDir }));
|
|
41
|
+
this.workflowActiveFn = options.workflowActiveFn ?? (() => false);
|
|
42
|
+
this.transport = this.env.enabled
|
|
43
|
+
? (options.transport ?? defaultTransport(this.env))
|
|
44
|
+
: (options.transport ?? null);
|
|
45
|
+
}
|
|
46
|
+
get enabled() {
|
|
47
|
+
return this.env.enabled;
|
|
48
|
+
}
|
|
49
|
+
nextSeq() {
|
|
50
|
+
return this.seqFn(this.source);
|
|
51
|
+
}
|
|
52
|
+
skip(reason) {
|
|
53
|
+
return { attempted: false, ok: false, skipped: true, reason };
|
|
54
|
+
}
|
|
55
|
+
async reportState(state, options = {}) {
|
|
56
|
+
if (!this.env.enabled || !this.env.paneId || !this.transport) {
|
|
57
|
+
return this.skip("herdr-not-detected");
|
|
58
|
+
}
|
|
59
|
+
const seq = this.nextSeq();
|
|
60
|
+
const message = sanitizeMessage(options.message);
|
|
61
|
+
const metadata = sanitizeMetadata(options.metadata);
|
|
62
|
+
try {
|
|
63
|
+
const result = await this.transport.reportAgent({
|
|
64
|
+
paneId: this.env.paneId,
|
|
65
|
+
source: this.source,
|
|
66
|
+
agent: this.agent,
|
|
67
|
+
state,
|
|
68
|
+
message,
|
|
69
|
+
metadata,
|
|
70
|
+
seq,
|
|
71
|
+
});
|
|
72
|
+
if (result.ok)
|
|
73
|
+
this.ensureAuthorityRecorded();
|
|
74
|
+
else
|
|
75
|
+
this.log("herdr report failed", { state, seq, result });
|
|
76
|
+
return {
|
|
77
|
+
attempted: true,
|
|
78
|
+
ok: result.ok,
|
|
79
|
+
skipped: false,
|
|
80
|
+
reason: result.detail,
|
|
81
|
+
state,
|
|
82
|
+
seq,
|
|
83
|
+
transport: result,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
88
|
+
this.log("herdr report threw", { state, seq, error: message });
|
|
89
|
+
return {
|
|
90
|
+
attempted: true,
|
|
91
|
+
ok: false,
|
|
92
|
+
skipped: false,
|
|
93
|
+
reason: `report threw: ${message}`,
|
|
94
|
+
state,
|
|
95
|
+
seq,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async reportHookEvent(event, options = {}) {
|
|
100
|
+
if (!this.env.enabled)
|
|
101
|
+
return this.skip("herdr-not-detected");
|
|
102
|
+
const mapping = mapHookEventToHerdrState(event);
|
|
103
|
+
const outcome = await this.reportState(mapping.state, {
|
|
104
|
+
message: options.message ?? mapping.reason,
|
|
105
|
+
metadata: options.metadata,
|
|
106
|
+
});
|
|
107
|
+
if (isTerminalHookEvent(event)) {
|
|
108
|
+
const release = await this.release();
|
|
109
|
+
return { ...outcome, released: release.released ?? release.ok };
|
|
110
|
+
}
|
|
111
|
+
return outcome;
|
|
112
|
+
}
|
|
113
|
+
async reportTeamRollup(input, options = {}) {
|
|
114
|
+
if (!this.env.enabled)
|
|
115
|
+
return this.skip("herdr-not-detected");
|
|
116
|
+
const rollup = rollupTeamState(input);
|
|
117
|
+
return this.reportState(rollup.state, {
|
|
118
|
+
message: rollup.reason,
|
|
119
|
+
metadata: options.metadata,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Release `omx:runtime` authority. Suppressed while another OMX workflow
|
|
124
|
+
* remains active (a single terminal event must not release authority for
|
|
125
|
+
* still-running workflows). Clears the authority record on release.
|
|
126
|
+
*/
|
|
127
|
+
async release() {
|
|
128
|
+
if (!this.env.enabled || !this.env.paneId || !this.transport) {
|
|
129
|
+
return this.skip("herdr-not-detected");
|
|
130
|
+
}
|
|
131
|
+
if (this.released) {
|
|
132
|
+
return { attempted: false, ok: true, skipped: true, reason: "already-released" };
|
|
133
|
+
}
|
|
134
|
+
if (this.workflowActiveFn()) {
|
|
135
|
+
return {
|
|
136
|
+
attempted: false,
|
|
137
|
+
ok: true,
|
|
138
|
+
skipped: true,
|
|
139
|
+
reason: "workflow-still-active",
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
const seq = this.nextSeq();
|
|
143
|
+
try {
|
|
144
|
+
const result = await this.transport.releaseAgent({
|
|
145
|
+
paneId: this.env.paneId,
|
|
146
|
+
source: this.source,
|
|
147
|
+
seq,
|
|
148
|
+
});
|
|
149
|
+
this.released = true;
|
|
150
|
+
this.clearAuthorityRecord();
|
|
151
|
+
if (!result.ok)
|
|
152
|
+
this.log("herdr release failed", { seq, result });
|
|
153
|
+
return {
|
|
154
|
+
attempted: true,
|
|
155
|
+
ok: result.ok,
|
|
156
|
+
skipped: false,
|
|
157
|
+
reason: result.detail,
|
|
158
|
+
seq,
|
|
159
|
+
released: true,
|
|
160
|
+
transport: result,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
165
|
+
this.log("herdr release threw", { seq, error: message });
|
|
166
|
+
this.released = true;
|
|
167
|
+
this.clearAuthorityRecord();
|
|
168
|
+
return {
|
|
169
|
+
attempted: true,
|
|
170
|
+
ok: false,
|
|
171
|
+
skipped: false,
|
|
172
|
+
reason: `release threw: ${message}`,
|
|
173
|
+
seq,
|
|
174
|
+
released: true,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
ensureAuthorityRecorded() {
|
|
179
|
+
if (this.authorityRecorded || !this.env.paneId)
|
|
180
|
+
return;
|
|
181
|
+
this.authorityRecorded = true;
|
|
182
|
+
try {
|
|
183
|
+
recordAuthority({
|
|
184
|
+
pane_id: this.env.paneId,
|
|
185
|
+
source: this.source,
|
|
186
|
+
owner_pid: process.pid,
|
|
187
|
+
session_id: this.sessionId,
|
|
188
|
+
}, { baseDir: this.stateBaseDir });
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
this.log("herdr authority record failed", {
|
|
192
|
+
error: error instanceof Error ? error.message : String(error),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
clearAuthorityRecord() {
|
|
197
|
+
try {
|
|
198
|
+
clearAuthority({ baseDir: this.stateBaseDir });
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
// best-effort
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
log(message, meta) {
|
|
205
|
+
try {
|
|
206
|
+
this.logger?.(message, meta);
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// A misbehaving logger must not break the bridge.
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function defaultTransport(env) {
|
|
214
|
+
if (env.socketPath) {
|
|
215
|
+
return new SocketHerdrTransport({ socketPath: env.socketPath });
|
|
216
|
+
}
|
|
217
|
+
return new CliHerdrTransport({ binPath: env.binPath });
|
|
218
|
+
}
|
|
219
|
+
export function createHerdrBridge(options = {}) {
|
|
220
|
+
return new HerdrBridge(options);
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/adapt/herdr/bridge.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,cAAc,EACd,eAAe,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAIN,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACN,iBAAiB,EAIjB,oBAAoB,EACpB,cAAc,GACd,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAiC1C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,WAAW;IACN,GAAG,CAAW;IACd,SAAS,CAAwB;IACjC,MAAM,CAAS;IACf,KAAK,CAAS;IACd,KAAK,CAA6B;IAClC,gBAAgB,CAAgB;IAChC,YAAY,CAAU;IACtB,SAAS,CAAU;IACnB,MAAM,CAAgC;IAC/C,QAAQ,GAAG,KAAK,CAAC;IACjB,iBAAiB,GAAG,KAAK,CAAC;IAElC,YAAY,OAAO,GAAuB,EAAE;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK;YACT,OAAO,CAAC,KAAK;gBACb,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO;YAChC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IACzB,CAAC;IAEO,OAAO;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAEO,IAAI,CAAC,MAAc;QAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,KAAyB,EACzB,OAAO,GAA4D,EAAE;QAErE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;gBAC/C,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK;gBACL,OAAO;gBACP,QAAQ;gBACR,GAAG;aACH,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,EAAE;gBAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;;gBACzC,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO;gBACN,SAAS,EAAE,IAAI;gBACf,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK;gBACL,GAAG;gBACH,SAAS,EAAE,MAAM;aACjB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/D,OAAO;gBACN,SAAS,EAAE,IAAI;gBACf,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,iBAAiB,OAAO,EAAE;gBAClC,KAAK;gBACL,GAAG;aACH,CAAC;QACH,CAAC;IACF,CAAC;IAED,KAAK,CAAC,eAAe,CACpB,KAAiD,EACjD,OAAO,GAA4D,EAAE;QAErE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAsB,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;YACrD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM;YAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACrB,KAAuB,EACvB,OAAO,GAA0C,EAAE;QAEnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE;YACrC,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QAClF,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC7B,OAAO;gBACN,SAAS,EAAE,KAAK;gBAChB,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,uBAAuB;aAC/B,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;gBAChD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG;aACH,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO;gBACN,SAAS,EAAE,IAAI;gBACf,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG;gBACH,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,MAAM;aACjB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,OAAO;gBACN,SAAS,EAAE,IAAI;gBACf,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,kBAAkB,OAAO,EAAE;gBACnC,GAAG;gBACH,QAAQ,EAAE,IAAI;aACd,CAAC;QACH,CAAC;IACF,CAAC;IAEO,uBAAuB;QAC9B,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO;QACvD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC;YACJ,eAAe,CACd;gBACC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,OAAO,CAAC,GAAG;gBACtB,UAAU,EAAE,IAAI,CAAC,SAAS;aAC1B,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAC9B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE;gBACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7D,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEO,oBAAoB;QAC3B,IAAI,CAAC;YACJ,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACR,cAAc;QACf,CAAC;IACF,CAAC;IAEO,GAAG,CAAC,OAAe,EAAE,IAA8B;QAC1D,IAAI,CAAC;YACJ,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACR,kDAAkD;QACnD,CAAC;IACF,CAAC;CACD;AAED,SAAS,gBAAgB,CAAC,GAAa;IACtC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,IAAI,oBAAoB,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAuB,EAAE;IACjE,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bound and redact operator/agent text before it crosses the OMX -> Herdr
|
|
3
|
+
* boundary. OMX lifecycle context can contain prompts, source text, absolute
|
|
4
|
+
* paths, and secrets; none of that should be shipped verbatim to Herdr's
|
|
5
|
+
* display surfaces. Applied to the semantic `message` and to display-only
|
|
6
|
+
* metadata tokens.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MAX_MESSAGE_LEN = 120;
|
|
9
|
+
export declare const MAX_TOKEN_KEY_LEN = 32;
|
|
10
|
+
export declare const MAX_TOKEN_VALUE_LEN = 80;
|
|
11
|
+
export declare const MAX_TOKENS = 16;
|
|
12
|
+
/** Sanitize a semantic message: collapse whitespace, redact paths/secrets, cap length. */
|
|
13
|
+
export declare function sanitizeMessage(message: string | undefined, maxLen?: number): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Sanitize display-only metadata tokens: cap key/value length and token count,
|
|
16
|
+
* drop secret-like keys/values, redact absolute paths. Returns undefined when
|
|
17
|
+
* nothing survives.
|
|
18
|
+
*/
|
|
19
|
+
export declare function sanitizeMetadata(metadata: Record<string, string> | undefined): Record<string, string> | undefined;
|
|
20
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/adapt/herdr/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,UAAU,KAAK,CAAC;AAgB7B,0FAA0F;AAC1F,wBAAgB,eAAe,CAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,SAAkB,GACtB,MAAM,GAAG,SAAS,CAQpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAuBpC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bound and redact operator/agent text before it crosses the OMX -> Herdr
|
|
3
|
+
* boundary. OMX lifecycle context can contain prompts, source text, absolute
|
|
4
|
+
* paths, and secrets; none of that should be shipped verbatim to Herdr's
|
|
5
|
+
* display surfaces. Applied to the semantic `message` and to display-only
|
|
6
|
+
* metadata tokens.
|
|
7
|
+
*/
|
|
8
|
+
export const MAX_MESSAGE_LEN = 120;
|
|
9
|
+
export const MAX_TOKEN_KEY_LEN = 32;
|
|
10
|
+
export const MAX_TOKEN_VALUE_LEN = 80;
|
|
11
|
+
export const MAX_TOKENS = 16;
|
|
12
|
+
const SECRET_KEY_PATTERN = /(secret|token|password|passwd|api[_-]?key|authorization|bearer|credential|private[_-]?key|access[_-]?key)/i;
|
|
13
|
+
const SECRET_VALUE_PATTERN = /(bearer\s+[a-z0-9._-]+|sk-[a-z0-9]{8,}|gh[pousr]_[a-z0-9]{8,}|eyj[a-z0-9._-]{10,}|[a-f0-9]{32,})/i;
|
|
14
|
+
const ABS_PATH_PATTERN = /(?:\/[^\s:]+){2,}|[a-zA-Z]:\\[^\s]+/g;
|
|
15
|
+
function collapseWhitespace(value) {
|
|
16
|
+
return value.replace(/[\r\n\t]+/g, " ").replace(/\s{2,}/g, " ").trim();
|
|
17
|
+
}
|
|
18
|
+
function redactPaths(value) {
|
|
19
|
+
return value.replace(ABS_PATH_PATTERN, "[path]");
|
|
20
|
+
}
|
|
21
|
+
/** Sanitize a semantic message: collapse whitespace, redact paths/secrets, cap length. */
|
|
22
|
+
export function sanitizeMessage(message, maxLen = MAX_MESSAGE_LEN) {
|
|
23
|
+
if (message === undefined)
|
|
24
|
+
return undefined;
|
|
25
|
+
let out = collapseWhitespace(message);
|
|
26
|
+
if (out.length === 0)
|
|
27
|
+
return undefined;
|
|
28
|
+
if (SECRET_VALUE_PATTERN.test(out))
|
|
29
|
+
out = "[redacted]";
|
|
30
|
+
out = redactPaths(out);
|
|
31
|
+
if (out.length > maxLen)
|
|
32
|
+
out = `${out.slice(0, maxLen - 1)}…`;
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Sanitize display-only metadata tokens: cap key/value length and token count,
|
|
37
|
+
* drop secret-like keys/values, redact absolute paths. Returns undefined when
|
|
38
|
+
* nothing survives.
|
|
39
|
+
*/
|
|
40
|
+
export function sanitizeMetadata(metadata) {
|
|
41
|
+
if (!metadata)
|
|
42
|
+
return undefined;
|
|
43
|
+
const out = {};
|
|
44
|
+
let count = 0;
|
|
45
|
+
for (const [rawKey, rawValue] of Object.entries(metadata)) {
|
|
46
|
+
if (count >= MAX_TOKENS)
|
|
47
|
+
break;
|
|
48
|
+
if (typeof rawValue !== "string")
|
|
49
|
+
continue;
|
|
50
|
+
const key = rawKey.slice(0, MAX_TOKEN_KEY_LEN);
|
|
51
|
+
if (SECRET_KEY_PATTERN.test(key))
|
|
52
|
+
continue;
|
|
53
|
+
let value = collapseWhitespace(rawValue);
|
|
54
|
+
if (value.length === 0)
|
|
55
|
+
continue;
|
|
56
|
+
if (SECRET_VALUE_PATTERN.test(value)) {
|
|
57
|
+
value = "[redacted]";
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
value = redactPaths(value);
|
|
61
|
+
}
|
|
62
|
+
if (value.length > MAX_TOKEN_VALUE_LEN) {
|
|
63
|
+
value = `${value.slice(0, MAX_TOKEN_VALUE_LEN - 1)}…`;
|
|
64
|
+
}
|
|
65
|
+
out[key] = value;
|
|
66
|
+
count += 1;
|
|
67
|
+
}
|
|
68
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/adapt/herdr/sanitize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { HookEventEnvelope, HookEventName } from "../../hooks/extensibility/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Herdr semantic agent states, as documented by the official Herdr socket/CLI
|
|
4
|
+
* protocol (herdr.dev/docs/agents, /docs/socket-api). `state` is semantic: it
|
|
5
|
+
* drives Herdr waits, notifications, and workspace rollups. Display-only detail
|
|
6
|
+
* is carried separately as metadata tokens.
|
|
7
|
+
*/
|
|
8
|
+
export declare const HERDR_SEMANTIC_STATES: readonly ["working", "blocked", "idle", "unknown"];
|
|
9
|
+
export type HerdrSemanticState = (typeof HERDR_SEMANTIC_STATES)[number];
|
|
10
|
+
export interface HerdrStateMapping {
|
|
11
|
+
state: HerdrSemanticState;
|
|
12
|
+
/** Whether OMX should release Herdr authority after reporting this state. */
|
|
13
|
+
terminal: boolean;
|
|
14
|
+
/** Short, non-authoritative rationale for the mapping decision. */
|
|
15
|
+
reason: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Map a single OMX hook lifecycle event to a Herdr semantic state. Unknown or
|
|
19
|
+
* unmapped events resolve to `unknown` rather than guessing, matching the issue
|
|
20
|
+
* requirement that reconciliation-uncertain state is reported as `unknown`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function mapHookEventToHerdrState(event: HookEventEnvelope | HookEventName | string): HerdrStateMapping;
|
|
23
|
+
export declare function isTerminalHookEvent(event: HookEventEnvelope | HookEventName | string): boolean;
|
|
24
|
+
export type HerdrWorkerState = "working" | "blocked" | "done" | "failed" | "idle" | "unknown";
|
|
25
|
+
export interface HerdrRollupWorker {
|
|
26
|
+
id: string;
|
|
27
|
+
state: HerdrWorkerState;
|
|
28
|
+
/**
|
|
29
|
+
* True when this worker/task is blocked specifically on user action. Only
|
|
30
|
+
* user-blocking workers escalate the rollup to `blocked`; a worker blocked on
|
|
31
|
+
* the system alone does not make the whole pane look blocked.
|
|
32
|
+
*/
|
|
33
|
+
blockedOnUser?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface HerdrRollupInput {
|
|
36
|
+
/** The leader (or a workflow) is waiting on a user decision. */
|
|
37
|
+
leaderBlockedOnUser?: boolean;
|
|
38
|
+
workers: HerdrRollupWorker[];
|
|
39
|
+
/** The whole run has reached a terminal outcome. */
|
|
40
|
+
runTerminal?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface HerdrRollupResult {
|
|
43
|
+
state: HerdrSemanticState;
|
|
44
|
+
reason: string;
|
|
45
|
+
counts: {
|
|
46
|
+
total: number;
|
|
47
|
+
working: number;
|
|
48
|
+
blocked: number;
|
|
49
|
+
blockedOnUser: number;
|
|
50
|
+
done: number;
|
|
51
|
+
failed: number;
|
|
52
|
+
idle: number;
|
|
53
|
+
unknown: number;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Roll up authoritative OMX Team worker/task state into a single Herdr semantic
|
|
58
|
+
* state, rather than relying on Herdr's pane-output inference.
|
|
59
|
+
*
|
|
60
|
+
* Precedence, per issue #3241:
|
|
61
|
+
* 1. `blocked` if the leader needs user input or an authoritative worker/task
|
|
62
|
+
* is blocked on user action.
|
|
63
|
+
* 2. otherwise `working` while any worker/task is active.
|
|
64
|
+
* 3. otherwise `idle` when the run is terminal (or nothing is active).
|
|
65
|
+
*/
|
|
66
|
+
export declare function rollupTeamState(input: HerdrRollupInput): HerdrRollupResult;
|
|
67
|
+
//# sourceMappingURL=semantic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../../src/adapt/herdr/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,aAAa,EACb,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,YACjC,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,CACA,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAmDxE,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,iBAAiB,GAAG,aAAa,GAAG,MAAM,GAC/C,iBAAiB,CA8BnB;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,iBAAiB,GAAG,aAAa,GAAG,MAAM,GAC/C,OAAO,CAGT;AAED,MAAM,MAAM,gBAAgB,GACzB,SAAS,GACT,SAAS,GACT,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,CAAC;AAEb,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,gBAAgB,CAAC;IACxB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAChC,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAiE1E"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Herdr semantic agent states, as documented by the official Herdr socket/CLI
|
|
3
|
+
* protocol (herdr.dev/docs/agents, /docs/socket-api). `state` is semantic: it
|
|
4
|
+
* drives Herdr waits, notifications, and workspace rollups. Display-only detail
|
|
5
|
+
* is carried separately as metadata tokens.
|
|
6
|
+
*/
|
|
7
|
+
export const HERDR_SEMANTIC_STATES = [
|
|
8
|
+
"working",
|
|
9
|
+
"blocked",
|
|
10
|
+
"idle",
|
|
11
|
+
"unknown",
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* OMX hook lifecycle events that map to Herdr `working`. These represent an
|
|
15
|
+
* active turn, an active workflow, or active workers/tasks.
|
|
16
|
+
*/
|
|
17
|
+
const WORKING_EVENTS = new Set([
|
|
18
|
+
"session-start",
|
|
19
|
+
"run.heartbeat",
|
|
20
|
+
"worker.assigned",
|
|
21
|
+
"worker.recovered",
|
|
22
|
+
"test-started",
|
|
23
|
+
"pre-tool-use",
|
|
24
|
+
"post-tool-use",
|
|
25
|
+
]);
|
|
26
|
+
/**
|
|
27
|
+
* OMX hook lifecycle events that map to Herdr `blocked`. These represent an
|
|
28
|
+
* approval, question, or user decision that OMX is waiting on.
|
|
29
|
+
*/
|
|
30
|
+
const BLOCKED_EVENTS = new Set([
|
|
31
|
+
"blocked",
|
|
32
|
+
"run.blocked_on_user",
|
|
33
|
+
"run.blocked_on_system",
|
|
34
|
+
"needs-input",
|
|
35
|
+
"handoff-needed",
|
|
36
|
+
]);
|
|
37
|
+
/**
|
|
38
|
+
* OMX hook lifecycle events that map to Herdr `idle`. These represent a turn,
|
|
39
|
+
* workflow, or session reaching a terminal or resting state. Herdr derives its
|
|
40
|
+
* own `done`/seen behavior from `idle`.
|
|
41
|
+
*/
|
|
42
|
+
const IDLE_EVENTS = new Set([
|
|
43
|
+
"turn-complete",
|
|
44
|
+
"finished",
|
|
45
|
+
"failed",
|
|
46
|
+
"stop",
|
|
47
|
+
"session-end",
|
|
48
|
+
"session-idle",
|
|
49
|
+
]);
|
|
50
|
+
/**
|
|
51
|
+
* OMX lifecycle events after which OMX should release `omx:runtime` authority so
|
|
52
|
+
* Herdr can safely return to its normal Codex screen detection. Only whole-
|
|
53
|
+
* session shutdown releases authority; per-run `finished`/`failed` map to `idle`
|
|
54
|
+
* without releasing, because a single run ending does not mean OMX has left the
|
|
55
|
+
* pane.
|
|
56
|
+
*/
|
|
57
|
+
const TERMINAL_EVENTS = new Set(["stop", "session-end"]);
|
|
58
|
+
/**
|
|
59
|
+
* Map a single OMX hook lifecycle event to a Herdr semantic state. Unknown or
|
|
60
|
+
* unmapped events resolve to `unknown` rather than guessing, matching the issue
|
|
61
|
+
* requirement that reconciliation-uncertain state is reported as `unknown`.
|
|
62
|
+
*/
|
|
63
|
+
export function mapHookEventToHerdrState(event) {
|
|
64
|
+
const name = typeof event === "string" ? event : event.event;
|
|
65
|
+
if (BLOCKED_EVENTS.has(name)) {
|
|
66
|
+
return {
|
|
67
|
+
state: "blocked",
|
|
68
|
+
terminal: false,
|
|
69
|
+
reason: `OMX event '${name}' requires user/system attention.`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (WORKING_EVENTS.has(name)) {
|
|
73
|
+
return {
|
|
74
|
+
state: "working",
|
|
75
|
+
terminal: false,
|
|
76
|
+
reason: `OMX event '${name}' indicates active work.`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (IDLE_EVENTS.has(name)) {
|
|
80
|
+
return {
|
|
81
|
+
state: "idle",
|
|
82
|
+
terminal: TERMINAL_EVENTS.has(name),
|
|
83
|
+
reason: `OMX event '${name}' reached a terminal/resting state.`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
state: "unknown",
|
|
88
|
+
terminal: false,
|
|
89
|
+
reason: `OMX event '${name}' has no authoritative Herdr mapping.`,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export function isTerminalHookEvent(event) {
|
|
93
|
+
const name = typeof event === "string" ? event : event.event;
|
|
94
|
+
return TERMINAL_EVENTS.has(name);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Roll up authoritative OMX Team worker/task state into a single Herdr semantic
|
|
98
|
+
* state, rather than relying on Herdr's pane-output inference.
|
|
99
|
+
*
|
|
100
|
+
* Precedence, per issue #3241:
|
|
101
|
+
* 1. `blocked` if the leader needs user input or an authoritative worker/task
|
|
102
|
+
* is blocked on user action.
|
|
103
|
+
* 2. otherwise `working` while any worker/task is active.
|
|
104
|
+
* 3. otherwise `idle` when the run is terminal (or nothing is active).
|
|
105
|
+
*/
|
|
106
|
+
export function rollupTeamState(input) {
|
|
107
|
+
const counts = {
|
|
108
|
+
total: input.workers.length,
|
|
109
|
+
working: 0,
|
|
110
|
+
blocked: 0,
|
|
111
|
+
blockedOnUser: 0,
|
|
112
|
+
done: 0,
|
|
113
|
+
failed: 0,
|
|
114
|
+
idle: 0,
|
|
115
|
+
unknown: 0,
|
|
116
|
+
};
|
|
117
|
+
for (const worker of input.workers) {
|
|
118
|
+
switch (worker.state) {
|
|
119
|
+
case "working":
|
|
120
|
+
counts.working += 1;
|
|
121
|
+
break;
|
|
122
|
+
case "blocked":
|
|
123
|
+
counts.blocked += 1;
|
|
124
|
+
if (worker.blockedOnUser !== false)
|
|
125
|
+
counts.blockedOnUser += 1;
|
|
126
|
+
break;
|
|
127
|
+
case "done":
|
|
128
|
+
counts.done += 1;
|
|
129
|
+
break;
|
|
130
|
+
case "failed":
|
|
131
|
+
counts.failed += 1;
|
|
132
|
+
break;
|
|
133
|
+
case "idle":
|
|
134
|
+
counts.idle += 1;
|
|
135
|
+
break;
|
|
136
|
+
default:
|
|
137
|
+
counts.unknown += 1;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (input.leaderBlockedOnUser) {
|
|
142
|
+
return {
|
|
143
|
+
state: "blocked",
|
|
144
|
+
reason: "Leader is blocked on user action.",
|
|
145
|
+
counts,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (counts.blockedOnUser > 0) {
|
|
149
|
+
return {
|
|
150
|
+
state: "blocked",
|
|
151
|
+
reason: `${counts.blockedOnUser} worker/task blocked on user action.`,
|
|
152
|
+
counts,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (counts.working > 0) {
|
|
156
|
+
return {
|
|
157
|
+
state: "working",
|
|
158
|
+
reason: `${counts.working} worker/task active.`,
|
|
159
|
+
counts,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
state: "idle",
|
|
164
|
+
reason: input.runTerminal
|
|
165
|
+
? "Run reached a terminal state; no active workers."
|
|
166
|
+
: "No active or user-blocked workers.",
|
|
167
|
+
counts,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=semantic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../src/adapt/herdr/semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable, atomic, per-source monotonic sequence store for Herdr reports.
|
|
3
|
+
*
|
|
4
|
+
* Herdr accepts but ignores a report whose `seq <= last accepted seq for the
|
|
5
|
+
* same source`. Hooks run as short-lived processes, so an in-memory counter
|
|
6
|
+
* resets to 1 on every process/restart and would (a) let legitimate new reports
|
|
7
|
+
* be rejected as stale after a restart and (b) fail to prevent stale reports
|
|
8
|
+
* across concurrent processes. This store persists the counter under
|
|
9
|
+
* `.omx/adapters/herdr/seq/<sanitized-source>.json` and serializes concurrent
|
|
10
|
+
* increments with an atomic mkdir lock, so seq is strictly increasing per source
|
|
11
|
+
* across processes and restarts.
|
|
12
|
+
*/
|
|
13
|
+
export interface SeqStoreOptions {
|
|
14
|
+
/** Base `.omx/adapters/herdr` dir; defaults to the resolved OMX adapters dir. */
|
|
15
|
+
baseDir?: string;
|
|
16
|
+
/** Max time to wait for the lock before giving up (best-effort). */
|
|
17
|
+
lockTimeoutMs?: number;
|
|
18
|
+
/** Consider a held lock stale after this age (crash recovery). */
|
|
19
|
+
lockStaleMs?: number;
|
|
20
|
+
}
|
|
21
|
+
/** Filesystem-safe, collision-resistant file stem for a source id. */
|
|
22
|
+
export declare function sanitizeSourceKey(source: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Atomically read-increment-persist the per-source counter and return the new
|
|
25
|
+
* seq. Strictly increasing and unique per source across concurrent processes
|
|
26
|
+
* and restarts. Falls back to a time-derived seq only if the lock cannot be
|
|
27
|
+
* acquired, so a report is never dropped and never regresses below the last
|
|
28
|
+
* persisted value.
|
|
29
|
+
*/
|
|
30
|
+
export declare function nextSeq(source: string, options?: SeqStoreOptions): number;
|
|
31
|
+
export declare function readPersistedSeq(source: string, options?: SeqStoreOptions): number;
|
|
32
|
+
//# sourceMappingURL=seq-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seq-store.d.ts","sourceRoot":"","sources":["../../../src/adapt/herdr/seq-store.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,eAAe;IAC/B,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGxD;AA2ED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CA8B7E;AAUD,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC3B,MAAM,CAER"}
|