orizu 0.5.19 → 0.5.21
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/README.md +23 -0
- package/dist/archive-artifacts-cli.d.ts +50 -0
- package/dist/archive-artifacts-cli.d.ts.map +1 -0
- package/dist/artifact-archive.d.ts +48 -0
- package/dist/artifact-archive.d.ts.map +1 -0
- package/dist/artifact-pull.d.ts +22 -0
- package/dist/artifact-pull.d.ts.map +1 -0
- package/dist/banner.d.ts +3 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/connectors-cli.d.ts +31 -0
- package/dist/connectors-cli.d.ts.map +1 -0
- package/dist/credentials.d.ts +46 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/csv.d.ts +49 -0
- package/dist/csv.d.ts.map +1 -0
- package/dist/dataset-download.d.ts +6 -0
- package/dist/dataset-download.d.ts.map +1 -0
- package/dist/dataset-edit-rows.d.ts +10 -0
- package/dist/dataset-edit-rows.d.ts.map +1 -0
- package/dist/dataset-upload-snapshot.d.ts +13 -0
- package/dist/dataset-upload-snapshot.d.ts.map +1 -0
- package/dist/daytona-slice-rehearsal.d.ts +89 -0
- package/dist/daytona-slice-rehearsal.d.ts.map +1 -0
- package/dist/daytona-slice.d.ts +106 -0
- package/dist/daytona-slice.d.ts.map +1 -0
- package/dist/deploy-key-merge-core.d.ts +121 -0
- package/dist/deploy-key-merge-core.d.ts.map +1 -0
- package/dist/diff-comments-cli.d.ts +12 -0
- package/dist/diff-comments-cli.d.ts.map +1 -0
- package/dist/diff-comments-cli.js +21 -2
- package/dist/egress-allowlist-cli.d.ts +23 -0
- package/dist/egress-allowlist-cli.d.ts.map +1 -0
- package/dist/egress-policy.d.ts +108 -0
- package/dist/egress-policy.d.ts.map +1 -0
- package/dist/error-response.d.ts +9 -0
- package/dist/error-response.d.ts.map +1 -0
- package/dist/file-parser.d.ts +5 -0
- package/dist/file-parser.d.ts.map +1 -0
- package/dist/gepa-engine-dispatch.d.ts +9 -0
- package/dist/gepa-engine-dispatch.d.ts.map +1 -0
- package/dist/gepa-engine-dispatch.js +307 -0
- package/dist/gepa-python-command.d.ts +6 -0
- package/dist/gepa-python-command.d.ts.map +1 -0
- package/dist/gepa-python-command.js +26 -0
- package/dist/gepa-python-paths.d.ts +6 -0
- package/dist/gepa-python-paths.d.ts.map +1 -0
- package/dist/gepa-python-paths.js +42 -0
- package/dist/git-credential.d.ts +69 -0
- package/dist/git-credential.d.ts.map +1 -0
- package/dist/git-recovery-environment.d.ts +31 -0
- package/dist/git-recovery-environment.d.ts.map +1 -0
- package/dist/github-setup.d.ts +122 -0
- package/dist/github-setup.d.ts.map +1 -0
- package/dist/global-flags.d.ts +12 -0
- package/dist/global-flags.d.ts.map +1 -0
- package/dist/help.d.ts +46 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +93 -25
- package/dist/hosted-boot.d.ts +273 -0
- package/dist/hosted-boot.d.ts.map +1 -0
- package/dist/hosted-bootstrap-rehearsal.d.ts +86 -0
- package/dist/hosted-bootstrap-rehearsal.d.ts.map +1 -0
- package/dist/hosted-bootstrap.d.ts +188 -0
- package/dist/hosted-bootstrap.d.ts.map +1 -0
- package/dist/hosted-broker-server.d.ts +50 -0
- package/dist/hosted-broker-server.d.ts.map +1 -0
- package/dist/hosted-git-http-server.d.ts +36 -0
- package/dist/hosted-git-http-server.d.ts.map +1 -0
- package/dist/hosted-harness-claude.d.ts +195 -0
- package/dist/hosted-harness-claude.d.ts.map +1 -0
- package/dist/hosted-harness-opencode.d.ts +227 -0
- package/dist/hosted-harness-opencode.d.ts.map +1 -0
- package/dist/hosted-harness.d.ts +118 -0
- package/dist/hosted-harness.d.ts.map +1 -0
- package/dist/hosted-harvest.d.ts +68 -0
- package/dist/hosted-harvest.d.ts.map +1 -0
- package/dist/hosted-headless.d.ts +72 -0
- package/dist/hosted-headless.d.ts.map +1 -0
- package/dist/hosted-loop-lifecycle.d.ts +206 -0
- package/dist/hosted-loop-lifecycle.d.ts.map +1 -0
- package/dist/hosted-loop.d.ts +170 -0
- package/dist/hosted-loop.d.ts.map +1 -0
- package/dist/hosted-run-event-sink.d.ts +222 -0
- package/dist/hosted-run-event-sink.d.ts.map +1 -0
- package/dist/hosted-runtime-assets.d.ts +186 -0
- package/dist/hosted-runtime-assets.d.ts.map +1 -0
- package/dist/hosted-session-cli.d.ts +258 -0
- package/dist/hosted-session-cli.d.ts.map +1 -0
- package/dist/hosted-skill-staging.d.ts +73 -0
- package/dist/hosted-skill-staging.d.ts.map +1 -0
- package/dist/http.d.ts +8 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -129
- package/dist/instruction-set-gepa-launch.d.ts +3 -0
- package/dist/instruction-set-gepa-launch.d.ts.map +1 -0
- package/dist/instruction-set-gepa-launch.js +15 -0
- package/dist/instruction-set-loader.d.ts +6 -0
- package/dist/instruction-set-loader.d.ts.map +1 -0
- package/dist/instruction-set-loader.js +59 -0
- package/dist/instruction-set-manifest.d.ts +14 -0
- package/dist/instruction-set-manifest.d.ts.map +1 -0
- package/dist/instruction-set-manifest.js +162 -0
- package/dist/instruction-sets-cli.d.ts +40 -0
- package/dist/instruction-sets-cli.d.ts.map +1 -0
- package/dist/instruction-sets-cli.js +361 -0
- package/dist/json-response.d.ts +4 -0
- package/dist/json-response.d.ts.map +1 -0
- package/dist/jsonl-stream.d.ts +8 -0
- package/dist/jsonl-stream.d.ts.map +1 -0
- package/dist/kill-switch-cli.d.ts +30 -0
- package/dist/kill-switch-cli.d.ts.map +1 -0
- package/dist/loopback-serve.d.ts +25 -0
- package/dist/loopback-serve.d.ts.map +1 -0
- package/dist/manifests-cli.d.ts +22 -0
- package/dist/manifests-cli.d.ts.map +1 -0
- package/dist/markdown-report-input.d.ts +7 -0
- package/dist/markdown-report-input.d.ts.map +1 -0
- package/dist/markdown-report-input.js +15 -1
- package/dist/merge-job.d.ts +155 -0
- package/dist/merge-job.d.ts.map +1 -0
- package/dist/model-configs-cli.d.ts +19 -0
- package/dist/model-configs-cli.d.ts.map +1 -0
- package/dist/model-configs-cli.js +104 -0
- package/dist/optimization-export-cli.d.ts +19 -0
- package/dist/optimization-export-cli.d.ts.map +1 -0
- package/dist/optimizations-list-cli.d.ts +20 -0
- package/dist/optimizations-list-cli.d.ts.map +1 -0
- package/dist/optimizations-promote-cli.d.ts +8 -0
- package/dist/optimizations-promote-cli.d.ts.map +1 -0
- package/dist/optimizations-promote-cli.js +34 -0
- package/dist/option-validation.d.ts +15 -0
- package/dist/option-validation.d.ts.map +1 -0
- package/dist/preview-runtime.d.ts +63 -0
- package/dist/preview-runtime.d.ts.map +1 -0
- package/dist/prompt-draft-push.d.ts +60 -0
- package/dist/prompt-draft-push.d.ts.map +1 -0
- package/dist/prompt-label-cli.d.ts +11 -0
- package/dist/prompt-label-cli.d.ts.map +1 -0
- package/dist/prompt-label-cli.js +29 -0
- package/dist/prompt-length-wire.d.ts +28 -0
- package/dist/prompt-length-wire.d.ts.map +1 -0
- package/dist/prompt-length-wire.js +2 -2
- package/dist/prompt-report-cli.d.ts +10 -0
- package/dist/prompt-report-cli.d.ts.map +1 -0
- package/dist/prompt-report-cli.js +2 -2
- package/dist/prompt-summary-table.d.ts +15 -0
- package/dist/prompt-summary-table.d.ts.map +1 -0
- package/dist/prompt-summary-table.js +6 -0
- package/dist/registration-tag-warning.d.ts +32 -0
- package/dist/registration-tag-warning.d.ts.map +1 -0
- package/dist/report-comments-cli.d.ts +16 -0
- package/dist/report-comments-cli.d.ts.map +1 -0
- package/dist/report-markdown-blankness.d.ts +2 -0
- package/dist/report-markdown-blankness.d.ts.map +1 -0
- package/dist/report-markdown-blankness.js +6 -0
- package/dist/report-replacement-warning.d.ts +17 -0
- package/dist/report-replacement-warning.d.ts.map +1 -0
- package/dist/report-replacement-warning.js +31 -0
- package/dist/repository-backup-core.d.ts +225 -0
- package/dist/repository-backup-core.d.ts.map +1 -0
- package/dist/repository-recovery-manifest.d.ts +83 -0
- package/dist/repository-recovery-manifest.d.ts.map +1 -0
- package/dist/run-event-digest.d.ts +74 -0
- package/dist/run-event-digest.d.ts.map +1 -0
- package/dist/runner-dir-verify.d.ts +66 -0
- package/dist/runner-dir-verify.d.ts.map +1 -0
- package/dist/runner-instruction-set-contract.d.ts +24 -0
- package/dist/runner-instruction-set-contract.d.ts.map +1 -0
- package/dist/runner-instruction-set-contract.js +50 -0
- package/dist/sandbox-hygiene.d.ts +45 -0
- package/dist/sandbox-hygiene.d.ts.map +1 -0
- package/dist/sandbox-provider.d.ts +193 -0
- package/dist/sandbox-provider.d.ts.map +1 -0
- package/dist/scorer-draft-push.d.ts +50 -0
- package/dist/scorer-draft-push.d.ts.map +1 -0
- package/dist/scorers-cli.d.ts +20 -0
- package/dist/scorers-cli.d.ts.map +1 -0
- package/dist/scorers-cli.js +22 -0
- package/dist/scorers-verify-parity-bridge.d.ts +16 -0
- package/dist/scorers-verify-parity-bridge.d.ts.map +1 -0
- package/dist/scorers-verify-parity-bridge.js +90 -0
- package/dist/scorers-verify-parity.d.ts +81 -0
- package/dist/scorers-verify-parity.d.ts.map +1 -0
- package/dist/scorers-verify-parity.js +502 -0
- package/dist/scores-accept-cli.d.ts +21 -0
- package/dist/scores-accept-cli.d.ts.map +1 -0
- package/dist/secret-redaction.d.ts +47 -0
- package/dist/secret-redaction.d.ts.map +1 -0
- package/dist/session-timeline.d.ts +54 -0
- package/dist/session-timeline.d.ts.map +1 -0
- package/dist/setup-prompt.d.ts +5 -0
- package/dist/setup-prompt.d.ts.map +1 -0
- package/dist/skill-installer.d.ts +68 -0
- package/dist/skill-installer.d.ts.map +1 -0
- package/dist/skilled-proposer-launch.d.ts +7 -0
- package/dist/skilled-proposer-launch.d.ts.map +1 -0
- package/dist/skilled-proposer-launch.js +60 -0
- package/dist/smoke.d.ts +102 -0
- package/dist/smoke.d.ts.map +1 -0
- package/dist/start-intent.d.ts +12 -0
- package/dist/start-intent.d.ts.map +1 -0
- package/dist/task-assignment-manifest.d.ts +15 -0
- package/dist/task-assignment-manifest.d.ts.map +1 -0
- package/dist/task-create-error.d.ts +18 -0
- package/dist/task-create-error.d.ts.map +1 -0
- package/dist/team-connectors-cli.d.ts +29 -0
- package/dist/team-connectors-cli.d.ts.map +1 -0
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/vercel-sandbox-provider.d.ts +156 -0
- package/dist/vercel-sandbox-provider.d.ts.map +1 -0
- package/dist/workbench-cli.d.ts +233 -0
- package/dist/workbench-cli.d.ts.map +1 -0
- package/dist/workspace-sync.d.ts +207 -0
- package/dist/workspace-sync.d.ts.map +1 -0
- package/dist/workspace.d.ts +92 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/zip-draft-push.d.ts +55 -0
- package/dist/zip-draft-push.d.ts.map +1 -0
- package/package.json +15 -2
- package/requirements/README.md +138 -0
- package/requirements/skilled-proposer.in +66 -0
- package/requirements/skilled-proposer.lock +265 -0
- package/scripts/build-cli-dist.mjs +30 -0
- package/scripts/ensure-skilled-proposer-venv.mjs +5 -0
- package/scripts/orizu-source-checkout.d.mts +1 -0
- package/scripts/orizu-source-checkout.mjs +10 -0
- package/scripts/refresh-skilled-proposer-lock.mjs +256 -0
- package/scripts/vendor-gepa-python.mjs +187 -4
- package/src/diff-comments-cli.ts +41 -3
- package/src/gepa-engine-dispatch.ts +340 -0
- package/src/gepa-python-command.ts +31 -0
- package/src/gepa-python-paths.ts +56 -0
- package/src/help.ts +95 -25
- package/src/index.ts +131 -166
- package/src/instruction-set-gepa-launch.ts +28 -0
- package/src/instruction-set-loader.ts +37 -0
- package/src/instruction-set-manifest.ts +120 -0
- package/src/instruction-sets-cli.ts +306 -0
- package/src/markdown-report-input.ts +19 -1
- package/src/model-configs-cli.ts +119 -0
- package/src/optimizations-promote-cli.ts +41 -0
- package/src/prompt-label-cli.ts +55 -0
- package/src/prompt-length-wire.ts +1 -1
- package/src/prompt-report-cli.ts +2 -2
- package/src/prompt-summary-table.ts +12 -0
- package/src/report-markdown-blankness.ts +6 -0
- package/src/report-replacement-warning.ts +35 -0
- package/src/runner-instruction-set-contract.ts +64 -0
- package/src/scorers-cli.ts +40 -0
- package/src/scorers-verify-parity-bridge.ts +90 -0
- package/src/scorers-verify-parity.ts +564 -0
- package/src/skilled-proposer-launch.ts +89 -0
- package/src/skilled-proposer-venv-manager.mjs +757 -0
- package/tsconfig.json +2 -0
- package/vendor/gepa-python/LICENSE +7 -0
- package/vendor/gepa-python/manifest.json +107 -0
- package/vendor/gepa-python/src/gepa/__init__.py +22 -0
- package/vendor/gepa-python/src/gepa/adapters/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/adapters/anymaths_adapter/__init__.py +1 -0
- package/vendor/gepa-python/src/gepa/adapters/anymaths_adapter/anymaths_adapter.py +174 -0
- package/vendor/gepa-python/src/gepa/adapters/confidence_adapter/__init__.py +26 -0
- package/vendor/gepa-python/src/gepa/adapters/confidence_adapter/confidence_adapter.py +618 -0
- package/vendor/gepa-python/src/gepa/adapters/confidence_adapter/scoring.py +206 -0
- package/vendor/gepa-python/src/gepa/adapters/default_adapter/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/adapters/default_adapter/default_adapter.py +206 -0
- package/vendor/gepa-python/src/gepa/adapters/dspy_adapter/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/adapters/dspy_adapter/dspy_adapter.py +525 -0
- package/vendor/gepa-python/src/gepa/adapters/dspy_adapter/instruction_proposal.py +500 -0
- package/vendor/gepa-python/src/gepa/adapters/dspy_full_program_adapter/__init__.py +6 -0
- package/vendor/gepa-python/src/gepa/adapters/dspy_full_program_adapter/dspy_program_proposal_signature.py +137 -0
- package/vendor/gepa-python/src/gepa/adapters/dspy_full_program_adapter/full_program_adapter.py +269 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/__init__.py +56 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/evaluation_metrics.py +226 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/generic_rag_adapter.py +496 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/rag_pipeline.py +238 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_store_interface.py +212 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/__init__.py +2 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/chroma_store.py +196 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/lancedb_store.py +422 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/milvus_store.py +409 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/qdrant_store.py +368 -0
- package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/weaviate_store.py +418 -0
- package/vendor/gepa-python/src/gepa/adapters/langchain_adapter/__init__.py +11 -0
- package/vendor/gepa-python/src/gepa/adapters/langchain_adapter/langchain_adapter.py +261 -0
- package/vendor/gepa-python/src/gepa/adapters/mcp_adapter/__init__.py +37 -0
- package/vendor/gepa-python/src/gepa/adapters/mcp_adapter/mcp_adapter.py +693 -0
- package/vendor/gepa-python/src/gepa/adapters/mcp_adapter/mcp_client.py +364 -0
- package/vendor/gepa-python/src/gepa/adapters/optimize_anything_adapter/optimize_anything_adapter.py +879 -0
- package/vendor/gepa-python/src/gepa/adapters/terminal_bench_adapter/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/adapters/terminal_bench_adapter/terminal_bench_adapter.py +217 -0
- package/vendor/gepa-python/src/gepa/api.py +468 -0
- package/vendor/gepa-python/src/gepa/core/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/core/adapter.py +227 -0
- package/vendor/gepa-python/src/gepa/core/callbacks.py +551 -0
- package/vendor/gepa-python/src/gepa/core/data_loader.py +74 -0
- package/vendor/gepa-python/src/gepa/core/engine.py +1025 -0
- package/vendor/gepa-python/src/gepa/core/result.py +271 -0
- package/vendor/gepa-python/src/gepa/core/state.py +706 -0
- package/vendor/gepa-python/src/gepa/examples/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/examples/aime.py +24 -0
- package/vendor/gepa-python/src/gepa/examples/anymaths-bench/eval_default.py +111 -0
- package/vendor/gepa-python/src/gepa/examples/anymaths-bench/train_anymaths.py +177 -0
- package/vendor/gepa-python/src/gepa/examples/mcp_adapter/__init__.py +4 -0
- package/vendor/gepa-python/src/gepa/examples/mcp_adapter/mcp_optimization_example.py +456 -0
- package/vendor/gepa-python/src/gepa/examples/rag_adapter/__init__.py +9 -0
- package/vendor/gepa-python/src/gepa/examples/rag_adapter/rag_optimization.py +824 -0
- package/vendor/gepa-python/src/gepa/examples/terminal-bench/train_terminus.py +161 -0
- package/vendor/gepa-python/src/gepa/gepa_utils.py +117 -0
- package/vendor/gepa-python/src/gepa/gskill/__init__.py +1 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/cost_tracker.py +194 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/claude_code.py +1117 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/claude_code_skills.py +613 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/mini_swe_agent.py +440 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/experiment_logger.py +367 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/swe_fitness_fn.py +209 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/swe_harness.py +352 -0
- package/vendor/gepa-python/src/gepa/gskill/gskill/train_optimize_anything.py +830 -0
- package/vendor/gepa-python/src/gepa/image.py +104 -0
- package/vendor/gepa-python/src/gepa/lm.py +261 -0
- package/vendor/gepa-python/src/gepa/logging/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/logging/experiment_tracker.py +457 -0
- package/vendor/gepa-python/src/gepa/logging/logger.py +75 -0
- package/vendor/gepa-python/src/gepa/logging/utils.py +130 -0
- package/vendor/gepa-python/src/gepa/optimize_anything.py +1701 -0
- package/vendor/gepa-python/src/gepa/proposer/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/proposer/base.py +53 -0
- package/vendor/gepa-python/src/gepa/proposer/merge.py +403 -0
- package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/base.py +64 -0
- package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/reflection_lm.py +178 -0
- package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/reflective_mutation.py +641 -0
- package/vendor/gepa-python/src/gepa/py.typed +0 -0
- package/vendor/gepa-python/src/gepa/strategies/__init__.py +0 -0
- package/vendor/gepa-python/src/gepa/strategies/acceptance.py +66 -0
- package/vendor/gepa-python/src/gepa/strategies/batch_sampler.py +103 -0
- package/vendor/gepa-python/src/gepa/strategies/candidate_selector.py +82 -0
- package/vendor/gepa-python/src/gepa/strategies/component_selector.py +36 -0
- package/vendor/gepa-python/src/gepa/strategies/eval_policy.py +64 -0
- package/vendor/gepa-python/src/gepa/strategies/instruction_proposal.py +153 -0
- package/vendor/gepa-python/src/gepa/strategies/proposal_sampling.py +128 -0
- package/vendor/gepa-python/src/gepa/strategies/proposal_selection.py +84 -0
- package/vendor/gepa-python/src/gepa/utils/__init__.py +63 -0
- package/vendor/gepa-python/src/gepa/utils/code_execution.py +626 -0
- package/vendor/gepa-python/src/gepa/utils/stdio_capture.py +145 -0
- package/vendor/gepa-python/src/gepa/utils/stop_condition.py +230 -0
- package/vendor/gepa-python/src/gepa/visualization.py +359 -0
- package/vendor/orizu-gepa/pyproject.toml +18 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/__init__.py +9 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/__main__.py +5 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/adapter.py +138 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/callbacks.py +666 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/cli.py +7 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/engine.py +269 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/instruction_set_loader.py +52 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/preflight.py +64 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/reflection.py +186 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/runtime.py +721 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/skilled_proposer_bridge.py +381 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/stop_conditions.py +55 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/translator.py +203 -0
- package/vendor/orizu-gepa-python/pyproject.toml +1 -1
- package/vendor/orizu-gepa-python/src/orizu_gepa/cli.py +1 -0
- package/vendor/orizu-gepa-python/src/orizu_gepa/client.py +52 -7
- package/vendor/orizu-gepa-python/src/orizu_gepa/local_log.py +52 -0
- package/vendor/orizu-gepa-python/src/orizu_gepa/optimizer.py +10 -5
- package/vendor/orizu-gepa-python/src/orizu_gepa/reflection.py +323 -68
- package/vendor/orizu-gepa-python/src/orizu_gepa/runner.py +207 -13
- package/vendor/skills/orizu-cli/SKILL.md +3 -1
- package/vendor/skills/orizu-cli/references/cli-reference.md +85 -1
- package/vendor/skills/orizu-cli/references/migrate-existing-gepa-setup.md +303 -0
- package/vendor/skills/orizu-cli/references/optimization-reports.md +1 -1
- package/vendor/skills/orizu-cli/references/optimization-with-gepa.md +26 -1
- package/vendor/skills/orizu-cli/references/prompt-control-plane.md +113 -10
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-driven hosted-sandbox bootstrap (ALI-925 / P3.3, per ADR-005 §8).
|
|
3
|
+
*
|
|
4
|
+
* Given a live `SandboxSession` (from the Orizu `SandboxProvider` seam — works
|
|
5
|
+
* with BOTH the Daytona adapter and local-sim), an Orizu API base URL, a bearer,
|
|
6
|
+
* and the workspace/session/run ids + session branch, `bootstrapHostedSandbox`
|
|
7
|
+
* performs the in-sandbox boot flow forked in DESIGN from OpenInspect's
|
|
8
|
+
* `entrypoint.py` supervisor:
|
|
9
|
+
*
|
|
10
|
+
* 1. inject boot context (env/config) as run-scoped files — the bearer only in
|
|
11
|
+
* a 0600 file reaped at teardown, never in git config or the clone URL (G3);
|
|
12
|
+
* 2. install the git credential helper (self-contained script asset) and scope
|
|
13
|
+
* it to the repo dir ONLY (never --global);
|
|
14
|
+
* 3. clone the session branch via the helper (no token in URL / .git/config);
|
|
15
|
+
* 4. install the Orizu CLI (non-fatal, recorded);
|
|
16
|
+
* 5. run the customer `.orizu/setup.sh` hook if present (fresh-boot, non-fatal);
|
|
17
|
+
* 6. record lifecycle events to the RunAPI with client-assigned sequences
|
|
18
|
+
* (generic event types only — never the reserved run_* lifecycle types);
|
|
19
|
+
* 7. on failure, record `bootstrap_failed`, tear down, and sweep for residue.
|
|
20
|
+
*
|
|
21
|
+
* P3.4/P3.5 (OpenCode driver, event bridge, `orizu session start --hosted`)
|
|
22
|
+
* build ON TOP of this — `bootstrapHostedSandbox` is the single writer for the
|
|
23
|
+
* run at this stage and returns the run cursor so a follow-on can continue it.
|
|
24
|
+
*/
|
|
25
|
+
import type { SandboxSession } from './sandbox-provider.js';
|
|
26
|
+
import { type HygieneFinding } from './sandbox-hygiene.js';
|
|
27
|
+
export type HostedFetch = (url: string, init?: RequestInit) => Promise<Response>;
|
|
28
|
+
export interface AppendedRunEvent {
|
|
29
|
+
eventId: string;
|
|
30
|
+
sequence: number;
|
|
31
|
+
eventType: string;
|
|
32
|
+
/** Already redacted — safe to inspect / serialize in tests. */
|
|
33
|
+
payload: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The bootstrap orchestrator is the single writer for the run at this stage, so
|
|
37
|
+
* it owns a local monotonic sequence (per §4b). Every payload is redacted with
|
|
38
|
+
* the bearer before it leaves the process — a run-event body must never carry
|
|
39
|
+
* the bearer or a minted token. Lifecycle run_* types are rejected server-side;
|
|
40
|
+
* the orchestrator only emits generic types.
|
|
41
|
+
*/
|
|
42
|
+
export interface BootstrapRunEventSink {
|
|
43
|
+
append(eventType: string, payload?: Record<string, unknown>): Promise<AppendedRunEvent>;
|
|
44
|
+
readonly recorded: readonly AppendedRunEvent[];
|
|
45
|
+
}
|
|
46
|
+
export interface CreateRunEventSinkOptions {
|
|
47
|
+
apiBaseUrl: string;
|
|
48
|
+
runId: string;
|
|
49
|
+
bearer: string;
|
|
50
|
+
fetchImpl?: HostedFetch;
|
|
51
|
+
/** Extra verbatim secrets to redact from payloads (e.g. minted tokens). */
|
|
52
|
+
redactSecretsList?: readonly string[];
|
|
53
|
+
now?: () => number;
|
|
54
|
+
/** Sequence to start at (defaults to 1). */
|
|
55
|
+
startSequence?: number;
|
|
56
|
+
}
|
|
57
|
+
export declare function createBootstrapRunEventSink(options: CreateRunEventSinkOptions): BootstrapRunEventSink;
|
|
58
|
+
export interface HostedBootstrapOptions {
|
|
59
|
+
session: SandboxSession;
|
|
60
|
+
apiBaseUrl: string;
|
|
61
|
+
/** Opaque bearer — a PAT in rehearsal, a G2 session token in production. */
|
|
62
|
+
bearer: string;
|
|
63
|
+
workspaceId: string;
|
|
64
|
+
sessionId: string;
|
|
65
|
+
runId: string;
|
|
66
|
+
sessionBranch: string;
|
|
67
|
+
repoFullName: string;
|
|
68
|
+
/** Map the broker repo full-name → a clone URL the provider understands.
|
|
69
|
+
* Live: `https://github.com/<repo>.git`. Local-sim: the bare repo path. */
|
|
70
|
+
resolveCloneUrl: (repo: string) => string;
|
|
71
|
+
/** Directory (relative to the sandbox root) the session branch clones into. */
|
|
72
|
+
workspaceDir?: string;
|
|
73
|
+
/** VCS host the credential helper serves (default github.com). */
|
|
74
|
+
host?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Broker purpose vocabulary the helper mints with. When omitted, the default
|
|
77
|
+
* is chosen from `bearerKind` (below): a human bearer mints `write`/`read`, an
|
|
78
|
+
* agent bearer mints `session_write`/`session_read`. Injectable so a caller can
|
|
79
|
+
* override without editing the credential-helper script.
|
|
80
|
+
*/
|
|
81
|
+
tokenPurposes?: {
|
|
82
|
+
primary: string;
|
|
83
|
+
fallback: string;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Kind of bearer in the 0600 file — the orchestrator KNOWS what it minted, so
|
|
87
|
+
* the default broker purposes are chosen from this EXPLICIT signal, never by
|
|
88
|
+
* sniffing the token. 'agent' → session_write/session_read; 'human' (default)
|
|
89
|
+
* → write/read. Ignored when `tokenPurposes` is passed explicitly.
|
|
90
|
+
*/
|
|
91
|
+
bearerKind?: 'agent' | 'human';
|
|
92
|
+
/**
|
|
93
|
+
* Hosts the credential helper may serve over plain HTTP (loopback rehearsal
|
|
94
|
+
* only). Production omits this → the helper stays https-only.
|
|
95
|
+
*/
|
|
96
|
+
insecureHttpHosts?: readonly string[];
|
|
97
|
+
/** Helper cache refresh buffer (ms) — overridable so tests can force refresh. */
|
|
98
|
+
cacheBufferMs?: number;
|
|
99
|
+
/**
|
|
100
|
+
* Defer the customer `.orizu/setup.sh` hook to the in-sandbox loop (P3-a). When
|
|
101
|
+
* true, bootstrap does NOT run the hook; it records `setup_hook_deferred` and
|
|
102
|
+
* the loop runs it AFTER its egress canary passes. The host sets this for
|
|
103
|
+
* enforced-egress providers so the hook's network access cannot precede the
|
|
104
|
+
* canary's detection of a silent firewall failure. Default false (run inline).
|
|
105
|
+
*/
|
|
106
|
+
deferSetupHook?: boolean;
|
|
107
|
+
/** Published CLI version to install in-sandbox (default 'latest'). */
|
|
108
|
+
cliVersion?: string;
|
|
109
|
+
/** Override the CLI-install shell command (tests inject a deterministic one). */
|
|
110
|
+
cliInstallCommand?: string;
|
|
111
|
+
/**
|
|
112
|
+
* Pre-baked runtime (ALI-1017): the image already ships the Orizu CLI on PATH,
|
|
113
|
+
* so the CLI-install step is SKIPPED (it would fail under G5 default-deny egress
|
|
114
|
+
* anyway) and a `cli_prebaked` event is recorded instead of `cli_installed`.
|
|
115
|
+
* The host sets this together with the sandbox `image` so the two never
|
|
116
|
+
* disagree. When unset, bootstrap ALSO belt-checks the `/opt/orizu/prebaked.json`
|
|
117
|
+
* marker on the sandbox filesystem; either signal skips the install.
|
|
118
|
+
*/
|
|
119
|
+
prebaked?: boolean;
|
|
120
|
+
/** Inject a RunAPI sink (tests/production); default builds one over apiBaseUrl. */
|
|
121
|
+
sink?: BootstrapRunEventSink;
|
|
122
|
+
fetchImpl?: HostedFetch;
|
|
123
|
+
now?: () => number;
|
|
124
|
+
}
|
|
125
|
+
export interface HostedBootstrapStep {
|
|
126
|
+
key: string;
|
|
127
|
+
ok: boolean;
|
|
128
|
+
detail: string;
|
|
129
|
+
}
|
|
130
|
+
export interface HostedBootstrapResult {
|
|
131
|
+
ok: boolean;
|
|
132
|
+
steps: HostedBootstrapStep[];
|
|
133
|
+
events: readonly AppendedRunEvent[];
|
|
134
|
+
paths: HostedRuntimePaths;
|
|
135
|
+
/** Set on the failure path: the residue sweep result after teardown. */
|
|
136
|
+
sweep: {
|
|
137
|
+
clean: boolean;
|
|
138
|
+
findings: HygieneFinding[];
|
|
139
|
+
} | null;
|
|
140
|
+
failure: {
|
|
141
|
+
step: string;
|
|
142
|
+
error: string;
|
|
143
|
+
} | null;
|
|
144
|
+
}
|
|
145
|
+
export interface HostedRuntimePaths {
|
|
146
|
+
root: string;
|
|
147
|
+
runDirRel: string;
|
|
148
|
+
runDirAbs: string;
|
|
149
|
+
repoDirRel: string;
|
|
150
|
+
helperScriptAbs: string;
|
|
151
|
+
bootContextAbs: string;
|
|
152
|
+
bearerFileAbs: string;
|
|
153
|
+
cacheFileAbs: string;
|
|
154
|
+
}
|
|
155
|
+
export declare function computeRuntimePaths(root: string, runId: string, workspaceDir: string): HostedRuntimePaths;
|
|
156
|
+
export declare function bootstrapHostedSandbox(opts: HostedBootstrapOptions): Promise<HostedBootstrapResult>;
|
|
157
|
+
export interface TeardownOptions {
|
|
158
|
+
session: SandboxSession;
|
|
159
|
+
paths: HostedRuntimePaths;
|
|
160
|
+
bearer: string;
|
|
161
|
+
workspaceDir?: string;
|
|
162
|
+
/** Extra token values to sweep for (e.g. a minted repo token a test planted). */
|
|
163
|
+
extraTokens?: readonly string[];
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Tear the run-scoped credential material down and PROVE no token residue
|
|
167
|
+
* remains (G3, extends ALI-973's `sweepForTokenResidue`). Removes the run dir
|
|
168
|
+
* (bearer + boot context + minted-token cache), unsets the repo-local credential
|
|
169
|
+
* helper, then sweeps .git/config, the git credential cache, env, argv, and
|
|
170
|
+
* ~/.git-credentials for the bearer, any extra tokens, and the token markers.
|
|
171
|
+
*/
|
|
172
|
+
export declare function teardownHostedSandbox(opts: TeardownOptions): Promise<{
|
|
173
|
+
clean: boolean;
|
|
174
|
+
findings: HygieneFinding[];
|
|
175
|
+
}>;
|
|
176
|
+
export interface HostedSweepOptions {
|
|
177
|
+
bearer: string;
|
|
178
|
+
paths: HostedRuntimePaths;
|
|
179
|
+
workspaceDir: string;
|
|
180
|
+
extraTokens?: readonly string[];
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Extend the ALI-973 sweep with hosted-specific probes: the run dir (bearer +
|
|
184
|
+
* cache) must be gone, and the standard leak surfaces (.git/config, ~/.git-
|
|
185
|
+
* credentials, credential cache, env, argv) must be free of the bearer.
|
|
186
|
+
*/
|
|
187
|
+
export declare function sweepHostedResidue(session: SandboxSession, opts: HostedSweepOptions): Promise<HygieneFinding[]>;
|
|
188
|
+
//# sourceMappingURL=hosted-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-bootstrap.d.ts","sourceRoot":"","sources":["../src/hosted-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone fake Orizu control-plane broker for the ALI-925 rehearsal + tests.
|
|
3
|
+
*
|
|
4
|
+
* This runs as its OWN process (spawned via `bun <this file>`), NOT in-process,
|
|
5
|
+
* for a specific reason: the local-sim `SandboxSession.exec` uses a blocking
|
|
6
|
+
* `spawnSync`, and the in-sandbox credential helper it runs makes a real HTTP
|
|
7
|
+
* call back to this broker. An in-process server can't answer that call while
|
|
8
|
+
* the test thread is blocked in `spawnSync` — so the broker must be a separate
|
|
9
|
+
* process with its own event loop.
|
|
10
|
+
*
|
|
11
|
+
* It implements exactly the two contracts the bootstrap depends on:
|
|
12
|
+
* - POST /api/cli/workspaces/:id/repo-token → {token, expiresAt, repo, mintId}
|
|
13
|
+
* - POST /api/cli/workbench-runs/:id/events → 201 (rejects reserved run_* 400)
|
|
14
|
+
* and it journals every accepted event / issued token to newline-delimited JSON
|
|
15
|
+
* files so the parent test can read them back. Config comes from env (below).
|
|
16
|
+
*
|
|
17
|
+
* Not shipped to end users — a test/rehearsal fixture only.
|
|
18
|
+
*/
|
|
19
|
+
export interface BrokerConfig {
|
|
20
|
+
bearer: string;
|
|
21
|
+
repo: string;
|
|
22
|
+
/** Test-only exact Artifacts remote returned by the repo-token endpoint. */
|
|
23
|
+
artifactsRemote?: string;
|
|
24
|
+
/** Test-only expiry override for fail-closed helper rehearsals. */
|
|
25
|
+
artifactsExpiresAt?: string;
|
|
26
|
+
eventsFile?: string;
|
|
27
|
+
tokensFile?: string;
|
|
28
|
+
repoTokenStatus?: number;
|
|
29
|
+
eventsStatus?: number;
|
|
30
|
+
denyWrite?: boolean;
|
|
31
|
+
port?: number;
|
|
32
|
+
/**
|
|
33
|
+
* E2E mode: accept ANY non-empty Bearer (the full hosted flow uses a human
|
|
34
|
+
* bearer for session/agent-token mints and a DISTINCT agent bearer for
|
|
35
|
+
* run/events), and serve the full RunAPI + session + agent-token surface so
|
|
36
|
+
* `startHostedSession` can be driven end to end. Off by default so the
|
|
37
|
+
* bootstrap/credential-helper tests keep their strict single-bearer contract.
|
|
38
|
+
*/
|
|
39
|
+
fullRunApi?: boolean;
|
|
40
|
+
/** E2E: the session id + branch the /sessions endpoint returns (so it matches
|
|
41
|
+
* a pre-seeded session branch on the local bare repo). */
|
|
42
|
+
sessionId?: string;
|
|
43
|
+
sessionBranch?: string;
|
|
44
|
+
}
|
|
45
|
+
export declare function readBrokerConfigFromEnv(env: NodeJS.ProcessEnv): BrokerConfig;
|
|
46
|
+
export declare function startBrokerServer(config: BrokerConfig): {
|
|
47
|
+
port: number;
|
|
48
|
+
stop: (force?: boolean) => void;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=hosted-broker-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-broker-server.d.ts","sourceRoot":"","sources":["../src/hosted-broker-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA8BH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;+DAC2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,YAAY,CAgB5E;AASD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,CA6LzG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone authenticated smart-HTTP git server for the ALI-925 rehearsal.
|
|
3
|
+
*
|
|
4
|
+
* Runs as its OWN process (spawned via `bun <this file>`), for the same reason
|
|
5
|
+
* the fake broker does: the local-sim `SandboxSession.exec` blocks on a
|
|
6
|
+
* `spawnSync` git clone, and the in-sandbox credential helper that clone drives
|
|
7
|
+
* makes real HTTP calls out. A server sharing the test's event loop could not
|
|
8
|
+
* answer while that loop is blocked — so the git server must be its own process.
|
|
9
|
+
*
|
|
10
|
+
* It proves the integrated credential path end-to-end: it (a) requires HTTP Basic
|
|
11
|
+
* auth and rejects unauthenticated requests with 401 + `WWW-Authenticate`, forcing
|
|
12
|
+
* git to invoke the credential helper, and (b) on authenticated requests serves a
|
|
13
|
+
* real bare repo by shelling to `git http-backend` as CGI. Every Basic-auth
|
|
14
|
+
* password it receives is journaled to a file so the rehearsal can assert the
|
|
15
|
+
* password git presented equals the token the broker minted (git → helper →
|
|
16
|
+
* broker → token → authenticated clone).
|
|
17
|
+
*
|
|
18
|
+
* Not shipped to end users — a test/rehearsal fixture only.
|
|
19
|
+
*/
|
|
20
|
+
export interface GitHttpConfig {
|
|
21
|
+
/** Absolute path to the bare repo (e.g. `<root>/workbench.git`). */
|
|
22
|
+
repoDir: string;
|
|
23
|
+
/** File the server appends every received `{ user, pass }` to (NDJSON). */
|
|
24
|
+
authLogFile?: string;
|
|
25
|
+
port?: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function readGitHttpConfigFromEnv(env: NodeJS.ProcessEnv): GitHttpConfig;
|
|
28
|
+
/** The env keys the server reads (kept here so callers do not hand-roll them). */
|
|
29
|
+
export declare function gitHttpEnv(config: GitHttpConfig): Record<string, string>;
|
|
30
|
+
/** The clone path segment a client uses (the bare repo's basename). */
|
|
31
|
+
export declare function gitHttpRepoSegment(config: GitHttpConfig): string;
|
|
32
|
+
export declare function startGitHttpServer(config: GitHttpConfig): {
|
|
33
|
+
port: number;
|
|
34
|
+
stop: (force?: boolean) => void;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=hosted-git-http-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-git-http-server.d.ts","sourceRoot":"","sources":["../src/hosted-git-http-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAmCH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,CAM9E;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxE;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,CAyE3G"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude-Agent-SDK driver for the AgentHarness seam (ALI-929 / P3.6, per ADR-005
|
|
3
|
+
* §4a — the swappability proof).
|
|
4
|
+
*
|
|
5
|
+
* This is the SECOND `AgentHarness` implementation behind the same seam as the
|
|
6
|
+
* OpenCode driver (`hosted-harness-opencode.ts`). It drives
|
|
7
|
+
* `@anthropic-ai/claude-agent-sdk`'s `query()` loop — an IN-PROCESS agent loop,
|
|
8
|
+
* with NO server process to spawn and no localhost SSE to parse — and normalizes
|
|
9
|
+
* the SDK's message/tool stream into the SAME `HarnessEvent` vocabulary the
|
|
10
|
+
* event bridge (`hosted-run-event-sink.ts`) already consumes. It carries ZERO
|
|
11
|
+
* Claude-Agent-SDK types across the seam: everything below stays behind
|
|
12
|
+
* `createClaudeAgentHarness`, exactly as the OpenCode SSE schema stays behind
|
|
13
|
+
* `createOpenCodeHarness`.
|
|
14
|
+
*
|
|
15
|
+
* The founder's locked escape-hatch ("OpenInspect, but we can move to our own
|
|
16
|
+
* harness whenever we want") is proven by this module existing and passing the
|
|
17
|
+
* SAME session-cell invariants through the SAME sink — see
|
|
18
|
+
* `test/cli/hosted-harness-swap.test.ts`.
|
|
19
|
+
*
|
|
20
|
+
* INJECTABLE LOADER: like the Daytona/Vercel SDK adapters, the SDK is imported
|
|
21
|
+
* LAZILY through a NON-LITERAL specifier so the CLI/app build resolve without the
|
|
22
|
+
* package, and a `loadModule` dep is injectable so tests exercise the
|
|
23
|
+
* normalization against a fake `query()` with no real SDK and no model calls.
|
|
24
|
+
*
|
|
25
|
+
* ── query() → runPrompt() mapping ────────────────────────────────────────────
|
|
26
|
+
* ONE `query()` call drives ONE `runPrompt()` to completion. The SDK's async
|
|
27
|
+
* iterable yields `SDKMessage`s; we translate them:
|
|
28
|
+
* • system/init → capture session_id; emit `ready` once.
|
|
29
|
+
* • assistant.message → text blocks → `token` (keyed by the SDK message id
|
|
30
|
+
* for coalescing); tool_use blocks → `tool_call`. The
|
|
31
|
+
* per-turn `message.usage` the SDK ALWAYS populates is
|
|
32
|
+
* deliberately NOT emitted as a `step_finish` (see
|
|
33
|
+
* leak #3): the driver coalesces to ONE terminal
|
|
34
|
+
* step_finish so both harnesses share one granularity.
|
|
35
|
+
* • user.message → tool_result blocks → `tool_result` (paired to the
|
|
36
|
+
* tool_use by callId, exactly once).
|
|
37
|
+
* • stream_event (partial) → text deltas are accumulated into the running token
|
|
38
|
+
* snapshot for coalescing; consumed, not 1:1 mapped.
|
|
39
|
+
* • result/success → final `step_finish` with cost+tokens, then
|
|
40
|
+
* `execution_complete` (success, or aborted on stop).
|
|
41
|
+
* • result/error_* → `error` (critical terminal).
|
|
42
|
+
* The stream ALWAYS ends with exactly one terminal event.
|
|
43
|
+
*
|
|
44
|
+
* ── WHAT LEAKS THROUGH THE BOUNDARY (map-conservatively evidence) ─────────────
|
|
45
|
+
* These SDK signals have NO clean `HarnessEvent` kind and are DROPPED here (not a
|
|
46
|
+
* reason to widen the seam — this is the audit of the boundary's fit):
|
|
47
|
+
* 1. `thinking` / `redacted_thinking` content blocks — the harness vocabulary
|
|
48
|
+
* has no reasoning kind (OpenCode's driver drops reasoning too), so extended
|
|
49
|
+
* thinking is not forwarded. Cost of surfacing it: a new `thinking` kind on
|
|
50
|
+
* the seam + a bridge mapping — a deliberate future decision, not done here.
|
|
51
|
+
* 2. `system/compact_boundary` — context-compaction markers are dropped (the
|
|
52
|
+
* OpenCode driver handles `session.compacted` internally and forwards
|
|
53
|
+
* nothing either; parity, not a leak).
|
|
54
|
+
* 3. Per-assistant-turn USAGE granularity — the real contract is that every
|
|
55
|
+
* `SDKAssistantMessage.message` is a `BetaMessage` whose `usage: BetaUsage`
|
|
56
|
+
* is ALWAYS populated (input/output token counts are non-optional), so the
|
|
57
|
+
* SDK reports usage on EACH assistant turn, not only at the terminal. The
|
|
58
|
+
* driver deliberately DOES NOT emit a `step_finish` per assistant turn: it
|
|
59
|
+
* coalesces to exactly ONE terminal `step_finish` at the `result` message,
|
|
60
|
+
* carrying `total_cost_usd` + aggregate `usage`. OpenCode emits one
|
|
61
|
+
* `step_finish` per `step-finish` part; for a one-tool task that is also a
|
|
62
|
+
* single terminal step, so the two streams are legitimately identical at the
|
|
63
|
+
* seam. This coalescing is itself a swappability win — the seam absorbs the
|
|
64
|
+
* raw per-turn/per-step granularity difference so downstream sees one
|
|
65
|
+
* normalized `agent_step_finish` from either harness. (Cost is only known at
|
|
66
|
+
* the terminal `result`; per-turn `usage` carries tokens but no cost, which
|
|
67
|
+
* is why folding to the terminal loses nothing the seam surfaces.)
|
|
68
|
+
* 4. `result.num_turns` / `duration_ms` / `permission_denials` — folded into
|
|
69
|
+
* the terminal transition's shape (success/aborted/error), not surfaced as
|
|
70
|
+
* distinct events.
|
|
71
|
+
* 5. Git author identity is plumbed via `GIT_AUTHOR_*` / `GIT_COMMITTER_*`
|
|
72
|
+
* ENV on the query options (the SDK has no first-class author param), where
|
|
73
|
+
* OpenCode takes it structurally. Same effect, different plumbing point.
|
|
74
|
+
* NOTE the `env` CONTRACT: the SDK's `env` REPLACES the subprocess
|
|
75
|
+
* environment entirely (it is NOT merged with `process.env`), so we spread
|
|
76
|
+
* `...process.env` FIRST — without it the `claude` subprocess would lose
|
|
77
|
+
* `PATH`/`HOME`/`ANTHROPIC_API_KEY` and die. G3 credential model: like the
|
|
78
|
+
* OpenCode path (which hands `opencode` the non-secret dummy key), the SDK
|
|
79
|
+
* client is given the same `anthropicDummyKey` as `ANTHROPIC_API_KEY`; the
|
|
80
|
+
* real key is injected by the sandbox firewall on egress to
|
|
81
|
+
* api.anthropic.com, so NO raw key ever enters the in-process client. See
|
|
82
|
+
* the G3/credentials axis in ali-929-harness-comparison.md.
|
|
83
|
+
* 6. The resumable agent session id is assigned LAZILY by the SDK at
|
|
84
|
+
* `system/init` — it does not exist before the first `runPrompt`. So
|
|
85
|
+
* `start()` returns the RESUME id if given, else `''`; the real id first
|
|
86
|
+
* reaches the bridge via the `ready` event. OpenCode creates its session
|
|
87
|
+
* eagerly in `start()`. This is the one place the seam's "start returns the
|
|
88
|
+
* session id" shape fits OpenCode better than the SDK — the run still
|
|
89
|
+
* completes identically (the sink records the id from `ready`); see the
|
|
90
|
+
* comparison doc's swappability verdict.
|
|
91
|
+
* 7. Provider-qualified model strings (e.g. `anthropic/claude-opus-4-8`) are
|
|
92
|
+
* reduced to the bare model id the SDK expects (leading `anthropic/` is
|
|
93
|
+
* stripped; other providers pass through unchanged and would be the SDK's to
|
|
94
|
+
* reject).
|
|
95
|
+
*/
|
|
96
|
+
import type { AgentHarness } from './hosted-harness.js';
|
|
97
|
+
/** An Anthropic content block as it appears inside an SDK assistant/user message
|
|
98
|
+
* (`message.content`). Kept structural — we read only the fields we map. */
|
|
99
|
+
interface SdkContentBlock {
|
|
100
|
+
type: string;
|
|
101
|
+
text?: string;
|
|
102
|
+
id?: string;
|
|
103
|
+
name?: string;
|
|
104
|
+
input?: unknown;
|
|
105
|
+
tool_use_id?: string;
|
|
106
|
+
content?: unknown;
|
|
107
|
+
is_error?: boolean;
|
|
108
|
+
}
|
|
109
|
+
interface SdkAnthropicMessage {
|
|
110
|
+
id?: string;
|
|
111
|
+
role?: string;
|
|
112
|
+
content?: SdkContentBlock[] | string;
|
|
113
|
+
usage?: Record<string, unknown>;
|
|
114
|
+
}
|
|
115
|
+
/** A raw Anthropic streaming event, forwarded by the SDK when partial messages
|
|
116
|
+
* are enabled (`type: 'stream_event'`). We read only the text-delta path. */
|
|
117
|
+
interface SdkStreamRawEvent {
|
|
118
|
+
type?: string;
|
|
119
|
+
index?: number;
|
|
120
|
+
delta?: {
|
|
121
|
+
type?: string;
|
|
122
|
+
text?: string;
|
|
123
|
+
};
|
|
124
|
+
content_block?: {
|
|
125
|
+
type?: string;
|
|
126
|
+
};
|
|
127
|
+
message?: {
|
|
128
|
+
id?: string;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** The SDK message union. Discriminated on `type` (+ `subtype` for system). */
|
|
132
|
+
interface SdkMessage {
|
|
133
|
+
type: string;
|
|
134
|
+
subtype?: string;
|
|
135
|
+
session_id?: string;
|
|
136
|
+
message?: SdkAnthropicMessage;
|
|
137
|
+
event?: SdkStreamRawEvent;
|
|
138
|
+
is_error?: boolean;
|
|
139
|
+
total_cost_usd?: number;
|
|
140
|
+
usage?: Record<string, unknown>;
|
|
141
|
+
result?: string;
|
|
142
|
+
}
|
|
143
|
+
interface SdkMcpServerConfig {
|
|
144
|
+
type: string;
|
|
145
|
+
command?: string;
|
|
146
|
+
args?: readonly string[];
|
|
147
|
+
url?: string;
|
|
148
|
+
env?: Record<string, string>;
|
|
149
|
+
}
|
|
150
|
+
interface SdkQueryOptions {
|
|
151
|
+
model?: string;
|
|
152
|
+
cwd?: string;
|
|
153
|
+
resume?: string;
|
|
154
|
+
abortController?: AbortController;
|
|
155
|
+
permissionMode?: string;
|
|
156
|
+
/** REQUIRED by the SDK whenever `permissionMode: 'bypassPermissions'` — a
|
|
157
|
+
* safety measure to make the bypass intentional. Verified against
|
|
158
|
+
* @anthropic-ai/claude-agent-sdk@0.3.201 Options.allowDangerouslySkipPermissions. */
|
|
159
|
+
allowDangerouslySkipPermissions?: boolean;
|
|
160
|
+
includePartialMessages?: boolean;
|
|
161
|
+
mcpServers?: Record<string, SdkMcpServerConfig>;
|
|
162
|
+
/** The SDK's `env` REPLACES the subprocess environment entirely (it is NOT
|
|
163
|
+
* merged with `process.env`). Matches the real contract's
|
|
164
|
+
* `{ [k: string]: string | undefined }` so `...process.env` spreads cleanly. */
|
|
165
|
+
env?: Record<string, string | undefined>;
|
|
166
|
+
}
|
|
167
|
+
/** The object `query()` returns: an async iterable of messages plus `interrupt`. */
|
|
168
|
+
interface SdkQueryResult extends AsyncIterable<SdkMessage> {
|
|
169
|
+
interrupt?: () => Promise<void>;
|
|
170
|
+
}
|
|
171
|
+
export interface ClaudeAgentSdkModule {
|
|
172
|
+
query: (args: {
|
|
173
|
+
prompt: string;
|
|
174
|
+
options: SdkQueryOptions;
|
|
175
|
+
}) => SdkQueryResult;
|
|
176
|
+
}
|
|
177
|
+
export interface ClaudeAgentHarnessOptions {
|
|
178
|
+
/** Test seam: inject a fake SDK so normalization runs with no real query/model. */
|
|
179
|
+
loadModule?: () => Promise<ClaudeAgentSdkModule>;
|
|
180
|
+
/** Permission posture; default 'bypassPermissions' (the sandbox is the boundary,
|
|
181
|
+
* mirroring the OpenCode driver's allow-all config). */
|
|
182
|
+
permissionMode?: string;
|
|
183
|
+
/**
|
|
184
|
+
* Non-secret placeholder key handed to the in-process SDK client as
|
|
185
|
+
* `ANTHROPIC_API_KEY` (G3). The sandbox firewall swaps in the real key on
|
|
186
|
+
* egress to api.anthropic.com, so no raw key enters the client — the SAME
|
|
187
|
+
* brokering the OpenCode path relies on. Threaded from the loop boot context;
|
|
188
|
+
* never a real key. When absent, `ANTHROPIC_API_KEY` is inherited from
|
|
189
|
+
* `process.env` as-is (still expected to be the dummy in the sandbox).
|
|
190
|
+
*/
|
|
191
|
+
anthropicDummyKey?: string;
|
|
192
|
+
}
|
|
193
|
+
export declare function createClaudeAgentHarness(options?: ClaudeAgentHarnessOptions): AgentHarness;
|
|
194
|
+
export {};
|
|
195
|
+
//# sourceMappingURL=hosted-harness-claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-harness-claude.d.ts","sourceRoot":"","sources":["../src/hosted-harness-claude.ts"],"names":[],"mappings":"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"}
|