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,307 @@
1
+ import { existsSync, readFileSync } from 'fs';
2
+ const VALUE_OPTIONS = [
3
+ { flag: '--optimizer-version-id', environment: 'ORIZU_OPTIMIZER_VERSION_ID' },
4
+ { flag: '--candidate-version-id', environment: 'ORIZU_PROMPT_VERSION_ID' },
5
+ { flag: '--runner-version-id', environment: 'ORIZU_RUNNER_VERSION_ID' },
6
+ { flag: '--candidate-runner-dir', environment: 'ORIZU_CANDIDATE_RUNNER_DIR' },
7
+ { flag: '--scorer-version-id', environment: 'ORIZU_SCORER_VERSION_ID' },
8
+ { flag: '--scorer-runner-version-id', environment: 'ORIZU_SCORER_RUNNER_VERSION_ID' },
9
+ { flag: '--scorer-runner-dir', environment: 'ORIZU_SCORER_RUNNER_DIR' },
10
+ { flag: '--scorer-input-contract', environment: 'ORIZU_SCORER_INPUT_CONTRACT' },
11
+ { flag: '--scorer-candidate-field', environment: 'ORIZU_SCORER_CANDIDATE_FIELD' },
12
+ { flag: '--dataset-version-id', environment: 'ORIZU_DATASET_VERSION_ID' },
13
+ { flag: '--split-set-id', environment: 'ORIZU_SPLIT_SET_ID' },
14
+ { flag: '--train-split', environment: 'ORIZU_TRAIN_SPLIT', allowEmpty: true },
15
+ { flag: '--val-split', environment: 'ORIZU_VALIDATION_SPLIT', allowEmpty: true },
16
+ { flag: '--budget', environment: 'ORIZU_BUDGET' },
17
+ { flag: '--max-iterations', environment: 'ORIZU_MAX_ITERATIONS' },
18
+ { flag: '--max-candidate-proposals', environment: 'ORIZU_MAX_CANDIDATE_PROPOSALS' },
19
+ { flag: '--proposal-max-calls', environment: 'ORIZU_PROPOSAL_MAX_CALLS' },
20
+ { flag: '--proposal-max-tokens', environment: 'ORIZU_PROPOSAL_MAX_TOKENS' },
21
+ { flag: '--max-full-evals', environment: 'ORIZU_MAX_FULL_EVALS' },
22
+ { flag: '--max-metric-calls', environment: 'ORIZU_MAX_METRIC_CALLS' },
23
+ { flag: '--minibatch-size', environment: 'ORIZU_MINIBATCH_SIZE' },
24
+ { flag: '--num-threads', environment: 'ORIZU_NUM_THREADS' },
25
+ { flag: '--candidate-selection-strategy', environment: 'ORIZU_CANDIDATE_SELECTION_STRATEGY' },
26
+ { flag: '--epsilon', environment: 'ORIZU_EPSILON' },
27
+ { flag: '--reflection-model', environment: 'ORIZU_REFLECTION_MODEL' },
28
+ { flag: '--reflection-temperature', environment: 'ORIZU_REFLECTION_TEMPERATURE' },
29
+ { flag: '--reflection-max-tokens', environment: 'ORIZU_REFLECTION_MAX_TOKENS' },
30
+ { flag: '--reflection-retry-attempts', environment: 'ORIZU_REFLECTION_RETRY_ATTEMPTS' },
31
+ { flag: '--reflection-http-timeout-seconds', environment: 'ORIZU_REFLECTION_HTTP_TIMEOUT_SECONDS' },
32
+ { flag: '--reflection-prompt-template', environment: 'ORIZU_REFLECTION_PROMPT_TEMPLATE', readFile: true },
33
+ { flag: '--reflection-provider-settings', environment: 'ORIZU_REFLECTION_PROVIDER_SETTINGS', readFile: true, json: true },
34
+ { flag: '--objective', environment: 'ORIZU_OBJECTIVE', allowEmpty: true },
35
+ { flag: '--seed', environment: 'ORIZU_SEED' },
36
+ { flag: '--promotion-label', environment: 'ORIZU_PROMOTION_LABEL', allowEmpty: true },
37
+ { flag: '--log-dir', environment: 'ORIZU_LOCAL_LOG_DIR' },
38
+ { flag: '--instruction-set', environment: 'ORIZU_INSTRUCTION_SET_NAME' },
39
+ { flag: '--model-config', environment: 'ORIZU_MODEL_CONFIG_IDENTITY' },
40
+ ];
41
+ const BOOLEAN_OPTIONS = [
42
+ ['--allow-degenerate-seed', 'ORIZU_ALLOW_DEGENERATE_SEED', '1'],
43
+ ['--disable-evaluation-cache', 'ORIZU_DISABLE_EVALUATION_CACHE', '1'],
44
+ ['--auto-promote', 'ORIZU_AUTO_PROMOTE', '1'],
45
+ ['--log-row-snapshots', 'ORIZU_LOG_ROW_SNAPSHOTS', '1'],
46
+ ['--no-local-log', 'ORIZU_NO_LOCAL_LOG', '1'],
47
+ ['--skip-perfect-parent-reflection', 'ORIZU_SKIP_PERFECT_PARENT_REFLECTION', '1'],
48
+ ['--no-skip-perfect-parent-reflection', 'ORIZU_SKIP_PERFECT_PARENT_REFLECTION', '0'],
49
+ ];
50
+ function textValue(value) {
51
+ if (value.startsWith('@'))
52
+ return readFileSync(value.slice(1), 'utf8');
53
+ const path = value;
54
+ return existsSync(path) ? readFileSync(path, 'utf8') : value;
55
+ }
56
+ function jsonObjectValue(value, flag) {
57
+ const raw = textValue(value);
58
+ const parsed = JSON.parse(raw);
59
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
60
+ throw new Error(`${flag} must be a JSON object`);
61
+ }
62
+ // Validate in JavaScript, but preserve the raw spelling for Python's JSON
63
+ // parser so large numbers and exponent forms do not lose precision here.
64
+ return raw;
65
+ }
66
+ function removeEngine(args) {
67
+ let engine;
68
+ const forwarded = [];
69
+ for (let index = 0; index < args.length; index += 1) {
70
+ const argument = args[index];
71
+ if (argument === '--engine') {
72
+ const value = args[index + 1];
73
+ if (!value || value.startsWith('--')) {
74
+ throw new Error('--engine must be one of official, legacy');
75
+ }
76
+ if (engine !== undefined && engine !== value) {
77
+ throw new Error('--engine must select exactly one of official, legacy');
78
+ }
79
+ engine = value;
80
+ index += 1;
81
+ continue;
82
+ }
83
+ if (argument.startsWith('--engine=')) {
84
+ const value = argument.slice('--engine='.length);
85
+ if (engine !== undefined && engine !== value) {
86
+ throw new Error('--engine must select exactly one of official, legacy');
87
+ }
88
+ engine = value;
89
+ continue;
90
+ }
91
+ forwarded.push(argument);
92
+ }
93
+ if (engine !== undefined && engine !== 'official' && engine !== 'legacy') {
94
+ throw new Error(`--engine must be one of official, legacy; received ${engine}`);
95
+ }
96
+ return { engine: engine ?? 'official', args: forwarded };
97
+ }
98
+ function validateLegacyMetadata(args) {
99
+ let raw;
100
+ for (let index = 0; index < args.length; index += 1) {
101
+ if (args[index] === '--metadata') {
102
+ const value = args[index + 1];
103
+ if (!value || value.startsWith('--')) {
104
+ throw new Error('--metadata must be a JSON object');
105
+ }
106
+ raw = value;
107
+ index += 1;
108
+ continue;
109
+ }
110
+ if (args[index].startsWith('--metadata=')) {
111
+ raw = args[index].slice('--metadata='.length);
112
+ }
113
+ }
114
+ let metadata = {};
115
+ if (raw !== undefined) {
116
+ try {
117
+ // The frozen legacy CLI hands this value directly to json.loads. Do not
118
+ // add @file/path expansion here: only reflection inputs support it.
119
+ metadata = JSON.parse(raw);
120
+ }
121
+ catch {
122
+ throw new Error('--metadata must be a JSON object containing valid JSON');
123
+ }
124
+ }
125
+ if (typeof metadata !== 'object' || metadata === null || Array.isArray(metadata)) {
126
+ throw new Error('--metadata must be a JSON object');
127
+ }
128
+ // The frozen CLI consumes the original argv with json.loads. Keep the raw
129
+ // spelling so Python, not JavaScript, owns JSON number precision and adds
130
+ // the selected legacy-engine tag to the run metadata.
131
+ }
132
+ // Parsing starts from an arbitrary command-line string. Keep the literal
133
+ // tuples above checked, then widen only the map boundary used for lookup.
134
+ const VALUE_OPTIONS_BY_FLAG = new Map(VALUE_OPTIONS.map(option => [option.flag, option]));
135
+ const BOOLEAN_OPTIONS_BY_FLAG = new Map(BOOLEAN_OPTIONS.map(([flag, environment, value]) => [flag, { environment, value }]));
136
+ const CONTROLLED_ENVIRONMENT_NAMES = new Set([
137
+ 'ORIZU_PROJECT',
138
+ 'ORIZU_METADATA',
139
+ ...VALUE_OPTIONS.map(option => option.environment),
140
+ ...BOOLEAN_OPTIONS.map(([, environment]) => environment),
141
+ 'ORIZU_USE_MERGE',
142
+ 'ORIZU_MAX_MERGE_INVOCATIONS',
143
+ 'ORIZU_SAMPLING_STRATEGY',
144
+ 'ORIZU_SELECTION_STRATEGY',
145
+ 'ORIZU_MAX_PAYLOAD_CHARS',
146
+ 'ORIZU_INSTRUCTION_SET_PROFILE_VERSION_ID',
147
+ // Candidate selection is an explicit opt-in. Clearing it before option
148
+ // translation prevents an inherited environment from selecting a proposer
149
+ // on an otherwise byte-for-byte normal official-GEPA launch.
150
+ 'ORIZU_CANDIDATE_PROPOSER',
151
+ 'ORIZU_COMPONENT_SELECTOR',
152
+ ]);
153
+ function optionValueOrThrow(args, index, flag, allowEmpty = false) {
154
+ const argument = args[index];
155
+ const equalsPrefix = `${flag}=`;
156
+ if (argument.startsWith(equalsPrefix)) {
157
+ const value = argument.slice(equalsPrefix.length);
158
+ if ((!allowEmpty && value === '') || value.startsWith('--')) {
159
+ throw new Error(`${flag} requires a value that does not start with --`);
160
+ }
161
+ return { value, nextIndex: index };
162
+ }
163
+ const value = args[index + 1];
164
+ if (value === undefined || value.startsWith('--')) {
165
+ throw new Error(`${flag} requires a value that does not start with --`);
166
+ }
167
+ return { value, nextIndex: index + 1 };
168
+ }
169
+ function translateOfficialOptions(args, project, environment) {
170
+ const connectorEnvironment = { ...environment };
171
+ for (const name of CONTROLLED_ENVIRONMENT_NAMES) {
172
+ delete connectorEnvironment[name];
173
+ }
174
+ connectorEnvironment.ORIZU_PROJECT = project;
175
+ let metadata;
176
+ let hasInstructionSet = false;
177
+ let hasCandidateVersion = false;
178
+ const budgetFlags = [];
179
+ for (let index = 0; index < args.length; index += 1) {
180
+ const argument = args[index];
181
+ if (!argument.startsWith('--')) {
182
+ throw new Error(`Unexpected run-gepa argument ${argument}`);
183
+ }
184
+ const flag = argument.includes('=') ? argument.slice(0, argument.indexOf('=')) : argument;
185
+ if (flag === '--candidate-version-id')
186
+ hasCandidateVersion = true;
187
+ if (flag === '--project') {
188
+ const parsed = optionValueOrThrow(args, index, flag);
189
+ connectorEnvironment.ORIZU_PROJECT = parsed.value;
190
+ index = parsed.nextIndex;
191
+ continue;
192
+ }
193
+ if (flag === '--metadata') {
194
+ const parsed = optionValueOrThrow(args, index, flag);
195
+ metadata = parsed.value;
196
+ index = parsed.nextIndex;
197
+ continue;
198
+ }
199
+ if (flag === '--candidate-proposer') {
200
+ const parsed = optionValueOrThrow(args, index, flag);
201
+ if (parsed.value !== 'skilled-proposer') {
202
+ throw new Error('--candidate-proposer must be skilled-proposer');
203
+ }
204
+ connectorEnvironment.ORIZU_CANDIDATE_PROPOSER = parsed.value;
205
+ index = parsed.nextIndex;
206
+ continue;
207
+ }
208
+ const option = VALUE_OPTIONS_BY_FLAG.get(flag);
209
+ if (option) {
210
+ const parsed = optionValueOrThrow(args, index, flag, option.allowEmpty);
211
+ if (flag === '--budget') {
212
+ if (!['auto', 'light', 'medium', 'heavy'].includes(parsed.value)) {
213
+ throw new Error('--budget must be one of auto, light, medium, heavy');
214
+ }
215
+ budgetFlags.push(flag);
216
+ }
217
+ if (['--max-metric-calls', '--max-full-evals', '--max-iterations', '--max-candidate-proposals'].includes(flag)) {
218
+ budgetFlags.push(flag);
219
+ }
220
+ if (flag === '--candidate-selection-strategy' && !['pareto', 'current_best', 'epsilon_greedy'].includes(parsed.value)) {
221
+ throw new Error('--candidate-selection-strategy must be one of pareto, current_best, epsilon_greedy');
222
+ }
223
+ if (flag === '--scorer-input-contract' && !['gepa', 'flat_row'].includes(parsed.value)) {
224
+ throw new Error('--scorer-input-contract must be one of gepa, flat_row');
225
+ }
226
+ connectorEnvironment[option.environment] = option.json
227
+ ? jsonObjectValue(parsed.value, option.flag)
228
+ : option.readFile ? textValue(parsed.value) : parsed.value;
229
+ if (flag === '--instruction-set')
230
+ hasInstructionSet = true;
231
+ index = parsed.nextIndex;
232
+ continue;
233
+ }
234
+ if (flag === '--component-selector') {
235
+ const parsed = optionValueOrThrow(args, index, flag);
236
+ if (!['round-robin', 'all'].includes(parsed.value))
237
+ throw new Error('--component-selector must be one of round-robin, all');
238
+ connectorEnvironment.ORIZU_COMPONENT_SELECTOR = parsed.value.replace('-', '_');
239
+ index = parsed.nextIndex;
240
+ continue;
241
+ }
242
+ const boolean = BOOLEAN_OPTIONS_BY_FLAG.get(flag);
243
+ if (boolean) {
244
+ if (argument.includes('=')) {
245
+ throw new Error(`${flag} does not accept a value`);
246
+ }
247
+ if (args[index + 1] !== undefined && !args[index + 1].startsWith('--')) {
248
+ throw new Error(`${flag} does not accept a value`);
249
+ }
250
+ connectorEnvironment[boolean.environment] = boolean.value;
251
+ continue;
252
+ }
253
+ throw new Error(`Unknown run-gepa option ${flag}`);
254
+ }
255
+ if (budgetFlags.length > 1) {
256
+ throw new Error('Budget options are mutually exclusive; choose at most one of --budget, --max-metric-calls, --max-full-evals, --max-iterations, --max-candidate-proposals');
257
+ }
258
+ if (hasInstructionSet && hasCandidateVersion)
259
+ throw new Error('--instruction-set and --candidate-version-id are mutually exclusive');
260
+ if (hasInstructionSet && connectorEnvironment.ORIZU_MODEL_CONFIG_IDENTITY === undefined)
261
+ throw new Error('--instruction-set requires --model-config');
262
+ if (hasInstructionSet && connectorEnvironment.ORIZU_COMPONENT_SELECTOR === undefined)
263
+ connectorEnvironment.ORIZU_COMPONENT_SELECTOR = 'round_robin';
264
+ if ((connectorEnvironment.ORIZU_PROPOSAL_MAX_CALLS !== undefined
265
+ || connectorEnvironment.ORIZU_PROPOSAL_MAX_TOKENS !== undefined)
266
+ && connectorEnvironment.ORIZU_CANDIDATE_PROPOSER !== 'skilled-proposer') {
267
+ throw new Error('--proposal-max-calls and --proposal-max-tokens require --candidate-proposer skilled-proposer');
268
+ }
269
+ const reflectionModel = connectorEnvironment.ORIZU_REFLECTION_MODEL ?? 'anthropic/claude-opus-4-7';
270
+ if (!reflectionModel.startsWith('openai/') && connectorEnvironment.ORIZU_REFLECTION_MAX_TOKENS === undefined) {
271
+ throw new Error('--reflection-max-tokens is required for Anthropic reflection models');
272
+ }
273
+ connectorEnvironment.ORIZU_METADATA = validatedMetadata(metadata);
274
+ return connectorEnvironment;
275
+ }
276
+ function validatedMetadata(raw) {
277
+ if (raw === undefined)
278
+ return '{}';
279
+ try {
280
+ const value = JSON.parse(raw);
281
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
282
+ throw new Error();
283
+ }
284
+ catch {
285
+ throw new Error('--metadata must be a JSON object containing valid JSON');
286
+ }
287
+ return raw;
288
+ }
289
+ export function dispatchGepaEngine(args, project, environment) {
290
+ const selected = removeEngine(args);
291
+ if (selected.engine === 'legacy') {
292
+ for (const flag of ['--instruction-set', '--model-config', '--component-selector', '--max-candidate-proposals', '--candidate-proposer', '--proposal-max-calls', '--proposal-max-tokens']) {
293
+ if (selected.args.some(argument => argument === flag || argument.startsWith(`${flag}=`))) {
294
+ throw new Error(`${flag} is supported by the official GEPA engine only`);
295
+ }
296
+ }
297
+ validateLegacyMetadata(selected.args);
298
+ return {
299
+ engine: 'legacy',
300
+ args: selected.args,
301
+ environment,
302
+ module: 'orizu_gepa.cli',
303
+ };
304
+ }
305
+ const connectorEnvironment = translateOfficialOptions(selected.args, project, environment);
306
+ return { engine: 'official', args: [], environment: connectorEnvironment, module: 'orizu_gepa_connector' };
307
+ }
@@ -0,0 +1,6 @@
1
+ export interface GepaPythonCommand {
2
+ python: string;
3
+ args: string[];
4
+ }
5
+ export declare function getGepaPythonCommand(args: string[], environment: NodeJS.ProcessEnv): GepaPythonCommand;
6
+ //# sourceMappingURL=gepa-python-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gepa-python-command.d.ts","sourceRoot":"","sources":["../src/gepa-python-command.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,GAAG,iBAAiB,CAyBtG"}
@@ -0,0 +1,26 @@
1
+ export function getGepaPythonCommand(args, environment) {
2
+ let python = environment.PYTHON || 'python3';
3
+ const forwarded = [];
4
+ for (let index = 0; index < args.length; index += 1) {
5
+ const argument = args[index];
6
+ if (argument === '--python') {
7
+ const value = args[index + 1];
8
+ if (!value || value.startsWith('--')) {
9
+ throw new Error('--python requires a value that does not start with --');
10
+ }
11
+ python = value;
12
+ index += 1;
13
+ continue;
14
+ }
15
+ if (argument.startsWith('--python=')) {
16
+ const value = argument.slice('--python='.length);
17
+ if (!value || value.startsWith('--')) {
18
+ throw new Error('--python requires a value that does not start with --');
19
+ }
20
+ python = value;
21
+ continue;
22
+ }
23
+ forwarded.push(argument);
24
+ }
25
+ return { python, args: forwarded };
26
+ }
@@ -0,0 +1,6 @@
1
+ export declare function resolveGepaPythonPath(candidates: string[], pathExists?: (candidate: string) => boolean): string | null;
2
+ export declare function bundledOrizuGepaPythonPath(): string | null;
3
+ export declare function bundledOrizuGepaConnectorPythonPath(): string | null;
4
+ export declare function bundledOfficialGepaPythonPath(): string | null;
5
+ export declare function getGepaPythonPathEntries(existingPythonPath: string | undefined): string[];
6
+ //# sourceMappingURL=gepa-python-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gepa-python-paths.d.ts","sourceRoot":"","sources":["../src/gepa-python-paths.ts"],"names":[],"mappings":"AAYA,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAoB,GACtD,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAM1D;AAED,wBAAgB,mCAAmC,IAAI,MAAM,GAAG,IAAI,CAMnE;AAED,wBAAgB,6BAA6B,IAAI,MAAM,GAAG,IAAI,CAS7D;AAED,wBAAgB,wBAAwB,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CASzF"}
@@ -0,0 +1,42 @@
1
+ import { existsSync } from 'fs';
2
+ import { fileURLToPath } from 'url';
3
+ import { isOrizuSourceCheckout } from '../scripts/orizu-source-checkout.mjs';
4
+ function prefersLiveSource() {
5
+ // The source candidates belong to this monorepo only when the candidate
6
+ // root identifies itself as Orizu. A consumer's .git marker is not proof:
7
+ // npm installs commonly live inside another repository.
8
+ return isOrizuSourceCheckout(fileURLToPath(new URL('../../../package.json', import.meta.url)));
9
+ }
10
+ export function resolveGepaPythonPath(candidates, pathExists = existsSync) {
11
+ return candidates.find(pathExists) ?? null;
12
+ }
13
+ export function bundledOrizuGepaPythonPath() {
14
+ const source = fileURLToPath(new URL('../../orizu-gepa-python/src', import.meta.url));
15
+ const vendor = fileURLToPath(new URL('../vendor/orizu-gepa-python/src', import.meta.url));
16
+ const candidates = prefersLiveSource() ? [source, vendor] : [vendor];
17
+ return resolveGepaPythonPath(candidates);
18
+ }
19
+ export function bundledOrizuGepaConnectorPythonPath() {
20
+ const source = fileURLToPath(new URL('../../orizu-gepa/src', import.meta.url));
21
+ const vendor = fileURLToPath(new URL('../vendor/orizu-gepa/src', import.meta.url));
22
+ const candidates = prefersLiveSource() ? [source, vendor] : [vendor];
23
+ return resolveGepaPythonPath(candidates);
24
+ }
25
+ export function bundledOfficialGepaPythonPath() {
26
+ const sourceArchive = fileURLToPath(new URL('../gepa-python-source.zip', import.meta.url));
27
+ const vendor = fileURLToPath(new URL('../vendor/gepa-python/src', import.meta.url));
28
+ // The checked-in pinned wheel is directly importable from PYTHONPATH in a
29
+ // source checkout. Published packages intentionally omit that archive and
30
+ // must resolve only the verified tree materialized by prepack.
31
+ const candidates = prefersLiveSource() ? [sourceArchive, vendor] : [vendor];
32
+ return resolveGepaPythonPath(candidates);
33
+ }
34
+ export function getGepaPythonPathEntries(existingPythonPath) {
35
+ const pythonPathEntries = [
36
+ bundledOrizuGepaConnectorPythonPath(),
37
+ bundledOrizuGepaPythonPath(),
38
+ bundledOfficialGepaPythonPath(),
39
+ existingPythonPath,
40
+ ].filter((entry) => Boolean(entry));
41
+ return pythonPathEntries;
42
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Git credential helper (ALI-971 / WS-D).
3
+ *
4
+ * Implements git's credential-helper protocol on stdin/stdout so teammates can
5
+ * `git pull`/`git push` the hosted workbench repo with NO GitHub identity: git
6
+ * asks this helper for a credential, we broker a short-lived, downscoped
7
+ * installation token from Orizu and hand it back as `x-access-token:<token>`.
8
+ * The token is never written to disk (60-min TTL is the backstop).
9
+ *
10
+ * Protocol: git runs `orizu git-credential <op>` where op is get|store|erase
11
+ * and feeds `key=value` lines on stdin terminated by a blank line. Only `get`
12
+ * does work; `store`/`erase` are no-ops. For `get` we respond only when the
13
+ * host is github.com AND the cwd resolves to an attached Orizu workspace —
14
+ * otherwise we stay silent so git falls through to its normal handling.
15
+ *
16
+ * Purpose selection: git does not tell us read-vs-write intent, so we mint
17
+ * `write` first (the common push case for curators) and fall back to `read` on
18
+ * a 403 (plain members). Pure logic + injected fetcher/io: index.ts stays thin.
19
+ */
20
+ export type GitCredentialFetcher = (path: string, init?: RequestInit) => Promise<Response>;
21
+ export interface GitCredentialIo {
22
+ stdin: string;
23
+ cwd: string;
24
+ print: (line: string) => void;
25
+ printErr: (line: string) => void;
26
+ fetcher?: GitCredentialFetcher;
27
+ /** Explicit workspace id (tests / clone-time). Overrides env + cwd lookup. */
28
+ workspaceId?: string;
29
+ /**
30
+ * Exact logical capability configured for this remote. Artifacts credentials
31
+ * require this value because Git's helper protocol does not identify whether
32
+ * an operation is a fetch or push and host-only selection is unsafe.
33
+ */
34
+ purpose?: RepoTokenPurpose;
35
+ /** Injectable clock for strict provider credential expiry validation. */
36
+ nowMs?: () => number;
37
+ }
38
+ export declare const REPO_TOKEN_PURPOSES: readonly ["read", "write"];
39
+ export type RepoTokenPurpose = (typeof REPO_TOKEN_PURPOSES)[number];
40
+ export interface GitCredentialInvocation {
41
+ readonly operation: 'get' | 'store' | 'erase';
42
+ readonly purpose: RepoTokenPurpose | null;
43
+ }
44
+ /**
45
+ * Git appends get/store/erase after the configured helper command, so an
46
+ * explicit path-aware configuration looks like:
47
+ * `!orizu git-credential --purpose=write`.
48
+ *
49
+ * Session credentials use the hosted runtime helper, which carries the
50
+ * server-bound session ID. This local helper deliberately accepts only
51
+ * sessionless developer read/write purposes.
52
+ */
53
+ export declare function parseGitCredentialInvocation(args: readonly string[]): GitCredentialInvocation | null;
54
+ export declare function runGitCredentialInvocation(args: readonly string[], io: GitCredentialIo): Promise<number>;
55
+ export declare function parseCredentialInput(stdin: string): Record<string, string>;
56
+ /**
57
+ * Walk up from `cwd` to the workspace root (the dir holding orizu.team.json) and
58
+ * return its bound workspace id, or null if this is not an attached workspace.
59
+ */
60
+ export declare function resolveAttachedWorkspaceId(cwd: string): string | null;
61
+ /**
62
+ * Resolve the workspace id, preferring an explicit override, then the
63
+ * `ORIZU_WORKSPACE_ID` env var (set during `git clone` so the helper works
64
+ * before the working tree — and thus orizu.team.json — exists), then the cwd
65
+ * manifest walk for steady-state pull/push.
66
+ */
67
+ export declare function resolveWorkspaceId(io: GitCredentialIo): string | null;
68
+ export declare function runGitCredential(op: string, io: GitCredentialIo): Promise<number>;
69
+ //# sourceMappingURL=git-credential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-credential.d.ts","sourceRoot":"","sources":["../src/git-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE1F,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,MAAM,CAAA;CACrB;AAmBD,eAAO,MAAM,mBAAmB,4BAGtB,CAAA;AAEV,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC1C;AAQD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,uBAAuB,GAAG,IAAI,CA8BhC;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,eAAe,GAClB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU1E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0BrE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAKrE;AA0RD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA+FvF"}
@@ -0,0 +1,31 @@
1
+ export type RecoveryGitProtocol = 'file' | 'https';
2
+ export interface RecoveryCredentialHelperInvocation {
3
+ /**
4
+ * Trusted worker-installed helper. Secrets are never arguments: the helper
5
+ * resolves the exact operation/repository through the broker at invocation
6
+ * time and returns a one-use credential over Git's stdin/stdout protocol.
7
+ */
8
+ executablePath: string;
9
+ arguments?: readonly string[];
10
+ }
11
+ export interface HardenedGitEnvironmentInput {
12
+ homeDir: string;
13
+ hooksDir: string;
14
+ tempDir?: string;
15
+ allowedProtocols?: readonly RecoveryGitProtocol[];
16
+ credentialHelper?: RecoveryCredentialHelperInvocation;
17
+ sourceEnv?: NodeJS.ProcessEnv;
18
+ }
19
+ /**
20
+ * Construct, rather than scrub, the environment. Only PATH crosses the
21
+ * boundary from the parent process. Provider tokens, cloud credentials,
22
+ * ambient Git repository variables, HOME config, SSH agents, and askpass
23
+ * helpers therefore cannot accidentally enter the recovery subprocess.
24
+ */
25
+ export declare function buildHardenedGitEnvironment(input: HardenedGitEnvironmentInput): NodeJS.ProcessEnv;
26
+ /**
27
+ * Test/diagnostic helper for the non-secret `GIT_CONFIG_COUNT` contract.
28
+ * Rejecting holes also prevents a caller from constructing an ambiguous config.
29
+ */
30
+ export declare function parseConfiguredGitEnvironment(env: NodeJS.ProcessEnv): Map<string, string>;
31
+ //# sourceMappingURL=git-recovery-environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-recovery-environment.d.ts","sourceRoot":"","sources":["../src/git-recovery-environment.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAA;AAElD,MAAM,WAAW,kCAAkC;IACjD;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAA;IACjD,gBAAgB,CAAC,EAAE,kCAAkC,CAAA;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAC9B;AA0GD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,2BAA2B,GACjC,MAAM,CAAC,UAAU,CA6CnB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBrB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * GitHub link + hosted-repo attach for `orizu setup` (ALI-971 / WS-C + WS-D).
3
+ *
4
+ * Pure logic + injected HTTP/git/io so index.ts stays thin and the flows are
5
+ * unit-testable without a real browser, server, or git. Two responsibilities:
6
+ *
7
+ * 1. `runGithubLink` — the REQUIRED team-setup link step: POST the link route,
8
+ * open/print the App-install URL, then poll until the org is connected
9
+ * (with a timeout + resume guidance).
10
+ * 2. `runHostedAttach` — clone the provisioned workbench repo and wire the
11
+ * repo-local git credential helper so future pull/push flow through the
12
+ * Orizu broker. Never stores a long-lived credential: the clone uses a
13
+ * one-shot brokered token embedded only in the transient clone URL, which
14
+ * is immediately rewritten to a clean origin.
15
+ */
16
+ export type SetupFetcher = (path: string, init?: RequestInit) => Promise<Response>;
17
+ export interface GithubLinkIo {
18
+ print: (line: string) => void;
19
+ fetcher?: SetupFetcher;
20
+ openUrl?: (url: string) => void;
21
+ sleep?: (ms: number) => Promise<void>;
22
+ now?: () => number;
23
+ pollIntervalMs?: number;
24
+ pollTimeoutMs?: number;
25
+ /**
26
+ * Second-factor confirmation of the bound org (confused-deputy defense). The
27
+ * callback binds the installation but parks it in `pending_confirmation`; this
28
+ * asks the human to confirm the org they were shown before it becomes active.
29
+ */
30
+ confirm?: (orgLogin: string | null) => Promise<boolean>;
31
+ }
32
+ export interface GithubLinkResult {
33
+ status: 'active';
34
+ orgLogin: string | null;
35
+ alreadyLinked: boolean;
36
+ }
37
+ /**
38
+ * Begin (or resume) the required GitHub link for a team and block until the
39
+ * customer org is connected. Throws with resume guidance on timeout.
40
+ */
41
+ export declare function runGithubLink(teamSlug: string, io: GithubLinkIo): Promise<GithubLinkResult>;
42
+ export type SetupMode = 'local' | 'attach' | 'provision-then-attach';
43
+ /**
44
+ * Decide how `orizu setup` should materialize the workspace. `--local` (or the
45
+ * absence of a linked org) keeps Phase 1 scaffolding; a linked org with a
46
+ * provisioned repo attaches by clone; a linked org without a repo provisions
47
+ * first, then attaches.
48
+ */
49
+ export declare function decideSetupMode(input: {
50
+ local: boolean;
51
+ activeInstallation: boolean;
52
+ repoFullName: string | null;
53
+ }): SetupMode;
54
+ export interface GitRunResult {
55
+ status: number;
56
+ stderr?: string;
57
+ }
58
+ export interface GitRunOpts {
59
+ cwd?: string;
60
+ env?: Record<string, string>;
61
+ }
62
+ export type GitRunner = (args: string[], opts?: GitRunOpts) => GitRunResult;
63
+ export interface HostedAttachIo {
64
+ print: (line: string) => void;
65
+ fetcher?: SetupFetcher;
66
+ git: GitRunner;
67
+ /** Overridable for tests; defaults to creating `.orizu/` on disk. */
68
+ ensureOrizuDir?: (repoDir: string) => void;
69
+ /** True when `targetDir` already holds the cloned workbench repo (an
70
+ * idempotent `orizu setup` re-run). Overridable for tests; defaults to a
71
+ * `.git` presence check. */
72
+ repoAlreadyCloned?: (targetDir: string) => boolean;
73
+ }
74
+ export interface HostedAttachOptions {
75
+ workspaceId: string;
76
+ repoFullName: string | null;
77
+ targetDir: string;
78
+ }
79
+ export interface HostedAttachResult {
80
+ repoFullName: string;
81
+ provisioned: boolean;
82
+ targetDir: string;
83
+ }
84
+ /**
85
+ * Provision-if-needed, then clone with the Orizu credential helper already
86
+ * configured so the brokered token NEVER touches argv, the clone URL, or
87
+ * .git/config. The helper resolves the workspace during clone via the
88
+ * `ORIZU_WORKSPACE_ID` env var (the working tree — and orizu.team.json — does
89
+ * not exist yet), then mints on demand. Repo-local config persists the helper
90
+ * for subsequent pull/push, which resolve the workspace from cwd.
91
+ */
92
+ export declare function runHostedAttach(options: HostedAttachOptions, io: HostedAttachIo): Promise<HostedAttachResult>;
93
+ export interface InteractiveHostedSetupInput {
94
+ teamSlug: string;
95
+ targetDir: string;
96
+ /** The `--local` flag: forces Phase-1 scaffolding regardless of linkage. */
97
+ local: boolean;
98
+ /** True once the required github-link step has connected an active org. */
99
+ activeInstallation: boolean;
100
+ }
101
+ export interface InteractiveHostedSetupIo {
102
+ print: (line: string) => void;
103
+ fetcher?: SetupFetcher;
104
+ git?: GitRunner;
105
+ ensureOrizuDir?: (repoDir: string) => void;
106
+ }
107
+ export interface InteractiveHostedSetupResult {
108
+ mode: SetupMode;
109
+ /** True when the hosted repo was cloned; false means the caller scaffolds locally. */
110
+ attached: boolean;
111
+ repoFullName: string | null;
112
+ }
113
+ /**
114
+ * Bridge the required github-link step to the hosted attach. Create-or-attaches
115
+ * the server workspace (whose response now surfaces repoProvider/repoFullName —
116
+ * ALI-972), then routes through the already-tested `decideSetupMode`:
117
+ * - `local` → returns `attached: false`; the caller scaffolds.
118
+ * - `attach` / `provision-then-attach` → clones (provisioning first if needed)
119
+ * via `runHostedAttach` and returns `attached: true`.
120
+ */
121
+ export declare function runInteractiveHostedSetup(input: InteractiveHostedSetupInput, io: InteractiveHostedSetupIo): Promise<InteractiveHostedSetupResult>;
122
+ //# sourceMappingURL=github-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-setup.d.ts","sourceRoot":"","sources":["../src/github-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface GlobalFlags {
2
+ local: boolean;
3
+ server: string | null;
4
+ }
5
+ export interface ParsedGlobalFlags {
6
+ flags: GlobalFlags;
7
+ args: string[];
8
+ }
9
+ export declare function normalizeBaseUrl(url: string): string;
10
+ export declare function parseGlobalFlags(argv: string[]): ParsedGlobalFlags;
11
+ export declare function getFlagBaseUrl(flags: GlobalFlags): string | null;
12
+ //# sourceMappingURL=global-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-flags.d.ts","sourceRoot":"","sources":["../src/global-flags.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAiClE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAUhE"}