oh-my-knowledge 0.29.0 → 0.31.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 (449) hide show
  1. package/README.md +204 -25
  2. package/README.zh.md +204 -25
  3. package/dist/src/analysis/report-diagnostics.js +2 -0
  4. package/dist/src/analysis/report-diagnostics.js.map +1 -1
  5. package/dist/src/authoring/evolver.d.ts +32 -2
  6. package/dist/src/authoring/evolver.d.ts.map +1 -1
  7. package/dist/src/authoring/evolver.js +416 -52
  8. package/dist/src/authoring/evolver.js.map +1 -1
  9. package/dist/src/authoring/generator.d.ts +24 -23
  10. package/dist/src/authoring/generator.d.ts.map +1 -1
  11. package/dist/src/authoring/generator.js +637 -40
  12. package/dist/src/authoring/generator.js.map +1 -1
  13. package/dist/src/authoring/sample-fixer.d.ts +51 -0
  14. package/dist/src/authoring/sample-fixer.d.ts.map +1 -0
  15. package/dist/src/authoring/sample-fixer.js +213 -0
  16. package/dist/src/authoring/sample-fixer.js.map +1 -0
  17. package/dist/src/cli/commands/doctor.d.ts +25 -1
  18. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  19. package/dist/src/cli/commands/doctor.js +233 -124
  20. package/dist/src/cli/commands/doctor.js.map +1 -1
  21. package/dist/src/cli/commands/eval/gold/compare.d.ts +17 -0
  22. package/dist/src/cli/commands/eval/gold/compare.d.ts.map +1 -0
  23. package/dist/src/cli/commands/eval/gold/compare.js +91 -0
  24. package/dist/src/cli/commands/eval/gold/compare.js.map +1 -0
  25. package/dist/src/cli/commands/eval/gold/index.d.ts +9 -0
  26. package/dist/src/cli/commands/eval/gold/index.d.ts.map +1 -0
  27. package/dist/src/cli/commands/eval/gold/index.js +34 -0
  28. package/dist/src/cli/commands/eval/gold/index.js.map +1 -0
  29. package/dist/src/cli/commands/eval/gold/init.d.ts +11 -0
  30. package/dist/src/cli/commands/eval/gold/init.d.ts.map +1 -0
  31. package/dist/src/cli/commands/eval/gold/init.js +51 -0
  32. package/dist/src/cli/commands/eval/gold/init.js.map +1 -0
  33. package/dist/src/cli/commands/eval/gold/validate.d.ts +12 -0
  34. package/dist/src/cli/commands/eval/gold/validate.d.ts.map +1 -0
  35. package/dist/src/cli/commands/eval/gold/validate.js +46 -0
  36. package/dist/src/cli/commands/eval/gold/validate.js.map +1 -0
  37. package/dist/src/cli/commands/eval/index.d.ts +54 -0
  38. package/dist/src/cli/commands/eval/index.d.ts.map +1 -0
  39. package/dist/src/cli/commands/{eval-runner.js → eval/index.js} +216 -50
  40. package/dist/src/cli/commands/eval/index.js.map +1 -0
  41. package/dist/src/cli/commands/evolve.d.ts +36 -1
  42. package/dist/src/cli/commands/evolve.d.ts.map +1 -1
  43. package/dist/src/cli/commands/evolve.js +202 -41
  44. package/dist/src/cli/commands/evolve.js.map +1 -1
  45. package/dist/src/cli/commands/init.d.ts +15 -1
  46. package/dist/src/cli/commands/init.d.ts.map +1 -1
  47. package/dist/src/cli/commands/init.js +70 -28
  48. package/dist/src/cli/commands/init.js.map +1 -1
  49. package/dist/src/cli/commands/observe/inbox.d.ts +23 -0
  50. package/dist/src/cli/commands/observe/inbox.d.ts.map +1 -0
  51. package/dist/src/cli/commands/observe/inbox.js +258 -0
  52. package/dist/src/cli/commands/observe/inbox.js.map +1 -0
  53. package/dist/src/cli/commands/observe/index.d.ts +22 -0
  54. package/dist/src/cli/commands/observe/index.d.ts.map +1 -0
  55. package/dist/src/cli/commands/observe/index.js +118 -0
  56. package/dist/src/cli/commands/observe/index.js.map +1 -0
  57. package/dist/src/cli/commands/observe/ingest.d.ts +13 -0
  58. package/dist/src/cli/commands/observe/ingest.d.ts.map +1 -0
  59. package/dist/src/cli/commands/observe/ingest.js +69 -0
  60. package/dist/src/cli/commands/observe/ingest.js.map +1 -0
  61. package/dist/src/cli/commands/observe/show.d.ts +13 -0
  62. package/dist/src/cli/commands/observe/show.d.ts.map +1 -0
  63. package/dist/src/cli/commands/observe/show.js +49 -0
  64. package/dist/src/cli/commands/observe/show.js.map +1 -0
  65. package/dist/src/cli/commands/sample.d.ts +37 -1
  66. package/dist/src/cli/commands/sample.d.ts.map +1 -1
  67. package/dist/src/cli/commands/sample.js +402 -35
  68. package/dist/src/cli/commands/sample.js.map +1 -1
  69. package/dist/src/cli/commands/skill-extract.d.ts +20 -0
  70. package/dist/src/cli/commands/skill-extract.d.ts.map +1 -0
  71. package/dist/src/cli/commands/skill-extract.js +84 -0
  72. package/dist/src/cli/commands/skill-extract.js.map +1 -0
  73. package/dist/src/cli/commands/studio.d.ts +22 -1
  74. package/dist/src/cli/commands/studio.d.ts.map +1 -1
  75. package/dist/src/cli/commands/studio.js +111 -37
  76. package/dist/src/cli/commands/studio.js.map +1 -1
  77. package/dist/src/cli/index.js +15 -47
  78. package/dist/src/cli/index.js.map +1 -1
  79. package/dist/src/cli/lib/cli-exit.d.ts +16 -0
  80. package/dist/src/cli/lib/cli-exit.d.ts.map +1 -0
  81. package/dist/src/cli/lib/cli-exit.js +20 -0
  82. package/dist/src/cli/lib/cli-exit.js.map +1 -0
  83. package/dist/src/cli/lib/cmd-flags.d.ts +236 -0
  84. package/dist/src/cli/lib/cmd-flags.d.ts.map +1 -0
  85. package/dist/src/cli/lib/cmd-flags.js +46 -0
  86. package/dist/src/cli/lib/cmd-flags.js.map +1 -0
  87. package/dist/src/cli/{i18n-dict.d.ts → lib/i18n-dict.d.ts} +1 -1
  88. package/dist/src/cli/lib/i18n-dict.d.ts.map +1 -0
  89. package/dist/src/cli/{i18n-dict.js → lib/i18n-dict.js} +93 -260
  90. package/dist/src/cli/lib/i18n-dict.js.map +1 -0
  91. package/dist/src/cli/{i18n.d.ts → lib/i18n.d.ts} +11 -6
  92. package/dist/src/cli/lib/i18n.d.ts.map +1 -0
  93. package/dist/src/cli/{i18n.js → lib/i18n.js} +12 -7
  94. package/dist/src/cli/lib/i18n.js.map +1 -0
  95. package/dist/src/cli/{parse-run-config.d.ts → lib/parse-run-config.d.ts} +19 -8
  96. package/dist/src/cli/lib/parse-run-config.d.ts.map +1 -0
  97. package/dist/src/cli/{parse-run-config.js → lib/parse-run-config.js} +60 -58
  98. package/dist/src/cli/lib/parse-run-config.js.map +1 -0
  99. package/dist/src/cli/lib/progress.d.ts.map +1 -0
  100. package/dist/src/cli/lib/progress.js.map +1 -0
  101. package/dist/src/cli/{run-tally.d.ts → lib/run-tally.d.ts} +1 -1
  102. package/dist/src/cli/lib/run-tally.d.ts.map +1 -0
  103. package/dist/src/cli/lib/run-tally.js.map +1 -0
  104. package/dist/src/cli/{commands/_shared.d.ts → lib/shared.d.ts} +2 -2
  105. package/dist/src/cli/lib/shared.d.ts.map +1 -0
  106. package/dist/src/cli/{commands/_shared.js → lib/shared.js} +3 -3
  107. package/dist/src/cli/lib/shared.js.map +1 -0
  108. package/dist/src/cli/lib/update-check.d.ts.map +1 -0
  109. package/dist/src/cli/lib/update-check.js.map +1 -0
  110. package/dist/src/cli/oclif/base-command.d.ts +8 -0
  111. package/dist/src/cli/oclif/base-command.d.ts.map +1 -0
  112. package/dist/src/cli/oclif/base-command.js +27 -0
  113. package/dist/src/cli/oclif/base-command.js.map +1 -0
  114. package/dist/src/cli/oclif/help.d.ts +16 -0
  115. package/dist/src/cli/oclif/help.d.ts.map +1 -0
  116. package/dist/src/cli/oclif/help.js +33 -0
  117. package/dist/src/cli/oclif/help.js.map +1 -0
  118. package/dist/src/cli/oclif/i18n.d.ts +16 -0
  119. package/dist/src/cli/oclif/i18n.d.ts.map +1 -0
  120. package/dist/src/cli/oclif/i18n.js +62 -0
  121. package/dist/src/cli/oclif/i18n.js.map +1 -0
  122. package/dist/src/cli/oclif/parsers.d.ts +10 -0
  123. package/dist/src/cli/oclif/parsers.d.ts.map +1 -0
  124. package/dist/src/cli/oclif/parsers.js +102 -0
  125. package/dist/src/cli/oclif/parsers.js.map +1 -0
  126. package/dist/src/cli/oclif/projection.d.ts +23 -0
  127. package/dist/src/cli/oclif/projection.d.ts.map +1 -0
  128. package/dist/src/cli/oclif/projection.js +52 -0
  129. package/dist/src/cli/oclif/projection.js.map +1 -0
  130. package/dist/src/cli/oclif/run.d.ts +2 -0
  131. package/dist/src/cli/oclif/run.d.ts.map +1 -0
  132. package/dist/src/cli/oclif/run.js +11 -0
  133. package/dist/src/cli/oclif/run.js.map +1 -0
  134. package/dist/src/diagnosis/observe-mapper.d.ts +68 -0
  135. package/dist/src/diagnosis/observe-mapper.d.ts.map +1 -0
  136. package/dist/src/diagnosis/observe-mapper.js +276 -0
  137. package/dist/src/diagnosis/observe-mapper.js.map +1 -0
  138. package/dist/src/diagnosis/observe-producer.d.ts +9 -0
  139. package/dist/src/diagnosis/observe-producer.d.ts.map +1 -0
  140. package/dist/src/diagnosis/observe-producer.js +197 -0
  141. package/dist/src/diagnosis/observe-producer.js.map +1 -0
  142. package/dist/src/diagnosis/studio-projection.d.ts +14 -0
  143. package/dist/src/diagnosis/studio-projection.d.ts.map +1 -0
  144. package/dist/src/diagnosis/studio-projection.js +84 -0
  145. package/dist/src/diagnosis/studio-projection.js.map +1 -0
  146. package/dist/src/diagnosis/types.d.ts +79 -0
  147. package/dist/src/diagnosis/types.d.ts.map +1 -0
  148. package/dist/src/diagnosis/types.js +20 -0
  149. package/dist/src/diagnosis/types.js.map +1 -0
  150. package/dist/src/doctor/fixer.d.ts +12 -0
  151. package/dist/src/doctor/fixer.d.ts.map +1 -0
  152. package/dist/src/doctor/fixer.js +326 -0
  153. package/dist/src/doctor/fixer.js.map +1 -0
  154. package/dist/src/doctor/health/builtin-dimensions.d.ts.map +1 -1
  155. package/dist/src/doctor/health/builtin-dimensions.js +20 -23
  156. package/dist/src/doctor/health/builtin-dimensions.js.map +1 -1
  157. package/dist/src/doctor/health/composer.d.ts.map +1 -1
  158. package/dist/src/doctor/health/composer.js +14 -7
  159. package/dist/src/doctor/health/composer.js.map +1 -1
  160. package/dist/src/doctor/health/dimension-spec.d.ts +1 -0
  161. package/dist/src/doctor/health/dimension-spec.d.ts.map +1 -1
  162. package/dist/src/doctor/health/parser.d.ts +0 -1
  163. package/dist/src/doctor/health/parser.d.ts.map +1 -1
  164. package/dist/src/doctor/health/parser.js +38 -0
  165. package/dist/src/doctor/health/parser.js.map +1 -1
  166. package/dist/src/doctor/health/prompt-builder.d.ts +2 -21
  167. package/dist/src/doctor/health/prompt-builder.d.ts.map +1 -1
  168. package/dist/src/doctor/health/prompt-builder.js +1 -161
  169. package/dist/src/doctor/health/prompt-builder.js.map +1 -1
  170. package/dist/src/doctor/html-renderer.d.ts +1 -1
  171. package/dist/src/doctor/html-renderer.d.ts.map +1 -1
  172. package/dist/src/doctor/html-renderer.js +78 -68
  173. package/dist/src/doctor/html-renderer.js.map +1 -1
  174. package/dist/src/doctor/index.d.ts.map +1 -1
  175. package/dist/src/doctor/index.js +1 -0
  176. package/dist/src/doctor/index.js.map +1 -1
  177. package/dist/src/doctor/renderer.d.ts +1 -1
  178. package/dist/src/doctor/renderer.d.ts.map +1 -1
  179. package/dist/src/doctor/renderer.js +2 -2
  180. package/dist/src/doctor/renderer.js.map +1 -1
  181. package/dist/src/doctor/rules.d.ts.map +1 -1
  182. package/dist/src/doctor/rules.js +33 -1
  183. package/dist/src/doctor/rules.js.map +1 -1
  184. package/dist/src/eval-core/cache.d.ts +16 -2
  185. package/dist/src/eval-core/cache.d.ts.map +1 -1
  186. package/dist/src/eval-core/cache.js +86 -15
  187. package/dist/src/eval-core/cache.js.map +1 -1
  188. package/dist/src/eval-core/evaluation-execution.d.ts +11 -1
  189. package/dist/src/eval-core/evaluation-execution.d.ts.map +1 -1
  190. package/dist/src/eval-core/evaluation-execution.js +78 -6
  191. package/dist/src/eval-core/evaluation-execution.js.map +1 -1
  192. package/dist/src/eval-core/evaluation-job.d.ts +2 -1
  193. package/dist/src/eval-core/evaluation-job.d.ts.map +1 -1
  194. package/dist/src/eval-core/evaluation-job.js +2 -1
  195. package/dist/src/eval-core/evaluation-job.js.map +1 -1
  196. package/dist/src/eval-core/evaluation-reporting.d.ts +7 -0
  197. package/dist/src/eval-core/evaluation-reporting.d.ts.map +1 -1
  198. package/dist/src/eval-core/evaluation-reporting.js +19 -2
  199. package/dist/src/eval-core/evaluation-reporting.js.map +1 -1
  200. package/dist/src/eval-core/execution-strategy.d.ts +1 -1
  201. package/dist/src/eval-core/execution-strategy.d.ts.map +1 -1
  202. package/dist/src/eval-core/execution-strategy.js +12 -1
  203. package/dist/src/eval-core/execution-strategy.js.map +1 -1
  204. package/dist/src/eval-core/mock-hook.cjs +215 -0
  205. package/dist/src/eval-core/mocks-runtime.d.ts +100 -0
  206. package/dist/src/eval-core/mocks-runtime.d.ts.map +1 -0
  207. package/dist/src/eval-core/mocks-runtime.js +559 -0
  208. package/dist/src/eval-core/mocks-runtime.js.map +1 -0
  209. package/dist/src/eval-core/schema.d.ts.map +1 -1
  210. package/dist/src/eval-core/schema.js +18 -5
  211. package/dist/src/eval-core/schema.js.map +1 -1
  212. package/dist/src/eval-core/task-planner.d.ts +9 -1
  213. package/dist/src/eval-core/task-planner.d.ts.map +1 -1
  214. package/dist/src/eval-core/task-planner.js +40 -1
  215. package/dist/src/eval-core/task-planner.js.map +1 -1
  216. package/dist/src/eval-workflows/batch-evaluation-workflow.d.ts +5 -1
  217. package/dist/src/eval-workflows/batch-evaluation-workflow.d.ts.map +1 -1
  218. package/dist/src/eval-workflows/batch-evaluation-workflow.js +2 -1
  219. package/dist/src/eval-workflows/batch-evaluation-workflow.js.map +1 -1
  220. package/dist/src/eval-workflows/evaluation-pipeline.d.ts +23 -2
  221. package/dist/src/eval-workflows/evaluation-pipeline.d.ts.map +1 -1
  222. package/dist/src/eval-workflows/evaluation-pipeline.js +40 -13
  223. package/dist/src/eval-workflows/evaluation-pipeline.js.map +1 -1
  224. package/dist/src/eval-workflows/evaluation-preparation.d.ts +5 -0
  225. package/dist/src/eval-workflows/evaluation-preparation.d.ts.map +1 -1
  226. package/dist/src/eval-workflows/evaluation-preparation.js +3 -1
  227. package/dist/src/eval-workflows/evaluation-preparation.js.map +1 -1
  228. package/dist/src/eval-workflows/run-evaluation.d.ts +12 -2
  229. package/dist/src/eval-workflows/run-evaluation.d.ts.map +1 -1
  230. package/dist/src/eval-workflows/run-evaluation.js +18 -6
  231. package/dist/src/eval-workflows/run-evaluation.js.map +1 -1
  232. package/dist/src/executors/claude-cli.d.ts +1 -1
  233. package/dist/src/executors/claude-cli.d.ts.map +1 -1
  234. package/dist/src/executors/claude-cli.js +59 -6
  235. package/dist/src/executors/claude-cli.js.map +1 -1
  236. package/dist/src/executors/claude-sdk-trace.d.ts.map +1 -1
  237. package/dist/src/executors/claude-sdk-trace.js +10 -4
  238. package/dist/src/executors/claude-sdk-trace.js.map +1 -1
  239. package/dist/src/executors/claude-sdk.d.ts +1 -1
  240. package/dist/src/executors/claude-sdk.d.ts.map +1 -1
  241. package/dist/src/executors/claude-sdk.js +25 -2
  242. package/dist/src/executors/claude-sdk.js.map +1 -1
  243. package/dist/src/executors/shared.d.ts +1 -1
  244. package/dist/src/executors/shared.d.ts.map +1 -1
  245. package/dist/src/executors/shared.js +6 -1
  246. package/dist/src/executors/shared.js.map +1 -1
  247. package/dist/src/grading/assertions.d.ts +5 -0
  248. package/dist/src/grading/assertions.d.ts.map +1 -1
  249. package/dist/src/grading/assertions.js +27 -1
  250. package/dist/src/grading/assertions.js.map +1 -1
  251. package/dist/src/grading/diagnostic.d.ts +40 -0
  252. package/dist/src/grading/diagnostic.d.ts.map +1 -0
  253. package/dist/src/grading/diagnostic.js +450 -0
  254. package/dist/src/grading/diagnostic.js.map +1 -0
  255. package/dist/src/grading/index.d.ts +5 -0
  256. package/dist/src/grading/index.d.ts.map +1 -1
  257. package/dist/src/grading/judge.d.ts.map +1 -1
  258. package/dist/src/grading/judge.js +54 -2
  259. package/dist/src/grading/judge.js.map +1 -1
  260. package/dist/src/grading/layered-scores.d.ts.map +1 -1
  261. package/dist/src/grading/layered-scores.js +1 -0
  262. package/dist/src/grading/layered-scores.js.map +1 -1
  263. package/dist/src/inputs/eval-config.js +19 -0
  264. package/dist/src/inputs/eval-config.js.map +1 -1
  265. package/dist/src/inputs/load-samples.d.ts +22 -2
  266. package/dist/src/inputs/load-samples.d.ts.map +1 -1
  267. package/dist/src/inputs/load-samples.js +193 -22
  268. package/dist/src/inputs/load-samples.js.map +1 -1
  269. package/dist/src/inputs/skill-loader.d.ts.map +1 -1
  270. package/dist/src/inputs/skill-loader.js +11 -3
  271. package/dist/src/inputs/skill-loader.js.map +1 -1
  272. package/dist/src/observability/experience.d.ts +441 -0
  273. package/dist/src/observability/experience.d.ts.map +1 -0
  274. package/dist/src/observability/experience.js +2400 -0
  275. package/dist/src/observability/experience.js.map +1 -0
  276. package/dist/src/observability/inbox-view-model.d.ts +14 -1
  277. package/dist/src/observability/inbox-view-model.d.ts.map +1 -1
  278. package/dist/src/observability/inbox-view-model.js +85 -3
  279. package/dist/src/observability/inbox-view-model.js.map +1 -1
  280. package/dist/src/observability/inbox.d.ts +29 -2
  281. package/dist/src/observability/inbox.d.ts.map +1 -1
  282. package/dist/src/observability/inbox.js +62 -10
  283. package/dist/src/observability/inbox.js.map +1 -1
  284. package/dist/src/observability/problem-patterns.d.ts +52 -0
  285. package/dist/src/observability/problem-patterns.d.ts.map +1 -0
  286. package/dist/src/observability/problem-patterns.js +205 -0
  287. package/dist/src/observability/problem-patterns.js.map +1 -0
  288. package/dist/src/observability/resolved-review.d.ts +25 -0
  289. package/dist/src/observability/resolved-review.d.ts.map +1 -0
  290. package/dist/src/observability/resolved-review.js +231 -0
  291. package/dist/src/observability/resolved-review.js.map +1 -0
  292. package/dist/src/observability/review-state.d.ts +61 -0
  293. package/dist/src/observability/review-state.d.ts.map +1 -0
  294. package/dist/src/observability/review-state.js +169 -0
  295. package/dist/src/observability/review-state.js.map +1 -0
  296. package/dist/src/observability/skill-chain-advisories.d.ts +25 -0
  297. package/dist/src/observability/skill-chain-advisories.d.ts.map +1 -0
  298. package/dist/src/observability/skill-chain-advisories.js +69 -0
  299. package/dist/src/observability/skill-chain-advisories.js.map +1 -0
  300. package/dist/src/observability/skill-chain.d.ts +62 -0
  301. package/dist/src/observability/skill-chain.d.ts.map +1 -0
  302. package/dist/src/observability/skill-chain.js +270 -0
  303. package/dist/src/observability/skill-chain.js.map +1 -0
  304. package/dist/src/observability/soft-standards.d.ts +130 -0
  305. package/dist/src/observability/soft-standards.d.ts.map +1 -0
  306. package/dist/src/observability/soft-standards.js +426 -0
  307. package/dist/src/observability/soft-standards.js.map +1 -0
  308. package/dist/src/observability/text-signals.d.ts +14 -0
  309. package/dist/src/observability/text-signals.d.ts.map +1 -0
  310. package/dist/src/observability/text-signals.js +106 -0
  311. package/dist/src/observability/text-signals.js.map +1 -0
  312. package/dist/src/observability/trace-adapter.d.ts +1 -1
  313. package/dist/src/observability/trace-adapter.d.ts.map +1 -1
  314. package/dist/src/observability/trace-adapter.js +1 -1
  315. package/dist/src/observability/trace-adapter.js.map +1 -1
  316. package/dist/src/observability/trace-attribution.d.ts +29 -1
  317. package/dist/src/observability/trace-attribution.d.ts.map +1 -1
  318. package/dist/src/observability/trace-attribution.js +106 -10
  319. package/dist/src/observability/trace-attribution.js.map +1 -1
  320. package/dist/src/observability/trace-segmenter.d.ts +11 -1
  321. package/dist/src/observability/trace-segmenter.d.ts.map +1 -1
  322. package/dist/src/observability/trace-segmenter.js +121 -30
  323. package/dist/src/observability/trace-segmenter.js.map +1 -1
  324. package/dist/src/observability/trace-source.d.ts +28 -1
  325. package/dist/src/observability/trace-source.d.ts.map +1 -1
  326. package/dist/src/observability/trace-source.js +366 -6
  327. package/dist/src/observability/trace-source.js.map +1 -1
  328. package/dist/src/renderer/html-renderer.d.ts.map +1 -1
  329. package/dist/src/renderer/html-renderer.js +229 -171
  330. package/dist/src/renderer/html-renderer.js.map +1 -1
  331. package/dist/src/renderer/layout.d.ts.map +1 -1
  332. package/dist/src/renderer/layout.js +108 -61
  333. package/dist/src/renderer/layout.js.map +1 -1
  334. package/dist/src/renderer/observation-inbox-renderer.d.ts.map +1 -1
  335. package/dist/src/renderer/observation-inbox-renderer.js +9551 -85
  336. package/dist/src/renderer/observation-inbox-renderer.js.map +1 -1
  337. package/dist/src/renderer/skill-detail-renderer.d.ts +15 -0
  338. package/dist/src/renderer/skill-detail-renderer.d.ts.map +1 -0
  339. package/dist/src/renderer/skill-detail-renderer.js +1244 -0
  340. package/dist/src/renderer/skill-detail-renderer.js.map +1 -0
  341. package/dist/src/renderer/skill-list-renderer.d.ts +4 -0
  342. package/dist/src/renderer/skill-list-renderer.d.ts.map +1 -0
  343. package/dist/src/renderer/skill-list-renderer.js +334 -0
  344. package/dist/src/renderer/skill-list-renderer.js.map +1 -0
  345. package/dist/src/renderer/summary.d.ts.map +1 -1
  346. package/dist/src/renderer/summary.js +78 -50
  347. package/dist/src/renderer/summary.js.map +1 -1
  348. package/dist/src/renderer/table.d.ts.map +1 -1
  349. package/dist/src/renderer/table.js +213 -167
  350. package/dist/src/renderer/table.js.map +1 -1
  351. package/dist/src/renderer/test-view.d.ts +66 -0
  352. package/dist/src/renderer/test-view.d.ts.map +1 -0
  353. package/dist/src/renderer/test-view.js +905 -0
  354. package/dist/src/renderer/test-view.js.map +1 -0
  355. package/dist/src/server/report-server.d.ts +4 -1
  356. package/dist/src/server/report-server.d.ts.map +1 -1
  357. package/dist/src/server/report-server.js +242 -4
  358. package/dist/src/server/report-server.js.map +1 -1
  359. package/dist/src/server/report-store.d.ts.map +1 -1
  360. package/dist/src/server/report-store.js +33 -1
  361. package/dist/src/server/report-store.js.map +1 -1
  362. package/dist/src/server/skill-index.d.ts +81 -0
  363. package/dist/src/server/skill-index.d.ts.map +1 -0
  364. package/dist/src/server/skill-index.js +377 -0
  365. package/dist/src/server/skill-index.js.map +1 -0
  366. package/dist/src/server/skill-insights.d.ts +101 -0
  367. package/dist/src/server/skill-insights.d.ts.map +1 -0
  368. package/dist/src/server/skill-insights.js +788 -0
  369. package/dist/src/server/skill-insights.js.map +1 -0
  370. package/dist/src/shared/hard-rules.d.ts +42 -0
  371. package/dist/src/shared/hard-rules.d.ts.map +1 -0
  372. package/dist/src/shared/hard-rules.js +242 -0
  373. package/dist/src/shared/hard-rules.js.map +1 -0
  374. package/dist/src/shared/llm-prompts/index.d.ts +14 -0
  375. package/dist/src/shared/llm-prompts/index.d.ts.map +1 -0
  376. package/dist/src/shared/llm-prompts/index.js +35 -0
  377. package/dist/src/shared/llm-prompts/index.js.map +1 -0
  378. package/dist/src/shared/llm-prompts/skill-health.d.ts +22 -0
  379. package/dist/src/shared/llm-prompts/skill-health.d.ts.map +1 -0
  380. package/dist/src/shared/llm-prompts/skill-health.js +170 -0
  381. package/dist/src/shared/llm-prompts/skill-health.js.map +1 -0
  382. package/dist/src/shared/time.d.ts +2 -0
  383. package/dist/src/shared/time.d.ts.map +1 -0
  384. package/dist/src/shared/time.js +10 -0
  385. package/dist/src/shared/time.js.map +1 -0
  386. package/dist/src/types/doctor.d.ts +2 -0
  387. package/dist/src/types/doctor.d.ts.map +1 -1
  388. package/dist/src/types/eval.d.ts +88 -0
  389. package/dist/src/types/eval.d.ts.map +1 -1
  390. package/dist/src/types/executor.d.ts +43 -0
  391. package/dist/src/types/executor.d.ts.map +1 -1
  392. package/dist/src/types/judge.d.ts +76 -0
  393. package/dist/src/types/judge.d.ts.map +1 -1
  394. package/dist/src/types/judge.js +3 -1
  395. package/dist/src/types/judge.js.map +1 -1
  396. package/dist/src/types/report.d.ts +69 -3
  397. package/dist/src/types/report.d.ts.map +1 -1
  398. package/dist/src/util/safe-slice.d.ts +23 -0
  399. package/dist/src/util/safe-slice.d.ts.map +1 -0
  400. package/dist/src/util/safe-slice.js +33 -0
  401. package/dist/src/util/safe-slice.js.map +1 -0
  402. package/docs/prompts/llm-enhanced-review.prompt.md +111 -0
  403. package/package.json +33 -7
  404. package/dist/src/cli/cli-exit.d.ts +0 -15
  405. package/dist/src/cli/cli-exit.d.ts.map +0 -1
  406. package/dist/src/cli/cli-exit.js +0 -19
  407. package/dist/src/cli/cli-exit.js.map +0 -1
  408. package/dist/src/cli/commands/_shared.d.ts.map +0 -1
  409. package/dist/src/cli/commands/_shared.js.map +0 -1
  410. package/dist/src/cli/commands/eval-gold.d.ts +0 -2
  411. package/dist/src/cli/commands/eval-gold.d.ts.map +0 -1
  412. package/dist/src/cli/commands/eval-gold.js +0 -137
  413. package/dist/src/cli/commands/eval-gold.js.map +0 -1
  414. package/dist/src/cli/commands/eval-runner.d.ts +0 -2
  415. package/dist/src/cli/commands/eval-runner.d.ts.map +0 -1
  416. package/dist/src/cli/commands/eval-runner.js.map +0 -1
  417. package/dist/src/cli/commands/eval.d.ts +0 -2
  418. package/dist/src/cli/commands/eval.d.ts.map +0 -1
  419. package/dist/src/cli/commands/eval.js +0 -11
  420. package/dist/src/cli/commands/eval.js.map +0 -1
  421. package/dist/src/cli/commands/observe.d.ts +0 -2
  422. package/dist/src/cli/commands/observe.d.ts.map +0 -1
  423. package/dist/src/cli/commands/observe.js +0 -246
  424. package/dist/src/cli/commands/observe.js.map +0 -1
  425. package/dist/src/cli/commands/registry.d.ts +0 -11
  426. package/dist/src/cli/commands/registry.d.ts.map +0 -1
  427. package/dist/src/cli/commands/registry.js +0 -32
  428. package/dist/src/cli/commands/registry.js.map +0 -1
  429. package/dist/src/cli/i18n-dict.d.ts.map +0 -1
  430. package/dist/src/cli/i18n-dict.js.map +0 -1
  431. package/dist/src/cli/i18n.d.ts.map +0 -1
  432. package/dist/src/cli/i18n.js.map +0 -1
  433. package/dist/src/cli/parse-run-config.d.ts.map +0 -1
  434. package/dist/src/cli/parse-run-config.js.map +0 -1
  435. package/dist/src/cli/parse-strict.d.ts +0 -7
  436. package/dist/src/cli/parse-strict.d.ts.map +0 -1
  437. package/dist/src/cli/parse-strict.js +0 -26
  438. package/dist/src/cli/parse-strict.js.map +0 -1
  439. package/dist/src/cli/progress.d.ts.map +0 -1
  440. package/dist/src/cli/progress.js.map +0 -1
  441. package/dist/src/cli/run-tally.d.ts.map +0 -1
  442. package/dist/src/cli/run-tally.js.map +0 -1
  443. package/dist/src/cli/update-check.d.ts.map +0 -1
  444. package/dist/src/cli/update-check.js.map +0 -1
  445. /package/dist/src/cli/{progress.d.ts → lib/progress.d.ts} +0 -0
  446. /package/dist/src/cli/{progress.js → lib/progress.js} +0 -0
  447. /package/dist/src/cli/{run-tally.js → lib/run-tally.js} +0 -0
  448. /package/dist/src/cli/{update-check.d.ts → lib/update-check.d.ts} +0 -0
  449. /package/dist/src/cli/{update-check.js → lib/update-check.js} +0 -0
