@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.
- package/.claude/skills/mutagent-helix/SKILL.md +113 -0
- package/.claude/skills/mutagent-helix/scripts/cli/codex-transcode.ts +143 -0
- package/.claude/skills/mutagent-helix/scripts/cli/doctor.ts +111 -0
- package/.claude/skills/mutagent-helix/scripts/cli/init.ts +382 -0
- package/.claude/skills/mutagent-helix/scripts/cli/run.sh +61 -0
- package/CLAUDE.md +193 -0
- package/LICENSE +201 -0
- package/NOTICE +22 -0
- package/README.md +209 -0
- package/assets/adl-loop.svg +162 -0
- package/assets/system-status.svg +422 -0
- package/bin/mutagent-cli.mjs +9950 -0
- package/bin/mutagent-helix.mjs +78 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/CLAUDE.md +28 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/SKILL.md +138 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/assets/templates/agentspec.yaml.tpl +247 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/frameworks/doc-pins.md +53 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/principles.md +91 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/requirements.yaml +295 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/workflows/orchestrator-protocol.md +302 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/doctor.ts +116 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/init.ts +230 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/run.sh +60 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/config/resolve-spec-dir.ts +199 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/contract/agentspec.schema.ts +455 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/setup/detect.ts +67 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/validate/validate-spec.ts +93 -0
- package/mutagent-agentspec/LICENSE +201 -0
- package/mutagent-agentspec/NOTICE +19 -0
- package/mutagent-agentspec/README.md +44 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/SKILL.md +100 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md +312 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md +357 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/templates/build-report.md.tpl +39 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/principles.md +31 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/build-protocol.md +61 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/improve-handoff.md +23 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/cli/run.sh +60 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/handoff/validate-build-input.ts +72 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/sync-spec/check-sync-spec.ts +499 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts +182 -0
- package/mutagent-builder/CLAUDE.md +25 -0
- package/mutagent-builder/README.md +26 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/README.md +192 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/SKILL.md +352 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-architect.md +256 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-engineer.md +344 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/diagnostics-analyzer.md +576 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/discovery.md +425 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.json.tpl +24 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.md.tpl +49 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/config.yaml.tpl +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/pr-body.md.tpl +56 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/report.html.tpl +327 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/README.md +27 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/iter-N-handover.md.tpl +125 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/self-diagnosis-contract.v0.1.0.yaml.tpl +234 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/spec.yaml.tpl +152 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/team.yaml.tpl +127 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/wave-N-dashboard.html.tpl +1712 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.1-nl-query.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.2-tier0-progress.md +58 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.3-analysis-progress.md +44 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.4-html-report.md +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.5-rca-detail.md +69 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.6-stale-warning.md +53 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.1-welcome.md +60 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.2-source-platform-picker.md +41 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.3-source-auth.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.4-target-picker.md +48 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.5-ask-tool.md +43 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.6-config-review.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.7-filter-defaults.md +52 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.8-first-run.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-findings.json +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-meta.json +47 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/adapter-strategy.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config-migration.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config.md +159 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/filter-search-matrix.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/harness-knowledge.md +22 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/memory-format.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/onboarding-decisions.yaml +187 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/operation-inventory.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/overview.md +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/reference.md +119 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/script-index.md +101 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-adapter-contract.md +93 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/claude-code-transcripts.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex-transcripts.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex.md +145 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/install-paths.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/langfuse.md +178 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/local-jsonl.md +55 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/openobserve.md +102 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/otel.md +63 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/cloud-rest.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-claude.md +65 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cloud-agent-sdk.md +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-codex.md +72 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cursor.md +108 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-mastra.md +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-opencode.md +70 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/apply-pr-comment-format.md +82 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/diagnostics.md +35 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/handover-contract.md +247 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/onboarding.md +300 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/orchestrator-protocol.md +1861 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rca.md +331 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rendering-anatomy.md +314 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/schedule-prep.md +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/scope-model.md +128 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/verification-methodology.md +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/aggregate/sort-findings.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/blind-spots.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/llm-sample.ts +681 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/doctor.ts +215 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/init.ts +1013 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/install-agents.ts +350 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/run.sh +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/shared-templates.ts +79 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/load.ts +392 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/resolve-credential.ts +120 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/schema.ts +641 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/validate.ts +134 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/build-diagnosis-context.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/load-context.ts +105 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/contract/types.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/build-render-input.ts +1964 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/corpus-severity.ts +172 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/dismissal-match.ts +270 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/rank-remedies.ts +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/install-hooks.sh +46 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/pre-push.sh +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/invocation/parse-brief.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/match.ts +114 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/paths.ts +95 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/store.ts +535 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/types.ts +181 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/lint/template-inline-js.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/append.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/read.ts +218 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/platforms/entity-context.ts +686 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/read-unitf.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/trace.ts +1078 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-adapter.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-types.ts +213 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/persist-selections.ts +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/render.ts +3254 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/diagnose.ts +64 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/session.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/caps.ts +345 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/deep-read-gate.ts +424 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/representative.ts +584 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/objection.ts +224 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/trajectory.ts +489 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/dispatch.ts +135 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/probe.ts +170 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/detect.ts +307 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/ensure-cli.ts +315 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/reconfigure.ts +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/verify-agents.ts +207 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/slicer.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/claude-code.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/codex.ts +11 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/langfuse.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/local-jsonl.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/otel.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/index.ts +54 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/registry.ts +45 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/types.ts +86 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/stale-detector.ts +74 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/test/render-playwright.cli.ts +477 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/claude-code.ts +133 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/langfuse.ts +143 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0-scan.ts +423 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/completeness-check.ts +436 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/doc-refs.ts +190 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/finalize-gate.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/findings-contract.ts +628 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/render-js-syntax.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/report-checklist.yaml +217 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/trace-shape.ts +262 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/wave6-checklist.ts +326 -0
- package/mutagent-diagnostics/CLAUDE.md +41 -0
- package/mutagent-diagnostics/LICENSE +201 -0
- package/mutagent-diagnostics/NOTICE +18 -0
- package/mutagent-diagnostics/README.md +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/SKILL.md +548 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/audit-executor.md +169 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/dataset-builder.md +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/discovery.md +425 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/evaluator.md +1108 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/theme.css +213 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/wordmark.html +9 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/context-flow-lens.md +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/data-lens.md +47 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/decision-lens.md +48 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/methodology-critic-lens.md +53 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/trajectory-lens.md +44 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/build-review-interface.md +83 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/edd-loop.md +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/error-analysis.md +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-audit.md +154 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-stage.md +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/generate-synthetic-data.md +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/grounded-adjudication.md +221 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/memory-format.md +65 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/methodology.md +201 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/operation-inventory.md +197 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/validate-evaluator.md +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/workflows/orchestrator-protocol.md +300 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/write-judge-prompt.md +123 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/behavior-tree.schema.yaml +73 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/dataset.schema.yaml +66 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/edd-change-request.schema.yaml +114 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/eval-matrix.schema.yaml +74 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-graph.schema.yaml +69 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-profile.schema.yaml +49 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/methodology-review.schema.yaml +40 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/scorecard.schema.yaml +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/agent-dispatch.ts +0 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/aggregate-discover.ts +543 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/artifact-paths.ts +115 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/assemble-scorecard.ts +172 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-dataset.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-evals.ts +93 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-review-ui.ts +393 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/check-method-router.ts +170 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/aggregate.ts +112 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/audit-run.ts +182 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/doctor.ts +211 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/dogfood.ts +133 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/init.ts +601 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/methodology-review.ts +122 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/prep.ts +295 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/profile-subject.ts +165 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/run.sh +56 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/variance-check.ts +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-eval.ts +248 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-quality-verdict.ts +285 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/codegen-evals.ts +173 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-project.ts +151 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-sampler.ts +267 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/load.ts +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/schema.ts +380 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/agentspec-evals.ts +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/dataset.ts +149 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-engine.ts +118 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-matrix.ts +577 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-types.ts +1074 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/flow-graph.ts +194 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/types.ts +303 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/validation.ts +193 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/derive-dataset.ts +152 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/determine-outcome.ts +219 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/diff-discriminate.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/discover-criteria.ts +348 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/change-request.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/edd-types.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/variance-gate.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/emit-completeness.ts +111 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/eval-engine.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/evaluate.ts +333 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/flow-graph.ts +230 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-prompt-template.ts +253 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-provider.ts +135 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-grounding.ts +229 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-uniformity.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/living-suite.ts +109 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-bundle.ts +203 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile-vocab.ts +64 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/mask.ts +138 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/materialize-dataset.ts +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/matrix-judge.ts +750 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/append.ts +215 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/read.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/persist-eval-criteria.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/prep-tasks.ts +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/profile-subject.ts +310 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/publish-report.ts +131 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/read-unitf-traces.ts +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-build-cards.ts +195 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-discover-report.ts +1640 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-eval-report.ts +3838 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-report.ts +212 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-credential.ts +110 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-ref.ts +98 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/result-verify.ts +129 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/route-failures.ts +330 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-deterministic.ts +367 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-evaluate.ts +719 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-judge.ts +155 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-pipeline.ts +175 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sample-traces.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/self-audit.ts +387 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/source-map.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/subject-profile.ts +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/substrate.ts +162 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sync-eval-criteria.ts +244 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/ui-slots.ts +119 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/unitf-to-evaltrace.ts +284 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/validate-judge.ts +358 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/variance-compare.ts +177 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/behavior-tree.yaml +140 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/eval-matrix.yaml +1270 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/methodology-review.yaml +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/audit.workflow.js +82 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/data-leak.workflow.js +236 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/variance.workflow.js +163 -0
- package/mutagent-evaluator/CLAUDE.md +45 -0
- package/mutagent-evaluator/LICENSE +201 -0
- package/mutagent-evaluator/NOTICE +23 -0
- package/mutagent-evaluator/README.md +88 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/SKILL.md +287 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/contracts/amend-request.ts +503 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/improve-loop-run.ts +304 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state-cli.ts +300 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state.ts +440 -0
- package/mutagent-optimize/CLAUDE.md +49 -0
- package/mutagent-optimize/README.md +26 -0
- package/mutagent-orchestrator/CLAUDE.md +102 -0
- package/mutagent-orchestrator/README.md +20 -0
- package/mutagent-orchestrator/assets/agents/discovery.md +425 -0
- package/mutagent-orchestrator/assets/agents/dogfood-monitor.md +266 -0
- package/mutagent-orchestrator/assets/agents/monitor.md +258 -0
- package/mutagent-orchestrator/orchestrator.md +782 -0
- package/mutagent-orchestrator/references/MONITORING.md +209 -0
- package/mutagent-orchestrator/references/config-fields.md +132 -0
- package/mutagent-orchestrator/references/config-migration.md +132 -0
- package/mutagent-orchestrator/references/index-registry.md +92 -0
- package/mutagent-orchestrator/routing.yaml +391 -0
- package/mutagent-orchestrator/scripts/config-schema.ts +1010 -0
- package/mutagent-orchestrator/scripts/dispatch.ts +439 -0
- package/mutagent-orchestrator/scripts/dogfood/extract-feedback.ts +203 -0
- package/mutagent-orchestrator/scripts/dogfood/reconstruct-trajectory.ts +327 -0
- package/mutagent-orchestrator/scripts/dogfood/render-dogfood-report.ts +347 -0
- package/mutagent-orchestrator/scripts/dogfood/resolve-subagents.ts +160 -0
- package/mutagent-orchestrator/scripts/dogfood/run-report.ts +264 -0
- package/mutagent-orchestrator/scripts/dogfood/slack-thread.ts +106 -0
- package/mutagent-orchestrator/scripts/dogfood/types.ts +257 -0
- package/mutagent-orchestrator/scripts/eval-routing.ts +753 -0
- package/mutagent-orchestrator/scripts/gate.ts +219 -0
- package/mutagent-orchestrator/scripts/handover-contract.ts +362 -0
- package/mutagent-orchestrator/scripts/index/build-index.ts +351 -0
- package/mutagent-orchestrator/scripts/index/render-index.ts +110 -0
- package/mutagent-orchestrator/scripts/monitor/slack-notify.ts +111 -0
- package/mutagent-orchestrator/scripts/monitor/triggers.ts +162 -0
- package/mutagent-orchestrator/scripts/onboarding-check.ts +369 -0
- package/mutagent-orchestrator/scripts/render-roster.ts +308 -0
- package/mutagent-orchestrator/scripts/resolve-credential.ts +185 -0
- package/mutagent-orchestrator/scripts/resolve-paths.ts +114 -0
- package/mutagent-orchestrator/scripts/slack/format.ts +63 -0
- package/mutagent-orchestrator/scripts/slack/post.ts +115 -0
- package/mutagent-orchestrator/scripts/sync-index.ts +311 -0
- 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
|
+
}
|