self-evolve-framework 1.6.0 → 1.6.1

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 (301) hide show
  1. package/README.md +33 -23
  2. package/bin/cli.js +24 -67
  3. package/package.json +1 -1
  4. package/template/rules/knowledge/README.md +56 -0
  5. package/template/rules/knowledge/ant-design-vue.mdc +54 -0
  6. package/template/rules/knowledge/general.mdc +56 -0
  7. package/template/rules/knowledge/rust.mdc +55 -0
  8. package/template/rules/knowledge/shadcn-svelte.mdc +64 -0
  9. package/template/rules/knowledge/svelte.mdc +135 -0
  10. package/template/rules/knowledge/tailwind.mdc +66 -0
  11. package/template/rules/knowledge/tauri.mdc +65 -0
  12. package/template/rules/knowledge/typescript.mdc +41 -0
  13. package/template/rules/knowledge/vue.mdc +48 -0
  14. package/template/rules/ponytail.mdc +23 -98
  15. package/template/rules/self-evolve.mdc +24 -0
  16. package/template/skills/impeccable/SKILL.md +47 -174
  17. package/template/skills/skillopt-sleep/SKILL.md +32 -88
  18. package/template/skills/impeccable/agents/impeccable_asset_producer.toml +0 -92
  19. package/template/skills/impeccable/agents/impeccable_manual_edit_applier.toml +0 -95
  20. package/template/skills/impeccable/agents/openai.yaml +0 -4
  21. package/template/skills/impeccable/reference/adapt.md +0 -311
  22. package/template/skills/impeccable/reference/animate.md +0 -201
  23. package/template/skills/impeccable/reference/audit.md +0 -133
  24. package/template/skills/impeccable/reference/bolder.md +0 -113
  25. package/template/skills/impeccable/reference/brand.md +0 -108
  26. package/template/skills/impeccable/reference/clarify.md +0 -288
  27. package/template/skills/impeccable/reference/codex.md +0 -105
  28. package/template/skills/impeccable/reference/colorize.md +0 -257
  29. package/template/skills/impeccable/reference/craft.md +0 -123
  30. package/template/skills/impeccable/reference/critique.md +0 -790
  31. package/template/skills/impeccable/reference/delight.md +0 -302
  32. package/template/skills/impeccable/reference/distill.md +0 -111
  33. package/template/skills/impeccable/reference/document.md +0 -429
  34. package/template/skills/impeccable/reference/extract.md +0 -69
  35. package/template/skills/impeccable/reference/harden.md +0 -347
  36. package/template/skills/impeccable/reference/hooks.md +0 -90
  37. package/template/skills/impeccable/reference/init.md +0 -172
  38. package/template/skills/impeccable/reference/interaction-design.md +0 -189
  39. package/template/skills/impeccable/reference/layout.md +0 -161
  40. package/template/skills/impeccable/reference/live.md +0 -720
  41. package/template/skills/impeccable/reference/onboard.md +0 -234
  42. package/template/skills/impeccable/reference/optimize.md +0 -258
  43. package/template/skills/impeccable/reference/overdrive.md +0 -130
  44. package/template/skills/impeccable/reference/polish.md +0 -241
  45. package/template/skills/impeccable/reference/product.md +0 -60
  46. package/template/skills/impeccable/reference/quieter.md +0 -99
  47. package/template/skills/impeccable/reference/shape.md +0 -165
  48. package/template/skills/impeccable/reference/typeset.md +0 -279
  49. package/template/skills/impeccable/scripts/command-metadata.json +0 -94
  50. package/template/skills/impeccable/scripts/context-signals.mjs +0 -225
  51. package/template/skills/impeccable/scripts/context.mjs +0 -961
  52. package/template/skills/impeccable/scripts/critique-storage.mjs +0 -242
  53. package/template/skills/impeccable/scripts/detect-csp.mjs +0 -198
  54. package/template/skills/impeccable/scripts/detect.mjs +0 -21
  55. package/template/skills/impeccable/scripts/detector/browser/injected/index.mjs +0 -1937
  56. package/template/skills/impeccable/scripts/detector/cli/main.mjs +0 -290
  57. package/template/skills/impeccable/scripts/detector/design-system.mjs +0 -750
  58. package/template/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +0 -5138
  59. package/template/skills/impeccable/scripts/detector/detect-antipatterns.mjs +0 -50
  60. package/template/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +0 -277
  61. package/template/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +0 -568
  62. package/template/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +0 -1015
  63. package/template/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +0 -234
  64. package/template/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -189
  65. package/template/skills/impeccable/scripts/detector/findings.mjs +0 -12
  66. package/template/skills/impeccable/scripts/detector/node/file-system.mjs +0 -198
  67. package/template/skills/impeccable/scripts/detector/profile/profiler.mjs +0 -166
  68. package/template/skills/impeccable/scripts/detector/registry/antipatterns.mjs +0 -448
  69. package/template/skills/impeccable/scripts/detector/rules/checks.mjs +0 -2671
  70. package/template/skills/impeccable/scripts/detector/shared/color.mjs +0 -124
  71. package/template/skills/impeccable/scripts/detector/shared/constants.mjs +0 -101
  72. package/template/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +0 -148
  73. package/template/skills/impeccable/scripts/detector/shared/page.mjs +0 -7
  74. package/template/skills/impeccable/scripts/hook-admin.mjs +0 -661
  75. package/template/skills/impeccable/scripts/hook-before-edit.mjs +0 -476
  76. package/template/skills/impeccable/scripts/hook-lib.mjs +0 -1632
  77. package/template/skills/impeccable/scripts/hook.mjs +0 -61
  78. package/template/skills/impeccable/scripts/lib/design-parser.mjs +0 -842
  79. package/template/skills/impeccable/scripts/lib/impeccable-config.mjs +0 -638
  80. package/template/skills/impeccable/scripts/lib/impeccable-paths.mjs +0 -128
  81. package/template/skills/impeccable/scripts/lib/is-generated.mjs +0 -69
  82. package/template/skills/impeccable/scripts/lib/target-args.mjs +0 -42
  83. package/template/skills/impeccable/scripts/live/browser-script-parts.mjs +0 -49
  84. package/template/skills/impeccable/scripts/live/completion.mjs +0 -19
  85. package/template/skills/impeccable/scripts/live/event-validation.mjs +0 -137
  86. package/template/skills/impeccable/scripts/live/insert-ui.mjs +0 -458
  87. package/template/skills/impeccable/scripts/live/manual-apply.mjs +0 -939
  88. package/template/skills/impeccable/scripts/live/manual-edit-routes.mjs +0 -357
  89. package/template/skills/impeccable/scripts/live/manual-edits-buffer.mjs +0 -152
  90. package/template/skills/impeccable/scripts/live/session-store.mjs +0 -289
  91. package/template/skills/impeccable/scripts/live/svelte-component.mjs +0 -826
  92. package/template/skills/impeccable/scripts/live/sveltekit-adapter.mjs +0 -274
  93. package/template/skills/impeccable/scripts/live/ui-core.mjs +0 -180
  94. package/template/skills/impeccable/scripts/live/vocabulary.mjs +0 -36
  95. package/template/skills/impeccable/scripts/live-accept.mjs +0 -812
  96. package/template/skills/impeccable/scripts/live-browser-dom.js +0 -146
  97. package/template/skills/impeccable/scripts/live-browser-session.js +0 -123
  98. package/template/skills/impeccable/scripts/live-browser.js +0 -11173
  99. package/template/skills/impeccable/scripts/live-commit-manual-edits.mjs +0 -1241
  100. package/template/skills/impeccable/scripts/live-complete.mjs +0 -75
  101. package/template/skills/impeccable/scripts/live-copy-edit-agent.mjs +0 -683
  102. package/template/skills/impeccable/scripts/live-discard-manual-edits.mjs +0 -51
  103. package/template/skills/impeccable/scripts/live-inject.mjs +0 -583
  104. package/template/skills/impeccable/scripts/live-insert.mjs +0 -272
  105. package/template/skills/impeccable/scripts/live-manual-edit-evidence.mjs +0 -363
  106. package/template/skills/impeccable/scripts/live-poll.mjs +0 -384
  107. package/template/skills/impeccable/scripts/live-resume.mjs +0 -94
  108. package/template/skills/impeccable/scripts/live-server.mjs +0 -1135
  109. package/template/skills/impeccable/scripts/live-status.mjs +0 -61
  110. package/template/skills/impeccable/scripts/live-target.mjs +0 -30
  111. package/template/skills/impeccable/scripts/live-wrap.mjs +0 -894
  112. package/template/skills/impeccable/scripts/live.mjs +0 -297
  113. package/template/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  114. package/template/skills/impeccable/scripts/palette.mjs +0 -633
  115. package/template/skills/impeccable/scripts/pin.mjs +0 -214
  116. package/template/skills/skillopt-sleep/configs/_base_/default.yaml +0 -103
  117. package/template/skills/skillopt-sleep/configs/alfworld/default.yaml +0 -29
  118. package/template/skills/skillopt-sleep/configs/docvqa/default.yaml +0 -28
  119. package/template/skills/skillopt-sleep/configs/features/soft_gate.yaml +0 -47
  120. package/template/skills/skillopt-sleep/configs/livemathematicianbench/default.yaml +0 -22
  121. package/template/skills/skillopt-sleep/configs/officeqa/default.yaml +0 -34
  122. package/template/skills/skillopt-sleep/configs/searchqa/default.yaml +0 -32
  123. package/template/skills/skillopt-sleep/configs/spreadsheetbench/default.yaml +0 -34
  124. package/template/skills/skillopt-sleep/scripts/framework/skillopt/__init__.py +0 -28
  125. package/template/skills/skillopt-sleep/scripts/framework/skillopt/config.py +0 -282
  126. package/template/skills/skillopt-sleep/scripts/framework/skillopt/datasets/__init__.py +0 -7
  127. package/template/skills/skillopt-sleep/scripts/framework/skillopt/datasets/base.py +0 -512
  128. package/template/skills/skillopt-sleep/scripts/framework/skillopt/engine/__init__.py +0 -9
  129. package/template/skills/skillopt-sleep/scripts/framework/skillopt/engine/trainer.py +0 -2379
  130. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/__init__.py +0 -1
  131. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/README.md +0 -43
  132. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/config_template.yaml +0 -55
  133. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/env_template.py +0 -151
  134. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/_template/loader_template.py +0 -87
  135. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/__init__.py +0 -5
  136. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/adapter.py +0 -428
  137. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/dataloader.py +0 -123
  138. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/analyst_error.md +0 -55
  139. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/analyst_success.md +0 -33
  140. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_no_history.md +0 -8
  141. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_with_history.md +0 -9
  142. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/prompts/rollout_with_memory.md +0 -16
  143. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/reflect.py +0 -4
  144. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/rollout.py +0 -366
  145. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/skills/initial.md +0 -45
  146. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/__init__.py +0 -9
  147. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_envs.py +0 -221
  148. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_projection.py +0 -60
  149. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/alfworld_prompts.py +0 -8
  150. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/config_tw.yaml +0 -145
  151. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/env_base.py +0 -84
  152. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/env_manager.py +0 -139
  153. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/alfworld/vendor/memory.py +0 -87
  154. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/base.py +0 -329
  155. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/__init__.py +0 -1
  156. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/adapter.py +0 -90
  157. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/dataloader.py +0 -61
  158. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/evaluator.py +0 -113
  159. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/analyst_error.md +0 -35
  160. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/analyst_success.md +0 -24
  161. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/prompts/rollout_system.md +0 -12
  162. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/rollout.py +0 -391
  163. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/docvqa/skills/initial.md +0 -11
  164. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/__init__.py +0 -1
  165. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/adapter.py +0 -129
  166. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/dataloader.py +0 -308
  167. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/evaluator.py +0 -62
  168. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/analyst_error.md +0 -37
  169. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/analyst_success.md +0 -25
  170. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/prompts/rollout_system.md +0 -12
  171. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/reflect.py +0 -4
  172. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/rollout.py +0 -434
  173. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/livemathematicianbench/skills/initial.md +0 -16
  174. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/__init__.py +0 -1
  175. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/adapter.py +0 -112
  176. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/dataloader.py +0 -71
  177. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/evaluator.py +0 -46
  178. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/analyst_error.md +0 -37
  179. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/analyst_success.md +0 -25
  180. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/prompts/rollout_system.md +0 -15
  181. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/rollout.py +0 -799
  182. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/skills/initial.md +0 -15
  183. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/officeqa/tool_runtime.py +0 -552
  184. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/__init__.py +0 -1
  185. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/adapter.py +0 -96
  186. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/dataloader.py +0 -42
  187. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/evaluator.py +0 -100
  188. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/analyst_error.md +0 -46
  189. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/analyst_success.md +0 -32
  190. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/prompts/rollout_system.md +0 -13
  191. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/reflect.py +0 -4
  192. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/rollout.py +0 -494
  193. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/searchqa/skills/initial.md +0 -3
  194. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/__init__.py +0 -5
  195. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/adapter.py +0 -159
  196. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/codegen_agent.py +0 -731
  197. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/dataloader.py +0 -37
  198. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/evaluator.py +0 -158
  199. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/executor.py +0 -67
  200. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/analyst_error.md +0 -46
  201. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/analyst_success.md +0 -32
  202. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/codegen_system.md +0 -1
  203. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/critical_rules.md +0 -9
  204. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/prompts/react_system.md +0 -21
  205. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/react_agent.py +0 -395
  206. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/reflect.py +0 -4
  207. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/rollout.py +0 -979
  208. package/template/skills/skillopt-sleep/scripts/framework/skillopt/envs/spreadsheetbench/skills/initial.md +0 -56
  209. package/template/skills/skillopt-sleep/scripts/framework/skillopt/evaluation/__init__.py +0 -13
  210. package/template/skills/skillopt-sleep/scripts/framework/skillopt/evaluation/gate.py +0 -148
  211. package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/__init__.py +0 -15
  212. package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/aggregate.py +0 -253
  213. package/template/skills/skillopt-sleep/scripts/framework/skillopt/gradient/reflect.py +0 -635
  214. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/__init__.py +0 -514
  215. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/azure_openai.py +0 -915
  216. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/backend_config.py +0 -185
  217. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/claude_backend.py +0 -371
  218. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/codex_backend.py +0 -666
  219. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/codex_harness.py +0 -1057
  220. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/common.py +0 -229
  221. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/minimax_backend.py +0 -277
  222. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/qwen_backend.py +0 -456
  223. package/template/skills/skillopt-sleep/scripts/framework/skillopt/model/router.py +0 -236
  224. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/__init__.py +0 -15
  225. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/appendix.py +0 -156
  226. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/clip.py +0 -109
  227. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/lr_autonomous.py +0 -108
  228. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/meta_skill.py +0 -79
  229. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/rewrite.py +0 -59
  230. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/scheduler.py +0 -127
  231. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/select.py +0 -4
  232. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/skill.py +0 -201
  233. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/skill_aware.py +0 -206
  234. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/slow_update.py +0 -396
  235. package/template/skills/skillopt-sleep/scripts/framework/skillopt/optimizer/update_modes.py +0 -135
  236. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/__init__.py +0 -63
  237. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error.md +0 -41
  238. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error_full_rewrite.md +0 -32
  239. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_error_rewrite.md +0 -44
  240. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success.md +0 -36
  241. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success_full_rewrite.md +0 -30
  242. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/analyst_success_rewrite.md +0 -33
  243. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/lr_autonomous.md +0 -20
  244. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure.md +0 -30
  245. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure_full_rewrite.md +0 -28
  246. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_failure_rewrite.md +0 -26
  247. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final.md +0 -33
  248. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final_full_rewrite.md +0 -28
  249. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_final_rewrite.md +0 -25
  250. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success.md +0 -28
  251. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success_full_rewrite.md +0 -28
  252. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/merge_success_rewrite.md +0 -25
  253. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/meta_skill.md +0 -40
  254. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/ranking.md +0 -20
  255. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/ranking_rewrite.md +0 -15
  256. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/rewrite_skill.md +0 -25
  257. package/template/skills/skillopt-sleep/scripts/framework/skillopt/prompts/slow_update.md +0 -60
  258. package/template/skills/skillopt-sleep/scripts/framework/skillopt/scheduler/__init__.py +0 -8
  259. package/template/skills/skillopt-sleep/scripts/framework/skillopt/types.py +0 -306
  260. package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/__init__.py +0 -4
  261. package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/json_utils.py +0 -172
  262. package/template/skills/skillopt-sleep/scripts/framework/skillopt/utils/scoring.py +0 -28
  263. package/template/skills/skillopt-sleep/scripts/python/__init__.py +0 -20
  264. package/template/skills/skillopt-sleep/scripts/python/__main__.py +0 -343
  265. package/template/skills/skillopt-sleep/scripts/python/backend.py +0 -1371
  266. package/template/skills/skillopt-sleep/scripts/python/budget.py +0 -75
  267. package/template/skills/skillopt-sleep/scripts/python/config.py +0 -162
  268. package/template/skills/skillopt-sleep/scripts/python/consolidate.py +0 -238
  269. package/template/skills/skillopt-sleep/scripts/python/cycle.py +0 -291
  270. package/template/skills/skillopt-sleep/scripts/python/dream.py +0 -138
  271. package/template/skills/skillopt-sleep/scripts/python/experiments/__init__.py +0 -1
  272. package/template/skills/skillopt-sleep/scripts/python/experiments/gbrain_bench.py +0 -119
  273. package/template/skills/skillopt-sleep/scripts/python/experiments/personas.py +0 -86
  274. package/template/skills/skillopt-sleep/scripts/python/experiments/report.py +0 -132
  275. package/template/skills/skillopt-sleep/scripts/python/experiments/run_experiment.py +0 -178
  276. package/template/skills/skillopt-sleep/scripts/python/experiments/run_gbrain.py +0 -209
  277. package/template/skills/skillopt-sleep/scripts/python/experiments/run_transfer.py +0 -155
  278. package/template/skills/skillopt-sleep/scripts/python/experiments/sweep.py +0 -164
  279. package/template/skills/skillopt-sleep/scripts/python/gate.py +0 -50
  280. package/template/skills/skillopt-sleep/scripts/python/harvest.py +0 -304
  281. package/template/skills/skillopt-sleep/scripts/python/harvest_codex.py +0 -253
  282. package/template/skills/skillopt-sleep/scripts/python/harvest_sources.py +0 -41
  283. package/template/skills/skillopt-sleep/scripts/python/judges.py +0 -84
  284. package/template/skills/skillopt-sleep/scripts/python/llm_miner.py +0 -134
  285. package/template/skills/skillopt-sleep/scripts/python/memory.py +0 -129
  286. package/template/skills/skillopt-sleep/scripts/python/mine.py +0 -312
  287. package/template/skills/skillopt-sleep/scripts/python/replay.py +0 -146
  288. package/template/skills/skillopt-sleep/scripts/python/rollout.py +0 -153
  289. package/template/skills/skillopt-sleep/scripts/python/scheduler.py +0 -138
  290. package/template/skills/skillopt-sleep/scripts/python/slow_update.py +0 -142
  291. package/template/skills/skillopt-sleep/scripts/python/staging.py +0 -103
  292. package/template/skills/skillopt-sleep/scripts/python/state.py +0 -96
  293. package/template/skills/skillopt-sleep/scripts/python/tasks_file.py +0 -81
  294. package/template/skills/skillopt-sleep/scripts/python/types.py +0 -146
  295. package/template/skills/skillopt-sleep/scripts/shell/__init__.py +0 -0
  296. package/template/skills/skillopt-sleep/scripts/shell/eval_only.py +0 -466
  297. package/template/skills/skillopt-sleep/scripts/shell/materialize_searchqa.py +0 -148
  298. package/template/skills/skillopt-sleep/scripts/shell/run_alfworld.sh +0 -60
  299. package/template/skills/skillopt-sleep/scripts/shell/run_searchqa.sh +0 -40
  300. package/template/skills/skillopt-sleep/scripts/shell/run_spreadsheetbench.sh +0 -39
  301. package/template/skills/skillopt-sleep/scripts/shell/train.py +0 -556