@@ -0,0 +1,62 @@
1
+ import { type SkillHardRule, type SkillWorkflow } from '../shared/hard-rules.js';
2
+ import type { SkillChainAdvisoryCode } from './skill-chain-advisories.js';
3
+ import type { ObservationExperienceReport } from './experience.js';
4
+ export type ObservationRuntimeCheckStatus = 'passed' | 'attention' | 'manual_review';
5
+ export interface ObservationRuntimeCheck {
6
+ kind: 'hardRule' | 'workflowNode';
7
+ id: string;
8
+ title: string;
9
+ expectation: string;
10
+ status: ObservationRuntimeCheckStatus;
11
+ reason: string;
12
+ evidenceCount: number;
13
+ evidenceSnippets: string[];
14
+ }
15
+ export interface ObservationSkillChain {
16
+ skillName: string;
17
+ definition: {
18
+ found: boolean;
19
+ path?: string;
20
+ content?: string;
21
+ truncated?: boolean;
22
+ };
23
+ healthCheck: {
24
+ source: 'doctor-static-rules';
25
+ hardRules: {
26
+ declared: boolean;
27
+ valid: boolean;
28
+ count: number;
29
+ rules: SkillHardRule[];
30
+ errors: string[];
31
+ advisoryCode?: SkillChainAdvisoryCode;
32
+ };
33
+ workflows: {
34
+ declared: boolean;
35
+ valid: boolean;
36
+ branchCount: number;
37
+ nodeCount: number;
38
+ workflows: SkillWorkflow[];
39
+ errors: string[];
40
+ source: 'frontmatter' | 'markdown_headings' | 'none';
41
+ advisoryCode?: SkillChainAdvisoryCode;
42
+ };
43
+ };
44
+ runtime: {
45
+ supported: true;
46
+ mode: 'deterministic-no-llm';
47
+ message: string;
48
+ summary: {
49
+ invocationCount: number;
50
+ toolCallCount: number;
51
+ toolFailureCount: number;
52
+ passedCount: number;
53
+ attentionCount: number;
54
+ manualReviewCount: number;
55
+ };
56
+ hardRules: ObservationRuntimeCheck[];
57
+ workflowNodes: ObservationRuntimeCheck[];
58
+ };
59
+ }
60
+ export declare function buildObservationSkillChains(skillNames: string[], cwd?: string, experienceReports?: ObservationExperienceReport[]): Record<string, ObservationSkillChain>;
61
+ export declare function buildObservationSkillChain(skillName: string, cwd?: string, experienceReports?: ObservationExperienceReport[]): ObservationSkillChain;
62
+ //# sourceMappingURL=skill-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-chain.d.ts","sourceRoot":"","sources":["../../../src/observability/skill-chain.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAiD,MAAM,iBAAiB,CAAC;AAElH,MAAM,MAAM,6BAA6B,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;AAErF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,6BAA6B,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QACV,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,WAAW,EAAE;QACX,MAAM,EAAE,qBAAqB,CAAC;QAC9B,SAAS,EAAE;YACT,QAAQ,EAAE,OAAO,CAAC;YAClB,KAAK,EAAE,OAAO,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,aAAa,EAAE,CAAC;YACvB,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,YAAY,CAAC,EAAE,sBAAsB,CAAC;SACvC,CAAC;QACF,SAAS,EAAE;YACT,QAAQ,EAAE,OAAO,CAAC;YAClB,KAAK,EAAE,OAAO,CAAC;YACf,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,aAAa,EAAE,CAAC;YAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,MAAM,EAAE,aAAa,GAAG,mBAAmB,GAAG,MAAM,CAAC;YACrD,YAAY,CAAC,EAAE,sBAAsB,CAAC;SACvC,CAAC;KACH,CAAC;IACF,OAAO,EAAE;QACP,SAAS,EAAE,IAAI,CAAC;QAChB,IAAI,EAAE,sBAAsB,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE;YACP,eAAe,EAAE,MAAM,CAAC;YACxB,aAAa,EAAE,MAAM,CAAC;YACtB,gBAAgB,EAAE,MAAM,CAAC;YACzB,WAAW,EAAE,MAAM,CAAC;YACpB,cAAc,EAAE,MAAM,CAAC;YACvB,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC;QACF,SAAS,EAAE,uBAAuB,EAAE,CAAC;QACrC,aAAa,EAAE,uBAAuB,EAAE,CAAC;KAC1C,CAAC;CACH;AAID,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,SAAgB,EAAE,iBAAiB,GAAE,2BAA2B,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAGnL;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAgB,EAAE,iBAAiB,GAAE,2BAA2B,EAAO,GAAG,qBAAqB,CA2C/J"}
@@ -0,0 +1,270 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { extractMarkdownStepWorkflows, validateSkillHardRules, validateSkillWorkflows, } from '../shared/hard-rules.js';
5
+ const MAX_SKILL_DEFINITION_CHARS = 12000;
6
+ export function buildObservationSkillChains(skillNames, cwd = process.cwd(), experienceReports = []) {
7
+ const uniqueSkillNames = Array.from(new Set(skillNames.filter(Boolean))).sort();
8
+ return Object.fromEntries(uniqueSkillNames.map((skillName) => [skillName, buildObservationSkillChain(skillName, cwd, experienceReports)]));
9
+ }
10
+ export function buildObservationSkillChain(skillName, cwd = process.cwd(), experienceReports = []) {
11
+ const path = findSkillMdPath(skillName, cwd);
12
+ if (!path)
13
+ return emptySkillChain(skillName, experienceReports);
14
+ const content = readFileSync(path, 'utf-8');
15
+ const hardRules = validateSkillHardRules(content);
16
+ const workflows = validateSkillWorkflows(content);
17
+ const markdownWorkflows = workflows.workflows.length > 0 ? [] : extractMarkdownStepWorkflows(content);
18
+ const effectiveWorkflows = workflows.workflows.length > 0 ? workflows.workflows : markdownWorkflows;
19
+ const workflowSource = workflows.workflows.length > 0 ? 'frontmatter' : markdownWorkflows.length > 0 ? 'markdown_headings' : 'none';
20
+ const nodeCount = effectiveWorkflows.reduce((sum, workflow) => sum + workflow.nodes.length, 0);
21
+ const truncated = content.length > MAX_SKILL_DEFINITION_CHARS;
22
+ const runtime = buildRuntimeChecks(skillName, hardRules.rules, effectiveWorkflows, experienceReports);
23
+ return {
24
+ skillName,
25
+ definition: {
26
+ found: true,
27
+ path,
28
+ content: truncated ? content.slice(0, MAX_SKILL_DEFINITION_CHARS) : content,
29
+ truncated,
30
+ },
31
+ healthCheck: {
32
+ source: 'doctor-static-rules',
33
+ hardRules: {
34
+ declared: hardRules.declared,
35
+ valid: hardRules.ok,
36
+ count: hardRules.rules.length,
37
+ rules: hardRules.rules,
38
+ errors: hardRules.errors,
39
+ ...(hardRules.declared ? {} : { advisoryCode: 'hardrules_not_declared' }),
40
+ },
41
+ workflows: {
42
+ declared: workflows.declared,
43
+ valid: workflows.ok,
44
+ branchCount: effectiveWorkflows.length,
45
+ nodeCount,
46
+ workflows: effectiveWorkflows,
47
+ errors: workflows.errors,
48
+ source: workflowSource,
49
+ ...(workflows.declared ? {} : { advisoryCode: 'workflows_not_declared' }),
50
+ },
51
+ },
52
+ runtime,
53
+ };
54
+ }
55
+ function emptySkillChain(skillName, experienceReports = []) {
56
+ return {
57
+ skillName,
58
+ definition: { found: false },
59
+ healthCheck: {
60
+ source: 'doctor-static-rules',
61
+ hardRules: { declared: false, valid: true, count: 0, rules: [], errors: [], advisoryCode: 'hardrules_not_declared' },
62
+ workflows: { declared: false, valid: true, branchCount: 0, nodeCount: 0, workflows: [], errors: [], source: 'none', advisoryCode: 'workflows_not_declared' },
63
+ },
64
+ runtime: buildRuntimeChecks(skillName, [], [], experienceReports),
65
+ };
66
+ }
67
+ function buildRuntimeChecks(skillName, hardRules, workflows, experienceReports) {
68
+ const invocations = experienceReports.flatMap((report) => report.invocations.filter((invocation) => invocation.skillName === skillName));
69
+ const evidence = runtimeEvidence(invocations);
70
+ const hardRuleChecks = hardRules.map((rule) => evaluateRuntimeText({
71
+ kind: 'hardRule',
72
+ id: rule.id,
73
+ title: rule.rule,
74
+ expectation: rule.expectedBehavior,
75
+ }, evidence));
76
+ const workflowChecks = workflows.flatMap((workflow) => workflow.nodes.map((node) => evaluateRuntimeText({
77
+ kind: 'workflowNode',
78
+ id: `${workflow.id}.${node.id}`,
79
+ title: node.action || `${workflow.id} / ${node.id}`,
80
+ expectation: node.action,
81
+ }, evidence)));
82
+ const all = [...hardRuleChecks, ...workflowChecks];
83
+ return {
84
+ supported: true,
85
+ mode: 'deterministic-no-llm',
86
+ message: '仅做非 LLM 的运行时证据检查:只看工具调用、路径、命令、上传等明确证据;抽象语义规则只展开证据,不自动下结论。',
87
+ summary: {
88
+ invocationCount: invocations.length,
89
+ toolCallCount: evidence.toolCallCount,
90
+ toolFailureCount: evidence.toolFailureCount,
91
+ passedCount: all.filter((check) => check.status === 'passed').length,
92
+ attentionCount: all.filter((check) => check.status === 'attention').length,
93
+ manualReviewCount: all.filter((check) => check.status === 'manual_review').length,
94
+ },
95
+ hardRules: hardRuleChecks,
96
+ workflowNodes: workflowChecks,
97
+ };
98
+ }
99
+ function runtimeEvidence(invocations) {
100
+ const toolCounts = {};
101
+ const events = invocations.flatMap((invocation) => invocation.timeline ?? []);
102
+ for (const invocation of invocations) {
103
+ for (const [tool, count] of Object.entries(invocation.toolCounts ?? {})) {
104
+ toolCounts[tool] = (toolCounts[tool] ?? 0) + count;
105
+ }
106
+ }
107
+ return {
108
+ toolCounts,
109
+ toolCallCount: invocations.reduce((sum, invocation) => sum + invocation.indicators.toolCallCount, 0),
110
+ toolFailureCount: invocations.reduce((sum, invocation) => sum + invocation.indicators.toolFailureCount, 0),
111
+ events,
112
+ assistantToolUseIds: new Set(events
113
+ .filter((event) => event.kind === 'tool_use' && event.role === 'assistant' && event.toolUseId)
114
+ .map((event) => event.toolUseId)),
115
+ };
116
+ }
117
+ function evaluateRuntimeText(base, evidence) {
118
+ const text = `${base.title}\n${base.expectation}`;
119
+ const lower = text.toLowerCase();
120
+ const forbidden = /不要|禁止|不得|不能|不允许|避免|do not|must not|never|forbid/.test(lower);
121
+ const observable = observableSignals(lower);
122
+ if (observable.length === 0) {
123
+ return {
124
+ ...base,
125
+ status: 'manual_review',
126
+ reason: '这条规则偏语义或质量要求;当前不引入 LLM,只展开证据,不自动判断。',
127
+ evidenceCount: 0,
128
+ evidenceSnippets: [],
129
+ };
130
+ }
131
+ const matched = observable.filter((signal) => signalSeen(signal, evidence));
132
+ const snippets = matched.flatMap((signal) => evidenceSnippetsForSignal(signal, evidence)).slice(0, 5);
133
+ if (forbidden) {
134
+ return {
135
+ ...base,
136
+ status: matched.length > 0 ? 'attention' : 'passed',
137
+ reason: matched.length > 0
138
+ ? `观察到规则禁止的证据:${matched.map(signalLabel).join('、')},需要关注。`
139
+ : `未观察到规则禁止的运行时证据:${observable.map(signalLabel).join('、')}。`,
140
+ evidenceCount: matched.length,
141
+ evidenceSnippets: snippets,
142
+ };
143
+ }
144
+ return {
145
+ ...base,
146
+ status: matched.length > 0 ? 'passed' : 'attention',
147
+ reason: matched.length > 0
148
+ ? `观察到规则要求的证据:${matched.map(signalLabel).join('、')}。`
149
+ : `未观察到规则要求的证据:${observable.map(signalLabel).join('、')},需要关注。`,
150
+ evidenceCount: matched.length,
151
+ evidenceSnippets: snippets,
152
+ };
153
+ }
154
+ function observableSignals(lower) {
155
+ const signals = new Set();
156
+ if (/\bread\b|读取|必读|查阅|阅读|参考|领域知识|知识库/.test(lower))
157
+ signals.add('Read');
158
+ if (/\bgrep\b|\brg\b|搜索|查找|检索/.test(lower))
159
+ signals.add('Grep');
160
+ if (/\bbash\b|\bshell\b|命令|执行脚本/.test(lower))
161
+ signals.add('Bash');
162
+ if (/\bedit\b|修改|编辑/.test(lower))
163
+ signals.add('Edit');
164
+ if (/\bwrite\b|写入|生成文件|保存文件/.test(lower) || isGenerationWorkflowText(lower))
165
+ signals.add('Write');
166
+ if (/\btodo\b|待办|计划/.test(lower))
167
+ signals.add('TodoWrite');
168
+ if (/上传|upload|artifacts\/upload|preview_url/.test(lower))
169
+ signals.add('upload');
170
+ if (/git pull|同步知识库|更新知识库/.test(lower))
171
+ signals.add('git_pull');
172
+ if (/askuserquestion|向用户提问|反问用户|用户确认|确认用户|ask user/.test(lower))
173
+ signals.add('ask_user');
174
+ if (/截图|截屏|验证|预览|浏览器|页面检查|playwright|screenshot/.test(lower))
175
+ signals.add('playwright');
176
+ return Array.from(signals);
177
+ }
178
+ function signalSeen(signal, evidence) {
179
+ if (evidence.events.some((event) => eventMatchesSignal(event, signal, evidence)))
180
+ return true;
181
+ if (evidence.events.length === 0 && isDirectToolSignal(signal) && (evidence.toolCounts[signal] ?? 0) > 0)
182
+ return true;
183
+ return false;
184
+ }
185
+ function signalLabel(signal) {
186
+ const labels = {
187
+ Read: '读取文件',
188
+ Grep: '搜索/检索',
189
+ Bash: '执行命令',
190
+ Edit: '编辑文件',
191
+ Write: '写入文件',
192
+ TodoWrite: '记录待办',
193
+ upload: '上传产物',
194
+ git_pull: '同步知识库',
195
+ ask_user: '向用户确认',
196
+ playwright: '页面验证/截图',
197
+ };
198
+ return labels[signal];
199
+ }
200
+ function evidenceSnippetsForSignal(signal, evidence) {
201
+ return evidence.events
202
+ .filter((event) => eventMatchesSignal(event, signal, evidence))
203
+ .map((event) => `${event.label ?? event.kind}: ${event.snippet ?? event.fullText ?? ''}`.trim())
204
+ .filter(Boolean);
205
+ }
206
+ function isGenerationWorkflowText(lower) {
207
+ if (/生成前|创建前/.test(lower))
208
+ return false;
209
+ return /(?:生成|创建|产出|输出|写出|保存).*(?:文件|页面|demo|prd|文档|代码|产物|结果)|(?:文件|页面|demo|prd|文档|代码|产物|结果).*(?:生成|创建|输出|保存)|\b(?:generate|create|write)\b/.test(lower);
210
+ }
211
+ function isDirectToolSignal(signal) {
212
+ return signal === 'Read' || signal === 'Grep' || signal === 'Bash' || signal === 'Edit' || signal === 'Write' || signal === 'TodoWrite';
213
+ }
214
+ function eventMatchesSignal(event, signal, evidence) {
215
+ const toolName = (event.toolName ?? '').toLowerCase();
216
+ const text = eventRuntimeText(event);
217
+ if (signal === 'Read')
218
+ return toolName === 'read' && !isSkillMdSelfRead(text);
219
+ if (signal === 'Grep')
220
+ return toolName === 'grep' || toolName === 'glob' || /\brg\b|\bgrep\b|搜索|查找|检索/.test(text);
221
+ if (signal === 'Bash')
222
+ return toolName === 'bash';
223
+ if (signal === 'Edit')
224
+ return toolName === 'edit' || toolName === 'multiedit';
225
+ if (signal === 'Write')
226
+ return toolName === 'write';
227
+ if (signal === 'TodoWrite')
228
+ return toolName === 'todowrite';
229
+ if (signal === 'upload')
230
+ return isAssistantAuthoredUploadEvent(event, evidence, text);
231
+ if (signal === 'git_pull')
232
+ return /git pull|同步知识库/.test(text);
233
+ if (signal === 'ask_user')
234
+ return /askuserquestion|ask user|是否需要|请确认|确认一下/.test(text);
235
+ if (signal === 'playwright')
236
+ return toolName === 'bash' && /playwright|screenshot|截图|截屏|chromium|浏览器|页面验证/.test(text);
237
+ return false;
238
+ }
239
+ function eventRuntimeText(event) {
240
+ return `${event.toolName ?? ''}\n${event.label ?? ''}\n${event.snippet ?? ''}\n${event.fullText ?? ''}`.toLowerCase();
241
+ }
242
+ function isAssistantAuthoredUploadEvent(event, evidence, text) {
243
+ if (!/artifacts\/upload|preview_url|上传成功|\bupload\b/.test(text))
244
+ return false;
245
+ if (event.kind === 'tool_use' && event.role === 'assistant')
246
+ return true;
247
+ if (event.kind === 'tool_result' && event.role === 'tool' && event.toolUseId && evidence.assistantToolUseIds.has(event.toolUseId))
248
+ return true;
249
+ return false;
250
+ }
251
+ function isSkillMdSelfRead(text) {
252
+ return /(?:^|[/"'\\])(?:\.claude|\.codex|\.agents|\.openclaw|workspace)?[/"'\\]*(?:workspace[/"'\\])?skills[/"'\\][^/"'\\]+[/"'\\]skill\.md\b/.test(text)
253
+ || /(?:^|[/"'\\])skills[/"'\\][^/"'\\]+[/"'\\]skill\.md\b/.test(text);
254
+ }
255
+ function findSkillMdPath(skillName, cwd) {
256
+ if (!/^[A-Za-z0-9_.-]+$/.test(skillName))
257
+ return undefined;
258
+ const candidates = [
259
+ join(cwd, '.claude', 'skills', skillName, 'SKILL.md'),
260
+ join(cwd, '.openclaw', 'workspace', 'skills', skillName, 'SKILL.md'),
261
+ join(cwd, 'workspace', 'skills', skillName, 'SKILL.md'),
262
+ join(cwd, 'skills', skillName, 'SKILL.md'),
263
+ join(homedir(), '.openclaw', 'workspace', 'skills', skillName, 'SKILL.md'),
264
+ join(homedir(), '.claude', 'skills', skillName, 'SKILL.md'),
265
+ join(homedir(), '.codex', 'skills', skillName, 'SKILL.md'),
266
+ join(homedir(), '.agents', 'skills', skillName, 'SKILL.md'),
267
+ ];
268
+ return candidates.find((candidate) => existsSync(candidate));
269
+ }
270
+ //# sourceMappingURL=skill-chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-chain.js","sourceRoot":"","sources":["../../../src/observability/skill-chain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import type { ExecutorFn } from '../types/index.js';
2
+ import { type ObservationSkillChain } from './skill-chain.js';
3
+ export declare const SOFT_STANDARD_PROMPT_ID = "llm-enhanced-review";
4
+ export declare const SOFT_STANDARD_PROMPT_VERSION = "2026-05-18.v1";
5
+ export declare const DEFAULT_SOFT_STANDARD_MODEL = "sonnet";
6
+ export type SkillDerivedStandardStatus = 'pending_review' | 'author_confirmed' | 'rejected' | 'stale';
7
+ export type SkillDerivedStandardKind = 'hard_rule_candidate' | 'workflow_candidate';
8
+ export interface SkillDerivedStandard {
9
+ id: string;
10
+ kind: SkillDerivedStandardKind;
11
+ status: SkillDerivedStandardStatus;
12
+ title: string;
13
+ body: string;
14
+ source: 'llm_soft_standard';
15
+ confidence: 'low' | 'medium' | 'high';
16
+ evidence: string[];
17
+ }
18
+ export interface SkillDerivedStandards {
19
+ kind: 'observe-skill-derived-standards';
20
+ schemaVersion: 1;
21
+ skillName: string;
22
+ sourceSkillPath?: string;
23
+ sourceHash?: string;
24
+ generatedAt: string;
25
+ model: string;
26
+ executor: string;
27
+ promptId: typeof SOFT_STANDARD_PROMPT_ID;
28
+ promptVersion: typeof SOFT_STANDARD_PROMPT_VERSION;
29
+ promptHash?: string;
30
+ runtimeEvidenceHash?: string;
31
+ enhancedReview?: SkillLlmEnhancedReviewSections;
32
+ standards: SkillDerivedStandard[];
33
+ }
34
+ export interface SkillLlmEnhancedRuntimeEvidence {
35
+ goalSlices: Array<{
36
+ id?: string;
37
+ sessionId?: string;
38
+ inferredUserGoal?: string;
39
+ userMessages?: string[];
40
+ }>;
41
+ userMessages: string[];
42
+ assistantMessages: string[];
43
+ artifactCandidates: string[];
44
+ toolCalls: string[];
45
+ findings: string[];
46
+ }
47
+ export type LlmEnhancedSkillType = 'router' | 'delegation' | 'executor' | 'advisory' | 'unknown';
48
+ export type LlmEnhancedVerdict = 'passed' | 'failed' | 'unknown';
49
+ export type LlmEnhancedUserFeeling = 'positive' | 'neutral' | 'negative' | 'frustrated';
50
+ export interface SkillLlmEnhancedReviewSections {
51
+ skillType?: LlmEnhancedSkillType;
52
+ extractedStandards?: {
53
+ hardrules: Array<Omit<SkillDerivedStandard, 'id' | 'kind' | 'status' | 'source'>>;
54
+ workflows: Array<Omit<SkillDerivedStandard, 'id' | 'kind' | 'status' | 'source'>>;
55
+ completionCriteria: Array<Omit<SkillDerivedStandard, 'id' | 'kind' | 'status' | 'source'>>;
56
+ artifactCriteria: Array<Omit<SkillDerivedStandard, 'id' | 'kind' | 'status' | 'source'>>;
57
+ };
58
+ userGoal?: {
59
+ summary?: string;
60
+ slots: string[];
61
+ expectedOutcome?: string;
62
+ };
63
+ skillDeclaredGoal?: {
64
+ summary?: string;
65
+ keywords: string[];
66
+ expectedOutcomes: string[];
67
+ };
68
+ runtimeAssessment?: {
69
+ goalSatisfaction?: LlmEnhancedVerdict;
70
+ declaredBehaviorFit?: LlmEnhancedVerdict;
71
+ artifactGoalMatch?: LlmEnhancedVerdict;
72
+ userFeeling?: LlmEnhancedUserFeeling;
73
+ };
74
+ userExperienceSignals?: {
75
+ useful?: LlmEnhancedVerdict;
76
+ followUp?: LlmEnhancedVerdict;
77
+ correction?: LlmEnhancedVerdict;
78
+ negativeFeedback?: LlmEnhancedVerdict;
79
+ interruption?: LlmEnhancedVerdict;
80
+ frustration?: LlmEnhancedVerdict;
81
+ };
82
+ reviewerSummary?: string;
83
+ ownerSuggestions?: Array<{
84
+ title?: string;
85
+ body?: string;
86
+ evidence?: string[];
87
+ acceptanceCriteria?: string;
88
+ }>;
89
+ }
90
+ export type ResolvedSkillStandardSource = 'frontmatter' | 'confirmed_soft' | 'pending_soft';
91
+ export type ResolvedSkillStandardKind = 'hard_rule' | 'workflow';
92
+ export interface ResolvedSkillStandard {
93
+ id: string;
94
+ kind: ResolvedSkillStandardKind;
95
+ title: string;
96
+ body: string;
97
+ source: ResolvedSkillStandardSource;
98
+ status?: SkillDerivedStandardStatus;
99
+ confidence?: SkillDerivedStandard['confidence'];
100
+ evidence?: string[];
101
+ }
102
+ export interface ResolvedSkillStandards {
103
+ skillName: string;
104
+ active: ResolvedSkillStandard[];
105
+ candidates: ResolvedSkillStandard[];
106
+ sourcePriority: ['frontmatter', 'confirmed_soft', 'pending_soft'];
107
+ }
108
+ export interface ExtractSkillSoftStandardsOptions {
109
+ observationsDir: string;
110
+ skillChain: ObservationSkillChain;
111
+ runtimeEvidence?: SkillLlmEnhancedRuntimeEvidence;
112
+ model?: string;
113
+ executorName?: string;
114
+ refresh?: boolean;
115
+ now?: string;
116
+ executor?: ExecutorFn;
117
+ }
118
+ export interface ResolveSkillStandardsOptions {
119
+ observationsDir: string;
120
+ cwd?: string;
121
+ skillChain?: ObservationSkillChain;
122
+ derivedStandards?: SkillDerivedStandards | Record<string, SkillDerivedStandards>;
123
+ }
124
+ export declare function skillDerivedStandardsDir(observationsDir: string): string;
125
+ export declare function skillDerivedStandardsPath(observationsDir: string, skillName: string): string;
126
+ export declare function loadSkillDerivedStandards(observationsDir: string): Record<string, SkillDerivedStandards>;
127
+ export declare function updateSkillDerivedStandardStatus(observationsDir: string, skillName: string, standardId: string, status: SkillDerivedStandardStatus, now?: string): SkillDerivedStandards;
128
+ export declare function resolveSkillStandards(skillName: string, options: ResolveSkillStandardsOptions): ResolvedSkillStandards;
129
+ export declare function extractSkillSoftStandards(options: ExtractSkillSoftStandardsOptions): Promise<SkillDerivedStandards>;
130
+ //# sourceMappingURL=soft-standards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft-standards.d.ts","sourceRoot":"","sources":["../../../src/observability/soft-standards.ts"],"names":[],"mappings":"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"}