oh-my-knowledge 0.31.0 → 0.33.0

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 (1128) hide show
  1. package/README.md +38 -847
  2. package/README.zh.md +49 -858
  3. package/dist/analysis/coverage-analyzer.d.ts.map +1 -0
  4. package/dist/analysis/coverage-analyzer.js.map +1 -0
  5. package/dist/analysis/failure-clusterer.d.ts.map +1 -0
  6. package/dist/analysis/failure-clusterer.js.map +1 -0
  7. package/dist/analysis/gap-analyzer.d.ts +121 -0
  8. package/dist/analysis/gap-analyzer.d.ts.map +1 -0
  9. package/dist/analysis/gap-analyzer.js +471 -0
  10. package/dist/analysis/gap-analyzer.js.map +1 -0
  11. package/dist/analysis/hedging-classifier.d.ts.map +1 -0
  12. package/dist/analysis/hedging-classifier.js.map +1 -0
  13. package/dist/analysis/report-diagnostics.d.ts +34 -0
  14. package/dist/analysis/report-diagnostics.d.ts.map +1 -0
  15. package/dist/analysis/report-diagnostics.js +753 -0
  16. package/dist/analysis/report-diagnostics.js.map +1 -0
  17. package/dist/analysis/sample-diagnostics.d.ts.map +1 -0
  18. package/dist/analysis/sample-diagnostics.js.map +1 -0
  19. package/dist/analysis/saturation.d.ts +93 -0
  20. package/dist/analysis/saturation.d.ts.map +1 -0
  21. package/dist/analysis/saturation.js +182 -0
  22. package/dist/analysis/saturation.js.map +1 -0
  23. package/dist/authoring/evolver.d.ts +143 -0
  24. package/dist/authoring/evolver.d.ts.map +1 -0
  25. package/dist/authoring/evolver.js +764 -0
  26. package/dist/authoring/evolver.js.map +1 -0
  27. package/dist/authoring/generator.d.ts +66 -0
  28. package/dist/authoring/generator.d.ts.map +1 -0
  29. package/dist/authoring/generator.js +833 -0
  30. package/dist/authoring/generator.js.map +1 -0
  31. package/dist/authoring/sample-fixer.d.ts.map +1 -0
  32. package/dist/authoring/sample-fixer.js.map +1 -0
  33. package/dist/cli/commands/doctor.d.ts +28 -0
  34. package/dist/cli/commands/doctor.d.ts.map +1 -0
  35. package/dist/cli/commands/doctor.js +321 -0
  36. package/dist/cli/commands/doctor.js.map +1 -0
  37. package/dist/cli/commands/eval/gold/compare.d.ts.map +1 -0
  38. package/dist/cli/commands/eval/gold/compare.js.map +1 -0
  39. package/dist/cli/commands/eval/gold/index.d.ts.map +1 -0
  40. package/dist/cli/commands/eval/gold/index.js.map +1 -0
  41. package/dist/cli/commands/eval/gold/init.d.ts.map +1 -0
  42. package/dist/cli/commands/eval/gold/init.js.map +1 -0
  43. package/dist/cli/commands/eval/gold/validate.d.ts.map +1 -0
  44. package/dist/cli/commands/eval/gold/validate.js.map +1 -0
  45. package/dist/cli/commands/eval/index.d.ts.map +1 -0
  46. package/dist/cli/commands/eval/index.js +466 -0
  47. package/dist/cli/commands/eval/index.js.map +1 -0
  48. package/dist/cli/commands/evolve.d.ts +38 -0
  49. package/dist/cli/commands/evolve.d.ts.map +1 -0
  50. package/dist/cli/commands/evolve.js +299 -0
  51. package/dist/cli/commands/evolve.js.map +1 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/init.js.map +1 -0
  54. package/dist/cli/commands/observe/inbox.d.ts.map +1 -0
  55. package/dist/cli/commands/observe/inbox.js +260 -0
  56. package/dist/cli/commands/observe/inbox.js.map +1 -0
  57. package/dist/cli/commands/observe/index.d.ts.map +1 -0
  58. package/dist/cli/commands/observe/index.js +122 -0
  59. package/dist/cli/commands/observe/index.js.map +1 -0
  60. package/dist/cli/commands/observe/ingest.d.ts.map +1 -0
  61. package/dist/cli/commands/observe/ingest.js +71 -0
  62. package/dist/cli/commands/observe/ingest.js.map +1 -0
  63. package/dist/cli/commands/observe/show.d.ts.map +1 -0
  64. package/dist/cli/commands/observe/show.js.map +1 -0
  65. package/dist/cli/commands/sample.d.ts +40 -0
  66. package/dist/cli/commands/sample.d.ts.map +1 -0
  67. package/dist/cli/commands/sample.js +579 -0
  68. package/dist/cli/commands/sample.js.map +1 -0
  69. package/dist/cli/commands/studio.d.ts.map +1 -0
  70. package/dist/cli/commands/studio.js +158 -0
  71. package/dist/cli/commands/studio.js.map +1 -0
  72. package/dist/cli/index.d.ts.map +1 -0
  73. package/dist/cli/index.js.map +1 -0
  74. package/dist/cli/lib/cli-exit.d.ts.map +1 -0
  75. package/dist/cli/lib/cli-exit.js.map +1 -0
  76. package/dist/cli/lib/cmd-flags.d.ts +229 -0
  77. package/dist/cli/lib/cmd-flags.d.ts.map +1 -0
  78. package/dist/cli/lib/cmd-flags.js.map +1 -0
  79. package/dist/cli/lib/i18n-dict/common.d.ts +4 -0
  80. package/dist/cli/lib/i18n-dict/common.d.ts.map +1 -0
  81. package/dist/cli/lib/i18n-dict/common.js +83 -0
  82. package/dist/cli/lib/i18n-dict/common.js.map +1 -0
  83. package/dist/cli/lib/i18n-dict/evolve.d.ts +4 -0
  84. package/dist/cli/lib/i18n-dict/evolve.d.ts.map +1 -0
  85. package/dist/cli/lib/i18n-dict/evolve.js +51 -0
  86. package/dist/cli/lib/i18n-dict/evolve.js.map +1 -0
  87. package/dist/cli/lib/i18n-dict/gen.d.ts +4 -0
  88. package/dist/cli/lib/i18n-dict/gen.d.ts.map +1 -0
  89. package/dist/cli/lib/i18n-dict/gen.js +63 -0
  90. package/dist/cli/lib/i18n-dict/gen.js.map +1 -0
  91. package/dist/cli/lib/i18n-dict/help.d.ts +4 -0
  92. package/dist/cli/lib/i18n-dict/help.d.ts.map +1 -0
  93. package/dist/cli/lib/i18n-dict/help.js +281 -0
  94. package/dist/cli/lib/i18n-dict/help.js.map +1 -0
  95. package/dist/cli/lib/i18n-dict/init.d.ts +4 -0
  96. package/dist/cli/lib/i18n-dict/init.d.ts.map +1 -0
  97. package/dist/cli/lib/i18n-dict/init.js +27 -0
  98. package/dist/cli/lib/i18n-dict/init.js.map +1 -0
  99. package/dist/cli/lib/i18n-dict/run.d.ts +4 -0
  100. package/dist/cli/lib/i18n-dict/run.d.ts.map +1 -0
  101. package/dist/cli/lib/i18n-dict/run.js +143 -0
  102. package/dist/cli/lib/i18n-dict/run.js.map +1 -0
  103. package/dist/cli/lib/i18n-dict/types.d.ts +5 -0
  104. package/dist/cli/lib/i18n-dict/types.d.ts.map +1 -0
  105. package/dist/cli/lib/i18n-dict/types.js +2 -0
  106. package/dist/cli/lib/i18n-dict/types.js.map +1 -0
  107. package/dist/cli/lib/i18n-dict.d.ts +63 -0
  108. package/dist/cli/lib/i18n-dict.d.ts.map +1 -0
  109. package/dist/cli/lib/i18n-dict.js +67 -0
  110. package/dist/cli/lib/i18n-dict.js.map +1 -0
  111. package/dist/cli/lib/i18n.d.ts.map +1 -0
  112. package/dist/cli/lib/i18n.js.map +1 -0
  113. package/dist/cli/lib/parse-run-config/judge-models.d.ts +24 -0
  114. package/dist/cli/lib/parse-run-config/judge-models.d.ts.map +1 -0
  115. package/dist/cli/lib/parse-run-config/judge-models.js +55 -0
  116. package/dist/cli/lib/parse-run-config/judge-models.js.map +1 -0
  117. package/dist/cli/lib/parse-run-config/samples-discovery.d.ts +19 -0
  118. package/dist/cli/lib/parse-run-config/samples-discovery.d.ts.map +1 -0
  119. package/dist/cli/lib/parse-run-config/samples-discovery.js +53 -0
  120. package/dist/cli/lib/parse-run-config/samples-discovery.js.map +1 -0
  121. package/dist/cli/lib/parse-run-config/variant-resolution.d.ts +23 -0
  122. package/dist/cli/lib/parse-run-config/variant-resolution.d.ts.map +1 -0
  123. package/dist/cli/lib/parse-run-config/variant-resolution.js +65 -0
  124. package/dist/cli/lib/parse-run-config/variant-resolution.js.map +1 -0
  125. package/dist/cli/lib/parse-run-config.d.ts +93 -0
  126. package/dist/cli/lib/parse-run-config.d.ts.map +1 -0
  127. package/dist/cli/lib/parse-run-config.js +157 -0
  128. package/dist/cli/lib/parse-run-config.js.map +1 -0
  129. package/dist/cli/lib/progress.d.ts.map +1 -0
  130. package/dist/cli/lib/progress.js.map +1 -0
  131. package/dist/cli/lib/resolve-skill-input.d.ts +8 -0
  132. package/dist/cli/lib/resolve-skill-input.d.ts.map +1 -0
  133. package/dist/cli/lib/resolve-skill-input.js +40 -0
  134. package/dist/cli/lib/resolve-skill-input.js.map +1 -0
  135. package/dist/cli/lib/run-tally.d.ts.map +1 -0
  136. package/dist/cli/lib/run-tally.js.map +1 -0
  137. package/dist/cli/lib/shared.d.ts.map +1 -0
  138. package/dist/cli/lib/shared.js.map +1 -0
  139. package/dist/cli/lib/update-check.d.ts +74 -0
  140. package/dist/cli/lib/update-check.d.ts.map +1 -0
  141. package/dist/cli/lib/update-check.js +302 -0
  142. package/dist/cli/lib/update-check.js.map +1 -0
  143. package/dist/cli/lib/update-fetch-worker.d.ts +2 -0
  144. package/dist/cli/lib/update-fetch-worker.d.ts.map +1 -0
  145. package/dist/cli/lib/update-fetch-worker.js +35 -0
  146. package/dist/cli/lib/update-fetch-worker.js.map +1 -0
  147. package/dist/cli/oclif/base-command.d.ts.map +1 -0
  148. package/dist/cli/oclif/base-command.js.map +1 -0
  149. package/dist/cli/oclif/help.d.ts.map +1 -0
  150. package/dist/cli/oclif/help.js.map +1 -0
  151. package/dist/cli/oclif/i18n.d.ts.map +1 -0
  152. package/dist/cli/oclif/i18n.js.map +1 -0
  153. package/dist/cli/oclif/parsers.d.ts.map +1 -0
  154. package/dist/cli/oclif/parsers.js.map +1 -0
  155. package/dist/cli/oclif/projection.d.ts.map +1 -0
  156. package/dist/cli/oclif/projection.js.map +1 -0
  157. package/dist/cli/oclif/run.d.ts.map +1 -0
  158. package/dist/cli/oclif/run.js +11 -0
  159. package/dist/cli/oclif/run.js.map +1 -0
  160. package/dist/diagnosis/observe-mapper.d.ts.map +1 -0
  161. package/dist/diagnosis/observe-mapper.js.map +1 -0
  162. package/dist/diagnosis/observe-producer.d.ts.map +1 -0
  163. package/dist/diagnosis/observe-producer.js +199 -0
  164. package/dist/diagnosis/observe-producer.js.map +1 -0
  165. package/dist/diagnosis/studio-projection.d.ts +7 -0
  166. package/dist/diagnosis/studio-projection.d.ts.map +1 -0
  167. package/dist/diagnosis/studio-projection.js.map +1 -0
  168. package/dist/diagnosis/types.d.ts +4 -0
  169. package/dist/diagnosis/types.d.ts.map +1 -0
  170. package/dist/diagnosis/types.js +20 -0
  171. package/dist/diagnosis/types.js.map +1 -0
  172. package/dist/doctor/fixer.d.ts.map +1 -0
  173. package/dist/doctor/fixer.js.map +1 -0
  174. package/dist/doctor/health/builtin-dimensions.d.ts.map +1 -0
  175. package/dist/doctor/health/builtin-dimensions.js.map +1 -0
  176. package/dist/doctor/health/composer.d.ts.map +1 -0
  177. package/dist/doctor/health/composer.js +296 -0
  178. package/dist/doctor/health/composer.js.map +1 -0
  179. package/dist/doctor/health/dimension-registry.d.ts.map +1 -0
  180. package/dist/doctor/health/dimension-registry.js.map +1 -0
  181. package/dist/doctor/health/dimension-spec.d.ts +47 -0
  182. package/dist/doctor/health/dimension-spec.d.ts.map +1 -0
  183. package/dist/doctor/health/dimension-spec.js.map +1 -0
  184. package/dist/doctor/health/load-custom-dimensions.d.ts +2 -0
  185. package/dist/doctor/health/load-custom-dimensions.d.ts.map +1 -0
  186. package/dist/doctor/health/load-custom-dimensions.js +31 -0
  187. package/dist/doctor/health/load-custom-dimensions.js.map +1 -0
  188. package/dist/doctor/health/parser.d.ts.map +1 -0
  189. package/dist/doctor/health/parser.js.map +1 -0
  190. package/dist/doctor/health/prompt-builder.d.ts.map +1 -0
  191. package/dist/doctor/health/prompt-builder.js.map +1 -0
  192. package/dist/doctor/health/register.d.ts.map +1 -0
  193. package/dist/doctor/health/register.js.map +1 -0
  194. package/dist/doctor/index.d.ts.map +1 -0
  195. package/dist/doctor/index.js.map +1 -0
  196. package/dist/doctor/messages.d.ts +21 -0
  197. package/dist/doctor/messages.d.ts.map +1 -0
  198. package/dist/doctor/messages.js +217 -0
  199. package/dist/doctor/messages.js.map +1 -0
  200. package/dist/doctor/preflight.d.ts.map +1 -0
  201. package/dist/doctor/preflight.js.map +1 -0
  202. package/dist/doctor/renderer.d.ts +17 -0
  203. package/dist/doctor/renderer.d.ts.map +1 -0
  204. package/dist/doctor/renderer.js +122 -0
  205. package/dist/doctor/renderer.js.map +1 -0
  206. package/dist/doctor/rules.d.ts.map +1 -0
  207. package/dist/doctor/rules.js +289 -0
  208. package/dist/doctor/rules.js.map +1 -0
  209. package/dist/eval-core/bootstrap.d.ts +80 -0
  210. package/dist/eval-core/bootstrap.d.ts.map +1 -0
  211. package/dist/eval-core/bootstrap.js +182 -0
  212. package/dist/eval-core/bootstrap.js.map +1 -0
  213. package/dist/eval-core/cache.d.ts.map +1 -0
  214. package/dist/eval-core/cache.js.map +1 -0
  215. package/dist/eval-core/comparability.d.ts.map +1 -0
  216. package/dist/eval-core/comparability.js.map +1 -0
  217. package/dist/eval-core/dependency-checker.d.ts +37 -0
  218. package/dist/eval-core/dependency-checker.d.ts.map +1 -0
  219. package/dist/eval-core/dependency-checker.js.map +1 -0
  220. package/dist/eval-core/evaluation-execution.d.ts.map +1 -0
  221. package/dist/eval-core/evaluation-execution.js.map +1 -0
  222. package/dist/eval-core/evaluation-job.d.ts.map +1 -0
  223. package/dist/eval-core/evaluation-job.js.map +1 -0
  224. package/dist/eval-core/evaluation-reporting.d.ts.map +1 -0
  225. package/dist/eval-core/evaluation-reporting.js +292 -0
  226. package/dist/eval-core/evaluation-reporting.js.map +1 -0
  227. package/dist/eval-core/execution-strategy.d.ts.map +1 -0
  228. package/dist/eval-core/execution-strategy.js +165 -0
  229. package/dist/eval-core/execution-strategy.js.map +1 -0
  230. package/dist/eval-core/fact-checker.d.ts.map +1 -0
  231. package/dist/eval-core/fact-checker.js.map +1 -0
  232. package/dist/eval-core/layer-gates.d.ts.map +1 -0
  233. package/dist/eval-core/layer-gates.js.map +1 -0
  234. package/dist/eval-core/mocks-runtime.d.ts.map +1 -0
  235. package/dist/eval-core/mocks-runtime.js +559 -0
  236. package/dist/eval-core/mocks-runtime.js.map +1 -0
  237. package/dist/eval-core/schema.d.ts.map +1 -0
  238. package/dist/eval-core/schema.js.map +1 -0
  239. package/dist/eval-core/statistics.d.ts.map +1 -0
  240. package/dist/eval-core/statistics.js.map +1 -0
  241. package/dist/eval-core/task-planner.d.ts.map +1 -0
  242. package/dist/eval-core/task-planner.js.map +1 -0
  243. package/dist/eval-core/verdict.d.ts +95 -0
  244. package/dist/eval-core/verdict.d.ts.map +1 -0
  245. package/dist/eval-core/verdict.js +372 -0
  246. package/dist/eval-core/verdict.js.map +1 -0
  247. package/dist/eval-workflows/batch-evaluation-workflow.d.ts.map +1 -0
  248. package/dist/eval-workflows/batch-evaluation-workflow.js.map +1 -0
  249. package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.d.ts +22 -0
  250. package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.d.ts.map +1 -0
  251. package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.js +67 -0
  252. package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.js.map +1 -0
  253. package/dist/eval-workflows/evaluation-pipeline/report-finalize.d.ts +32 -0
  254. package/dist/eval-workflows/evaluation-pipeline/report-finalize.d.ts.map +1 -0
  255. package/dist/eval-workflows/evaluation-pipeline/report-finalize.js +57 -0
  256. package/dist/eval-workflows/evaluation-pipeline/report-finalize.js.map +1 -0
  257. package/dist/eval-workflows/evaluation-pipeline/run-state.d.ts +60 -0
  258. package/dist/eval-workflows/evaluation-pipeline/run-state.d.ts.map +1 -0
  259. package/dist/eval-workflows/evaluation-pipeline/run-state.js +88 -0
  260. package/dist/eval-workflows/evaluation-pipeline/run-state.js.map +1 -0
  261. package/dist/eval-workflows/evaluation-pipeline/test-set-hash.d.ts +21 -0
  262. package/dist/eval-workflows/evaluation-pipeline/test-set-hash.d.ts.map +1 -0
  263. package/dist/eval-workflows/evaluation-pipeline/test-set-hash.js +46 -0
  264. package/dist/eval-workflows/evaluation-pipeline/test-set-hash.js.map +1 -0
  265. package/dist/eval-workflows/evaluation-pipeline.d.ts +97 -0
  266. package/dist/eval-workflows/evaluation-pipeline.d.ts.map +1 -0
  267. package/dist/eval-workflows/evaluation-pipeline.js +179 -0
  268. package/dist/eval-workflows/evaluation-pipeline.js.map +1 -0
  269. package/dist/eval-workflows/evaluation-preparation.d.ts.map +1 -0
  270. package/dist/eval-workflows/evaluation-preparation.js +105 -0
  271. package/dist/eval-workflows/evaluation-preparation.js.map +1 -0
  272. package/dist/eval-workflows/messages.d.ts +4 -0
  273. package/dist/eval-workflows/messages.d.ts.map +1 -0
  274. package/dist/eval-workflows/messages.js +30 -0
  275. package/dist/eval-workflows/messages.js.map +1 -0
  276. package/dist/eval-workflows/run-evaluation.d.ts +151 -0
  277. package/dist/eval-workflows/run-evaluation.d.ts.map +1 -0
  278. package/dist/eval-workflows/run-evaluation.js +528 -0
  279. package/dist/eval-workflows/run-evaluation.js.map +1 -0
  280. package/dist/executors/anthropic-api.d.ts.map +1 -0
  281. package/dist/executors/anthropic-api.js.map +1 -0
  282. package/dist/executors/claude-cli.d.ts.map +1 -0
  283. package/dist/executors/claude-cli.js.map +1 -0
  284. package/dist/executors/claude-sdk-trace.d.ts.map +1 -0
  285. package/dist/executors/claude-sdk-trace.js.map +1 -0
  286. package/dist/executors/claude-sdk.d.ts.map +1 -0
  287. package/dist/executors/claude-sdk.js.map +1 -0
  288. package/dist/executors/codex-cli-trace.d.ts.map +1 -0
  289. package/dist/executors/codex-cli-trace.js.map +1 -0
  290. package/dist/executors/codex-cli.d.ts.map +1 -0
  291. package/dist/executors/codex-cli.js.map +1 -0
  292. package/dist/executors/codex-sdk.d.ts.map +1 -0
  293. package/dist/executors/codex-sdk.js.map +1 -0
  294. package/dist/executors/gemini.d.ts.map +1 -0
  295. package/dist/executors/gemini.js.map +1 -0
  296. package/dist/executors/index.d.ts.map +1 -0
  297. package/dist/executors/index.js.map +1 -0
  298. package/dist/executors/openai-api.d.ts.map +1 -0
  299. package/dist/executors/openai-api.js.map +1 -0
  300. package/dist/executors/runtime-fingerprint.d.ts.map +1 -0
  301. package/dist/executors/runtime-fingerprint.js.map +1 -0
  302. package/dist/executors/script.d.ts.map +1 -0
  303. package/dist/executors/script.js.map +1 -0
  304. package/dist/executors/shared.d.ts +194 -0
  305. package/dist/executors/shared.d.ts.map +1 -0
  306. package/dist/executors/shared.js +253 -0
  307. package/dist/executors/shared.js.map +1 -0
  308. package/dist/grading/assertions.d.ts.map +1 -0
  309. package/dist/grading/assertions.js.map +1 -0
  310. package/dist/grading/debias-validate.d.ts.map +1 -0
  311. package/dist/grading/debias-validate.js.map +1 -0
  312. package/dist/grading/diagnostic.d.ts.map +1 -0
  313. package/dist/grading/diagnostic.js.map +1 -0
  314. package/dist/grading/gold-cli.d.ts.map +1 -0
  315. package/dist/grading/gold-cli.js.map +1 -0
  316. package/dist/grading/gold-dataset.d.ts.map +1 -0
  317. package/dist/grading/gold-dataset.js.map +1 -0
  318. package/dist/grading/human-gold.d.ts.map +1 -0
  319. package/dist/grading/human-gold.js.map +1 -0
  320. package/dist/grading/index.d.ts.map +1 -0
  321. package/dist/grading/index.js.map +1 -0
  322. package/dist/grading/judge.d.ts.map +1 -0
  323. package/dist/grading/judge.js.map +1 -0
  324. package/dist/grading/layered-scores.d.ts.map +1 -0
  325. package/dist/grading/layered-scores.js.map +1 -0
  326. package/dist/inputs/eval-config.d.ts.map +1 -0
  327. package/dist/inputs/eval-config.js +252 -0
  328. package/dist/inputs/eval-config.js.map +1 -0
  329. package/dist/inputs/load-samples.d.ts.map +1 -0
  330. package/dist/inputs/load-samples.js.map +1 -0
  331. package/dist/inputs/mcp-resolver.d.ts.map +1 -0
  332. package/dist/inputs/mcp-resolver.js.map +1 -0
  333. package/dist/inputs/skill-loader.d.ts +49 -0
  334. package/dist/inputs/skill-loader.d.ts.map +1 -0
  335. package/dist/inputs/skill-loader.js +420 -0
  336. package/dist/inputs/skill-loader.js.map +1 -0
  337. package/dist/inputs/url-fetcher.d.ts.map +1 -0
  338. package/dist/inputs/url-fetcher.js.map +1 -0
  339. package/dist/observability/experience-frontmatter.d.ts +37 -0
  340. package/dist/observability/experience-frontmatter.d.ts.map +1 -0
  341. package/dist/observability/experience-frontmatter.js +100 -0
  342. package/dist/observability/experience-frontmatter.js.map +1 -0
  343. package/dist/observability/experience.d.ts +23 -0
  344. package/dist/observability/experience.d.ts.map +1 -0
  345. package/dist/observability/experience.js +3438 -0
  346. package/dist/observability/experience.js.map +1 -0
  347. package/dist/observability/feedback-matchers.d.ts +37 -0
  348. package/dist/observability/feedback-matchers.d.ts.map +1 -0
  349. package/dist/observability/feedback-matchers.js +232 -0
  350. package/dist/observability/feedback-matchers.js.map +1 -0
  351. package/dist/observability/feedback-projection.d.ts +21 -0
  352. package/dist/observability/feedback-projection.d.ts.map +1 -0
  353. package/dist/observability/feedback-projection.js +20 -0
  354. package/dist/observability/feedback-projection.js.map +1 -0
  355. package/dist/observability/inbox-view-model.d.ts +43 -0
  356. package/dist/observability/inbox-view-model.d.ts.map +1 -0
  357. package/dist/observability/inbox-view-model.js +180 -0
  358. package/dist/observability/inbox-view-model.js.map +1 -0
  359. package/dist/observability/inbox.d.ts +28 -0
  360. package/dist/observability/inbox.d.ts.map +1 -0
  361. package/dist/observability/inbox.js +765 -0
  362. package/dist/observability/inbox.js.map +1 -0
  363. package/dist/observability/problem-patterns.d.ts +12 -0
  364. package/dist/observability/problem-patterns.d.ts.map +1 -0
  365. package/dist/observability/problem-patterns.js +244 -0
  366. package/dist/observability/problem-patterns.js.map +1 -0
  367. package/dist/observability/prompts/llm-enhanced-review.prompt.md +224 -0
  368. package/dist/observability/resolved-review.d.ts +37 -0
  369. package/dist/observability/resolved-review.d.ts.map +1 -0
  370. package/dist/observability/resolved-review.js +552 -0
  371. package/dist/observability/resolved-review.js.map +1 -0
  372. package/dist/observability/review-state.d.ts +20 -0
  373. package/dist/observability/review-state.d.ts.map +1 -0
  374. package/dist/observability/review-state.js.map +1 -0
  375. package/dist/observability/skill-chain-advisories.d.ts +16 -0
  376. package/dist/observability/skill-chain-advisories.d.ts.map +1 -0
  377. package/dist/observability/skill-chain-advisories.js.map +1 -0
  378. package/dist/observability/skill-chain.d.ts +7 -0
  379. package/dist/observability/skill-chain.d.ts.map +1 -0
  380. package/dist/observability/skill-chain.js +474 -0
  381. package/dist/observability/skill-chain.js.map +1 -0
  382. package/dist/observability/skill-health-analyzer.d.ts +96 -0
  383. package/dist/observability/skill-health-analyzer.d.ts.map +1 -0
  384. package/dist/observability/skill-health-analyzer.js +253 -0
  385. package/dist/observability/skill-health-analyzer.js.map +1 -0
  386. package/dist/observability/soft-standards/constants.d.ts +5 -0
  387. package/dist/observability/soft-standards/constants.d.ts.map +1 -0
  388. package/dist/observability/soft-standards/constants.js +10 -0
  389. package/dist/observability/soft-standards/constants.js.map +1 -0
  390. package/dist/observability/soft-standards/index.d.ts +16 -0
  391. package/dist/observability/soft-standards/index.d.ts.map +1 -0
  392. package/dist/observability/soft-standards/index.js +15 -0
  393. package/dist/observability/soft-standards/index.js.map +1 -0
  394. package/dist/observability/soft-standards/llm-extractor.d.ts +6 -0
  395. package/dist/observability/soft-standards/llm-extractor.d.ts.map +1 -0
  396. package/dist/observability/soft-standards/llm-extractor.js +692 -0
  397. package/dist/observability/soft-standards/llm-extractor.js.map +1 -0
  398. package/dist/observability/soft-standards/runtime-evaluator.d.ts +12 -0
  399. package/dist/observability/soft-standards/runtime-evaluator.d.ts.map +1 -0
  400. package/dist/observability/soft-standards/runtime-evaluator.js +385 -0
  401. package/dist/observability/soft-standards/runtime-evaluator.js.map +1 -0
  402. package/dist/observability/soft-standards/skill-standards-store.d.ts +11 -0
  403. package/dist/observability/soft-standards/skill-standards-store.d.ts.map +1 -0
  404. package/dist/observability/soft-standards/skill-standards-store.js +158 -0
  405. package/dist/observability/soft-standards/skill-standards-store.js.map +1 -0
  406. package/dist/observability/soft-standards/types.d.ts +212 -0
  407. package/dist/observability/soft-standards/types.d.ts.map +1 -0
  408. package/dist/observability/soft-standards/types.js +2 -0
  409. package/dist/observability/soft-standards/types.js.map +1 -0
  410. package/dist/observability/text-signals.d.ts +14 -0
  411. package/dist/observability/text-signals.d.ts.map +1 -0
  412. package/dist/observability/text-signals.js +116 -0
  413. package/dist/observability/text-signals.js.map +1 -0
  414. package/dist/observability/trace-adapter.d.ts.map +1 -0
  415. package/dist/observability/trace-adapter.js.map +1 -0
  416. package/dist/observability/trace-attribution.d.ts +56 -0
  417. package/dist/observability/trace-attribution.d.ts.map +1 -0
  418. package/dist/observability/trace-attribution.js +200 -0
  419. package/dist/observability/trace-attribution.js.map +1 -0
  420. package/dist/observability/trace-segmenter.d.ts +52 -0
  421. package/dist/observability/trace-segmenter.d.ts.map +1 -0
  422. package/dist/observability/trace-segmenter.js +322 -0
  423. package/dist/observability/trace-segmenter.js.map +1 -0
  424. package/dist/observability/trace-source.d.ts +92 -0
  425. package/dist/observability/trace-source.d.ts.map +1 -0
  426. package/dist/observability/trace-source.js +502 -0
  427. package/dist/observability/trace-source.js.map +1 -0
  428. package/dist/renderer/html-renderer.d.ts.map +1 -0
  429. package/dist/renderer/html-renderer.js.map +1 -0
  430. package/dist/renderer/layout.d.ts.map +1 -0
  431. package/dist/renderer/layout.js +776 -0
  432. package/dist/renderer/layout.js.map +1 -0
  433. package/dist/renderer/observation-inbox/helpers.d.ts +14 -0
  434. package/dist/renderer/observation-inbox/helpers.d.ts.map +1 -0
  435. package/dist/renderer/observation-inbox/helpers.js +75 -0
  436. package/dist/renderer/observation-inbox/helpers.js.map +1 -0
  437. package/dist/renderer/observation-inbox/styles.d.ts +2 -0
  438. package/dist/renderer/observation-inbox/styles.d.ts.map +1 -0
  439. package/dist/renderer/observation-inbox/styles.js +5184 -0
  440. package/dist/renderer/observation-inbox/styles.js.map +1 -0
  441. package/dist/renderer/observation-inbox-renderer.d.ts +5 -0
  442. package/dist/renderer/observation-inbox-renderer.d.ts.map +1 -0
  443. package/dist/renderer/observation-inbox-renderer.js +7182 -0
  444. package/dist/renderer/observation-inbox-renderer.js.map +1 -0
  445. package/dist/renderer/skill-detail-renderer.d.ts +13 -0
  446. package/dist/renderer/skill-detail-renderer.d.ts.map +1 -0
  447. package/dist/renderer/skill-detail-renderer.js +1323 -0
  448. package/dist/renderer/skill-detail-renderer.js.map +1 -0
  449. package/dist/renderer/skill-health-renderer.d.ts.map +1 -0
  450. package/dist/renderer/skill-health-renderer.js +282 -0
  451. package/dist/renderer/skill-health-renderer.js.map +1 -0
  452. package/dist/renderer/skill-list-renderer.d.ts +3 -0
  453. package/dist/renderer/skill-list-renderer.d.ts.map +1 -0
  454. package/dist/renderer/skill-list-renderer.js +346 -0
  455. package/dist/renderer/skill-list-renderer.js.map +1 -0
  456. package/dist/renderer/summary.d.ts +68 -0
  457. package/dist/renderer/summary.d.ts.map +1 -0
  458. package/dist/renderer/summary.js +1908 -0
  459. package/dist/renderer/summary.js.map +1 -0
  460. package/dist/renderer/table.d.ts.map +1 -0
  461. package/dist/renderer/table.js.map +1 -0
  462. package/dist/renderer/test-view.d.ts.map +1 -0
  463. package/dist/renderer/test-view.js.map +1 -0
  464. package/dist/renderer/trends.d.ts.map +1 -0
  465. package/dist/renderer/trends.js.map +1 -0
  466. package/dist/server/job-store.d.ts.map +1 -0
  467. package/dist/server/job-store.js.map +1 -0
  468. package/dist/server/report-server.d.ts.map +1 -0
  469. package/dist/server/report-server.js +899 -0
  470. package/dist/server/report-server.js.map +1 -0
  471. package/dist/server/report-store.d.ts.map +1 -0
  472. package/dist/server/report-store.js.map +1 -0
  473. package/dist/server/skill-index.d.ts +14 -0
  474. package/dist/server/skill-index.d.ts.map +1 -0
  475. package/dist/server/skill-index.js +384 -0
  476. package/dist/server/skill-index.js.map +1 -0
  477. package/dist/server/skill-insights.d.ts +32 -0
  478. package/dist/server/skill-insights.d.ts.map +1 -0
  479. package/dist/server/skill-insights.js +816 -0
  480. package/dist/server/skill-insights.js.map +1 -0
  481. package/dist/shared/hard-rules.d.ts.map +1 -0
  482. package/dist/shared/hard-rules.js.map +1 -0
  483. package/dist/shared/llm-prompts/index.d.ts +14 -0
  484. package/dist/shared/llm-prompts/index.d.ts.map +1 -0
  485. package/dist/shared/llm-prompts/index.js +22 -0
  486. package/dist/shared/llm-prompts/index.js.map +1 -0
  487. package/dist/shared/llm-prompts/skill-health.d.ts.map +1 -0
  488. package/dist/shared/llm-prompts/skill-health.js.map +1 -0
  489. package/dist/shared/time.d.ts.map +1 -0
  490. package/dist/shared/time.js.map +1 -0
  491. package/dist/shared/tool-search.d.ts.map +1 -0
  492. package/dist/shared/tool-search.js.map +1 -0
  493. package/dist/types/dependencies.d.ts +23 -0
  494. package/dist/types/dependencies.d.ts.map +1 -0
  495. package/dist/types/dependencies.js +2 -0
  496. package/dist/types/dependencies.js.map +1 -0
  497. package/dist/types/diagnosis.d.ts +88 -0
  498. package/dist/types/diagnosis.d.ts.map +1 -0
  499. package/dist/types/diagnosis.js +2 -0
  500. package/dist/types/diagnosis.js.map +1 -0
  501. package/dist/types/doctor.d.ts +157 -0
  502. package/dist/types/doctor.d.ts.map +1 -0
  503. package/dist/types/doctor.js.map +1 -0
  504. package/dist/types/eval.d.ts +378 -0
  505. package/dist/types/eval.d.ts.map +1 -0
  506. package/dist/types/eval.js.map +1 -0
  507. package/dist/types/executor.d.ts.map +1 -0
  508. package/dist/types/executor.js.map +1 -0
  509. package/dist/types/index.d.ts +12 -0
  510. package/dist/types/index.d.ts.map +1 -0
  511. package/dist/types/index.js +12 -0
  512. package/dist/types/index.js.map +1 -0
  513. package/dist/types/judge.d.ts.map +1 -0
  514. package/dist/types/judge.js.map +1 -0
  515. package/dist/types/observability.d.ts +865 -0
  516. package/dist/types/observability.d.ts.map +1 -0
  517. package/dist/types/observability.js +14 -0
  518. package/dist/types/observability.js.map +1 -0
  519. package/dist/types/report.d.ts +560 -0
  520. package/dist/types/report.d.ts.map +1 -0
  521. package/dist/types/report.js.map +1 -0
  522. package/dist/types/shared.d.ts.map +1 -0
  523. package/dist/types/shared.js.map +1 -0
  524. package/dist/types/skill-index.d.ts +145 -0
  525. package/dist/types/skill-index.d.ts.map +1 -0
  526. package/dist/types/skill-index.js +2 -0
  527. package/dist/types/skill-index.js.map +1 -0
  528. package/dist/types/storage.d.ts.map +1 -0
  529. package/dist/types/storage.js.map +1 -0
  530. package/dist/util/safe-slice.d.ts +23 -0
  531. package/dist/util/safe-slice.d.ts.map +1 -0
  532. package/dist/util/safe-slice.js +33 -0
  533. package/dist/util/safe-slice.js.map +1 -0
  534. package/package.json +23 -16
  535. package/dist/src/analysis/coverage-analyzer.d.ts.map +0 -1
  536. package/dist/src/analysis/coverage-analyzer.js.map +0 -1
  537. package/dist/src/analysis/failure-clusterer.d.ts.map +0 -1
  538. package/dist/src/analysis/failure-clusterer.js.map +0 -1
  539. package/dist/src/analysis/gap-analyzer.d.ts +0 -121
  540. package/dist/src/analysis/gap-analyzer.d.ts.map +0 -1
  541. package/dist/src/analysis/gap-analyzer.js +0 -471
  542. package/dist/src/analysis/gap-analyzer.js.map +0 -1
  543. package/dist/src/analysis/hedging-classifier.d.ts.map +0 -1
  544. package/dist/src/analysis/hedging-classifier.js.map +0 -1
  545. package/dist/src/analysis/report-diagnostics.d.ts +0 -34
  546. package/dist/src/analysis/report-diagnostics.d.ts.map +0 -1
  547. package/dist/src/analysis/report-diagnostics.js +0 -753
  548. package/dist/src/analysis/report-diagnostics.js.map +0 -1
  549. package/dist/src/analysis/sample-diagnostics.d.ts.map +0 -1
  550. package/dist/src/analysis/sample-diagnostics.js.map +0 -1
  551. package/dist/src/analysis/saturation.d.ts +0 -85
  552. package/dist/src/analysis/saturation.d.ts.map +0 -1
  553. package/dist/src/analysis/saturation.js +0 -174
  554. package/dist/src/analysis/saturation.js.map +0 -1
  555. package/dist/src/authoring/evolver.d.ts +0 -102
  556. package/dist/src/authoring/evolver.d.ts.map +0 -1
  557. package/dist/src/authoring/evolver.js +0 -681
  558. package/dist/src/authoring/evolver.js.map +0 -1
  559. package/dist/src/authoring/generator.d.ts +0 -38
  560. package/dist/src/authoring/generator.d.ts.map +0 -1
  561. package/dist/src/authoring/generator.js +0 -720
  562. package/dist/src/authoring/generator.js.map +0 -1
  563. package/dist/src/authoring/sample-fixer.d.ts.map +0 -1
  564. package/dist/src/authoring/sample-fixer.js.map +0 -1
  565. package/dist/src/cli/commands/doctor.d.ts +0 -26
  566. package/dist/src/cli/commands/doctor.d.ts.map +0 -1
  567. package/dist/src/cli/commands/doctor.js +0 -283
  568. package/dist/src/cli/commands/doctor.js.map +0 -1
  569. package/dist/src/cli/commands/eval/gold/compare.d.ts.map +0 -1
  570. package/dist/src/cli/commands/eval/gold/compare.js.map +0 -1
  571. package/dist/src/cli/commands/eval/gold/index.d.ts.map +0 -1
  572. package/dist/src/cli/commands/eval/gold/index.js.map +0 -1
  573. package/dist/src/cli/commands/eval/gold/init.d.ts.map +0 -1
  574. package/dist/src/cli/commands/eval/gold/init.js.map +0 -1
  575. package/dist/src/cli/commands/eval/gold/validate.d.ts.map +0 -1
  576. package/dist/src/cli/commands/eval/gold/validate.js.map +0 -1
  577. package/dist/src/cli/commands/eval/index.d.ts.map +0 -1
  578. package/dist/src/cli/commands/eval/index.js +0 -465
  579. package/dist/src/cli/commands/eval/index.js.map +0 -1
  580. package/dist/src/cli/commands/evolve.d.ts +0 -37
  581. package/dist/src/cli/commands/evolve.d.ts.map +0 -1
  582. package/dist/src/cli/commands/evolve.js +0 -276
  583. package/dist/src/cli/commands/evolve.js.map +0 -1
  584. package/dist/src/cli/commands/init.d.ts.map +0 -1
  585. package/dist/src/cli/commands/init.js.map +0 -1
  586. package/dist/src/cli/commands/observe/inbox.d.ts.map +0 -1
  587. package/dist/src/cli/commands/observe/inbox.js +0 -258
  588. package/dist/src/cli/commands/observe/inbox.js.map +0 -1
  589. package/dist/src/cli/commands/observe/index.d.ts.map +0 -1
  590. package/dist/src/cli/commands/observe/index.js +0 -118
  591. package/dist/src/cli/commands/observe/index.js.map +0 -1
  592. package/dist/src/cli/commands/observe/ingest.d.ts.map +0 -1
  593. package/dist/src/cli/commands/observe/ingest.js +0 -69
  594. package/dist/src/cli/commands/observe/ingest.js.map +0 -1
  595. package/dist/src/cli/commands/observe/show.d.ts.map +0 -1
  596. package/dist/src/cli/commands/observe/show.js.map +0 -1
  597. package/dist/src/cli/commands/sample.d.ts +0 -38
  598. package/dist/src/cli/commands/sample.d.ts.map +0 -1
  599. package/dist/src/cli/commands/sample.js +0 -488
  600. package/dist/src/cli/commands/sample.js.map +0 -1
  601. package/dist/src/cli/commands/skill-extract.d.ts +0 -20
  602. package/dist/src/cli/commands/skill-extract.d.ts.map +0 -1
  603. package/dist/src/cli/commands/skill-extract.js +0 -84
  604. package/dist/src/cli/commands/skill-extract.js.map +0 -1
  605. package/dist/src/cli/commands/studio.d.ts.map +0 -1
  606. package/dist/src/cli/commands/studio.js +0 -158
  607. package/dist/src/cli/commands/studio.js.map +0 -1
  608. package/dist/src/cli/index.d.ts.map +0 -1
  609. package/dist/src/cli/index.js.map +0 -1
  610. package/dist/src/cli/lib/cli-exit.d.ts.map +0 -1
  611. package/dist/src/cli/lib/cli-exit.js.map +0 -1
  612. package/dist/src/cli/lib/cmd-flags.d.ts +0 -236
  613. package/dist/src/cli/lib/cmd-flags.d.ts.map +0 -1
  614. package/dist/src/cli/lib/cmd-flags.js.map +0 -1
  615. package/dist/src/cli/lib/i18n-dict.d.ts +0 -54
  616. package/dist/src/cli/lib/i18n-dict.d.ts.map +0 -1
  617. package/dist/src/cli/lib/i18n-dict.js +0 -900
  618. package/dist/src/cli/lib/i18n-dict.js.map +0 -1
  619. package/dist/src/cli/lib/i18n.d.ts.map +0 -1
  620. package/dist/src/cli/lib/i18n.js.map +0 -1
  621. package/dist/src/cli/lib/parse-run-config.d.ts +0 -89
  622. package/dist/src/cli/lib/parse-run-config.d.ts.map +0 -1
  623. package/dist/src/cli/lib/parse-run-config.js +0 -252
  624. package/dist/src/cli/lib/parse-run-config.js.map +0 -1
  625. package/dist/src/cli/lib/progress.d.ts.map +0 -1
  626. package/dist/src/cli/lib/progress.js.map +0 -1
  627. package/dist/src/cli/lib/run-tally.d.ts.map +0 -1
  628. package/dist/src/cli/lib/run-tally.js.map +0 -1
  629. package/dist/src/cli/lib/shared.d.ts.map +0 -1
  630. package/dist/src/cli/lib/shared.js.map +0 -1
  631. package/dist/src/cli/lib/update-check.d.ts +0 -3
  632. package/dist/src/cli/lib/update-check.d.ts.map +0 -1
  633. package/dist/src/cli/lib/update-check.js +0 -37
  634. package/dist/src/cli/lib/update-check.js.map +0 -1
  635. package/dist/src/cli/oclif/base-command.d.ts.map +0 -1
  636. package/dist/src/cli/oclif/base-command.js.map +0 -1
  637. package/dist/src/cli/oclif/help.d.ts.map +0 -1
  638. package/dist/src/cli/oclif/help.js.map +0 -1
  639. package/dist/src/cli/oclif/i18n.d.ts.map +0 -1
  640. package/dist/src/cli/oclif/i18n.js.map +0 -1
  641. package/dist/src/cli/oclif/parsers.d.ts.map +0 -1
  642. package/dist/src/cli/oclif/parsers.js.map +0 -1
  643. package/dist/src/cli/oclif/projection.d.ts.map +0 -1
  644. package/dist/src/cli/oclif/projection.js.map +0 -1
  645. package/dist/src/cli/oclif/run.d.ts.map +0 -1
  646. package/dist/src/cli/oclif/run.js +0 -11
  647. package/dist/src/cli/oclif/run.js.map +0 -1
  648. package/dist/src/diagnosis/observe-mapper.d.ts.map +0 -1
  649. package/dist/src/diagnosis/observe-mapper.js.map +0 -1
  650. package/dist/src/diagnosis/observe-producer.d.ts.map +0 -1
  651. package/dist/src/diagnosis/observe-producer.js +0 -197
  652. package/dist/src/diagnosis/observe-producer.js.map +0 -1
  653. package/dist/src/diagnosis/studio-projection.d.ts +0 -14
  654. package/dist/src/diagnosis/studio-projection.d.ts.map +0 -1
  655. package/dist/src/diagnosis/studio-projection.js.map +0 -1
  656. package/dist/src/diagnosis/types.d.ts +0 -79
  657. package/dist/src/diagnosis/types.d.ts.map +0 -1
  658. package/dist/src/diagnosis/types.js +0 -20
  659. package/dist/src/diagnosis/types.js.map +0 -1
  660. package/dist/src/doctor/fixer.d.ts.map +0 -1
  661. package/dist/src/doctor/fixer.js.map +0 -1
  662. package/dist/src/doctor/health/builtin-dimensions.d.ts.map +0 -1
  663. package/dist/src/doctor/health/builtin-dimensions.js.map +0 -1
  664. package/dist/src/doctor/health/composer.d.ts.map +0 -1
  665. package/dist/src/doctor/health/composer.js +0 -296
  666. package/dist/src/doctor/health/composer.js.map +0 -1
  667. package/dist/src/doctor/health/dimension-registry.d.ts.map +0 -1
  668. package/dist/src/doctor/health/dimension-registry.js.map +0 -1
  669. package/dist/src/doctor/health/dimension-spec.d.ts +0 -47
  670. package/dist/src/doctor/health/dimension-spec.d.ts.map +0 -1
  671. package/dist/src/doctor/health/dimension-spec.js.map +0 -1
  672. package/dist/src/doctor/health/parser.d.ts.map +0 -1
  673. package/dist/src/doctor/health/parser.js.map +0 -1
  674. package/dist/src/doctor/health/prompt-builder.d.ts.map +0 -1
  675. package/dist/src/doctor/health/prompt-builder.js.map +0 -1
  676. package/dist/src/doctor/health/register.d.ts.map +0 -1
  677. package/dist/src/doctor/health/register.js.map +0 -1
  678. package/dist/src/doctor/html-renderer.d.ts +0 -20
  679. package/dist/src/doctor/html-renderer.d.ts.map +0 -1
  680. package/dist/src/doctor/html-renderer.js +0 -376
  681. package/dist/src/doctor/html-renderer.js.map +0 -1
  682. package/dist/src/doctor/index.d.ts.map +0 -1
  683. package/dist/src/doctor/index.js.map +0 -1
  684. package/dist/src/doctor/preflight.d.ts.map +0 -1
  685. package/dist/src/doctor/preflight.js.map +0 -1
  686. package/dist/src/doctor/renderer.d.ts +0 -17
  687. package/dist/src/doctor/renderer.d.ts.map +0 -1
  688. package/dist/src/doctor/renderer.js +0 -123
  689. package/dist/src/doctor/renderer.js.map +0 -1
  690. package/dist/src/doctor/rules.d.ts.map +0 -1
  691. package/dist/src/doctor/rules.js +0 -289
  692. package/dist/src/doctor/rules.js.map +0 -1
  693. package/dist/src/eval-core/bootstrap.d.ts +0 -72
  694. package/dist/src/eval-core/bootstrap.d.ts.map +0 -1
  695. package/dist/src/eval-core/bootstrap.js +0 -174
  696. package/dist/src/eval-core/bootstrap.js.map +0 -1
  697. package/dist/src/eval-core/cache.d.ts.map +0 -1
  698. package/dist/src/eval-core/cache.js.map +0 -1
  699. package/dist/src/eval-core/comparability.d.ts.map +0 -1
  700. package/dist/src/eval-core/comparability.js.map +0 -1
  701. package/dist/src/eval-core/dependency-checker.d.ts +0 -58
  702. package/dist/src/eval-core/dependency-checker.d.ts.map +0 -1
  703. package/dist/src/eval-core/dependency-checker.js.map +0 -1
  704. package/dist/src/eval-core/evaluation-execution.d.ts.map +0 -1
  705. package/dist/src/eval-core/evaluation-execution.js.map +0 -1
  706. package/dist/src/eval-core/evaluation-job.d.ts.map +0 -1
  707. package/dist/src/eval-core/evaluation-job.js.map +0 -1
  708. package/dist/src/eval-core/evaluation-reporting.d.ts.map +0 -1
  709. package/dist/src/eval-core/evaluation-reporting.js +0 -292
  710. package/dist/src/eval-core/evaluation-reporting.js.map +0 -1
  711. package/dist/src/eval-core/execution-strategy.d.ts.map +0 -1
  712. package/dist/src/eval-core/execution-strategy.js +0 -165
  713. package/dist/src/eval-core/execution-strategy.js.map +0 -1
  714. package/dist/src/eval-core/fact-checker.d.ts.map +0 -1
  715. package/dist/src/eval-core/fact-checker.js.map +0 -1
  716. package/dist/src/eval-core/layer-gates.d.ts.map +0 -1
  717. package/dist/src/eval-core/layer-gates.js.map +0 -1
  718. package/dist/src/eval-core/mocks-runtime.d.ts.map +0 -1
  719. package/dist/src/eval-core/mocks-runtime.js +0 -559
  720. package/dist/src/eval-core/mocks-runtime.js.map +0 -1
  721. package/dist/src/eval-core/schema.d.ts.map +0 -1
  722. package/dist/src/eval-core/schema.js.map +0 -1
  723. package/dist/src/eval-core/statistics.d.ts.map +0 -1
  724. package/dist/src/eval-core/statistics.js.map +0 -1
  725. package/dist/src/eval-core/task-planner.d.ts.map +0 -1
  726. package/dist/src/eval-core/task-planner.js.map +0 -1
  727. package/dist/src/eval-core/verdict.d.ts +0 -77
  728. package/dist/src/eval-core/verdict.d.ts.map +0 -1
  729. package/dist/src/eval-core/verdict.js +0 -322
  730. package/dist/src/eval-core/verdict.js.map +0 -1
  731. package/dist/src/eval-workflows/batch-evaluation-workflow.d.ts.map +0 -1
  732. package/dist/src/eval-workflows/batch-evaluation-workflow.js.map +0 -1
  733. package/dist/src/eval-workflows/evaluation-pipeline.d.ts +0 -109
  734. package/dist/src/eval-workflows/evaluation-pipeline.d.ts.map +0 -1
  735. package/dist/src/eval-workflows/evaluation-pipeline.js +0 -373
  736. package/dist/src/eval-workflows/evaluation-pipeline.js.map +0 -1
  737. package/dist/src/eval-workflows/evaluation-preparation.d.ts.map +0 -1
  738. package/dist/src/eval-workflows/evaluation-preparation.js +0 -77
  739. package/dist/src/eval-workflows/evaluation-preparation.js.map +0 -1
  740. package/dist/src/eval-workflows/run-evaluation.d.ts +0 -151
  741. package/dist/src/eval-workflows/run-evaluation.d.ts.map +0 -1
  742. package/dist/src/eval-workflows/run-evaluation.js +0 -528
  743. package/dist/src/eval-workflows/run-evaluation.js.map +0 -1
  744. package/dist/src/executors/anthropic-api.d.ts.map +0 -1
  745. package/dist/src/executors/anthropic-api.js.map +0 -1
  746. package/dist/src/executors/claude-cli.d.ts.map +0 -1
  747. package/dist/src/executors/claude-cli.js.map +0 -1
  748. package/dist/src/executors/claude-sdk-trace.d.ts.map +0 -1
  749. package/dist/src/executors/claude-sdk-trace.js.map +0 -1
  750. package/dist/src/executors/claude-sdk.d.ts.map +0 -1
  751. package/dist/src/executors/claude-sdk.js.map +0 -1
  752. package/dist/src/executors/codex-cli-trace.d.ts.map +0 -1
  753. package/dist/src/executors/codex-cli-trace.js.map +0 -1
  754. package/dist/src/executors/codex-cli.d.ts.map +0 -1
  755. package/dist/src/executors/codex-cli.js.map +0 -1
  756. package/dist/src/executors/codex-sdk.d.ts.map +0 -1
  757. package/dist/src/executors/codex-sdk.js.map +0 -1
  758. package/dist/src/executors/gemini.d.ts.map +0 -1
  759. package/dist/src/executors/gemini.js.map +0 -1
  760. package/dist/src/executors/index.d.ts.map +0 -1
  761. package/dist/src/executors/index.js.map +0 -1
  762. package/dist/src/executors/openai-api.d.ts.map +0 -1
  763. package/dist/src/executors/openai-api.js.map +0 -1
  764. package/dist/src/executors/runtime-fingerprint.d.ts.map +0 -1
  765. package/dist/src/executors/runtime-fingerprint.js.map +0 -1
  766. package/dist/src/executors/script.d.ts.map +0 -1
  767. package/dist/src/executors/script.js.map +0 -1
  768. package/dist/src/executors/shared.d.ts +0 -194
  769. package/dist/src/executors/shared.d.ts.map +0 -1
  770. package/dist/src/executors/shared.js +0 -256
  771. package/dist/src/executors/shared.js.map +0 -1
  772. package/dist/src/grading/assertions.d.ts.map +0 -1
  773. package/dist/src/grading/assertions.js.map +0 -1
  774. package/dist/src/grading/debias-validate.d.ts.map +0 -1
  775. package/dist/src/grading/debias-validate.js.map +0 -1
  776. package/dist/src/grading/diagnostic.d.ts.map +0 -1
  777. package/dist/src/grading/diagnostic.js.map +0 -1
  778. package/dist/src/grading/gold-cli.d.ts.map +0 -1
  779. package/dist/src/grading/gold-cli.js.map +0 -1
  780. package/dist/src/grading/gold-dataset.d.ts.map +0 -1
  781. package/dist/src/grading/gold-dataset.js.map +0 -1
  782. package/dist/src/grading/human-gold.d.ts.map +0 -1
  783. package/dist/src/grading/human-gold.js.map +0 -1
  784. package/dist/src/grading/index.d.ts.map +0 -1
  785. package/dist/src/grading/index.js.map +0 -1
  786. package/dist/src/grading/judge.d.ts.map +0 -1
  787. package/dist/src/grading/judge.js.map +0 -1
  788. package/dist/src/grading/layered-scores.d.ts.map +0 -1
  789. package/dist/src/grading/layered-scores.js.map +0 -1
  790. package/dist/src/inputs/eval-config.d.ts.map +0 -1
  791. package/dist/src/inputs/eval-config.js +0 -251
  792. package/dist/src/inputs/eval-config.js.map +0 -1
  793. package/dist/src/inputs/load-samples.d.ts.map +0 -1
  794. package/dist/src/inputs/load-samples.js.map +0 -1
  795. package/dist/src/inputs/mcp-resolver.d.ts.map +0 -1
  796. package/dist/src/inputs/mcp-resolver.js.map +0 -1
  797. package/dist/src/inputs/skill-loader.d.ts +0 -27
  798. package/dist/src/inputs/skill-loader.d.ts.map +0 -1
  799. package/dist/src/inputs/skill-loader.js +0 -253
  800. package/dist/src/inputs/skill-loader.js.map +0 -1
  801. package/dist/src/inputs/url-fetcher.d.ts.map +0 -1
  802. package/dist/src/inputs/url-fetcher.js.map +0 -1
  803. package/dist/src/observability/experience.d.ts +0 -441
  804. package/dist/src/observability/experience.d.ts.map +0 -1
  805. package/dist/src/observability/experience.js +0 -2400
  806. package/dist/src/observability/experience.js.map +0 -1
  807. package/dist/src/observability/inbox-view-model.d.ts +0 -30
  808. package/dist/src/observability/inbox-view-model.d.ts.map +0 -1
  809. package/dist/src/observability/inbox-view-model.js +0 -144
  810. package/dist/src/observability/inbox-view-model.js.map +0 -1
  811. package/dist/src/observability/inbox.d.ts +0 -127
  812. package/dist/src/observability/inbox.d.ts.map +0 -1
  813. package/dist/src/observability/inbox.js +0 -755
  814. package/dist/src/observability/inbox.js.map +0 -1
  815. package/dist/src/observability/problem-patterns.d.ts +0 -52
  816. package/dist/src/observability/problem-patterns.d.ts.map +0 -1
  817. package/dist/src/observability/problem-patterns.js +0 -205
  818. package/dist/src/observability/problem-patterns.js.map +0 -1
  819. package/dist/src/observability/resolved-review.d.ts +0 -25
  820. package/dist/src/observability/resolved-review.d.ts.map +0 -1
  821. package/dist/src/observability/resolved-review.js +0 -231
  822. package/dist/src/observability/resolved-review.js.map +0 -1
  823. package/dist/src/observability/review-state.d.ts +0 -61
  824. package/dist/src/observability/review-state.d.ts.map +0 -1
  825. package/dist/src/observability/review-state.js.map +0 -1
  826. package/dist/src/observability/skill-chain-advisories.d.ts +0 -25
  827. package/dist/src/observability/skill-chain-advisories.d.ts.map +0 -1
  828. package/dist/src/observability/skill-chain-advisories.js.map +0 -1
  829. package/dist/src/observability/skill-chain.d.ts +0 -62
  830. package/dist/src/observability/skill-chain.d.ts.map +0 -1
  831. package/dist/src/observability/skill-chain.js +0 -270
  832. package/dist/src/observability/skill-chain.js.map +0 -1
  833. package/dist/src/observability/skill-health-analyzer.d.ts +0 -83
  834. package/dist/src/observability/skill-health-analyzer.d.ts.map +0 -1
  835. package/dist/src/observability/skill-health-analyzer.js +0 -238
  836. package/dist/src/observability/skill-health-analyzer.js.map +0 -1
  837. package/dist/src/observability/soft-standards.d.ts +0 -130
  838. package/dist/src/observability/soft-standards.d.ts.map +0 -1
  839. package/dist/src/observability/soft-standards.js +0 -426
  840. package/dist/src/observability/soft-standards.js.map +0 -1
  841. package/dist/src/observability/text-signals.d.ts +0 -14
  842. package/dist/src/observability/text-signals.d.ts.map +0 -1
  843. package/dist/src/observability/text-signals.js +0 -106
  844. package/dist/src/observability/text-signals.js.map +0 -1
  845. package/dist/src/observability/trace-adapter.d.ts.map +0 -1
  846. package/dist/src/observability/trace-adapter.js.map +0 -1
  847. package/dist/src/observability/trace-attribution.d.ts +0 -56
  848. package/dist/src/observability/trace-attribution.d.ts.map +0 -1
  849. package/dist/src/observability/trace-attribution.js +0 -200
  850. package/dist/src/observability/trace-attribution.js.map +0 -1
  851. package/dist/src/observability/trace-segmenter.d.ts +0 -52
  852. package/dist/src/observability/trace-segmenter.d.ts.map +0 -1
  853. package/dist/src/observability/trace-segmenter.js +0 -322
  854. package/dist/src/observability/trace-segmenter.js.map +0 -1
  855. package/dist/src/observability/trace-source.d.ts +0 -99
  856. package/dist/src/observability/trace-source.d.ts.map +0 -1
  857. package/dist/src/observability/trace-source.js +0 -502
  858. package/dist/src/observability/trace-source.js.map +0 -1
  859. package/dist/src/renderer/html-renderer.d.ts.map +0 -1
  860. package/dist/src/renderer/html-renderer.js.map +0 -1
  861. package/dist/src/renderer/layout.d.ts.map +0 -1
  862. package/dist/src/renderer/layout.js +0 -774
  863. package/dist/src/renderer/layout.js.map +0 -1
  864. package/dist/src/renderer/observation-inbox-renderer.d.ts +0 -4
  865. package/dist/src/renderer/observation-inbox-renderer.d.ts.map +0 -1
  866. package/dist/src/renderer/observation-inbox-renderer.js +0 -10366
  867. package/dist/src/renderer/observation-inbox-renderer.js.map +0 -1
  868. package/dist/src/renderer/skill-detail-renderer.d.ts +0 -15
  869. package/dist/src/renderer/skill-detail-renderer.d.ts.map +0 -1
  870. package/dist/src/renderer/skill-detail-renderer.js +0 -1244
  871. package/dist/src/renderer/skill-detail-renderer.js.map +0 -1
  872. package/dist/src/renderer/skill-health-renderer.d.ts.map +0 -1
  873. package/dist/src/renderer/skill-health-renderer.js +0 -253
  874. package/dist/src/renderer/skill-health-renderer.js.map +0 -1
  875. package/dist/src/renderer/skill-list-renderer.d.ts +0 -4
  876. package/dist/src/renderer/skill-list-renderer.d.ts.map +0 -1
  877. package/dist/src/renderer/skill-list-renderer.js +0 -334
  878. package/dist/src/renderer/skill-list-renderer.js.map +0 -1
  879. package/dist/src/renderer/summary.d.ts +0 -68
  880. package/dist/src/renderer/summary.d.ts.map +0 -1
  881. package/dist/src/renderer/summary.js +0 -1896
  882. package/dist/src/renderer/summary.js.map +0 -1
  883. package/dist/src/renderer/table.d.ts.map +0 -1
  884. package/dist/src/renderer/table.js.map +0 -1
  885. package/dist/src/renderer/test-view.d.ts.map +0 -1
  886. package/dist/src/renderer/test-view.js.map +0 -1
  887. package/dist/src/renderer/trends.d.ts.map +0 -1
  888. package/dist/src/renderer/trends.js.map +0 -1
  889. package/dist/src/server/job-store.d.ts.map +0 -1
  890. package/dist/src/server/job-store.js.map +0 -1
  891. package/dist/src/server/report-server.d.ts.map +0 -1
  892. package/dist/src/server/report-server.js +0 -894
  893. package/dist/src/server/report-server.js.map +0 -1
  894. package/dist/src/server/report-store.d.ts.map +0 -1
  895. package/dist/src/server/report-store.js.map +0 -1
  896. package/dist/src/server/skill-index.d.ts +0 -81
  897. package/dist/src/server/skill-index.d.ts.map +0 -1
  898. package/dist/src/server/skill-index.js +0 -377
  899. package/dist/src/server/skill-index.js.map +0 -1
  900. package/dist/src/server/skill-insights.d.ts +0 -101
  901. package/dist/src/server/skill-insights.d.ts.map +0 -1
  902. package/dist/src/server/skill-insights.js +0 -788
  903. package/dist/src/server/skill-insights.js.map +0 -1
  904. package/dist/src/shared/hard-rules.d.ts.map +0 -1
  905. package/dist/src/shared/hard-rules.js.map +0 -1
  906. package/dist/src/shared/llm-prompts/index.d.ts +0 -14
  907. package/dist/src/shared/llm-prompts/index.d.ts.map +0 -1
  908. package/dist/src/shared/llm-prompts/index.js +0 -35
  909. package/dist/src/shared/llm-prompts/index.js.map +0 -1
  910. package/dist/src/shared/llm-prompts/skill-health.d.ts.map +0 -1
  911. package/dist/src/shared/llm-prompts/skill-health.js.map +0 -1
  912. package/dist/src/shared/time.d.ts.map +0 -1
  913. package/dist/src/shared/time.js.map +0 -1
  914. package/dist/src/shared/tool-search.d.ts.map +0 -1
  915. package/dist/src/shared/tool-search.js.map +0 -1
  916. package/dist/src/types/doctor.d.ts +0 -157
  917. package/dist/src/types/doctor.d.ts.map +0 -1
  918. package/dist/src/types/doctor.js.map +0 -1
  919. package/dist/src/types/eval.d.ts +0 -377
  920. package/dist/src/types/eval.d.ts.map +0 -1
  921. package/dist/src/types/eval.js.map +0 -1
  922. package/dist/src/types/executor.d.ts.map +0 -1
  923. package/dist/src/types/executor.js.map +0 -1
  924. package/dist/src/types/index.d.ts +0 -8
  925. package/dist/src/types/index.d.ts.map +0 -1
  926. package/dist/src/types/index.js +0 -8
  927. package/dist/src/types/index.js.map +0 -1
  928. package/dist/src/types/judge.d.ts.map +0 -1
  929. package/dist/src/types/judge.js.map +0 -1
  930. package/dist/src/types/report.d.ts +0 -557
  931. package/dist/src/types/report.d.ts.map +0 -1
  932. package/dist/src/types/report.js.map +0 -1
  933. package/dist/src/types/shared.d.ts.map +0 -1
  934. package/dist/src/types/shared.js.map +0 -1
  935. package/dist/src/types/storage.d.ts.map +0 -1
  936. package/dist/src/types/storage.js.map +0 -1
  937. package/dist/src/util/safe-slice.d.ts +0 -23
  938. package/dist/src/util/safe-slice.d.ts.map +0 -1
  939. package/dist/src/util/safe-slice.js +0 -33
  940. package/dist/src/util/safe-slice.js.map +0 -1
  941. package/docs/prompts/llm-enhanced-review.prompt.md +0 -111
  942. /package/dist/{src/analysis → analysis}/coverage-analyzer.d.ts +0 -0
  943. /package/dist/{src/analysis → analysis}/coverage-analyzer.js +0 -0
  944. /package/dist/{src/analysis → analysis}/failure-clusterer.d.ts +0 -0
  945. /package/dist/{src/analysis → analysis}/failure-clusterer.js +0 -0
  946. /package/dist/{src/analysis → analysis}/hedging-classifier.d.ts +0 -0
  947. /package/dist/{src/analysis → analysis}/hedging-classifier.js +0 -0
  948. /package/dist/{src/analysis → analysis}/sample-diagnostics.d.ts +0 -0
  949. /package/dist/{src/analysis → analysis}/sample-diagnostics.js +0 -0
  950. /package/dist/{src/authoring → authoring}/sample-fixer.d.ts +0 -0
  951. /package/dist/{src/authoring → authoring}/sample-fixer.js +0 -0
  952. /package/dist/{src/cli → cli}/commands/eval/gold/compare.d.ts +0 -0
  953. /package/dist/{src/cli → cli}/commands/eval/gold/compare.js +0 -0
  954. /package/dist/{src/cli → cli}/commands/eval/gold/index.d.ts +0 -0
  955. /package/dist/{src/cli → cli}/commands/eval/gold/index.js +0 -0
  956. /package/dist/{src/cli → cli}/commands/eval/gold/init.d.ts +0 -0
  957. /package/dist/{src/cli → cli}/commands/eval/gold/init.js +0 -0
  958. /package/dist/{src/cli → cli}/commands/eval/gold/validate.d.ts +0 -0
  959. /package/dist/{src/cli → cli}/commands/eval/gold/validate.js +0 -0
  960. /package/dist/{src/cli → cli}/commands/eval/index.d.ts +0 -0
  961. /package/dist/{src/cli → cli}/commands/init.d.ts +0 -0
  962. /package/dist/{src/cli → cli}/commands/init.js +0 -0
  963. /package/dist/{src/cli → cli}/commands/observe/inbox.d.ts +0 -0
  964. /package/dist/{src/cli → cli}/commands/observe/index.d.ts +0 -0
  965. /package/dist/{src/cli → cli}/commands/observe/ingest.d.ts +0 -0
  966. /package/dist/{src/cli → cli}/commands/observe/show.d.ts +0 -0
  967. /package/dist/{src/cli → cli}/commands/observe/show.js +0 -0
  968. /package/dist/{src/cli → cli}/commands/studio.d.ts +0 -0
  969. /package/dist/{src/cli → cli}/index.d.ts +0 -0
  970. /package/dist/{src/cli → cli}/index.js +0 -0
  971. /package/dist/{src/cli → cli}/lib/cli-exit.d.ts +0 -0
  972. /package/dist/{src/cli → cli}/lib/cli-exit.js +0 -0
  973. /package/dist/{src/cli → cli}/lib/cmd-flags.js +0 -0
  974. /package/dist/{src/cli → cli}/lib/i18n.d.ts +0 -0
  975. /package/dist/{src/cli → cli}/lib/i18n.js +0 -0
  976. /package/dist/{src/cli → cli}/lib/progress.d.ts +0 -0
  977. /package/dist/{src/cli → cli}/lib/progress.js +0 -0
  978. /package/dist/{src/cli → cli}/lib/run-tally.d.ts +0 -0
  979. /package/dist/{src/cli → cli}/lib/run-tally.js +0 -0
  980. /package/dist/{src/cli → cli}/lib/shared.d.ts +0 -0
  981. /package/dist/{src/cli → cli}/lib/shared.js +0 -0
  982. /package/dist/{src/cli → cli}/oclif/base-command.d.ts +0 -0
  983. /package/dist/{src/cli → cli}/oclif/base-command.js +0 -0
  984. /package/dist/{src/cli → cli}/oclif/help.d.ts +0 -0
  985. /package/dist/{src/cli → cli}/oclif/help.js +0 -0
  986. /package/dist/{src/cli → cli}/oclif/i18n.d.ts +0 -0
  987. /package/dist/{src/cli → cli}/oclif/i18n.js +0 -0
  988. /package/dist/{src/cli → cli}/oclif/parsers.d.ts +0 -0
  989. /package/dist/{src/cli → cli}/oclif/parsers.js +0 -0
  990. /package/dist/{src/cli → cli}/oclif/projection.d.ts +0 -0
  991. /package/dist/{src/cli → cli}/oclif/projection.js +0 -0
  992. /package/dist/{src/cli → cli}/oclif/run.d.ts +0 -0
  993. /package/dist/{src/diagnosis → diagnosis}/observe-mapper.d.ts +0 -0
  994. /package/dist/{src/diagnosis → diagnosis}/observe-mapper.js +0 -0
  995. /package/dist/{src/diagnosis → diagnosis}/observe-producer.d.ts +0 -0
  996. /package/dist/{src/diagnosis → diagnosis}/studio-projection.js +0 -0
  997. /package/dist/{src/doctor → doctor}/fixer.d.ts +0 -0
  998. /package/dist/{src/doctor → doctor}/fixer.js +0 -0
  999. /package/dist/{src/doctor → doctor}/health/builtin-dimensions.d.ts +0 -0
  1000. /package/dist/{src/doctor → doctor}/health/builtin-dimensions.js +0 -0
  1001. /package/dist/{src/doctor → doctor}/health/composer.d.ts +0 -0
  1002. /package/dist/{src/doctor → doctor}/health/dimension-registry.d.ts +0 -0
  1003. /package/dist/{src/doctor → doctor}/health/dimension-registry.js +0 -0
  1004. /package/dist/{src/doctor → doctor}/health/dimension-spec.js +0 -0
  1005. /package/dist/{src/doctor → doctor}/health/parser.d.ts +0 -0
  1006. /package/dist/{src/doctor → doctor}/health/parser.js +0 -0
  1007. /package/dist/{src/doctor → doctor}/health/prompt-builder.d.ts +0 -0
  1008. /package/dist/{src/doctor → doctor}/health/prompt-builder.js +0 -0
  1009. /package/dist/{src/doctor → doctor}/health/register.d.ts +0 -0
  1010. /package/dist/{src/doctor → doctor}/health/register.js +0 -0
  1011. /package/dist/{src/doctor → doctor}/index.d.ts +0 -0
  1012. /package/dist/{src/doctor → doctor}/index.js +0 -0
  1013. /package/dist/{src/doctor → doctor}/preflight.d.ts +0 -0
  1014. /package/dist/{src/doctor → doctor}/preflight.js +0 -0
  1015. /package/dist/{src/doctor → doctor}/rules.d.ts +0 -0
  1016. /package/dist/{src/eval-core → eval-core}/cache.d.ts +0 -0
  1017. /package/dist/{src/eval-core → eval-core}/cache.js +0 -0
  1018. /package/dist/{src/eval-core → eval-core}/comparability.d.ts +0 -0
  1019. /package/dist/{src/eval-core → eval-core}/comparability.js +0 -0
  1020. /package/dist/{src/eval-core → eval-core}/dependency-checker.js +0 -0
  1021. /package/dist/{src/eval-core → eval-core}/evaluation-execution.d.ts +0 -0
  1022. /package/dist/{src/eval-core → eval-core}/evaluation-execution.js +0 -0
  1023. /package/dist/{src/eval-core → eval-core}/evaluation-job.d.ts +0 -0
  1024. /package/dist/{src/eval-core → eval-core}/evaluation-job.js +0 -0
  1025. /package/dist/{src/eval-core → eval-core}/evaluation-reporting.d.ts +0 -0
  1026. /package/dist/{src/eval-core → eval-core}/execution-strategy.d.ts +0 -0
  1027. /package/dist/{src/eval-core → eval-core}/fact-checker.d.ts +0 -0
  1028. /package/dist/{src/eval-core → eval-core}/fact-checker.js +0 -0
  1029. /package/dist/{src/eval-core → eval-core}/layer-gates.d.ts +0 -0
  1030. /package/dist/{src/eval-core → eval-core}/layer-gates.js +0 -0
  1031. /package/dist/{src/eval-core → eval-core}/mock-hook.cjs +0 -0
  1032. /package/dist/{src/eval-core → eval-core}/mocks-runtime.d.ts +0 -0
  1033. /package/dist/{src/eval-core → eval-core}/schema.d.ts +0 -0
  1034. /package/dist/{src/eval-core → eval-core}/schema.js +0 -0
  1035. /package/dist/{src/eval-core → eval-core}/statistics.d.ts +0 -0
  1036. /package/dist/{src/eval-core → eval-core}/statistics.js +0 -0
  1037. /package/dist/{src/eval-core → eval-core}/task-planner.d.ts +0 -0
  1038. /package/dist/{src/eval-core → eval-core}/task-planner.js +0 -0
  1039. /package/dist/{src/eval-workflows → eval-workflows}/batch-evaluation-workflow.d.ts +0 -0
  1040. /package/dist/{src/eval-workflows → eval-workflows}/batch-evaluation-workflow.js +0 -0
  1041. /package/dist/{src/eval-workflows → eval-workflows}/evaluation-preparation.d.ts +0 -0
  1042. /package/dist/{src/executors → executors}/anthropic-api.d.ts +0 -0
  1043. /package/dist/{src/executors → executors}/anthropic-api.js +0 -0
  1044. /package/dist/{src/executors → executors}/claude-cli.d.ts +0 -0
  1045. /package/dist/{src/executors → executors}/claude-cli.js +0 -0
  1046. /package/dist/{src/executors → executors}/claude-sdk-trace.d.ts +0 -0
  1047. /package/dist/{src/executors → executors}/claude-sdk-trace.js +0 -0
  1048. /package/dist/{src/executors → executors}/claude-sdk.d.ts +0 -0
  1049. /package/dist/{src/executors → executors}/claude-sdk.js +0 -0
  1050. /package/dist/{src/executors → executors}/codex-cli-trace.d.ts +0 -0
  1051. /package/dist/{src/executors → executors}/codex-cli-trace.js +0 -0
  1052. /package/dist/{src/executors → executors}/codex-cli.d.ts +0 -0
  1053. /package/dist/{src/executors → executors}/codex-cli.js +0 -0
  1054. /package/dist/{src/executors → executors}/codex-sdk.d.ts +0 -0
  1055. /package/dist/{src/executors → executors}/codex-sdk.js +0 -0
  1056. /package/dist/{src/executors → executors}/gemini.d.ts +0 -0
  1057. /package/dist/{src/executors → executors}/gemini.js +0 -0
  1058. /package/dist/{src/executors → executors}/index.d.ts +0 -0
  1059. /package/dist/{src/executors → executors}/index.js +0 -0
  1060. /package/dist/{src/executors → executors}/openai-api.d.ts +0 -0
  1061. /package/dist/{src/executors → executors}/openai-api.js +0 -0
  1062. /package/dist/{src/executors → executors}/runtime-fingerprint.d.ts +0 -0
  1063. /package/dist/{src/executors → executors}/runtime-fingerprint.js +0 -0
  1064. /package/dist/{src/executors → executors}/script.d.ts +0 -0
  1065. /package/dist/{src/executors → executors}/script.js +0 -0
  1066. /package/dist/{src/grading → grading}/assertions.d.ts +0 -0
  1067. /package/dist/{src/grading → grading}/assertions.js +0 -0
  1068. /package/dist/{src/grading → grading}/debias-validate.d.ts +0 -0
  1069. /package/dist/{src/grading → grading}/debias-validate.js +0 -0
  1070. /package/dist/{src/grading → grading}/diagnostic.d.ts +0 -0
  1071. /package/dist/{src/grading → grading}/diagnostic.js +0 -0
  1072. /package/dist/{src/grading → grading}/gold-cli.d.ts +0 -0
  1073. /package/dist/{src/grading → grading}/gold-cli.js +0 -0
  1074. /package/dist/{src/grading → grading}/gold-dataset.d.ts +0 -0
  1075. /package/dist/{src/grading → grading}/gold-dataset.js +0 -0
  1076. /package/dist/{src/grading → grading}/human-gold.d.ts +0 -0
  1077. /package/dist/{src/grading → grading}/human-gold.js +0 -0
  1078. /package/dist/{src/grading → grading}/index.d.ts +0 -0
  1079. /package/dist/{src/grading → grading}/index.js +0 -0
  1080. /package/dist/{src/grading → grading}/judge.d.ts +0 -0
  1081. /package/dist/{src/grading → grading}/judge.js +0 -0
  1082. /package/dist/{src/grading → grading}/layered-scores.d.ts +0 -0
  1083. /package/dist/{src/grading → grading}/layered-scores.js +0 -0
  1084. /package/dist/{src/inputs → inputs}/eval-config.d.ts +0 -0
  1085. /package/dist/{src/inputs → inputs}/load-samples.d.ts +0 -0
  1086. /package/dist/{src/inputs → inputs}/load-samples.js +0 -0
  1087. /package/dist/{src/inputs → inputs}/mcp-resolver.d.ts +0 -0
  1088. /package/dist/{src/inputs → inputs}/mcp-resolver.js +0 -0
  1089. /package/dist/{src/inputs → inputs}/url-fetcher.d.ts +0 -0
  1090. /package/dist/{src/inputs → inputs}/url-fetcher.js +0 -0
  1091. /package/dist/{src/observability → observability}/review-state.js +0 -0
  1092. /package/dist/{src/observability → observability}/skill-chain-advisories.js +0 -0
  1093. /package/dist/{src/observability → observability}/trace-adapter.d.ts +0 -0
  1094. /package/dist/{src/observability → observability}/trace-adapter.js +0 -0
  1095. /package/dist/{src/renderer → renderer}/html-renderer.d.ts +0 -0
  1096. /package/dist/{src/renderer → renderer}/html-renderer.js +0 -0
  1097. /package/dist/{src/renderer → renderer}/layout.d.ts +0 -0
  1098. /package/dist/{src/renderer → renderer}/skill-health-renderer.d.ts +0 -0
  1099. /package/dist/{src/renderer → renderer}/table.d.ts +0 -0
  1100. /package/dist/{src/renderer → renderer}/table.js +0 -0
  1101. /package/dist/{src/renderer → renderer}/test-view.d.ts +0 -0
  1102. /package/dist/{src/renderer → renderer}/test-view.js +0 -0
  1103. /package/dist/{src/renderer → renderer}/trends.d.ts +0 -0
  1104. /package/dist/{src/renderer → renderer}/trends.js +0 -0
  1105. /package/dist/{src/server → server}/job-store.d.ts +0 -0
  1106. /package/dist/{src/server → server}/job-store.js +0 -0
  1107. /package/dist/{src/server → server}/report-server.d.ts +0 -0
  1108. /package/dist/{src/server → server}/report-store.d.ts +0 -0
  1109. /package/dist/{src/server → server}/report-store.js +0 -0
  1110. /package/dist/{src/shared → shared}/hard-rules.d.ts +0 -0
  1111. /package/dist/{src/shared → shared}/hard-rules.js +0 -0
  1112. /package/dist/{src/shared → shared}/llm-prompts/skill-health.d.ts +0 -0
  1113. /package/dist/{src/shared → shared}/llm-prompts/skill-health.js +0 -0
  1114. /package/dist/{src/shared → shared}/time.d.ts +0 -0
  1115. /package/dist/{src/shared → shared}/time.js +0 -0
  1116. /package/dist/{src/shared → shared}/tool-search.d.ts +0 -0
  1117. /package/dist/{src/shared → shared}/tool-search.js +0 -0
  1118. /package/dist/{src/types → types}/doctor.js +0 -0
  1119. /package/dist/{src/types → types}/eval.js +0 -0
  1120. /package/dist/{src/types → types}/executor.d.ts +0 -0
  1121. /package/dist/{src/types → types}/executor.js +0 -0
  1122. /package/dist/{src/types → types}/judge.d.ts +0 -0
  1123. /package/dist/{src/types → types}/judge.js +0 -0
  1124. /package/dist/{src/types → types}/report.js +0 -0
  1125. /package/dist/{src/types → types}/shared.d.ts +0 -0
  1126. /package/dist/{src/types → types}/shared.js +0 -0
  1127. /package/dist/{src/types → types}/storage.d.ts +0 -0
  1128. /package/dist/{src/types → types}/storage.js +0 -0
