@quantiya/codevibe-core 2.0.0 → 2.0.2
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/dist/__tests__/cp-5-baseline-invariants.test.d.ts +1 -0
- package/dist/__tests__/prompt-parser.test.d.ts +1 -0
- package/dist/adapter/__tests__/capabilities.test.d.ts +1 -0
- package/dist/adapter/__tests__/contract-conformance.test.d.ts +1 -0
- package/dist/adapter/__tests__/packets.test.d.ts +1 -0
- package/dist/adapter/__tests__/progress.test.d.ts +1 -0
- package/dist/adapter/__tests__/registry.test.d.ts +1 -0
- package/dist/adapter/__tests__/smoke/claude.smoke.test.d.ts +1 -0
- package/dist/adapter/__tests__/smoke/codex.smoke.test.d.ts +1 -0
- package/dist/adapter/__tests__/smoke/gemini.smoke.test.d.ts +1 -0
- package/dist/adapter/capabilities.d.ts +68 -0
- package/dist/adapter/index.d.ts +7 -0
- package/dist/adapter/packets.d.ts +129 -0
- package/dist/adapter/progress.d.ts +93 -0
- package/dist/adapter/registry.d.ts +91 -0
- package/dist/adapter/types.d.ts +22 -0
- package/dist/appsync/__tests__/appsync-client-apply-user-decision.test.d.ts +1 -0
- package/dist/appsync/__tests__/appsync-client-classb.test.d.ts +1 -0
- package/dist/appsync/__tests__/appsync-client-event-source-filter.test.d.ts +1 -0
- package/dist/appsync/__tests__/appsync-client-planner.test.d.ts +1 -0
- package/dist/appsync/__tests__/appsync-client-task-group.test.d.ts +1 -0
- package/dist/appsync/__tests__/appsync-client.test.d.ts +1 -0
- package/dist/appsync/__tests__/cleanup-subscription.test.d.ts +1 -0
- package/dist/appsync/__tests__/coerce-awsjson-and-review-summary.test.d.ts +1 -0
- package/dist/appsync/__tests__/cp1f-quorum-sdk.test.d.ts +1 -0
- package/dist/appsync/__tests__/event-throttle.test.d.ts +1 -0
- package/dist/appsync/appsync-client.d.ts +1025 -2
- package/dist/appsync/event-throttle.d.ts +28 -0
- package/dist/appsync/index.d.ts +4 -1
- package/dist/appsync/queries.d.ts +34 -0
- package/dist/audit-keys/index.d.ts +32 -0
- package/dist/auth/__tests__/auth-telemetry.test.d.ts +1 -0
- package/dist/auth/auth-service.d.ts +32 -2
- package/dist/auth/auth-telemetry.d.ts +117 -6
- package/dist/auth/index.d.ts +1 -0
- package/dist/companion-mode/__tests__/persist-preference.test.d.ts +1 -0
- package/dist/companion-mode/__tests__/resolve-agent.test.d.ts +1 -0
- package/dist/companion-mode/agent-picker.d.ts +9 -0
- package/dist/companion-mode/index.d.ts +55 -0
- package/dist/companion-mode/persist-preference.d.ts +24 -0
- package/dist/companion-mode/resolve-agent.d.ts +41 -0
- package/dist/config/config.d.ts +8 -1
- package/dist/continuation/__tests__/dirty-state-collector.test.d.ts +1 -0
- package/dist/continuation/__tests__/integration.test.d.ts +1 -0
- package/dist/continuation/__tests__/packet-reader.test.d.ts +1 -0
- package/dist/continuation/__tests__/packet-writer.test.d.ts +1 -0
- package/dist/continuation/__tests__/parity.test.d.ts +1 -0
- package/dist/continuation/__tests__/status-cli.test.d.ts +1 -0
- package/dist/continuation/dirty-state-collector.d.ts +46 -0
- package/dist/continuation/index.d.ts +8 -0
- package/dist/continuation/packet-reader.d.ts +33 -0
- package/dist/continuation/packet-writer.d.ts +86 -0
- package/dist/continuation/types.d.ts +239 -0
- package/dist/credential-broker/__tests__/broker.test.d.ts +1 -0
- package/dist/credential-broker/__tests__/canonical.test.d.ts +1 -0
- package/dist/credential-broker/__tests__/scrubber.test.d.ts +1 -0
- package/dist/credential-broker/__tests__/upstream-client.test.d.ts +1 -0
- package/dist/credential-broker/__tests__/vendor-key-store.test.d.ts +1 -0
- package/dist/credential-broker/audit-sink.d.ts +69 -0
- package/dist/credential-broker/broker-config.d.ts +39 -0
- package/dist/credential-broker/broker-token.d.ts +123 -0
- package/dist/credential-broker/broker.d.ts +165 -0
- package/dist/credential-broker/canonical.d.ts +119 -0
- package/dist/credential-broker/index.d.ts +15 -0
- package/dist/credential-broker/scrubber.d.ts +45 -0
- package/dist/credential-broker/types.d.ts +141 -0
- package/dist/credential-broker/upstream-client.d.ts +20 -0
- package/dist/credential-broker/vendor-key-store.d.ts +54 -0
- package/dist/index.d.ts +17 -4
- package/dist/index.js +559 -55
- package/dist/keychain/__tests__/keychain-backend.test.d.ts +1 -0
- package/dist/keychain/keychain-backend.d.ts +82 -0
- package/dist/keychain/keychain-manager.d.ts +16 -2
- package/dist/local-executor/__tests__/agentic-disposable-repo.test.d.ts +1 -0
- package/dist/local-executor/__tests__/agentic-resolve.test.d.ts +1 -0
- package/dist/local-executor/__tests__/agentic-resolver-flag.test.d.ts +1 -0
- package/dist/local-executor/__tests__/authority-symlink-fixture.d.ts +15 -0
- package/dist/local-executor/__tests__/authority.test.d.ts +1 -0
- package/dist/local-executor/__tests__/class-a-emit.test.d.ts +1 -0
- package/dist/local-executor/__tests__/class-a-sign.test.d.ts +1 -0
- package/dist/local-executor/__tests__/class-b-consumer.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/class-b-consumer.test.d.ts +1 -0
- package/dist/local-executor/__tests__/class1-reconcilers.test.d.ts +1 -0
- package/dist/local-executor/__tests__/class2-resolver.test.d.ts +1 -0
- package/dist/local-executor/__tests__/confined-model-caller.test.d.ts +1 -0
- package/dist/local-executor/__tests__/conflict-classifier.test.d.ts +1 -0
- package/dist/local-executor/__tests__/conflict-resolution-durable-store.test.d.ts +1 -0
- package/dist/local-executor/__tests__/conflict-resolution-store.test.d.ts +1 -0
- package/dist/local-executor/__tests__/cp1f-quorum-consumer.test.d.ts +1 -0
- package/dist/local-executor/__tests__/cp7-audit-writer.test.d.ts +1 -0
- package/dist/local-executor/__tests__/durable-store.test.d.ts +1 -0
- package/dist/local-executor/__tests__/git-lock-retry.test.d.ts +1 -0
- package/dist/local-executor/__tests__/hook-bridge.test.d.ts +1 -0
- package/dist/local-executor/__tests__/implementor-argv.test.d.ts +1 -0
- package/dist/local-executor/__tests__/local-executor-teams.test.d.ts +1 -0
- package/dist/local-executor/__tests__/local-executor.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-conflict-extract.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-conflict-git.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-conflict-resolve-agentic.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-conflict-resolve.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-journal-store.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-train-agentic-recovery.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-train-w3.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-train-waveb.integration.test.d.ts +1 -0
- package/dist/local-executor/__tests__/merge-train.test.d.ts +1 -0
- package/dist/local-executor/__tests__/promote-wal-store.test.d.ts +1 -0
- package/dist/local-executor/__tests__/revert-reconcile.test.d.ts +1 -0
- package/dist/local-executor/__tests__/revert-runner.test.d.ts +1 -0
- package/dist/local-executor/__tests__/shared-contract-detector.test.d.ts +1 -0
- package/dist/local-executor/__tests__/spawn.test.d.ts +1 -0
- package/dist/local-executor/__tests__/substrate-engage.test.d.ts +1 -0
- package/dist/local-executor/__tests__/team-execution-flag.test.d.ts +1 -0
- package/dist/local-executor/__tests__/track-registry.test.d.ts +1 -0
- package/dist/local-executor/__tests__/verification-runner.test.d.ts +1 -0
- package/dist/local-executor/__tests__/wb2-review-bundle.test.d.ts +1 -0
- package/dist/local-executor/__tests__/wb2-substrate-spawn.live.test.d.ts +1 -0
- package/dist/local-executor/__tests__/workspace-shadow.test.d.ts +1 -0
- package/dist/local-executor/__tests__/worktree-merge.test.d.ts +1 -0
- package/dist/local-executor/agentic-disposable-repo.d.ts +52 -0
- package/dist/local-executor/agentic-resolve.d.ts +54 -0
- package/dist/local-executor/agentic-resolver-flag.d.ts +9 -0
- package/dist/local-executor/authority.d.ts +61 -0
- package/dist/local-executor/class-a-emit.d.ts +140 -0
- package/dist/local-executor/class-a-sign.d.ts +57 -0
- package/dist/local-executor/class-b-consumer.d.ts +276 -0
- package/dist/local-executor/class-b-verify.d.ts +30 -0
- package/dist/local-executor/class1-reconcilers.d.ts +58 -0
- package/dist/local-executor/class2-resolver.d.ts +74 -0
- package/dist/local-executor/confined-model-caller.d.ts +39 -0
- package/dist/local-executor/conflict-classifier.d.ts +21 -0
- package/dist/local-executor/conflict-resolution-durable-store.d.ts +61 -0
- package/dist/local-executor/conflict-resolution-store.d.ts +210 -0
- package/dist/local-executor/conflict-types.d.ts +86 -0
- package/dist/local-executor/cp7-audit-writer.d.ts +152 -0
- package/dist/local-executor/durable-store.d.ts +334 -0
- package/dist/local-executor/git-lock-retry.d.ts +40 -0
- package/dist/local-executor/hook-bridge.d.ts +36 -0
- package/dist/local-executor/implementor-argv.d.ts +183 -0
- package/dist/local-executor/index.d.ts +49 -0
- package/dist/local-executor/local-executor-impl.d.ts +724 -0
- package/dist/local-executor/merge-conflict-extract.d.ts +34 -0
- package/dist/local-executor/merge-conflict-resolve.d.ts +101 -0
- package/dist/local-executor/merge-journal-store.d.ts +311 -0
- package/dist/local-executor/merge-train.d.ts +713 -0
- package/dist/local-executor/promote-wal-store.d.ts +301 -0
- package/dist/local-executor/resolution-set-index.d.ts +51 -0
- package/dist/local-executor/revert-reconcile.d.ts +89 -0
- package/dist/local-executor/revert-runner.d.ts +17 -0
- package/dist/local-executor/shared-contract-detector.d.ts +57 -0
- package/dist/local-executor/spawn.d.ts +34 -0
- package/dist/local-executor/task-group-types.d.ts +346 -0
- package/dist/local-executor/team-execution-flag.d.ts +21 -0
- package/dist/local-executor/track-registry.d.ts +50 -0
- package/dist/local-executor/types.d.ts +417 -0
- package/dist/local-executor/verification-gates/build.d.ts +6 -0
- package/dist/local-executor/verification-gates/deploy-preflight.d.ts +6 -0
- package/dist/local-executor/verification-gates/diff-sanity.d.ts +6 -0
- package/dist/local-executor/verification-gates/hostile-grep.d.ts +6 -0
- package/dist/local-executor/verification-gates/lint.d.ts +6 -0
- package/dist/local-executor/verification-gates/shell-runner.d.ts +40 -0
- package/dist/local-executor/verification-gates/source-traceability.d.ts +6 -0
- package/dist/local-executor/verification-gates/tests.d.ts +6 -0
- package/dist/local-executor/verification-gates/typecheck.d.ts +6 -0
- package/dist/local-executor/verification-runner.d.ts +28 -0
- package/dist/local-executor/wb2-review-bundle.d.ts +59 -0
- package/dist/local-executor/workspace-shadow.d.ts +290 -0
- package/dist/local-executor/worktree-merge.d.ts +601 -0
- package/dist/local-model/__tests__/installer.test.d.ts +1 -0
- package/dist/local-model/__tests__/manager.test.d.ts +1 -0
- package/dist/local-model/__tests__/ollama.test.d.ts +1 -0
- package/dist/local-model/__tests__/runtime.test.d.ts +1 -0
- package/dist/local-model/__tests__/state.test.d.ts +1 -0
- package/dist/local-model/manager.d.ts +119 -0
- package/dist/local-model/ollama.d.ts +27 -0
- package/dist/local-model/runtime.d.ts +27 -0
- package/dist/local-model/state.d.ts +32 -0
- package/dist/orchestration/__tests__/setup-bootstrap.test.d.ts +1 -0
- package/dist/orchestration/__tests__/setup-failure-recourse.test.d.ts +1 -0
- package/dist/orchestration/__tests__/setup-save.test.d.ts +1 -0
- package/dist/orchestration/__tests__/setup-seat-picker.test.d.ts +1 -0
- package/dist/orchestration/__tests__/setup-telemetry.test.d.ts +1 -0
- package/dist/orchestration/__tests__/setup-test-agents.test.d.ts +1 -0
- package/dist/orchestration/__tests__/setup-types.test.d.ts +1 -0
- package/dist/orchestration/__tests__/setup-wizard.test.d.ts +1 -0
- package/dist/orchestration/__tests__/v1-options.test.d.ts +1 -0
- package/dist/orchestration/detect-agents.d.ts +16 -2
- package/dist/orchestration/index.d.ts +1 -0
- package/dist/orchestration/orchestration-cli.d.ts +4 -1
- package/dist/orchestration/setup-bootstrap.d.ts +146 -0
- package/dist/orchestration/setup-failure-recourse.d.ts +23 -0
- package/dist/orchestration/setup-save.d.ts +47 -0
- package/dist/orchestration/setup-seat-picker.d.ts +72 -0
- package/dist/orchestration/setup-telemetry.d.ts +54 -0
- package/dist/orchestration/setup-test-agents.d.ts +108 -0
- package/dist/orchestration/setup-types.d.ts +141 -0
- package/dist/orchestration/setup-wizard.d.ts +57 -0
- package/dist/orchestration/v1-options.d.ts +97 -0
- package/dist/orchestration-shell/__tests__/attachments.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/audit-browser.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/audited-path-fixes.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/bracketed-paste.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-authority-bridge.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-group-halt-wiring.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-orchestration-session-bootstrap.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-planner-stack.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-probe-group-status.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-quorum-loop-tier.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-singleton-enforcement.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-stub-session-adapter.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cli-verdict-classifier-wiring.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/components.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/context-store.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp10-585-accept-echo-target.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp10-585-loop.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp10-585-prompts.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp12-w2b-team-loop.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp12-w4-team-recovery.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp1f-quorum-loop.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp606-team-track-user-resolved.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/cp7-reviewer-substrate.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/declared-test-runner.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/emit-shell-event.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/familiarize-routing.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/gate-decision-submit.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/gate-details-panel.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/gate-prompts.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/gate-verdict-details-dispatch.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/group-decision-submit.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/hostile-grep.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/image-attach-e2e.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/input-bar-autocomplete.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/live-region-cap.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/live-static-order.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/mode-selection.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/model-cli.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/non-gate-prompt-routing.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/orchestration-app-group-decision-transport.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/orchestration-app-layout.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/process-markers.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/reducer.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/reissue-team-retained-spec.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/review-summary-render.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/reviewer-wizard.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/reviewers-format.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/root-discovery.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/runOrchestrationShell-classify-dispatch.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/runOrchestrationShell-planner-wiring.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/runOrchestrationShell-signal.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/runOrchestrationShell.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/serialize-submissions.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/slash-router.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/slash-suggest.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/status-format.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/sticky-preference.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/task-progress.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/team-decompose-routing.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/team-decompose-types.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/team-decompose.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/team-e2e-smoke.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/tier2-reviewer-selection.test.d.ts +1 -0
- package/dist/orchestration-shell/__tests__/web-browsing.test.d.ts +1 -0
- package/dist/orchestration-shell/attachments.d.ts +152 -0
- package/dist/orchestration-shell/audit-browser.d.ts +115 -0
- package/dist/orchestration-shell/audit-runner.d.ts +59 -0
- package/dist/orchestration-shell/bracketed-paste.d.ts +26 -0
- package/dist/orchestration-shell/cli.d.ts +431 -0
- package/dist/orchestration-shell/cli.js +44191 -0
- package/dist/orchestration-shell/cohort-flag.d.ts +16 -0
- package/dist/orchestration-shell/components/AuditLogPanel.d.ts +11 -0
- package/dist/orchestration-shell/components/CodeVibeLogo.d.ts +2 -0
- package/dist/orchestration-shell/components/ConversationPane.d.ts +13 -0
- package/dist/orchestration-shell/components/GateDetailsPanel.d.ts +57 -0
- package/dist/orchestration-shell/components/GatePanelEntry.d.ts +9 -0
- package/dist/orchestration-shell/components/GatePromptEntry.d.ts +16 -0
- package/dist/orchestration-shell/components/InputBar.d.ts +55 -0
- package/dist/orchestration-shell/components/LiveProgressLine.d.ts +8 -0
- package/dist/orchestration-shell/components/MultiTrackStatusNode.d.ts +8 -0
- package/dist/orchestration-shell/components/OrchestrationApp.d.ts +129 -0
- package/dist/orchestration-shell/components/ReviewerSetupWizard.d.ts +24 -0
- package/dist/orchestration-shell/components/StatusBar.d.ts +20 -0
- package/dist/orchestration-shell/components/nodes/AdvisoryEntry.d.ts +8 -0
- package/dist/orchestration-shell/components/nodes/GateStatusNode.d.ts +8 -0
- package/dist/orchestration-shell/components/nodes/PlannerDecisionEntry.d.ts +8 -0
- package/dist/orchestration-shell/components/nodes/ReviewerQuorumStatusNode.d.ts +8 -0
- package/dist/orchestration-shell/components/nodes/SlashOutputEntry.d.ts +8 -0
- package/dist/orchestration-shell/components/nodes/SubagentEventEntry.d.ts +8 -0
- package/dist/orchestration-shell/components/nodes/UserMessageEntry.d.ts +8 -0
- package/dist/orchestration-shell/context-store.d.ts +389 -0
- package/dist/orchestration-shell/declared-test-runner.d.ts +84 -0
- package/dist/orchestration-shell/emit-shell-event.d.ts +64 -0
- package/dist/orchestration-shell/gate-decision-submit.d.ts +245 -0
- package/dist/orchestration-shell/gate-prompts.d.ts +481 -0
- package/dist/orchestration-shell/index.d.ts +712 -0
- package/dist/orchestration-shell/ink-runtime.d.ts +84 -0
- package/dist/orchestration-shell/live-region-cap.d.ts +70 -0
- package/dist/orchestration-shell/live-static-order.d.ts +22 -0
- package/dist/orchestration-shell/mode-selection.d.ts +46 -0
- package/dist/orchestration-shell/non-tty-fallback.d.ts +67 -0
- package/dist/orchestration-shell/process-markers.d.ts +12 -0
- package/dist/orchestration-shell/quorum-loop.d.ts +1900 -0
- package/dist/orchestration-shell/reducer.d.ts +8 -0
- package/dist/orchestration-shell/root-discovery.d.ts +25 -0
- package/dist/orchestration-shell/route-browse.d.ts +20 -0
- package/dist/orchestration-shell/slash-router.d.ts +64 -0
- package/dist/orchestration-shell/slash-routes/continuation.d.ts +71 -0
- package/dist/orchestration-shell/slash-routes/reviewers.d.ts +41 -0
- package/dist/orchestration-shell/slash-suggest.d.ts +29 -0
- package/dist/orchestration-shell/status-format.d.ts +59 -0
- package/dist/orchestration-shell/sticky-preference.d.ts +24 -0
- package/dist/orchestration-shell/store.d.ts +17 -0
- package/dist/orchestration-shell/task-progress.d.ts +122 -0
- package/dist/orchestration-shell/team-decompose.d.ts +196 -0
- package/dist/orchestration-shell/types.d.ts +777 -0
- package/dist/orchestration-shell/vendor/ink-parse-keypress.d.ts +42 -0
- package/dist/orchestration-shell/web/extract.d.ts +11 -0
- package/dist/orchestration-shell/web/fetch.d.ts +15 -0
- package/dist/orchestration-shell/web/ip.d.ts +26 -0
- package/dist/orchestration-shell/web/sanitize.d.ts +14 -0
- package/dist/orchestration-shell/web/search.d.ts +16 -0
- package/dist/planner/__tests__/cache-clarification-bypass.test.d.ts +1 -0
- package/dist/planner/__tests__/cache.test.d.ts +1 -0
- package/dist/planner/__tests__/client.test.d.ts +1 -0
- package/dist/planner/__tests__/health-machine-transitions.test.d.ts +1 -0
- package/dist/planner/__tests__/local-gemma.test.d.ts +1 -0
- package/dist/planner/__tests__/types-zod.test.d.ts +1 -0
- package/dist/planner/adapter.d.ts +16 -0
- package/dist/planner/cache.d.ts +35 -0
- package/dist/planner/client.d.ts +103 -0
- package/dist/planner/health-state.d.ts +24 -0
- package/dist/planner/index.d.ts +7 -0
- package/dist/planner/local-advisory.d.ts +84 -0
- package/dist/planner/local-gemma.d.ts +23 -0
- package/dist/planner/types.d.ts +123 -0
- package/dist/reviewer/__tests__/antigravity-provider.test.d.ts +1 -0
- package/dist/reviewer/__tests__/claude-provider-json.test.d.ts +1 -0
- package/dist/reviewer/__tests__/cp7-reviewer-sandbox.test.d.ts +1 -0
- package/dist/reviewer/__tests__/output-parser-classifier-helpers.test.d.ts +1 -0
- package/dist/reviewer/__tests__/verdict-classifier.test.d.ts +1 -0
- package/dist/reviewer/index.d.ts +2 -0
- package/dist/reviewer/output-parser.d.ts +48 -12
- package/dist/reviewer/provider.d.ts +107 -3
- package/dist/reviewer/providers/__tests__/failure-classifier.test.d.ts +1 -0
- package/dist/reviewer/providers/antigravity.d.ts +49 -0
- package/dist/reviewer/providers/claude.d.ts +19 -4
- package/dist/reviewer/providers/codex.d.ts +47 -5
- package/dist/reviewer/providers/failure-classifier.d.ts +26 -0
- package/dist/reviewer/providers/gemini.d.ts +5 -4
- package/dist/reviewer/registry.d.ts +5 -5
- package/dist/reviewer/subprocess.d.ts +37 -0
- package/dist/reviewer/token-usage.d.ts +32 -0
- package/dist/reviewer/types.d.ts +5 -5
- package/dist/reviewer/verdict-classifier.d.ts +62 -0
- package/dist/session/__tests__/prepare-event-timestamp.test.d.ts +1 -0
- package/dist/session/__tests__/session-resume-service-keys.test.d.ts +1 -0
- package/dist/session/index.d.ts +1 -0
- package/dist/session/prepare-event-timestamp.d.ts +30 -0
- package/dist/session/session-rekey.d.ts +40 -0
- package/dist/session/session-resume.d.ts +25 -0
- package/dist/structural-summary/__tests__/__fixtures__/fixture-helpers.d.ts +11 -0
- package/dist/structural-summary/__tests__/assembler.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/generator.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/language-detect.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/manifest-parsers/cargo.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/manifest-parsers/gomod.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/manifest-parsers/gradle.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/manifest-parsers/index.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/manifest-parsers/npm.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/manifest-parsers/podfile.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/manifest-parsers/pyproject.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/opt-in-store.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/privacy-filter.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/safe-file-read.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/user-ignore-matcher.test.d.ts +1 -0
- package/dist/structural-summary/__tests__/walker.test.d.ts +1 -0
- package/dist/structural-summary/generator.d.ts +8 -0
- package/dist/structural-summary/index.d.ts +7 -0
- package/dist/structural-summary/manifest-parsers/cargo.d.ts +3 -0
- package/dist/structural-summary/manifest-parsers/index.d.ts +7 -0
- package/dist/structural-summary/manifest-parsers/npm.d.ts +3 -0
- package/dist/structural-summary/manifest-parsers/other.d.ts +17 -0
- package/dist/structural-summary/opt-in-store.d.ts +24 -0
- package/dist/structural-summary/privacy-filter.d.ts +110 -0
- package/dist/structural-summary/safe-file-read.d.ts +11 -0
- package/dist/structural-summary/types.d.ts +215 -0
- package/dist/structural-summary/user-ignore-matcher.d.ts +9 -0
- package/dist/structural-summary/walker.d.ts +20 -0
- package/dist/substrate/__tests__/docker.test.d.ts +1 -0
- package/dist/substrate/__tests__/forwarder.test.d.ts +1 -0
- package/dist/substrate/__tests__/git-proxy.test.d.ts +1 -0
- package/dist/substrate/__tests__/sandbox-exec.test.d.ts +1 -0
- package/dist/substrate/__tests__/substrate-e2e.integration.test.d.ts +1 -0
- package/dist/substrate/command-runner.d.ts +19 -0
- package/dist/substrate/docker.d.ts +134 -0
- package/dist/substrate/errors.d.ts +33 -0
- package/dist/substrate/forwarder.d.ts +67 -0
- package/dist/substrate/git-proxy.d.ts +35 -0
- package/dist/substrate/index.d.ts +12 -0
- package/dist/substrate/relay-script.d.ts +27 -0
- package/dist/substrate/sandbox-exec.d.ts +116 -0
- package/dist/substrate/types.d.ts +218 -0
- package/dist/substrate-launch/__tests__/apikey-bootstrap.test.d.ts +1 -0
- package/dist/substrate-launch/__tests__/creditless-loop.integration.test.d.ts +1 -0
- package/dist/substrate-launch/__tests__/engage-substrate.test.d.ts +1 -0
- package/dist/substrate-launch/__tests__/fallback-ladder.test.d.ts +1 -0
- package/dist/substrate-launch/__tests__/le-env-scrub.test.d.ts +1 -0
- package/dist/substrate-launch/__tests__/sanitized-env.test.d.ts +1 -0
- package/dist/substrate-launch/apikey-bootstrap.d.ts +84 -0
- package/dist/substrate-launch/engage-substrate.d.ts +102 -0
- package/dist/substrate-launch/fallback-ladder.d.ts +49 -0
- package/dist/substrate-launch/index.d.ts +12 -0
- package/dist/substrate-launch/le-env-scrub.d.ts +77 -0
- package/dist/substrate-launch/sanitized-env.d.ts +73 -0
- package/dist/types/auth.d.ts +6 -1
- package/dist/types/events.d.ts +19 -2
- package/dist/types/reviewer.d.ts +6 -6
- package/package.json +21 -3
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import type { Tier } from '../orchestration-shell/types';
|
|
2
|
+
/**
|
|
3
|
+
* The 6 manifest kinds detected by the first slice (§4.4), plus `other`
|
|
4
|
+
* (parser found a candidate but parsing failed) and `none` (no manifest
|
|
5
|
+
* found at this rootPath).
|
|
6
|
+
*
|
|
7
|
+
* Matches the locked `RepoSummary.manifestType` enum at CP-0 §10.S.7 line 145.
|
|
8
|
+
*/
|
|
9
|
+
export type ManifestType = 'npm' | 'cargo' | 'pyproject' | 'go' | 'podfile' | 'gradle' | 'other' | 'none';
|
|
10
|
+
export interface ParsedManifest {
|
|
11
|
+
type: ManifestType;
|
|
12
|
+
packageName?: string;
|
|
13
|
+
dependencies: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* One directory in the walked tree. Mirrors CP-0 §10.S.7:153-160; the
|
|
17
|
+
* Max-tier `body` + `bodyTruncated` fields are `[ADDITIVE WIDENING — CP-1.d]`
|
|
18
|
+
* per Hendry-locked round-1 Q1. `truncatedByDepth` is set when the walker
|
|
19
|
+
* hits `maxDepth = 12` on this node's subtree (§4.7).
|
|
20
|
+
*/
|
|
21
|
+
export interface DirectoryNode {
|
|
22
|
+
path: string;
|
|
23
|
+
fileCount: number;
|
|
24
|
+
bytes: number;
|
|
25
|
+
children: DirectoryNode[];
|
|
26
|
+
inferredLanguage?: string;
|
|
27
|
+
/** `[ADDITIVE WIDENING — CP-1.d]` Q1 LOCKED — Max-tier opt-in only. */
|
|
28
|
+
body?: string;
|
|
29
|
+
/** `[ADDITIVE WIDENING — CP-1.d]` Q1 LOCKED — true if `body` truncated or skipped due to per-file 512 KiB cap or shared 64 MiB body budget. */
|
|
30
|
+
bodyTruncated?: boolean;
|
|
31
|
+
/** True if walker stopped recursing here because `maxDepth = 12` was hit on a descendant. */
|
|
32
|
+
truncatedByDepth?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* One repo's portion of the assembled summary. The `rootPath` ECHOES the
|
|
36
|
+
* caller-supplied (possibly symlinked) path so the user-visible digest
|
|
37
|
+
* stays stable; the walker uses `realRootPath` for internal admission
|
|
38
|
+
* checks (§4.3 step 2 step 0).
|
|
39
|
+
*/
|
|
40
|
+
export interface RepoSummary {
|
|
41
|
+
rootPath: string;
|
|
42
|
+
manifestType: ManifestType;
|
|
43
|
+
packageName?: string;
|
|
44
|
+
dependencies: string[];
|
|
45
|
+
inferredLanguages: string[];
|
|
46
|
+
readmePreview: string;
|
|
47
|
+
directoryTree: DirectoryNode;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Privacy envelope counters + status flags. All but the first 3 fields are
|
|
51
|
+
* `[ADDITIVE WIDENING — CP-1.d]` extensions to the CP-0 §10.S.7:136-140
|
|
52
|
+
* 3-field sketch (per Stage 2 r1 Codex H-1 + Gemini H-1 + Hendry-locked Q2).
|
|
53
|
+
*/
|
|
54
|
+
export interface PrivacyEnvelope {
|
|
55
|
+
bodyInclusionPaths: string[];
|
|
56
|
+
excludedByGitignore: number;
|
|
57
|
+
excludedByIgnoreFile: number;
|
|
58
|
+
/** `[ADDITIVE WIDENING — CP-1.d]` Stage 2 r1 Codex H-1. */
|
|
59
|
+
excludedAsUntracked?: number;
|
|
60
|
+
/** `[ADDITIVE WIDENING — CP-1.d]` Q2 LOCKED — covers both file-count AND body-byte budgets. */
|
|
61
|
+
budgetExceeded?: boolean;
|
|
62
|
+
/** `[ADDITIVE WIDENING — CP-1.d]` Stage 2 r1 Gemini H-1 — disambiguates which budget tripped first. */
|
|
63
|
+
budgetReason?: 'fileCount' | 'bodyBytes';
|
|
64
|
+
/** `[ADDITIVE WIDENING — CP-1.d]` Stage 2 r1 Codex H-1 — graceful non-git fallback marker. */
|
|
65
|
+
notInGitRepo?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The top-level structural summary returned by `generate()`. CP-1.b
|
|
69
|
+
* consumes `sha256` as an opaque cache key.
|
|
70
|
+
*/
|
|
71
|
+
export interface StructuralSummary {
|
|
72
|
+
generatedAt: string;
|
|
73
|
+
rootPaths: string[];
|
|
74
|
+
repos: RepoSummary[];
|
|
75
|
+
totalFileCount: number;
|
|
76
|
+
totalBytes: number;
|
|
77
|
+
privacyEnvelope: PrivacyEnvelope;
|
|
78
|
+
/**
|
|
79
|
+
* Hex-encoded SHA-256 over the canonical-JSON serialization of the
|
|
80
|
+
* summary EXCLUDING BOTH the `sha256` field AND the `generatedAt`
|
|
81
|
+
* field. `generatedAt` is excluded so identical repo content →
|
|
82
|
+
* identical sha256 across runs (the CP-1.b reproducibility contract);
|
|
83
|
+
* a wall-clock timestamp would defeat that.
|
|
84
|
+
*
|
|
85
|
+
* Canonical-JSON definition: `JSON.stringify(hashPayload, canonicalReplacer)`
|
|
86
|
+
* where `canonicalReplacer` sorts object keys lexicographically.
|
|
87
|
+
* Arrays preserve order, so any input array (e.g., `directoryTree.children`,
|
|
88
|
+
* `inferredLanguages`) must be sorted deterministically upstream — see
|
|
89
|
+
* `walker.ts` (children byte-wise sort) and `generator.ts:inferLanguages`
|
|
90
|
+
* (count + name byte-wise tie-break).
|
|
91
|
+
*
|
|
92
|
+
* See `generator.ts:~200-220` for the canonical hash-payload
|
|
93
|
+
* construction. The previous co-location in `assembler.ts` no longer
|
|
94
|
+
* applies (Stage 2 IMPL r2 — assembly inlined into `generator.ts`).
|
|
95
|
+
*/
|
|
96
|
+
sha256: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Caller-supplied options. Mirrors PHASE-CP-1-DESIGN.md:1590-1596.
|
|
100
|
+
*
|
|
101
|
+
* `_test_caps` is a test-only escape hatch (note the underscore prefix
|
|
102
|
+
* + the `__INTERNAL__` doc tag). Production callers MUST NOT pass it;
|
|
103
|
+
* unit tests use it to trip the file-count + body-byte budget paths
|
|
104
|
+
* without authoring 50,000-file fixtures. Added by Stage 1 r1 M-3
|
|
105
|
+
* fix to support the design §5 line 1173 test row.
|
|
106
|
+
*/
|
|
107
|
+
export interface GenerateOpts {
|
|
108
|
+
rootPaths: string[];
|
|
109
|
+
ignoreFile?: string;
|
|
110
|
+
includeBodies?: string[];
|
|
111
|
+
userId: string;
|
|
112
|
+
tier: Tier;
|
|
113
|
+
/** __INTERNAL__ test-only seam — see JSDoc above. */
|
|
114
|
+
_test_caps?: {
|
|
115
|
+
fileCountCap?: number;
|
|
116
|
+
bodyByteCap?: number;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export interface StructuralSummaryGenerator {
|
|
120
|
+
generate(opts: GenerateOpts): Promise<StructuralSummary>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Walker return value. Carries the assembled `directoryTree` + per-rootPath
|
|
124
|
+
* audit + the exclusion state + the two-set walker-accounting ledger.
|
|
125
|
+
*
|
|
126
|
+
* `countedExactPaths` + `countedPrunedPrefixes` (round-6 split per Codex r5 M-1)
|
|
127
|
+
* are the explicit ledger the manifest dispatcher + README reader consult via
|
|
128
|
+
* `isPathAccountedFor()` to avoid double-counting. See §4.3 step 6.
|
|
129
|
+
*/
|
|
130
|
+
export interface WalkResult {
|
|
131
|
+
directoryTree: DirectoryNode;
|
|
132
|
+
fileExtensions: Map<string, number>;
|
|
133
|
+
excludedByGitignore: number;
|
|
134
|
+
excludedByIgnoreFile: number;
|
|
135
|
+
excludedAsUntracked: number;
|
|
136
|
+
truncated: boolean;
|
|
137
|
+
bodyBudgetExceeded: boolean;
|
|
138
|
+
notInGitRepo: boolean;
|
|
139
|
+
exclusionState: ExclusionState;
|
|
140
|
+
/**
|
|
141
|
+
* Exact absolute paths the walker enumerated + already incremented an
|
|
142
|
+
* `excludedBy*` counter for (any of gitignore/userIgnore/untracked —
|
|
143
|
+
* NOT secret, which is silent).
|
|
144
|
+
*/
|
|
145
|
+
countedExactPaths: Set<string>;
|
|
146
|
+
/**
|
|
147
|
+
* Absolute directory paths the walker pruned upfront without enumerating
|
|
148
|
+
* (Step 0.5 root admission OR Step 2 child-directory prune-during-descent).
|
|
149
|
+
* Counter was incremented once per prefix.
|
|
150
|
+
*/
|
|
151
|
+
countedPrunedPrefixes: Set<string>;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Minimal gitignore-format matcher signature — the user-ignore file is
|
|
155
|
+
* matched against this. Kept as an interface so the implementation can swap
|
|
156
|
+
* between an in-process matcher and the `ignore` npm package later without
|
|
157
|
+
* surface churn.
|
|
158
|
+
*/
|
|
159
|
+
export interface UserIgnoreMatcher {
|
|
160
|
+
/**
|
|
161
|
+
* Returns true if the gitignore-style ruleset matches `relativePath`.
|
|
162
|
+
* `relativePath` is path.relative(realRootPath, absolutePath), with forward
|
|
163
|
+
* slashes on POSIX.
|
|
164
|
+
*
|
|
165
|
+
* Stage 2 r2 widening (M-2, Gemini M-1): `isDir` is consulted by rules
|
|
166
|
+
* with trailing `/` (e.g., `dist/`) — they MUST NOT match a regular
|
|
167
|
+
* file. Defaults to `false`; only the walker has cheap `Dirent.isDirectory()`
|
|
168
|
+
* info and threads it through. File-only callers (manifest dispatcher,
|
|
169
|
+
* README reader) get correct semantics with the default.
|
|
170
|
+
*/
|
|
171
|
+
ignores(relativePath: string, isDir?: boolean): boolean;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Per-rootPath exclusion state, built ONCE at walker startup. See §4.3a.
|
|
175
|
+
*
|
|
176
|
+
* `ignoredExactPaths` + `ignoredDirPrefixes` (round-6 trailing-slash partition
|
|
177
|
+
* per Codex r5 H-1) replace round-5's conflated single `ignoredPrefixes` set.
|
|
178
|
+
* `realRootPath` (round-4 Codex H-1 + Gemini H-1) canonicalises the launch
|
|
179
|
+
* root through `fs.realpath()` so symlinked launch roots produce correct
|
|
180
|
+
* subtree-membership filters.
|
|
181
|
+
*/
|
|
182
|
+
export interface ExclusionState {
|
|
183
|
+
rootPath: string;
|
|
184
|
+
realRootPath: string;
|
|
185
|
+
notInGitRepo: boolean;
|
|
186
|
+
repoTopLevel: string;
|
|
187
|
+
untrackedSet: Set<string>;
|
|
188
|
+
ignoredExactPaths: Set<string>;
|
|
189
|
+
ignoredDirPrefixes: Set<string>;
|
|
190
|
+
userIgnoreMatcher: UserIgnoreMatcher;
|
|
191
|
+
secretDenyList: readonly string[];
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* On-disk schema for `~/.codevibe/structural-summary.opt-in.json`. Locked
|
|
195
|
+
* at §4.6.
|
|
196
|
+
*/
|
|
197
|
+
export interface OptInFile {
|
|
198
|
+
schemaVersion: 1;
|
|
199
|
+
bodyInclusionPaths: string[];
|
|
200
|
+
lastUpdatedAt: string;
|
|
201
|
+
tierAtOptIn: 'MAX';
|
|
202
|
+
}
|
|
203
|
+
export type StructuralSummaryErrorKind = 'tier_gate' | 'fs_unreadable' | 'budget_exceeded' | 'manifest_parse'
|
|
204
|
+
/**
|
|
205
|
+
* `[ADDITIVE WIDENING — CP-1.d]` Stage 2 r2 Codex H-1.
|
|
206
|
+
* Thrown when a body-inclusion opt-in path is not absolute, or when
|
|
207
|
+
* realpath resolution fails (ENOENT etc.) — prevents PRIVACY REGRESSION
|
|
208
|
+
* where a relative opt-in could leak raw bodies from an unrelated
|
|
209
|
+
* repo's directory of the same name on a future `cd`.
|
|
210
|
+
*/
|
|
211
|
+
| 'invalid_path';
|
|
212
|
+
export declare class StructuralSummaryError extends Error {
|
|
213
|
+
readonly kind: StructuralSummaryErrorKind;
|
|
214
|
+
constructor(message: string, kind: StructuralSummaryErrorKind);
|
|
215
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { UserIgnoreMatcher } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a matcher from a gitignore-format text blob.
|
|
4
|
+
*/
|
|
5
|
+
export declare function compileUserIgnore(text: string): UserIgnoreMatcher;
|
|
6
|
+
/**
|
|
7
|
+
* Returns a no-op matcher (no rules — admits everything).
|
|
8
|
+
*/
|
|
9
|
+
export declare function emptyUserIgnoreMatcher(): UserIgnoreMatcher;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { WalkResult } from './types';
|
|
2
|
+
export interface WalkOpts {
|
|
3
|
+
rootPath: string;
|
|
4
|
+
ignoreFile?: string;
|
|
5
|
+
includeBodies: string[];
|
|
6
|
+
maxDepth: number;
|
|
7
|
+
/** Shared file-count budget (mutated in-place across rootPaths). */
|
|
8
|
+
fileCountBudget: {
|
|
9
|
+
remaining: number;
|
|
10
|
+
};
|
|
11
|
+
/** Shared body-byte budget (mutated in-place across rootPaths). */
|
|
12
|
+
bodyBudget: {
|
|
13
|
+
remaining: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Walks `rootPath` and returns a `WalkResult`. Mutates the shared
|
|
18
|
+
* `fileCountBudget` + `bodyBudget` counters.
|
|
19
|
+
*/
|
|
20
|
+
export declare function walk(opts: WalkOpts): Promise<WalkResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CommandResult, CommandRunner, RunnerProc } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* The production `CommandRunner` — runs `docker` / `sandbox-exec` via
|
|
4
|
+
* `node:child_process`. No shell is used (argv is passed directly to
|
|
5
|
+
* `spawn`), so there is no shell-injection surface from the constructed
|
|
6
|
+
* arguments.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ChildProcessCommandRunner implements CommandRunner {
|
|
9
|
+
run(argv: string[], opts?: {
|
|
10
|
+
timeoutMs?: number;
|
|
11
|
+
input?: string;
|
|
12
|
+
}): Promise<CommandResult>;
|
|
13
|
+
spawnLong(argv: string[], opts: {
|
|
14
|
+
stdinTty: boolean;
|
|
15
|
+
signal?: AbortSignal;
|
|
16
|
+
env?: Readonly<Record<string, string>>;
|
|
17
|
+
cwd?: string;
|
|
18
|
+
}): RunnerProc;
|
|
19
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { type ForwarderFactory } from './forwarder';
|
|
2
|
+
import type { CommandRunner, EgressObservationHook, Substrate, SubstrateHandle, SubstrateSpec } from './types';
|
|
3
|
+
/** Where, inside the container, the worktree is mounted (the agent's cwd/home). */
|
|
4
|
+
export declare const CONTAINER_WORKDIR = "/workspace";
|
|
5
|
+
/** Injectable deps — default-wired to the real runtime; stubbed in unit tests. */
|
|
6
|
+
export interface DockerSubstrateDeps {
|
|
7
|
+
/** Process layer (default: `node:child_process`). Stub in unit tests. */
|
|
8
|
+
runner?: CommandRunner;
|
|
9
|
+
/** Host-side UDS relay factory (default: real `node:net`). */
|
|
10
|
+
forwarderFactory?: ForwarderFactory;
|
|
11
|
+
/** §3.5 observation seam. **W3 wires the emit**; default no-op. */
|
|
12
|
+
onEgressDenied?: EgressObservationHook;
|
|
13
|
+
/** Override the container image (default {@link DEFAULT_IMAGE}). */
|
|
14
|
+
image?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Override the host root for the per-session scratch dir (default:
|
|
17
|
+
* os.tmpdir()). The per-session dir holds ONLY the broker socket (in `uds/`),
|
|
18
|
+
* the relay script, and the scrubbed git-proxy (in `gitproxy/`) — no secrets.
|
|
19
|
+
* The git-proxy now lives UNDER this dir (MED fix), so the one
|
|
20
|
+
* teardown/rollback rm removes it.
|
|
21
|
+
*/
|
|
22
|
+
sessionRoot?: string;
|
|
23
|
+
}
|
|
24
|
+
/** The deterministic per-session container name. */
|
|
25
|
+
export declare function containerName(id: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* The shell-wrapped container entrypoint: start the in-container relay in the
|
|
28
|
+
* background, then hold the container alive for `docker exec`. We MUST wrap in
|
|
29
|
+
* `sh -c` because the relay has to run CONCURRENTLY with the hold (the relay is
|
|
30
|
+
* the broker channel; `exec sleep infinity` keeps the container up for exec).
|
|
31
|
+
* `exec` replaces the shell with sleep so signals (docker kill) propagate.
|
|
32
|
+
*
|
|
33
|
+
* MED fix (Stage-2): the whole `sh -c` runs under `env -i <sanitizedEnv>` so
|
|
34
|
+
* PID1 (and thus everything inheriting from it, including `docker exec`) has
|
|
35
|
+
* EXACTLY `sanitizedEnv` — the image's baked env is wiped. The relay needs
|
|
36
|
+
* Node on PATH; `sanitizedEnv` carries PATH (the allow-list includes it).
|
|
37
|
+
*
|
|
38
|
+
* Exposed for the conformance test (pins the `env -i … sh -c 'node relay.js
|
|
39
|
+
* <port> <sock> & exec sleep infinity'` shape).
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildContainerEntrypoint(sanitizedEnv: Readonly<Record<string, string>>): string[];
|
|
42
|
+
/**
|
|
43
|
+
* `docker run --network none -d` argv. Builds the FULL Option-A isolation
|
|
44
|
+
* surface the conformance test pins:
|
|
45
|
+
* - `--network none` → STRUCTURAL default-deny (only `lo`, no egress).
|
|
46
|
+
* - `-v <workdir>:/workspace` → ONLY the worktree mounted (rw).
|
|
47
|
+
* - `-v <gitProxy>:/workspace/.git:ro` → scrubbed `.git`, read-only (if any).
|
|
48
|
+
* - `-v <relayScript>:/codevibe/relay.js:ro` → the in-container relay (ro).
|
|
49
|
+
* - `-v <udsDir>:/codevibe/broker:rw` → the bind-mounted broker UDS dir (rw,
|
|
50
|
+
* so the container's `connect()` works; the dir holds only the socket).
|
|
51
|
+
* - env via repeated `-e K=V` built EXACTLY from `spec.sanitizedEnv` (no host
|
|
52
|
+
* env passthrough; `docker run` does NOT inherit the host env). MED fix:
|
|
53
|
+
* the `-e` flags ADD to the image's baked env, so the AUTHORITATIVE wipe is
|
|
54
|
+
* the `env -i <sanitizedEnv>` prefix on the entrypoint (PID1) + every exec.
|
|
55
|
+
* - entrypoint: `env -i <sanitizedEnv> sh -c 'node relay.js <port> <sock> &
|
|
56
|
+
* exec sleep infinity'` — PID1's env is EXACTLY sanitizedEnv (MED fix).
|
|
57
|
+
* NO `--add-host`, NO `--network <name>`, NO `--internal`, and NO `-v` for host
|
|
58
|
+
* keychain/home/dotfiles is ever added.
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildRunArgv(args: {
|
|
61
|
+
id: string;
|
|
62
|
+
image: string;
|
|
63
|
+
workdir: string;
|
|
64
|
+
gitProxyPath: string | null;
|
|
65
|
+
relayScriptPath: string;
|
|
66
|
+
udsDir: string;
|
|
67
|
+
sanitizedEnv: Readonly<Record<string, string>>;
|
|
68
|
+
/** CP-7 PART D — apiKeyHelper bootstrap mount (`hostDir`→`sandboxDir:ro`). */
|
|
69
|
+
agentBootstrap?: {
|
|
70
|
+
hostDir: string;
|
|
71
|
+
sandboxDir: string;
|
|
72
|
+
};
|
|
73
|
+
}): string[];
|
|
74
|
+
/**
|
|
75
|
+
* `docker exec [-i] <name> env -i <sanitizedEnv> <argv...>` — run the agent
|
|
76
|
+
* inside the live sandbox. MED fix (Stage-2): the `env -i <sanitizedEnv>`
|
|
77
|
+
* prefix clears whatever env `docker exec` would inherit from PID1 / the image
|
|
78
|
+
* and sets EXACTLY `sanitizedEnv`, so the agent env is the SAME set as the A5
|
|
79
|
+
* path (no image `PATH`/baked-env leak). `--env-file`/`-e` on `docker exec`
|
|
80
|
+
* only ADD; `env -i` in the command position is the authoritative wipe.
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildExecArgv(id: string, argv: string[], stdinTty: boolean, sanitizedEnv: Readonly<Record<string, string>>): string[];
|
|
83
|
+
/** `docker kill <name>` — teardown step 1. */
|
|
84
|
+
export declare function buildKillArgv(id: string): string[];
|
|
85
|
+
/** `docker rm -f <name>` — teardown step 2 (idempotent via -f). */
|
|
86
|
+
export declare function buildRmArgv(id: string): string[];
|
|
87
|
+
/**
|
|
88
|
+
* A1 Docker substrate (`egressFidelity: 'strict'`, Option A). See file header
|
|
89
|
+
* for the full egress + fs + env contract.
|
|
90
|
+
*/
|
|
91
|
+
export declare class DockerSubstrate implements Substrate {
|
|
92
|
+
private readonly runner;
|
|
93
|
+
private readonly forwarderFactory;
|
|
94
|
+
private readonly onEgressDenied;
|
|
95
|
+
private readonly image;
|
|
96
|
+
private readonly sessionRoot;
|
|
97
|
+
constructor(deps?: DockerSubstrateDeps);
|
|
98
|
+
launch(spec: SubstrateSpec): Promise<SubstrateHandle>;
|
|
99
|
+
private rollback;
|
|
100
|
+
/**
|
|
101
|
+
* r5 HIGH-2 (Codex — NULL-vs-THROW gap). The proxy build produced no usable
|
|
102
|
+
* proxy (it returned `null` OR threw). Decide the safe outcome by whether the
|
|
103
|
+
* workdir actually HAS a `.git`:
|
|
104
|
+
*
|
|
105
|
+
* - NO `<workdir>/.git` → return `null` (a non-git workdir; the
|
|
106
|
+
* `docker run` mounts only the worktree,
|
|
107
|
+
* git reports "not a repository" — no
|
|
108
|
+
* credential surface either way).
|
|
109
|
+
* - `<workdir>/.git` EXISTS → write an EMPTY SCRUBBED `.git` overlay
|
|
110
|
+
* (a dir with ONLY a stripped synthetic
|
|
111
|
+
* `config` — NO remotes/creds/hooks) and
|
|
112
|
+
* return its path, so the `:ro` bind mount
|
|
113
|
+
* SHADOWS the real `.git`. Degraded git
|
|
114
|
+
* reads, but the credential surface is
|
|
115
|
+
* fail-closed.
|
|
116
|
+
* - overlay write ALSO fails → roll back + throw (NEVER mount the
|
|
117
|
+
* worktree with a live `.git`).
|
|
118
|
+
*
|
|
119
|
+
* Used for BOTH the null-return and the throw path so a workdir with a real
|
|
120
|
+
* but unresolvable `.git` can never reach the agent un-shadowed. `fsp.stat`
|
|
121
|
+
* (NOT `lstat`) follows a `.git` that is a symlink/dir/file alike — any of
|
|
122
|
+
* those "exists" cases must be shadowed.
|
|
123
|
+
*/
|
|
124
|
+
private ensureGitOverlayOrFailClosed;
|
|
125
|
+
private assertDockerAvailable;
|
|
126
|
+
}
|
|
127
|
+
export declare const __testing: {
|
|
128
|
+
DEFAULT_IMAGE: string;
|
|
129
|
+
CONTAINER_WORKDIR: string;
|
|
130
|
+
CONTAINER_GIT: string;
|
|
131
|
+
CONTAINER_RELAY_PATH: string;
|
|
132
|
+
CONTAINER_BROKER_DIR: string;
|
|
133
|
+
RELAY_PORT: number;
|
|
134
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown by {@link import('./docker').DockerSubstrate.launch} when the Docker
|
|
3
|
+
* CLI/daemon is absent or unusable, and by
|
|
4
|
+
* {@link import('./sandbox-exec').SandboxExecSubstrate.launch} when
|
|
5
|
+
* `sandbox-exec` is unavailable (non-macOS / missing binary).
|
|
6
|
+
*
|
|
7
|
+
* The LE catches this to drive the §6 Q2 fallback ladder. The carried
|
|
8
|
+
* `isolationTech` + `reason` let the LE log/branch precisely; the substrate
|
|
9
|
+
* itself NEVER falls back silently — refusing to run is the safe state.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SubstrateUnavailableError extends Error {
|
|
12
|
+
/** Which backend was unavailable (`docker` / `sandbox_exec`). */
|
|
13
|
+
readonly isolationTech: string;
|
|
14
|
+
/** Human-readable cause (CLI missing, daemon down, non-macOS, …). */
|
|
15
|
+
readonly reason: string;
|
|
16
|
+
constructor(
|
|
17
|
+
/** Which backend was unavailable (`docker` / `sandbox_exec`). */
|
|
18
|
+
isolationTech: string,
|
|
19
|
+
/** Human-readable cause (CLI missing, daemon down, non-macOS, …). */
|
|
20
|
+
reason: string, cause?: unknown);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown when a substrate lifecycle step (network create, container run,
|
|
24
|
+
* `docker exec`, profile write) fails for a reason OTHER than the backend
|
|
25
|
+
* being absent — i.e. the backend is present but a command errored. Distinct
|
|
26
|
+
* from {@link SubstrateUnavailableError} so the LE does NOT mistake a transient
|
|
27
|
+
* command failure for "no runtime, fall back to A5."
|
|
28
|
+
*/
|
|
29
|
+
export declare class SubstrateLaunchError extends Error {
|
|
30
|
+
readonly isolationTech: string;
|
|
31
|
+
readonly reason: string;
|
|
32
|
+
constructor(isolationTech: string, reason: string, cause?: unknown);
|
|
33
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { EgressObservationHook } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Construction spec for the host-side UDS relay. The substrate owns one per
|
|
4
|
+
* session.
|
|
5
|
+
*/
|
|
6
|
+
export interface ForwarderSpec {
|
|
7
|
+
/** Orchestration task_id — stamped on every `egress_denied` observation. */
|
|
8
|
+
taskId: string;
|
|
9
|
+
/**
|
|
10
|
+
* The FIXED upstream the relay ALWAYS dials (`spec.hostBrokerAddr`).
|
|
11
|
+
* Agent-supplied targets are ignored — this is the only destination.
|
|
12
|
+
*/
|
|
13
|
+
hostBrokerAddr: string;
|
|
14
|
+
/**
|
|
15
|
+
* The host UDS path the relay LISTENS on (the container bind-mounts this rw
|
|
16
|
+
* and its in-relay dials it). Required for Option A — there is no TCP bind.
|
|
17
|
+
*/
|
|
18
|
+
udsPath: string;
|
|
19
|
+
/** §3.5 observation seam. **W3 wires the emit**; default no-op. */
|
|
20
|
+
onEgressDenied?: EgressObservationHook;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The host-side UDS relay (§3.1, `strict` tier, Option A). Listens on a
|
|
24
|
+
* per-session host Unix-domain socket; every inbound connection is relayed to
|
|
25
|
+
* the single fixed `hostBrokerAddr`. It never reads an agent-supplied
|
|
26
|
+
* destination. A broker-upstream connect failure fires
|
|
27
|
+
* {@link EgressObservationHook} (W3 → `egress_denied`).
|
|
28
|
+
*/
|
|
29
|
+
export declare class HostEgressForwarder {
|
|
30
|
+
private readonly server;
|
|
31
|
+
private readonly upstream;
|
|
32
|
+
private readonly onEgressDenied;
|
|
33
|
+
private readonly taskId;
|
|
34
|
+
private readonly udsPath;
|
|
35
|
+
private listening;
|
|
36
|
+
constructor(spec: ForwarderSpec);
|
|
37
|
+
/**
|
|
38
|
+
* Start listening on the host UDS. Removes any stale socket file at the path
|
|
39
|
+
* first (a crashed prior run can leave one — listen() would EADDRINUSE).
|
|
40
|
+
* Resolves with the UDS path the container dials.
|
|
41
|
+
*/
|
|
42
|
+
start(): Promise<{
|
|
43
|
+
udsPath: string;
|
|
44
|
+
}>;
|
|
45
|
+
/** The host UDS path the container dials (valid after {@link start}). */
|
|
46
|
+
boundAddr(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Idempotent teardown — closes the listener (relayed sockets drop with it)
|
|
49
|
+
* and unlinks the host UDS file so the per-session dir can be removed.
|
|
50
|
+
*/
|
|
51
|
+
stop(): Promise<void>;
|
|
52
|
+
private onConnection;
|
|
53
|
+
private observeDenial;
|
|
54
|
+
/**
|
|
55
|
+
* Directly record a blocked outbound attempt. Under Option A there is no
|
|
56
|
+
* network-observable denied attempt for A1 (the container has no NIC — see
|
|
57
|
+
* the docker.ts §3.5 footnote), so this is STRUCTURALLY UNFIRED for A1. It
|
|
58
|
+
* stays exposed so a future iptables/A5 tier that CAN observe a sandbox→
|
|
59
|
+
* non-broker attempt routes it through the same seam + id minting.
|
|
60
|
+
*/
|
|
61
|
+
recordBlockedDestination(destination: string, denialReason: string): void;
|
|
62
|
+
private safeDestroy;
|
|
63
|
+
}
|
|
64
|
+
/** Factory the substrate uses (injectable so unit tests can stub the relay). */
|
|
65
|
+
export type ForwarderFactory = (spec: ForwarderSpec) => HostEgressForwarder;
|
|
66
|
+
/** Default factory — the real `node:net` UDS relay. */
|
|
67
|
+
export declare const defaultForwarderFactory: ForwarderFactory;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A minimal synthetic `config` written into the proxy. Repository-format
|
|
3
|
+
* version + bare=false ONLY — explicitly NO `[remote ...]`, NO `[credential]`,
|
|
4
|
+
* NO `core.hooksPath`, NO `[user]` (which could carry a signing key path). This
|
|
5
|
+
* is the credential-scrub: the real repo's config never enters the sandbox.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SCRUBBED_CONFIG: string;
|
|
8
|
+
/**
|
|
9
|
+
* Resolve the real parent `.git` directory for a worktree. In a worktree the
|
|
10
|
+
* `<workdir>/.git` is a FILE: `gitdir: /abs/path/to/parent/.git/worktrees/<n>`.
|
|
11
|
+
* The commit objects live in the parent repo's top-level `.git` (i.e. two
|
|
12
|
+
* levels up from `worktrees/<n>`). For a NON-worktree checkout `<workdir>/.git`
|
|
13
|
+
* is already the real dir. Returns the directory that holds `objects/` +
|
|
14
|
+
* `refs/`.
|
|
15
|
+
*
|
|
16
|
+
* @returns the resolved real git-common-dir, or `null` if `<workdir>/.git` is
|
|
17
|
+
* absent/unreadable (the caller skips proxying — a non-git workdir is fine).
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveGitCommonDir(workdir: string): Promise<string | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Build a read-only, credential-scrubbed `.git` proxy at `destDir` from the
|
|
22
|
+
* resolved git-common-dir. **[W2-min]** — copies only {@link COPIED_GIT_ENTRIES}
|
|
23
|
+
* + a synthetic stripped {@link SCRUBBED_CONFIG}; NO remotes/creds/hooks/reflog.
|
|
24
|
+
*
|
|
25
|
+
* The substrate bind-mounts `destDir` READ-ONLY into the sandbox at
|
|
26
|
+
* `<workdir>/.git`. Returns the proxy path on success, or `null` if `workdir`
|
|
27
|
+
* is not a resolvable git checkout (the substrate then mounts only the worktree
|
|
28
|
+
* with no `.git`, and git read commands simply report "not a repository" — no
|
|
29
|
+
* ambient exposure either way).
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildScrubbedGitProxy(workdir: string, destDir: string): Promise<string | null>;
|
|
32
|
+
export declare const __testing: {
|
|
33
|
+
COPIED_GIT_ENTRIES: readonly ["HEAD", "refs", "packed-refs", "objects"];
|
|
34
|
+
SCRUBBED_CONFIG: string;
|
|
35
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { IsolationTech, EgressFidelity, SubstrateSpec, SubstrateProc, SubstrateHandle, Substrate, EgressDenialDetail, EgressObservationHook, CommandResult, CommandRunner, RunnerProc, } from "./types";
|
|
2
|
+
export { NOOP_EGRESS_HOOK } from "./types";
|
|
3
|
+
export { DockerSubstrate } from "./docker";
|
|
4
|
+
export type { DockerSubstrateDeps } from "./docker";
|
|
5
|
+
export { SandboxExecSubstrate, buildSeatbeltProfile } from "./sandbox-exec";
|
|
6
|
+
export type { SandboxExecDeps } from "./sandbox-exec";
|
|
7
|
+
export { SubstrateUnavailableError, SubstrateLaunchError } from "./errors";
|
|
8
|
+
export { ChildProcessCommandRunner } from "./command-runner";
|
|
9
|
+
export { HostEgressForwarder, defaultForwarderFactory } from "./forwarder";
|
|
10
|
+
export type { ForwarderSpec, ForwarderFactory } from "./forwarder";
|
|
11
|
+
export { buildScrubbedGitProxy, resolveGitCommonDir } from "./git-proxy";
|
|
12
|
+
export { IN_CONTAINER_RELAY_SOURCE, CONTAINER_RELAY_PATH, CONTAINER_BROKER_DIR, CONTAINER_BROKER_SOCK, BROKER_SOCK_NAME, RELAY_PORT, } from "./relay-script";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The in-container relay source. argv: `node relay.js <port> <udsPath>`.
|
|
3
|
+
* - `<port>` : the loopback TCP port the agent dials (container namespace).
|
|
4
|
+
* - `<udsPath>`: the bind-mounted host UDS the bytes are forwarded to.
|
|
5
|
+
*
|
|
6
|
+
* `net.createServer` on `127.0.0.1:<port>` → `net.connect(<udsPath>)` → pipe
|
|
7
|
+
* both ways. A per-connection UDS-connect failure drops only that connection
|
|
8
|
+
* (the agent retries); a listen failure exits non-zero so the wrapper's hold
|
|
9
|
+
* surfaces it. Bound to `127.0.0.1` explicitly so it never binds a routable
|
|
10
|
+
* interface (there is none under `--network none`, but this is belt-and-braces).
|
|
11
|
+
*/
|
|
12
|
+
export declare const IN_CONTAINER_RELAY_SOURCE = "'use strict';\n// CP-7 A1 in-container relay (loopback TCP -> bind-mounted host UDS).\nconst net = require('net');\nconst port = Number(process.argv[2]);\nconst udsPath = process.argv[3];\nif (!Number.isInteger(port) || port <= 0 || port > 65535 || !udsPath) {\n console.error('relay: usage: node relay.js <port> <udsPath>');\n process.exit(2);\n}\nconst server = net.createServer((client) => {\n // Single hard-wired upstream: the bind-mounted host UDS. No agent-supplied\n // destination is ever read \u2014 this relay forwards loopback bytes to the UDS only.\n const up = net.connect(udsPath);\n const drop = () => { try { client.destroy(); } catch (e) {} try { up.destroy(); } catch (e) {} };\n up.on('connect', () => { client.pipe(up); up.pipe(client); });\n up.on('error', drop);\n client.on('error', drop);\n});\nserver.on('error', (err) => {\n console.error('relay: listen failed: ' + (err && err.message));\n process.exit(1);\n});\nserver.listen(port, '127.0.0.1', () => {\n console.error('relay: listening on 127.0.0.1:' + port + ' -> ' + udsPath);\n});\n";
|
|
13
|
+
/** The in-container path the relay script is bind-mounted (read-only) to. */
|
|
14
|
+
export declare const CONTAINER_RELAY_PATH = "/codevibe/relay.js";
|
|
15
|
+
/** The in-container directory the host UDS dir is bind-mounted (rw) to. */
|
|
16
|
+
export declare const CONTAINER_BROKER_DIR = "/codevibe/broker";
|
|
17
|
+
/** The UDS filename inside the broker dir (host + container agree on this). */
|
|
18
|
+
export declare const BROKER_SOCK_NAME = "broker.sock";
|
|
19
|
+
/** The in-container UDS path the relay forwards to. */
|
|
20
|
+
export declare const CONTAINER_BROKER_SOCK = "/codevibe/broker/broker.sock";
|
|
21
|
+
/**
|
|
22
|
+
* The FIXED loopback port the in-container relay listens on, and the port the
|
|
23
|
+
* agent dials via `sandboxBrokerUrl = http://127.0.0.1:<port>`. The container
|
|
24
|
+
* has its OWN net namespace under `--network none`, so a fixed port never
|
|
25
|
+
* collides with anything on the host. 8787 is arbitrary-but-stable.
|
|
26
|
+
*/
|
|
27
|
+
export declare const RELAY_PORT = 8787;
|