@@ -1,556 +0,0 @@
1
- #!/usr/bin/env python3
2
- """SkillOpt unified training entry point.
3
-
4
- Usage
5
- -----
6
- python scripts/train.py --config configs/alfworld/default.yaml
7
-
8
- Any YAML key can be overridden from the command line::
9
-
10
- python scripts/train.py --config configs/alfworld/default.yaml \\
11
- --batch_size 40 --num_epochs 2 --seed 123
12
-
13
- Run ``python scripts/train.py --help`` for a full list of options.
14
- """
15
- from __future__ import annotations
16
-
17
- import argparse
18
- import datetime
19
- import os
20
- import sys
21
-
22
- # Ensure the project root is on sys.path so ``import skillopt`` works
23
- # regardless of where the script is invoked from.
24
- _SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
25
- _PROJECT_ROOT = os.path.dirname(_SCRIPT_DIR)
26
- if _PROJECT_ROOT not in sys.path:
27
- sys.path.insert(0, _PROJECT_ROOT)
28
-
29
- from skillopt.model.common import default_model_for_backend, normalize_backend_name
30
-
31
- _OPENAI_DEFAULT_MODEL_SENTINELS = {"gpt-5.4", "gpt-5.5"}
32
-
33
-
34
- # ── Environment registry ────────────────────────────────────────────────────
35
-
36
- _ENV_REGISTRY: dict[str, type] = {}
37
-
38
-
39
- def _register_builtins() -> None:
40
- """Lazy-import built-in adapters so we don't pull heavy deps at CLI parse time."""
41
- try:
42
- from skillopt.envs.alfworld.adapter import ALFWorldAdapter
43
- _ENV_REGISTRY["alfworld"] = ALFWorldAdapter
44
- except ImportError:
45
- pass # ALFWorld deps not installed — skip
46
- try:
47
- from skillopt.envs.searchqa.adapter import SearchQAAdapter
48
- _ENV_REGISTRY["searchqa"] = SearchQAAdapter
49
- except ImportError:
50
- pass
51
- try:
52
- from skillopt.envs.livemathematicianbench.adapter import LiveMathematicianBenchAdapter
53
- _ENV_REGISTRY["livemathematicianbench"] = LiveMathematicianBenchAdapter
54
- except ImportError:
55
- pass
56
- try:
57
- from skillopt.envs.babyvision.adapter import BabyVisionAdapter
58
- _ENV_REGISTRY["babyvision"] = BabyVisionAdapter
59
- except ImportError:
60
- pass
61
- try:
62
- from skillopt.envs.spreadsheetbench.adapter import SpreadsheetBenchAdapter
63
- _ENV_REGISTRY["spreadsheetbench"] = SpreadsheetBenchAdapter
64
- except ImportError:
65
- pass
66
- try:
67
- from skillopt.envs.mmrb.adapter import MMRBAdapter
68
- _ENV_REGISTRY["mmrb"] = MMRBAdapter
69
- except ImportError:
70
- pass
71
- try:
72
- from skillopt.envs.docvqa.adapter import DocVQAAdapter
73
- _ENV_REGISTRY["docvqa"] = DocVQAAdapter
74
- except ImportError:
75
- pass
76
- try:
77
- from skillopt.envs.mathverse.adapter import MathVerseAdapter
78
- _ENV_REGISTRY["mathverse"] = MathVerseAdapter
79
- except ImportError:
80
- pass
81
- try:
82
- from skillopt.envs.officeqa.adapter import OfficeQAAdapter
83
- _ENV_REGISTRY["officeqa"] = OfficeQAAdapter
84
- except ImportError:
85
- pass
86
- try:
87
- from skillopt.envs.sealqa.adapter import SealQAAdapter
88
- _ENV_REGISTRY["sealqa"] = SealQAAdapter
89
- except ImportError:
90
- pass
91
- try:
92
- from skillopt.envs.swebench.adapter import SWEBenchAdapter
93
- _ENV_REGISTRY["swebench"] = SWEBenchAdapter
94
- except ImportError:
95
- pass
96
-
97
-
98
- def get_adapter(cfg: dict):
99
- """Instantiate the environment adapter specified in ``cfg["env"]``."""
100
- _register_builtins()
101
- env_name = cfg.get("env", "alfworld")
102
- if env_name not in _ENV_REGISTRY:
103
- raise ValueError(
104
- f"Unknown environment '{env_name}'. "
105
- f"Available: {list(_ENV_REGISTRY.keys())}"
106
- )
107
- adapter_cls = _ENV_REGISTRY[env_name]
108
-
109
- # Inspect adapter __init__ signature and only pass accepted kwargs
110
- import inspect
111
- sig = inspect.signature(adapter_cls.__init__)
112
- accepted = set(sig.parameters.keys()) - {"self"}
113
- adapter_kwargs: dict = {}
114
- for key in accepted:
115
- if key in cfg:
116
- adapter_kwargs[key] = cfg[key]
117
-
118
- return adapter_cls(**adapter_kwargs)
119
-
120
-
121
- # ── CLI ──────────────────────────────────────────────────────────────────────
122
-
123
- _BOOL = lambda x: x.lower() in ("true", "1", "yes") # noqa: E731
124
-
125
-
126
- def parse_args() -> argparse.Namespace:
127
- p = argparse.ArgumentParser(
128
- description="SkillOpt: Executive Strategy for Self-Evolving Agent Skills",
129
- formatter_class=argparse.RawDescriptionHelpFormatter,
130
- epilog=__doc__,
131
- )
132
- p.add_argument("--config", type=str, required=True,
133
- help="Path to YAML config file")
134
- p.add_argument("--cfg-options", nargs="+", default=[],
135
- help="Override config: section.key=value (e.g. train.batch_size=40)")
136
-
137
- # Legacy flat CLI overrides (still work, prefer --cfg-options for new usage)
138
- p.add_argument("--env", type=str)
139
- p.add_argument("--backend", type=str,
140
- choices=["azure_openai", "codex", "codex_exec", "claude", "claude_chat", "claude_code_exec", "qwen", "qwen_chat", "minimax", "minimax_chat"])
141
- p.add_argument("--optimizer_model", type=str)
142
- p.add_argument("--target_model", type=str)
143
- p.add_argument("--optimizer_backend", type=str)
144
- p.add_argument("--target_backend", type=str)
145
- p.add_argument("--reasoning_effort", type=str,
146
- choices=["", "low", "medium", "high", "xhigh", "max"])
147
- p.add_argument("--rewrite_reasoning_effort", type=str)
148
- p.add_argument("--rewrite_max_completion_tokens", type=int)
149
- p.add_argument("--azure_endpoint", type=str)
150
- p.add_argument("--azure_api_version", type=str)
151
- p.add_argument("--azure_api_key", type=str)
152
- p.add_argument("--azure_openai_endpoint", type=str)
153
- p.add_argument("--azure_openai_api_version", type=str)
154
- p.add_argument("--azure_openai_api_key", type=str)
155
- p.add_argument("--azure_openai_auth_mode", type=str)
156
- p.add_argument("--azure_openai_ad_scope", type=str)
157
- p.add_argument("--azure_openai_managed_identity_client_id", type=str)
158
- p.add_argument("--optimizer_azure_openai_endpoint", type=str)
159
- p.add_argument("--optimizer_azure_openai_api_version", type=str)
160
- p.add_argument("--optimizer_azure_openai_api_key", type=str)
161
- p.add_argument("--optimizer_azure_openai_auth_mode", type=str)
162
- p.add_argument("--optimizer_azure_openai_ad_scope", type=str)
163
- p.add_argument("--optimizer_azure_openai_managed_identity_client_id", type=str)
164
- p.add_argument("--target_azure_openai_endpoint", type=str)
165
- p.add_argument("--target_azure_openai_api_version", type=str)
166
- p.add_argument("--target_azure_openai_api_key", type=str)
167
- p.add_argument("--target_azure_openai_auth_mode", type=str)
168
- p.add_argument("--target_azure_openai_ad_scope", type=str)
169
- p.add_argument("--target_azure_openai_managed_identity_client_id", type=str)
170
- p.add_argument("--qwen_chat_base_url", type=str)
171
- p.add_argument("--qwen_chat_api_key", type=str)
172
- p.add_argument("--qwen_chat_temperature", type=float)
173
- p.add_argument("--qwen_chat_timeout_seconds", type=float)
174
- p.add_argument("--qwen_chat_max_tokens", type=int)
175
- p.add_argument("--qwen_chat_enable_thinking", type=_BOOL)
176
- p.add_argument("--optimizer_qwen_chat_base_url", type=str)
177
- p.add_argument("--optimizer_qwen_chat_api_key", type=str)
178
- p.add_argument("--optimizer_qwen_chat_temperature", type=float)
179
- p.add_argument("--optimizer_qwen_chat_timeout_seconds", type=float)
180
- p.add_argument("--optimizer_qwen_chat_max_tokens", type=int)
181
- p.add_argument("--optimizer_qwen_chat_enable_thinking", type=_BOOL)
182
- p.add_argument("--target_qwen_chat_base_url", type=str)
183
- p.add_argument("--target_qwen_chat_api_key", type=str)
184
- p.add_argument("--target_qwen_chat_temperature", type=float)
185
- p.add_argument("--target_qwen_chat_timeout_seconds", type=float)
186
- p.add_argument("--target_qwen_chat_max_tokens", type=int)
187
- p.add_argument("--target_qwen_chat_enable_thinking", type=_BOOL)
188
- p.add_argument("--minimax_base_url", type=str)
189
- p.add_argument("--minimax_api_key", type=str)
190
- p.add_argument("--minimax_model", type=str)
191
- p.add_argument("--minimax_temperature", type=float)
192
- p.add_argument("--minimax_max_tokens", type=int)
193
- p.add_argument("--minimax_enable_thinking", type=_BOOL)
194
- p.add_argument("--codex_exec_path", type=str)
195
- p.add_argument("--codex_exec_sandbox", type=str)
196
- p.add_argument("--codex_exec_profile", type=str)
197
- p.add_argument("--codex_exec_full_auto", type=_BOOL)
198
- p.add_argument("--codex_exec_reasoning_effort", type=str)
199
- p.add_argument("--codex_exec_use_sdk", type=str)
200
- p.add_argument("--codex_exec_network_access", type=_BOOL)
201
- p.add_argument("--codex_exec_web_search", type=_BOOL)
202
- p.add_argument("--codex_exec_approval_policy", type=str)
203
- p.add_argument("--claude_code_exec_path", type=str)
204
- p.add_argument("--claude_code_exec_profile", type=str)
205
- p.add_argument("--claude_code_exec_use_sdk", type=str)
206
- p.add_argument("--claude_code_exec_effort", type=str)
207
- p.add_argument("--claude_code_exec_max_thinking_tokens", type=int)
208
- p.add_argument("--codex_trace_to_optimizer", type=_BOOL)
209
- p.add_argument("--skill_init", type=str)
210
- p.add_argument("--num_epochs", type=int)
211
- p.add_argument("--train_size", type=int)
212
- p.add_argument("--steps_per_epoch", type=int)
213
- p.add_argument("--batch_size", type=int)
214
- p.add_argument("--accumulation", type=int)
215
- p.add_argument("--seed", type=int)
216
- p.add_argument("--edit_budget", type=int)
217
- p.add_argument("--min_edit_budget", type=int)
218
- p.add_argument("--lr_scheduler", type=str,
219
- choices=["constant", "linear", "cosine", "autonomous"])
220
- p.add_argument("--lr_control_mode", type=str,
221
- choices=["fixed", "autonomous", "none"])
222
- p.add_argument("--merge_batch_size", type=int)
223
- p.add_argument("--max_analyst_rounds", type=int)
224
- p.add_argument("--sel_env_num", type=int)
225
- p.add_argument("--test_env_num", type=int)
226
- p.add_argument("--eval_test", type=_BOOL)
227
- p.add_argument("--use_gate", type=_BOOL)
228
- p.add_argument("--max_steps", type=int)
229
- p.add_argument("--max_api_workers", type=int)
230
- p.add_argument("--analyst_workers", type=int)
231
- p.add_argument("--failure_only", type=_BOOL)
232
- p.add_argument("--minibatch_size", type=int)
233
- p.add_argument("--skill_update_mode", type=str,
234
- choices=[
235
- "patch",
236
- "rewrite_from_suggestions",
237
- "rewrite",
238
- "suggestions",
239
- "full_rewrite",
240
- "full_rewrite_minibatch",
241
- "minibatch_full_rewrite",
242
- ])
243
- p.add_argument("--use_slow_update", type=_BOOL)
244
- p.add_argument("--slow_update_samples", type=int)
245
- p.add_argument("--longitudinal_pair_policy", type=str,
246
- choices=["mixed", "changed", "unchanged"])
247
- p.add_argument("--use_meta_skill", type=_BOOL)
248
- p.add_argument("--use_skill_aware_reflection", type=_BOOL)
249
- p.add_argument("--skill_aware_appendix_source", type=str,
250
- choices=["both", "failure_only"])
251
- p.add_argument("--skill_aware_consolidate_threshold", type=int)
252
- p.add_argument("--data_path", type=str)
253
- p.add_argument("--split_mode", type=str,
254
- choices=["ratio", "split_dir"])
255
- p.add_argument("--split_ratio", type=str)
256
- p.add_argument("--split_seed", type=int)
257
- p.add_argument("--split_dir", type=str)
258
- p.add_argument("--split_output_dir", type=str)
259
- p.add_argument("--data_root", type=str)
260
- p.add_argument("--max_turns", type=int)
261
- p.add_argument("--workers", type=int)
262
- p.add_argument("--limit", type=int)
263
- p.add_argument("--shuffle_choices", type=_BOOL)
264
- p.add_argument("--use_theorem", type=_BOOL)
265
- p.add_argument("--use_sketch", type=_BOOL)
266
- p.add_argument("--image_detail", type=str)
267
- p.add_argument("--judge_model", type=str)
268
- p.add_argument("--judge_max_completion_tokens", type=int)
269
- p.add_argument("--judge_retries", type=int)
270
- p.add_argument("--out_root", type=str)
271
- p.add_argument("--mode", type=str)
272
-
273
- return p.parse_args()
274
-
275
-
276
- # ── Flat key → structured path mapping (for legacy CLI → structured config) ──
277
-
278
- _LEGACY_TO_STRUCTURED: dict[str, str] = {
279
- "backend": "model.backend",
280
- "optimizer_model": "model.optimizer",
281
- "target_model": "model.target",
282
- "optimizer_backend": "model.optimizer_backend",
283
- "target_backend": "model.target_backend",
284
- "reasoning_effort": "model.reasoning_effort",
285
- "rewrite_reasoning_effort": "model.rewrite_reasoning_effort",
286
- "rewrite_max_completion_tokens": "model.rewrite_max_completion_tokens",
287
- "azure_endpoint": "model.azure_endpoint",
288
- "azure_api_version": "model.azure_api_version",
289
- "azure_api_key": "model.azure_api_key",
290
- "azure_openai_endpoint": "model.azure_openai_endpoint",
291
- "azure_openai_api_version": "model.azure_openai_api_version",
292
- "azure_openai_api_key": "model.azure_openai_api_key",
293
- "azure_openai_auth_mode": "model.azure_openai_auth_mode",
294
- "azure_openai_ad_scope": "model.azure_openai_ad_scope",
295
- "azure_openai_managed_identity_client_id": "model.azure_openai_managed_identity_client_id",
296
- "optimizer_azure_openai_endpoint": "model.optimizer_azure_openai_endpoint",
297
- "optimizer_azure_openai_api_version": "model.optimizer_azure_openai_api_version",
298
- "optimizer_azure_openai_api_key": "model.optimizer_azure_openai_api_key",
299
- "optimizer_azure_openai_auth_mode": "model.optimizer_azure_openai_auth_mode",
300
- "optimizer_azure_openai_ad_scope": "model.optimizer_azure_openai_ad_scope",
301
- "optimizer_azure_openai_managed_identity_client_id": "model.optimizer_azure_openai_managed_identity_client_id",
302
- "target_azure_openai_endpoint": "model.target_azure_openai_endpoint",
303
- "target_azure_openai_api_version": "model.target_azure_openai_api_version",
304
- "target_azure_openai_api_key": "model.target_azure_openai_api_key",
305
- "target_azure_openai_auth_mode": "model.target_azure_openai_auth_mode",
306
- "target_azure_openai_ad_scope": "model.target_azure_openai_ad_scope",
307
- "target_azure_openai_managed_identity_client_id": "model.target_azure_openai_managed_identity_client_id",
308
- "qwen_chat_base_url": "model.qwen_chat_base_url",
309
- "qwen_chat_api_key": "model.qwen_chat_api_key",
310
- "qwen_chat_temperature": "model.qwen_chat_temperature",
311
- "qwen_chat_timeout_seconds": "model.qwen_chat_timeout_seconds",
312
- "qwen_chat_max_tokens": "model.qwen_chat_max_tokens",
313
- "qwen_chat_enable_thinking": "model.qwen_chat_enable_thinking",
314
- "optimizer_qwen_chat_base_url": "model.optimizer_qwen_chat_base_url",
315
- "optimizer_qwen_chat_api_key": "model.optimizer_qwen_chat_api_key",
316
- "optimizer_qwen_chat_temperature": "model.optimizer_qwen_chat_temperature",
317
- "optimizer_qwen_chat_timeout_seconds": "model.optimizer_qwen_chat_timeout_seconds",
318
- "optimizer_qwen_chat_max_tokens": "model.optimizer_qwen_chat_max_tokens",
319
- "optimizer_qwen_chat_enable_thinking": "model.optimizer_qwen_chat_enable_thinking",
320
- "target_qwen_chat_base_url": "model.target_qwen_chat_base_url",
321
- "target_qwen_chat_api_key": "model.target_qwen_chat_api_key",
322
- "target_qwen_chat_temperature": "model.target_qwen_chat_temperature",
323
- "target_qwen_chat_timeout_seconds": "model.target_qwen_chat_timeout_seconds",
324
- "target_qwen_chat_max_tokens": "model.target_qwen_chat_max_tokens",
325
- "target_qwen_chat_enable_thinking": "model.target_qwen_chat_enable_thinking",
326
- "minimax_base_url": "model.minimax_base_url",
327
- "minimax_api_key": "model.minimax_api_key",
328
- "minimax_model": "model.minimax_model",
329
- "minimax_temperature": "model.minimax_temperature",
330
- "minimax_max_tokens": "model.minimax_max_tokens",
331
- "minimax_enable_thinking": "model.minimax_enable_thinking",
332
- "codex_exec_path": "model.codex_exec_path",
333
- "codex_exec_sandbox": "model.codex_exec_sandbox",
334
- "codex_exec_profile": "model.codex_exec_profile",
335
- "codex_exec_full_auto": "model.codex_exec_full_auto",
336
- "codex_exec_reasoning_effort": "model.codex_exec_reasoning_effort",
337
- "codex_exec_use_sdk": "model.codex_exec_use_sdk",
338
- "codex_exec_network_access": "model.codex_exec_network_access",
339
- "codex_exec_web_search": "model.codex_exec_web_search",
340
- "codex_exec_approval_policy": "model.codex_exec_approval_policy",
341
- "claude_code_exec_path": "model.claude_code_exec_path",
342
- "claude_code_exec_profile": "model.claude_code_exec_profile",
343
- "claude_code_exec_use_sdk": "model.claude_code_exec_use_sdk",
344
- "claude_code_exec_effort": "model.claude_code_exec_effort",
345
- "claude_code_exec_max_thinking_tokens": "model.claude_code_exec_max_thinking_tokens",
346
- "codex_trace_to_optimizer": "model.codex_trace_to_optimizer",
347
- "num_epochs": "train.num_epochs",
348
- "train_size": "train.train_size",
349
- "steps_per_epoch": "train.steps_per_epoch",
350
- "batch_size": "train.batch_size",
351
- "accumulation": "train.accumulation",
352
- "seed": "train.seed",
353
- "minibatch_size": "gradient.minibatch_size",
354
- "merge_batch_size": "gradient.merge_batch_size",
355
- "analyst_workers": "gradient.analyst_workers",
356
- "max_analyst_rounds": "gradient.max_analyst_rounds",
357
- "failure_only": "gradient.failure_only",
358
- "edit_budget": "optimizer.learning_rate",
359
- "min_edit_budget": "optimizer.min_learning_rate",
360
- "lr_scheduler": "optimizer.lr_scheduler",
361
- "lr_control_mode": "optimizer.lr_control_mode",
362
- "skill_update_mode": "optimizer.skill_update_mode",
363
- "use_slow_update": "optimizer.use_slow_update",
364
- "slow_update_samples": "optimizer.slow_update_samples",
365
- "longitudinal_pair_policy": "optimizer.longitudinal_pair_policy",
366
- "use_meta_skill": "optimizer.use_meta_skill",
367
- "use_skill_aware_reflection": "optimizer.use_skill_aware_reflection",
368
- "skill_aware_appendix_source": "optimizer.skill_aware_appendix_source",
369
- "skill_aware_consolidate_threshold": "optimizer.skill_aware_consolidate_threshold",
370
- "use_gate": "evaluation.use_gate",
371
- "sel_env_num": "evaluation.sel_env_num",
372
- "test_env_num": "evaluation.test_env_num",
373
- "eval_test": "evaluation.eval_test",
374
- "env": "env.name",
375
- "skill_init": "env.skill_init",
376
- "out_root": "env.out_root",
377
- }
378
-
379
-
380
- def load_config(args: argparse.Namespace) -> dict:
381
- """Load config with _base_ inheritance, then apply CLI overrides."""
382
- from skillopt.config import load_config as _load, flatten_config, is_structured
383
-
384
- cfg = _load(args.config, overrides=args.cfg_options)
385
- structured = is_structured(cfg)
386
-
387
- # Apply legacy --key value overrides
388
- cli = {k: v for k, v in vars(args).items()
389
- if v is not None and k not in ("config", "cfg_options")}
390
- if cli:
391
- if structured:
392
- from skillopt.config import apply_overrides
393
- mapped = []
394
- for k, v in cli.items():
395
- dotted = _LEGACY_TO_STRUCTURED.get(k)
396
- if dotted:
397
- mapped.append(f"{dotted}={v}")
398
- else:
399
- mapped.append(f"env.{k}={v}")
400
- apply_overrides(cfg, mapped)
401
- else:
402
- cfg.update(cli)
403
-
404
- # Flatten structured config → flat dict for trainer/adapter
405
- flat = flatten_config(cfg) if structured else cfg
406
-
407
- for new_key, old_key in (
408
- ("azure_openai_endpoint", "azure_endpoint"),
409
- ("azure_openai_api_version", "azure_api_version"),
410
- ("azure_openai_api_key", "azure_api_key"),
411
- ):
412
- if flat.get(new_key) in (None, "") and flat.get(old_key) not in (None, ""):
413
- flat[new_key] = flat[old_key]
414
-
415
- explicit_backend = getattr(args, "backend", None)
416
- if explicit_backend is None:
417
- for option in args.cfg_options or []:
418
- key = str(option).split("=", 1)[0].strip()
419
- if key == "model.backend":
420
- explicit_backend = str(option).split("=", 1)[1].strip()
421
- break
422
-
423
- backend = normalize_backend_name(flat.get("model_backend") or flat.get("target_backend") or "azure_openai")
424
-
425
- def _has_model_override(dotted_key: str, legacy_key: str) -> bool:
426
- if getattr(args, legacy_key, None) is not None:
427
- return True
428
- for option in args.cfg_options or []:
429
- key = str(option).split("=", 1)[0].strip()
430
- if key == dotted_key:
431
- return True
432
- return False
433
-
434
- if explicit_backend is not None:
435
- backend = normalize_backend_name(explicit_backend)
436
- flat["model_backend"] = backend
437
- if backend in {"claude", "claude_chat"}:
438
- flat.setdefault("optimizer_backend", "claude_chat")
439
- flat.setdefault("target_backend", "claude_chat")
440
- elif backend in {"codex", "codex_exec"}:
441
- flat.setdefault("optimizer_backend", "openai_chat")
442
- flat.setdefault("target_backend", "codex_exec")
443
- elif backend == "claude_code_exec":
444
- flat.setdefault("optimizer_backend", "openai_chat")
445
- flat.setdefault("target_backend", "claude_code_exec")
446
- elif backend in {"qwen", "qwen_chat"}:
447
- flat.setdefault("optimizer_backend", "openai_chat")
448
- flat.setdefault("target_backend", "qwen_chat")
449
- elif backend in {"minimax", "minimax_chat"}:
450
- flat.setdefault("optimizer_backend", "openai_chat")
451
- flat.setdefault("target_backend", "minimax_chat")
452
- else:
453
- flat.setdefault("optimizer_backend", "openai_chat")
454
- flat.setdefault("target_backend", "openai_chat")
455
- else:
456
- flat.setdefault("optimizer_backend", "openai_chat")
457
- flat.setdefault("target_backend", "openai_chat")
458
-
459
- if flat.get("optimizer_backend") == "claude_chat":
460
- if (
461
- str(flat.get("optimizer_model", "") or "").strip() in _OPENAI_DEFAULT_MODEL_SENTINELS
462
- and not _has_model_override("model.optimizer", "optimizer_model")
463
- ):
464
- flat["optimizer_model"] = default_model_for_backend("claude_chat")
465
- if flat.get("optimizer_backend") == "qwen_chat":
466
- if (
467
- str(flat.get("optimizer_model", "") or "").strip() in _OPENAI_DEFAULT_MODEL_SENTINELS
468
- and not _has_model_override("model.optimizer", "optimizer_model")
469
- ):
470
- flat["optimizer_model"] = default_model_for_backend("qwen_chat")
471
- if flat.get("target_backend") == "claude_chat":
472
- if (
473
- str(flat.get("target_model", "") or "").strip() in _OPENAI_DEFAULT_MODEL_SENTINELS
474
- and not _has_model_override("model.target", "target_model")
475
- ):
476
- flat["target_model"] = default_model_for_backend("claude_chat")
477
- if flat.get("target_backend") == "claude_code_exec":
478
- if (
479
- str(flat.get("target_model", "") or "").strip() in _OPENAI_DEFAULT_MODEL_SENTINELS
480
- and not _has_model_override("model.target", "target_model")
481
- ):
482
- flat["target_model"] = default_model_for_backend("claude_chat")
483
- if flat.get("target_backend") == "qwen_chat":
484
- if (
485
- str(flat.get("target_model", "") or "").strip() in _OPENAI_DEFAULT_MODEL_SENTINELS
486
- and not _has_model_override("model.target", "target_model")
487
- ):
488
- flat["target_model"] = default_model_for_backend("qwen_chat")
489
- if flat.get("target_backend") == "minimax_chat":
490
- if (
491
- str(flat.get("target_model", "") or "").strip() in _OPENAI_DEFAULT_MODEL_SENTINELS
492
- and not _has_model_override("model.target", "target_model")
493
- ):
494
- flat["target_model"] = (
495
- flat.get("minimax_model")
496
- or default_model_for_backend("minimax_chat")
497
- )
498
-
499
- # Auto-generate output root
500
- if not flat.get("out_root"):
501
- env = flat.get("env", "unknown")
502
- model = flat.get("optimizer_model", "unknown").replace("/", "-")
503
- ts = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
504
- flat["out_root"] = os.path.join("outputs", f"skillopt_{env}_{model}_{ts}")
505
-
506
- flat["out_root"] = os.path.abspath(flat["out_root"])
507
- return flat
508
-
509
-
510
- # ── Main ─────────────────────────────────────────────────────────────────────
511
-
512
- def main() -> None:
513
- args = parse_args()
514
- cfg = load_config(args)
515
-
516
- print(f"\n{'='*60}")
517
- print(f" SkillOpt — Executive Strategy for Self-Evolving Agent Skills")
518
- print(f"{'='*60}")
519
- print(f" env: {cfg.get('env')}")
520
- print(f" optimizer_model: {cfg.get('optimizer_model')}")
521
- print(f" target_model: {cfg.get('target_model')}")
522
- print(f" optimizer_backend:{cfg.get('optimizer_backend', 'openai_chat')}")
523
- print(f" target_backend:{cfg.get('target_backend', 'openai_chat')}")
524
- print(f" reasoning: {cfg.get('reasoning_effort') or 'off'}")
525
- print(f" rewrite_effort: {cfg.get('rewrite_reasoning_effort') or 'off'}")
526
- print(f" epochs: {cfg.get('num_epochs')}")
527
- print(f" train_size: {cfg.get('train_size') or 'from dataset'}")
528
- print(f" steps/epoch: auto")
529
- print(f" batch_size: {cfg.get('batch_size')}")
530
- print(f" edit_budget: {cfg.get('edit_budget')}")
531
- print(f" lr_scheduler: {cfg.get('lr_scheduler', 'constant')}")
532
- print(f" update_mode: {cfg.get('skill_update_mode', 'patch')}")
533
- print(f" min_edit_budget:{cfg.get('min_edit_budget', 2)}")
534
- print(f" minibatch_size: {cfg.get('minibatch_size')}")
535
- print(f" seed: {cfg.get('seed')}")
536
- print(f" meta_skill: {cfg.get('use_meta_skill', False)}")
537
- print(f" skill_aware_reflection: {cfg.get('use_skill_aware_reflection', False)}")
538
- print(f" slow_update: {cfg.get('use_slow_update', False)}")
539
- print(f" out_root: {cfg.get('out_root')}")
540
- print(f"{'='*60}\n")
541
-
542
- # Build adapter
543
- adapter = get_adapter(cfg)
544
-
545
- # Build trainer and run
546
- from skillopt.engine.trainer import ReflACTTrainer
547
- trainer = ReflACTTrainer(cfg, adapter)
548
- summary = trainer.train()
549
-
550
- print(f"\n Output saved to: {cfg['out_root']}")
551
- if summary.get("test_hard") is not None:
552
- print(f" Final test: {summary['test_hard']:.4f}")
553
-
554
-
555
- if __name__ == "__main__":
556
- main()