@mutagent/helix 0.1.0-alpha.14

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 (357) hide show
  1. package/.claude/skills/mutagent-helix/SKILL.md +113 -0
  2. package/.claude/skills/mutagent-helix/scripts/cli/codex-transcode.ts +143 -0
  3. package/.claude/skills/mutagent-helix/scripts/cli/doctor.ts +111 -0
  4. package/.claude/skills/mutagent-helix/scripts/cli/init.ts +382 -0
  5. package/.claude/skills/mutagent-helix/scripts/cli/run.sh +61 -0
  6. package/CLAUDE.md +193 -0
  7. package/LICENSE +201 -0
  8. package/NOTICE +22 -0
  9. package/README.md +209 -0
  10. package/assets/adl-loop.svg +162 -0
  11. package/assets/system-status.svg +422 -0
  12. package/bin/mutagent-cli.mjs +9950 -0
  13. package/bin/mutagent-helix.mjs +78 -0
  14. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/CLAUDE.md +28 -0
  15. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/SKILL.md +138 -0
  16. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/assets/templates/agentspec.yaml.tpl +247 -0
  17. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/frameworks/doc-pins.md +53 -0
  18. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/principles.md +91 -0
  19. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/requirements.yaml +295 -0
  20. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/workflows/orchestrator-protocol.md +302 -0
  21. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/doctor.ts +116 -0
  22. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/init.ts +230 -0
  23. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/run.sh +60 -0
  24. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/config/resolve-spec-dir.ts +199 -0
  25. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/contract/agentspec.schema.ts +455 -0
  26. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/setup/detect.ts +67 -0
  27. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/validate/validate-spec.ts +93 -0
  28. package/mutagent-agentspec/LICENSE +201 -0
  29. package/mutagent-agentspec/NOTICE +19 -0
  30. package/mutagent-agentspec/README.md +44 -0
  31. package/mutagent-builder/.claude/skills/mutagent-builder/SKILL.md +100 -0
  32. package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md +312 -0
  33. package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md +357 -0
  34. package/mutagent-builder/.claude/skills/mutagent-builder/assets/templates/build-report.md.tpl +39 -0
  35. package/mutagent-builder/.claude/skills/mutagent-builder/references/principles.md +31 -0
  36. package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/build-protocol.md +61 -0
  37. package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/improve-handoff.md +23 -0
  38. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/cli/run.sh +60 -0
  39. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/handoff/validate-build-input.ts +72 -0
  40. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/sync-spec/check-sync-spec.ts +499 -0
  41. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts +182 -0
  42. package/mutagent-builder/CLAUDE.md +25 -0
  43. package/mutagent-builder/README.md +26 -0
  44. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/README.md +192 -0
  45. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/SKILL.md +352 -0
  46. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-architect.md +256 -0
  47. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-engineer.md +344 -0
  48. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/diagnostics-analyzer.md +576 -0
  49. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/discovery.md +425 -0
  50. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.json.tpl +24 -0
  51. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.md.tpl +49 -0
  52. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/config.yaml.tpl +100 -0
  53. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/pr-body.md.tpl +56 -0
  54. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/report.html.tpl +327 -0
  55. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/README.md +27 -0
  56. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/iter-N-handover.md.tpl +125 -0
  57. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/self-diagnosis-contract.v0.1.0.yaml.tpl +234 -0
  58. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/spec.yaml.tpl +152 -0
  59. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/team.yaml.tpl +127 -0
  60. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/wave-N-dashboard.html.tpl +1712 -0
  61. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.1-nl-query.md +59 -0
  62. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.2-tier0-progress.md +58 -0
  63. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.3-analysis-progress.md +44 -0
  64. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.4-html-report.md +61 -0
  65. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.5-rca-detail.md +69 -0
  66. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.6-stale-warning.md +53 -0
  67. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.1-welcome.md +60 -0
  68. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.2-source-platform-picker.md +41 -0
  69. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.3-source-auth.md +75 -0
  70. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.4-target-picker.md +48 -0
  71. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.5-ask-tool.md +43 -0
  72. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.6-config-review.md +57 -0
  73. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.7-filter-defaults.md +52 -0
  74. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.8-first-run.md +59 -0
  75. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-findings.json +92 -0
  76. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-meta.json +47 -0
  77. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/adapter-strategy.md +75 -0
  78. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config-migration.md +84 -0
  79. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config.md +159 -0
  80. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/filter-search-matrix.md +66 -0
  81. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/harness-knowledge.md +22 -0
  82. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/memory-format.md +78 -0
  83. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/onboarding-decisions.yaml +187 -0
  84. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/operation-inventory.md +59 -0
  85. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/overview.md +167 -0
  86. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/reference.md +119 -0
  87. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/script-index.md +101 -0
  88. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-adapter-contract.md +93 -0
  89. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/claude-code-transcripts.md +66 -0
  90. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex-transcripts.md +78 -0
  91. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex.md +145 -0
  92. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/install-paths.md +57 -0
  93. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/langfuse.md +178 -0
  94. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/local-jsonl.md +55 -0
  95. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/openobserve.md +102 -0
  96. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/otel.md +63 -0
  97. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/cloud-rest.md +84 -0
  98. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-claude.md +65 -0
  99. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cloud-agent-sdk.md +92 -0
  100. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-codex.md +72 -0
  101. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cursor.md +108 -0
  102. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-mastra.md +77 -0
  103. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-opencode.md +70 -0
  104. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/apply-pr-comment-format.md +82 -0
  105. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/diagnostics.md +35 -0
  106. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/handover-contract.md +247 -0
  107. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/onboarding.md +300 -0
  108. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/orchestrator-protocol.md +1861 -0
  109. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rca.md +331 -0
  110. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rendering-anatomy.md +314 -0
  111. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/schedule-prep.md +100 -0
  112. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/scope-model.md +128 -0
  113. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/verification-methodology.md +174 -0
  114. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/aggregate/sort-findings.ts +0 -0
  115. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/blind-spots.ts +167 -0
  116. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/llm-sample.ts +681 -0
  117. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/doctor.ts +215 -0
  118. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/init.ts +1013 -0
  119. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/install-agents.ts +350 -0
  120. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/run.sh +61 -0
  121. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/shared-templates.ts +79 -0
  122. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/load.ts +392 -0
  123. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/resolve-credential.ts +120 -0
  124. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/schema.ts +641 -0
  125. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/validate.ts +134 -0
  126. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/build-diagnosis-context.ts +417 -0
  127. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/load-context.ts +105 -0
  128. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/contract/types.ts +166 -0
  129. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/build-render-input.ts +1964 -0
  130. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/corpus-severity.ts +172 -0
  131. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/dismissal-match.ts +270 -0
  132. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/rank-remedies.ts +75 -0
  133. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/install-hooks.sh +46 -0
  134. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/pre-push.sh +78 -0
  135. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/invocation/parse-brief.ts +188 -0
  136. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/match.ts +114 -0
  137. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/paths.ts +95 -0
  138. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/store.ts +535 -0
  139. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/types.ts +181 -0
  140. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/lint/template-inline-js.ts +267 -0
  141. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/append.ts +188 -0
  142. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/read.ts +218 -0
  143. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/platforms/entity-context.ts +686 -0
  144. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/read-unitf.ts +267 -0
  145. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/trace.ts +1078 -0
  146. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-adapter.ts +0 -0
  147. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-types.ts +213 -0
  148. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/persist-selections.ts +174 -0
  149. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/render.ts +3254 -0
  150. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/diagnose.ts +64 -0
  151. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/session.ts +167 -0
  152. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/caps.ts +345 -0
  153. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/deep-read-gate.ts +424 -0
  154. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/representative.ts +584 -0
  155. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/objection.ts +224 -0
  156. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/trajectory.ts +489 -0
  157. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/dispatch.ts +135 -0
  158. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/probe.ts +170 -0
  159. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/detect.ts +307 -0
  160. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/ensure-cli.ts +315 -0
  161. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/reconfigure.ts +77 -0
  162. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/verify-agents.ts +207 -0
  163. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/slicer.ts +166 -0
  164. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/claude-code.ts +17 -0
  165. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/codex.ts +11 -0
  166. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/langfuse.ts +17 -0
  167. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/local-jsonl.ts +12 -0
  168. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/otel.ts +12 -0
  169. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/index.ts +54 -0
  170. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/registry.ts +45 -0
  171. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/types.ts +86 -0
  172. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/stale-detector.ts +74 -0
  173. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/test/render-playwright.cli.ts +477 -0
  174. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/claude-code.ts +133 -0
  175. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/langfuse.ts +143 -0
  176. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0-scan.ts +423 -0
  177. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/completeness-check.ts +436 -0
  178. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/doc-refs.ts +190 -0
  179. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/finalize-gate.ts +417 -0
  180. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/findings-contract.ts +628 -0
  181. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/render-js-syntax.ts +188 -0
  182. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/report-checklist.yaml +217 -0
  183. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/trace-shape.ts +262 -0
  184. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/wave6-checklist.ts +326 -0
  185. package/mutagent-diagnostics/CLAUDE.md +41 -0
  186. package/mutagent-diagnostics/LICENSE +201 -0
  187. package/mutagent-diagnostics/NOTICE +18 -0
  188. package/mutagent-diagnostics/README.md +343 -0
  189. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/SKILL.md +548 -0
  190. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/audit-executor.md +169 -0
  191. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/dataset-builder.md +160 -0
  192. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/discovery.md +425 -0
  193. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/evaluator.md +1108 -0
  194. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/theme.css +213 -0
  195. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/wordmark.html +9 -0
  196. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/context-flow-lens.md +85 -0
  197. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/data-lens.md +47 -0
  198. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/decision-lens.md +48 -0
  199. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/methodology-critic-lens.md +53 -0
  200. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/trajectory-lens.md +44 -0
  201. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/build-review-interface.md +83 -0
  202. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/edd-loop.md +134 -0
  203. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/error-analysis.md +113 -0
  204. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-audit.md +154 -0
  205. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-stage.md +168 -0
  206. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/generate-synthetic-data.md +81 -0
  207. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/grounded-adjudication.md +221 -0
  208. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/memory-format.md +65 -0
  209. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/methodology.md +201 -0
  210. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/operation-inventory.md +197 -0
  211. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/validate-evaluator.md +125 -0
  212. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/workflows/orchestrator-protocol.md +300 -0
  213. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/write-judge-prompt.md +123 -0
  214. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/behavior-tree.schema.yaml +73 -0
  215. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/dataset.schema.yaml +66 -0
  216. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/edd-change-request.schema.yaml +114 -0
  217. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/eval-matrix.schema.yaml +74 -0
  218. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-graph.schema.yaml +69 -0
  219. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-profile.schema.yaml +49 -0
  220. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/methodology-review.schema.yaml +40 -0
  221. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/scorecard.schema.yaml +85 -0
  222. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/agent-dispatch.ts +0 -0
  223. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/aggregate-discover.ts +543 -0
  224. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/artifact-paths.ts +115 -0
  225. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/assemble-scorecard.ts +172 -0
  226. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-dataset.ts +186 -0
  227. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-evals.ts +93 -0
  228. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-review-ui.ts +393 -0
  229. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/check-method-router.ts +170 -0
  230. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/aggregate.ts +112 -0
  231. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/audit-run.ts +182 -0
  232. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/doctor.ts +211 -0
  233. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/dogfood.ts +133 -0
  234. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/init.ts +601 -0
  235. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/methodology-review.ts +122 -0
  236. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/prep.ts +295 -0
  237. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/profile-subject.ts +165 -0
  238. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/run.sh +56 -0
  239. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/variance-check.ts +105 -0
  240. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-eval.ts +248 -0
  241. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-quality-verdict.ts +285 -0
  242. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/codegen-evals.ts +173 -0
  243. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-project.ts +151 -0
  244. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-sampler.ts +267 -0
  245. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/load.ts +343 -0
  246. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/schema.ts +380 -0
  247. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/agentspec-evals.ts +85 -0
  248. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/dataset.ts +149 -0
  249. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-engine.ts +118 -0
  250. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-matrix.ts +577 -0
  251. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-types.ts +1074 -0
  252. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/flow-graph.ts +194 -0
  253. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/types.ts +303 -0
  254. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/validation.ts +193 -0
  255. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/derive-dataset.ts +152 -0
  256. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/determine-outcome.ts +219 -0
  257. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/diff-discriminate.ts +160 -0
  258. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/discover-criteria.ts +348 -0
  259. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/change-request.ts +232 -0
  260. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/edd-types.ts +210 -0
  261. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/variance-gate.ts +186 -0
  262. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/emit-completeness.ts +111 -0
  263. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/eval-engine.ts +160 -0
  264. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/evaluate.ts +333 -0
  265. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/flow-graph.ts +230 -0
  266. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-prompt-template.ts +253 -0
  267. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-provider.ts +135 -0
  268. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-grounding.ts +229 -0
  269. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-uniformity.ts +168 -0
  270. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/living-suite.ts +109 -0
  271. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-bundle.ts +203 -0
  272. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile-vocab.ts +64 -0
  273. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile.ts +106 -0
  274. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/mask.ts +138 -0
  275. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/materialize-dataset.ts +113 -0
  276. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/matrix-judge.ts +750 -0
  277. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/append.ts +215 -0
  278. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/read.ts +168 -0
  279. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/persist-eval-criteria.ts +232 -0
  280. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/prep-tasks.ts +125 -0
  281. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/profile-subject.ts +310 -0
  282. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/publish-report.ts +131 -0
  283. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/read-unitf-traces.ts +81 -0
  284. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-build-cards.ts +195 -0
  285. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-discover-report.ts +1640 -0
  286. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-eval-report.ts +3838 -0
  287. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-report.ts +212 -0
  288. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-credential.ts +110 -0
  289. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-ref.ts +98 -0
  290. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/result-verify.ts +129 -0
  291. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/route-failures.ts +330 -0
  292. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-deterministic.ts +367 -0
  293. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-evaluate.ts +719 -0
  294. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-judge.ts +155 -0
  295. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-pipeline.ts +175 -0
  296. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sample-traces.ts +210 -0
  297. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/self-audit.ts +387 -0
  298. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/source-map.ts +106 -0
  299. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/subject-profile.ts +134 -0
  300. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/substrate.ts +162 -0
  301. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sync-eval-criteria.ts +244 -0
  302. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/ui-slots.ts +119 -0
  303. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/unitf-to-evaltrace.ts +284 -0
  304. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/validate-judge.ts +358 -0
  305. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/variance-compare.ts +177 -0
  306. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/behavior-tree.yaml +140 -0
  307. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/eval-matrix.yaml +1270 -0
  308. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/methodology-review.yaml +105 -0
  309. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/audit.workflow.js +82 -0
  310. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/data-leak.workflow.js +236 -0
  311. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/variance.workflow.js +163 -0
  312. package/mutagent-evaluator/CLAUDE.md +45 -0
  313. package/mutagent-evaluator/LICENSE +201 -0
  314. package/mutagent-evaluator/NOTICE +23 -0
  315. package/mutagent-evaluator/README.md +88 -0
  316. package/mutagent-optimize/.claude/skills/mutagent-optimize/SKILL.md +287 -0
  317. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/contracts/amend-request.ts +503 -0
  318. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/improve-loop-run.ts +304 -0
  319. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state-cli.ts +300 -0
  320. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state.ts +440 -0
  321. package/mutagent-optimize/CLAUDE.md +49 -0
  322. package/mutagent-optimize/README.md +26 -0
  323. package/mutagent-orchestrator/CLAUDE.md +102 -0
  324. package/mutagent-orchestrator/README.md +20 -0
  325. package/mutagent-orchestrator/assets/agents/discovery.md +425 -0
  326. package/mutagent-orchestrator/assets/agents/dogfood-monitor.md +266 -0
  327. package/mutagent-orchestrator/assets/agents/monitor.md +258 -0
  328. package/mutagent-orchestrator/orchestrator.md +782 -0
  329. package/mutagent-orchestrator/references/MONITORING.md +209 -0
  330. package/mutagent-orchestrator/references/config-fields.md +132 -0
  331. package/mutagent-orchestrator/references/config-migration.md +132 -0
  332. package/mutagent-orchestrator/references/index-registry.md +92 -0
  333. package/mutagent-orchestrator/routing.yaml +391 -0
  334. package/mutagent-orchestrator/scripts/config-schema.ts +1010 -0
  335. package/mutagent-orchestrator/scripts/dispatch.ts +439 -0
  336. package/mutagent-orchestrator/scripts/dogfood/extract-feedback.ts +203 -0
  337. package/mutagent-orchestrator/scripts/dogfood/reconstruct-trajectory.ts +327 -0
  338. package/mutagent-orchestrator/scripts/dogfood/render-dogfood-report.ts +347 -0
  339. package/mutagent-orchestrator/scripts/dogfood/resolve-subagents.ts +160 -0
  340. package/mutagent-orchestrator/scripts/dogfood/run-report.ts +264 -0
  341. package/mutagent-orchestrator/scripts/dogfood/slack-thread.ts +106 -0
  342. package/mutagent-orchestrator/scripts/dogfood/types.ts +257 -0
  343. package/mutagent-orchestrator/scripts/eval-routing.ts +753 -0
  344. package/mutagent-orchestrator/scripts/gate.ts +219 -0
  345. package/mutagent-orchestrator/scripts/handover-contract.ts +362 -0
  346. package/mutagent-orchestrator/scripts/index/build-index.ts +351 -0
  347. package/mutagent-orchestrator/scripts/index/render-index.ts +110 -0
  348. package/mutagent-orchestrator/scripts/monitor/slack-notify.ts +111 -0
  349. package/mutagent-orchestrator/scripts/monitor/triggers.ts +162 -0
  350. package/mutagent-orchestrator/scripts/onboarding-check.ts +369 -0
  351. package/mutagent-orchestrator/scripts/render-roster.ts +308 -0
  352. package/mutagent-orchestrator/scripts/resolve-credential.ts +185 -0
  353. package/mutagent-orchestrator/scripts/resolve-paths.ts +114 -0
  354. package/mutagent-orchestrator/scripts/slack/format.ts +63 -0
  355. package/mutagent-orchestrator/scripts/slack/post.ts +115 -0
  356. package/mutagent-orchestrator/scripts/sync-index.ts +311 -0
  357. package/package.json +64 -0
