oh-my-knowledge 1.0.0-beta.11 → 1.0.0-beta.13

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 (668) hide show
  1. package/README.md +81 -12
  2. package/README.zh.md +81 -12
  3. package/dist/assets/agent-skills/omk/SKILL.md +1 -1
  4. package/dist/assets/agent-skills/omk/references/commands.md +80 -20
  5. package/dist/cli/commands/agents.d.ts +19 -0
  6. package/dist/cli/commands/agents.js +216 -0
  7. package/dist/cli/commands/doctor.d.ts +1 -1
  8. package/dist/cli/commands/eval/gold/compare.d.ts +1 -1
  9. package/dist/cli/commands/eval/gold/index.d.ts +1 -1
  10. package/dist/cli/commands/eval/gold/init.d.ts +1 -1
  11. package/dist/cli/commands/eval/gold/validate.d.ts +1 -1
  12. package/dist/cli/commands/eval/index.d.ts +1 -1
  13. package/dist/cli/commands/eval/task.d.ts +13 -0
  14. package/dist/cli/commands/eval/task.js +42 -0
  15. package/dist/cli/commands/evolve.d.ts +1 -1
  16. package/dist/cli/commands/init.d.ts +1 -1
  17. package/dist/cli/commands/init.js +54 -12
  18. package/dist/cli/commands/install.d.ts +1 -1
  19. package/dist/cli/commands/list.d.ts +1 -1
  20. package/dist/cli/commands/observe/inbox.d.ts +1 -1
  21. package/dist/cli/commands/observe/inbox.js +4 -4
  22. package/dist/cli/commands/observe/index.d.ts +1 -1
  23. package/dist/cli/commands/observe/ingest.d.ts +1 -1
  24. package/dist/cli/commands/observe/ingest.js +10 -6
  25. package/dist/cli/commands/observe/knowledge.d.ts +1 -1
  26. package/dist/cli/commands/observe/knowledge.js +1 -1
  27. package/dist/cli/commands/observe/show.d.ts +1 -1
  28. package/dist/cli/commands/observe/show.js +3 -3
  29. package/dist/cli/commands/promote.d.ts +1 -1
  30. package/dist/cli/commands/rollback.d.ts +1 -1
  31. package/dist/cli/commands/sample.d.ts +1 -1
  32. package/dist/cli/commands/sample.js +4 -4
  33. package/dist/cli/commands/studio.d.ts +2 -1
  34. package/dist/cli/commands/studio.js +35 -42
  35. package/dist/cli/lib/i18n-dict/init.d.ts +1 -1
  36. package/dist/cli/lib/i18n-dict/init.js +6 -0
  37. package/dist/cli/lib/i18n.d.ts +6 -3
  38. package/dist/cli/lib/i18n.js +14 -12
  39. package/dist/cli/oclif/base-command.d.ts +4 -1
  40. package/dist/cli/oclif/base-command.js +11 -4
  41. package/dist/cli/oclif/i18n.d.ts +5 -2
  42. package/dist/cli/oclif/i18n.js +10 -5
  43. package/dist/cli/templates/init-samples.d.ts +2 -1
  44. package/dist/cli/templates/init-samples.js +74 -2
  45. package/dist/diagnosis/observe-producer.d.ts +4 -4
  46. package/dist/diagnosis/observe-producer.js +2 -70
  47. package/dist/dsh-plugin/core-adapter.js +16 -14
  48. package/dist/dsh-plugin/index.js +18 -13
  49. package/dist/dsh-plugin/trace-adapter.js +3 -6
  50. package/dist/eval-core/analysis/bootstrap-kernel.d.ts +19 -0
  51. package/dist/eval-core/analysis/bootstrap-kernel.js +55 -0
  52. package/dist/{eval-workflows → eval-core}/analysis/bootstrap.d.ts +8 -0
  53. package/dist/{eval-workflows → eval-core}/analysis/bootstrap.js +19 -121
  54. package/dist/eval-core/analysis/builtin-aggregation.d.ts +28 -0
  55. package/dist/eval-core/analysis/builtin-aggregation.js +131 -0
  56. package/dist/eval-core/analysis/builtin-bootstrap.d.ts +16 -0
  57. package/dist/eval-core/analysis/builtin-bootstrap.js +447 -0
  58. package/dist/eval-core/analysis/builtin-composite.d.ts +25 -0
  59. package/dist/eval-core/analysis/builtin-composite.js +207 -0
  60. package/dist/eval-core/analysis/builtin-decisions.d.ts +38 -0
  61. package/dist/eval-core/analysis/builtin-decisions.js +177 -0
  62. package/dist/eval-core/analysis/builtin-hypothesis.d.ts +41 -0
  63. package/dist/eval-core/analysis/builtin-hypothesis.js +155 -0
  64. package/dist/eval-core/analysis/builtin-identity.d.ts +32 -0
  65. package/dist/eval-core/analysis/builtin-identity.js +134 -0
  66. package/dist/eval-core/analysis/builtin-primitives.d.ts +32 -0
  67. package/dist/eval-core/analysis/builtin-primitives.js +158 -0
  68. package/dist/eval-core/analysis/builtin-registry.d.ts +2 -0
  69. package/dist/eval-core/analysis/builtin-registry.js +235 -0
  70. package/dist/eval-core/analysis/builtin-schemas.d.ts +296 -0
  71. package/dist/eval-core/analysis/builtin-schemas.js +303 -0
  72. package/dist/eval-core/analysis/builtin-validation.d.ts +23 -0
  73. package/dist/eval-core/analysis/builtin-validation.js +74 -0
  74. package/dist/eval-core/analysis/builtins.d.ts +5 -60
  75. package/dist/eval-core/analysis/builtins.js +17 -1974
  76. package/dist/eval-core/analysis/decision.js +10 -9
  77. package/dist/eval-core/analysis/runtime.js +10 -35
  78. package/dist/eval-core/compiler/index.js +1 -7
  79. package/dist/eval-core/compiler/types.d.ts +1 -1
  80. package/dist/eval-core/compiler/validation.js +4 -27
  81. package/dist/eval-core/contracts/analysis-bundle.d.ts +17 -13
  82. package/dist/eval-core/contracts/analysis-bundle.js +0 -563
  83. package/dist/eval-core/contracts/artifacts.js +2 -2
  84. package/dist/eval-core/contracts/budget.js +1 -1
  85. package/dist/eval-core/contracts/common.js +1 -1
  86. package/dist/eval-core/contracts/comparability.d.ts +15 -7
  87. package/dist/eval-core/contracts/comparability.js +11 -816
  88. package/dist/eval-core/contracts/definition.js +2 -2
  89. package/dist/eval-core/contracts/digests.d.ts +2 -2
  90. package/dist/eval-core/contracts/digests.js +8 -31
  91. package/dist/eval-core/contracts/evaluation-bundle.d.ts +11 -30
  92. package/dist/eval-core/contracts/evaluation-bundle.js +0 -843
  93. package/dist/eval-core/contracts/evaluation-identities.js +2 -2
  94. package/dist/eval-core/contracts/evaluation-report.d.ts +3 -17
  95. package/dist/eval-core/contracts/evaluation-report.js +2 -202
  96. package/dist/eval-core/contracts/execution-bundle.d.ts +6 -36
  97. package/dist/eval-core/contracts/execution-bundle.js +0 -649
  98. package/dist/eval-core/contracts/execution-controls.js +1 -3
  99. package/dist/eval-core/contracts/execution-facts.d.ts +2 -7
  100. package/dist/eval-core/contracts/execution-facts.js +1 -1
  101. package/dist/eval-core/contracts/execution-identities.d.ts +1 -1
  102. package/dist/eval-core/contracts/execution-identities.js +9 -31
  103. package/dist/eval-core/contracts/json-schema.d.ts +4 -1
  104. package/dist/eval-core/contracts/json-schema.js +10 -1
  105. package/dist/eval-core/contracts/json.js +3 -2
  106. package/dist/eval-core/contracts/runtime-capabilities.js +1 -1
  107. package/dist/eval-core/contracts/sealed-run-plan.d.ts +2 -2
  108. package/dist/eval-core/contracts/sealed-run-plan.js +1 -1
  109. package/dist/eval-core/contracts/series.d.ts +14 -24
  110. package/dist/eval-core/contracts/series.js +11 -387
  111. package/dist/eval-core/engine/index.js +6 -3
  112. package/dist/eval-core/evaluation/runtime.js +37 -93
  113. package/dist/eval-core/execution/runtime.js +23 -80
  114. package/dist/eval-core/execution/scheduler.js +1 -7
  115. package/dist/eval-core/index.d.ts +6 -5
  116. package/dist/eval-core/index.js +3 -2
  117. package/dist/eval-core/primitives/budget-outcome.d.ts +11 -0
  118. package/dist/eval-core/primitives/budget-outcome.js +8 -0
  119. package/dist/eval-core/primitives/graph.d.ts +2 -0
  120. package/dist/eval-core/primitives/graph.js +17 -0
  121. package/dist/eval-core/primitives/json-pointer.d.ts +12 -0
  122. package/dist/eval-core/primitives/json-pointer.js +31 -0
  123. package/dist/{eval-runtime/evaluation → eval-core/primitives}/ordering.d.ts +1 -0
  124. package/dist/eval-core/primitives/ordering.js +8 -0
  125. package/dist/eval-core/primitives/provenance.d.ts +11 -0
  126. package/dist/eval-core/primitives/provenance.js +19 -0
  127. package/dist/eval-core/runtime/abort.d.ts +2 -0
  128. package/dist/eval-core/runtime/abort.js +12 -0
  129. package/dist/eval-core/runtime/clock.d.ts +2 -0
  130. package/dist/eval-core/runtime/clock.js +4 -0
  131. package/dist/eval-core/runtime/event-stream.d.ts +1 -0
  132. package/dist/eval-core/runtime/event-stream.js +1 -0
  133. package/dist/eval-core/runtime/run-resources.d.ts +12 -0
  134. package/dist/eval-core/runtime/run-resources.js +39 -0
  135. package/dist/eval-core/schemas.js +2 -16
  136. package/dist/eval-core/series/runtime.js +21 -38
  137. package/dist/eval-core/verify/analysis-bundle.d.ts +13 -0
  138. package/dist/eval-core/verify/analysis-bundle.js +553 -0
  139. package/dist/eval-core/verify/comparability.d.ts +4 -0
  140. package/dist/eval-core/verify/comparability.js +804 -0
  141. package/dist/eval-core/verify/evaluation-bundle.d.ts +28 -0
  142. package/dist/eval-core/verify/evaluation-bundle.js +812 -0
  143. package/dist/eval-core/verify/evaluation-report.d.ts +18 -0
  144. package/dist/eval-core/verify/evaluation-report.js +201 -0
  145. package/dist/eval-core/verify/execution-bundle.d.ts +33 -0
  146. package/dist/eval-core/verify/execution-bundle.js +635 -0
  147. package/dist/eval-core/verify/index.d.ts +6 -0
  148. package/dist/eval-core/verify/index.js +6 -0
  149. package/dist/eval-core/verify/series.d.ts +24 -0
  150. package/dist/eval-core/verify/series.js +373 -0
  151. package/dist/eval-runtime/adapters/json-executor.d.ts +0 -1
  152. package/dist/eval-runtime/adapters/json-executor.js +88 -213
  153. package/dist/eval-runtime/adapters/resource-lease.d.ts +56 -0
  154. package/dist/eval-runtime/adapters/resource-lease.js +107 -0
  155. package/dist/eval-runtime/builders/paired-comparison.js +2 -2
  156. package/dist/eval-runtime/custom-evaluator.js +3 -2
  157. package/dist/eval-runtime/evaluation/capture-evaluators.js +3 -3
  158. package/dist/eval-runtime/evaluation/contracts.d.ts +1 -1
  159. package/dist/eval-runtime/evaluation/definition.js +1 -1
  160. package/dist/eval-runtime/evaluation/prepare.js +1 -1
  161. package/dist/eval-runtime/evaluation/result-state.d.ts +2 -2
  162. package/dist/eval-runtime/evaluation/result-state.js +1 -1
  163. package/dist/eval-runtime/evaluation/reuse.d.ts +2 -2
  164. package/dist/eval-runtime/evaluation/reuse.js +13 -8
  165. package/dist/eval-runtime/executed-store.d.ts +1 -1
  166. package/dist/eval-runtime/executed-store.js +3 -2
  167. package/dist/eval-runtime/execution-controls.js +1 -3
  168. package/dist/eval-runtime/judges/rubric-judge.js +2 -1
  169. package/dist/eval-runtime/judges/rubric-kit.js +2 -4
  170. package/dist/eval-runtime/mcp-config.js +2 -1
  171. package/dist/eval-runtime/mock-interception.js +2 -1
  172. package/dist/eval-runtime/provider.d.ts +2 -1
  173. package/dist/eval-runtime/provider.js +1 -1
  174. package/dist/eval-runtime/result-store.d.ts +1 -1
  175. package/dist/eval-runtime/result-store.js +4 -3
  176. package/dist/eval-runtime/series.js +2 -1
  177. package/dist/eval-runtime/tool-policy.js +1 -3
  178. package/dist/eval-runtime/traces/source-neutral.js +1 -1
  179. package/dist/eval-runtime/workspace.js +2 -1
  180. package/dist/eval-workflows/artifact-store/node-run-store.js +20 -15
  181. package/dist/eval-workflows/gold/human.js +1 -1
  182. package/dist/eval-workflows/hosts/adapters/anthropic/api.js +13 -7
  183. package/dist/eval-workflows/hosts/adapters/claude/cli.js +17 -15
  184. package/dist/eval-workflows/hosts/adapters/claude/resources.js +7 -10
  185. package/dist/eval-workflows/hosts/adapters/claude/sdk-runtime.js +6 -32
  186. package/dist/eval-workflows/hosts/adapters/claude/sdk.js +17 -15
  187. package/dist/eval-workflows/hosts/adapters/codex/cli.js +18 -21
  188. package/dist/eval-workflows/hosts/adapters/codex/resources.js +3 -2
  189. package/dist/eval-workflows/hosts/adapters/codex/sdk-runtime.js +6 -32
  190. package/dist/eval-workflows/hosts/adapters/codex/sdk.js +18 -21
  191. package/dist/eval-workflows/hosts/adapters/custom/executor.js +12 -22
  192. package/dist/eval-workflows/hosts/adapters/openai/api.js +13 -7
  193. package/dist/eval-workflows/hosts/adapters/shared/classified-environment.js +2 -1
  194. package/dist/eval-workflows/hosts/adapters/shared/content-identity.d.ts +12 -0
  195. package/dist/eval-workflows/hosts/adapters/shared/content-identity.js +38 -3
  196. package/dist/eval-workflows/hosts/adapters/shared/stateless-api-resources.js +3 -2
  197. package/dist/eval-workflows/hosts/adapters/shared/trial-lifecycle.d.ts +44 -0
  198. package/dist/eval-workflows/hosts/adapters/shared/trial-lifecycle.js +41 -0
  199. package/dist/eval-workflows/hosts/composition/assembly.js +1 -3
  200. package/dist/eval-workflows/hosts/composition/preflight.js +1 -3
  201. package/dist/eval-workflows/hosts/composition/runtime.d.ts +1 -1
  202. package/dist/eval-workflows/hosts/composition/runtime.js +3 -2
  203. package/dist/eval-workflows/hosts/input-resolution/content-materialization.d.ts +27 -0
  204. package/dist/eval-workflows/hosts/input-resolution/content-materialization.js +85 -0
  205. package/dist/eval-workflows/hosts/input-resolution/node-cli-evaluation-resolver.js +23 -82
  206. package/dist/eval-workflows/hosts/local-task/acceptance.d.ts +13 -0
  207. package/dist/eval-workflows/hosts/local-task/acceptance.js +101 -0
  208. package/dist/eval-workflows/hosts/local-task/application.d.ts +99 -0
  209. package/dist/eval-workflows/hosts/local-task/application.js +177 -0
  210. package/dist/eval-workflows/hosts/local-task/diagnostics.d.ts +27 -0
  211. package/dist/eval-workflows/hosts/local-task/diagnostics.js +30 -0
  212. package/dist/eval-workflows/hosts/local-task/executor.d.ts +19 -0
  213. package/dist/eval-workflows/hosts/local-task/executor.js +135 -0
  214. package/dist/eval-workflows/hosts/local-task/files.d.ts +15 -0
  215. package/dist/eval-workflows/hosts/local-task/files.js +88 -0
  216. package/dist/eval-workflows/hosts/local-task/workspace.d.ts +6 -0
  217. package/dist/eval-workflows/hosts/local-task/workspace.js +32 -0
  218. package/dist/eval-workflows/hosts/resource-leases/access.js +1 -3
  219. package/dist/eval-workflows/hosts/resource-leases/node.js +1 -3
  220. package/dist/eval-workflows/input-compilation/compile.js +1 -3
  221. package/dist/eval-workflows/inputs/contracts/config-schema.js +1 -1
  222. package/dist/eval-workflows/inputs/contracts/local-task-evidence.d.ts +46 -0
  223. package/dist/eval-workflows/inputs/contracts/local-task-evidence.js +26 -0
  224. package/dist/eval-workflows/inputs/contracts/local-task.d.ts +50 -0
  225. package/dist/eval-workflows/inputs/contracts/local-task.js +33 -0
  226. package/dist/eval-workflows/inputs/sample-contract.js +3 -10
  227. package/dist/eval-workflows/instruments/prompts/judge-prompts.js +4 -0
  228. package/dist/eval-workflows/measurement/analysis/agreement-source-pairs.js +3 -26
  229. package/dist/eval-workflows/measurement/analysis/agreement-table.js +1 -1
  230. package/dist/eval-workflows/measurement/analysis/analysis-support.d.ts +0 -1
  231. package/dist/eval-workflows/measurement/analysis/analysis-support.js +0 -3
  232. package/dist/eval-workflows/measurement/analysis/assertion-layer-node.js +2 -1
  233. package/dist/eval-workflows/measurement/analysis/assertion-layer-parameters.js +2 -1
  234. package/dist/eval-workflows/measurement/analysis/assertion-layer.js +2 -1
  235. package/dist/eval-workflows/measurement/analysis/bootstrap-family-parameters.js +3 -2
  236. package/dist/eval-workflows/measurement/analysis/bootstrap-family-table-v2.d.ts +1 -1
  237. package/dist/eval-workflows/measurement/analysis/bootstrap-family-table-v2.js +1 -1
  238. package/dist/eval-workflows/measurement/analysis/bootstrap-family-table.js +3 -2
  239. package/dist/eval-workflows/measurement/analysis/composite-node-contract.js +1 -1
  240. package/dist/eval-workflows/measurement/analysis/composite-table.js +2 -1
  241. package/dist/eval-workflows/measurement/analysis/dimension-node.js +2 -1
  242. package/dist/eval-workflows/measurement/analysis/dimension-parameters.js +2 -1
  243. package/dist/eval-workflows/measurement/analysis/dimension-table-v1.js +2 -1
  244. package/dist/eval-workflows/measurement/analysis/dimension-table.js +2 -1
  245. package/dist/eval-workflows/measurement/analysis/judge-aggregation.js +2 -1
  246. package/dist/eval-workflows/measurement/analysis/release-decision-parameters.js +2 -1
  247. package/dist/eval-workflows/measurement/analysis/release-decision.js +2 -1
  248. package/dist/eval-workflows/orchestration/evaluation-service.js +4 -4
  249. package/dist/eval-workflows/orchestration/measurement-design.js +8 -7
  250. package/dist/eval-workflows/orchestration/orchestration.d.ts +1 -1
  251. package/dist/eval-workflows/orchestration/orchestration.js +6 -1
  252. package/dist/eval-workflows/orchestration/sample-content-resolution.js +8 -11
  253. package/dist/eval-workflows/orchestration/workflow.d.ts +3 -3
  254. package/dist/eval-workflows/orchestration/workflow.js +5 -5
  255. package/dist/eval-workflows/projections/diagnostic.js +4 -6
  256. package/dist/eval-workflows/projections/evolution.js +2 -1
  257. package/dist/eval-workflows/projections/local-task.d.ts +23 -0
  258. package/dist/eval-workflows/projections/local-task.js +25 -0
  259. package/dist/eval-workflows/{resume-admission → resume-disposition}/contracts.d.ts +11 -11
  260. package/dist/eval-workflows/{resume-admission → resume-disposition}/contracts.js +3 -3
  261. package/dist/eval-workflows/resume-disposition/disposition.d.ts +8 -0
  262. package/dist/eval-workflows/{resume-admission/admit.js → resume-disposition/disposition.js} +25 -29
  263. package/dist/eval-workflows/resume-disposition/index.d.ts +2 -0
  264. package/dist/eval-workflows/resume-disposition/index.js +2 -0
  265. package/dist/eval-workflows/sample-generation/trace-drafts.d.ts +2 -2
  266. package/dist/eval-workflows/sample-generation/trace-drafts.js +3 -3
  267. package/dist/evidence/graph/doctor.js +3 -6
  268. package/dist/evidence/storage/discovery-index.js +6 -12
  269. package/dist/evidence/storage/file-names.d.ts +3 -0
  270. package/dist/evidence/storage/file-names.js +7 -2
  271. package/dist/evidence/storage/layout.d.ts +5 -0
  272. package/dist/evidence/storage/layout.js +4 -0
  273. package/dist/evidence/storage/report-bundle.js +4 -6
  274. package/dist/evidence/storage/user-settings.d.ts +1 -1
  275. package/dist/evidence/storage/user-settings.js +6 -2
  276. package/dist/executors/contracts/trace-source-schema.d.ts +1 -0
  277. package/dist/executors/contracts/trace-source-schema.js +1 -0
  278. package/dist/executors/contracts/trace.d.ts +9 -0
  279. package/dist/executors/core/tool-identity.d.ts +1 -9
  280. package/dist/executors/openai/codex/protocol.js +1 -1
  281. package/dist/index.d.ts +1 -0
  282. package/dist/index.js +1 -0
  283. package/dist/knowledge/contracts.d.ts +6 -6
  284. package/dist/knowledge/history.js +1 -1
  285. package/dist/knowledge/store.d.ts +2 -2
  286. package/dist/knowledge/{admission.d.ts → validation.d.ts} +4 -4
  287. package/dist/knowledge/{admission.js → validation.js} +1 -1
  288. package/dist/mcp/capture-store.d.ts +2 -1
  289. package/dist/mcp/capture-store.js +6 -4
  290. package/dist/mcp/mcp-server.d.ts +4 -2
  291. package/dist/mcp/mcp-server.js +12 -28
  292. package/dist/mcp/review-component.d.ts +2 -1
  293. package/dist/mcp/review-component.js +5 -9
  294. package/dist/mcp/tool-copy.d.ts +18 -0
  295. package/dist/mcp/tool-copy.js +108 -0
  296. package/dist/observability/agents/collect.d.ts +105 -0
  297. package/dist/observability/agents/collect.js +686 -0
  298. package/dist/observability/agents/contracts.d.ts +369 -0
  299. package/dist/observability/agents/contracts.js +160 -0
  300. package/dist/observability/agents/detect.d.ts +39 -0
  301. package/dist/observability/agents/detect.js +144 -0
  302. package/dist/observability/agents/fs-ports.d.ts +44 -0
  303. package/dist/observability/agents/fs-ports.js +77 -0
  304. package/dist/observability/agents/index.d.ts +19 -0
  305. package/dist/observability/agents/index.js +13 -0
  306. package/dist/observability/agents/local-catalog.d.ts +40 -0
  307. package/dist/observability/agents/local-catalog.js +101 -0
  308. package/dist/observability/agents/registry.d.ts +31 -0
  309. package/dist/observability/agents/registry.js +187 -0
  310. package/dist/observability/agents/scan.d.ts +31 -0
  311. package/dist/observability/agents/scan.js +160 -0
  312. package/dist/observability/application.d.ts +18 -0
  313. package/dist/observability/application.js +12 -0
  314. package/dist/observability/contracts/experience-enums.d.ts +10 -9
  315. package/dist/observability/contracts/experience-enums.js +1 -0
  316. package/dist/observability/contracts/experience-evidence-schema.d.ts +3322 -2920
  317. package/dist/observability/contracts/experience-evidence-schema.js +4 -1
  318. package/dist/observability/experience/primitives.d.ts +3 -0
  319. package/dist/observability/experience/primitives.js +11 -0
  320. package/dist/observability/experience/report-assembly.d.ts +33 -0
  321. package/dist/observability/experience/report-assembly.js +808 -0
  322. package/dist/observability/experience/report-structure.d.ts +1 -1
  323. package/dist/observability/experience/session-story-episodes.d.ts +17 -0
  324. package/dist/observability/experience/session-story-episodes.js +242 -0
  325. package/dist/observability/experience/session-story-evidence.d.ts +11 -0
  326. package/dist/observability/experience/session-story-evidence.js +88 -0
  327. package/dist/observability/experience/session-story-feedback.d.ts +14 -0
  328. package/dist/observability/experience/session-story-feedback.js +330 -0
  329. package/dist/observability/experience/session-story-orchestration.d.ts +13 -0
  330. package/dist/observability/experience/session-story-orchestration.js +266 -0
  331. package/dist/observability/experience/session-story-segments.d.ts +8 -0
  332. package/dist/observability/experience/session-story-segments.js +128 -0
  333. package/dist/observability/experience/session-story.d.ts +4 -86
  334. package/dist/observability/experience/session-story.js +11 -1057
  335. package/dist/observability/experience/timeline.js +28 -2
  336. package/dist/observability/experience.d.ts +2 -31
  337. package/dist/observability/experience.js +2 -807
  338. package/dist/observability/inbox/explicit-capture.js +4 -4
  339. package/dist/observability/inbox/index.d.ts +10 -31
  340. package/dist/observability/inbox/index.js +6 -1260
  341. package/dist/observability/inbox/paths.d.ts +23 -3
  342. package/dist/observability/inbox/paths.js +31 -8
  343. package/dist/observability/inbox/report-building.d.ts +18 -0
  344. package/dist/observability/inbox/report-building.js +595 -0
  345. package/dist/observability/inbox/report-presentation.d.ts +6 -0
  346. package/dist/observability/inbox/report-presentation.js +83 -0
  347. package/dist/observability/inbox/report-primitives.d.ts +17 -0
  348. package/dist/observability/inbox/report-primitives.js +85 -0
  349. package/dist/observability/inbox/report-store.d.ts +7 -0
  350. package/dist/observability/inbox/report-store.js +516 -0
  351. package/dist/observability/inbox/review-state.d.ts +3 -3
  352. package/dist/observability/inbox/review-state.js +11 -6
  353. package/dist/observability/inbox/skill-chains.d.ts +20 -0
  354. package/dist/observability/inbox/skill-chains.js +65 -0
  355. package/dist/observability/inbox/source-record-archive.d.ts +1 -1
  356. package/dist/observability/inbox/view-model.d.ts +2 -2
  357. package/dist/observability/inbox/view-model.js +11 -8
  358. package/dist/observability/knowledge-extraction/adapters/{codex-evidence.d.ts → trace-evidence.d.ts} +4 -4
  359. package/dist/observability/knowledge-extraction/adapters/{codex-evidence.js → trace-evidence.js} +15 -15
  360. package/dist/observability/knowledge-extraction/application.d.ts +10 -10
  361. package/dist/observability/knowledge-extraction/evidence.d.ts +12 -2
  362. package/dist/observability/knowledge-extraction/evidence.js +5 -2
  363. package/dist/observability/knowledge-extraction/local.js +2 -2
  364. package/dist/observability/knowledge-extraction/proposals.d.ts +2 -2
  365. package/dist/observability/knowledge-extraction/proposals.js +1 -1
  366. package/dist/observability/knowledge-extraction/runs.d.ts +2 -2
  367. package/dist/observability/presentation.d.ts +8 -0
  368. package/dist/observability/presentation.js +5 -0
  369. package/dist/observability/soft-standards/llm-extractor.js +2 -1
  370. package/dist/observability/soft-standards/skill-standards-store.d.ts +1 -1
  371. package/dist/observability/soft-standards/types.d.ts +2 -1
  372. package/dist/observability/trace/adapters/claude/record-events.d.ts +4 -0
  373. package/dist/observability/trace/adapters/claude/record-events.js +297 -0
  374. package/dist/observability/trace/adapters/claude/record-schema.d.ts +60 -0
  375. package/dist/observability/trace/adapters/claude/record-schema.js +2 -0
  376. package/dist/observability/trace/adapters/claude/trace.d.ts +13 -0
  377. package/dist/observability/trace/adapters/claude/trace.js +48 -0
  378. package/dist/observability/trace/adapters/codex/context-events.d.ts +4 -0
  379. package/dist/observability/trace/adapters/codex/context-events.js +166 -0
  380. package/dist/observability/trace/adapters/codex/conversation-events.d.ts +4 -0
  381. package/dist/observability/trace/adapters/codex/conversation-events.js +143 -0
  382. package/dist/observability/trace/adapters/codex/conversion-contract.d.ts +66 -0
  383. package/dist/observability/trace/adapters/codex/conversion-contract.js +10 -0
  384. package/dist/observability/trace/adapters/codex/item-views.d.ts +81 -0
  385. package/dist/observability/trace/adapters/codex/item-views.js +303 -0
  386. package/dist/observability/trace/adapters/codex/pending-tool-events.d.ts +7 -0
  387. package/dist/observability/trace/adapters/codex/pending-tool-events.js +100 -0
  388. package/dist/observability/trace/adapters/codex/record-conversion.d.ts +14 -0
  389. package/dist/observability/trace/adapters/codex/record-conversion.js +167 -0
  390. package/dist/observability/trace/adapters/codex/record-fields.d.ts +13 -0
  391. package/dist/observability/trace/adapters/codex/record-fields.js +35 -0
  392. package/dist/observability/trace/adapters/codex/record-indexes.d.ts +75 -0
  393. package/dist/observability/trace/adapters/codex/record-indexes.js +309 -0
  394. package/dist/observability/trace/adapters/codex/record-text.d.ts +8 -0
  395. package/dist/observability/trace/adapters/codex/record-text.js +52 -0
  396. package/dist/observability/trace/adapters/codex/tool-event-factory.d.ts +16 -0
  397. package/dist/observability/trace/adapters/codex/tool-event-factory.js +20 -0
  398. package/dist/observability/trace/adapters/codex/tool-events.d.ts +4 -0
  399. package/dist/observability/trace/adapters/codex/tool-events.js +183 -0
  400. package/dist/observability/trace/adapters/codex/trace.d.ts +6 -2
  401. package/dist/observability/trace/adapters/codex/trace.js +45 -1013
  402. package/dist/observability/trace/adapters/codex/turn-events.d.ts +4 -0
  403. package/dist/observability/trace/adapters/codex/turn-events.js +126 -0
  404. package/dist/observability/trace/adapters/dsh/trace.d.ts +18 -0
  405. package/dist/observability/trace/adapters/dsh/trace.js +355 -0
  406. package/dist/observability/trace/adapters/jsonl-records.d.ts +6 -0
  407. package/dist/observability/trace/adapters/jsonl-records.js +67 -0
  408. package/dist/observability/trace/adapters/markdown/trace.d.ts +8 -0
  409. package/dist/observability/trace/adapters/markdown/trace.js +132 -0
  410. package/dist/observability/trace/adapters/openclaw/record-events.d.ts +10 -0
  411. package/dist/observability/trace/adapters/openclaw/record-events.js +192 -0
  412. package/dist/observability/trace/adapters/openclaw/trace.d.ts +9 -0
  413. package/dist/observability/trace/adapters/openclaw/trace.js +129 -0
  414. package/dist/observability/trace/adapters/qoder/trace.d.ts +8 -0
  415. package/dist/observability/trace/adapters/qoder/trace.js +477 -0
  416. package/dist/observability/trace/source.d.ts +54 -59
  417. package/dist/observability/trace/source.js +187 -794
  418. package/dist/observability/trace/streamed-records.d.ts +16 -0
  419. package/dist/observability/trace/streamed-records.js +228 -0
  420. package/dist/observability/trace/trace-ir.d.ts +56 -5
  421. package/dist/observability/trace/trace-ir.js +66 -0
  422. package/dist/observability/trace/unknown-disposition.d.ts +36 -0
  423. package/dist/observability/trace/unknown-disposition.js +233 -0
  424. package/dist/observability/trace/zstd-frames.d.ts +18 -0
  425. package/dist/observability/trace/zstd-frames.js +166 -0
  426. package/dist/observability/view-models/index.d.ts +4 -0
  427. package/dist/shared/content-hash.d.ts +5 -0
  428. package/dist/shared/content-hash.js +7 -0
  429. package/dist/shared/language-preference.d.ts +36 -0
  430. package/dist/shared/language-preference.js +48 -0
  431. package/dist/studio/application/agents/agents-view.d.ts +34 -0
  432. package/dist/studio/application/agents/agents-view.js +36 -0
  433. package/dist/studio/application/conversations/conversation-extraction.d.ts +3 -3
  434. package/dist/studio/application/conversations/conversation-extraction.js +3 -3
  435. package/dist/studio/application/conversations/conversation-reader.d.ts +1 -1
  436. package/dist/studio/application/conversations/list-states.d.ts +11 -0
  437. package/dist/studio/application/conversations/list-states.js +9 -0
  438. package/dist/studio/application/conversations/reader-states.d.ts +14 -0
  439. package/dist/studio/application/conversations/reader-states.js +17 -0
  440. package/dist/studio/application/conversations/reader-viewport.d.ts +36 -0
  441. package/dist/studio/application/conversations/reader-viewport.js +35 -0
  442. package/dist/studio/application/conversations/sidebar-window.d.ts +24 -0
  443. package/dist/studio/application/conversations/sidebar-window.js +26 -0
  444. package/dist/studio/application/directory-sources.d.ts +49 -0
  445. package/dist/studio/application/directory-sources.js +45 -0
  446. package/dist/studio/application/display/conversation-label.d.ts +13 -0
  447. package/dist/studio/application/display/conversation-label.js +17 -0
  448. package/dist/studio/application/display/format.d.ts +5 -0
  449. package/dist/studio/application/display/format.js +22 -0
  450. package/dist/studio/application/knowledge/candidate-status.d.ts +9 -0
  451. package/dist/studio/application/knowledge/candidate-status.js +19 -0
  452. package/dist/studio/application/knowledge/knowledge-candidates.d.ts +1 -2
  453. package/dist/studio/application/knowledge/knowledge-candidates.js +1 -2
  454. package/dist/studio/application/knowledge/knowledge-query.d.ts +6 -1
  455. package/dist/studio/application/knowledge/knowledge-query.js +3 -3
  456. package/dist/studio/application/knowledge/knowledge-reports.d.ts +1 -1
  457. package/dist/studio/application/knowledge/knowledge-reports.js +1 -2
  458. package/dist/studio/application/knowledge/skill-health.js +1 -1
  459. package/dist/studio/application/knowledge/skill-index.d.ts +4 -1
  460. package/dist/studio/application/knowledge/skill-index.js +12 -9
  461. package/dist/studio/application/knowledge/skill-insights.d.ts +1 -1
  462. package/dist/studio/application/knowledge/skill-insights.js +98 -33
  463. package/dist/studio/application/measure/core-run-format.js +2 -1
  464. package/dist/studio/application/measure/core-run-projection.js +12 -0
  465. package/dist/studio/application/observe/health-format.d.ts +1 -2
  466. package/dist/studio/application/observe/health-format.js +1 -1
  467. package/dist/studio/application/settings/settings.d.ts +2 -4
  468. package/dist/studio/application/settings/settings.js +3 -1
  469. package/dist/studio/http/contracts.d.ts +6 -1
  470. package/dist/studio/http/language.d.ts +10 -0
  471. package/dist/studio/http/language.js +18 -0
  472. package/dist/studio/http/next-context.d.ts +2 -0
  473. package/dist/studio/http/next-context.js +1 -0
  474. package/dist/studio/http/next-server.js +36 -40
  475. package/dist/studio/http/page-params.d.ts +32 -0
  476. package/dist/studio/http/page-params.js +32 -0
  477. package/dist/studio/http/page-paths.d.ts +36 -0
  478. package/dist/studio/http/page-paths.js +36 -0
  479. package/dist/studio/http/pages/agents-page.d.ts +12 -0
  480. package/dist/studio/http/pages/agents-page.js +13 -0
  481. package/dist/studio/http/pages/health-page.js +7 -10
  482. package/dist/studio/http/pages/inbox-page.d.ts +4 -2
  483. package/dist/studio/http/pages/inbox-page.js +6 -1
  484. package/dist/studio/http/pages/knowledge-page.d.ts +3 -0
  485. package/dist/studio/http/pages/knowledge-page.js +11 -3
  486. package/dist/studio/http/pages/managed-page.js +4 -5
  487. package/dist/studio/http/pages/measure-page.d.ts +3 -0
  488. package/dist/studio/http/pages/measure-page.js +10 -7
  489. package/dist/studio/http/pages/observe-page.d.ts +3 -1
  490. package/dist/studio/http/pages/observe-page.js +10 -3
  491. package/dist/studio/http/report-server.js +0 -1
  492. package/dist/studio/http/request-handler.d.ts +0 -1
  493. package/dist/studio/http/request-handler.js +5 -11
  494. package/dist/studio/http/routes/contracts.d.ts +3 -0
  495. package/dist/studio/http/routes/conversations.d.ts +1 -1
  496. package/dist/studio/http/routes/conversations.js +2 -1
  497. package/dist/studio/http/routes/knowledge-candidates.d.ts +1 -1
  498. package/dist/studio/http/routes/knowledge.js +2 -2
  499. package/dist/studio/http/routes/observations.d.ts +1 -1
  500. package/dist/studio/http/routes/observations.js +1 -3
  501. package/dist/studio/view-models/knowledge/insight.d.ts +6 -0
  502. package/dist/studio/view-models/knowledge/knowledge-candidates.d.ts +1 -2
  503. package/dist/studio/view-models/measure/core-runs.d.ts +32 -0
  504. package/dist/studio/view-models/settings/settings.d.ts +4 -1
  505. package/dist/studio/web/.next/BUILD_ID +1 -1
  506. package/dist/studio/web/.next/app-path-routes-manifest.json +5 -4
  507. package/dist/studio/web/.next/build-manifest.json +4 -4
  508. package/dist/studio/web/.next/prerender-manifest.json +4 -4
  509. package/dist/studio/web/.next/routes-manifest.json +6 -0
  510. package/dist/studio/web/.next/server/app/_global-error/page.js +1 -1
  511. package/dist/studio/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  512. package/dist/studio/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  513. package/dist/studio/web/.next/server/app/_global-error.html +1 -1
  514. package/dist/studio/web/.next/server/app/_global-error.rsc +4 -4
  515. package/dist/studio/web/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
  516. package/dist/studio/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +4 -4
  517. package/dist/studio/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  518. package/dist/studio/web/.next/server/app/_not-found/page.js +1 -1
  519. package/dist/studio/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  520. package/dist/studio/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  521. package/dist/studio/web/.next/server/app/agents/page.js +1 -0
  522. package/dist/studio/web/.next/server/app/agents/page.js.nft.json +1 -0
  523. package/dist/studio/web/.next/server/app/agents/page_client-reference-manifest.js +1 -0
  524. package/dist/studio/web/.next/server/app/knowledge/candidates/page.js +1 -1
  525. package/dist/studio/web/.next/server/app/knowledge/candidates/page.js.nft.json +1 -1
  526. package/dist/studio/web/.next/server/app/knowledge/candidates/page_client-reference-manifest.js +1 -1
  527. package/dist/studio/web/.next/server/app/knowledge/managed/[managedId]/page.js +1 -1
  528. package/dist/studio/web/.next/server/app/knowledge/managed/[managedId]/page.js.nft.json +1 -1
  529. package/dist/studio/web/.next/server/app/knowledge/managed/[managedId]/page_client-reference-manifest.js +1 -1
  530. package/dist/studio/web/.next/server/app/knowledge/managed/page.js +1 -1
  531. package/dist/studio/web/.next/server/app/knowledge/managed/page.js.nft.json +1 -1
  532. package/dist/studio/web/.next/server/app/knowledge/managed/page_client-reference-manifest.js +1 -1
  533. package/dist/studio/web/.next/server/app/knowledge/page.js +1 -1
  534. package/dist/studio/web/.next/server/app/knowledge/page.js.nft.json +1 -1
  535. package/dist/studio/web/.next/server/app/knowledge/page_client-reference-manifest.js +1 -1
  536. package/dist/studio/web/.next/server/app/knowledge/skills/[skillName]/page.js +1 -1
  537. package/dist/studio/web/.next/server/app/knowledge/skills/[skillName]/page.js.nft.json +1 -1
  538. package/dist/studio/web/.next/server/app/knowledge/skills/[skillName]/page_client-reference-manifest.js +1 -1
  539. package/dist/studio/web/.next/server/app/measure/[runId]/page.js +1 -1
  540. package/dist/studio/web/.next/server/app/measure/[runId]/page.js.nft.json +1 -1
  541. package/dist/studio/web/.next/server/app/measure/[runId]/page_client-reference-manifest.js +1 -1
  542. package/dist/studio/web/.next/server/app/measure/page.js +1 -1
  543. package/dist/studio/web/.next/server/app/measure/page.js.nft.json +1 -1
  544. package/dist/studio/web/.next/server/app/measure/page_client-reference-manifest.js +1 -1
  545. package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/page.js +1 -1
  546. package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/page.js.nft.json +1 -1
  547. package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/page_client-reference-manifest.js +1 -1
  548. package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/tasks/[turnId]/page.js +1 -1
  549. package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/tasks/[turnId]/page.js.nft.json +1 -1
  550. package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/tasks/[turnId]/page_client-reference-manifest.js +1 -1
  551. package/dist/studio/web/.next/server/app/observe/health/[analysisId]/page.js +1 -1
  552. package/dist/studio/web/.next/server/app/observe/health/[analysisId]/page.js.nft.json +1 -1
  553. package/dist/studio/web/.next/server/app/observe/health/[analysisId]/page_client-reference-manifest.js +1 -1
  554. package/dist/studio/web/.next/server/app/observe/health/page.js +1 -1
  555. package/dist/studio/web/.next/server/app/observe/health/page.js.nft.json +1 -1
  556. package/dist/studio/web/.next/server/app/observe/health/page_client-reference-manifest.js +1 -1
  557. package/dist/studio/web/.next/server/app/observe/health-diff/page.js +1 -1
  558. package/dist/studio/web/.next/server/app/observe/health-diff/page.js.nft.json +1 -1
  559. package/dist/studio/web/.next/server/app/observe/health-diff/page_client-reference-manifest.js +1 -1
  560. package/dist/studio/web/.next/server/app/observe/inbox/page.js +8 -8
  561. package/dist/studio/web/.next/server/app/observe/inbox/page.js.nft.json +1 -1
  562. package/dist/studio/web/.next/server/app/observe/inbox/page_client-reference-manifest.js +1 -1
  563. package/dist/studio/web/.next/server/app/observe/page.js +1 -1
  564. package/dist/studio/web/.next/server/app/observe/page.js.nft.json +1 -1
  565. package/dist/studio/web/.next/server/app/observe/page_client-reference-manifest.js +1 -1
  566. package/dist/studio/web/.next/server/app/observe/skill-trend/[skillName]/page.js +1 -1
  567. package/dist/studio/web/.next/server/app/observe/skill-trend/[skillName]/page.js.nft.json +1 -1
  568. package/dist/studio/web/.next/server/app/observe/skill-trend/[skillName]/page_client-reference-manifest.js +1 -1
  569. package/dist/studio/web/.next/server/app-paths-manifest.json +5 -4
  570. package/dist/studio/web/.next/server/chunks/3.js +1 -1
  571. package/dist/studio/web/.next/server/chunks/335.js +1 -1
  572. package/dist/studio/web/.next/server/chunks/374.js +1 -1
  573. package/dist/studio/web/.next/server/chunks/475.js +1 -1
  574. package/dist/studio/web/.next/server/chunks/499.js +1 -1
  575. package/dist/studio/web/.next/server/chunks/5.js +1 -0
  576. package/dist/studio/web/.next/server/chunks/740.js +3 -0
  577. package/dist/studio/web/.next/server/chunks/789.js +6 -0
  578. package/dist/studio/web/.next/server/chunks/{190.js → 827.js} +12 -12
  579. package/dist/studio/web/.next/server/chunks/84.js +2 -2
  580. package/dist/studio/web/.next/server/chunks/955.js +1 -1
  581. package/dist/studio/web/.next/server/chunks/996.js +1 -1
  582. package/dist/studio/web/.next/server/middleware-build-manifest.js +1 -1
  583. package/dist/studio/web/.next/server/pages/500.html +1 -1
  584. package/dist/studio/web/.next/server/server-reference-manifest.json +1 -1
  585. package/dist/studio/web/.next/server/webpack-runtime.js +1 -1
  586. package/dist/studio/web/.next/static/Ahppnr7sbzLwhsw77RqCy/_buildManifest.js +1 -0
  587. package/dist/studio/web/.next/static/chunks/{1858-53aecb176156ec2f.js → 1858-3ad7971aef7540de.js} +1 -1
  588. package/dist/studio/web/.next/static/chunks/2038-b941bab2ee1ef91a.js +1 -0
  589. package/dist/studio/web/.next/static/chunks/2666-022e0893a8ce80b1.js +4 -0
  590. package/dist/studio/web/.next/static/chunks/{7086-b6d6e13ce6f28429.js → 285-ee2bde496eae900b.js} +12 -12
  591. package/dist/studio/web/.next/static/chunks/{2953-5840070bcce6a075.js → 2953-32389c228338c03f.js} +1 -1
  592. package/dist/studio/web/.next/static/chunks/3958-b95d9b60fc7f9eaf.js +1 -0
  593. package/dist/studio/web/.next/static/chunks/4684-62296d31718b47b2.js +1 -0
  594. package/dist/studio/web/.next/static/chunks/5067-75d71f6808309f44.js +6 -0
  595. package/dist/studio/web/.next/static/chunks/5669-9f0ec3bc92ab3392.js +3 -0
  596. package/dist/studio/web/.next/static/chunks/5834-ceadd3ef88dd5027.js +1 -0
  597. package/dist/studio/web/.next/static/chunks/{6651-cad53455cca8c430.js → 6651-392fd48cf473d253.js} +2 -2
  598. package/dist/studio/web/.next/static/chunks/6698-fe3dadb4c5aa013d.js +9 -0
  599. package/dist/studio/web/.next/static/chunks/{7576-af77927e85dd21cd.js → 7576-0651db5aa8473f62.js} +4 -4
  600. package/dist/studio/web/.next/static/chunks/8284-399476b82eb468d0.js +1 -0
  601. package/dist/studio/web/.next/static/chunks/{8791-628c2e7b0dab299a.js → 8791-cc9640eb97b0ac98.js} +1 -1
  602. package/dist/studio/web/.next/static/chunks/9688-8fc2ea8f15ab0642.js +1 -0
  603. package/dist/studio/web/.next/static/chunks/app/agents/page-5566ed76365fc033.js +1 -0
  604. package/dist/studio/web/.next/static/chunks/app/{error-f4e4f5c25ab4ea68.js → error-da3a9e3657f1dc15.js} +1 -1
  605. package/dist/studio/web/.next/static/chunks/app/knowledge/candidates/page-8f6377569b01b64e.js +1 -0
  606. package/dist/studio/web/.next/static/chunks/app/knowledge/managed/[managedId]/page-e8aa43310b5ab528.js +1 -0
  607. package/dist/studio/web/.next/static/chunks/app/knowledge/managed/page-cbae9028d8b57dcf.js +1 -0
  608. package/dist/studio/web/.next/static/chunks/app/knowledge/page-92a6b1ddc3e44d8b.js +1 -0
  609. package/dist/studio/web/.next/static/chunks/app/knowledge/skills/[skillName]/page-082ada30d2554c7e.js +1 -0
  610. package/dist/studio/web/.next/static/chunks/app/layout-872f1dfcd7ede526.js +1 -0
  611. package/dist/studio/web/.next/static/chunks/app/{loading-6897e47422bee0f6.js → loading-459503db9bf76ee0.js} +1 -1
  612. package/dist/studio/web/.next/static/chunks/app/measure/[runId]/page-1b6e584362fa1fc7.js +1 -0
  613. package/dist/studio/web/.next/static/chunks/app/measure/page-94c52f9a44a8b88e.js +1 -0
  614. package/dist/studio/web/.next/static/chunks/app/not-found-5b86ee2b9fd19a95.js +1 -0
  615. package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/page-327796657a0b2692.js +1 -0
  616. package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/tasks/[turnId]/page-1c806e81831e69b9.js +1 -0
  617. package/dist/studio/web/.next/static/chunks/app/observe/health/[analysisId]/page-41dd612e29247f6f.js +1 -0
  618. package/dist/studio/web/.next/static/chunks/app/observe/health/page-66161c7025058683.js +1 -0
  619. package/dist/studio/web/.next/static/chunks/app/observe/health-diff/page-373e7ca6f18a4594.js +1 -0
  620. package/dist/studio/web/.next/static/chunks/app/observe/inbox/page-923860677b6af0ad.js +1 -0
  621. package/dist/studio/web/.next/static/chunks/app/observe/page-ff04bfbae9e9c409.js +1 -0
  622. package/dist/studio/web/.next/static/chunks/app/observe/skill-trend/[skillName]/page-4711e930a7c6a790.js +1 -0
  623. package/dist/studio/web/.next/static/chunks/{main-c86d24af6df62a67.js → main-be4276342bf776ea.js} +1 -1
  624. package/dist/studio/web/.next/static/chunks/webpack-ac24233801701b11.js +1 -0
  625. package/dist/studio/web/.next/static/css/bc117f6d956d35b6.css +1 -0
  626. package/dist/studio/web/.next/trace +47 -41
  627. package/dist/studio/web/.next/trace-build +1 -1
  628. package/package.json +8 -6
  629. package/dist/eval-runtime/evaluation/ordering.js +0 -3
  630. package/dist/eval-workflows/resume-admission/admit.d.ts +0 -8
  631. package/dist/eval-workflows/resume-admission/index.d.ts +0 -2
  632. package/dist/eval-workflows/resume-admission/index.js +0 -2
  633. package/dist/studio/web/.next/server/chunks/121.js +0 -1
  634. package/dist/studio/web/.next/server/chunks/286.js +0 -1
  635. package/dist/studio/web/.next/server/chunks/767.js +0 -6
  636. package/dist/studio/web/.next/server/chunks/864.js +0 -1
  637. package/dist/studio/web/.next/static/chunks/2038-ed7f68a7ae5147e7.js +0 -1
  638. package/dist/studio/web/.next/static/chunks/4684-a0ed05ac9d8ab616.js +0 -1
  639. package/dist/studio/web/.next/static/chunks/5834-509bc646670d19f0.js +0 -1
  640. package/dist/studio/web/.next/static/chunks/6250-52fb4cf774039f4d.js +0 -1
  641. package/dist/studio/web/.next/static/chunks/7754-d2d1b4242648f987.js +0 -4
  642. package/dist/studio/web/.next/static/chunks/8202-d22828e45db31cd7.js +0 -1
  643. package/dist/studio/web/.next/static/chunks/8284-56793a0da5776212.js +0 -1
  644. package/dist/studio/web/.next/static/chunks/8342-af342dbe9c2f0bfa.js +0 -6
  645. package/dist/studio/web/.next/static/chunks/8448-2a7aaa0bc1e3af89.js +0 -1
  646. package/dist/studio/web/.next/static/chunks/9688-568cb3f8978b37e8.js +0 -1
  647. package/dist/studio/web/.next/static/chunks/9978-2b5578a391a0f389.js +0 -9
  648. package/dist/studio/web/.next/static/chunks/app/knowledge/candidates/page-fe0361724325f726.js +0 -1
  649. package/dist/studio/web/.next/static/chunks/app/knowledge/managed/[managedId]/page-587bb53c0988665e.js +0 -1
  650. package/dist/studio/web/.next/static/chunks/app/knowledge/managed/page-f73e3830d520a4ea.js +0 -1
  651. package/dist/studio/web/.next/static/chunks/app/knowledge/page-0f6f64c058be91bf.js +0 -1
  652. package/dist/studio/web/.next/static/chunks/app/knowledge/skills/[skillName]/page-9e044c9d1e32d815.js +0 -1
  653. package/dist/studio/web/.next/static/chunks/app/layout-457e2c191c2308c1.js +0 -1
  654. package/dist/studio/web/.next/static/chunks/app/measure/[runId]/page-e065af1890b883a6.js +0 -1
  655. package/dist/studio/web/.next/static/chunks/app/measure/page-5dbcaa3fc0f36148.js +0 -1
  656. package/dist/studio/web/.next/static/chunks/app/not-found-23ff9fbd04f66261.js +0 -1
  657. package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/page-b0175ec26507705d.js +0 -1
  658. package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/tasks/[turnId]/page-79ae079fccc7f06a.js +0 -1
  659. package/dist/studio/web/.next/static/chunks/app/observe/health/[analysisId]/page-7ade4dd62ed66ece.js +0 -1
  660. package/dist/studio/web/.next/static/chunks/app/observe/health/page-59f723ecc9f7e5a3.js +0 -1
  661. package/dist/studio/web/.next/static/chunks/app/observe/health-diff/page-a04d6bbda0bb1945.js +0 -1
  662. package/dist/studio/web/.next/static/chunks/app/observe/inbox/page-48d0fb8be0af3319.js +0 -1
  663. package/dist/studio/web/.next/static/chunks/app/observe/page-22a89d134108381c.js +0 -1
  664. package/dist/studio/web/.next/static/chunks/app/observe/skill-trend/[skillName]/page-899dcb452d814b80.js +0 -1
  665. package/dist/studio/web/.next/static/chunks/webpack-040077c7c5b63775.js +0 -1
  666. package/dist/studio/web/.next/static/css/4a9c7da63c369015.css +0 -1
  667. package/dist/studio/web/.next/static/hccv6HVNJDzgZgMSLell8/_buildManifest.js +0 -1
  668. /package/dist/studio/web/.next/static/{hccv6HVNJDzgZgMSLell8 → Ahppnr7sbzLwhsw77RqCy}/_ssgManifest.js +0 -0