package/README.md CHANGED
@@ -8,34 +8,32 @@
8
8
 
9
9
  **English** | [简体中文](./README.zh.md)
10
10
 
11
- **omk** — The knowledge you give your LLM what's it actually worth?
12
- omk answers with objective data, not gut feeling.
11
+ **Did your prompt actually get better?**
12
+ A/B test your prompts and skills with statistical rigor — bootstrap CI and length-debias on by default, Krippendorff α the moment you add a gold set.
13
13
 
14
- **Evaluation framework for LLM knowledge inputs** prompts, RAG corpora, skills, agent workflows. Fix the model, vary the artifact.
15
-
16
- <a id="statistical-rigor"></a>
17
- > Built-in: Bootstrap CI · Krippendorff α (judge ↔ human) · length-debias · saturation curves · construct-validity isolation. [Why these matter →](docs/statistical-rigor.md)
18
-
19
- ![omk report](./assets/screenshots/report-overview.png)
14
+ ![omk reportverdict pill "v2 is clearly better than v1 ready to ship"](./assets/screenshots/report-overview.png)
20
15
 
21
16
  ## Quick start
22
17
 
23
18
  ```bash
24
- npm i oh-my-knowledge -g
25
- omk init my-eval && cd my-eval
26
- # edit skills/code-review-v1/SKILL.md and skills/code-review-v2/SKILL.md with your two versions
27
- omk eval --control code-review-v1 --treatment code-review-v2 # → HTML report with verdict in 5 minutes
19
+ npm i -g oh-my-knowledge
20
+ omk init demo && cd demo
21
+ omk eval --control code-review-v1 --treatment code-review-v2
28
22
  ```
