@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,115 @@
1
+ // ---------------------------------------------------------------------------
2
+ // slack/post — the SHARED Slack transport (SLACK-CORE). The ONE impure seam.
3
+ //
4
+ // Threading needs the Slack WEB API (`chat.postMessage` + `thread_ts`), NOT a
5
+ // plain incoming webhook (webhooks cannot open/append a thread). We call it with
6
+ // native `fetch` — NO `@slack/*` runtime dependency (packaging: no new deps).
7
+ //
8
+ // CONFIG-GATED NO-OP: with no bot token OR no channel, every call RETURNS null
9
+ // WITHOUT touching the network — Slack is a strictly-optional sink. Unconfigured
10
+ // ⇒ HTML report only, never an error. A network/HTTP failure ALSO returns null
11
+ // (never throws): a broken Slack must never break a dogfood render.
12
+ //
13
+ // Testability: `fetch` is injectable via `deps.fetch` so a test can assert the
14
+ // no-op path performs ZERO network calls.
15
+ // ---------------------------------------------------------------------------
16
+
17
+ /** A built thread message — `root` opens the thread, `reply` appends to it. */
18
+ export interface SlackMsg {
19
+ kind: "root" | "reply";
20
+ text: string;
21
+ }
22
+
23
+ /** The init shape we hand to `fetch` (structural — avoids depending on DOM libs). */
24
+ export interface FetchInit {
25
+ method?: string;
26
+ headers?: Record<string, string>;
27
+ body?: string;
28
+ }
29
+
30
+ /** The response shape we read back (only `json()` is used). */
31
+ export interface FetchResponse {
32
+ json(): Promise<unknown>;
33
+ }
34
+
35
+ /** The minimal `fetch` shape this module needs (injectable for tests). */
36
+ export type FetchLike = (input: string, init?: FetchInit) => Promise<FetchResponse>;
37
+
38
+ /** Injectable dependencies — defaults to the global `fetch`. */
39
+ export interface PostDeps {
40
+ fetch?: FetchLike;
41
+ }
42
+
43
+ /** The result of a successful post — the message `ts` (the thread anchor). */
44
+ export interface PostResult {
45
+ ts: string;
46
+ }
47
+
48
+ const CHAT_POST_MESSAGE_URL = "https://slack.com/api/chat.postMessage";
49
+
50
+ /** True only when BOTH a non-empty token and channel are present. */
51
+ function configured(token: string | undefined, channel: string | undefined): boolean {
52
+ return typeof token === "string" && token.length > 0 && typeof channel === "string" && channel.length > 0;
53
+ }
54
+
55
+ /** POST to chat.postMessage; returns the `ts` on ok, else null. Never throws. */
56
+ async function chatPostMessage(
57
+ body: Record<string, unknown>,
58
+ token: string,
59
+ deps: PostDeps,
60
+ ): Promise<PostResult | null> {
61
+ const doFetch = deps.fetch ?? (globalThis.fetch as unknown as FetchLike | undefined);
62
+ if (doFetch === undefined) return null;
63
+ try {
64
+ const res = await doFetch(CHAT_POST_MESSAGE_URL, {
65
+ method: "POST",
66
+ headers: {
67
+ "Content-Type": "application/json; charset=utf-8",
68
+ Authorization: `Bearer ${token}`,
69
+ },
70
+ body: JSON.stringify(body),
71
+ });
72
+ const json = (await res.json()) as { ok?: boolean; ts?: string };
73
+ if (json.ok === true && typeof json.ts === "string") return { ts: json.ts };
74
+ return null;
75
+ } catch {
76
+ return null;
77
+ }
78
+ }
79
+
80
+ /** Arguments for opening a thread (posting the root message). */
81
+ export interface PostMessageArgs {
82
+ channel: string;
83
+ text: string;
84
+ token?: string;
85
+ }
86
+
87
+ /**
88
+ * Post a top-level message → returns its `ts` (use it as `thread_ts` for
89
+ * replies). Config-gated no-op: no token/channel ⇒ null, no network.
90
+ */
91
+ export async function postMessage(args: PostMessageArgs, deps: PostDeps = {}): Promise<PostResult | null> {
92
+ if (!configured(args.token, args.channel)) return null;
93
+ return chatPostMessage({ channel: args.channel, text: args.text }, args.token as string, deps);
94
+ }
95
+
96
+ /** Arguments for appending a threaded reply. */
97
+ export interface PostReplyArgs {
98
+ channel: string;
99
+ thread_ts: string;
100
+ text: string;
101
+ token?: string;
102
+ }
103
+
104
+ /**
105
+ * Append a reply under `thread_ts`. Config-gated no-op: no token/channel (or no
106
+ * thread anchor) ⇒ null, no network.
107
+ */
108
+ export async function postReply(args: PostReplyArgs, deps: PostDeps = {}): Promise<PostResult | null> {
109
+ if (!configured(args.token, args.channel) || args.thread_ts.length === 0) return null;
110
+ return chatPostMessage(
111
+ { channel: args.channel, thread_ts: args.thread_ts, text: args.text },
112
+ args.token as string,
113
+ deps,
114
+ );
115
+ }
@@ -0,0 +1,311 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ // ---------------------------------------------------------------------------
6
+ // *sync — topology indexer for mutagent-system.
7
+ //
8
+ // Deterministically scans `mutagent-system/*` for skills/agents and emits a
9
+ // structured topology index plus a rendered markdown table (the dashboard
10
+ // SYSTEM-panel breakdown). No clock, no network, no env reads — same tree in,
11
+ // same output out.
12
+ //
13
+ // A directory under <systemRoot> is INDEXED if it carries ANY marker:
14
+ // - SKILL.md (top-level OR `.claude/skills/<x>/SKILL.md`)
15
+ // - .claude/agents/*.md
16
+ // - package.json with a `name`
17
+ // - CLAUDE.md
18
+ // Dirs named `scripts` / `node_modules` / `dist`, and dotdirs, are EXCLUDED.
19
+ //
20
+ // Scanning logic lives in EXPORTED pure functions so it is unit-testable; the
21
+ // CLI main() only parses args + prints.
22
+ // ---------------------------------------------------------------------------
23
+
24
+ export type Kind = "skill" | "agent" | "system_agent";
25
+
26
+ export type AdlStage =
27
+ | "spec"
28
+ | "build"
29
+ | "evaluate"
30
+ | "diagnose"
31
+ | "improve"
32
+ | "orchestrator"
33
+ | "shared"
34
+ | "unknown";
35
+
36
+ export interface TopologyEntry {
37
+ /** Directory name (the skill/agent id within mutagent-system). */
38
+ name: string;
39
+ /**
40
+ * `skill` (publishable/packaged unit) · `agent` (a per-dir markdown agent def in
41
+ * `.claude/agents/` or a CLAUDE.md boot dir) · `system_agent` (a cross-stage
42
+ * orchestrator agent def under `mutagent-orchestrator/assets/agents/`, e.g. `discovery`).
43
+ */
44
+ kind: Kind;
45
+ /** Path relative to the scanned systemRoot. */
46
+ path: string;
47
+ /** ADL stage this unit owns, inferred from its canonical name. */
48
+ adl_stage: AdlStage;
49
+ /** package.json `version`, or null when there is no package.json. */
50
+ version: string | null;
51
+ /** True when package.json declares a `bin` (a `pnpx <skill> init` surface). */
52
+ hasOnboarding: boolean;
53
+ }
54
+
55
+ export interface TopologyIndex {
56
+ /** The scanned root (absolute as supplied by the caller). */
57
+ root: string;
58
+ /** Detected entries, sorted by name. */
59
+ entries: TopologyEntry[];
60
+ }
61
+
62
+ interface Markers {
63
+ skillMd: boolean;
64
+ agentMd: boolean;
65
+ packageName: string | null;
66
+ packageVersion: string | null;
67
+ hasBin: boolean;
68
+ claudeMd: boolean;
69
+ }
70
+
71
+ // Directory names that are never indexed even if they carry a marker file.
72
+ const EXCLUDED_DIRS = new Set(["scripts", "node_modules", "dist"]);
73
+
74
+ // Canonical mutagent unit -> ADL stage. Keyed on the stable directory name.
75
+ const STAGE_BY_NAME: Record<string, AdlStage> = {
76
+ "mutagent-agentspec": "spec",
77
+ "mutagent-builder": "build",
78
+ "mutagent-evaluator": "evaluate",
79
+ "mutagent-diagnostics": "diagnose",
80
+ "mutagent-optimize": "improve",
81
+ "mutagent-orchestrator": "orchestrator",
82
+ "mutagent-templates": "shared",
83
+ };
84
+
85
+ function isDir(p: string): boolean {
86
+ try {
87
+ return fs.statSync(p).isDirectory();
88
+ } catch {
89
+ return false;
90
+ }
91
+ }
92
+
93
+ function isFile(p: string): boolean {
94
+ try {
95
+ return fs.statSync(p).isFile();
96
+ } catch {
97
+ return false;
98
+ }
99
+ }
100
+
101
+ function safeReaddir(dir: string): string[] {
102
+ try {
103
+ return fs.readdirSync(dir);
104
+ } catch {
105
+ return [];
106
+ }
107
+ }
108
+
109
+ /**
110
+ * A dir is SKILL-marked if it has a top-level SKILL.md OR any
111
+ * `.claude/skills/<x>/SKILL.md` (the real on-disk home for shipped skills).
112
+ */
113
+ function hasSkillMd(dir: string): boolean {
114
+ if (isFile(path.join(dir, "SKILL.md"))) return true;
115
+ const skillsDir = path.join(dir, ".claude", "skills");
116
+ if (!isDir(skillsDir)) return false;
117
+ return safeReaddir(skillsDir).some((sub) =>
118
+ isFile(path.join(skillsDir, sub, "SKILL.md")),
119
+ );
120
+ }
121
+
122
+ function hasAgentMd(dir: string): boolean {
123
+ const agentsDir = path.join(dir, ".claude", "agents");
124
+ if (!isDir(agentsDir)) return false;
125
+ return safeReaddir(agentsDir).some((f) => f.endsWith(".md"));
126
+ }
127
+
128
+ function readPackage(dir: string): {
129
+ name: string | null;
130
+ version: string | null;
131
+ hasBin: boolean;
132
+ } {
133
+ const pkgPath = path.join(dir, "package.json");
134
+ if (!isFile(pkgPath)) return { name: null, version: null, hasBin: false };
135
+ try {
136
+ const parsed = JSON.parse(fs.readFileSync(pkgPath, "utf-8")) as {
137
+ name?: string;
138
+ version?: string;
139
+ bin?: unknown;
140
+ };
141
+ return {
142
+ name: typeof parsed.name === "string" ? parsed.name : null,
143
+ version: typeof parsed.version === "string" ? parsed.version : null,
144
+ hasBin: parsed.bin !== undefined && parsed.bin !== null,
145
+ };
146
+ } catch {
147
+ return { name: null, version: null, hasBin: false };
148
+ }
149
+ }
150
+
151
+ function readMarkers(dir: string): Markers {
152
+ const pkg = readPackage(dir);
153
+ return {
154
+ skillMd: hasSkillMd(dir),
155
+ agentMd: hasAgentMd(dir),
156
+ packageName: pkg.name,
157
+ packageVersion: pkg.version,
158
+ hasBin: pkg.hasBin,
159
+ claudeMd: isFile(path.join(dir, "CLAUDE.md")),
160
+ };
161
+ }
162
+
163
+ function hasAnyMarker(m: Markers): boolean {
164
+ return m.skillMd || m.agentMd || m.packageName !== null || m.claudeMd;
165
+ }
166
+
167
+ /**
168
+ * Kind precedence (first match wins):
169
+ * SKILL.md -> skill (a shipped skill, even if it also has agents)
170
+ * .claude/agents/*.md -> agent (a markdown agent definition)
171
+ * CLAUDE.md -> agent (an agent boot/def dir, e.g. the orchestrator)
172
+ * package.json name -> skill (a packaged unit with no skill/agent marker, e.g.
173
+ * shared templates)
174
+ * (default) -> agent
175
+ *
176
+ * NOTE: agent markers (.claude/agents, CLAUDE.md) are checked BEFORE the package name,
177
+ * because the orchestrator carries a `name` (required to be a valid monorepo workspace
178
+ * member) yet is an AGENT, not a publishable skill. Templates (named, no CLAUDE.md)
179
+ * still resolves to skill via the package-name rule.
180
+ */
181
+ function resolveKind(m: Markers): Kind {
182
+ if (m.skillMd) return "skill";
183
+ if (m.agentMd) return "agent";
184
+ if (m.claudeMd) return "agent";
185
+ if (m.packageName !== null) return "skill";
186
+ return "agent";
187
+ }
188
+
189
+ /** Map a canonical unit name to its ADL stage; unknown names => 'unknown'. */
190
+ export function inferAdlStage(name: string): AdlStage {
191
+ return STAGE_BY_NAME[name] ?? "unknown";
192
+ }
193
+
194
+ /**
195
+ * Scan <systemRoot> for skill/agent directories. Pure: the root is a parameter
196
+ * so tests can point at fixtures. Returns an empty index when the root does not
197
+ * exist. Entries are sorted by name for deterministic output.
198
+ */
199
+ export function scanTopology(systemRoot: string): TopologyIndex {
200
+ const entries: TopologyEntry[] = [];
201
+ if (!isDir(systemRoot)) return { root: systemRoot, entries };
202
+
203
+ for (const name of safeReaddir(systemRoot)) {
204
+ if (name.startsWith(".")) continue;
205
+ if (EXCLUDED_DIRS.has(name)) continue;
206
+
207
+ const dir = path.join(systemRoot, name);
208
+ if (!isDir(dir)) continue;
209
+
210
+ const markers = readMarkers(dir);
211
+ if (!hasAnyMarker(markers)) continue;
212
+
213
+ entries.push({
214
+ name,
215
+ kind: resolveKind(markers),
216
+ path: path.relative(systemRoot, dir) || name,
217
+ adl_stage: inferAdlStage(name),
218
+ version: markers.packageVersion,
219
+ hasOnboarding: markers.hasBin,
220
+ });
221
+ }
222
+
223
+ // System agents: markdown agent defs under the orchestrator's `assets/agents/`.
224
+ // These are NOT top-level dirs but ARE dispatchable subjects (e.g. `discovery`,
225
+ // the `*discover` route target). Emitted as kind:system_agent so *sync surfaces
226
+ // them distinctly and resolveDispatch can resolve route_target by name from the
227
+ // topology (it folds system_agent → SubjectKind.Agent for the frozen bundle).
228
+ const sysAgentsDir = path.join(
229
+ systemRoot,
230
+ "mutagent-orchestrator",
231
+ "assets",
232
+ "agents",
233
+ );
234
+ if (isDir(sysAgentsDir)) {
235
+ for (const f of safeReaddir(sysAgentsDir)) {
236
+ if (!f.endsWith(".md")) continue;
237
+ entries.push({
238
+ name: f.replace(/\.md$/, ""),
239
+ kind: "system_agent",
240
+ path: path.relative(systemRoot, path.join(sysAgentsDir, f)),
241
+ adl_stage: "orchestrator",
242
+ version: null,
243
+ hasOnboarding: false,
244
+ });
245
+ }
246
+ }
247
+
248
+ entries.sort((a, b) => a.name.localeCompare(b.name));
249
+ return { root: systemRoot, entries };
250
+ }
251
+
252
+ const TABLE_HEADER =
253
+ "| ADL Stage | Name | Kind | Version | Onboarding | Path |";
254
+ const TABLE_SEPARATOR = "| --- | --- | --- | --- | --- | --- |";
255
+
256
+ /**
257
+ * Render the topology index as a markdown table — the breakdown the dashboard
258
+ * SYSTEM panel shows. An empty index renders just header + separator.
259
+ */
260
+ export function renderMarkdownTable(index: TopologyIndex): string {
261
+ const rows = index.entries.map(
262
+ (e) =>
263
+ `| ${e.adl_stage} | ${e.name} | ${e.kind} | ${e.version ?? "—"} | ${
264
+ e.hasOnboarding ? "✓" : "—"
265
+ } | ${e.path} |`,
266
+ );
267
+ return [TABLE_HEADER, TABLE_SEPARATOR, ...rows].join("\n");
268
+ }
269
+
270
+ // ---------------------------------------------------------------------------
271
+ // CLI — thin wrapper. Default root is this file's grandparent:
272
+ // scripts/ -> mutagent-orchestrator/ -> mutagent-system/
273
+ // Flags: --json (index only) · --table (table only) · <root> positional override.
274
+ // ---------------------------------------------------------------------------
275
+ function defaultSystemRoot(): string {
276
+ const here = path.dirname(fileURLToPath(import.meta.url));
277
+ return path.resolve(here, "..", "..");
278
+ }
279
+
280
+ function main(argv: string[]): void {
281
+ const args = argv.slice(2);
282
+ const jsonOnly = args.includes("--json");
283
+ const tableOnly = args.includes("--table");
284
+ const positional = args.find((a) => !a.startsWith("--"));
285
+ const systemRoot = positional
286
+ ? path.resolve(positional)
287
+ : defaultSystemRoot();
288
+
289
+ const index = scanTopology(systemRoot);
290
+
291
+ if (jsonOnly) {
292
+ console.info(JSON.stringify(index, null, 2));
293
+ return;
294
+ }
295
+ if (tableOnly) {
296
+ console.info(renderMarkdownTable(index));
297
+ return;
298
+ }
299
+ console.info(renderMarkdownTable(index));
300
+ console.info("");
301
+ console.info(JSON.stringify(index, null, 2));
302
+ }
303
+
304
+ const isMain =
305
+ typeof import.meta !== "undefined" &&
306
+ (import.meta as unknown as { main?: boolean }).main === true;
307
+ if (isMain) {
308
+ const argv =
309
+ typeof Bun !== "undefined" ? Bun.argv : process.argv;
310
+ main(argv);
311
+ }
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@mutagent/helix",
3
+ "version": "0.1.0-alpha.14",
4
+ "type": "module",
5
+ "description": "Helix — the MutagenT Agentic Development Lifecycle (ADL) bundle: the orchestrator that conducts spec → build → evaluate → diagnose → improve, shipped together with its lifecycle-stage skills (agentspec · builder · diagnostics · evaluator · optimize). Install with: pnpx @mutagent/helix init",
6
+ "license": "Apache-2.0",
7
+ "publishConfig": {
8
+ "registry": "https://registry.npmjs.org",
9
+ "access": "public"
10
+ },
11
+ "bin": {
12
+ "mutagent-helix": "bin/mutagent-helix.mjs"
13
+ },
14
+ "files": [
15
+ "bin/",
16
+ "CLAUDE.md",
17
+ "README.md",
18
+ "LICENSE",
19
+ "NOTICE",
20
+ "assets/",
21
+ ".claude/skills/mutagent-helix/",
22
+ "mutagent-orchestrator/orchestrator.md",
23
+ "mutagent-orchestrator/routing.yaml",
24
+ "mutagent-orchestrator/scripts/",
25
+ "mutagent-orchestrator/assets/agents/",
26
+ "mutagent-orchestrator/references/",
27
+ "mutagent-diagnostics/.claude/skills/mutagent-diagnostics/",
28
+ "mutagent-evaluator/.claude/skills/mutagent-evaluator/",
29
+ "mutagent-agentspec/.claude/skills/mutagent-agentspec/",
30
+ "mutagent-builder/.claude/skills/mutagent-builder/",
31
+ "mutagent-optimize/.claude/skills/mutagent-optimize/"
32
+ ],
33
+ "scripts": {
34
+ "check:generated-artifacts": "bash mutagent-tools/scripts/check-no-src-declarations.sh",
35
+ "lint": "eslint .claude/skills/mutagent-helix/scripts --ext .ts --max-warnings 0",
36
+ "typecheck": "tsc --noEmit && bun run check:generated-artifacts",
37
+ "build": "tsc --outDir dist && bun run check:generated-artifacts",
38
+ "test": "node scripts/release/stale-markers.mjs --self-test && node scripts/release/vendored-discovery.mjs --self-test && node scripts/release/version-drift.mjs --self-test && bun test ./.claude/skills/mutagent-helix/scripts/",
39
+ "sync:discovery": "node scripts/release/vendored-discovery.mjs --write",
40
+ "check:discovery": "node scripts/release/vendored-discovery.mjs --check",
41
+ "init": "bun run .claude/skills/mutagent-helix/scripts/cli/init.ts",
42
+ "bundle:cli": "bun build mutagent-tools/src/cli/index.ts --target=bun --outfile=bin/mutagent-cli.mjs",
43
+ "release:skill": "bun run scripts/release/release-skill.ts",
44
+ "release:lint": "bunx eslint scripts/release --config scripts/release/eslint.config.js --max-warnings 0",
45
+ "release:typecheck": "bunx tsc --noEmit -p scripts/release/tsconfig.json",
46
+ "release:build": "bun build scripts/release/release-skill.ts --target=bun --outdir dist/release",
47
+ "release:test": "bun test scripts/release/",
48
+ "prepublishOnly": "bun run check:generated-artifacts && bun run bundle:cli && node scripts/release/prepublish-guard.mjs"
49
+ },
50
+ "dependencies": {
51
+ "@sinclair/typebox": "^0.34.0",
52
+ "yaml": "^2.8.0"
53
+ },
54
+ "devDependencies": {
55
+ "@eslint/js": "^9.0.0",
56
+ "@types/bun": "^1.1.0",
57
+ "@types/node": "^20.0.0",
58
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
59
+ "@typescript-eslint/parser": "^8.0.0",
60
+ "eslint": "^9.0.0",
61
+ "smol-toml": "^1.3.0",
62
+ "typescript": "^5.5.0"
63
+ }
64
+ }