@@ -0,0 +1,216 @@
1
+ import { existsSync, statSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { Args, Flags } from '@oclif/core';
4
+ import { BaseCommand } from '../oclif/base-command.js';
5
+ import { LANG_FLAG, bilingual } from '../oclif/i18n.js';
6
+ import { shellQuoteArg } from '../../shared/shell-quote.js';
7
+ import { UserSettingsStore } from '../../evidence/storage/user-settings.js';
8
+ import { globalLayout } from '../../evidence/storage/layout.js';
9
+ const description = (zh, en) => bilingual({ zh, en });
10
+ function formatEntryLine(entry, lang) {
11
+ const roots = entry.logRoots.map((root) => {
12
+ const suffix = lang === 'zh'
13
+ ? `${root.traceSourceKind}:发现 ${root.discoveredCount} · 新增 ${root.collectedCount} · 跳过 ${root.skippedCount}`
14
+ : `${root.traceSourceKind}: ${root.discoveredCount} found · ${root.collectedCount} new · ${root.skippedCount} skipped`;
15
+ return root.failedCount > 0 ? `${suffix}${lang === 'zh' ? ` · 失败 ${root.failedCount}` : ` · ${root.failedCount} failed`}` : suffix;
16
+ }).join(' / ');
17
+ return lang === 'zh'
18
+ ? ` ${entry.displayName}:${entry.logRoots.length} 个日志根 · ${roots}`
19
+ : ` ${entry.displayName}: ${entry.logRoots.length} log roots · ${roots}`;
20
+ }
21
+ export default class AgentsCommand extends BaseCommand {
22
+ static description = description('识别本机已安装的 Agent,采集其日志并映射成统一格式,再提炼候选知识。', 'Detect installed agents, collect their logs into the unified trace format, and extract candidate knowledge.');
23
+ static args = {
24
+ operation: Args.string({
25
+ required: true,
26
+ options: ['list', 'collect', 'extract'],
27
+ description: description('操作:list 识别安装情况,collect 采集日志并映射成统一 Trace IR,extract 从已采集日志提炼候选知识。', 'list: inspect installs. collect: gather logs into normalized Trace IR. extract: draft candidate knowledge from collected logs.'),
28
+ }),
29
+ };
30
+ static flags = {
31
+ lang: LANG_FLAG,
32
+ dir: Flags.string({
33
+ description: description('清单与采集产物目录,默认全局 ~/.oh-my-knowledge/observe/agents。', 'Inventory and collection dir; defaults to the global ~/.oh-my-knowledge/observe/agents.'),
34
+ }),
35
+ limit: Flags.integer({
36
+ min: 1,
37
+ description: description('collect 单轮处理的会话文件上限。', 'Per-run session file cap for collect.'),
38
+ }),
39
+ session: Flags.string({
40
+ description: description('extract:采集报告里的 runId。', 'extract: a runId from the collection report.'),
41
+ }),
42
+ knowledge: Flags.string({
43
+ description: description('extract:知识工作区,默认全局知识目录。', 'extract: knowledge workspace; defaults to the global knowledge dir.'),
44
+ }),
45
+ executor: Flags.string({
46
+ description: description('extract:生成执行器,沿用 OMK 运行配置。', 'extract: generation executor, using OMK runtime configuration.'),
47
+ }),
48
+ model: Flags.string({
49
+ description: description('extract:生成模型,沿用已配置模型。', 'extract: generation model, using the configured model.'),
50
+ }),
51
+ json: Flags.boolean({
52
+ default: false,
53
+ description: description('输出完整 JSON;默认输出可读摘要。', 'Print complete JSON instead of a readable summary.'),
54
+ }),
55
+ };
56
+ static examples = [
57
+ '<%= config.bin %> agents list',
58
+ '<%= config.bin %> agents collect --limit 50',
59
+ '<%= config.bin %> agents extract --session <runId> --executor codex --model <model>',
60
+ ];
61
+ async run() {
62
+ const { args, flags } = await this.parse(AgentsCommand);
63
+ const lang = this.lang;
64
+ const { agentStorageLayout: layoutOf, AgentCollectionReportOutdatedError, collectAgentLogs, detectAgentInventory, loadAgentCollectionReport, LocalAgentCatalogError, resolveAgentCatalog, saveAgentCollectionReport, saveAgentInventoryReport, } = await import('../../observability/agents/index.js');
65
+ const layout = layoutOf(flags.dir ?? globalLayout().observeAgentsDir);
66
+ // 登记表是内置表与本机扩展文件的合并结果;扩展文件读不动时按业务失败处理,
67
+ // 因为拿半份表探测会让清单静默少一个宿主,比直接报错更难发现。
68
+ const readCatalog = () => {
69
+ try {
70
+ return resolveAgentCatalog();
71
+ }
72
+ catch (cause) {
73
+ if (cause instanceof LocalAgentCatalogError) {
74
+ this.error(lang === 'zh'
75
+ ? `本机 Agent 登记表扩展不可用:${cause.message}`
76
+ : `Local agent catalog extension is unusable: ${cause.message}`, { exit: 1 });
77
+ }
78
+ throw cause;
79
+ }
80
+ };
81
+ await this.runWithCancellation(async (signal) => {
82
+ if (args.operation === 'list') {
83
+ const report = detectAgentInventory({ descriptors: readCatalog() });
84
+ const written = saveAgentInventoryReport(report, layout);
85
+ if (flags.json) {
86
+ this.log(JSON.stringify(report, null, 2));
87
+ }
88
+ else {
89
+ for (const agent of report.agents.filter((entry) => entry.installed)) {
90
+ this.log(`${agent.displayName} (${agent.agentId}) · ${agent.traceSourceKind ?? 'unknown'} · ${agent.sessionFileCount}`);
91
+ for (const root of agent.logRoots.filter((entry) => entry.exists)) {
92
+ this.log(lang === 'zh'
93
+ ? ` ${root.path}:${root.sessionFileCount} 份${root.truncated ? '(已截断)' : ''}${root.readable ? '' : '(不可读)'}${root.unreadableReason ? '(本机运行时解不了这格式)' : ''}`
94
+ : ` ${root.path}: ${root.sessionFileCount}${root.truncated ? ' (truncated)' : ''}${root.readable ? '' : ' (unreadable)'}${root.unreadableReason ? ' (this runtime cannot read the format)' : ''}`);
95
+ }
96
+ }
97
+ this.log(lang === 'zh'
98
+ ? `已识别 ${report.summary.installedAgentCount}/${report.summary.knownAgentCount} 个 Agent · 会话日志 ${report.summary.sessionFileCount} 份`
99
+ : `${report.summary.installedAgentCount}/${report.summary.knownAgentCount} agents detected · ${report.summary.sessionFileCount} session logs`);
100
+ }
101
+ for (const agent of report.agents.filter((entry) => entry.installed)) {
102
+ // 「装了但本机读不了这格式」与「装了且没有日志」是两件事:前者要换运行时,
103
+ // 后者要等用户真的产生会话,混成一句会让人白跑一边排查。
104
+ if (agent.logRoots.some((root) => root.unreadableReason !== undefined)) {
105
+ this.logToStderr(lang === 'zh'
106
+ ? `${agent.displayName} 已安装并发现了会话文件,但本机 Node 运行时没有内建 zstd 解压,读不了 .jsonl.zstd 会话。`
107
+ : `${agent.displayName} is installed and session files were found, but this Node runtime has no built-in zstd decompression, so .jsonl.zstd sessions cannot be read.`);
108
+ continue;
109
+ }
110
+ if (agent.sessionFileCount > 0)
111
+ continue;
112
+ this.logToStderr(lang === 'zh'
113
+ ? `${agent.displayName} 已安装,但没有找到可读的会话日志。`
114
+ : `${agent.displayName} is installed but has no readable session logs.`);
115
+ }
116
+ this.logToStderr(lang === 'zh' ? `清单已写入:${written}` : `Inventory written to: ${written}`);
117
+ return;
118
+ }
119
+ if (args.operation === 'collect') {
120
+ const report = collectAgentLogs(undefined, {
121
+ layout,
122
+ detect: { descriptors: readCatalog() },
123
+ ...(flags.limit === undefined ? {} : { limits: { maxFilesPerRun: flags.limit } }),
124
+ });
125
+ const written = saveAgentCollectionReport(report, layout);
126
+ if (flags.json) {
127
+ this.log(JSON.stringify(report, null, 2));
128
+ }
129
+ else {
130
+ for (const entry of report.agents) {
131
+ this.log(formatEntryLine(entry, lang));
132
+ }
133
+ this.log(lang === 'zh'
134
+ ? `采集:发现 ${report.summary.discoveredCount} · 新增 ${report.summary.collectedCount} · 跳过 ${report.summary.skippedCount} · 失败 ${report.summary.failedCount} · 事件 ${report.summary.eventCount}(未支持格式 ${report.summary.unknownEventCount} · 重复视图 ${report.summary.duplicateViewCount} · 待映射证据 ${report.summary.unmappedEvidenceCount})`
135
+ : `Collected: ${report.summary.discoveredCount} found · ${report.summary.collectedCount} new · ${report.summary.skippedCount} skipped · ${report.summary.failedCount} failed · ${report.summary.eventCount} events (${report.summary.unknownEventCount} unsupported format · ${report.summary.duplicateViewCount} duplicate views · ${report.summary.unmappedEvidenceCount} unmapped evidence)`);
136
+ }
137
+ for (const limitation of report.limitations) {
138
+ this.logToStderr(lang === 'zh' ? `限制:${limitation}` : `Limitation: ${limitation}`);
139
+ }
140
+ this.logToStderr(lang === 'zh' ? `采集报告已写入:${written}` : `Collection report written to: ${written}`);
141
+ const sample = report.sessions[0]?.runId ?? '<runId>';
142
+ this.logToStderr(lang === 'zh'
143
+ ? `下一步:omk agents extract --session ${shellQuoteArg(sample)}\n在 Studio 的 Agents 页查看:omk studio`
144
+ : `Next: omk agents extract --session ${shellQuoteArg(sample)}\nTo review it in Studio: omk studio`);
145
+ return;
146
+ }
147
+ const runId = flags.session;
148
+ if (!runId?.trim()) {
149
+ this.error(`--session ${lang === 'zh' ? '不能为空' : 'is required'}`, { exit: 2 });
150
+ }
151
+ let collection;
152
+ try {
153
+ collection = loadAgentCollectionReport(layout.observeAgentsDir);
154
+ }
155
+ catch (cause) {
156
+ if (cause instanceof AgentCollectionReportOutdatedError) {
157
+ this.error(lang === 'zh'
158
+ ? `采集报告是 ${cause.foundVersion} 口径,未识别事件的分桶计数无法沿用。先运行 omk agents collect 重新采集。`
159
+ : `The collection report uses the superseded ${cause.foundVersion} scheme, whose unrecognized-event buckets cannot be carried over. Run omk agents collect to recollect.`, { exit: 1 });
160
+ }
161
+ throw cause;
162
+ }
163
+ if (!collection) {
164
+ this.error(lang === 'zh'
165
+ ? '还没有采集报告,先运行 omk agents collect。'
166
+ : 'No collection report yet; run omk agents collect first.', { exit: 1 });
167
+ }
168
+ const session = collection.sessions.find((entry) => entry.runId === runId);
169
+ if (!session) {
170
+ this.error(lang === 'zh'
171
+ ? `采集报告里没有会话 ${runId}。`
172
+ : `Session ${runId} is not in the collection report.`, { exit: 1 });
173
+ }
174
+ if (!existsSync(session.sourcePath) || !statSync(session.sourcePath).isFile()) {
175
+ this.error(lang === 'zh'
176
+ ? `原始日志已不可读:${session.sourcePath}`
177
+ : `Source log is no longer readable: ${session.sourcePath}`, { exit: 1 });
178
+ }
179
+ const settings = new UserSettingsStore().resolve({
180
+ workspace: flags.knowledge ? resolve(flags.knowledge) : globalLayout().knowledgeDir,
181
+ executor: flags.executor,
182
+ model: flags.model,
183
+ });
184
+ const { createLocalKnowledgeApplication } = await import('../../observability/knowledge-extraction/local.js');
185
+ const { configuredExtractionModel } = await import('../../observability/knowledge-extraction/adapters/executor.js');
186
+ const app = createLocalKnowledgeApplication(settings.workspace);
187
+ this.logToStderr(lang === 'zh'
188
+ ? `${session.agentId} / ${session.sourceKind} · 仅发送选定来源片段;费用以执行器实际报告为准。`
189
+ : `${session.agentId} / ${session.sourceKind} · Only selected excerpts are sent; cost depends on executor reporting.`);
190
+ const captured = app.capture({
191
+ path: session.sourcePath,
192
+ ...(session.title ? { origin: { threadId: session.runId, title: session.title } } : {}),
193
+ }, signal);
194
+ if (!settings.model) {
195
+ this.error(lang === 'zh'
196
+ ? '缺少生成模型,请用 --model 指定。'
197
+ : 'No generation model; pass --model.', { exit: 2 });
198
+ }
199
+ const run = await app.generate(captured.snapshotId, configuredExtractionModel(settings.executor, settings.model), undefined, signal);
200
+ if (flags.json) {
201
+ this.log(JSON.stringify({ session, snapshot: captured, run }, null, 2));
202
+ return;
203
+ }
204
+ this.log(lang === 'zh'
205
+ ? `提炼完成:${run.committed.length} 条候选知识(来源格式 ${captured.sourceKind},快照 ${captured.snapshotId})`
206
+ : `Extracted ${run.committed.length} candidate(s) from ${captured.sourceKind} (snapshot ${captured.snapshotId}).`);
207
+ for (const committed of run.committed) {
208
+ const detail = app.detail(committed.knowledgeId, committed.revisionId);
209
+ this.log(`- ${detail.revision.title} · ${detail.revision.entities.length} 个实体 · ${committed.knowledgeId}`);
210
+ }
211
+ this.logToStderr(lang === 'zh'
212
+ ? `下一步:omk observe knowledge list --workspace ${shellQuoteArg(settings.workspace)}`
213
+ : `Next: omk observe knowledge list --workspace ${shellQuoteArg(settings.workspace)}`);
214
+ });
215
+ }
216
+ }
@@ -9,7 +9,7 @@ export default class Doctor extends BaseCommand {
9
9
  target: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
10
10
  };
11
11
  static flags: {
12
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
14
  gate: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
15
  executor: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -5,7 +5,7 @@ export default class EvalGoldCompare extends BaseCommand {
5
5
  runId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
6
  };
7
7
  static flags: {
8
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  'gold-dir': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
10
  target: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  evaluator: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
@@ -2,7 +2,7 @@ import { BaseCommand } from '../../../oclif/base-command.js';
2
2
  export default class EvalGold extends BaseCommand {
3
3
  static description: string;
4
4
  static flags: {
5
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
5
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
6
  };
7
7
  run(): Promise<void>;
8
8
  }
@@ -2,7 +2,7 @@ import { BaseCommand } from '../../../oclif/base-command.js';
2
2
  export default class EvalGoldInit extends BaseCommand {
3
3
  static description: string;
4
4
  static flags: {
5
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
5
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
6
  out: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
7
  annotator: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
8
  };
@@ -5,7 +5,7 @@ export default class EvalGoldValidate extends BaseCommand {
5
5
  dir: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
6
  };
7
7
  static flags: {
8
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  };
10
10
  run(): Promise<void>;
11
11
  }
@@ -18,7 +18,7 @@ export default class Eval extends BaseCommand {
18
18
  command: string;
19
19
  }[];
20
20
  static flags: {
21
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
21
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
22
  control: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
23
  treatment: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
24
  'control-cwd': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -0,0 +1,13 @@
1
+ import { BaseCommand } from '../../oclif/base-command.js';
2
+ export default class EvalTask extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ definition: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,42 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { mkdtemp, rm } from 'node:fs/promises';
3
+ import { tmpdir, homedir } from 'node:os';
4
+ import { join, resolve } from 'node:path';
5
+ import { BaseCommand } from '../../oclif/base-command.js';
6
+ import { LANG_FLAG, bilingual } from '../../oclif/i18n.js';
7
+ import { prepareLocalTask } from '../../../eval-workflows/hosts/local-task/application.js';
8
+ export default class EvalTask extends BaseCommand {
9
+ static description = bilingual({ zh: '从固定快照执行可信本地任务 A/B,采集产物并独立验收。', en: 'Run trusted local task A/B from a fixed snapshot, collect artifacts and verify outcomes independently.' });
10
+ static args = { definition: Args.string({ required: true, description: bilingual({ zh: '本地任务 YAML/JSON 定义。', en: 'Local task YAML/JSON definition.' }) }) };
11
+ static flags = {
12
+ lang: LANG_FLAG,
13
+ 'dry-run': Flags.boolean({ description: bilingual({ zh: '预览封存计划,不执行任务。', en: 'Preview the sealed plan without executing tasks.' }) }),
14
+ output: Flags.string({ default: '.omk/eval', description: bilingual({ zh: '报告输出目录。', en: 'Report output directory.' }) }),
15
+ };
16
+ async run() {
17
+ const { args, flags } = await this.parse(EvalTask);
18
+ const temporaryRoot = await mkdtemp(join(tmpdir(), 'omk-local-task-'));
19
+ try {
20
+ await this.runWithCancellation(async (signal) => {
21
+ const application = await prepareLocalTask({ definitionPath: resolve(args.definition), temporaryRoot,
22
+ outputDirectory: resolve(flags.output),
23
+ authenticationFile: join(process.env.CODEX_HOME ?? join(homedir(), '.codex'), 'auth.json'),
24
+ });
25
+ if (flags['dry-run']) {
26
+ this.log(JSON.stringify(application.preview, null, 2));
27
+ return;
28
+ }
29
+ process.stderr.write(`${JSON.stringify(application.preview, null, 2)}\n`);
30
+ const { result, artifacts, reference, diagnosticsDirectory, diagnosticReferences } = await application.run(signal);
31
+ this.log(JSON.stringify({ runId: result.runId, outputDirectory: resolve(flags.output), reference, diagnosticsDirectory, diagnosticReferences, report: artifacts.report }, null, 2));
32
+ if (result.status !== 'completed' || artifacts.execution.records.some((record) => record.executionStatus !== 'completed')
33
+ || artifacts.evaluation.records.some((record) => record.evaluationStatus !== 'completed'
34
+ || record.observations.some((observation) => observation.observationStatus !== 'observed')))
35
+ this.exit(1);
36
+ });
37
+ }
38
+ finally {
39
+ await rm(temporaryRoot, { recursive: true, force: true });
40
+ }
41
+ }
42
+ }
@@ -13,7 +13,7 @@ export default class Evolve extends BaseCommand {
13
13
  skillPath: Interfaces.Arg<string, Record<string, unknown>>;
14
14
  };
15
15
  static flags: {
16
- lang: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
16
+ lang: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
17
17
  rounds: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
18
18
  target: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
19
19
  samples: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
@@ -9,7 +9,7 @@ export default class Init extends BaseCommand {
9
9
  targetDir: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
10
10
  };
11
11
  static flags: {
12
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  samples: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
14
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
15
  };
@@ -8,20 +8,32 @@ import { shellQuoteArg } from '../../shared/shell-quote.js';
8
8
  import { writeProjectScaffold } from '../../knowledge-artifacts/authoring/scaffold.js';
9
9
  import { projectLayout } from '../../evidence/storage/layout.js';
10
10
  import { DEFAULT_INIT_SAMPLE_COUNT, FULL_INIT_SAMPLE_COUNT, serializeInitSamples, } from '../templates/init-samples.js';
11
- // 预置 .omk/.gitignore:测量 bulk + doctor --fix 备份(项目本地、不该入库)默认不入库;
12
- // managed/ 治理档案 + 配置不在此列,默认 track。
13
- const INIT_OMK_GITIGNORE = `# omk 测量 bulk 与 doctor --fix 备份(项目本地)——不入库;前导 / 锚定 .omk/ 顶层,不误伤嵌套同名目录。
11
+ // 脚手架是用户拿到手的产物内容:语言必须跟着 --lang 走,否则英文用户 init 出来的
12
+ // 项目从注释到 skill 正文都是中文。name/目录名等身份字段两版一致,只有文字随语言。
13
+ const INIT_OMK_GITIGNORE = {
14
+ // 预置 .omk/.gitignore:测量 bulk + doctor --fix 备份(项目本地、不该入库)默认不入库;
15
+ // managed/ 治理档案 + 配置不在此列,默认 track。
16
+ zh: `# omk 测量 bulk 与 doctor --fix 备份(项目本地)——不入库;前导 / 锚定 .omk/ 顶层,不误伤嵌套同名目录。
14
17
  /eval/
15
18
  /doctor/
16
19
  /observe/
17
20
  /backups/
18
21
  /state/
19
- `;
22
+ `,
23
+ en: `# omk measurement bulk and doctor --fix backups (project-local) - not committed; the leading / anchors at the .omk/ root so nested directories with the same name are unaffected.
24
+ /eval/
25
+ /doctor/
26
+ /observe/
27
+ /backups/
28
+ /state/
29
+ `,
30
+ };
20
31
  // 模板带 Claude Code SKILL.md 兼容 frontmatter(name + description),让用户
21
32
  // 可以把 init 出来的 SKILL.md 直接 deploy 到 ~/.claude/skills/ 给 Claude Code 用,
22
33
  // 一份文件双向 dogfood(omk 评测 + Claude 部署)。omk 当前不 strip frontmatter,
23
34
  // 它会跟着 leak 进 system prompt — 在 model 行为层面是无害噪声,跨 executor 一致。
24
- const INIT_SKILL_V1 = `---
35
+ const INIT_SKILL_V1 = {
36
+ zh: `---
25
37
  name: code-review-v1
26
38
  description: 简单代码审查 skill,识别明显问题
27
39
  ---
@@ -29,8 +41,19 @@ description: 简单代码审查 skill,识别明显问题
29
41
  # Code review v1
30
42
 
31
43
  你是一个代码审查助手。请审查用户提供的代码,指出潜在问题。
32
- `;
33
- const INIT_SKILL_V2 = `---
44
+ `,
45
+ en: `---
46
+ name: code-review-v1
47
+ description: Simple code review skill that flags obvious problems
48
+ ---
49
+
50
+ # Code review v1
51
+
52
+ You are a code review assistant. Review the code the user provides and point out potential problems.
53
+ `,
54
+ };
55
+ const INIT_SKILL_V2 = {
56
+ zh: `---
34
57
  name: code-review-v2
35
58
  description: 多维度代码审查,覆盖安全 / 健壮 / 可维护 / 性能,带严重程度标注
36
59
  ---
@@ -45,7 +68,24 @@ description: 多维度代码审查,覆盖安全 / 健壮 / 可维护 / 性能,
45
68
  4. 性能:是否存在明显的性能瓶颈
46
69
 
47
70
  对每个维度给出具体的改进建议,并标注严重程度(高/中/低)。
48
- `;
71
+ `,
72
+ en: `---
73
+ name: code-review-v2
74
+ description: Multi-dimension code review covering security / robustness / maintainability / performance, with severity labels
75
+ ---
76
+
77
+ # Code review v2
78
+
79
+ You are a senior code review specialist. Review the code the user provides along these dimensions:
80
+
81
+ 1. Security: injection, XSS, secret leakage and similar risks
82
+ 2. Robustness: adequate error handling and boundary checks
83
+ 3. Maintainability: clear naming and sound structure
84
+ 4. Performance: obvious bottlenecks
85
+
86
+ For each dimension give concrete improvements and label their severity (high / medium / low).
87
+ `,
88
+ };
49
89
  const INIT_EVAL_COMMAND = 'omk eval --control code-review-v1 --treatment code-review-v2';
50
90
  function isOutsideCwd(relPath) {
51
91
  return relPath === '..' || relPath.startsWith(`..${sep}`);
@@ -147,10 +187,10 @@ export default class Init extends BaseCommand {
147
187
  throw new Error(tCli('cli.init.existing_files', lang, { paths: existingFiles.join(', ') }));
148
188
  }
149
189
  writeProjectScaffold(targetDir, [
150
- { relativePath: 'eval-samples.json', content: serializeInitSamples(sampleCount) },
151
- { relativePath: 'skills/code-review-v1/SKILL.md', content: INIT_SKILL_V1 },
152
- { relativePath: 'skills/code-review-v2/SKILL.md', content: INIT_SKILL_V2 },
153
- { relativePath: relative(targetDir, join(layout.root, '.gitignore')), content: INIT_OMK_GITIGNORE },
190
+ { relativePath: 'eval-samples.json', content: serializeInitSamples(sampleCount, lang) },
191
+ { relativePath: 'skills/code-review-v1/SKILL.md', content: INIT_SKILL_V1[lang] },
192
+ { relativePath: 'skills/code-review-v2/SKILL.md', content: INIT_SKILL_V2[lang] },
193
+ { relativePath: relative(targetDir, join(layout.root, '.gitignore')), content: INIT_OMK_GITIGNORE[lang] },
154
194
  ], flags.force);
155
195
  console.log(tCli('cli.init.scaffolded', lang, { dir: targetDir }));
156
196
  console.log(tCli('cli.init.sample_pack', lang, { count: sampleCount }));
@@ -163,6 +203,8 @@ export default class Init extends BaseCommand {
163
203
  : 'cli.init.next_step_report_quick', lang));
164
204
  console.log(tCli('cli.init.next_step_customize', lang));
165
205
  console.log(tCli('cli.init.note_skill_injection', lang));
206
+ if (!this.langConfigured)
207
+ console.log(tCli('cli.init.language_hint', lang, { lang }));
166
208
  });
167
209
  }