29
23
 
24
+ That's it — no editing required. `omk init` scaffolds two skill variants and three sample cases; `omk eval` runs the controlled A/B and opens an HTML report with a one-line verdict in about five minutes.
25
+
26
+ > The CLI notifies you when a newer version is available (at most once per 20h); set `OMK_SKIP_UPDATE_CHECK=1` to silence it permanently.
27
+
30
28
  Walkthrough: [5-minute quickstart guide](docs/quickstart-skill-eval.md) (recommended for first-time users).
31
29
 
32
- Deeper: [use inside Claude Code / Codex](#use-inside-ai-coding-agents) · [`omk eval` flags](#omk-eval) · [artifact directory layout](#artifact-directory-layout) · [`--lang` / `OMK_LANG`](#environment-variables)
30
+ Deeper: [CLI reference](docs/reference/cli.md) · [how it works](docs/explanation/architecture.md) · [eval sample format](docs/reference/eval-sample-format.md) · [executors & artifact layout](docs/reference/executors.md)
33
31
 
34
32
  ## Use inside AI Coding Agents
35
33
 
36
34
  ### Use inside Claude Code
37
35
 
38
- When the `omk` skill is available in Claude Code, you can invoke it directly like this:
36
+ When the `omk` skill is available in Claude Code, you can invoke it directly:
39
37
 
40
38
  ```bash
41
39
  /omk eval # evaluate the artifact(s) in the current project
@@ -43,11 +41,11 @@ When the `omk` skill is available in Claude Code, you can invoke it directly lik
43
41
  /omk sample # generate or fill test cases
44
42
  ```
45
43
 
46
- These slash commands are natural-language entry points — the agent reads the conversation context to figure out which skill to operate on, so you usually don't pass the path explicitly. (See the Codex section below for the literal `omk evolve <skill>` CLI form.) You can also just say "compare v1 vs v2 for me" or "improve this artifact" and omk picks the right command.
44
+ These slash commands are natural-language entry points — the agent reads the conversation context to figure out which skill to operate on. You can also just say "compare v1 vs v2 for me" or "improve this artifact" and omk picks the right command.
47
45
 
48
46
  ### Use inside Codex
49
47
 
50
- Codex does not support Claude Code style `/omk ...` slash commands by default. In Codex, the usual pattern is to ask the agent to run the `omk` CLI directly, for example:
48
+ Codex does not support Claude Code style `/omk ...` slash commands. Ask the agent to run the `omk` CLI directly:
51
49
 
52
50
  ```bash
53
51
  omk eval
@@ -61,22 +59,12 @@ You can also describe the goal in natural language, such as "compare v1 vs v2" o
61
59
 
62
60
  Teams doing knowledge engineering produce lots of knowledge artifacts (skills today, but also prompts, agents, workflows…). When someone asks "why is v2 better than v1", you need objective data instead of gut feeling. `oh-my-knowledge` solves this with controlled experiments: **same model, same test samples, only the knowledge artifact changes.**
63
61
 
64
- ## Key features
65
-
66
- - **LLM health audit** — `omk doctor` runs a single LLM session that emits a multi-dimension report; 7 builtin dimensions (trigger & boundary / doc clarity / instruction precision / dependency / tool conventions / security & compliance / example completeness) each get a *healthy / sub-healthy / unhealthy / N-A* grade plus findings and suggestions; dimensions are extensible, and `--html` produces a visual report. Pass `--static-only` for an offline mode (CI nodes without an LLM, debugging without network) that runs the static checks only (readability / metadata / dependencies / samples contract). `omk eval` still runs static readability / metadata / dependency gates internally to protect eval quality (separation of roles: doctor = audit, eval = evaluate)
67
- - **Controlled-variable offline eval** — fix the model and samples, vary only the artifact; works with Claude Code skills, CLAUDE.md prompts, RAG knowledge bases, or any markdown-based instruction
68
- - **Six-dimension scoring** — separate signals for Fact / Behavior / LLM-judge / Cost / Efficiency / Stability, so a regression in one axis isn't hidden by gains in another
69
- - **Production session observability** — parse Claude Code session JSONL traces, measure per-skill failure rate, latency, token cost, and knowledge-gap signals on real user sessions
70
- - **Knowledge-gap detection** — severity-weighted signals (explicit markers / failed searches / hedging language / repeated failures) quantify risk exposure instead of claiming completeness
71
- - **Pre-merge CI gate** — `omk eval` enforces three-layer all-pass (fact + behavior + llm-judge) semantics, catching single-layer regressions a composite score would hide
72
- - **One-line ship/no-ship verdict** — `omk eval` aggregates bootstrap CI / three-layer ci-gate / saturation / human α into a six-tier verdict (PROGRESS / CAUTIOUS / REGRESS / NOISE / UNDERPOWERED / SOLO) plus an action recommendation; the exit code reflects whether to ship
73
-
74
62
  ## Why omk over alternatives
75
63
 
76
64
  | | omk | promptfoo | DeepEval | LangSmith |
77
65
  |--|--|--|--|--|
78
66
  | Bootstrap CI | ✓ default | ✗ | ✗ | ✗ |
79
- | Krippendorff α (judge ↔ human) | ✓ default | ✗ | ✗ | ✗ |
67
+ | Krippendorff α (judge ↔ human) | ✓ with gold set | ✗ | ✗ | ✗ |
80
68
  | Length-debias judge prompt | ✓ default | ✗ | ✗ | ✗ |
81
69
  | Saturation curve | ✓ | ✗ | ✗ | ✗ |
82
70
  | Three-layer scoring isolation | ✓ | ✗ | partial | ✗ |
@@ -84,9 +72,9 @@ Teams doing knowledge engineering produce lots of knowledge artifacts (skills to
84
72
  | Native Claude Code skill | ✓ | ✗ | ✗ | ✗ |
85
73
  | Hosted SaaS dashboard | ✗ | ✗ | ✓ | ✓ |
86
74
 
87
- omk's moat is **default-on safety net** — Bootstrap CI, judge ↔ human α, and length-debias aren't advanced flags; they're the default. Other tools let you opt into confidence intervals; omk makes them unavoidable. Need a hosted SaaS dashboard? Choose LangSmith. Want quick local prompt iteration without statistics? Choose promptfoo. **Shipping to production and someone will ask "why should I trust this number?" Choose omk.**
75
+ omk's moat is **default-on safety net** — Bootstrap CI and length-debias aren't advanced flags; they're the default, and judge ↔ human α comes free the moment you add a gold set. Other tools let you opt into confidence intervals; omk makes them unavoidable. Need a hosted SaaS dashboard? Choose LangSmith. Want quick local prompt iteration without statistics? Choose promptfoo. **Shipping to production and someone will ask "why should I trust this number?" Choose omk.**
88
76
 
89
- RAG-specific evals: see RAGAS (separate niche, complementary to omk). Full comparison with 7 tools across 25+ dimensions: [docs/comparison.md](docs/comparison.md).
77
+ RAG-specific evals: see RAGAS (separate niche, complementary to omk). Full comparison with 7 tools across 25+ dimensions: [docs/reference/comparison.md](docs/reference/comparison.md).
90
78
 
91
79
  ## Features
92
80
 
@@ -94,830 +82,33 @@ RAG-specific evals: see RAGAS (separate niche, complementary to omk). Full compa
94
82
  |---|---|
95
83
  | **One-line verdict** | `omk eval` six-tier verdict + ship recommendation + exit-code routing; HTML pill shares the same rules |
96
84
  | **Six-dim evaluation** | Fact / Behavior / LLM-judge / Cost / Efficiency / Stability shown independently |
97
- | **Multi-executor** | Claude CLI / Claude SDK / Codex CLI / Codex SDK / OpenAI / Gemini / any custom command |
98
- | **21+ assertion types** | substring, regex, JSON Schema, ROUGE/BLEU/Levenshtein similarity, agent tool-call assertions, semantic similarity, custom JS, and more |
99
- | **Statistical rigor** | Bootstrap CI / Krippendorff α / length-debias / saturation curve — all on by default. [Details →](docs/statistical-rigor.md) |
100
- | **RAG metrics** | `faithfulness` / `answer_relevancy` / `context_recall` — anti-hallucination + answer relevance + context coverage; auto-inherits length-debias |
101
- | **Hard budget caps** | `--budget-usd / --budget-per-sample-usd / --budget-per-sample-ms` abort on total-cost overrun, flag per-sample overruns; partial report persisted |
102
- | **Construct-validity isolation** | `--strict-baseline` (default ON) cuts three contamination channels so baseline doesn't silently see the skill it's being compared against: (1) SDK skill auto-discovery, (2) subagent Skill tool, (3) cwd file-system access via the `skills/<name>/` symlink that's normally there for the treatment variant. eval.yaml `allowedSkills` for per-variant whitelists |
103
- | **Sample design science** | Sample schema with `capability` / `difficulty` / `construct` / `provenance` metadata fields (HF Dataset Cards style); studio surfaces coverage breakdown plus `rubric_clarity_low` / `capability_thin` flags. `omk sample` auto-stamps provenance on generated cases. See [docs/sample-design-spec.md](docs/sample-design-spec.md) for the 8 industry-gap mapping |
85
+ | **Multi-executor** | Claude CLI / Claude SDK / Codex CLI / Codex SDK / OpenAI / Gemini / Anthropic API / any custom command |
86
+ | **30+ assertion types** | substring, regex, JSON Schema, ROUGE/BLEU/Levenshtein similarity, agent tool-call assertions, semantic similarity, custom JS |
87
+ | **Statistical rigor** | Bootstrap CI / length-debias / saturation curve on by default; Krippendorff α auto-computed with a gold set. [Details →](docs/explanation/statistical-rigor.md) |
88
+ | **RAG metrics** | `faithfulness` / `answer_relevancy` / `context_recall` — anti-hallucination + answer relevance + context coverage |
89
+ | **LLM health audit** | `omk doctor` grades 7 builtin dimensions; `--static-only` runs offline without an LLM |
90
+ | **Production observability** | parse Claude Code session JSONL traces; measure per-skill failure rate / latency / cost / knowledge-gap signals |
91
+ | **Knowledge-gap detection** | severity-weighted signals quantify risk exposure instead of claiming completeness |
92
+ | **Construct-validity isolation** | `--strict-baseline` (default ON) cuts three contamination channels so baseline doesn't silently see the skill it's being compared against |
93
+ | **Sample design science** | sample schema with `capability` / `difficulty` / `construct` / `provenance` metadata (HF Dataset Cards style); studio surfaces coverage breakdown plus `rubric_clarity_low` / `capability_thin` flags. [docs/specs/sample-design-spec.md](docs/specs/sample-design-spec.md) |
104
94
  | **Multi-judge ensemble** | `--judge-models claude:opus,openai:gpt-4o` cross-vendor scoring + agreement metrics |
105
- | **MCP URL fetching** | pull content from private-doc URLs via an MCP server (SSO-protected knowledge bases, etc.) |
106
95
  | **Blind A/B** | `--blind` hides variant names; HTML report has a reveal button |
107
96
  | **Multi-run variance** | `--repeat N` repeats the eval and computes mean / SD / CI / t-test |
108
- | **Parallel execution** | `--concurrency N` runs N tasks at once |
109
- | **Assertion negation + composition** | universal `not: true` field + `assert-set` (any/all) with arbitrary nesting |
97
+ | **MCP URL fetching** | pull content from private-doc URLs via an MCP server (SSO-protected knowledge bases, etc.) |
110
98
  | **Auto analysis** | detects low-discrimination assertions, flat scores, all-pass / all-fail, expensive samples |
111
99
  | **Traceability** | reports carry CLI version, Node version, artifact version fingerprint, judge prompt hash |
112
100
  | **EN / ZH switch** | one-click language toggle in the HTML report |
113
101
 
114
- ## How it works
115
-
116
- Core idea: **fix the model and the samples, vary only the artifact and runtime context**, use interleaved scheduling to cancel time drift, score via assertions + LLM judge (dual channel), then layer on knowledge-gap signals to quantify risk exposure.
117
-
118
- ```mermaid
119
- flowchart TD
120
- subgraph Input["① Input"]
121
- S["eval-samples<br/>(JSON / YAML)"]
122
- A["artifacts<br/>skills/*.md · SKILL.md<br/>baseline · git:name · @cwd"]
123
- end
124
-
125
- subgraph Prep["② Preprocess (resolve & fetch)"]
126
- V["variant resolution<br/>variant → artifact + runtime context<br/>(cwd / project CLAUDE.md / local skills)"]
127
- U["URL fetching<br/>URLs in prompt / context<br/>MCP Server(private docs) → HTTP"]
128
- end
129
-
130
- subgraph Schedule["③ Interleaved + concurrent scheduling"]
131
- Q["s1-v1 → s1-v2 → s2-v1 → s2-v2 …<br/>--concurrency N · --repeat N"]
132
- end
133
-
134
- subgraph Exec["④ Executor (fixed model)"]
135
- E["claude / claude-sdk / codex / openai / gemini<br/>anthropic-api / openai-api / custom"]
136
- T["claude-sdk / codex extract<br/>turns / toolCalls trace"]
137
- E -.-> T
138
- end
139
-
140
- subgraph Score["⑤ Dual-channel scoring"]
141
- AS["assertions (18 types)<br/>content / structure / cost / latency<br/>agent: tools_called · turns_min …"]
142
- LS["LLM judge<br/>rubric · dimensions (independent per-dim scores)"]
143
- CS["composite score<br/>mean of assertion & LLM when both present"]
144
- AS --> CS
145
- LS --> CS
146
- end
147
-
148
- subgraph Analyze["⑥ Auto analysis + knowledge gaps"]
149
- D["low-discrimination / flat scores / all-pass or all-fail<br/>expensive samples · variance · t-test"]
150
- G["knowledge-gap signals<br/>(quantify risk exposure, not completeness proof)"]
151
- end
152
-
153
- subgraph Report["⑦ Report"]
154
- R["Six dims: Fact / Behavior / LLM-judge / Cost / Efficiency / Stability<br/>JSON + HTML · top verdict pill · blind reveal<br/>CLI/Node/version fingerprint traceable"]
155
- end
156
-
157
- S --> U
158
- A --> V
159
- V --> Q
160
- U --> Q
161
- Q --> E
162
- T --> AS
163
- E --> AS
164
- E --> LS
165
- CS --> D
166
- CS --> G
167
- D --> R
168
- G --> R
169
- ```
170
-
171
- **Key design choices:**
172
-
173
- - **Interleaved scheduling** removes time drift: different variants of the same sample are dispatched alternately rather than "all of v1 then all of v2", so model load / network jitter can't be mis-attributed to the artifact.
174
- - **variant = artifact + runtime context**: `name@cwd` lets control groups explicitly declare the "project directory" input, separating "project-level accumulated knowledge" from "explicit artifact injection".
175
- - **Dual-channel scoring is complementary**: assertions catch deterministic defects (must call tool X, must contain field Y); the LLM judge catches subjective quality (readability, completeness). Mean is taken when both are present.
176
- - **Knowledge-gap signals** are not part of the score — they are an independent tracking channel that tells you "how much risk exposure this evaluation covered", for convergence tracking, not as a completeness proof.
177
-
178
- ## Eval sample format
179
-
180
- Supports JSON and YAML (`eval-samples.json`, `eval-samples.yaml`, `eval-samples.yml`).
181
-
182
- ```json
183
- [
184
- {
185
- "sample_id": "s001",
186
- "prompt": "Review this code for security issues",
187
- "context": "function auth(u, p) { db.query('SELECT * FROM users WHERE name=' + u); }",
188
- "rubric": "Should identify SQL injection risk and recommend parameterized queries",
189
- "assertions": [
190
- { "type": "contains", "value": "SQL injection", "weight": 1 },
191
- { "type": "contains", "value": "parameterized", "weight": 1 },
192
- { "type": "not_contains", "value": "looks fine", "weight": 0.5 }
193
- ],
194
- "dimensions": {
195
- "security": "did it identify the injection vulnerability?",
196
- "actionability": "did it give directly usable fix code?"
197
- }
198
- }
199
- ]
200
- ```
201
-
202
- ### Fields
203
-
204
- | Field | Type | Required | Description |
205
- |---|---|---|---|
206
- | `sample_id` | `string` | **yes** | Unique sample ID |
207
- | `prompt` | `string` | **yes** | User prompt sent to the model |
208
- | `context` | `string` | no | Extra context (e.g. code). Wrapped in a code block and appended to the prompt. URLs are auto-fetched at runtime. |
209
- | `rubric` | `string` | no | Scoring guideline for the LLM judge (1-5 scale) |
210
- | `assertions` | `array` | no | Assertion checks; see [assertion types](#assertion-types) |
211
- | `assertions[].type` | `string` | **yes** | Assertion type |
212
- | `assertions[].value` | `string\|number` | depends | Check value (required for `contains`, `min_length`, `cost_max`, etc.) |
213
- | `assertions[].values` | `array` | depends | String array (required for `contains_all`, `contains_any`) |
214
- | `assertions[].pattern` | `string` | depends | Regex pattern (required for `regex`) |
215
- | `assertions[].flags` | `string` | no | Regex flags (default `"i"`) |
216
- | `assertions[].schema` | `object` | depends | JSON Schema object (required for `json_schema`, via [ajv](https://ajv.js.org/)) |
217
- | `assertions[].reference` | `string` | depends | Reference text (required for `semantic_similarity`) |
218
- | `assertions[].threshold` | `number` | no | Pass threshold for semantic similarity (default 3) |
219
- | `assertions[].fn` | `string` | depends | Path to a custom assertion JS file (required for `custom`) |
220
- | `assertions[].weight` | `number` | no | Weight (default 1) |
221
- | `dimensions` | `object` | no | Multi-dimension scoring; key = dimension name, value = scoring guideline |
222
-
223
- ### URL auto-fetching
224
-
225
- URLs in `prompt` and `context` are auto-fetched before evaluation and inlined into the text. Useful when referencing online docs, API references, etc.:
226
-
227
- ```json
228
- {
229
- "sample_id": "s001",
230
- "prompt": "Generate test cases from this PRD: https://wiki.example.com/prd/feature-x"
231
- }
232
- ```
233
-
234
- At runtime, URLs are replaced with the actual content. Fetch order: MCP Server first for matching URLs (e.g. SSO-protected private docs), then plain HTTP for the rest. URLs already resolved by MCP are not re-fetched via HTTP.
235
-
236
- **Private-doc URLs**: drop a `.mcp.json` config file into the project dir, or pass `--mcp-config <path>`:
237
-
238
- ```json
239
- {
240
- "mcpServers": {
241
- "docs": {
242
- "command": "npx",
243
- "args": ["@example/docs-mcp-server"],
244
- "env": { "DOCS_API_TOKEN": "xxx" },
245
- "urlPatterns": ["docs.example.com"],
246
- "fetchTool": {
247
- "name": "fetch_doc",
248
- "urlTransform": {
249
- "regex": "docs\\.example\\.com/([^/]+/[^/]+)/([^/?#]+)",
250
- "params": { "namespace": "$1", "slug": "$2" }
251
- },
252
- "contentExtract": "data.body"
253
- }
254
- }
255
- }
256
- }
257
- ```
258
-
259
- **Public URLs**: fetched via plain HTTP. If they require auth, make sure the shell already has network access configured (VPN, proxy, etc.).
260
-
261
- ### Scoring strategy
262
-
263
- #### 1. Assertion score
264
-
265
- Rule-based local checks; each assertion yields pass/fail.
266
-
267
- **Formula:**
268
-
269
- - Pass rate = sum of passed assertion weights / total weight (0–1)
270
- - Score = 1 + pass_rate × 4 (mapped to 1–5)
271
- - Example: 3 assertions (weight 1 each), 2 pass → pass rate 2/3 → score = 1 + 0.67 × 4 = **3.67**
272
-
273
- #### 2. Rubric / Dimensions score
274
-
275
- The judge model (default `haiku`) scores 1–5 against the rubric. In `dimensions` mode, each dimension is scored independently and then averaged.
276
-
277
- #### 3. Composite score
278
-
279
- | Condition | Formula |
280
- |---|---|
281
- | Only assertions | `assertionScore` |
282
- | Only LLM judge | `llmScore` |
283
- | Both present | `(assertionScore + llmScore) / 2` |
284
- | Neither | `0` |
285
-
286
- ### Assertion types
287
-
288
- **Deterministic assertions (21+ total):**
289
-
290
- | Type | Description |
291
- |---|---|
292
- | `contains` / `not_contains` | substring must / must-not appear |
293
- | `regex` | regex match |
294
- | `min_length` / `max_length` | length bounds |
295
- | `json_valid` / `json_schema` | JSON validation |
296
- | `starts_with` / `ends_with` | prefix / suffix |
297
- | `equals` / `not_equals` | exact match |
298
- | `word_count_min` / `word_count_max` | word-count bounds |
299
- | `contains_all` / `contains_any` | multi-value match |
300
- | `cost_max` / `latency_max` | cost / latency caps |
301
- | `tools_called` / `tools_not_called` / `tools_count_min` / `tools_count_max` | agent tool-call assertions |
302
- | `tool_output_contains` / `tool_input_contains` | match content of a tool's input or output |
303
- | `turns_min` / `turns_max` | conversation-turn bounds |
304
- | `rouge_n_min` | ROUGE-N recall ≥ threshold (`reference` field holds the gold text; `n` defaults to 1; `threshold` defaults to 0.5) |
305
- | `levenshtein_max` | edit distance ≤ value (for "output should be near-identical to reference") |
306
- | `bleu_min` | BLEU-4 ≥ threshold (unsmoothed; degenerates to 0 on short text) |
307
- | `faithfulness` | output stays grounded in `sample.context` (anti-hallucination); LLM judge 1-5; threshold defaults to 3 |
308
- | `answer_relevancy` | output directly answers `sample.prompt`; catches dodging, topic drift, verbosity; threshold defaults to 3 |
309
- | `context_recall` | gold facts in `sample.context` are actually used in the output; `reference` may explicitly enumerate gold facts; threshold defaults to 3 |
310
- | `semantic_similarity` | LLM-based holistic semantic similarity (complementary to the three RAG metrics above) |
311
- | `custom` | custom JS function (30 s timeout) |
312
-
313
- **Universal modifier:**
314
-
315
- Any assertion takes `not: true` to invert (replaces paired `not_contains` / `not_equals` etc; legacy types remain as aliases):
316
-
317
- ```yaml
318
- - type: regex
319
- pattern: "TODO|FIXME"
320
- not: true # output must NOT contain TODO/FIXME
321
- ```
322
-
323
- **Composition (assert-set):**
324
-
325
- `assert-set` combines child assertions with `any` (OR) or `all` (AND) and supports nesting:
326
-
327
- ```yaml
328
- - type: assert-set
329
- mode: any # at least one child must pass (mode: 'all' = all must pass)
330
- children:
331
- - { type: contains, value: "parameterized" }
332
- - { type: contains, value: "prepared statement" }
333
- - { type: regex, pattern: "bind\\(.*\\?" }
334
- ```
335
-
336
- Children can independently use `not: true`; nested `assert-set`s can express any boolean shape.
337
-
338
- ### Custom assertion
339
-
340
- ```js
341
- // my-assertion.mjs
342
- export default function(output, { sample, assertion }) {
343
- return { pass: output.includes('SQL'), message: 'checked for SQL keyword' };
344
- }
345
- ```
346
-
347
- ## Six-dim evaluation
348
-
349
- Reports display results across six independent dimensions. The three scoring layers — Fact / Behavior / LLM-judge — are shown separately so you see **which layer regressed** instead of a single composite number:
350
-
351
- | Dimension | Metric | Description |
352
- |---|---|---|
353
- | 📋 **Fact** | fact-assertion pass rate | rule-verifiable assertions like `contains` / `json_schema` / `fact_check`, mapped to 1-5 |
354
- | 🛠️ **Behavior** | behavior-assertion pass rate | execution-compliance assertions like `tools_called` / `tool_output_contains` / `turns_max` |
355
- | 💬 **LLM-judge** | rubric score | 1-5 scored by the judge model against a predefined rubric; subjective, catches what rules miss |
356
- | 💰 **Cost** | total cost, input/output tokens | API cost based on token usage and model pricing |
357
- | ⚡ **Efficiency** | average latency (ms) | end-to-end latency from request to full response |
358
- | 🛡️ **Stability** | CV (coefficient of variation) | score consistency across repeated runs (`--repeat ≥ 2`); single-run shows `—`, **honestly acknowledging what can't be measured** |
359
-
360
- ## CLI reference
361
-
362
- omk exposes a workflow CLI for knowledge artifacts. Seven top-level commands cover the full loop: `init` (scaffold) · `doctor` (static check) · `eval` (offline A/B) · `observe` (online trace) · `evolve` (auto-iterate a skill) · `sample` (generate or fill test cases) · `studio` (local web UI for reports & analysis).
363
-
364
- ### `omk init`
365
-
366
- ```bash
367
- omk init [dir]
368
- ```
369
-
370
- <!-- omk:cli:init:flags:start -->
371
-
372
- **Flags:**
373
-
374
- ```text
375
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
376
- ```
377
-
378
- For full descriptions: `omk init --help`.
379
-
380
- <!-- omk:cli:init:flags:end -->
381
-
382
- Scaffolds an evaluation project with two starter skill variants and an `eval-samples.json` file.
383
-
384
- ### `omk doctor`
385
-
386
- ```bash
387
- omk doctor # audit current dir / ./skills
388
- omk doctor skills/v1.md # audit one skill file
389
- omk doctor skills/ --html report.html # produce a visual HTML report
390
- omk doctor skills/ --json > r.json # JSON for CI / external tools
391
- omk doctor --gate; echo $? # silent gate; exit 1 on fatal failures, warnings do not block
392
- omk doctor --static-only # offline mode: static checks only, no LLM call
393
- ```
394
-
395
- <!-- omk:cli:doctor:flags:start -->
396
-
397
- **Flags:**
398
-
399
- ```text
400
- --effort <value> LLM reasoning effort: low / medium / high / xhigh / max.
401
- --executor <value> Executor name, default claude. Pass a test fixture path to use in tests.
402
- --fix Interactive fix: use LLM agent to fix skill issues reported by doctor.
403
- --gate Silent mode: only emit stderr summary on fail. Exit code carries the signal.
404
- --html <value> HTML report output path. Coexists with --json / --gate.
405
- --json JSON output to stdout, for CI / external script consumption.
406
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
407
- --model <value> LLM model name, default sonnet.
408
- --samples <value> Samples file path (.json/.yaml). Auto-detects from target / cwd if omitted.
409
- --static-only Offline static mode: only 4 static rules, no LLM call.
410
- --timeout <value> Single-session LLM timeout sec, default 600 (10 min).
411
- ```
412
-
413
- For full descriptions: `omk doctor --help`.
414
-
415
- <!-- omk:cli:doctor:flags:end -->
416
-
417
- LLM health audit: a single LLM session emits per-dimension grades, findings, and suggestions for the 7 builtin dimensions; the HTML report sorts dimensions fail→warn→pass→skipped with errors first within each dim. Dimensions are extensible — call `registerHealthDimension` in your own code and the new section is folded into the same LLM call's prompt and report (order = registration order).
418
-
419
- Static-only mode (`--static-only`): for CI nodes without claude / codex installed, or local debugging without network — runs the four static rules (readability / metadata / dependencies / samples contract) with zero LLM calls and zero cost. Output goes through the same `DoctorReport` shape and combines with `--json` / `--gate` / `--html`.
420
-
421
- `omk eval` still runs its own static readability / metadata / dependency / samples-contract gates internally to protect eval quality; that path is separate from this user-facing `omk doctor` command and the two roles do not overlap.
422
-
423
- ### `omk eval`
424
-
425
- ```bash
426
- omk eval --control baseline --treatment my-skill # single-skill necessity test (baseline = reserved "no skill" variant)
427
- omk eval --control code-review-v1 --treatment code-review-v2 # multi-variant A/B
428
- omk eval --config eval.yaml
429
- omk eval --batch
430
- omk eval gold compare <report-id> --gold-dir gold-dataset
431
- ```
432
-
433
- Runs the offline evaluation, applies the verdict gate, persists the report, and returns a ship/no-ship exit code. Bootstrap CI is enabled by default on this workflow.
434
-
435
- <!-- omk:cli:eval:flags:start -->
436
-
437
- **Flags:**
438
-
439
- ```text
440
- --batch Batch mode: baseline vs each skill
441
- --blind Blind judge mode
442
- --bootstrap Add bootstrap CI
443
- --bootstrap-samples <value> Bootstrap resamples, default 1000
444
- --budget-per-sample-ms <value> Per-sample time cap ms (must be > 0; omit for no cap)
445
- --budget-per-sample-usd <value> Per-sample budget cap USD (must be > 0; omit for no cap)
446
- --budget-usd <value> Total budget cap USD (must be > 0; omit for no cap)
447
- --concurrency <value> Concurrency, default 1
448
- --config <value> eval.yaml path
449
- --control <value> Control variant expr
450
- --dry-run Plan only, no real exec
451
- --effort <value> Executor LLM reasoning effort low/medium/high/xhigh/max (default low; reports across efforts not strictly comparable).
452
- --executor <value> Executor: claude / claude-sdk / codex / codex-sdk / openai-api / gemini / custom (default claude).
453
- --gold-dir <value> Gold dataset dir
454
- --judge-models <value> Judge config: executor:model[,...]. e.g. claude:haiku or claude:opus,openai:gpt-4o (≥ 2 = ensemble). Default <executor>:haiku.
455
- --judge-repeat <value> Judge each dim N times
456
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
457
- --layered-stats Emit layered stats
458
- --mcp-config <value> MCP config path
459
- --model <value> Evaluated model
460
- --no-cache Skip executor cache
461
- --no-debias-length Disable length-debias (default on)
462
- --no-diagnostic Disable diagnostic LLM call (on by default; emits "what went wrong + how to fix" advice for failed samples).
463
- --no-gate Disable verdict gate
464
- --no-judge Skip LLM judge
465
- --no-serve Do not start report server
466
- --no-strict-baseline Disable baseline isolation
467
- --output-dir <value> Report output dir
468
- --repeat <value> Repeat each sample N times
469
- --report-only Produce the report and print verdict, but always exit 0 (no CI gate).
470
- --resume <value> Resume a previous failed run
471
- --retry <value> Per-sample retry count
472
- --samples <value> Samples file path. Defaults to eval-samples.json (also .yaml/.yml); auto-discovers <skill>/.omk/samples.json under --skill-dir.
473
- --skill-dir <value> Skill dir, default skills
474
- --skip-connectivity Skip LLM connectivity preflight
475
- --skip-doctor Escape hatch: skip the doctor health-check gate (on by default). Use when sandbox mocks supply deps; caller owns garbage-in risk.
476
- --strict-baseline Force baseline isolation (default true)
477
- --threshold <value> Verdict threshold, default 3.5
478
- --timeout <value> Per-sample timeout sec, default 120
479
- --treatment <value> Treatment variants, comma-separated
480
- --trivial-diff <value> Trivial diff tolerance; 0 disables tolerance
481
- --verbose Verbose logging
482
- ```
483
-
484
- For full descriptions: `omk eval --help`.
485
-
486
- <!-- omk:cli:eval:flags:end -->
487
-
488
- The HTML report has two tabs:
489
- - **📊 Score view** — the verdict-driven A/B comparison (fact / behavior / judge layers, bootstrap CI, length-debias).
490
- - **✅ Functional view** — each sample as a unit test: design (prompt / rubric / mocks / environment) + execution trace + assertion results + actionable diagnostic. Diagnostic emits root cause (skill_doc_unclear / llm_misread / sample_design / tripwire_intentional / ...), workflow checks (rubric step ✓/✗ with evidence), and failure-mode tags (工作流跳步 / 硬编码值 / 幻觉输出 / 工具误用 / 环境拦截 / 误读约束 / 其他). For the sandbox-mock semantics behind `mocks` / `environment` / `tripwire` / `mocksStrict`, see [docs/sample-design-spec.md §三](./docs/sample-design-spec.md).
491
-
492
- ### `omk observe`
493
-
494
- `omk observe` ships two workflows: the default skill-health report, and the new observe inbox for human review.
495
-
496
- #### A. Skill-health report (default)
497
-
498
- ```bash
499
- omk observe ~/.claude/projects/-Users-you-Documents-my-project
500
- omk observe ~/.claude/projects/my-project --last 7d
501
- omk observe ~/.claude/projects/my-project --from 2026-04-01T00:00:00Z --to 2026-04-15T23:59:59Z
502
- omk observe ~/.claude/projects/my-project --skills audit,polish
503
- omk observe ~/.claude/projects/my-project --kb /path/to/project
504
- ```
505
-
506
- <!-- omk:cli:observe:flags:start -->
507
-
508
- **Flags:**
509
-
510
- ```text
511
- --from <value> Start time ISO, overrides --last
512
- --kb <value> KB root, enables KB-aware analysis
513
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
514
- --last <value> Time window (7d / 24h / 30m)
515
- --output-dir <value> Analysis output directory
516
- --skills <value> Filter to specific skills, comma-separated
517
- --to <value> End time ISO
518
- ```
519
-
520
- For full descriptions: `omk observe --help`.
521
-
522
- <!-- omk:cli:observe:flags:end -->
523
-
524
- Turns real Claude Code session traces into skill-health reports: knowledge usage, gap signals, execution stability, tokens, and latency. This is production observation, not production scoring.
525
-
526
- #### B. observe inbox: reviewer loop
527
-
528
- Parses, aggregates, and de-noises real session traces into a per-observation list a human can review. The whole pipeline is local-only and LLM-free.
529
-
530
- ```bash
531
- # 1. Parse traces, aggregate signals, write to .omk/observations/
532
- omk observe ingest ~/.claude/projects/my-project
533
- omk observe ingest ~/.claude/projects/my-project --output-dir ./custom-dir
534
-
535
- # 2. Read the inbox (default: top 20, sorted by severity / confidence / lastSeen)
536
- omk observe inbox
537
- omk observe inbox --limit 50
538
- omk observe inbox --skill audit # filter by skill
539
- omk observe inbox --by-skill # rollup view (one row per skill)
540
- omk observe inbox --explore 10 # sample 10 long-tail items from medium/low
541
- omk observe inbox --explore 10 --include-noise # explicitly include the noise bucket
542
- omk observe inbox --llm-enhanced-review # run LLM enhanced chain review explicitly
543
- omk observe inbox --json # JSON output for automation
544
-
545
- # 3. Inspect a single observation with its event triplet (surrounding messages)
546
- omk observe show <inbox_id>
547
- ```
548
-
549
- Every observation carries:
550
-
551
- - `confidence` and `attributionConfidence` — signal credibility plus skill-attribution credibility, displayed side by side
552
- - `severityReasonCode` — stable structured reason code for the assigned severity; human-readable reasons are generated by CLI / studio rendering
553
- - `messageWindow` — 3 messages before / trigger / 3 messages after, plus `resolutionAfter` (whether the agent recovered)
554
- - `evidence.{messageIndex,messageUuid,toolUseId}` — anchors for round-tripping back to the original jsonl
555
-
556
- Supported trace formats: Claude Code session JSONL (`.jsonl`), OpenClaw session JSONL (`.jsonl`), and markdown conversation logs (`.log`).
557
-
558
- ### `omk skill-extract`
559
-
560
- ```bash
561
- omk skill-extract demo-create --review soft-xxx --status author_confirmed
562
- omk skill-extract demo-create --review soft-xxx --status rejected --reason "not a real standard"
563
- ```
564
-
565
- <!-- omk:cli:skill-extract:flags:start -->
566
-
567
- **Flags:**
568
-
569
- ```text
570
- --input-dir <value> Observation data directory
571
- --json JSON output
572
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
573
- --reason <value> Manual review reason
574
- --review <value> Soft standard id to review
575
- --status <value> Review status: author_confirmed / rejected / pending_review (also accepts aliases: confirm / confirmed / reject / pending)
576
- ```
577
-
578
- For full descriptions: `omk skill-extract --help`.
579
-
580
- <!-- omk:cli:skill-extract:flags:end -->
581
-
582
- ### `omk evolve`
583
-
584
- ```bash
585
- omk evolve <skill> # multi-round auto-iteration on a skill
586
- omk evolve skills/foo.md --rounds 10 --target 4.5
587
- ```
588
-
589
- <!-- omk:cli:evolve:flags:start -->
590
-
591
- **Flags:**
592
-
593
- ```text
594
- --auto-fix-samples Fix the skill, then fix samples, then evaluate the combined candidate
595
- --concurrency <value> Eval concurrency, default 1
596
- --effort <value> Reasoning effort: low/medium/high/xhigh/max
597
- --executor <value> Executor name, default claude
598
- --improve-mode <agent|rewrite> Improvement strategy (default: agent)
599
- --improve-model <value> LLM that rewrites the skill, default sonnet
600
- --judge-models <value> Judge model (single judge required), executor:model format. Default claude:haiku
601
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
602
- --model <value> Evaluated LLM, default sonnet
603
- --no-diagnostic Disable diagnostic LLM call
604
- --reuse-latest-eval Reuse the latest comparable eval report as round-0
605
- --rounds <value> Max iteration rounds, default 5
606
- --sample-fix-max-attempts <value>Max auto-fix attempts per sample (default: 2)
607
- --samples <value> Samples file, default eval-samples.json
608
- --skip-connectivity Skip LLM connectivity preflight
609
- --skip-doctor Skip doctor gate (escape hatch; user takes garbage-in risk)
610
- --stop-on-assertions-pass Stop early when normal samples pass assertions
611
- --target <value> Target composite score; stop when reached. If omitted, runs all rounds.
612
- --timeout <value> Per-sample timeout sec, default 120
613
- ```
614
-
615
- For full descriptions: `omk evolve --help`.
616
-
617
- <!-- omk:cli:evolve:flags:end -->
618
-
619
- Auto-iterates a skill through repeated eval → judge → rewrite loops until it hits `--target` or exhausts `--rounds`. Cost scales with `rounds × samples × variants`; a typical run takes minutes to tens of minutes. Original skill files are versioned under `skills/evolve/*.r0.md`.
620
-
621
- ### `omk sample`
622
-
623
- ```bash
624
- omk sample <skill> # generate or fill eval-samples test cases for one skill
625
- omk sample --batch # generate for skills missing eval-samples
626
- ```
627
-
628
- <!-- omk:cli:sample:flags:start -->
629
-
630
- **Flags:**
631
-
632
- ```text
633
- --batch Batch mode: scan --skill-dir, generate samples for any skill missing them.
634
- --count <value> Number of samples to generate. Defaults to LLM auto-selection by skill type.
635
- --fix Fix mode: auto-fix sample_design failures using the latest eval report.
636
- --focus <value> Generation focus (NL hint). Steers LLM toward certain sample types.
637
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
638
- --model <value> Generation LLM model name, default opus.
639
- --no-mock Skip mock generation; all tool calls execute for real during eval.
640
- --reports-dir <value> Reports dir (fix mode), default ~/.oh-my-knowledge/reports.
641
- --skill-dir <value> Skill root dir, default skills. Used by batch mode.
642
- --treatment <value> Treatment name (fix mode), defaults to skill-path inference.
643
- ```
644
-
645
- For full descriptions: `omk sample --help`.
646
-
647
- <!-- omk:cli:sample:flags:end -->
648
-
649
- One-shot generation. Auto-stamps `provenance` on generated cases. Generated assertions use English, numbers, or code tokens so they compare cleanly across bilingual outputs.
650
-
651
- ### `omk studio`
652
-
653
- ```bash
654
- omk studio
655
- omk studio --port 7799
656
- omk studio --host 0.0.0.0 # LAN access (default: 127.0.0.1)
657
- omk studio --reports-dir ~/.oh-my-knowledge/reports
658
- omk studio --observations-dir .omk/observations # observe inbox data directory
659
- omk studio --no-open
660
- ```
661
-
662
- <!-- omk:cli:studio:flags:start -->
663
-
664
- **Flags:**
665
-
666
- ```text
667
- --analyses-dir <value> Analyses dir (optional)
668
- --dev Dev mode: child process with hot reload
669
- --host <value> Listen host, default localhost. Use 0.0.0.0 to expose to LAN
670
- --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
671
- --no-open Do not auto-open browser
672
- --observations-dir <value> Observations dir (optional)
673
- --port <value> Listen port, default 7799. Pass 0 for OS-assigned
674
- --reports-dir <value> Reports dir, default ~/.oh-my-knowledge/reports
675
- ```
676
-
677
- For full descriptions: `omk studio --help`.
678
-
679
- <!-- omk:cli:studio:flags:end -->
680
-
681
- Starts the local knowledge workbench for browsing reports and observation analyses. Verdict, sample diffs, regressions, saturation curves, and per-sample drill-downs all live in the studio UI — there is no CLI export / analysis subcommand. For CI gates, use `omk eval`'s exit code (0 on `PROGRESS`, non-zero otherwise) or `jq` over the report JSON.
682
-
683
- Studio is skill-centric — the list page (`/`) shows skill cards with health band / 0-100 reference score / open-issue count / trend; the detail page (`/skills/<name>`) puts a prioritized issue checklist on the left (skill issues / sample issues / tool advisories), and a chart.js health trend plus three compact stage cards (doctor / eval / observe) on the right, with modals for deeper drill-down. The legacy run list moved to `/runs`. Visit `/observations/inbox` for the observe inbox dashboard: per-skill rollup view, reviewer action list, observability funnel, and a per-observation detail panel with the event triplet (surrounding messages).
684
-
685
- ## Executors
686
-
687
- ### Built-in executors
688
-
689
- | Executor | When to use | Description |
690
- |---|---|---|
691
- | `claude` | default | invokes `claude -p` via Claude CLI |
692
- | `claude-sdk` | structured output | uses Claude Agent SDK — no stdout parsing, avoids buffer truncation |
693
- | `codex` | OpenAI agent CLI | invokes `codex exec --json` (`@openai/codex` npm); best-effort tool trace; **costUSD not reported** (codex CLI does not emit USD; check usage externally) |
694
- | `codex-sdk` | OpenAI agent SDK | uses `@openai/codex-sdk` with its bundled `@openai/codex` binary and streamed SDK events; **costUSD not reported** |
695
- | `gemini` | cross-vendor comparison | invokes `gemini` CLI |
696
- | `anthropic-api` | no CLI needed | calls Anthropic HTTP API directly (needs `ANTHROPIC_API_KEY`) |
697
- | `openai-api` | no CLI needed | calls OpenAI HTTP API directly (needs `OPENAI_API_KEY`) |
698
-
699
- API-direct executors support custom base URLs via env: `ANTHROPIC_BASE_URL`, `OPENAI_BASE_URL`.
700
-
701
- Codex construct-validity notes: (1) `codex` uses the `codex` binary on `PATH`; `codex-sdk` uses the bundled `@openai/codex` binary resolved by `@openai/codex-sdk`. Reports persist per-variant `meta.executorRuntimes`, `meta.executorRuntime`, and per-judge `meta.judgeModels[].runtime` fingerprints (binary or SDK version + capability snapshot), and strict comparability checks warn when runtime fingerprints cannot be audited. If runtime fingerprints differ, treat results as an executor-runtime comparison, not only prompt/template behavior. (2) Both executors isolate user-level config: `codex` passes `--ephemeral` + `--ignore-user-config`; `codex-sdk` redirects `$CODEX_HOME` to a per-process tmp dir (auth.json symlinked through). User-level `~/.codex/config.toml` does not leak into eval runs in either case.
702
-
703
- ### Custom executor
704
-
705
- Any shell command can serve as an executor, communicating via stdin/stdout JSON:
706
-
707
- ```bash
708
- omk eval --executor "python my_provider.py"
709
- omk eval --executor "./my-executor.sh"
710
- ```
711
-
712
- **Protocol:**
713
-
714
- - **input** (stdin): JSON `{"model":"...","system":"...","prompt":"..."}`
715
- - **output** (stdout): JSON `{"output":"model reply","inputTokens":0,"outputTokens":0,"costUSD":0}`
716
- - stdout only needs to return the fields you care about; others default to 0. Plain-text output (no tokens/cost parsing) is also fine.
717
- - non-zero exit code counts as failure
718
-
719
- ### Artifact directory layout
720
-
721
- The built-in executors (claude / openai / gemini) support two artifact layouts, mixable in the same run:
722
-
723
- ```
724
- skills/
725
- ├── v1.md # option 1: plain .md file
726
- └── my-skill/ # option 2: full artifact dir
727
- ├── SKILL.md # this file is auto-loaded as system prompt
728
- ├── config.json # other files don't participate in eval, kept for completeness
729
- └── scripts/
730
- ```
731
-
732
- **Variant resolution rules:**
733
-
734
- `variant` is the experiment-group expression. After resolution, OMK produces an `artifact` plus an optional `runtime context` (currently mainly `cwd`).
735
-
736
- | Format | Meaning |
737
- |---|---|
738
- | `name` | looks up `name.md` or `name/SKILL.md` in the artifact dir, resolves to one artifact |
739
- | `baseline` | empty artifact, no system prompt — think "nothing at all" |
740
- | `project-env@/path/to/project` | empty artifact, but run in the specified project dir — observe project-level runtime context alone |
741
- | `git:name` | reads the last-committed version of an artifact from git HEAD |
742
- | `git:ref:name` | reads an artifact from a specific commit |
743
- | `./path/to/file.md` | path with `/`: read the file directly as an artifact |
744
- | `variant@/path/to/project` | attach a run dir to any variant; supports `name@cwd`, `git:name@cwd`, `/file.md@cwd` |
745
-
746
- When both `--control` and `--treatment` are omitted, use `--config eval.yaml` or `--batch`. With `--batch`, `baseline` is auto-added as control and every discovered artifact becomes a treatment.
747
-
748
- ```bash
749
- # explicit: one control, one or more treatments
750
- omk eval --control v1 --treatment v2
751
- omk eval --control baseline --treatment v1,v2,v3
752
-
753
- # compare empty artifact vs explicit artifact
754
- omk eval --control baseline --treatment my-skill
755
-
756
- # observe project-level runtime context in isolation (use a self-describing label)
757
- omk eval --control baseline --treatment project-env@/path/to/target-project
758
-
759
- # compare "project-level runtime context" vs "explicit artifact injection"
760
- omk eval \
761
- --control project-env@/path/to/target-project \
762
- --treatment /path/to/target-project/.claude/skills/prd/SKILL.md@/path/to/target-project
763
-
764
- # before vs after (old version read from git history)
765
- omk eval --control git:my-skill --treatment my-skill
766
-
767
- # direct file paths
768
- omk eval --control ./old-skill.md --treatment ./new-skill.md
769
-
770
- # config-file driven (evaluation-as-code)
771
- omk eval --config eval.yaml
772
- ```
773
-
774
- **Prerequisites:**
775
-
776
- - **claude**: install [Claude Code](https://claude.ai/code) and authenticate
777
- - **claude-sdk**: install [Claude Code](https://claude.ai/code) and authenticate (uses Agent SDK, no CLI stdout parsing)
778
- - **anthropic-api**: set the `ANTHROPIC_API_KEY` env var
779
- - **openai**: `pip install openai` and set `OPENAI_API_KEY`
780
- - **openai-api**: set the `OPENAI_API_KEY` env var
781
- - **gemini**: `npm i -g @google/gemini-cli` and authenticate
782
-
783
- ### Agent evaluation and project-level runtime context
784
-
785
- When the executor is `claude-sdk`, OMK supports a first pass of agent-aware evaluation.
786
-
787
- A few concepts worth keeping separate:
788
-
789
- - `artifact`: the thing being evaluated — baseline, skill, prompt, agent
790
- - `variant`: the CLI expression for an experiment group
791
- - `runtime context`: the runtime environment; currently mainly `cwd`. In project-type agent scenarios it includes the project dir, its `CLAUDE.md`, local skills, and any other environmental factors that affect behavior
792
-
793
- In OMK, `agent` is not a catch-all term and neither is `skill`. A cleaner phrasing: **you are comparing how different artifacts behave under different runtime contexts.**
794
-
795
- - auto-extracts turns / toolCalls traces
796
- - supports assertions on tool-call behavior
797
- - supports running under a specified `cwd`, so Claude Code auto-loads the project's `CLAUDE.md`, skills, and local runtime context
798
-
799
- #### Recommended executor
800
-
801
- ```bash
802
- omk eval --executor claude-sdk
803
- ```
804
-
805
- #### Agent-related assertions
806
-
807
- | Assertion | Meaning |
808
- |---|---|
809
- | `tools_called` | must call the specified tool(s) |
810
- | `tools_not_called` | must not call the specified tool(s) |
811
- | `tools_count_min` / `tools_count_max` | tool-call-count bounds |
812
- | `tool_output_contains` | output of a specific tool must contain given content |
813
- | `turns_min` / `turns_max` | turn-count bounds |
814
-
815
- #### Three common control setups
816
-
817
- **1. Bare-model baseline**
818
-
819
- No system prompt and no knowledge-carrying project dir. Requires at least one treatment to compare against:
820
-
821
- ```bash
822
- omk eval \
823
- --executor claude-sdk \
824
- --control baseline \
825
- --treatment my-skill
826
- ```
827
-
828
- **2. Empty artifact + project-level runtime context**
829
-
830
- No system prompt, but runs inside a project dir. This is **not** a strict "bare baseline" — it is "empty artifact + project-level runtime context".
831
-
832
- ```bash
833
- omk eval \
834
- --executor claude-sdk \
835
- --control baseline \
836
- --treatment project-env@/path/to/target-project
837
- ```
838
-
839
- **3. Explicit artifact injection**
840
-
841
- Inject an external `SKILL.md` as the artifact while also keeping the project dir. Good for contrasting "project-level runtime context" vs "explicit single-artifact injection".
842
-
843
- ```bash
844
- omk eval \
845
- --executor claude-sdk \
846
- --control project-env@/path/to/target-project \
847
- --treatment /path/to/target-project/.claude/skills/prd/SKILL.md@/path/to/target-project
848
- ```
849
-
850
- #### Recommended first-round design
851
-
852
- For PRD / complex business-knowledge scenarios, start with:
853
-
854
- ```bash
855
- omk eval \
856
- --executor claude-sdk \
857
- --samples skills/evaluate-review/eval-samples.yaml \
858
- --control baseline \
859
- --treatment /path/to/target-project/.claude/skills/prd/SKILL.md@/path/to/target-project
860
- ```
861
-
862
- If you want to prove whether "the knowledge sitting inside the project directory" is effective on its own, add a second treatment:
863
-
864
- ```bash
865
- omk eval \
866
- --executor claude-sdk \
867
- --samples skills/evaluate-review/eval-samples.yaml \
868
- --control baseline \
869
- --treatment project-env@/path/to/target-project,/path/to/target-project/.claude/skills/prd/SKILL.md@/path/to/target-project
870
- ```
871
-
872
- #### Design tips
873
-
874
- - **Always start with `--dry-run`** to confirm samples, variants, and `cwd` are parsed correctly
875
- - **Project-level controls must differ in `cwd`**: the same prompt under different project dirs hits different runtime contexts
876
- - **Try PRD scenarios first**: compared to pure coding, they make it easier to validate knowledge completeness, impact-area detection, and business correctness
877
-
878
- ### Common model configurations
879
-
880
- **Don't have Claude?** Most Chinese LLMs (GLM, Qwen, Moonshot, DeepSeek, etc.) are OpenAI-API compatible — use the `openai-api` executor directly:
881
-
882
- ```bash
883
- # GLM (Zhipu)
884
- export OPENAI_API_KEY="your Zhipu API key"
885
- export OPENAI_BASE_URL="https://open.bigmodel.cn/api/paas/v4"
886
- omk eval --executor openai-api --model glm-4-plus \
887
- --judge-models openai-api:glm-4-plus --no-cache
888
-
889
- # Qwen (Alibaba)
890
- export OPENAI_API_KEY="your Qwen API key"
891
- export OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
892
- omk eval --executor openai-api --model qwen-plus \
893
- --judge-models openai-api:qwen-plus
894
-
895
- # DeepSeek
896
- export OPENAI_API_KEY="your DeepSeek API key"
897
- export OPENAI_BASE_URL="https://api.deepseek.com"
898
- omk eval --executor openai-api --model deepseek-chat \
899
- --judge-models openai-api:deepseek-chat
900
-
901
- # Moonshot (Kimi)
902
- export OPENAI_API_KEY="your Moonshot API key"
903
- export OPENAI_BASE_URL="https://api.moonshot.cn/v1"
904
- omk eval --executor openai-api --model moonshot-v1-8k \
905
- --judge-models openai-api:moonshot-v1-8k
906
- ```
907
-
908
- **Ollama local model:**
909
-
910
- ```bash
911
- omk eval --executor "python examples/custom-executor/ollama-executor.py" \
912
- --model llama3 --no-judge
913
- ```
914
-
915
- **About the judge:**
102
+ ## Documentation
916
103
 
917
- - `--judge-models <list>` picks the LLM judge(s). Format: `executor:model[,executor:model]`. Default: `${executor}:haiku` (or claude:haiku when no `--executor` set)
918
- - 1 entry = single judge; 2 entries = multi-judge ensemble + inter-judge agreement
919
- - If you don't have Claude, point `--judge-models` at whatever you have, e.g. `--judge-models openai-api:glm-4-plus`
920
- - Add `--no-judge` to skip the LLM judge and rely on assertions alone
104
+ - **[How it works](docs/explanation/architecture.md)** interleaved scheduling, variant resolution, dual-channel scoring, six-dim report
105
+ - **[Eval sample format](docs/reference/eval-sample-format.md)** sample schema, scoring formulas, 30+ assertion types, custom JS assertions
106
+ - **[CLI reference](docs/reference/cli.md)** all seven commands with bash examples and flag tables
107
+ - **[Executors & artifact layout](docs/reference/executors.md)** — built-in / custom executors, agent evaluation, common model configs (Claude / OpenAI / GLM / Qwen / DeepSeek / Moonshot / Ollama)
108
+ - **[Quickstart](docs/quickstart-skill-eval.md)** — first-time five-minute walkthrough
109
+ - **[Sample design spec](docs/specs/sample-design-spec.md)** — capability / construct / provenance metadata; industry-gap mapping
110
+ - **[Statistical rigor](docs/explanation/statistical-rigor.md)** — why bootstrap CI / α / length-debias / saturation matter
111
+ - **[Comparison with 7 tools](docs/reference/comparison.md)** — 25+ dimensions across promptfoo / DeepEval / LangSmith / Langfuse / Braintrust etc.
921
112
 
922
113
  ## Environment variables
923
114
 
@@ -928,9 +119,9 @@ omk eval --executor "python examples/custom-executor/ollama-executor.py" \
928
119
 
929
120
  ## Requirements
930
121
 
931
- - Node.js >= 20
122
+ - Node.js >= 22
932
123
  - `claude` CLI (for the default executor and LLM judge; see [Claude Code](https://claude.ai/code))
933
- - not needed if you use other executors (openai / gemini) with `--no-judge`
124
+ - not needed if you use other executors (openai-api / anthropic-api / gemini) with `--no-judge`
934
125
 
935
126
  ## Security notice
936
127