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.
Files changed (378) hide show
  1. package/README.md +23 -0
  2. package/dist/archive-artifacts-cli.d.ts +50 -0
  3. package/dist/archive-artifacts-cli.d.ts.map +1 -0
  4. package/dist/artifact-archive.d.ts +48 -0
  5. package/dist/artifact-archive.d.ts.map +1 -0
  6. package/dist/artifact-pull.d.ts +22 -0
  7. package/dist/artifact-pull.d.ts.map +1 -0
  8. package/dist/banner.d.ts +3 -0
  9. package/dist/banner.d.ts.map +1 -0
  10. package/dist/connectors-cli.d.ts +31 -0
  11. package/dist/connectors-cli.d.ts.map +1 -0
  12. package/dist/credentials.d.ts +46 -0
  13. package/dist/credentials.d.ts.map +1 -0
  14. package/dist/csv.d.ts +49 -0
  15. package/dist/csv.d.ts.map +1 -0
  16. package/dist/dataset-download.d.ts +6 -0
  17. package/dist/dataset-download.d.ts.map +1 -0
  18. package/dist/dataset-edit-rows.d.ts +10 -0
  19. package/dist/dataset-edit-rows.d.ts.map +1 -0
  20. package/dist/dataset-upload-snapshot.d.ts +13 -0
  21. package/dist/dataset-upload-snapshot.d.ts.map +1 -0
  22. package/dist/daytona-slice-rehearsal.d.ts +89 -0
  23. package/dist/daytona-slice-rehearsal.d.ts.map +1 -0
  24. package/dist/daytona-slice.d.ts +106 -0
  25. package/dist/daytona-slice.d.ts.map +1 -0
  26. package/dist/deploy-key-merge-core.d.ts +121 -0
  27. package/dist/deploy-key-merge-core.d.ts.map +1 -0
  28. package/dist/diff-comments-cli.d.ts +12 -0
  29. package/dist/diff-comments-cli.d.ts.map +1 -0
  30. package/dist/diff-comments-cli.js +21 -2
  31. package/dist/egress-allowlist-cli.d.ts +23 -0
  32. package/dist/egress-allowlist-cli.d.ts.map +1 -0
  33. package/dist/egress-policy.d.ts +108 -0
  34. package/dist/egress-policy.d.ts.map +1 -0
  35. package/dist/error-response.d.ts +9 -0
  36. package/dist/error-response.d.ts.map +1 -0
  37. package/dist/file-parser.d.ts +5 -0
  38. package/dist/file-parser.d.ts.map +1 -0
  39. package/dist/gepa-engine-dispatch.d.ts +9 -0
  40. package/dist/gepa-engine-dispatch.d.ts.map +1 -0
  41. package/dist/gepa-engine-dispatch.js +307 -0
  42. package/dist/gepa-python-command.d.ts +6 -0
  43. package/dist/gepa-python-command.d.ts.map +1 -0
  44. package/dist/gepa-python-command.js +26 -0
  45. package/dist/gepa-python-paths.d.ts +6 -0
  46. package/dist/gepa-python-paths.d.ts.map +1 -0
  47. package/dist/gepa-python-paths.js +42 -0
  48. package/dist/git-credential.d.ts +69 -0
  49. package/dist/git-credential.d.ts.map +1 -0
  50. package/dist/git-recovery-environment.d.ts +31 -0
  51. package/dist/git-recovery-environment.d.ts.map +1 -0
  52. package/dist/github-setup.d.ts +122 -0
  53. package/dist/github-setup.d.ts.map +1 -0
  54. package/dist/global-flags.d.ts +12 -0
  55. package/dist/global-flags.d.ts.map +1 -0
  56. package/dist/help.d.ts +46 -0
  57. package/dist/help.d.ts.map +1 -0
  58. package/dist/help.js +93 -25
  59. package/dist/hosted-boot.d.ts +273 -0
  60. package/dist/hosted-boot.d.ts.map +1 -0
  61. package/dist/hosted-bootstrap-rehearsal.d.ts +86 -0
  62. package/dist/hosted-bootstrap-rehearsal.d.ts.map +1 -0
  63. package/dist/hosted-bootstrap.d.ts +188 -0
  64. package/dist/hosted-bootstrap.d.ts.map +1 -0
  65. package/dist/hosted-broker-server.d.ts +50 -0
  66. package/dist/hosted-broker-server.d.ts.map +1 -0
  67. package/dist/hosted-git-http-server.d.ts +36 -0
  68. package/dist/hosted-git-http-server.d.ts.map +1 -0
  69. package/dist/hosted-harness-claude.d.ts +195 -0
  70. package/dist/hosted-harness-claude.d.ts.map +1 -0
  71. package/dist/hosted-harness-opencode.d.ts +227 -0
  72. package/dist/hosted-harness-opencode.d.ts.map +1 -0
  73. package/dist/hosted-harness.d.ts +118 -0
  74. package/dist/hosted-harness.d.ts.map +1 -0
  75. package/dist/hosted-harvest.d.ts +68 -0
  76. package/dist/hosted-harvest.d.ts.map +1 -0
  77. package/dist/hosted-headless.d.ts +72 -0
  78. package/dist/hosted-headless.d.ts.map +1 -0
  79. package/dist/hosted-loop-lifecycle.d.ts +206 -0
  80. package/dist/hosted-loop-lifecycle.d.ts.map +1 -0
  81. package/dist/hosted-loop.d.ts +170 -0
  82. package/dist/hosted-loop.d.ts.map +1 -0
  83. package/dist/hosted-run-event-sink.d.ts +222 -0
  84. package/dist/hosted-run-event-sink.d.ts.map +1 -0
  85. package/dist/hosted-runtime-assets.d.ts +186 -0
  86. package/dist/hosted-runtime-assets.d.ts.map +1 -0
  87. package/dist/hosted-session-cli.d.ts +258 -0
  88. package/dist/hosted-session-cli.d.ts.map +1 -0
  89. package/dist/hosted-skill-staging.d.ts +73 -0
  90. package/dist/hosted-skill-staging.d.ts.map +1 -0
  91. package/dist/http.d.ts +8 -0
  92. package/dist/http.d.ts.map +1 -0
  93. package/dist/index.d.ts +22 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +119 -129
  96. package/dist/instruction-set-gepa-launch.d.ts +3 -0
  97. package/dist/instruction-set-gepa-launch.d.ts.map +1 -0
  98. package/dist/instruction-set-gepa-launch.js +15 -0
  99. package/dist/instruction-set-loader.d.ts +6 -0
  100. package/dist/instruction-set-loader.d.ts.map +1 -0
  101. package/dist/instruction-set-loader.js +59 -0
  102. package/dist/instruction-set-manifest.d.ts +14 -0
  103. package/dist/instruction-set-manifest.d.ts.map +1 -0
  104. package/dist/instruction-set-manifest.js +162 -0
  105. package/dist/instruction-sets-cli.d.ts +40 -0
  106. package/dist/instruction-sets-cli.d.ts.map +1 -0
  107. package/dist/instruction-sets-cli.js +361 -0
  108. package/dist/json-response.d.ts +4 -0
  109. package/dist/json-response.d.ts.map +1 -0
  110. package/dist/jsonl-stream.d.ts +8 -0
  111. package/dist/jsonl-stream.d.ts.map +1 -0
  112. package/dist/kill-switch-cli.d.ts +30 -0
  113. package/dist/kill-switch-cli.d.ts.map +1 -0
  114. package/dist/loopback-serve.d.ts +25 -0
  115. package/dist/loopback-serve.d.ts.map +1 -0
  116. package/dist/manifests-cli.d.ts +22 -0
  117. package/dist/manifests-cli.d.ts.map +1 -0
  118. package/dist/markdown-report-input.d.ts +7 -0
  119. package/dist/markdown-report-input.d.ts.map +1 -0
  120. package/dist/markdown-report-input.js +15 -1
  121. package/dist/merge-job.d.ts +155 -0
  122. package/dist/merge-job.d.ts.map +1 -0
  123. package/dist/model-configs-cli.d.ts +19 -0
  124. package/dist/model-configs-cli.d.ts.map +1 -0
  125. package/dist/model-configs-cli.js +104 -0
  126. package/dist/optimization-export-cli.d.ts +19 -0
  127. package/dist/optimization-export-cli.d.ts.map +1 -0
  128. package/dist/optimizations-list-cli.d.ts +20 -0
  129. package/dist/optimizations-list-cli.d.ts.map +1 -0
  130. package/dist/optimizations-promote-cli.d.ts +8 -0
  131. package/dist/optimizations-promote-cli.d.ts.map +1 -0
  132. package/dist/optimizations-promote-cli.js +34 -0
  133. package/dist/option-validation.d.ts +15 -0
  134. package/dist/option-validation.d.ts.map +1 -0
  135. package/dist/preview-runtime.d.ts +63 -0
  136. package/dist/preview-runtime.d.ts.map +1 -0
  137. package/dist/prompt-draft-push.d.ts +60 -0
  138. package/dist/prompt-draft-push.d.ts.map +1 -0
  139. package/dist/prompt-label-cli.d.ts +11 -0
  140. package/dist/prompt-label-cli.d.ts.map +1 -0
  141. package/dist/prompt-label-cli.js +29 -0
  142. package/dist/prompt-length-wire.d.ts +28 -0
  143. package/dist/prompt-length-wire.d.ts.map +1 -0
  144. package/dist/prompt-length-wire.js +2 -2
  145. package/dist/prompt-report-cli.d.ts +10 -0
  146. package/dist/prompt-report-cli.d.ts.map +1 -0
  147. package/dist/prompt-report-cli.js +2 -2
  148. package/dist/prompt-summary-table.d.ts +15 -0
  149. package/dist/prompt-summary-table.d.ts.map +1 -0
  150. package/dist/prompt-summary-table.js +6 -0
  151. package/dist/registration-tag-warning.d.ts +32 -0
  152. package/dist/registration-tag-warning.d.ts.map +1 -0
  153. package/dist/report-comments-cli.d.ts +16 -0
  154. package/dist/report-comments-cli.d.ts.map +1 -0
  155. package/dist/report-markdown-blankness.d.ts +2 -0
  156. package/dist/report-markdown-blankness.d.ts.map +1 -0
  157. package/dist/report-markdown-blankness.js +6 -0
  158. package/dist/report-replacement-warning.d.ts +17 -0
  159. package/dist/report-replacement-warning.d.ts.map +1 -0
  160. package/dist/report-replacement-warning.js +31 -0
  161. package/dist/repository-backup-core.d.ts +225 -0
  162. package/dist/repository-backup-core.d.ts.map +1 -0
  163. package/dist/repository-recovery-manifest.d.ts +83 -0
  164. package/dist/repository-recovery-manifest.d.ts.map +1 -0
  165. package/dist/run-event-digest.d.ts +74 -0
  166. package/dist/run-event-digest.d.ts.map +1 -0
  167. package/dist/runner-dir-verify.d.ts +66 -0
  168. package/dist/runner-dir-verify.d.ts.map +1 -0
  169. package/dist/runner-instruction-set-contract.d.ts +24 -0
  170. package/dist/runner-instruction-set-contract.d.ts.map +1 -0
  171. package/dist/runner-instruction-set-contract.js +50 -0
  172. package/dist/sandbox-hygiene.d.ts +45 -0
  173. package/dist/sandbox-hygiene.d.ts.map +1 -0
  174. package/dist/sandbox-provider.d.ts +193 -0
  175. package/dist/sandbox-provider.d.ts.map +1 -0
  176. package/dist/scorer-draft-push.d.ts +50 -0
  177. package/dist/scorer-draft-push.d.ts.map +1 -0
  178. package/dist/scorers-cli.d.ts +20 -0
  179. package/dist/scorers-cli.d.ts.map +1 -0
  180. package/dist/scorers-cli.js +22 -0
  181. package/dist/scorers-verify-parity-bridge.d.ts +16 -0
  182. package/dist/scorers-verify-parity-bridge.d.ts.map +1 -0
  183. package/dist/scorers-verify-parity-bridge.js +90 -0
  184. package/dist/scorers-verify-parity.d.ts +81 -0
  185. package/dist/scorers-verify-parity.d.ts.map +1 -0
  186. package/dist/scorers-verify-parity.js +502 -0
  187. package/dist/scores-accept-cli.d.ts +21 -0
  188. package/dist/scores-accept-cli.d.ts.map +1 -0
  189. package/dist/secret-redaction.d.ts +47 -0
  190. package/dist/secret-redaction.d.ts.map +1 -0
  191. package/dist/session-timeline.d.ts +54 -0
  192. package/dist/session-timeline.d.ts.map +1 -0
  193. package/dist/setup-prompt.d.ts +5 -0
  194. package/dist/setup-prompt.d.ts.map +1 -0
  195. package/dist/skill-installer.d.ts +68 -0
  196. package/dist/skill-installer.d.ts.map +1 -0
  197. package/dist/skilled-proposer-launch.d.ts +7 -0
  198. package/dist/skilled-proposer-launch.d.ts.map +1 -0
  199. package/dist/skilled-proposer-launch.js +60 -0
  200. package/dist/smoke.d.ts +102 -0
  201. package/dist/smoke.d.ts.map +1 -0
  202. package/dist/start-intent.d.ts +12 -0
  203. package/dist/start-intent.d.ts.map +1 -0
  204. package/dist/task-assignment-manifest.d.ts +15 -0
  205. package/dist/task-assignment-manifest.d.ts.map +1 -0
  206. package/dist/task-create-error.d.ts +18 -0
  207. package/dist/task-create-error.d.ts.map +1 -0
  208. package/dist/team-connectors-cli.d.ts +29 -0
  209. package/dist/team-connectors-cli.d.ts.map +1 -0
  210. package/dist/types.d.ts +39 -0
  211. package/dist/types.d.ts.map +1 -0
  212. package/dist/vercel-sandbox-provider.d.ts +156 -0
  213. package/dist/vercel-sandbox-provider.d.ts.map +1 -0
  214. package/dist/workbench-cli.d.ts +233 -0
  215. package/dist/workbench-cli.d.ts.map +1 -0
  216. package/dist/workspace-sync.d.ts +207 -0
  217. package/dist/workspace-sync.d.ts.map +1 -0
  218. package/dist/workspace.d.ts +92 -0
  219. package/dist/workspace.d.ts.map +1 -0
  220. package/dist/zip-draft-push.d.ts +55 -0
  221. package/dist/zip-draft-push.d.ts.map +1 -0
  222. package/package.json +15 -2
  223. package/requirements/README.md +138 -0
  224. package/requirements/skilled-proposer.in +66 -0
  225. package/requirements/skilled-proposer.lock +265 -0
  226. package/scripts/build-cli-dist.mjs +30 -0
  227. package/scripts/ensure-skilled-proposer-venv.mjs +5 -0
  228. package/scripts/orizu-source-checkout.d.mts +1 -0
  229. package/scripts/orizu-source-checkout.mjs +10 -0
  230. package/scripts/refresh-skilled-proposer-lock.mjs +256 -0
  231. package/scripts/vendor-gepa-python.mjs +187 -4
  232. package/src/diff-comments-cli.ts +41 -3
  233. package/src/gepa-engine-dispatch.ts +340 -0
  234. package/src/gepa-python-command.ts +31 -0
  235. package/src/gepa-python-paths.ts +56 -0
  236. package/src/help.ts +95 -25
  237. package/src/index.ts +131 -166
  238. package/src/instruction-set-gepa-launch.ts +28 -0
  239. package/src/instruction-set-loader.ts +37 -0
  240. package/src/instruction-set-manifest.ts +120 -0
  241. package/src/instruction-sets-cli.ts +306 -0
  242. package/src/markdown-report-input.ts +19 -1
  243. package/src/model-configs-cli.ts +119 -0
  244. package/src/optimizations-promote-cli.ts +41 -0
  245. package/src/prompt-label-cli.ts +55 -0
  246. package/src/prompt-length-wire.ts +1 -1
  247. package/src/prompt-report-cli.ts +2 -2
  248. package/src/prompt-summary-table.ts +12 -0
  249. package/src/report-markdown-blankness.ts +6 -0
  250. package/src/report-replacement-warning.ts +35 -0
  251. package/src/runner-instruction-set-contract.ts +64 -0
  252. package/src/scorers-cli.ts +40 -0
  253. package/src/scorers-verify-parity-bridge.ts +90 -0
  254. package/src/scorers-verify-parity.ts +564 -0
  255. package/src/skilled-proposer-launch.ts +89 -0
  256. package/src/skilled-proposer-venv-manager.mjs +757 -0
  257. package/tsconfig.json +2 -0
  258. package/vendor/gepa-python/LICENSE +7 -0
  259. package/vendor/gepa-python/manifest.json +107 -0
  260. package/vendor/gepa-python/src/gepa/__init__.py +22 -0
  261. package/vendor/gepa-python/src/gepa/adapters/__init__.py +0 -0
  262. package/vendor/gepa-python/src/gepa/adapters/anymaths_adapter/__init__.py +1 -0
  263. package/vendor/gepa-python/src/gepa/adapters/anymaths_adapter/anymaths_adapter.py +174 -0
  264. package/vendor/gepa-python/src/gepa/adapters/confidence_adapter/__init__.py +26 -0
  265. package/vendor/gepa-python/src/gepa/adapters/confidence_adapter/confidence_adapter.py +618 -0
  266. package/vendor/gepa-python/src/gepa/adapters/confidence_adapter/scoring.py +206 -0
  267. package/vendor/gepa-python/src/gepa/adapters/default_adapter/__init__.py +0 -0
  268. package/vendor/gepa-python/src/gepa/adapters/default_adapter/default_adapter.py +206 -0
  269. package/vendor/gepa-python/src/gepa/adapters/dspy_adapter/__init__.py +0 -0
  270. package/vendor/gepa-python/src/gepa/adapters/dspy_adapter/dspy_adapter.py +525 -0
  271. package/vendor/gepa-python/src/gepa/adapters/dspy_adapter/instruction_proposal.py +500 -0
  272. package/vendor/gepa-python/src/gepa/adapters/dspy_full_program_adapter/__init__.py +6 -0
  273. package/vendor/gepa-python/src/gepa/adapters/dspy_full_program_adapter/dspy_program_proposal_signature.py +137 -0
  274. package/vendor/gepa-python/src/gepa/adapters/dspy_full_program_adapter/full_program_adapter.py +269 -0
  275. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/__init__.py +56 -0
  276. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/evaluation_metrics.py +226 -0
  277. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/generic_rag_adapter.py +496 -0
  278. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/rag_pipeline.py +238 -0
  279. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_store_interface.py +212 -0
  280. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/__init__.py +2 -0
  281. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/chroma_store.py +196 -0
  282. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/lancedb_store.py +422 -0
  283. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/milvus_store.py +409 -0
  284. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/qdrant_store.py +368 -0
  285. package/vendor/gepa-python/src/gepa/adapters/generic_rag_adapter/vector_stores/weaviate_store.py +418 -0
  286. package/vendor/gepa-python/src/gepa/adapters/langchain_adapter/__init__.py +11 -0
  287. package/vendor/gepa-python/src/gepa/adapters/langchain_adapter/langchain_adapter.py +261 -0
  288. package/vendor/gepa-python/src/gepa/adapters/mcp_adapter/__init__.py +37 -0
  289. package/vendor/gepa-python/src/gepa/adapters/mcp_adapter/mcp_adapter.py +693 -0
  290. package/vendor/gepa-python/src/gepa/adapters/mcp_adapter/mcp_client.py +364 -0
  291. package/vendor/gepa-python/src/gepa/adapters/optimize_anything_adapter/optimize_anything_adapter.py +879 -0
  292. package/vendor/gepa-python/src/gepa/adapters/terminal_bench_adapter/__init__.py +0 -0
  293. package/vendor/gepa-python/src/gepa/adapters/terminal_bench_adapter/terminal_bench_adapter.py +217 -0
  294. package/vendor/gepa-python/src/gepa/api.py +468 -0
  295. package/vendor/gepa-python/src/gepa/core/__init__.py +0 -0
  296. package/vendor/gepa-python/src/gepa/core/adapter.py +227 -0
  297. package/vendor/gepa-python/src/gepa/core/callbacks.py +551 -0
  298. package/vendor/gepa-python/src/gepa/core/data_loader.py +74 -0
  299. package/vendor/gepa-python/src/gepa/core/engine.py +1025 -0
  300. package/vendor/gepa-python/src/gepa/core/result.py +271 -0
  301. package/vendor/gepa-python/src/gepa/core/state.py +706 -0
  302. package/vendor/gepa-python/src/gepa/examples/__init__.py +0 -0
  303. package/vendor/gepa-python/src/gepa/examples/aime.py +24 -0
  304. package/vendor/gepa-python/src/gepa/examples/anymaths-bench/eval_default.py +111 -0
  305. package/vendor/gepa-python/src/gepa/examples/anymaths-bench/train_anymaths.py +177 -0
  306. package/vendor/gepa-python/src/gepa/examples/mcp_adapter/__init__.py +4 -0
  307. package/vendor/gepa-python/src/gepa/examples/mcp_adapter/mcp_optimization_example.py +456 -0
  308. package/vendor/gepa-python/src/gepa/examples/rag_adapter/__init__.py +9 -0
  309. package/vendor/gepa-python/src/gepa/examples/rag_adapter/rag_optimization.py +824 -0
  310. package/vendor/gepa-python/src/gepa/examples/terminal-bench/train_terminus.py +161 -0
  311. package/vendor/gepa-python/src/gepa/gepa_utils.py +117 -0
  312. package/vendor/gepa-python/src/gepa/gskill/__init__.py +1 -0
  313. package/vendor/gepa-python/src/gepa/gskill/gskill/__init__.py +0 -0
  314. package/vendor/gepa-python/src/gepa/gskill/gskill/cost_tracker.py +194 -0
  315. package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/__init__.py +0 -0
  316. package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/claude_code.py +1117 -0
  317. package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/claude_code_skills.py +613 -0
  318. package/vendor/gepa-python/src/gepa/gskill/gskill/evaluate/mini_swe_agent.py +440 -0
  319. package/vendor/gepa-python/src/gepa/gskill/gskill/experiment_logger.py +367 -0
  320. package/vendor/gepa-python/src/gepa/gskill/gskill/swe_fitness_fn.py +209 -0
  321. package/vendor/gepa-python/src/gepa/gskill/gskill/swe_harness.py +352 -0
  322. package/vendor/gepa-python/src/gepa/gskill/gskill/train_optimize_anything.py +830 -0
  323. package/vendor/gepa-python/src/gepa/image.py +104 -0
  324. package/vendor/gepa-python/src/gepa/lm.py +261 -0
  325. package/vendor/gepa-python/src/gepa/logging/__init__.py +0 -0
  326. package/vendor/gepa-python/src/gepa/logging/experiment_tracker.py +457 -0
  327. package/vendor/gepa-python/src/gepa/logging/logger.py +75 -0
  328. package/vendor/gepa-python/src/gepa/logging/utils.py +130 -0
  329. package/vendor/gepa-python/src/gepa/optimize_anything.py +1701 -0
  330. package/vendor/gepa-python/src/gepa/proposer/__init__.py +0 -0
  331. package/vendor/gepa-python/src/gepa/proposer/base.py +53 -0
  332. package/vendor/gepa-python/src/gepa/proposer/merge.py +403 -0
  333. package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/__init__.py +0 -0
  334. package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/base.py +64 -0
  335. package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/reflection_lm.py +178 -0
  336. package/vendor/gepa-python/src/gepa/proposer/reflective_mutation/reflective_mutation.py +641 -0
  337. package/vendor/gepa-python/src/gepa/py.typed +0 -0
  338. package/vendor/gepa-python/src/gepa/strategies/__init__.py +0 -0
  339. package/vendor/gepa-python/src/gepa/strategies/acceptance.py +66 -0
  340. package/vendor/gepa-python/src/gepa/strategies/batch_sampler.py +103 -0
  341. package/vendor/gepa-python/src/gepa/strategies/candidate_selector.py +82 -0
  342. package/vendor/gepa-python/src/gepa/strategies/component_selector.py +36 -0
  343. package/vendor/gepa-python/src/gepa/strategies/eval_policy.py +64 -0
  344. package/vendor/gepa-python/src/gepa/strategies/instruction_proposal.py +153 -0
  345. package/vendor/gepa-python/src/gepa/strategies/proposal_sampling.py +128 -0
  346. package/vendor/gepa-python/src/gepa/strategies/proposal_selection.py +84 -0
  347. package/vendor/gepa-python/src/gepa/utils/__init__.py +63 -0
  348. package/vendor/gepa-python/src/gepa/utils/code_execution.py +626 -0
  349. package/vendor/gepa-python/src/gepa/utils/stdio_capture.py +145 -0
  350. package/vendor/gepa-python/src/gepa/utils/stop_condition.py +230 -0
  351. package/vendor/gepa-python/src/gepa/visualization.py +359 -0
  352. package/vendor/orizu-gepa/pyproject.toml +18 -0
  353. package/vendor/orizu-gepa/src/orizu_gepa_connector/__init__.py +9 -0
  354. package/vendor/orizu-gepa/src/orizu_gepa_connector/__main__.py +5 -0
  355. package/vendor/orizu-gepa/src/orizu_gepa_connector/adapter.py +138 -0
  356. package/vendor/orizu-gepa/src/orizu_gepa_connector/callbacks.py +666 -0
  357. package/vendor/orizu-gepa/src/orizu_gepa_connector/cli.py +7 -0
  358. package/vendor/orizu-gepa/src/orizu_gepa_connector/engine.py +269 -0
  359. package/vendor/orizu-gepa/src/orizu_gepa_connector/instruction_set_loader.py +52 -0
  360. package/vendor/orizu-gepa/src/orizu_gepa_connector/preflight.py +64 -0
  361. package/vendor/orizu-gepa/src/orizu_gepa_connector/reflection.py +186 -0
  362. package/vendor/orizu-gepa/src/orizu_gepa_connector/runtime.py +721 -0
  363. package/vendor/orizu-gepa/src/orizu_gepa_connector/skilled_proposer_bridge.py +381 -0
  364. package/vendor/orizu-gepa/src/orizu_gepa_connector/stop_conditions.py +55 -0
  365. package/vendor/orizu-gepa/src/orizu_gepa_connector/translator.py +203 -0
  366. package/vendor/orizu-gepa-python/pyproject.toml +1 -1
  367. package/vendor/orizu-gepa-python/src/orizu_gepa/cli.py +1 -0
  368. package/vendor/orizu-gepa-python/src/orizu_gepa/client.py +52 -7
  369. package/vendor/orizu-gepa-python/src/orizu_gepa/local_log.py +52 -0
  370. package/vendor/orizu-gepa-python/src/orizu_gepa/optimizer.py +10 -5
  371. package/vendor/orizu-gepa-python/src/orizu_gepa/reflection.py +323 -68
  372. package/vendor/orizu-gepa-python/src/orizu_gepa/runner.py +207 -13
  373. package/vendor/skills/orizu-cli/SKILL.md +3 -1
  374. package/vendor/skills/orizu-cli/references/cli-reference.md +85 -1
  375. package/vendor/skills/orizu-cli/references/migrate-existing-gepa-setup.md +303 -0
  376. package/vendor/skills/orizu-cli/references/optimization-reports.md +1 -1
  377. package/vendor/skills/orizu-cli/references/optimization-with-gepa.md +26 -1
  378. 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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"}