@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,455 @@
1
+ /**
2
+ * scripts/contract/agentspec.schema.ts
3
+ * TypeBox schema + TypeScript types for the portable agentspec.yaml (agentspec.v0.2.0).
4
+ * Type A — Pure Script (schema + types + a pure validate function — no I/O side effects).
5
+ *
6
+ * The agentspec.yaml is the ADL ① SPEC Definition: WHAT an agent IS, framework-independent
7
+ * (PR-001 def/impl separation). It has four top-level blocks:
8
+ * - meta — canonical identity (spec_id) + loop position (loop_state). NO downstream links
9
+ * (PR-013 backwards-only linking): the spec never enumerates its subjects/impls.
10
+ * - definition — the interface: persona · system_prompt · jobs · context_sources · tools ·
11
+ * agent_type · triggers · modeling · sop · evals. Descriptions are VERBOSE
12
+ * (PR-015) — the primary field the implementing LLM reads.
13
+ * - build — the implementation target (guided choice). target_framework is a String so it
14
+ * accepts `harness:*` + future targets (PR-005 target-may-be-a-harness). `runtime`
15
+ * is pinned at spec-time so *build implements ONCE (no pick-then-rebuild — dogfood F4).
16
+ * - appendix — pinned framework doc roots the *build agent crawls FRESH (PR-002), + references.
17
+ *
18
+ * Every object is CLOSED (additionalProperties:false) so an undeclared field — a typo or a
19
+ * smuggled downstream `links` block — is REJECTED rather than silently passed (PR-013).
20
+ *
21
+ * Mirrors the handover-contract.ts validation pattern: a compiled TypeCompiler checker + a pure
22
+ * `validateAgentSpec(obj) => { ok, errors[] }`. Fail-loud, never throws.
23
+ */
24
+
25
+ import { type Static, Type } from "@sinclair/typebox";
26
+ import { TypeCompiler } from "@sinclair/typebox/compiler";
27
+
28
+ /**
29
+ * The FROZEN spec schema version. Bump only via an explicit, reviewed migration.
30
+ * 0.1.0 → 0.2.0 (dogfood-driven migration): evals gains required `scenarios` + `dataset_categories`
31
+ * (F1/F2 — the spec must carry the situations the agent handles + the golden eval-suite slices), and
32
+ * build gains a required `runtime` pin (F4 — implement once, no bash→Bun rebuild).
33
+ */
34
+ export const AGENTSPEC_SCHEMA_VERSION = "0.2.0" as const;
35
+
36
+ // ── Categorical constants (no magic strings) ───────────────────────────────────
37
+
38
+ /** Identity kind — what the spec describes. A2A-aligned. */
39
+ export const IdentityKind = {
40
+ Agent: "agent",
41
+ Skill: "skill",
42
+ Composite: "composite",
43
+ } as const;
44
+ export type IdentityKindValue = (typeof IdentityKind)[keyof typeof IdentityKind];
45
+
46
+ /** Where the agent's context comes from. */
47
+ export const ContextSourceKind = {
48
+ Api: "api",
49
+ Saas: "saas",
50
+ InternalService: "internal-service",
51
+ Mcp: "mcp",
52
+ Cli: "cli",
53
+ } as const;
54
+ export type ContextSourceKindValue =
55
+ (typeof ContextSourceKind)[keyof typeof ContextSourceKind];
56
+
57
+ /** Integration-tool binding kind. Binding preference is target-conditional (revised PR-004):
58
+ * CLI-first for harness targets, MCP/Composio/SDK-first for code-frameworks. */
59
+ export const IntegrationKind = {
60
+ Cli: "cli",
61
+ Saas: "saas",
62
+ Mcp: "mcp",
63
+ } as const;
64
+ export type IntegrationKindValue =
65
+ (typeof IntegrationKind)[keyof typeof IntegrationKind];
66
+
67
+ /** The agent's top-level type. */
68
+ export const AgentType = {
69
+ Conversational: "conversational",
70
+ Automation: "automation",
71
+ Orchestrator: "orchestrator",
72
+ } as const;
73
+ export type AgentTypeValue = (typeof AgentType)[keyof typeof AgentType];
74
+
75
+ /**
76
+ * How the DESIGNED agent is ACTIVATED — its inbound event sources (PR-017). DISTINCT from the
77
+ * in-system *monitor agent: these are the designed agent's own triggers, not loop re-entry events.
78
+ */
79
+ export const TriggerKind = {
80
+ A2a: "a2a",
81
+ Webhook: "webhook",
82
+ Schedule: "schedule",
83
+ Queue: "queue",
84
+ Event: "event",
85
+ Mcp: "mcp",
86
+ Manual: "manual",
87
+ } as const;
88
+ export type TriggerKindValue = (typeof TriggerKind)[keyof typeof TriggerKind];
89
+
90
+ /** Eval criterion check type — binary-actionable (PR-019). */
91
+ export const EvalType = {
92
+ LlmJudge: "llm-judge",
93
+ CodeCheck: "code-check",
94
+ } as const;
95
+ export type EvalTypeValue = (typeof EvalType)[keyof typeof EvalType];
96
+
97
+ /** ADL loop stage the spec currently sits at (meta.loop_state.stage, PR-010). */
98
+ export const LoopStage = {
99
+ Spec: "spec",
100
+ Build: "build",
101
+ Eval: "eval",
102
+ Ship: "ship",
103
+ Diagnose: "diagnose",
104
+ Discover: "discover",
105
+ Improve: "improve",
106
+ } as const;
107
+ export type LoopStageValue = (typeof LoopStage)[keyof typeof LoopStage];
108
+
109
+ // ── Helpers ────────────────────────────────────────────────────────────────────
110
+
111
+ /** A closed object — undeclared fields rejected (PR-013 leak/typo catch). */
112
+ function closed<T extends Parameters<typeof Type.Object>[0]>(props: T) {
113
+ return Type.Object(props, { additionalProperties: false });
114
+ }
115
+
116
+ // ── META ────────────────────────────────────────────────────────────────────────
117
+
118
+ /**
119
+ * Loop position. The spec IS the subject record (PR-010): loop_state lives here, not in a
120
+ * separate registry. `last_verdict` is optional (a freshly-spec'd agent has none yet).
121
+ */
122
+ export const LoopStateSchema = closed({
123
+ stage: Type.Union([
124
+ Type.Literal(LoopStage.Spec),
125
+ Type.Literal(LoopStage.Build),
126
+ Type.Literal(LoopStage.Eval),
127
+ Type.Literal(LoopStage.Ship),
128
+ Type.Literal(LoopStage.Diagnose),
129
+ Type.Literal(LoopStage.Discover),
130
+ Type.Literal(LoopStage.Improve),
131
+ ]),
132
+ last_verdict: Type.Optional(Type.String()),
133
+ updated_at: Type.String({ minLength: 1 }),
134
+ });
135
+ export type LoopState = Static<typeof LoopStateSchema>;
136
+
137
+ /**
138
+ * Canonical identity + loop position. `spec_id` is the stable identity anchor that survives every
139
+ * version (PR-012). NOTE: there is intentionally NO downstream `links`/`subjects` field — the spec
140
+ * is implementation-agnostic and never enumerates its impls (PR-013 backwards-only linking).
141
+ */
142
+ export const MetaSchema = closed({
143
+ spec_id: Type.String({ minLength: 1 }),
144
+ spec_version: Type.String({ minLength: 1 }),
145
+ loop_state: LoopStateSchema,
146
+ });
147
+ export type Meta = Static<typeof MetaSchema>;
148
+
149
+ // ── DEFINITION ───────────────────────────────────────────────────────────────────
150
+
151
+ /** A2A-aligned identity. */
152
+ export const IdentitySchema = closed({
153
+ name: Type.String({ minLength: 1 }),
154
+ version: Type.String({ minLength: 1 }),
155
+ description: Type.String({ minLength: 1 }),
156
+ kind: Type.Union([
157
+ Type.Literal(IdentityKind.Agent),
158
+ Type.Literal(IdentityKind.Skill),
159
+ Type.Literal(IdentityKind.Composite),
160
+ ]),
161
+ });
162
+ export type Identity = Static<typeof IdentitySchema>;
163
+
164
+ /** Who the agent IS — role + verbose persona (PR-014 first-class fields). */
165
+ export const PersonaSchema = closed({
166
+ role: Type.String({ minLength: 1 }),
167
+ persona: Type.String({ minLength: 1 }),
168
+ });
169
+ export type Persona = Static<typeof PersonaSchema>;
170
+
171
+ /**
172
+ * A job-to-be-done (the "Requirements"). Verbose description + expected output (PR-015).
173
+ * `backed_by` (optional, PR-024) names the `tools.code[].id`s that IMPLEMENT this job — the spec-time
174
+ * signal of which jobs are code-backed vs NL-only. The build-faithfulness gate validates these refs
175
+ * resolve and that each backing tool is implemented + tested. Additive/optional — no version bump.
176
+ */
177
+ export const JobSchema = closed({
178
+ id: Type.String({ minLength: 1 }),
179
+ description: Type.String({ minLength: 1 }),
180
+ expected_output: Type.String({ minLength: 1 }),
181
+ backed_by: Type.Optional(Type.Array(Type.String())),
182
+ });
183
+ export type Job = Static<typeof JobSchema>;
184
+
185
+ /** What context the agent needs + where it comes from (PR-015 verbose). */
186
+ export const ContextSourceSchema = closed({
187
+ id: Type.String({ minLength: 1 }),
188
+ kind: Type.Union([
189
+ Type.Literal(ContextSourceKind.Api),
190
+ Type.Literal(ContextSourceKind.Saas),
191
+ Type.Literal(ContextSourceKind.InternalService),
192
+ Type.Literal(ContextSourceKind.Mcp),
193
+ Type.Literal(ContextSourceKind.Cli),
194
+ ]),
195
+ description: Type.String({ minLength: 1 }),
196
+ where_from: Type.String({ minLength: 1 }),
197
+ auth_ref: Type.Optional(Type.String()),
198
+ });
199
+ export type ContextSource = Static<typeof ContextSourceSchema>;
200
+
201
+ /** An integration tool (CLI / SaaS / MCP). Binding preference is target-conditional (revised PR-004):
202
+ * CLI-first for harness targets, MCP/Composio/SDK-first for code-frameworks. */
203
+ export const IntegrationToolSchema = closed({
204
+ id: Type.String({ minLength: 1 }),
205
+ kind: Type.Union([
206
+ Type.Literal(IntegrationKind.Cli),
207
+ Type.Literal(IntegrationKind.Saas),
208
+ Type.Literal(IntegrationKind.Mcp),
209
+ ]),
210
+ ref: Type.String({ minLength: 1 }),
211
+ description: Type.String({ minLength: 1 }),
212
+ });
213
+ export type IntegrationTool = Static<typeof IntegrationToolSchema>;
214
+
215
+ /** A code tool the agent can run (verbose description, sandbox flag). */
216
+ export const CodeToolSchema = closed({
217
+ id: Type.String({ minLength: 1 }),
218
+ lang: Type.String({ minLength: 1 }),
219
+ sandbox: Type.Boolean(),
220
+ description: Type.String({ minLength: 1 }),
221
+ });
222
+ export type CodeTool = Static<typeof CodeToolSchema>;
223
+
224
+ /** A reusable skill the agent invokes. */
225
+ export const SkillToolSchema = closed({
226
+ id: Type.String({ minLength: 1 }),
227
+ ref: Type.String({ minLength: 1 }),
228
+ description: Type.String({ minLength: 1 }),
229
+ });
230
+ export type SkillTool = Static<typeof SkillToolSchema>;
231
+
232
+ /**
233
+ * A sub-agent the designed agent dispatches. Verbose description + instructions; optional tools /
234
+ * model. `model` is honored verbatim downstream (PR-003 model-intent-sacred).
235
+ */
236
+ export const SubagentToolSchema = closed({
237
+ name: Type.String({ minLength: 1 }),
238
+ description: Type.String({ minLength: 1 }),
239
+ instructions: Type.String({ minLength: 1 }),
240
+ tools: Type.Optional(Type.Array(Type.String())),
241
+ model: Type.Optional(Type.String()),
242
+ });
243
+ export type SubagentTool = Static<typeof SubagentToolSchema>;
244
+
245
+ /** The four tool buckets, each with verbose descriptions (PR-015). */
246
+ export const ToolsSchema = closed({
247
+ integration: Type.Array(IntegrationToolSchema),
248
+ code: Type.Array(CodeToolSchema),
249
+ skills: Type.Array(SkillToolSchema),
250
+ subagents: Type.Array(SubagentToolSchema),
251
+ });
252
+ export type Tools = Static<typeof ToolsSchema>;
253
+
254
+ /** How THIS agent is ACTIVATED — its inbound event sources (PR-017, distinct from *monitor). */
255
+ export const TriggerSchema = closed({
256
+ id: Type.String({ minLength: 1 }),
257
+ kind: Type.Union([
258
+ Type.Literal(TriggerKind.A2a),
259
+ Type.Literal(TriggerKind.Webhook),
260
+ Type.Literal(TriggerKind.Schedule),
261
+ Type.Literal(TriggerKind.Queue),
262
+ Type.Literal(TriggerKind.Event),
263
+ Type.Literal(TriggerKind.Mcp),
264
+ Type.Literal(TriggerKind.Manual),
265
+ ]),
266
+ description: Type.String({ minLength: 1 }),
267
+ config: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
268
+ });
269
+ export type Trigger = Static<typeof TriggerSchema>;
270
+
271
+ /** A LangGraph-aligned decision-graph edge. */
272
+ export const GraphEdgeSchema = closed({
273
+ from: Type.String({ minLength: 1 }),
274
+ to: Type.String({ minLength: 1 }),
275
+ condition: Type.Optional(Type.String()),
276
+ });
277
+ export type GraphEdge = Static<typeof GraphEdgeSchema>;
278
+
279
+ /** The decision graph (LangGraph-aligned) + freeform workflows. */
280
+ export const ModelingSchema = closed({
281
+ decision_graph: closed({
282
+ state: Type.String({ minLength: 1 }),
283
+ nodes: Type.Array(Type.String()),
284
+ edges: Type.Array(GraphEdgeSchema),
285
+ }),
286
+ workflows: Type.Array(Type.String()),
287
+ });
288
+ export type Modeling = Static<typeof ModelingSchema>;
289
+
290
+ /** A standardized SOP entry: when + context + procedure (+ optional outcomes) (PR-016). */
291
+ export const SopEntrySchema = closed({
292
+ id: Type.String({ minLength: 1 }),
293
+ when: Type.String({ minLength: 1 }),
294
+ context: Type.String({ minLength: 1 }),
295
+ procedure: Type.String({ minLength: 1 }),
296
+ on_outcome: Type.Optional(
297
+ closed({
298
+ success: Type.Optional(Type.String()),
299
+ failure: Type.Optional(Type.String()),
300
+ }),
301
+ ),
302
+ });
303
+ export type SopEntry = Static<typeof SopEntrySchema>;
304
+
305
+ /** A binary-actionable success criterion (PR-019 append-extensible). */
306
+ export const SuccessCriterionSchema = closed({
307
+ id: Type.String({ minLength: 1 }),
308
+ criterion: Type.String({ minLength: 1 }),
309
+ type: Type.Union([
310
+ Type.Literal(EvalType.LlmJudge),
311
+ Type.Literal(EvalType.CodeCheck),
312
+ ]),
313
+ goal: Type.String({ minLength: 1 }),
314
+ });
315
+ export type SuccessCriterion = Static<typeof SuccessCriterionSchema>;
316
+
317
+ /**
318
+ * A representative SCENARIO the agent must handle (dogfood F1). This is the situation the agent
319
+ * faces + the behavior a correct agent exhibits — the seed material an evaluator turns into eval
320
+ * items. `category` groups it under a dataset_categories slice; `edge_case` flags the hard/adversarial
321
+ * situations a naive spec forgets. Verbose descriptions (PR-015).
322
+ */
323
+ export const ScenarioSchema = closed({
324
+ id: Type.String({ minLength: 1 }),
325
+ description: Type.String({ minLength: 1 }),
326
+ expected_behavior: Type.String({ minLength: 1 }),
327
+ category: Type.Optional(Type.String()),
328
+ edge_case: Type.Optional(Type.Boolean()),
329
+ });
330
+ export type Scenario = Static<typeof ScenarioSchema>;
331
+
332
+ /**
333
+ * A DATASET CATEGORY — a slice of the golden eval-suite the *eval stage must cover (dogfood F2).
334
+ * Each category is a use-case bucket (by job / situation) with the explicit edge_cases it must
335
+ * exercise. This is the dataset DEFINITION the spec hands to the evaluator (seed, don't duplicate,
336
+ * PR-018). Verbose descriptions (PR-015).
337
+ */
338
+ export const DatasetCategorySchema = closed({
339
+ id: Type.String({ minLength: 1 }),
340
+ description: Type.String({ minLength: 1 }),
341
+ edge_cases: Type.Array(Type.String()),
342
+ });
343
+ export type DatasetCategory = Static<typeof DatasetCategorySchema>;
344
+
345
+ /**
346
+ * Evals block — the eval design the spec carries forward (PR-019 append-extensible):
347
+ * - success_criteria — binary-actionable pass/fail criteria
348
+ * - scenarios — the situations the agent must handle (dogfood F1)
349
+ * - dataset_categories — the golden eval-suite slices + edge-cases the dataset must cover (F2)
350
+ * All three are required keys (the 0.2.0 migration); each array may be empty structurally, but the
351
+ * interview + worked template populate them richly.
352
+ */
353
+ export const EvalsSchema = closed({
354
+ success_criteria: Type.Array(SuccessCriterionSchema),
355
+ scenarios: Type.Array(ScenarioSchema),
356
+ dataset_categories: Type.Array(DatasetCategorySchema),
357
+ });
358
+ export type Evals = Static<typeof EvalsSchema>;
359
+
360
+ /** The Definition — the interface (WHAT the agent is). */
361
+ export const DefinitionSchema = closed({
362
+ identity: IdentitySchema,
363
+ persona: PersonaSchema,
364
+ // The ACTUAL operative system prompt the runtime sends — the full text, not a summary (PR-014).
365
+ system_prompt: Type.String({ minLength: 1 }),
366
+ jobs_to_be_done: Type.Array(JobSchema),
367
+ context_sources: Type.Array(ContextSourceSchema),
368
+ tools: ToolsSchema,
369
+ agent_type: Type.Union([
370
+ Type.Literal(AgentType.Conversational),
371
+ Type.Literal(AgentType.Automation),
372
+ Type.Literal(AgentType.Orchestrator),
373
+ ]),
374
+ triggers: Type.Array(TriggerSchema),
375
+ modeling: ModelingSchema,
376
+ sop: Type.Array(SopEntrySchema),
377
+ evals: EvalsSchema,
378
+ });
379
+ export type Definition = Static<typeof DefinitionSchema>;
380
+
381
+ // ── BUILD ────────────────────────────────────────────────────────────────────────
382
+
383
+ /**
384
+ * The implementation target (guided choice, lives INSIDE the spec so editing it cascade-updates
385
+ * the impl, PR-001). `target_framework` is a STRING, not a closed Union — it must accept framework
386
+ * targets (mastra · deepagents · pydantic-ai · langgraph) AND harness targets (`harness:claude-code`,
387
+ * `harness:codex`, `harness:<other>`) AND not-yet-enumerated future targets (PR-005).
388
+ *
389
+ * Example values: "mastra" | "deepagents" | "pydantic-ai" | "langgraph" |
390
+ * "harness:claude-code" | "harness:codex" | "harness:<other>".
391
+ *
392
+ * `runtime` is the execution runtime the implementation targets ("bun" | "node" | "deno" | "python"
393
+ * | "shell" | …) — pinned at SPEC time so the *build agent implements ONCE. Dogfood F4: lab-overseer
394
+ * was built in bash then re-built in Bun because the runtime was never pinned; this closes that gap.
395
+ */
396
+ export const BuildSchema = closed({
397
+ target_framework: Type.String({ minLength: 1 }),
398
+ runtime: Type.String({ minLength: 1 }),
399
+ target_eval_framework: Type.String({ minLength: 1 }),
400
+ });
401
+ export type Build = Static<typeof BuildSchema>;
402
+
403
+ // ── APPENDIX ──────────────────────────────────────────────────────────────────────
404
+
405
+ /**
406
+ * Pinned references the *build agent crawls FRESH at build time (PR-002 fetched-at-build).
407
+ * `framework_docs` maps a framework id → its doc-root URLs; PIN the roots, never vendor the bodies.
408
+ */
409
+ export const AppendixSchema = closed({
410
+ framework_docs: Type.Record(Type.String(), Type.Array(Type.String())),
411
+ references: Type.Array(Type.String()),
412
+ });
413
+ export type Appendix = Static<typeof AppendixSchema>;
414
+
415
+ // ── ROOT ──────────────────────────────────────────────────────────────────────────
416
+
417
+ /** The full agentspec.v0.1.0 contract. Closed object — undeclared top-level fields rejected. */
418
+ export const AgentSpecSchema = closed({
419
+ schema_version: Type.Literal(AGENTSPEC_SCHEMA_VERSION),
420
+ meta: MetaSchema,
421
+ definition: DefinitionSchema,
422
+ build: BuildSchema,
423
+ appendix: AppendixSchema,
424
+ });
425
+ export type AgentSpec = Static<typeof AgentSpecSchema>;
426
+
427
+ // ── Validation ──────────────────────────────────────────────────────────────────
428
+
429
+ export interface ValidationResult {
430
+ ok: boolean;
431
+ /** Human-readable error strings (path: message), empty when ok. */
432
+ errors: string[];
433
+ }
434
+
435
+ // Compiled checker — compiled once at module load (mirrors handover-contract.ts).
436
+ const AgentSpecChecker = TypeCompiler.Compile(AgentSpecSchema);
437
+
438
+ /**
439
+ * Validate an arbitrary value against the agentspec.v0.1.0 contract.
440
+ *
441
+ * STRUCTURAL floor: the compiled TypeBox checker. Catches missing / wrong-typed / out-of-enum /
442
+ * non-frozen-version fields AND undeclared extra fields (additionalProperties:false — the
443
+ * typo / smuggled-downstream-link case, PR-013).
444
+ *
445
+ * Pure: no I/O, no clock. Never throws — a non-object input yields ok:false.
446
+ */
447
+ export function validateAgentSpec(obj: unknown): ValidationResult {
448
+ const errors: string[] = [];
449
+ if (!AgentSpecChecker.Check(obj)) {
450
+ for (const e of AgentSpecChecker.Errors(obj)) {
451
+ errors.push(`${e.path === "" ? "/" : e.path}: ${e.message}`);
452
+ }
453
+ }
454
+ return { ok: errors.length === 0, errors };
455
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * scripts/setup/detect.ts
3
+ * Minimal setup-presence probe used by SKILL.md §0.
4
+ * Type A — Pure Script (file reads only — no I/O side effects).
5
+ *
6
+ * Wave-1 is LEAN: there is no onboarding FSM yet (that is a later wave). "complete" simply means
7
+ * the skill is installed — i.e. its SKILL.md resolves from this script's location. The *spec
8
+ * interview needs no config file to run; it reads from the operator interactively. So the probe is
9
+ * deliberately thin: it confirms the skill tree is intact and reports a stable, JSON-shaped result.
10
+ *
11
+ * Usage: scripts/cli/run.sh scripts/setup/detect.ts
12
+ * exit 0 = skill installed (complete)
13
+ * exit 1 = skill tree incomplete (SKILL.md not found from the script location)
14
+ */
15
+
16
+ import { existsSync, realpathSync } from "node:fs";
17
+ import { resolve } from "node:path";
18
+
19
+ export interface SetupResult {
20
+ /** True when the skill tree is intact (SKILL.md resolves) — the Wave-1 completeness bar. */
21
+ complete: boolean;
22
+ /** Absolute path the probe checked for SKILL.md (for transparency / debugging). */
23
+ skillMdPath: string;
24
+ /** Human-readable note for the dashboard / caller. */
25
+ note: string;
26
+ }
27
+
28
+ /**
29
+ * Resolve this script's directory through any symlink chain (rapid-skill-iteration symlinks are an
30
+ * intentional dev pattern), then check for the skill's SKILL.md two levels up:
31
+ * scripts/setup/detect.ts -> scripts/setup -> scripts -> <skill-root>/SKILL.md
32
+ */
33
+ export function resolveSkillRoot(scriptDir: string): string {
34
+ return resolve(scriptDir, "..", "..");
35
+ }
36
+
37
+ /**
38
+ * Run the presence probe. Pure given `scriptDir` — the caller passes the resolved script dir so the
39
+ * function is testable against a temp tree (no import.meta dependency inside the pure core).
40
+ */
41
+ export function detectSetup(scriptDir: string): SetupResult {
42
+ const skillRoot = resolveSkillRoot(scriptDir);
43
+ const skillMdPath = resolve(skillRoot, "SKILL.md");
44
+ const complete = existsSync(skillMdPath);
45
+ return {
46
+ complete,
47
+ skillMdPath,
48
+ note: complete
49
+ ? "mutagent-agentspec is installed. Run *spec to begin the guided interview."
50
+ : "mutagent-agentspec skill tree incomplete — SKILL.md not found. Reinstall: pnpx @mutagent/agentspec init",
51
+ };
52
+ }
53
+
54
+ // ── CLI entrypoint ────────────────────────────────────────────────────────────
55
+ const isMain =
56
+ typeof import.meta !== "undefined" &&
57
+ (import.meta as unknown as { main?: boolean }).main === true;
58
+ if (isMain) {
59
+ // Realpath-resolve through any symlink chain (cwd-leak / symlink-iteration safety).
60
+ const scriptDir = realpathSync(
61
+ import.meta.dirname ??
62
+ import.meta.url.replace(/^file:\/\//, "").replace(/\/[^/]+$/, ""),
63
+ );
64
+ const result = detectSetup(scriptDir);
65
+ process.stdout.write(JSON.stringify(result, null, 2) + "\n");
66
+ process.exit(result.complete ? 0 : 1);
67
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * scripts/validate/validate-spec.ts
3
+ * The *validate-spec gate — TypeBox round-trip validation of an agentspec.yaml file.
4
+ * Type A — Pure Script (a pure parse+validate function + a thin guarded CLI).
5
+ *
6
+ * Usage: scripts/cli/run.sh scripts/validate/validate-spec.ts <path-to-agentspec.yaml>
7
+ * exit 0 = the spec parses + validates against agentspec.v0.2.0 → "[validate-spec] PASS"
8
+ * exit 1 = parse error OR schema violation (field-pathed errors on stdout)
9
+ *
10
+ * Mirrors the handover-contract.ts CLI: guarded file read, deterministic (the only input is the
11
+ * file argument), `import.meta.main` entrypoint. Never throws on validation — only on a genuinely
12
+ * unreadable file (surfaced as exit 1 with a message).
13
+ */
14
+
15
+ import * as fs from "node:fs";
16
+ import * as path from "node:path";
17
+ import { parse as parseYaml } from "yaml";
18
+
19
+ import { validateAgentSpec } from "../contract/agentspec.schema.ts";
20
+ import type { ValidationResult } from "../contract/agentspec.schema.ts";
21
+
22
+ export interface SpecValidationOutcome extends ValidationResult {
23
+ /** True when the YAML failed to parse (distinct from a schema violation). */
24
+ parseError: boolean;
25
+ }
26
+
27
+ /**
28
+ * Parse a YAML spec STRING and validate it against the agentspec contract. Pure: no I/O.
29
+ * A YAML parse failure is reported as { ok:false, parseError:true } rather than thrown, so callers
30
+ * get a uniform outcome shape.
31
+ */
32
+ export function validateSpecYaml(yamlText: string): SpecValidationOutcome {
33
+ let parsed: unknown;
34
+ try {
35
+ parsed = parseYaml(yamlText);
36
+ } catch (err) {
37
+ return {
38
+ ok: false,
39
+ parseError: true,
40
+ errors: [`YAML parse error: ${err instanceof Error ? err.message : String(err)}`],
41
+ };
42
+ }
43
+ const result = validateAgentSpec(parsed);
44
+ return { ...result, parseError: false };
45
+ }
46
+
47
+ /**
48
+ * Read a spec file from disk and validate it. Throws ONLY when the file cannot be read; a parse or
49
+ * schema failure is returned as a non-ok outcome.
50
+ */
51
+ export function validateSpecFile(filePath: string): SpecValidationOutcome {
52
+ const text = fs.readFileSync(path.resolve(filePath), "utf-8");
53
+ return validateSpecYaml(text);
54
+ }
55
+
56
+ // ── CLI ─────────────────────────────────────────────────────────────────────────
57
+ function runCli(argv: string[]): number {
58
+ const inputPath = argv.slice(2).find((a) => !a.startsWith("--"));
59
+ if (inputPath === undefined) {
60
+ process.stderr.write(
61
+ "Usage: scripts/cli/run.sh scripts/validate/validate-spec.ts <agentspec.yaml>\n" +
62
+ "Validates a spec against the frozen agentspec.v0.2.0 contract.\n" +
63
+ "Exit 0 = valid; exit 1 = parse error or schema violation.\n",
64
+ );
65
+ return 1;
66
+ }
67
+
68
+ let outcome: SpecValidationOutcome;
69
+ try {
70
+ outcome = validateSpecFile(inputPath);
71
+ } catch (err) {
72
+ process.stderr.write(`Error reading ${inputPath}: ${String(err)}\n`);
73
+ return 1;
74
+ }
75
+
76
+ if (outcome.ok) {
77
+ console.info(`[validate-spec] PASS — ${inputPath} is a valid agentspec.v0.2.0.`);
78
+ return 0;
79
+ }
80
+ for (const e of outcome.errors) console.info(e);
81
+ process.stderr.write(
82
+ `[validate-spec] FAIL — ${outcome.errors.length} error(s) in ${inputPath}.\n`,
83
+ );
84
+ return 1;
85
+ }
86
+
87
+ const isMain =
88
+ typeof import.meta !== "undefined" &&
89
+ (import.meta as unknown as { main?: boolean }).main === true;
90
+ if (isMain) {
91
+ const argv = typeof Bun !== "undefined" ? Bun.argv : process.argv;
92
+ process.exit(runCli(argv));
93
+ }