@@ -0,0 +1,641 @@
1
+ /**
2
+ * scripts/config/schema.ts
3
+ * TypeBox schema for the `lifecycle.diagnostics:` section of the unified
4
+ * `.mutagent/config.yaml` (v0.2.0) + the PORTED `global.sources[]` / `global.targets[]`
5
+ * catalog entries the diagnostics skill binds BY ROLE.
6
+ *
7
+ * v0.2.0 config-shape break (plan PHASE 1 · Fork B hard-cut):
8
+ * - `source` / `target` are NO LONGER in this section — the diagnostics skill
9
+ * binds a `global.sources[]` (by the source-consumer role) + a `global.targets[]`
10
+ * (by the target-writer role). `GlobalSourceSchema` / `GlobalTargetSchema` below
11
+ * are BYTE-PARITY ports of the orchestrator's `SourceSchema` / `TargetSchema`
12
+ * (mutagent-orchestrator/scripts/config-schema.ts) — never cross-imported
13
+ * (standalone + symbiosis invariant; parity is asserted by config.parity.test.ts).
14
+ * - `schedule` / `trigger_rules` / `heartbeat` moved OUT to the top-level
15
+ * `triggers.<stage>` block (orchestrator-owned) — removed here.
16
+ * - `credential_ref` is WIDENED to `string | { env, path? }` (mirrors
17
+ * resolve-credential.ts `CredentialRef`).
18
+ *
19
+ * credential_ref values resolve via resolve-credential.ts (env → .env → .mutagentrc);
20
+ * raw secrets never live here.
21
+ * Type A — Pure Script (deterministic schema definition)
22
+ */
23
+
24
+ import { Type } from "@sinclair/typebox";
25
+ import type { Static } from "@sinclair/typebox";
26
+
27
+ // ── Credential ref (widened v0.2.0) ──────────────────────────────────────────
28
+
29
+ /**
30
+ * A credential REFERENCE — an ENV-VAR NAME (string) or an object that also pins an
31
+ * explicit file to read first (`{ env, path? }`). NEVER a raw secret value.
32
+ * PARITY: mirrors resolve-credential.ts `CredentialRef` AND the orchestrator's
33
+ * `CredentialRefSchema` (mutagent-orchestrator/scripts/config-schema.ts). Ported,
34
+ * not imported (standalone invariant).
35
+ */
36
+ export const CredentialRefSchema = Type.Union([
37
+ Type.String({ minLength: 1 }),
38
+ Type.Object(
39
+ {
40
+ env: Type.String({ minLength: 1 }),
41
+ path: Type.Optional(Type.String({ minLength: 1 })),
42
+ },
43
+ { additionalProperties: false },
44
+ ),
45
+ ]);
46
+ export type CredentialRefValue = Static<typeof CredentialRefSchema>;
47
+
48
+ // ── Source platform ──────────────────────────────────────────────────────────
49
+
50
+ export const SourcePlatformSchema = Type.Union([
51
+ Type.Literal("langfuse"),
52
+ Type.Literal("otel"),
53
+ Type.Literal("local-jsonl"),
54
+ Type.Literal("claude-code"),
55
+ Type.Literal("codex"),
56
+ ]);
57
+
58
+ /**
59
+ * PRD-SO-03: Enum-constrained format values (Q9 — yes, enum-constrain).
60
+ * Used by source.format to hint the normalizer which shape to expect.
61
+ *
62
+ * CONSUMER: scripts/normalize/*.ts (per-platform normalizer dispatch) — the format
63
+ * picks the record-shape parser. PURPOSE: tell the intake which on-disk shape the
64
+ * `paths[]` files carry so the right parser runs (or, for `unitf`, is SKIPPED).
65
+ *
66
+ * F1 (plan FEATURE 1 · Fork A) — `"unitf"`: the file is ALREADY conformant UniTF
67
+ * JSONL (emitted by the eval-run `captureUniTF` wrap for bare code agents). The
68
+ * read side SKIPS per-platform normalization and reads the JSONL directly — no
69
+ * shape translation. Typically paired with `platform: local-jsonl` + `paths:[…]`.
70
+ * PARITY: byte-identical to the orchestrator's `SourceFormat` enum (parity.test.ts
71
+ * asserts the literal set; the `"unitf"` add lands in both ports at once).
72
+ */
73
+ export const SourceFormatSchema = Type.Union([
74
+ Type.Literal("langfuse-export"),
75
+ Type.Literal("claude-code"),
76
+ Type.Literal("codex"),
77
+ Type.Literal("raw"),
78
+ Type.Literal("unitf"),
79
+ ]);
80
+
81
+ /**
82
+ * PARITY-PORT of the orchestrator's `SourceSchema` (mutagent-orchestrator/
83
+ * scripts/config-schema.ts). One `global.sources[]` catalog entry — where traces
84
+ * live. Bound BY ROLE (source-consumers evaluate/diagnose bind `global.sources`);
85
+ * a single entry auto-binds, multiple ⇒ disambiguation deferred (NOT a hard fail).
86
+ *
87
+ * v0.2.0: `name` is the catalog id (referenced by role) — NEW vs the old inline
88
+ * `source`. `credential_ref` is the widened `CredentialRefSchema`. Field set +
89
+ * enum values + optionality are byte-identical to the orchestrator's (config.parity.test.ts).
90
+ * Closed object (`additionalProperties:false`) — mirrors the orchestrator.
91
+ *
92
+ * SELECTION (parity with orchestrator + evaluator): `default?: boolean` disambiguates
93
+ * a multi-entry catalog WITHOUT an interactive prompt — exactly one `default: true`
94
+ * auto-binds; >1 default is a config error (`multiple-defaults`); 0 default with >1
95
+ * entry defers to a run-start ASK (`needs-selection`). See `selectByRole` in load.ts.
96
+ */
97
+ export const GlobalSourceSchema = Type.Object(
98
+ {
99
+ /** CONSUMER: load.ts `selectByRole` (role binding) + Step 1.5 ASK. PURPOSE: the
100
+ * catalog id an operator picks/`--source`-names + the label shown in the run-start
101
+ * ASK. Required — the join key for the whole selection contract. */
102
+ name: Type.String({ minLength: 1 }),
103
+ /** CONSUMER: scripts/normalize/* + the Helix pre-stage `mutagent-cli trace fetch`.
104
+ * PURPOSE: which trace back-end this source reads from (closed enum) — selects the
105
+ * fetch adapter + normalizer. Required. */
106
+ platform: SourcePlatformSchema,
107
+ /** CONSUMER: `mutagent-cli trace fetch` (Langfuse/OTel project scoping). PURPOSE:
108
+ * the platform-side project/workspace id that narrows the trace query. */
109
+ project: Type.Optional(Type.String({ minLength: 1 })),
110
+ /** CONSUMER: `mutagent-cli trace fetch` (self-hosted back-ends). PURPOSE: override
111
+ * the platform's default API host (e.g. a self-hosted Langfuse/OTel collector). */
112
+ endpoint: Type.Optional(Type.String({ minLength: 1 })),
113
+ /** CONSUMER: resolve-credential.ts (env → .env → .mutagentrc). PURPOSE: the ENV-VAR
114
+ * NAME (or `{env,path}`) for the platform's read auth — NEVER a raw secret. */
115
+ credential_ref: Type.Optional(CredentialRefSchema),
116
+ /** CONSUMER: the read side for `platform: local-jsonl` (+ `format:"unitf"`).
117
+ * PURPOSE: glob(s) of on-disk JSONL trace files to read directly (no API fetch). */
118
+ paths: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),
119
+ /** CONSUMER: scripts/normalize/* dispatch. PURPOSE: on-disk record shape hint —
120
+ * picks the parser, or `"unitf"` ⇒ skip normalize (F1). See SourceFormatSchema. */
121
+ format: Type.Optional(SourceFormatSchema),
122
+ /** CONSUMER: normalize/trace.ts (agent-id extraction). PURPOSE: override the JSON
123
+ * field the normalizer reads the agent identifier from when it is non-standard. */
124
+ agent_field: Type.Optional(Type.String({ minLength: 1 })),
125
+ /** CONSUMER: normalize/trace.ts (latency canonicalization). PURPOSE: how to read raw
126
+ * duration values — `auto` infers, `ms`/`s` force the unit. */
127
+ latency_unit: Type.Optional(
128
+ Type.Union([Type.Literal("auto"), Type.Literal("ms"), Type.Literal("s")]),
129
+ ),
130
+ /** CONSUMER: load.ts `selectByRole` (F2). PURPOSE: preselect THIS entry when >1
131
+ * source exists — Step 1.5 then CONFIRMs it (`resolved-default`) rather than asking
132
+ * which. Exactly one `default:true` allowed; >1 is a config error. */
133
+ default: Type.Optional(Type.Boolean()),
134
+ },
135
+ { additionalProperties: false },
136
+ );
137
+ export type GlobalSource = Static<typeof GlobalSourceSchema>;
138
+
139
+ // ── Target platform ──────────────────────────────────────────────────────────
140
+
141
+ export const TargetPlatformSchema = Type.Union([
142
+ Type.Literal("local-claude"),
143
+ Type.Literal("local-codex"),
144
+ Type.Literal("local-cursor"),
145
+ Type.Literal("local-opencode"),
146
+ Type.Literal("local-mastra"),
147
+ Type.Literal("local-cloud-agent-sdk"),
148
+ Type.Literal("cloud-rest"),
149
+ /**
150
+ * PRD-SO-04: report-only target — produce the HTML report but skip the apply gate
151
+ * (Step 11 AskUserQuestion is hard-skipped; runMeta.applySkipped is populated).
152
+ * Use for read-only environments, audits, or when you want a report without committing
153
+ * to any agent-definition changes.
154
+ */
155
+ Type.Literal("report-only"),
156
+ ]);
157
+
158
+ export const TargetModeSchema = Type.Union([
159
+ Type.Literal("local"),
160
+ Type.Literal("remote"),
161
+ ]);
162
+
163
+ /**
164
+ * HOW a fix is applied for a target. `kind` gates the report-only branch.
165
+ * PARITY-PORT of the orchestrator's `ApplyKind` enum + `ApplySchema`.
166
+ */
167
+ export const ApplyKindSchema = Type.Union([
168
+ Type.Literal("code-pr"),
169
+ Type.Literal("markdown"),
170
+ Type.Literal("cloud-deploy"),
171
+ Type.Literal("report-only"),
172
+ ]);
173
+
174
+ export const ApplySchema = Type.Object(
175
+ {
176
+ /** CONSUMER: orchestrator apply gate + DiagnosticsConfig.apply (report-only branch).
177
+ * PURPOSE: HOW a fix lands for this target — `report-only` hard-skips the apply gate;
178
+ * the others route to the matching apply worker. Required. */
179
+ kind: ApplyKindSchema,
180
+ /** RESERVED — consumed by Build/Improve (future). PURPOSE: whether the apply worker
181
+ * stamps a version bump on the changed target. Not read by diagnostics today. */
182
+ versioning: Type.Optional(Type.Boolean()),
183
+ /** RESERVED — consumed by Build/Improve (future). PURPOSE: whether the apply worker
184
+ * opens a PR (vs a direct write) for the fix. Not read by diagnostics today. */
185
+ pr: Type.Optional(Type.Boolean()),
186
+ },
187
+ { additionalProperties: false },
188
+ );
189
+ export type Apply = Static<typeof ApplySchema>;
190
+
191
+ /** A precise link to an Agent / Tooling definition file in a code target. */
192
+ export const CodeRefSchema = Type.Object(
193
+ {
194
+ path: Type.String({ minLength: 1 }),
195
+ why: Type.String({ minLength: 1 }),
196
+ },
197
+ { additionalProperties: false },
198
+ );
199
+ export type CodeRef = Static<typeof CodeRefSchema>;
200
+
201
+ /**
202
+ * PARITY-PORT of the orchestrator's `TargetSchema` (mutagent-orchestrator/
203
+ * scripts/config-schema.ts). One `global.targets[]` catalog entry — where agent
204
+ * defs live + how a fix is applied. Bound BY ROLE (target-writers build/
205
+ * diagnose-apply bind `global.targets`); a single entry auto-binds, multiple ⇒
206
+ * disambiguation deferred.
207
+ *
208
+ * v0.2.0: `name` catalog id, `apply` block (required), `repo_url` + `code_refs`
209
+ * are NEW vs the old inline `target`. Field set + enum values + optionality are
210
+ * byte-identical to the orchestrator's (config.parity.test.ts). Closed object.
211
+ *
212
+ * SELECTION (parity with orchestrator + evaluator): `default?: boolean` disambiguates
213
+ * a multi-entry catalog WITHOUT an interactive prompt — same precedence as the source
214
+ * (exactly-one-default ⇒ bound; >1 ⇒ `multiple-defaults`; 0 ⇒ `needs-selection`).
215
+ */
216
+ export const GlobalTargetSchema = Type.Object(
217
+ {
218
+ /** CONSUMER: load.ts `selectByRole` (role binding) + Step 1.5 ASK. PURPOSE: the
219
+ * catalog id an operator picks/`--target`-names + the label shown in the ASK.
220
+ * Required — the selection-contract join key. */
221
+ name: Type.String({ minLength: 1 }),
222
+ /** CONSUMER: the diagnostics apply worker (dispatch by platform). PURPOSE: WHERE the
223
+ * fix is written (local coding-agent md · code construct · cloud REST · report-only
224
+ * sink). Closed enum. Required. */
225
+ platform: TargetPlatformSchema,
226
+ /** CONSUMER: apply worker (local vs remote path). PURPOSE: `local` writes files in a
227
+ * worktree; `remote` does a REST read-before-write PUT. Required. */
228
+ mode: TargetModeSchema,
229
+ /** CONSUMER: local-mode apply worker. PURPOSE: filesystem root the fix writes under
230
+ * (e.g. `.claude/agents/`). Required-when `mode: local`. */
231
+ root: Type.Optional(Type.String({ minLength: 1 })),
232
+ /** CONSUMER: remote-mode apply worker. PURPOSE: base URL for the cloud REST apply
233
+ * endpoint. Required-when `mode: remote`. */
234
+ rest_base_url: Type.Optional(Type.String({ minLength: 1 })),
235
+ /** CONSUMER: the apply worker's PR opener (local code targets). PURPOSE: the git
236
+ * remote the fix PR is opened against. */
237
+ repo_url: Type.Optional(Type.String({ minLength: 1 })),
238
+ /** RESERVED — consumed by Build/Improve (future). PURPOSE: precise links to the
239
+ * Agent/Tooling definition files a fix should amend. Not read by diagnostics today
240
+ * (F4 `.mutagent/index.md` will source realized impl paths from here). */
241
+ code_refs: Type.Optional(Type.Array(CodeRefSchema)),
242
+ /** CONSUMER: resolve-credential.ts (remote targets). PURPOSE: ENV-VAR NAME (or
243
+ * `{env,path}`) for the target's write auth — NEVER a raw secret. */
244
+ credential_ref: Type.Optional(CredentialRefSchema),
245
+ /** CONSUMER: orchestrator apply gate. PURPOSE: HOW the fix lands (see ApplySchema);
246
+ * `kind: report-only` skips the gate. Required. */
247
+ apply: ApplySchema,
248
+ /** CONSUMER: load.ts `selectByRole` (F2). PURPOSE: preselect THIS entry when >1
249
+ * target exists — Step 1.5 CONFIRMs it (`resolved-default`) rather than asking which.
250
+ * Exactly one `default:true` allowed; >1 is a config error. */
251
+ default: Type.Optional(Type.Boolean()),
252
+ },
253
+ { additionalProperties: false },
254
+ );
255
+ export type GlobalTarget = Static<typeof GlobalTargetSchema>;
256
+
257
+ // ── Context links (PHASE 4) ──────────────────────────────────────────────────
258
+
259
+ /**
260
+ * PARITY-PORT of the orchestrator's `ContextLinkSchema`. A supplementary context
261
+ * link with WHAT / WHY / WHEN — all four fields REQUIRED (a link with no rationale
262
+ * is noise). Loaded at run start: `global.context[]` (every run) +
263
+ * `lifecycle.diagnostics.context[]` (diagnose runs) — see scripts/context/load-context.ts.
264
+ */
265
+ export const ContextLinkSchema = Type.Object(
266
+ {
267
+ path: Type.String({ minLength: 1 }),
268
+ what: Type.String({ minLength: 1 }),
269
+ why: Type.String({ minLength: 1 }),
270
+ when: Type.String({ minLength: 1 }),
271
+ },
272
+ { additionalProperties: false },
273
+ );
274
+ export type ContextLink = Static<typeof ContextLinkSchema>;
275
+
276
+ // ── ASK tool ────────────────────────────────────────────────────────────────
277
+
278
+ export const AskRuntimeSchema = Type.Union([
279
+ Type.Literal("claude-code"),
280
+ Type.Literal("codex"),
281
+ Type.Literal("cursor"),
282
+ Type.Literal("opencode"),
283
+ Type.Literal("generic"),
284
+ ]);
285
+
286
+ export const AskToolConfigSchema = Type.Object({
287
+ /** Detected coding-agent runtime (auto-detected by cli/init.ts) */
288
+ runtime: AskRuntimeSchema,
289
+ /** Platform-specific tool name (AskUserQuestion on Claude Code) */
290
+ native_tool: Type.Optional(Type.String({ default: "AskUserQuestion" })),
291
+ /** Fallback when native tool unavailable */
292
+ fallback: Type.Optional(
293
+ Type.Literal("chat-multi-choice", { default: "chat-multi-choice" })
294
+ ),
295
+ });
296
+
297
+ // ── Trace filter ─────────────────────────────────────────────────────────────
298
+ //
299
+ // NOTE (v0.2.0): `schedule` / `trigger_rules` / `heartbeat` are REMOVED from the
300
+ // diagnostics section — the (future) monitor now lives under the top-level
301
+ // `triggers.<stage>` block (orchestrator-owned; see mutagent-orchestrator/
302
+ // scripts/config-schema.ts `TriggerStageBlockSchema`). `TraceFilterSchema` STAYS:
303
+ // it types trace-scoping filters consumed at run time (I-013 skill_agent_scope,
304
+ // referenced by normalize/trace.ts), independent of the removed trigger machinery.
305
+
306
+ export const TraceFilterSchema = Type.Object({
307
+ agent_id: Type.Optional(Type.String()),
308
+ session_id: Type.Optional(Type.String()),
309
+ start_time: Type.Optional(Type.String()),
310
+ end_time: Type.Optional(Type.String()),
311
+ has_error: Type.Optional(Type.Boolean()),
312
+ has_feedback: Type.Optional(Type.Boolean()),
313
+ score_below: Type.Optional(Type.Number()),
314
+ latency_p99_ms_above: Type.Optional(Type.Number()),
315
+ by_skill: Type.Optional(Type.String()),
316
+ by_route: Type.Optional(Type.String()),
317
+ by_tag: Type.Optional(Type.Array(Type.String())),
318
+ /**
319
+ * I-013: Restrict diagnostic analysis to traces from these agent IDs.
320
+ * Empty array or absent = no filter (all agents included).
321
+ * Typical use: set to the skill's own agent IDs for self-diagnostics scoping.
322
+ * snake_case to match existing TraceFilterSchema field convention (agent_id, by_skill, by_tag).
323
+ */
324
+ skill_agent_scope: Type.Optional(Type.Array(Type.String())),
325
+ });
326
+
327
+ // ── Self-diagnostics [INTERNAL] ──────────────────────────────────────────────
328
+
329
+ export const SelfDiagnosticsCadenceSchema = Type.Union([
330
+ Type.Literal("per-session"),
331
+ Type.Literal("daily"),
332
+ Type.Literal("manual"),
333
+ ]);
334
+
335
+ export const SelfDiagnosticsConfigSchema = Type.Object({
336
+ /**
337
+ * OFF by default for end users.
338
+ * ON for skill maintainers + dogfood mode.
339
+ * [INTERNAL] — when enabled, feeds own session transcript through RCA pipeline (PR-022)
340
+ */
341
+ enabled: Type.Optional(Type.Boolean({ default: false })),
342
+ /** How often to self-diagnose */
343
+ cadence: Type.Optional(SelfDiagnosticsCadenceSchema),
344
+ /** Auto-detect host coding agent for transcript path */
345
+ source: Type.Optional(Type.String({ default: "host-coding-agent" })),
346
+ /** Branch name for self-remedy PRs (template: use {date} placeholder) */
347
+ remedy_branch: Type.Optional(
348
+ Type.String({ default: "mutagent/self-diagnostics/{date}" })
349
+ ),
350
+ /** [INTERNAL] prefix added to all self-remedy PR titles */
351
+ marker: Type.Optional(Type.String({ default: "[INTERNAL]" })),
352
+ });
353
+
354
+ // ── Feedback sources (Phase-2 self-diag opt-in) ─────────────────────────────
355
+
356
+ /**
357
+ * PRD-SO-02 + Phase-2 self-diag: opt-in config for auto-collecting feedback sources.
358
+ * When enabled, the skill collects operator feedback from configured sources (chat
359
+ * transcripts, Langfuse trace scores, external platform) and surfaces it in findings
360
+ * as feedbackSources[] blocks (D5).
361
+ *
362
+ * Opt-in via config.feedback_sources.enabled: true (Q11 — opt-in, not always-on).
363
+ * Each sub-source has its own enabled flag for granular control.
364
+ */
365
+ export const FeedbackSourcesConfigSchema = Type.Object({
366
+ /**
367
+ * Master switch. OFF by default. When true, the skill collects feedback from all
368
+ * enabled sub-sources and injects FeedbackSource[] into each finding before render.
369
+ */
370
+ enabled: Type.Optional(Type.Boolean({ default: false })),
371
+ /**
372
+ * Chat source: search recent Claude Code / coding-agent session transcripts
373
+ * (~/.claude/projects/<encoded>/*.jsonl) for operator messages mentioning the entity.
374
+ */
375
+ chat: Type.Optional(
376
+ Type.Object({
377
+ enabled: Type.Optional(Type.Boolean({ default: true })),
378
+ /**
379
+ * How many most-recent session files to scan. Default 10. Higher values cost
380
+ * more I/O but catch older feedback.
381
+ */
382
+ max_sessions: Type.Optional(Type.Number({ default: 10 })),
383
+ })
384
+ ),
385
+ /**
386
+ * Langfuse trace-score source: fetch trace scores with comments matching the entity.
387
+ * Only active when source.platform = "langfuse".
388
+ */
389
+ trace_score: Type.Optional(
390
+ Type.Object({
391
+ enabled: Type.Optional(Type.Boolean({ default: true })),
392
+ /**
393
+ * Minimum score value to include (inclusive). Absent = include all scores.
394
+ * Use to filter out non-feedback scores (e.g., numeric quality scores without comments).
395
+ */
396
+ min_score: Type.Optional(Type.Number()),
397
+ })
398
+ ),
399
+ /**
400
+ * External feedback platform source: REST endpoint returning FeedbackSource[].
401
+ * Optional — only active when endpoint is set.
402
+ */
403
+ external: Type.Optional(
404
+ Type.Object({
405
+ enabled: Type.Optional(Type.Boolean({ default: false })),
406
+ /** REST endpoint URL returning FeedbackSource[] JSON for the entity. */
407
+ endpoint: Type.Optional(Type.String()),
408
+ /** Env-var NAME for the external platform's auth, resolved via env → .env → .mutagentrc (never store value here). */
409
+ credential_ref: Type.Optional(Type.String()),
410
+ })
411
+ ),
412
+ });
413
+
414
+ export type FeedbackSourcesConfig = Static<typeof FeedbackSourcesConfigSchema>;
415
+
416
+ // ── Run metadata (v0.3 run-tagging) ─────────────────────────────────────────
417
+
418
+ export const RunMetaSchema = Type.Object({
419
+ runId: Type.String(),
420
+ /** Tags applied to this specific run (from config.run_tags + any --tag CLI args) */
421
+ tags: Type.Array(Type.String()),
422
+ startedAt: Type.String(),
423
+ endedAt: Type.Optional(Type.String()),
424
+ /** Platform that provided traces for this run */
425
+ source: Type.Optional(Type.String()),
426
+ /** Target platform for this run's remedies */
427
+ target: Type.Optional(Type.String()),
428
+ /** Number of traces analyzed in this run */
429
+ traceCount: Type.Optional(Type.Number()),
430
+ /**
431
+ * Wave-6 D2: the VERBATIM operator invocation brief that initiated this run.
432
+ * Persisted even when parsing succeeds (re-parse later + library authenticity).
433
+ * Optional (backward-compat — absent on runs not started via the slash command).
434
+ */
435
+ operatorInvocation: Type.Optional(Type.String()),
436
+ /**
437
+ * V3-2: the EFFECTIVE awareness deep-read sample size this run used (the number
438
+ * of traces the awareness layer deep-read). Persisted so a LATER `--run-id`
439
+ * cascade can scale its first-pass seed with THIS run's depth
440
+ * (first-pass N = min(originalSampleN, AWARENESS_SAMPLE_DEFAULT); see
441
+ * awareness/llm-sample.ts:recoverOriginalSampleN + cascadeFirstPassSize).
442
+ * Optional (backward-compat — absent on legacy runs; recovery falls back to
443
+ * AWARENESS_SAMPLE_DEFAULT when unset, never to the legacy discovery size).
444
+ */
445
+ awarenessSampleSize: Type.Optional(Type.Number()),
446
+ });
447
+
448
+ export type RunMeta = Static<typeof RunMetaSchema>;
449
+
450
+ // ── Default audience (W13-D operator directive) ──────────────────────────────
451
+
452
+ /**
453
+ * W13-D: the audience a render pass uses when NO explicit `--audience` flag is
454
+ * given. Two values:
455
+ * "client" — the client-stripped report (internal nodes NODE-STRIPPED).
456
+ * "internal" — the full report (Methodology + Trajectory + internal banners).
457
+ *
458
+ * Operator directive: a published / client install should produce the
459
+ * client-stripped report BY DEFAULT; internal is opt-in. So `init` writes
460
+ * `default_audience: client` and the schema default is also "client".
461
+ *
462
+ * This NEVER overrides the PR-022 self-diag invariant: an `isMetaReport`
463
+ * (self-diagnosis) render is ALWAYS internal regardless of this field — the
464
+ * renderer hard-refuses `audience:client` on a meta report.
465
+ */
466
+ export const DefaultAudienceSchema = Type.Union(
467
+ [Type.Literal("client"), Type.Literal("internal")],
468
+ { default: "client" }
469
+ );
470
+
471
+ export type DefaultAudience = Static<typeof DefaultAudienceSchema>;
472
+
473
+ /**
474
+ * W13-D: the schema-level default audience. Single source of truth for "what does
475
+ * a fresh install render as when nobody says otherwise" → "client" (operator
476
+ * directive). `init` writes this value; the resolver below falls back to it.
477
+ */
478
+ export const DEFAULT_AUDIENCE: DefaultAudience = "client";
479
+
480
+ /**
481
+ * W13-D: deterministically resolve the effective render audience.
482
+ *
483
+ * Precedence (highest first):
484
+ * 1. explicit `--audience` flag (operator override at render time)
485
+ * 2. config.default_audience (the fresh-init default — "client")
486
+ * 3. DEFAULT_AUDIENCE (schema fallback — "client")
487
+ *
488
+ * PR-022 INVARIANT (non-negotiable): a self-diagnosis render (isMetaReport)
489
+ * is ALWAYS "internal" — it overrides every other input. Self-diag is never
490
+ * client. This mirrors the renderer's hard-refuse so the orchestrator never
491
+ * even builds an `--audience client` invocation for a meta report.
492
+ *
493
+ * Pure + deterministic — no clock, no I/O. The orchestrator calls this to decide
494
+ * the `--audience` value it threads into the Step-9 render command.
495
+ *
496
+ * @param opts.explicitFlag the operator's `--audience` value, if any.
497
+ * @param opts.configDefault config.default_audience, if present.
498
+ * @param opts.isMetaReport true for a self-diagnosis render (PR-022).
499
+ */
500
+ export function resolveEffectiveAudience(opts: {
501
+ explicitFlag?: DefaultAudience;
502
+ configDefault?: DefaultAudience;
503
+ isMetaReport?: boolean;
504
+ }): DefaultAudience {
505
+ // PR-022: self-diag is ALWAYS internal — overrides flag + config.
506
+ if (opts.isMetaReport) return "internal";
507
+ if (opts.explicitFlag === "client" || opts.explicitFlag === "internal") {
508
+ return opts.explicitFlag;
509
+ }
510
+ if (opts.configDefault === "client" || opts.configDefault === "internal") {
511
+ return opts.configDefault;
512
+ }
513
+ return DEFAULT_AUDIENCE;
514
+ }
515
+
516
+ // ── Root config ──────────────────────────────────────────────────────────────
517
+
518
+ // ── Agent identity map (W11-07) ─────────────────────────────────────────────
519
+
520
+ /**
521
+ * W11-07: Per-platform observability identity for a named agent.
522
+ * Each entry tells the skill HOW to find this agent's traces on each supported
523
+ * observability platform (Langfuse trace.name / tags, OTel service.name / attrs).
524
+ *
525
+ * This is the CROSS-PLATFORM JOIN KEY: one code-level agent may appear as
526
+ * different identifiers in different tracing back-ends.
527
+ *
528
+ * Example config.yaml entry:
529
+ * agents:
530
+ * - name: search-agent
531
+ * langfuse:
532
+ * traceName: "search-agent-v2"
533
+ * tags: ["production", "search"]
534
+ * agentIdField: "metadata.agent_id"
535
+ * otel:
536
+ * serviceName: "search-svc"
537
+ * resourceAttrs: { "deployment.env": "prod" }
538
+ */
539
+ export const AgentPlatformLangfuseSchema = Type.Object({
540
+ /** Langfuse trace.name value for this agent. */
541
+ traceName: Type.Optional(Type.String()),
542
+ /** Langfuse tags that identify this agent's traces. */
543
+ tags: Type.Optional(Type.Array(Type.String())),
544
+ /** Override the JSON field used to extract agentId from raw Langfuse records. */
545
+ agentIdField: Type.Optional(Type.String()),
546
+ });
547
+
548
+ export const AgentPlatformOtelSchema = Type.Object({
549
+ /** OpenTelemetry service.name resource attribute value. */
550
+ serviceName: Type.Optional(Type.String()),
551
+ /** Additional OTEL resource attributes that narrow the agent identity. */
552
+ resourceAttrs: Type.Optional(Type.Record(Type.String(), Type.String())),
553
+ });
554
+
555
+ export const AgentIdentitySchema = Type.Object({
556
+ /** Canonical code-level agent name (matches the entity you pass to parse-brief). */
557
+ name: Type.String(),
558
+ /** Langfuse-specific identity pointers for this agent. */
559
+ langfuse: Type.Optional(AgentPlatformLangfuseSchema),
560
+ /** OTel-specific identity pointers for this agent. */
561
+ otel: Type.Optional(AgentPlatformOtelSchema),
562
+ });
563
+
564
+ export type AgentIdentity = Static<typeof AgentIdentitySchema>;
565
+
566
+ // ─────────────────────────────────────────────────────────────────────────────
567
+
568
+ export const DiagnosticsConfigSchema = Type.Object({
569
+ /**
570
+ * v0.2.0: `source` / `target` are GONE — the diagnostics skill binds a
571
+ * `global.sources[]` (source-consumer role) + a `global.targets[]`
572
+ * (target-writer role) resolved in load.ts. `schedule` / `trigger_rules` /
573
+ * `heartbeat` moved to the top-level `triggers.<stage>` block.
574
+ *
575
+ * PHASE 4 — stage-specific context links (triage runbook), loaded at run start
576
+ * alongside `global.context[]`. Orchestrator-typed (parity with the
577
+ * orchestrator's `LifecycleDiagnosticsSchema.context`).
578
+ */
579
+ context: Type.Optional(Type.Array(ContextLinkSchema)),
580
+ /**
581
+ * PHASE 1 — the report-only gate the orchestrator reads: `report-only` ⇒ produce
582
+ * the report, skip the target/apply gate (no target needed). Free `string` at the
583
+ * skill level to mirror the orchestrator's permissive `apply` field; the apply
584
+ * kinds themselves are enum-checked at the target (`ApplySchema.kind`).
585
+ */
586
+ apply: Type.Optional(Type.String({ minLength: 1 })),
587
+ ask_tool: AskToolConfigSchema,
588
+ self_diagnostics: Type.Optional(SelfDiagnosticsConfigSchema),
589
+ /**
590
+ * v0.3 run-tagging: default tags applied to EVERY diagnostic run.
591
+ * Useful for filtering in diagnostics-history by feature, milestone, or environment.
592
+ * Examples: ["production", "search-agent"] or ["self-diagnostics", "internal"]
593
+ */
594
+ run_tags: Type.Optional(Type.Array(Type.String())),
595
+ /**
596
+ * PRD-SO-02 + Phase-2 self-diag: opt-in feedback source collection.
597
+ * When enabled, findings are enriched with feedbackSources[] from chat, trace
598
+ * scores, and/or external platforms before render (D5).
599
+ * Defaults to disabled. Opt-in explicitly per Q11.
600
+ */
601
+ feedback_sources: Type.Optional(FeedbackSourcesConfigSchema),
602
+ /**
603
+ * W11-07: Optional agent identity map — cross-platform join keys so the skill
604
+ * can resolve a code-level agent name to its observability identifiers on
605
+ * Langfuse (trace.name / tags / agentIdField) and OTel (service.name / attrs).
606
+ *
607
+ * ADDITIVE + OPTIONAL: absent in existing configs (backward-compatible).
608
+ * Populate when your agent appears under different names across platforms.
609
+ * The identity for the diagnosed agent (from parse-brief.entity) is looked up
610
+ * here and injected into EntityContext.identity at Step 3.7.
611
+ *
612
+ * Example:
613
+ * agents:
614
+ * - name: search-agent
615
+ * langfuse: { traceName: "search-v2", tags: ["prod"] }
616
+ * otel: { serviceName: "search-svc" }
617
+ */
618
+ agents: Type.Optional(Type.Array(AgentIdentitySchema)),
619
+ /**
620
+ * W13-D (operator directive): the audience used for the rendered report when no
621
+ * explicit `--audience` flag is passed to the renderer.
622
+ *
623
+ * ADDITIVE + OPTIONAL (backward-compatible — absent in pre-W13-D configs).
624
+ * Schema default is "client": a fresh `init` writes `default_audience: client`
625
+ * so a published/client install produces the client-stripped report by default;
626
+ * internal is opt-in. The orchestrator threads this value as
627
+ * `--audience <config.default_audience>` at the Step-9 render invocation when the
628
+ * operator gave no explicit flag.
629
+ *
630
+ * Effective-default precedence at render time:
631
+ * explicit `--audience` flag > config.default_audience > renderer fallback ("internal").
632
+ * The renderer's own argv default stays "internal" (safe when neither config nor
633
+ * flag is present); the config default makes a fresh init effectively "client".
634
+ *
635
+ * NEVER overrides PR-022: an `isMetaReport` (self-diag) render is ALWAYS internal.
636
+ */
637
+ default_audience: Type.Optional(DefaultAudienceSchema),
638
+ });
639
+
640
+ export type DiagnosticsConfig = Static<typeof DiagnosticsConfigSchema>;
641
+ export type TraceFilter = Static<typeof TraceFilterSchema>;