168
210
  }
@@ -9,7 +9,7 @@ export default class Install extends BaseCommand {
9
9
  input: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
10
  };
11
11
  static flags: {
12
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  kind: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
14
  to: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
15
  dest: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -18,7 +18,7 @@ export default class List extends BaseCommand {
18
18
  command: string;
19
19
  }[];
20
20
  static flags: {
21
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
21
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
22
  global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
23
23
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
24
24
  };
@@ -5,7 +5,7 @@ export declare function runObserveInbox(_args: ObserveInboxArgs, flags: ObserveI
5
5
  export default class ObserveInbox extends BaseCommand {
6
6
  static description: string;
7
7
  static flags: {
8
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  'input-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
11
  skill: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -13,11 +13,11 @@ function printText(value) {
13
13
  }
14
14
  // runObserveInbox export:test/cli/observe.test.ts in-process import 验证 by-skill 聚合行为。
15
15
  export async function runObserveInbox(_args, flags, lang, signal) {
16
- const { queryObservationInbox, selectExploreInboxItems, loadLatestObservationInboxReports, summarizeObservationInboxBySkill, DEFAULT_OBSERVATIONS_DIR, DEFAULT_GLOBAL_OBSERVATIONS_DIR } = await import('../../../observability/inbox/index.js');
17
- // 显式 --input-dir 最高;否则 --global 直读全局、默认读项目(空则 loadObservationInboxReports 兜底全局)。
16
+ const { queryObservationInbox, selectExploreInboxItems, loadLatestObservationInboxReports, summarizeObservationInboxBySkill, globalObservationsDir, projectObservationsDir } = await import('../../../observability/inbox/index.js');
17
+ // 显式 --input-dir 最高;否则 --global 直读全局、默认交给 inbox 读侧的「项目优先 → 全局兜底」。
18
18
  const dir = flags['input-dir']
19
19
  ? resolve(flags['input-dir'])
20
- : (flags.global ? DEFAULT_GLOBAL_OBSERVATIONS_DIR : DEFAULT_OBSERVATIONS_DIR);
20
+ : (flags.global ? globalObservationsDir() : undefined);
21
21
  if (flags['llm-enhanced-review']) {
22
22
  const { buildObservationInboxViewModel } = await import('../../../observability/inbox/view-model.js');
23
23
  const { extractSkillSoftStandards } = await import('../../../observability/soft-standards/index.js');
@@ -62,7 +62,7 @@ export async function runObserveInbox(_args, flags, lang, signal) {
62
62
  items = items.filter((item) => item.skillName === flags.skill);
63
63
  }
64
64
  const recyclableCount = items.filter((item) => item.severity !== 'noise').length;
65
- const sampleCommandBase = `omk sample --from-traces --observations-dir ${shellQuoteArg(dir)}`;
65
+ const sampleCommandBase = `omk sample --from-traces --observations-dir ${shellQuoteArg(dir ?? projectObservationsDir())}`;
66
66
  const sampleCommand = flags.skill
67
67
  ? `${sampleCommandBase} --skill ${shellQuoteArg(flags.skill)}`
68
68
  : sampleCommandBase;
@@ -9,7 +9,7 @@ export default class Observe extends BaseCommand {
9
9
  sessionsDir: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
10
10
  };
11
11
  static flags: {
12
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  kb: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
14
  last: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
15
  from: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -7,7 +7,7 @@ export default class ObserveIngest extends BaseCommand {
7
7
  traceDir: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
8
  };
9
9
  static flags: {
10
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'output-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
@@ -84,14 +84,18 @@ export default class ObserveIngest extends BaseCommand {
84
84
  : 'Error: --output-dir must not be an empty string.');
85
85
  throw new CliExit(2);
86
86
  }
87
- const { buildObservationInboxReport, compactObservationInboxReport, saveObservationInboxReport, DEFAULT_PROJECT_OBSERVATIONS_DIR, DEFAULT_GLOBAL_OBSERVATIONS_DIR, } = await import('../../../observability/inbox/index.js');
88
- // 显式 --output-dir 最高;否则 --global 写全局、默认写项目(读侧 loadObservationInboxReports 会从项目兜底到全局)。
89
- const defaultDir = flags.global ? DEFAULT_GLOBAL_OBSERVATIONS_DIR : DEFAULT_PROJECT_OBSERVATIONS_DIR;
90
- const outDir = resolve(outDirRaw ?? defaultDir);
87
+ const { buildObservationInboxReport, compactObservationInboxReport, saveObservationInboxReport, projectObservationsDir, globalObservationsDir, } = await import('../../../observability/inbox/index.js');
88
+ // 显式 --output-dir 最高;否则 --global 写全局、默认写项目。
89
+ const outDir = resolve(outDirRaw ?? (flags.global ? globalObservationsDir() : projectObservationsDir()));
90
+ // 读侧兜底只在默认目标上生效:显式 --output-dir 与 --global 都照读给定目录,与 inbox 读侧同口径。
91
+ const reviewStateSource = outDirRaw || flags.global ? outDir : undefined;
91
92
  const { loadObservationReviewState } = await import('../../../observability/inbox/review-state.js');
92
93
  const { buildObserveDiagnosticsFromReport } = await import('../../../diagnosis/observe-producer.js');
93
- const report = buildObservationInboxReport(tracePath, { reviewState: loadObservationReviewState(outDir) });
94
- report.diagnostics = buildObserveDiagnosticsFromReport(report);
94
+ const report = buildObservationInboxReport(tracePath, { reviewState: loadObservationReviewState(reviewStateSource) });
95
+ // 链由 observability 侧单一生产者按报告内的 cwd 证据构建,歧义即跳过;诊断层只消费。
96
+ const { skillNamesFromReports, buildSkillChainsForEvidence } = await import('../../../observability/inbox/skill-chains.js');
97
+ const { chains } = buildSkillChainsForEvidence(skillNamesFromReports([report]), [report]);
98
+ report.diagnostics = buildObserveDiagnosticsFromReport(report, { skillChains: chains });
95
99
  const path = saveObservationInboxReport(report, outDir);
96
100
  console.log(flags.json
97
101
  ? JSON.stringify(compactObservationInboxReport(report), null, 2)
@@ -5,7 +5,7 @@ export default class ObserveKnowledge extends BaseCommand {
5
5
  operation: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
6
  };
7
7
  static flags: {
8
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  source: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'start-record': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -15,7 +15,7 @@ export default class ObserveKnowledge extends BaseCommand {
15
15
  static flags = {
16
16
  lang: LANG_FLAG,
17
17
  workspace: Flags.string({ description: description('本地知识工作区,默认使用全局设置;CLI 与 Studio 共用。', 'Local knowledge workspace; defaults to global settings shared with Studio.') }),
18
- source: Flags.string({ description: description('capture:一份 Codex JSONL 文件。', 'capture: one Codex JSONL file.') }),
18
+ source: Flags.string({ description: description('capture:一份已支持格式的 Agent 会话日志(Codex/Claude/Qoder 等)。', 'capture: one supported agent session log (Codex / Claude / Qoder / ...).') }),
19
19
  'start-record': Flags.integer({ min: 0, description: description('从零开始的非空记录序号,包含。', 'Zero-based nonempty record index, inclusive.') }),
20
20
  'end-record': Flags.integer({ min: 0, description: description('最后一条记录序号,包含。', 'Last record index, inclusive.') }),
21
21
  snapshot: Flags.string({ description: description('generate/source/delete-source:归档身份。', 'generate/source/delete-source: snapshot identity.') }),
@@ -5,7 +5,7 @@ export default class ObserveShow extends BaseCommand {
5
5
  inboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
6
  };
7
7
  static flags: {
8
- lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  'input-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
11
  };