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
@@ -0,0 +1,776 @@
1
+ export function e(text) {
2
+ return String(text)
3
+ .replaceAll('&', '&')
4
+ .replaceAll('<', '&lt;')
5
+ .replaceAll('>', '&gt;')
6
+ .replaceAll('"', '&quot;')
7
+ .replaceAll("'", '&#39;');
8
+ }
9
+ export function fmtNum(n, digits = 0) {
10
+ return Number(n || 0).toLocaleString('en-US', { maximumFractionDigits: digits });
11
+ }
12
+ export function fmtDuration(ms) {
13
+ const v = Number(ms || 0);
14
+ if (v < 1000)
15
+ return `${v}ms`;
16
+ if (v < 60000)
17
+ return `${(v / 1000).toFixed(1)}s`;
18
+ const min = Math.floor(v / 60000);
19
+ const sec = Math.round((v % 60000) / 1000);
20
+ return sec > 0 ? `${min}m${sec}s` : `${min}m`;
21
+ }
22
+ export function fmtCost(usd, reported = true) {
23
+ // reported=false 时 executor 不报 cost(如 codex CLI),`usd` 是占位 0,
24
+ // 显示 "—" 跟"真的花了 $0"区分开。callsite 传 reported 时通常来自
25
+ // `VariantSummary.execCostReported !== false` 或 `VariantResult.costReportedByExecutor !== false`。
26
+ if (!reported)
27
+ return '—';
28
+ return `$${Number(usd || 0).toFixed(4)}`;
29
+ }
30
+ export function fmtKnownCost(usd, fullyReported = true) {
31
+ const value = Number(usd || 0);
32
+ if (fullyReported)
33
+ return fmtCost(value);
34
+ return value > 0 ? `≥${fmtCost(value)}` : '—';
35
+ }
36
+ export function fmtLocalTime(isoStr) {
37
+ const d = new Date(isoStr);
38
+ const pad = (n) => String(n).padStart(2, '0');
39
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
40
+ }
41
+ export function delta(a, b, lowerIsBetter = false) {
42
+ if (!a || !b || a === 0)
43
+ return '';
44
+ const pct = ((b - a) / a * 100).toFixed(1);
45
+ const better = lowerIsBetter ? b < a : b > a;
46
+ const color = better ? 'var(--green)' : b === a ? 'var(--text-muted)' : 'var(--red)';
47
+ const arrow = b > a ? '↑' : b < a ? '↓' : '→';
48
+ return `<span style="color:${color};font-size:11px;margin-left:4px">${arrow}${Math.abs(Number(pct))}%</span>`;
49
+ }
50
+ export const COLORS = ['var(--chart-1)', 'var(--chart-2)', 'var(--chart-3)', 'var(--chart-4)', 'var(--chart-5)', 'var(--chart-6)'];
51
+ export const I18N = {
52
+ zh: {
53
+ title: '评测报告',
54
+ subtitle: '知识载体评测',
55
+ noRuns: '暂无评测记录。运行 <code>omk eval --control v1 --treatment v2</code> 开始。',
56
+ runId: '报告名称', variants: '实验分组', model: '任务执行模型', samples: '评测用例数',
57
+ score: '分数', cost: '执行成本', time: '时间',
58
+ deleteBtnText: '删除', deleteConfirm: '确定删除报告', deleteFail: '删除失败',
59
+ reportTitle: '评测报告', backToList: '← 返回列表',
60
+ judge: '评委', executor: '执行器', blindLabel: '盲测', revealBlind: '显示变体对应关系',
61
+ dimFact: '📋 事实', dimFactDesc: '输出的事实声明是否正确(规则可验证:关键词匹配、格式校验等断言)',
62
+ dimBehavior: '🛠️ 行为', dimBehaviorDesc: '执行过程是否合规(规则可验证:工具调用路径、轮次限制、成本约束等断言)',
63
+ dimJudge: '💬 LLM 评价', dimJudgeDesc: '请一个 LLM 当评委,读任务执行模型的输出内容,按预先写好的评分规则(英文 rubric)打 1-5 分。主观但能抓到规则断言判不了的"整体好不好"',
64
+ dimQuality: '📊 质量', dimQualityDesc: '事实 + 行为 + LLM 评价的等权平均(1-5 分)。UI 已拆出三层平铺展示,composite 字段仅保留在 JSON 数据层',
65
+ dimCost: '💰 执行成本', dimCostDesc: '基于 Token 消耗量和模型定价计算的任务执行模型调用费用',
66
+ dimEfficiency: '⚡ 效率', dimEfficiencyDesc: 'Skill 从发送请求到模型返回完整响应的端到端耗时',
67
+ dimStability: '🛡️ 稳定性', dimStabilityDesc: '多次运行(--repeat ≥ 2)分数一致性的 CV 变异系数,单轮显示"—"',
68
+ compositeScore: '综合分数', scoreRange: '分数范围',
69
+ assertions: '断言', assertionsDesc: '规则检查得分:通过的断言权重占比映射到 1-5 分',
70
+ llmJudge: 'LLM 评委', llmJudgeDesc: '由评委模型按预先写好的评分规则(英文叫 rubric)打出的 1-5 分',
71
+ judgeStddev: '评委波动', judgeStddevDesc: '同一份输出让评委评 N 次 (--judge-repeat) 得到 N 个分数的标准差。值低 = 评委对自己很坚定;值高 = 这个分本身就是噪声',
72
+ judgeFailures: '评委失败', judgeFailuresDesc: 'N 次评委评分中返回 score=0(解析失败 / 调用错误)的次数。stddev=0 + failureCount>0 不是"完美一致",是"大部分炸了"',
73
+ judgeReasoning: '评委推理', judgeReasoningExpand: '展开',
74
+ ensembleHeader: '多评委评分对比', ensembleDesc: '不同评委模型对同一份输出的独立评分。用于反驳"同模态偏差"',
75
+ agreementHeader: '跨用例评委一致性', agreementDesc: '在所有评测用例上算的多评委一致性',
76
+ pearsonLabel: '皮尔逊系数 (Pearson)', pearsonDesc: '皮尔逊相关系数:1=完全同向排序,0=无关,-1=完全反向',
77
+ madLabel: '平均绝对差 (MAD)', madDesc: '平均绝对差。1-5 制下 < 0.5 紧密一致, > 1.5 大分歧',
78
+ judgeModelsLabel: '评委模型',
79
+ judgeRepeatLabel: '每条用例评委评价次数',
80
+ judgePromptHashLabel: '评委提示词指纹', judgePromptHashDesc: '评委提示词模板的 SHA256 前 12 位。两份报告 hash 相同才能严格比分数',
81
+ sampleHashCount: '评测用例指纹', sampleHashCountDesc: '已记录内容指纹的评测用例数 / 全部评测用例数。每条评测用例算 SHA256 前 12 位,用于跨 run 识别"测的是不是同一件事"。两份报告对同一 sample_id hash 一致才能严格比分',
82
+ evalFrameworkLabel: '统计框架', evalFrameworkBootstrap: 'bootstrap CI', evalFrameworkBoth: 't-test + bootstrap', evalFrameworkTTest: 't-test',
83
+ evalFrameworkDesc: '分数置信区间用什么算法。bootstrap 不假设分布,适合 LLM 1-5 序数评分;t-test 假设正态,小样本下不稳。"both" = 报告同时含两种,renderer 优先 bootstrap',
84
+ bootstrapDiffSignificant: '✓ 显著差异', bootstrapDiffNotSignificant: '✗ 无显著差异', bootstrapDiffLabel: 'Δ (treatment - control)',
85
+ totalCost: '已上报总成本', inputTokens: '输入', outputTokens: '输出',
86
+ totalTokens: '总计', tokPerReq: 'tokens/次', avgLatency: '平均延迟',
87
+ successRate: '完成率', success: '成功', errors: '失败',
88
+ tokenComparison: 'Tokens 对比', latencyComparison: '延迟对比',
89
+ avgTurns: '平均轮次', turnsPerReq: '轮/次', minScore: '最低',
90
+ autoAnalysis: '自动分析',
91
+ perSampleDetail: '逐用例详情', sample: '用例',
92
+ scoreCol: '分数', tokensCol: 'Tokens', msCol: '延迟(ms)',
93
+ batchOverview: '总览', batchSkill: 'Skill', batchBaseline: '无 Skill', batchWithSkill: '有 Skill', batchImprovement: '提升',
94
+ batchSkills: '个 Skill', batchSamples: '个评测用例',
95
+ agentLabel: 'Agent 评测',
96
+ skillLabel: 'Skill 评测',
97
+ promptLabel: 'Prompt 评测',
98
+ workflowLabel: 'Workflow 评测',
99
+ agentOverview: 'Agent 执行概览',
100
+ agentToolCalls: '工具调用',
101
+ agentToolSuccess: '工具成功率',
102
+ agentToolDist: '工具分布',
103
+ agentAvgTurns: '平均轮次',
104
+ agentAvgTools: '平均工具调用',
105
+ traceToggle: '执行轨迹',
106
+ traceAssistant: '助手',
107
+ traceTool: '工具',
108
+ traceFullOutput: '查看完整输出',
109
+ traceExecMs: '执行',
110
+ traceGradeMs: '评分',
111
+ traceTotalMs: '总计',
112
+ variantConfig: '实验配置',
113
+ variantConfigDesc: '先看清楚在比较什么,再看分数。本表展示每个 variant 背后的 artifact 和运行环境。',
114
+ variantType: '实验类型',
115
+ variantArtifactKind: '知识类型',
116
+ variantArtifactSource: '知识来源',
117
+ variantExecutionStrategy: '执行策略',
118
+ variantRuntimeContext: '运行环境',
119
+ // --- observability (skill health / trend / diff) ---
120
+ skillHealthTitle: 'Skill 健康度日报',
121
+ noAnalyses: '暂无 skill 健康度日报。运行 <code>omk observe &lt;trace-dir&gt;</code> 生成。',
122
+ backToEvalReports: '← 评测报告',
123
+ backToAnalyses: '← Skill 健康度日报',
124
+ analysesCompareHint: '选两个报告的 from/to 单选框,点 Compare 生成 diff。',
125
+ analysesCompareBtn: '对比 →',
126
+ analysesFromLabel: 'from',
127
+ analysesToLabel: 'to',
128
+ analysesSessions: '会话',
129
+ analysesSegs: '段',
130
+ analysesSkills: '技能',
131
+ analysesLowN: '样本不足',
132
+ skillTrendHeading: 'Skill 趋势',
133
+ noTrendData: '暂无趋势数据。该 skill 尚未出现在任何分析报告里。',
134
+ trendNPoints: '个时间点',
135
+ trendEarliest: '最早',
136
+ trendLatest: '最新',
137
+ trendLegendGap: 'gap rate',
138
+ trendLegendWeighted: 'weighted gap',
139
+ trendLegendFailure: 'failure rate',
140
+ trendLegendCoverage: 'coverage',
141
+ trendColTimestamp: '时间',
142
+ trendColSegs: '段数',
143
+ trendColGap: 'Gap',
144
+ trendColWeighted: '加权',
145
+ trendColFailure: '失败率',
146
+ trendColCoverage: '覆盖',
147
+ trendColTokens: 'Tokens',
148
+ trendColDuration: '耗时',
149
+ skillDiffHeading: 'Skill 健康度对比',
150
+ diffSortHint: '按 gap 变化量排序;绿色=改善,红色=恶化',
151
+ diffTagRemoved: '已消失',
152
+ diffTagNew: '新增',
153
+ diffNavFrom: '起点',
154
+ diffNavTo: '终点',
155
+ diffColSkill: 'Skill',
156
+ diffColSegments: '段数',
157
+ diffColWeightedGap: '加权 Gap',
158
+ diffColFailureRate: '失败率',
159
+ diffColCoverage: '覆盖',
160
+ viewTrendLink: '查看趋势 →',
161
+ artifactHashLabel: '版本指纹',
162
+ artifactHashTooltip: 'skill 文件内容的 SHA-256 前 12 位(不含路径/时间/git),用于辨别报告对应哪一版 skill;同文件多次跑指纹不变,改一字节就变——防止"改动效果"和"随机波动"混淆',
163
+ switchLang: '英文',
164
+ },
165
+ en: {
166
+ title: 'Evaluation Reports',
167
+ subtitle: 'Knowledge Artifact Evaluation',
168
+ noRuns: 'No evaluation runs yet. Run <code>omk eval --control v1 --treatment v2</code> to start.',
169
+ runId: 'Report', variants: 'Variant', model: 'Task execution model', samples: 'Samples',
170
+ score: 'Score', cost: 'Execution cost', time: 'Time',
171
+ deleteBtnText: 'Delete', deleteConfirm: 'Delete report', deleteFail: 'Delete failed',
172
+ reportTitle: 'Evaluation Report', backToList: '← Back to list',
173
+ judge: 'Judge', executor: 'Executor', blindLabel: 'BLIND', revealBlind: 'Reveal variant mapping',
174
+ dimFact: '📋 Fact', dimFactDesc: 'Are factual claims correct (rule-verified: keyword matching, schema checks, etc.)',
175
+ dimBehavior: '🛠️ Behavior', dimBehaviorDesc: 'Is execution compliant (rule-verified: tool paths, turn limits, cost constraints)',
176
+ dimJudge: '💬 LLM judge', dimJudgeDesc: 'A separate LLM acts as judge: reads the task execution model output, scores 1-5 against a predefined rubric. Subjective, catches "overall feel" rule-based assertions miss',
177
+ dimQuality: '📊 Quality', dimQualityDesc: 'Equal-weight average of Fact + Behavior + LLM judge (1-5). UI now splits the three layers into separate columns; composite lives only in JSON data',
178
+ dimCost: '💰 Exec cost', dimCostDesc: 'API cost for the task execution model, calculated from token usage and model pricing',
179
+ dimEfficiency: '⚡ Efficiency', dimEfficiencyDesc: 'End-to-end latency from sending request to receiving full response',
180
+ dimStability: '🛡️ Stability', dimStabilityDesc: 'How much the score swings across repeated runs. Needs `--repeat ≥ 2`; single-run shows "—" because stability cannot be measured from one run',
181
+ compositeScore: 'composite score', scoreRange: 'Range',
182
+ assertions: 'Assertions', assertionsDesc: 'Rule-based score: passed assertion weight ratio mapped to 1-5',
183
+ llmJudge: 'LLM Judge', llmJudgeDesc: 'Score (1-5) from the judge model based on a predefined rubric (scoring criteria)',
184
+ judgeStddev: 'Judge stddev', judgeStddevDesc: 'Stddev across N judge calls (--judge-repeat). Low = judge is consistent; high = this score itself is noisy',
185
+ judgeFailures: 'Judge failures', judgeFailuresDesc: 'How many of N judge calls returned score=0 (parse / executor failure). stddev=0 + failureCount>0 is NOT "perfect agreement" — it means most calls failed',
186
+ judgeReasoning: 'CoT reasoning', judgeReasoningExpand: 'expand',
187
+ ensembleHeader: 'Per-judge scores', ensembleDesc: 'Independent scores from different judge models for the same output — refutes same-modality bias',
188
+ agreementHeader: 'Inter-judge agreement', agreementDesc: 'Cross-sample agreement metrics across all judges in this variant',
189
+ pearsonLabel: 'Pearson', pearsonDesc: 'Pearson correlation: 1=perfect rank agreement, 0=independent, -1=anti-correlated',
190
+ madLabel: 'MAD', madDesc: 'Mean absolute difference. On 1-5 scale: < 0.5 tight, > 1.5 large disagreement',
191
+ judgeModelsLabel: 'Judge models',
192
+ judgeRepeatLabel: 'Judge calls per sample',
193
+ judgePromptHashLabel: 'Judge prompt fingerprint', judgePromptHashDesc: 'SHA256-12 of the judge prompt template. Reports must share the same hash before scores are strictly comparable',
194
+ sampleHashCount: 'Sample fingerprints', sampleHashCountDesc: 'Number of samples with content hashes recorded / total samples. Each sample gets a SHA256-12 fingerprint identifying "is this the same sample as before". Two reports must share the same hash for a given sample_id to be strictly comparable',
195
+ evalFrameworkLabel: 'CI framework', evalFrameworkBootstrap: 'bootstrap CI', evalFrameworkBoth: 't-test + bootstrap', evalFrameworkTTest: 't-test',
196
+ evalFrameworkDesc: 'Algorithm used for confidence intervals. Bootstrap is distribution-free and recommended for ordinal LLM scores; t-test assumes normality and is unstable on small N. "both" = report has both, renderer prefers bootstrap',
197
+ bootstrapDiffSignificant: '✓ significant', bootstrapDiffNotSignificant: '✗ not significant', bootstrapDiffLabel: 'Δ (treatment - control)',
198
+ totalCost: 'Reported total cost', inputTokens: 'Input', outputTokens: 'Output',
199
+ totalTokens: 'Total', tokPerReq: 'tokens/req', avgLatency: 'avg latency',
200
+ successRate: 'completion rate', success: 'Success', errors: 'Errors',
201
+ tokenComparison: 'Tokens Comparison', latencyComparison: 'Latency Comparison',
202
+ avgTurns: 'Avg Turns', turnsPerReq: 'turns/req', minScore: 'Min',
203
+ autoAnalysis: 'Auto Analysis',
204
+ perSampleDetail: 'Per-Sample Detail', sample: 'Sample',
205
+ scoreCol: 'Score', tokensCol: 'Tokens', msCol: 'ms',
206
+ batchOverview: 'Overview', batchSkill: 'Skill', batchBaseline: 'Baseline', batchWithSkill: 'With Skill', batchImprovement: 'Improvement',
207
+ batchSkills: ' skills', batchSamples: ' samples',
208
+ agentLabel: 'Agent Eval',
209
+ skillLabel: 'Skill Eval',
210
+ promptLabel: 'Prompt Eval',
211
+ workflowLabel: 'Workflow Eval',
212
+ agentOverview: 'Agent Execution Overview',
213
+ agentToolCalls: 'Tool Calls',
214
+ agentToolSuccess: 'Tool Success Rate',
215
+ agentToolDist: 'Tool Distribution',
216
+ agentAvgTurns: 'Avg Turns',
217
+ agentAvgTools: 'Avg Tool Calls',
218
+ traceToggle: 'Execution Trace',
219
+ traceAssistant: 'Assistant',
220
+ traceTool: 'Tool',
221
+ traceFullOutput: 'Full Output',
222
+ traceExecMs: 'Exec',
223
+ traceGradeMs: 'Grade',
224
+ traceTotalMs: 'Total',
225
+ variantConfig: 'Experiment Setup',
226
+ variantConfigDesc: 'Confirm what is being compared before reading the score. This table explains the artifact and runtime context behind each variant.',
227
+ variantType: 'Role',
228
+ variantArtifactKind: 'Artifact Kind',
229
+ variantArtifactSource: 'Source',
230
+ variantExecutionStrategy: 'Execution Strategy',
231
+ variantRuntimeContext: 'Runtime Context',
232
+ // --- observability (skill health / trend / diff) ---
233
+ skillHealthTitle: 'Skill Health Reports',
234
+ noAnalyses: 'No skill health reports yet. Run <code>omk observe &lt;trace-dir&gt;</code> to generate.',
235
+ backToEvalReports: '← Eval reports',
236
+ backToAnalyses: '← Skill Health Reports',
237
+ analysesCompareHint: 'Pick from/to radios on two reports, then click Compare to generate a diff.',
238
+ analysesCompareBtn: 'Compare →',
239
+ analysesFromLabel: 'from',
240
+ analysesToLabel: 'to',
241
+ analysesSessions: 'sessions',
242
+ analysesSegs: 'segs',
243
+ analysesSkills: 'skills',
244
+ analysesLowN: 'low N',
245
+ skillTrendHeading: 'Skill Trend',
246
+ noTrendData: 'No trend data. This skill has not appeared in any analysis report yet.',
247
+ trendNPoints: 'data points',
248
+ trendEarliest: 'earliest',
249
+ trendLatest: 'latest',
250
+ trendLegendGap: 'gap rate',
251
+ trendLegendWeighted: 'weighted gap',
252
+ trendLegendFailure: 'failure rate',
253
+ trendLegendCoverage: 'coverage',
254
+ trendColTimestamp: 'Timestamp',
255
+ trendColSegs: 'Segs',
256
+ trendColGap: 'Gap',
257
+ trendColWeighted: 'Weighted',
258
+ trendColFailure: 'Failure',
259
+ trendColCoverage: 'Coverage',
260
+ trendColTokens: 'Tokens',
261
+ trendColDuration: 'Duration',
262
+ skillDiffHeading: 'Skill Health Diff',
263
+ diffSortHint: 'Sorted by |Δgap|; green=improved, red=regressed',
264
+ diffTagRemoved: 'removed',
265
+ diffTagNew: 'new',
266
+ diffNavFrom: 'from',
267
+ diffNavTo: 'to',
268
+ diffColSkill: 'Skill',
269
+ diffColSegments: 'Segments',
270
+ diffColWeightedGap: 'Weighted gap',
271
+ diffColFailureRate: 'Failure rate',
272
+ diffColCoverage: 'Coverage',
273
+ viewTrendLink: 'trend →',
274
+ artifactHashLabel: 'Version fingerprint',
275
+ artifactHashTooltip: 'First 12 hex chars of SHA-256 over the skill file content (content-only: no path/time/git); identifies which version of the skill this report ran — same file = same fingerprint, any byte change = different fingerprint. Keeps "intentional change" separate from "random variance"',
276
+ switchLang: 'Chinese',
277
+ },
278
+ };
279
+ export const DEFAULT_LANG = 'zh';
280
+ export function t(key, lang = DEFAULT_LANG) {
281
+ return I18N[lang]?.[key] || I18N.en[key] || key;
282
+ }
283
+ function globalKeyboardScript() {
284
+ return `
285
+ <script>
286
+ // Global modal helpers. openModal/closeModal manage focus so the close
287
+ // button becomes the first tab stop when a modal opens.
288
+ window.openModal = function(id) {
289
+ var modal = document.getElementById(id);
290
+ if (!modal) return;
291
+ modal.style.display = 'flex';
292
+ setTimeout(function() {
293
+ var closeBtn = modal.querySelector('.modal-close');
294
+ if (closeBtn) closeBtn.focus();
295
+ }, 30);
296
+ };
297
+ window.closeModal = function(id) {
298
+ var modal = document.getElementById(id);
299
+ if (!modal) return;
300
+ modal.style.display = 'none';
301
+ };
302
+ // Global ESC to close any open modal-overlay
303
+ document.addEventListener('keydown', function(e) {
304
+ if (e.key === 'Escape') {
305
+ document.querySelectorAll('.modal-overlay').forEach(function(m) {
306
+ if (m.style.display === 'flex') m.style.display = 'none';
307
+ });
308
+ }
309
+ });
310
+ // 复制 paste-ready 片段到剪贴板:供 insight modal 的"复制片段"按钮调用。
311
+ // 元素 id 指 <code> 节点;复制后按钮加 .copied 类做 1.5s 视觉反馈。
312
+ // i18n:按钮反馈文案随页面 data-lang(layout 写在 <html> 上,langToggleScript 切换时更新)。
313
+ // 未设 dataset 时按 DEFAULT_LANG(zh)兜底,跟旧报告/无 toggle 入口的页面一致。
314
+ window.omkCopySnippet = function(elementId, btn) {
315
+ var el = document.getElementById(elementId);
316
+ if (!el) return;
317
+ var text = el.textContent || '';
318
+ var pageLang = document.documentElement.dataset.lang || '${DEFAULT_LANG}';
319
+ var copiedLabel = pageLang === 'en' ? '✓ Copied' : '✓ 已复制';
320
+ var done = function() {
321
+ if (!btn) return;
322
+ var orig = btn.textContent;
323
+ btn.textContent = copiedLabel;
324
+ btn.classList.add('copied');
325
+ setTimeout(function() { btn.textContent = orig; btn.classList.remove('copied'); }, 1500);
326
+ };
327
+ if (navigator.clipboard && navigator.clipboard.writeText) {
328
+ navigator.clipboard.writeText(text).then(done, function() { /* swallow */ });
329
+ } else {
330
+ // 老浏览器兜底:execCommand fallback
331
+ var ta = document.createElement('textarea');
332
+ ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0';
333
+ document.body.appendChild(ta); ta.select();
334
+ try { document.execCommand('copy'); done(); } catch(e) { /* swallow */ }
335
+ document.body.removeChild(ta);
336
+ }
337
+ };
338
+ </script>`;
339
+ }
340
+ function langToggleScript() {
341
+ return `
342
+ <script>
343
+ var I18N = ${JSON.stringify(I18N)};
344
+ function switchLang() {
345
+ var cur = document.documentElement.dataset.lang || '${DEFAULT_LANG}';
346
+ var next = cur === 'zh' ? 'en' : 'zh';
347
+ document.documentElement.dataset.lang = next;
348
+ document.documentElement.lang = next === 'zh' ? 'zh-CN' : 'en';
349
+ document.querySelectorAll('[data-i18n]').forEach(function(el) {
350
+ var key = el.dataset.i18n;
351
+ if (I18N[next][key]) {
352
+ if (el.tagName === 'INPUT') { el.placeholder = I18N[next][key]; }
353
+ else { el.innerHTML = I18N[next][key]; }
354
+ }
355
+ });
356
+ document.getElementById('lang-toggle').textContent = I18N[next].switchLang;
357
+ // 同步写入 URL ?lang= 和 localStorage,让刷新/跳转保持语言选择
358
+ try {
359
+ var url = new URL(window.location.href);
360
+ url.searchParams.set('lang', next);
361
+ window.history.replaceState(null, '', url.toString());
362
+ localStorage.setItem('omk-lang', next);
363
+ } catch (e) { /* ignore */ }
364
+ }
365
+ // 页面加载时,若 URL 无 lang 但 localStorage 有,跳转到带 lang 的 URL (仅一次)
366
+ (function() {
367
+ try {
368
+ var url = new URL(window.location.href);
369
+ if (!url.searchParams.get('lang')) {
370
+ var saved = localStorage.getItem('omk-lang');
371
+ if (saved && saved !== '${DEFAULT_LANG}') {
372
+ url.searchParams.set('lang', saved);
373
+ window.location.replace(url.toString());
374
+ }
375
+ }
376
+ } catch (e) { /* ignore */ }
377
+ })();
378
+ </script>`;
379
+ }
380
+ function langToggleButton(lang) {
381
+ return `<button id="lang-toggle" onclick="switchLang()" class="lang-toggle">${t('switchLang', lang)}</button>`;
382
+ }
383
+ export function layout(title, body, lang = DEFAULT_LANG) {
384
+ const htmlLang = lang === 'zh' ? 'zh-CN' : 'en';
385
+ const favicon = encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="#60a5fa"/><stop offset="100%" stop-color="#a78bfa"/></linearGradient></defs><circle cx="16" cy="16" r="15" fill="#0f172a"/><circle cx="16" cy="16" r="8" stroke="url(#g)" stroke-width="3.5" fill="none"/></svg>');
386
+ // 中英文切换按钮临时隐藏(URL ?lang= / localStorage 切换逻辑保留,按钮 UI 不渲染)。
387
+ // 想恢复:在 body 模板里加回 ${langToggleButton(lang)}。
388
+ void langToggleButton;
389
+ return `<!doctype html><html lang="${htmlLang}" data-lang="${lang}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>OMK · ${title}</title>
390
+ <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,${favicon}">${globalKeyboardScript()}
391
+ <style>
392
+ /* Pantone-inspired light theme(2026-05 全站浅色化)。
393
+ 设计原则:暖白底 + 哑色调,不刺眼;字号 14-15px 起;subtle box-shadow 替代 border。
394
+ 旧的深色蓝灰主题已迁移,语义保留但色值翻转。 */
395
+ :root{
396
+ --bg-base:#fbfaf7; /* 暖白纸感 */
397
+ --bg-surface:#ffffff; /* 卡片白 */
398
+ --bg-elevated:rgba(58,58,58,.025);
399
+ --bg-soft:rgba(58,58,58,.04);
400
+ --border:#e8e3da; /* 暖灰分隔 */
401
+ --border-hover:#d4ccbf;
402
+ --text-primary:#3a3a3a; /* 深炭灰 */
403
+ --text-secondary:#7a7a7a;
404
+ --text-muted:#a8a8a8;
405
+ --text-faint:#c8c8c8;
406
+ --accent:#5a7a93; /* 板岩蓝(slate) */
407
+ --accent-hover:#3f5d76;
408
+ --green:#5e8252; /* 鼠尾草绿(sage) */
409
+ --green-bg:rgba(94,130,82,.10);
410
+ --red:#9c4a3f; /* 砖红土陶(terracotta) */
411
+ --red-bg:rgba(156,74,63,.10);
412
+ --yellow:#b08030; /* 暖琥珀 */
413
+ --yellow-bg:rgba(176,128,48,.10);
414
+ --info-bg:rgba(90,122,147,.08);
415
+ /* 图表色 — 全部哑色调,跨色相区分但饱和度统一在 ~50% */
416
+ --chart-1:#5a7a93;
417
+ --chart-2:#7a6b89;
418
+ --chart-3:#5e8252;
419
+ --chart-4:#b08030;
420
+ --chart-5:#9c6478;
421
+ --chart-6:#937846;
422
+ --bg-card:#ffffff;
423
+ --radius:8px;
424
+ --radius-lg:12px;
425
+ /* 字号上调:正文 14px / 标签 13px / 详情 13px / 微元数据 12px */
426
+ --fs-micro:12px;
427
+ --fs-detail:13px;
428
+ --fs-label:13px;
429
+ --fs-body:14.5px;
430
+ --shadow-sm:0 1px 3px rgba(58,58,58,.06);
431
+ --shadow-md:0 2px 8px rgba(58,58,58,.10);
432
+ }
433
+ *{box-sizing:border-box;margin:0}
434
+ body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",Roboto,sans-serif;padding:32px;background:var(--bg-base);color:var(--text-primary);min-height:100vh;line-height:1.7;max-width:1440px;margin:0 auto;font-size:var(--fs-body)}
435
+ h1{margin:0 0 8px;font-size:1.75rem;font-weight:600;color:var(--text-primary);letter-spacing:-0.01em;line-height:1.3}
436
+ h2{margin:32px 0 12px;font-size:1.0625rem;color:var(--text-primary);font-weight:600;line-height:1.4}
437
+ .subtitle{color:var(--text-secondary);font-size:0.875rem;margin:0 0 24px}
438
+ a{color:var(--accent);text-decoration:none;transition:color .15s}
439
+ a:hover{color:var(--accent-hover);text-decoration:underline}
440
+
441
+ /* Meta tags — 浅色主题下加大对比度,小一点的字号也清晰可读 */
442
+ .meta-tags{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 20px}
443
+ .meta-tag{font-size:13px;color:var(--text-secondary);padding:4px 12px;background:var(--bg-surface);border:1px solid var(--border);border-radius:20px;line-height:1.5}
444
+ .meta-tag code{font-size:12px;color:var(--text-secondary);background:transparent;padding:0;letter-spacing:0.02em}
445
+
446
+ /* Run ID stamp — H1 保留完整 run-id (与列表页一致), 时间戳从 ID 解出来作为副标小字,
447
+ 告诉用户「这次跑的时间」,无需用户自己解析 ID 后缀。 */
448
+ .run-id-stamp{font-size:0.75rem;color:var(--text-muted);margin:2px 0 12px;font-variant-numeric:tabular-nums}
449
+
450
+ /* Audit fingerprints — judge prompt hash + 执行环境 fingerprint 默认折叠,
451
+ 平日 review 不需要看, 复现 / 审计时再展开。 */
452
+ .audit-fingerprints{margin:0 0 18px}
453
+ .audit-fingerprints>summary{cursor:pointer;font-size:0.75rem;color:var(--text-muted);padding:4px 0;list-style:revert;user-select:none;transition:color 0.15s}
454
+ .audit-fingerprints>summary:hover{color:var(--text-secondary)}
455
+ .audit-fingerprints[open]>summary{color:var(--text-secondary);margin-bottom:6px}
456
+ .audit-fingerprints[open]>.meta-tags{margin-top:0}
457
+
458
+ /* Methodology audit — 方法学证据 (评委一致 / 差异显著 / 已饱和 / 人工对齐) 默认折叠,
459
+ summary 行直接显示 4 个 badge: 全 ✓ = 流程健康,任一 ⚠/✗ = 强制 open. */
460
+ .methodology-audit{margin:24px 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}
461
+ .methodology-audit>summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:12px 16px;font-size:13px;color:var(--text-primary);font-weight:600;list-style:revert;user-select:none}
462
+ .methodology-audit>summary:hover{color:var(--accent)}
463
+ .methodology-summary-label{font-size:14px;font-weight:600}
464
+ .methodology-summary-hint{flex:1 1 auto;text-align:right;font-size:11px;color:var(--text-muted);font-weight:400}
465
+ .methodology-badges{display:inline-flex;flex-wrap:wrap;gap:6px}
466
+ .methodology-badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:12px;letter-spacing:0.02em;line-height:1.5;white-space:nowrap}
467
+ /* Pantone 哑色 — 用 var(--green-bg) 等(浅色主题已重定义) */
468
+ .methodology-badge-pass{background:var(--green-bg);color:var(--green)}
469
+ .methodology-badge-warn{background:var(--yellow-bg);color:var(--yellow)}
470
+ .methodology-badge-fail{background:var(--red-bg);color:var(--red)}
471
+ .methodology-badge-skip{background:var(--bg-soft);color:var(--text-muted)}
472
+ .methodology-body{padding:0 16px 14px;border-top:1px solid var(--border);margin-top:8px}
473
+ .methodology-body>h2:first-child{margin-top:14px}
474
+
475
+ /* Cards */
476
+ .cards{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
477
+ .card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;min-width:140px;flex:1;transition:border-color 0.15s}
478
+ .card:hover{border-color:var(--border-hover)}
479
+ /* 卡片标签:de-uppercase(uppercase 在 pantone 哑色调里太"科技报"),轻微 letter-spacing
480
+ 保留排版感,字号上调到 12 让读者看清。值/数字改 weight 600(700 在浅色配色里太硬)。 */
481
+ .card-label{font-size:12px;color:var(--text-muted);letter-spacing:0.02em;margin-bottom:4px;font-weight:500}
482
+ .card-value{font-size:20px;font-weight:600;margin:2px 0;color:var(--text-primary);font-variant-numeric:tabular-nums;line-height:1.3}
483
+ .card-sub{font-size:12px;color:var(--text-muted);line-height:1.5}
484
+ /* Summary table — inherits the global center + middle from the base td/th. */
485
+ .summary-cell{min-width:96px}
486
+ .summary-value-primary{font-size:1.25rem;font-weight:600;font-variant-numeric:tabular-nums}
487
+
488
+ /* Hint tooltip (legacy span-based, kept for hover-only hints) */
489
+ .hint{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;font-size:10px;font-weight:600;color:var(--text-muted);border:1px solid var(--border-hover);border-radius:50%;cursor:help;margin-left:6px;vertical-align:middle}
490
+ .hint-click{cursor:pointer}
491
+
492
+ /* Hint button — accessible, keyboard-focusable replacement for click-to-open-modal hints */
493
+ button.hint-btn{display:inline-flex;align-items:center;justify-content:center;min-width:20px;min-height:20px;padding:2px;font-size:11px;font-weight:600;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:50%;cursor:pointer;margin-left:6px;vertical-align:middle;line-height:1;transition:color 0.15s,border-color 0.15s;outline:none;appearance:none}
494
+ button.hint-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}
495
+ button.hint-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
496
+ button.hint-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
497
+
498
+ /* Verdict + detail pattern used in variance & significance cells */
499
+ .verdict-line{color:var(--text-secondary);font-size:var(--fs-body)}
500
+ .detail-line{font-size:var(--fs-detail);color:var(--text-muted);margin-top:2px}
501
+
502
+ /* Modal glossary layout — grid rows with tree connectors for sub-items */
503
+ .modal-glossary-hint{font-size:var(--fs-detail);color:var(--text-muted);margin:4px 0 14px;font-style:italic}
504
+ .modal-glossary{display:flex;flex-direction:column}
505
+ .modal-glossary-row{display:grid;grid-template-columns:100px 1fr;gap:16px;padding:9px 0;border-bottom:1px solid var(--border)}
506
+ .modal-glossary-row:last-child{border-bottom:none}
507
+ .modal-glossary-label{font-size:var(--fs-body);color:var(--text-primary);font-weight:600}
508
+ .modal-glossary-desc{font-size:var(--fs-detail);color:var(--text-secondary);line-height:1.55}
509
+ .modal-glossary-sub{display:grid;grid-template-columns:86px 1fr;gap:14px;padding:6px 0 6px 28px;position:relative}
510
+ .modal-glossary-sub::before{content:'';position:absolute;left:10px;top:0;bottom:0;width:2px;background:var(--border-hover);border-radius:1px}
511
+ .modal-glossary-sub-label{font-size:var(--fs-detail);color:var(--text-secondary);font-weight:500}
512
+ .modal-glossary-sub-desc{font-size:var(--fs-detail);color:var(--text-muted);line-height:1.55}
513
+
514
+ /* Modal section divider */
515
+ .modal-section{margin-top:20px;padding-top:16px;border-top:1px solid var(--border-hover)}
516
+ .modal-section-title{font-size:var(--fs-body);font-weight:600;color:var(--text-primary);margin-bottom:10px}
517
+
518
+ /* Four-quadrant diagnostic rule cards (matches the table's icon+text style) */
519
+ .diag-rules{display:flex;flex-direction:column;gap:8px}
520
+ .diag-rule-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--bg-elevated);border-radius:var(--radius);border-left:3px solid var(--border-hover)}
521
+ .diag-rule-row.rule-good{border-left-color:var(--green)}
522
+ .diag-rule-row.rule-warn{border-left-color:var(--yellow)}
523
+ .diag-rule-row.rule-neutral{border-left-color:var(--text-muted)}
524
+ .diag-rule-icon{font-size:15px;flex-shrink:0;line-height:1.4}
525
+ .diag-rule-icon.rule-good{color:var(--green)}
526
+ .diag-rule-icon.rule-warn{color:var(--yellow)}
527
+ .diag-rule-icon.rule-neutral{color:var(--text-muted)}
528
+ .diag-rule-body{flex:1;min-width:0}
529
+ .diag-rule-title{font-size:var(--fs-detail);font-weight:600;color:var(--text-primary);margin-bottom:3px}
530
+ .diag-rule-desc{font-size:var(--fs-detail);color:var(--text-secondary);line-height:1.5}
531
+ .diag-rule-example{font-size:var(--fs-micro);color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-top:4px;opacity:0.85}
532
+
533
+ /* Variance & significance table: all cells use the global center + middle. */
534
+ .variance-table td{padding-top:12px;padding-bottom:12px}
535
+ .variance-table td.diagnostic-cell{min-width:180px}
536
+ .variance-table .diag-faded strong{opacity:0.5;font-weight:500}
537
+
538
+ /* Knowledge Interaction section (v0.17 / A):
539
+ variant card is the only visual container, two inner columns use a
540
+ single vertical divider instead of nested bg — compresses hierarchy
541
+ from 3-4 layers to 2. */
542
+ .ki-card{margin-bottom:10px;padding:12px 14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius)}
543
+ .ki-card-header{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}
544
+ .ki-card-title{font-size:15px;font-weight:600;color:var(--text-primary)}
545
+ .ki-card-meta{font-size:var(--fs-micro);color:var(--text-muted);font-weight:400}
546
+ .ki-columns{display:flex;gap:0;flex-wrap:wrap}
547
+ .ki-col{flex:1;min-width:220px;padding:0 18px}
548
+ .ki-col:first-child{padding-left:0;border-right:1px solid var(--border)}
549
+ .ki-col:last-child{padding-right:0}
550
+ @media(max-width:640px){
551
+ .ki-col{padding:0;min-width:100%;border-right:none !important}
552
+ .ki-col+.ki-col{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
553
+ }
554
+ .ki-col-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
555
+ .ki-col-title{font-size:13px;color:var(--text-secondary);font-weight:500}
556
+ .ki-col-value{font-size:22px;font-weight:600}
557
+ .ki-bar{height:6px;background:var(--bg-card);border-radius:4px;margin-bottom:8px;overflow:hidden}
558
+ .ki-bar-fill{height:100%;border-radius:4px;transition:width 0.2s}
559
+ .ki-inventory-item{padding:6px 10px;margin:4px 0;background:var(--bg-card);border-left:3px solid var(--border-hover);border-radius:4px;font-size:var(--fs-detail);line-height:1.5}
560
+ .ki-inventory-item[data-severity="strong"]{border-left-color:var(--red)}
561
+ .ki-inventory-item[data-severity="medium"]{border-left-color:var(--yellow)}
562
+ .ki-inventory-item[data-severity="weak"]{border-left-color:var(--text-muted)}
563
+ .ki-inventory-item-meta{color:var(--text-muted);font-size:var(--fs-micro);margin-bottom:2px}
564
+ .ki-inventory-item-ctx{color:var(--text-secondary);word-break:break-all}
565
+ .ki-desc{font-size:12px;color:var(--text-muted);margin-bottom:4px;line-height:1.6}
566
+ .ki-desc-hint{font-size:11px;color:var(--text-faint);margin-bottom:12px;line-height:1.5}
567
+ .ki-details{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}
568
+ .ki-details>summary{cursor:pointer;font-size:var(--fs-micro);color:var(--text-muted);padding:2px 0;list-style:revert;user-select:none;transition:color 0.15s}
569
+ .ki-details>summary:hover{color:var(--text-secondary)}
570
+ .ki-details[open]>summary{color:var(--text-secondary);margin-bottom:6px}
571
+
572
+ /* Three-layer independent significance breakdown (PR-2).
573
+ Default collapsed; expands inline under each comparison. */
574
+ .layer-breakdown-row>td{padding:0 !important;background:transparent;border-top:1px dashed var(--border-hover)}
575
+ .layer-breakdown{padding:10px 16px 14px 32px;background:var(--bg-elevated)}
576
+ .layer-breakdown>summary{cursor:pointer;font-size:var(--fs-detail);color:var(--text-muted);padding:4px 0;list-style:revert;user-select:none}
577
+ .layer-breakdown>summary:hover{color:var(--text-secondary)}
578
+ .layer-breakdown[open]>summary{color:var(--text-primary);margin-bottom:8px}
579
+ .layer-sub-table{margin:0;width:100%;font-size:var(--fs-detail)}
580
+ .layer-sub-table td{padding-top:8px;padding-bottom:8px}
581
+ /* Multiple-comparisons disclaimer for the three-layer breakdown (PR-2) */
582
+ .layer-breakdown-disclaimer{font-size:var(--fs-micro);color:var(--text-muted);line-height:1.5;padding:4px 8px 10px 0;font-style:italic}
583
+
584
+ /* v0.21 B.4 — Verdict pill (GitHub PR check 风, 水平 status banner + CTA + 层 strip).
585
+ 颜色严格按 level 编码: PROGRESS 绿, REGRESS 红, CAUTIOUS/UNDERPOWERED 黄,
586
+ NOISE/SOLO 用 secondary 而非 muted (深底下保证对比度). border-left 4px 是
587
+ status 视觉信号, 不堆边框/卡片 — 整体融入页面排版. */
588
+ .verdict-banner{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:12px 18px;margin:12px 0 0;border-left:4px solid var(--text-secondary);background:rgba(148,163,184,0.06);border-radius:var(--radius)}
589
+ .verdict-banner.verdict-PROGRESS{border-left-color:var(--green);background:rgba(74,222,128,0.07)}
590
+ .verdict-banner.verdict-REGRESS{border-left-color:var(--red);background:rgba(248,113,113,0.07)}
591
+ .verdict-banner.verdict-CAUTIOUS{border-left-color:var(--yellow);background:rgba(251,191,36,0.07)}
592
+ .verdict-banner.verdict-UNDERPOWERED{border-left-color:var(--yellow);background:rgba(251,191,36,0.04)}
593
+ .verdict-banner.verdict-NOISE{border-left-color:var(--text-secondary);background:rgba(148,163,184,0.06)}
594
+ .verdict-banner.verdict-SOLO{border-left-color:var(--border-hover);background:transparent}
595
+ .verdict-icon{font-size:12px;line-height:1;flex-shrink:0}
596
+ .verdict-line{font-size:14px;font-weight:500;color:var(--text-primary);line-height:1.6;letter-spacing:-0.005em}
597
+
598
+ /* page-verdict: verdict 是报告的「答案」,头部 hero 形式呈现.
599
+ 行 1: enum + ship-action badge (PROGRESS · SHIP) + 自然语言 ("明显更好,可以发布")
600
+ 行 2: Δ / 95% CI / N / CV — 测量学核心数字, 不需要滚到下方表才看到.
601
+ 颜色按 level 编码 (PROGRESS 绿 / REGRESS 红 / CAUTIOUS+UNDERPOWERED 黄 / NOISE+SOLO 中性). */
602
+ .page-verdict{display:flex;flex-direction:column;gap:10px;margin:12px 0 18px;padding:14px 18px;border-left:4px solid var(--text-secondary);background:rgba(148,163,184,0.06);border-radius:var(--radius)}
603
+ .page-verdict.verdict-PROGRESS{border-left-color:var(--green);background:rgba(74,222,128,0.07)}
604
+ .page-verdict.verdict-REGRESS{border-left-color:var(--red);background:rgba(248,113,113,0.07)}
605
+ .page-verdict.verdict-CAUTIOUS{border-left-color:var(--yellow);background:rgba(251,191,36,0.07)}
606
+ .page-verdict.verdict-UNDERPOWERED{border-left-color:var(--yellow);background:rgba(251,191,36,0.04)}
607
+ .page-verdict.verdict-NOISE{border-left-color:var(--text-secondary);background:rgba(148,163,184,0.06)}
608
+ .page-verdict.verdict-SOLO{border-left-color:var(--border-hover);background:transparent}
609
+ .page-verdict-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
610
+ .page-verdict-badge{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:700;letter-spacing:0.04em;padding:3px 10px;border-radius:14px;background:rgba(148,163,184,0.14);color:var(--text-primary);white-space:nowrap}
611
+ .verdict-PROGRESS .page-verdict-badge{background:rgba(74,222,128,0.18);color:var(--green)}
612
+ .verdict-REGRESS .page-verdict-badge{background:rgba(248,113,113,0.18);color:var(--red)}
613
+ .verdict-CAUTIOUS .page-verdict-badge,
614
+ .verdict-UNDERPOWERED .page-verdict-badge{background:rgba(251,191,36,0.18);color:var(--yellow)}
615
+ .verdict-NOISE .page-verdict-badge,
616
+ .verdict-SOLO .page-verdict-badge{background:rgba(148,163,184,0.16);color:var(--text-secondary)}
617
+ .page-verdict-badge-dot{font-size:8px;line-height:1}
618
+ .page-verdict-text{font-size:15px;font-weight:500;color:var(--text-primary);line-height:1.5;flex:1 1 auto;min-width:0}
619
+ .page-verdict-metrics{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:baseline;padding-top:2px}
620
+ .verdict-metric{display:inline-flex;align-items:baseline;gap:6px}
621
+ .verdict-metric-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.06em;font-weight:600}
622
+ .verdict-metric-value{font-size:15px;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums;letter-spacing:-0.01em}
623
+
624
+ .verdict-cta{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:10px 18px;margin:0;border-left:4px solid var(--accent);background:var(--bg-surface);border-top:1px solid var(--border);border-radius:0}
625
+ .verdict-cta.verdict-cta-PROGRESS{border-left-color:var(--green);background:rgba(74,222,128,0.04)}
626
+ .verdict-cta.verdict-cta-REGRESS{border-left-color:var(--red);background:rgba(248,113,113,0.04)}
627
+ .verdict-cta.verdict-cta-CAUTIOUS{border-left-color:var(--yellow);background:rgba(251,191,36,0.04)}
628
+ .verdict-cta.verdict-cta-NOISE,
629
+ .verdict-cta.verdict-cta-UNDERPOWERED,
630
+ .verdict-cta.verdict-cta-SOLO{border-left-color:var(--text-secondary)}
631
+ .verdict-cta-icon{font-size:13px;flex-shrink:0;color:var(--text-secondary)}
632
+ .verdict-cta-PROGRESS .verdict-cta-icon{color:var(--green)}
633
+ .verdict-cta-REGRESS .verdict-cta-icon{color:var(--red)}
634
+ .verdict-cta-CAUTIOUS .verdict-cta-icon{color:var(--yellow)}
635
+ .verdict-cta-action{font-size:13px;font-weight:700;color:var(--text-primary);letter-spacing:0.04em;text-transform:uppercase;white-space:nowrap}
636
+ .verdict-cta-detail{font-size:13px;color:var(--text-secondary);line-height:1.55;flex:1 1 200px;min-width:0}
637
+
638
+ .verdict-layers{display:flex;align-items:baseline;gap:10px;padding:6px 18px 0;margin:0 0 16px;border-left:4px solid transparent;flex-wrap:wrap}
639
+ .verdict-layers-label{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-muted);font-weight:500}
640
+ .verdict-layers-content{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
641
+
642
+ /* v0.21 B.4 — 列表页 RUN ID 旁的 verdict status pill. inline-flex 紧凑 pill,
643
+ 颜色编码同 banner, 字号微小但对比清晰. 鼠标悬停/键盘聚焦时不抢戏 — 它只是
644
+ "这个 run 是什么 status" 的一眼瞥. */
645
+ .run-status{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:1px 8px;border-radius:var(--radius);margin-right:8px;line-height:1.5;letter-spacing:-0.005em;white-space:nowrap;color:var(--text-secondary);background:rgba(148,163,184,0.1);vertical-align:1px}
646
+ .run-status .run-status-dot{font-size:8px;line-height:1}
647
+ .run-status.verdict-PROGRESS{color:var(--green);background:rgba(74,222,128,0.12)}
648
+ .run-status.verdict-REGRESS{color:var(--red);background:rgba(248,113,113,0.12)}
649
+ .run-status.verdict-CAUTIOUS{color:var(--yellow);background:rgba(251,191,36,0.12)}
650
+ .run-status.verdict-UNDERPOWERED{color:var(--yellow);background:rgba(251,191,36,0.08)}
651
+ .run-status.verdict-NOISE{color:var(--text-secondary);background:rgba(148,163,184,0.1)}
652
+ .run-status.verdict-SOLO{color:var(--text-muted);background:transparent;border:1px solid var(--border)}
653
+
654
+ @media print{
655
+ .verdict-banner,.verdict-cta{break-inside:avoid;page-break-inside:avoid}
656
+ .run-status{border:1px solid #cbd5e1;background:transparent !important}
657
+ }
658
+
659
+ .modal-overlay{display:none;position:fixed;inset:0;z-index:999;background:rgba(0,0,0,0.6);align-items:center;justify-content:center}
660
+ .modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);max-width:800px;max-height:80vh;overflow:auto;padding:24px;margin:20px;width:90%}
661
+ .modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
662
+ .modal-close{cursor:pointer;background:none;border:none;color:var(--text-muted);font-size:18px;padding:8px 12px;border-radius:var(--radius);transition:background 0.15s,color 0.15s}
663
+ .modal-close:hover{color:var(--text-primary);background:var(--bg-surface)}
664
+ .modal-table{width:100%;font-size:13px;margin:12px 0;background:transparent;border:none;table-layout:auto}
665
+ .modal-table td{padding:6px 0;border:none;background:transparent;word-break:break-word;overflow-wrap:anywhere}
666
+ .modal-table td:first-child{white-space:nowrap;vertical-align:top;min-width:80px;padding-right:16px;word-break:keep-all}
667
+ /* Inline <code> inside modal text — improve readability on dark surfaces */
668
+ .modal-table code,.modal-glossary code,.modal-section code{background:var(--bg-surface);padding:1px 6px;border-radius:3px;font-size:var(--fs-micro);color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
669
+ @media(max-width:480px){.modal-table td{display:block;padding:3px 0}.modal-table td:first-child{font-weight:600}}
670
+ .hint-tip{display:none;position:absolute;bottom:calc(100% + 6px);right:0;background:var(--bg-elevated);border:1px solid var(--border-hover);border-radius:var(--radius);padding:6px 10px;font-size:11px;font-weight:400;color:var(--text-secondary);white-space:normal;max-width:280px;width:max-content;z-index:10}
671
+ .hint:hover .hint-tip,.hint:focus .hint-tip{display:block}
672
+ .summary-value{font-size:15px;font-weight:600;color:var(--text-primary);font-variant-numeric:tabular-nums}
673
+ .summary-detail{font-size:12px;color:var(--text-muted);margin-top:4px;line-height:1.5}
674
+ .summary-unit{font-size:12px;font-weight:400;color:var(--text-muted)}
675
+ .card-detail{margin-top:8px;font-size:12px;color:var(--text-secondary)}
676
+ .card-detail div{margin:2px 0}
677
+
678
+ /* Table */
679
+ .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:16px 0;position:relative}
680
+ /* 窄屏下 6 列宽 >700px 会横向溢出,右侧稳定性列容易被遮盖。
681
+ 加一条渐变阴影作为"可滑动"视觉提示,仅在 ≤768px 且可滚动容器里显示。 */
682
+ @media(max-width:768px){
683
+ .table-wrap::after{content:'';position:sticky;right:0;top:0;display:block;float:right;width:32px;height:100%;margin-left:-32px;margin-top:-100%;pointer-events:none;background:linear-gradient(to right,transparent,var(--bg-card) 85%);z-index:2}
684
+ }
685
+ /* 表格 — 稍紧凑(padding 7px 12px),正文 13px,字号上调跟全站对齐;
686
+ 非数字列保留 left-align(td.text 类),其它默认居中。 */
687
+ table{border-collapse:collapse;width:100%;font-size:13px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;line-height:1.5}
688
+ th{background:var(--bg-elevated);padding:8px 12px;text-align:center;vertical-align:middle;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border);font-size:12px;letter-spacing:0.02em;white-space:nowrap}
689
+ td{padding:7px 12px;border-bottom:1px solid var(--border);color:var(--text-secondary);font-variant-numeric:tabular-nums;text-align:center;vertical-align:middle}
690
+ td:first-child, th:first-child { text-align:left }
691
+ tr:last-child td{border-bottom:none}
692
+ tr:hover td{background:rgba(148,163,184,0.04)}
693
+
694
+ /* Badges */
695
+ .badge{display:inline-block;padding:2px 8px;border-radius:var(--radius);font-size:11px;font-weight:600}
696
+ .badge-ok{background:var(--green-bg);color:var(--green)}
697
+ .badge-err{background:var(--red-bg);color:var(--red)}
698
+ .badge-pass{background:var(--green-bg);color:var(--green)}
699
+ .badge-fail{background:var(--red-bg);color:var(--red)}
700
+ .badge-muted{background:var(--bg-surface);color:var(--text-muted);border:1px solid var(--border)}
701
+
702
+ /* Nav */
703
+ .nav{margin-bottom:24px;font-size:13px}
704
+
705
+ /* Error detail */
706
+ .error-detail{display:inline-block;font-size:11px;color:var(--red);word-break:break-all;max-width:260px}
707
+
708
+ /* Assertion & dimension tags */
709
+ .assertion-list{margin:4px 0;padding:0;list-style:none;font-size:11px}
710
+ .assertion-list li{margin:2px 0;color:var(--text-secondary)}
711
+ .dim-scores{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
712
+ .dim-tag{font-size:10px;padding:2px 7px;border-radius:4px;background:var(--info-bg);color:var(--accent)}
713
+ .dim-desc{font-size:11px;color:var(--text-muted);font-weight:400;margin-left:6px}
714
+
715
+ /* Bar chart */
716
+ .bar-row{display:flex;align-items:center;gap:8px;margin:6px 0}
717
+ .bar-label{flex:0 0 60px;font-size:12px;color:var(--text-muted)}
718
+ .bar-fill{flex:1;height:16px;border-radius:4px;opacity:0.8}
719
+ .bar-value{flex:0 0 auto;font-size:12px;color:var(--text-secondary)}
720
+
721
+ /* Forms */
722
+ input[type="text"]{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius);padding:6px 12px;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s}
723
+ input[type="text"]:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--info-bg)}
724
+ /* 通用 button — 浅色主题里默认 transparent + 边框更细。子样式(.run-card-delete, .tv-vtab,
725
+ .omk-view-tab, .hint-btn 等)各自有显式 reset 覆盖默认样式。 */
726
+ button{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius);cursor:pointer;padding:6px 14px;font-size:13px;font-family:inherit;transition:border-color .15s,color .15s,background .15s;outline:none;appearance:none;-webkit-appearance:none}
727
+ button:hover{border-color:var(--border-hover);color:var(--text-primary)}
728
+ button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
729
+
730
+ /* Lang toggle */
731
+ .lang-toggle{position:fixed;top:16px;right:16px;padding:6px 14px;z-index:100;font-size:12px}
732
+
733
+ /* Misc */
734
+ .btn-danger{color:var(--red)}
735
+
736
+ /* Focus */
737
+ a:focus-visible,.badge:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
738
+
739
+ /* Responsive */
740
+ @media(max-width:768px){
741
+ body{padding:16px}
742
+ .cards{flex-direction:column}
743
+ .card{min-width:0}
744
+ h1{font-size:1.25rem}
745
+ h2{font-size:0.875rem}
746
+ .lang-toggle{top:8px;right:8px;padding:4px 10px;font-size:11px}
747
+ button{min-height:44px;padding:8px 14px}
748
+ /* Override: hint buttons stay compact so they don't dominate mobile layout */
749
+ button.hint-btn{min-width:28px;min-height:28px;padding:4px}
750
+ /* Bump detail font so secondary lines are readable on mobile */
751
+ .detail-line{font-size:var(--fs-label)}
752
+ }
753
+ @media(max-width:480px){
754
+ body{padding:12px}
755
+ td,th{padding:8px 10px;font-size:12px}
756
+ }
757
+ @media print{
758
+ body{background:#fff;color:#1e293b;padding:20px;max-width:none}
759
+ h1,h2,.card-value,.summary-value,.summary-value-primary{color:#1e293b}
760
+ .card,.summary-table,table{background:#fff;border-color:#e2e8f0}
761
+ th{background:#f8fafc;color:#475569;border-color:#e2e8f0}
762
+ td{color:#334155;border-color:#f1f5f9}
763
+ .badge-ok,.badge-pass{background:#dcfce7;color:#166534}
764
+ .badge-err,.badge-fail{background:#fee2e2;color:#991b1b}
765
+ .badge-muted{background:#f8fafc;color:#94a3b8;border-color:#e2e8f0}
766
+ .dim-tag{background:#f1f5f9;color:#3b82f6}
767
+ .meta-tag{background:#f8fafc;border-color:#e2e8f0;color:#475569}
768
+ .bar-fill{opacity:1}
769
+ a{color:#1e293b;text-decoration:none}
770
+ .lang-toggle,.btn-danger,.nav{display:none}
771
+ .hint-tip{display:none}
772
+ .footer{color:#475569}
773
+ }
774
+ </style></head><body>${body}<footer class="footer" style="margin-top:40px;padding-top:16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-faint);text-align:center">Powered by oh-my-knowledge</footer>${langToggleScript()}</body></html>`;
775
+ }
776
+ //# sourceMappingURL=layout.js.map