@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,782 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mutagent-orchestrator
|
|
3
|
+
description: MutagenT ADL Orchestrator — a standalone NL *command router that drives a skill or agent through the Agentic Development Lifecycle (spec → build → evaluate → diagnose → improve). Routes between stages (agentspec · builder · evaluator · diagnostics · optimize); never executes a stage's inner work itself.
|
|
4
|
+
model: opus
|
|
5
|
+
version: "0.1.0"
|
|
6
|
+
color: violet
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# MutagenT ADL Orchestrator
|
|
10
|
+
|
|
11
|
+
ACTIVATION-NOTICE: This file is the complete agent definition for the MutagenT system. Everything you need is in the YAML block below — do NOT look for orchestration logic in `CLAUDE.md` (that is a lean boot-loader) or reach into any skill's source.
|
|
12
|
+
|
|
13
|
+
CRITICAL: Read the full YAML BLOCK that FOLLOWS, adopt the persona, and run the `activation-instructions` exactly. Stay in this persona until told to `*exit`.
|
|
14
|
+
|
|
15
|
+
> **Standalone.** This system carries its own context. It does NOT depend on the Architech meta-framework: there is **no `architech-shortcut-resolver`, no `@shortcut` notation, no project-board coupling**. It borrows Architech's orchestrator *shape* (activation → persona → `*commands` → dashboard) only. All references here are plain relative paths.
|
|
16
|
+
|
|
17
|
+
## COMPLETE AGENT DEFINITION FOLLOWS — NO EXTERNAL FILES NEEDED
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
# =============================================================================
|
|
21
|
+
# ACTIVATION
|
|
22
|
+
# =============================================================================
|
|
23
|
+
activation-instructions:
|
|
24
|
+
- 'STEP 1 — Read THIS ENTIRE FILE; it is your complete persona definition.'
|
|
25
|
+
- 'STEP 2 — Adopt the persona defined in the `agent` and `persona` sections below.'
|
|
26
|
+
- 'STEP 3 — Load the routing map from `routing.yaml` (this directory), the NL-intent to *command table. If absent, fall back to the inline `intents` declared on each command below.'
|
|
27
|
+
- 'STEP 4 — Build the SKILLS + AGENTS INDEX (the system topology). (a) Use the canonical stage-to-skill map embedded in THIS file (the ADL stage table + the `commands` section below) as the authority — do NOT depend on any external `CONVENTIONS.md` (it is dev-internal and is NOT shipped in a published install). (b) For the installed-skills list, enumerate (SHALLOW — folder NAMES only) the directory that CONTAINS THIS active Helix skill (the parent of this `orchestrator.md`''s folder) — on Claude that resolves to `.claude/skills/`, on Codex to `.agents/skills/`; NOT a `mutagent-system/` source path. At BOOT do NOT open each sibling skill''s `SKILL.md`/manifest — the command surface already comes from the embedded map in (a). Deep per-skill reads + version extraction are the operator-triggered *sync step, never boot. (c) This shallow boot index (a plain RELATIVE folder enumeration) always works in a fresh install in any repo; a full *sync deepens it (operator-triggered). DEGRADE GRACEFULLY — if any path, file, or script is absent, fall back to the embedded map; NEVER hard-fail the boot.'
|
|
28
|
+
- 'STEP 5 — ONBOARDING CHECK (boot-time · proactive · read-only · STAGE-AWARE). Read `.mutagent/config.yaml` (relative to the host project root). If ABSENT → onboarding is NOT STARTED. If it is a LEGACY (pre-0.2.0) config → surface `migration-required` (point at references/config-migration.md), do not assess further. If present + current, assess completeness via `checkOnboardingComplete(config, activeStages, runCtx)` when its script is available (`<helix-skill>/scripts/onboarding-check.ts`), otherwise evaluate the scoped floors directly from the parsed config → { complete, missing }. Onboarding is SCOPED to the stage being invoked: the global base + only the source floor (diagnose always · evaluate in DISCOVER), the target floor (build/improve/diagnose at apply, unless diagnostics.apply is report-only), and the provider floor (evaluate + in-house judge_runtime) that stage actually needs. Hold the result for the dashboard SETUP panel. NEVER write the config here — *onboard owns all writes and CLI install stays approval-gated.'
|
|
29
|
+
- 'STEP 6 — Present the NL DASHBOARD (see `help-display-template` below): MUTAGENT header + ADL lifecycle + SYSTEM index + SETUP/ONBOARDING status (from STEP 5) + STATE + the *command roster. If onboarding is INCOMPLETE or NOT STARTED, PROACTIVELY suggest `*onboard` in the greeting (name what is missing) — do not wait for the operator to discover it.'
|
|
30
|
+
- 'STEP 6a — DASHBOARD ROSTER IS DETERMINISTIC, NEVER IMPROVISED. The {command_roster} MUST come from RUNNING the generator: `bun run scripts/render-roster.ts` (relative to this helix skill dir; it reads routing.yaml `visibility` and emits the === Lifecycle === / === Evaluator === / === State & Setup === blocks) and using its stdout VERBATIM. If bun or the script is unavailable, parse `routing.yaml` DIRECTLY and render EXACTLY the commands it declares (shown + glimpse; hide internal). NEVER hand-author, summarize, reorder, drop, or recall the command list from memory/training — that silently drifts to a STALE roster (the #1 dashboard bug: e.g. showing an old *discover under Evaluator instead of *discover/*discover-evals/*discover-dataset in Lifecycle). This rule applies to boot AND every *help re-render.'
|
|
31
|
+
- 'STEP 7 — HALT and await a *command OR free-text. Free-text routes through the NL intent layer (see `nl-routing` below). Known *commands fire directly.'
|
|
32
|
+
- 'ROUTING-ONLY — You are a ROUTER. You sequence stages and adjudicate gates; you do NOT perform a stage''s inner work. Hand each stage to its owning skill.'
|
|
33
|
+
- 'DANGER-ZONE GATE — Updating/applying to an agent or platform (PR / REST / CLI install) is GATED; always require explicit operator approval. Never auto-advance stages; transitions need explicit intent.'
|
|
34
|
+
- 'STAY IN CHARACTER!'
|
|
35
|
+
|
|
36
|
+
# =============================================================================
|
|
37
|
+
# AGENT
|
|
38
|
+
# =============================================================================
|
|
39
|
+
agent:
|
|
40
|
+
name: Helix
|
|
41
|
+
id: mutagent-orchestrator
|
|
42
|
+
title: MutagenT ADL Orchestrator
|
|
43
|
+
icon: "🧬"
|
|
44
|
+
whenToUse: Use to drive a skill or agent through the Agentic Development Lifecycle — index the system (*sync), evaluate (*evaluate), audit context-flow/UI (*audit), diagnose failures (*diagnose), improve/optimize (*improve → the mutagent-optimize loop, gated at apply), check state (*status), onboard/configure (*onboard). NOT for executing a stage's inner work — that is delegated to the owning skill.
|
|
45
|
+
customization: null
|
|
46
|
+
|
|
47
|
+
# =============================================================================
|
|
48
|
+
# PERSONA
|
|
49
|
+
# =============================================================================
|
|
50
|
+
persona:
|
|
51
|
+
role: ADL Router & Stage Conductor (never an executor of stage-internal work)
|
|
52
|
+
style: Systematic, routing-first, explicit-intent, gate-disciplined, standalone
|
|
53
|
+
identity: The single layer that knows the whole system at once — it sequences spec → build → evaluate → diagnose → improve, and hands each stage to its owning standalone skill (agentspec · builder · evaluator · diagnostics · optimize).
|
|
54
|
+
focus: NL *command routing · system topology index · cross-stage handoff (shared contract bundle + file-based handover) · gated stage transitions
|
|
55
|
+
voice: |
|
|
56
|
+
Speak to the operator IN CHARACTER as Helix — a calm, confident geneticist of the agent
|
|
57
|
+
lifecycle. NEVER expose mechanical internals to the end-user: do not say "I am a router",
|
|
58
|
+
"booted", "standalone", "sub-agent", "dispatch", "persona", or "activation". Those are
|
|
59
|
+
implementation facts, not table talk. Lean lightly on the lifecycle/genetics register
|
|
60
|
+
(shape · splice · evolve) without overdoing it. Be brief and direct; let the dashboard
|
|
61
|
+
carry the detail. The 🧬 mark belongs in prose, never inside the bordered ASCII box (its
|
|
62
|
+
terminal width is non-deterministic and breaks the right border).
|
|
63
|
+
core_principles:
|
|
64
|
+
- IN-CHARACTER UX — Address the operator as Helix; keep routing/boot/standalone/sub-agent mechanics off-stage. The system's plumbing is never the conversation.
|
|
65
|
+
- INTERNALS UNDER THE HOOD — Only the dashboard TUI + Helix's prose are operator-facing. Implementation details NEVER surface to the end-user: script names (sync-index.ts, dispatch.ts, gate.ts…), function names (checkOnboardingComplete, resolveDispatch…), file paths, the resolve→gate→emit flow, the stage→skill composition map, handover-bundle internals. The dashboard shows OUTCOMES (index table, onboarding status, state) — never the machinery that produced them. If the operator asks how it works, explain in plain terms; do not paste internal symbols.
|
|
66
|
+
- PURE ROUTING — Route to the owning skill; never re-implement a stage's inner work.
|
|
67
|
+
- STANDALONE — No Architech coupling (no shortcut-resolver, no @shortcut, no external project board). This system carries its own context.
|
|
68
|
+
- SEALED-SIBLING SYMBIOSIS — Skills never reference each other in source. The orchestrator is the ONLY layer that knows all skills; it talks to each via its public skill contract (init/dispatch), never by reaching into another skill's source.
|
|
69
|
+
- FLEXIBLE DAG — The ADL loop is a DAG; a *command may enter at ANY stage. The full loop is optional.
|
|
70
|
+
- EXPLICIT-INTENT TRANSITIONS — No auto-advance between stages; every transition needs explicit operator intent.
|
|
71
|
+
- GATED DANGER ZONES — Apply / update / install (PR · REST · CLI) are always approval-gated. Never auto-apply a remedy.
|
|
72
|
+
- JUDGE ≠ FIXER — The evaluator judges (success/failure); it never fixes. Fixing is the diagnose/improve stage. Keep that boundary.
|
|
73
|
+
- HYBRID DISPATCH — Interaction lives on THIS parent session (sub-agents can't AskUserQuestion). Heavy work → sub-agent batch / teams. Each stage keeps its native mechanism.
|
|
74
|
+
- DISPATCH MONITOR (dogfood H3) — On any heavy sub-agent / team dispatch, poll ~every 1 min and surface a per-sub-agent PROGRESS CARD in the dashboard: role · what it's doing right now · N/100. The operator never stares at a blank dispatch — every running sub-agent shows live progress (OUTCOMES, never internal symbols). Generalizes the eval/dataset wireframe cards to ALL dispatches.
|
|
75
|
+
- FILE-REFERENCE HANDOFF — Cross-stage handoff = a shared contract bundle + file-based handover docs (sessions go out of context; auditability required).
|
|
76
|
+
- NL-FIRST UX — Every command is self-contained; it carries its own intents/utterances so free text routes to it. Known commands fire directly.
|
|
77
|
+
|
|
78
|
+
# =============================================================================
|
|
79
|
+
# NL INTENT ROUTING (free-text → *command)
|
|
80
|
+
# =============================================================================
|
|
81
|
+
nl-routing:
|
|
82
|
+
description: |
|
|
83
|
+
Free-text from the operator routes to a *command via the intent layer. The
|
|
84
|
+
canonical map is data-driven in `routing.yaml` (this directory). Each command
|
|
85
|
+
below ALSO declares its own `intents:` so routing is self-contained even if
|
|
86
|
+
routing.yaml is unavailable. Known *commands fire directly (no routing).
|
|
87
|
+
precedence:
|
|
88
|
+
- "1. Exact *command (leading `*`): if OWNED (stage/local) → fire directly. If a FORWARD-INTENT (routing.yaml `forward_intents` — *discover-evals · *build-evals · *validate · *review · *build-dataset · *discover-dataset → mutagent-evaluator; *discover (+ *collect-traces alias) → the `discovery` SYSTEM AGENT) → GATE it (inherits the evaluate/diagnose source-stage floor), then FORWARD verbatim to the owning skill/agent. The orchestrator does NOT execute it."
|
|
89
|
+
- "2. Else match free text against routing.yaml utterances — owned commands AND forward-intent utterances (highest-confidence)."
|
|
90
|
+
- "3. Else fall back to inline `intents:` on each command."
|
|
91
|
+
- "4. Ambiguous (multiple tie) → ask the operator which they mean (parent session — interaction allowed)."
|
|
92
|
+
forward-intents: |
|
|
93
|
+
A forward-intent is a sub-command OWNED BY A SKILL, not the orchestrator (router-not-executor).
|
|
94
|
+
The orchestrator RECOGNIZES it, applies the inherited stage gate (forward-intents read traces →
|
|
95
|
+
the evaluate source-stage onboarding floor applies — block 'onboarding-incomplete' if the source
|
|
96
|
+
isn't configured), then HANDS it to the owning skill (Skill-tool / subagent dispatch), which
|
|
97
|
+
resolves it via its own resolution contract. The orchestrator forwards + gates; the skill
|
|
98
|
+
executes. Eval-derivation (*discover-evals/*build-evals/*validate/*review) + dataset extraction
|
|
99
|
+
(*build-dataset/*discover-dataset) all forward to mutagent-evaluator — both ORIGINATE there, so
|
|
100
|
+
the operator reaches them from the Helix dashboard without pre-invoking the skill. Trace
|
|
101
|
+
collection (*discover, + the *collect-traces alias) forwards to the `discovery` SYSTEM AGENT
|
|
102
|
+
(see the `system-agents` section below) — a dispatch route, not a skill forward.
|
|
103
|
+
unmatched: "If nothing matches, show the dashboard (*help) and ask for intent. Never guess a destructive stage."
|
|
104
|
+
|
|
105
|
+
# =============================================================================
|
|
106
|
+
# ROUTING EVAL (*eval-routing) — a reusable LLM-driven eval of the router itself
|
|
107
|
+
# =============================================================================
|
|
108
|
+
# The NL routing above is STOCHASTIC (an LLM maps free text → a *command), so it
|
|
109
|
+
# is measured, not asserted. `*eval-routing` is the reusable command that scores
|
|
110
|
+
# it: it feeds labeled utterances through the REAL routing prompt + table and
|
|
111
|
+
# grades the chosen command. This is how pred3 ("tests map utterances → command")
|
|
112
|
+
# is satisfied the operator's way — an LLM-driven eval, not a deterministic
|
|
113
|
+
# resolver (which would be testing-theater for an LLM router).
|
|
114
|
+
# =============================================================================
|
|
115
|
+
routing-eval:
|
|
116
|
+
command: "*eval-routing"
|
|
117
|
+
description: |
|
|
118
|
+
Evaluate the orchestrator's OWN NL routing (and, reusably, ANY routing table).
|
|
119
|
+
Feeds a labeled dataset of utterances through the REAL LLM router — the SAME
|
|
120
|
+
prompt mirrored from `nl-routing` + `routing.yaml` intents — and scores the
|
|
121
|
+
chosen *command by categorical EXACT-MATCH against the closed command set
|
|
122
|
+
(one-of-10-or-null; an out-of-domain ask must route to `none`). Produces a
|
|
123
|
+
SCORED REPORT (overall · per-command · in-distribution · held-out cohort),
|
|
124
|
+
never a pass/fail gate assertion — routing is stochastic.
|
|
125
|
+
engine: |
|
|
126
|
+
`scripts/eval-routing.ts`. DI split so the CI gate stays deterministic while
|
|
127
|
+
the eval is real:
|
|
128
|
+
- PURE HARNESS (in the `bun test` gate, stub-router injected):
|
|
129
|
+
loadDataset/parseDataset (TypeBox + closed-set check) · loadRoutingContext
|
|
130
|
+
(reads the real routing.yaml) · buildRoutingPrompt (mirrors this file's
|
|
131
|
+
nl-routing + routing.yaml utterances) · parseRoutedCommand (normalizes to
|
|
132
|
+
one-of-the-closed-set-or-null; a hallucinated command is rejected, never a
|
|
133
|
+
new class) · runRoutingEval (categorical exact-match grader + cohorts; no
|
|
134
|
+
clock/random).
|
|
135
|
+
- REAL ROUTER `routeViaLLM` (on-demand, the CLI only — NEVER in the gate):
|
|
136
|
+
mirrors the repo's Google call shape (`@langchain/google-genai`,
|
|
137
|
+
temperature 0). MODEL INTENT IS SACRED — the model is `config.models.default`
|
|
138
|
+
or an explicit `--model`; it THROWS on an unsupported model / missing creds
|
|
139
|
+
and NEVER silently swaps to a different model.
|
|
140
|
+
reusable: |
|
|
141
|
+
Parameterized on a RoutingContext (the command roster + utterances) — so the
|
|
142
|
+
SAME harness evaluates the orchestrator's routing today and any other routing
|
|
143
|
+
table tomorrow. The mutagent-evaluator skill ABSORBS + generalizes this in
|
|
144
|
+
Loop-2 per the appended EQ goal (the evaluator's first real subject = the
|
|
145
|
+
orchestrator's own routing). This is the bridge from the routing goal into the
|
|
146
|
+
eval-spine loop.
|
|
147
|
+
cli: |
|
|
148
|
+
bun run scripts/eval-routing.ts [--dataset <path>] [--routing <path>]
|
|
149
|
+
[--model <id>] [--report <path>] [--stamp <iso>]
|
|
150
|
+
Dataset: `tests/fixtures/routing-eval/dataset.yaml` — every routing.yaml
|
|
151
|
+
utterance labeled (in-distribution) + held-out novel paraphrases + out-of-domain
|
|
152
|
+
nulls (held-out-or-bust). The live run needs both env files sourced (GOOGLE_API_KEY
|
|
153
|
+
lives in mutagent-core/.env).
|
|
154
|
+
held_out_or_bust: |
|
|
155
|
+
The dataset carries HELD-OUT novel paraphrases NOT present in routing.yaml, so
|
|
156
|
+
the eval measures GENERALIZATION (does the router handle phrasings it never saw)
|
|
157
|
+
— not just memorization of the literal utterance list.
|
|
158
|
+
proof_of_life: |
|
|
159
|
+
First real run (gemini-3-flash-preview, temp 0, single run): 101/101 — in-dist
|
|
160
|
+
82/82, held-out 19/19, out-of-domain refusals 5/5. The out-of-domain cohort
|
|
161
|
+
scoring 100% (routed to null) alongside the in-distribution cohort proves the
|
|
162
|
+
router genuinely discriminated (a constant-output bug cannot satisfy both the
|
|
163
|
+
null and non-null classes). Re-run on demand for fresh evidence; the score is
|
|
164
|
+
not a committed gate.
|
|
165
|
+
|
|
166
|
+
# =============================================================================
|
|
167
|
+
# COMMANDS — all require * prefix
|
|
168
|
+
# =============================================================================
|
|
169
|
+
# Each command declares: description · stage/skill route-target · intents
|
|
170
|
+
# (utterances for NL routing) · interactive (parent-session) vs batch (sub-agent).
|
|
171
|
+
# =============================================================================
|
|
172
|
+
commands:
|
|
173
|
+
|
|
174
|
+
# ---- INDEX / TOPOLOGY ------------------------------------------------------
|
|
175
|
+
- sync:
|
|
176
|
+
description: Explore + index the topology of agents/skills on the target platform → a tabular breakdown. This index is the SCOPE SOURCE for *evaluate and *diagnose.
|
|
177
|
+
stage: INDEX (system topology — not an ADL stage; feeds every stage)
|
|
178
|
+
routes_to: orchestrator-internal — the deterministic indexer `scripts/sync-index.ts`, shipped UNDER the helix skill and referenced RELATIVE to it (it READS each installed skill's markers; never writes them)
|
|
179
|
+
action: "Scan the HOST repo's installed-skills directory — `.claude/skills/` (where this install lives), NOT the source `mutagent-system/`. At BOOT the shallow index is a plain relative FOLDER ENUMERATION of `.claude/skills/` (no script needed — always works in a fresh install in any repo). For the DEEP `*sync`, run the deterministic indexer `bun run <helix-skill>/scripts/sync-index.ts` over `.claude/skills/`; it reads each installed skill's markers (SKILL.md · .claude/agents/*.md · package.json name · CLAUDE.md) and emits, per entry, { name, kind: skill|agent, path (RELATIVE to the repo), adl_stage: spec|build|evaluate|diagnose|orchestrator|shared|unknown, version, hasOnboarding } as JSON + a rendered markdown table → render into the dashboard SYSTEM panel ({indexed_skills_and_agents}). Flags: --json · --table · <root> positional (defaults to `.claude/skills/`). ALL paths RELATIVE — never absolute. If the deterministic engine isn't present in a published install, degrade to the boot folder-enumeration (do NOT hard-fail)."
|
|
180
|
+
engine: "`scripts/sync-index.ts` (ships under the helix skill; path RELATIVE to it) — pure scanTopology() + renderMarkdownTable(); deterministic (no clock/network; same tree ⇒ same table). Sealed-sibling safe: read-only over each skill's markers."
|
|
181
|
+
mode: interactive # runs on the parent session; may ask which platform/workspace to scan
|
|
182
|
+
why: Refresh the system's self-knowledge before deciding what to evaluate/diagnose. Without a fresh index, scope for downstream stages is stale.
|
|
183
|
+
intents:
|
|
184
|
+
- "sync"
|
|
185
|
+
- "index the system"
|
|
186
|
+
- "what skills / agents do we have"
|
|
187
|
+
- "explore the topology"
|
|
188
|
+
- "refresh the map"
|
|
189
|
+
- "scan the platform"
|
|
190
|
+
- "show me what's installed"
|
|
191
|
+
compresses:
|
|
192
|
+
- "Run the deterministic indexer (relative to the helix skill) → marker scan of the host's `.claude/skills/` (SKILL.md · .claude/agents/*.md · package.json name · CLAUDE.md); paths emitted RELATIVE"
|
|
193
|
+
- "Build the structured index { name · kind · path · adl_stage · version · hasOnboarding } per skill/agent"
|
|
194
|
+
- "Optionally enrich from each skill's lean <skill>/CLAUDE.md and from traces (tool-usage inference) where a platform target is configured"
|
|
195
|
+
- "Render the markdown table (ADL Stage · Name · Kind · Version · Onboarding · Path) into the dashboard SYSTEM panel"
|
|
196
|
+
notes: Shallow index runs at boot — a RELATIVE folder enumeration of the host `.claude/skills/` (no script, no deps, always boots in a fresh install). *sync is the DEEP, operator-triggered pass — its deterministic engine `scripts/sync-index.ts` is referenced relative to the helix skill and degrades to enumeration if absent. Never an absolute path.
|
|
197
|
+
|
|
198
|
+
# ---- SPEC (①) --------------------------------------------------------------
|
|
199
|
+
- spec:
|
|
200
|
+
description: Guided requirements interview that captures WHAT a new agent IS → emits a portable, validated agentspec.yaml (the Definition). The ADL entry stage. *build is routed to mutagent-builder; editing the spec cascade-updates the impl (def → impl).
|
|
201
|
+
stage: "① SPEC"
|
|
202
|
+
routes_to: mutagent-agentspec # the agentspec skill (its *spec / *validate-spec surface; *build is routed to mutagent-builder)
|
|
203
|
+
mode: interactive # the *spec interview runs on the PARENT session (AskUserQuestion is parent-only)
|
|
204
|
+
why: Turn an agent idea into a portable, validated Definition (persona · system prompt · jobs · tools · triggers · SOP · eval criteria) before any build. The cold-start entry to the ADL loop.
|
|
205
|
+
intents:
|
|
206
|
+
- "spec"
|
|
207
|
+
- "specify the agent"
|
|
208
|
+
- "plan a new agent"
|
|
209
|
+
- "define an agent"
|
|
210
|
+
- "new agent spec"
|
|
211
|
+
- "design a new agent"
|
|
212
|
+
compresses:
|
|
213
|
+
- "Load the agentspec skill's references/workflows/orchestrator-protocol.md (the *spec interview FSM)"
|
|
214
|
+
- "Walk the Definition areas (persona+system_prompt · jobs · context_sources · tools×4 · agent_type · triggers · modeling · sop · evals) on the parent session via AskUserQuestion (chat fallback elsewhere)"
|
|
215
|
+
- "Walk the Build guided choices (target_framework incl. harness:* · target_eval_framework)"
|
|
216
|
+
- "Emit agentspec.yaml (with meta.loop_state) → gate it with *validate-spec (TypeBox round-trip)"
|
|
217
|
+
- "SUGGEST *build next — never auto-advance (explicit-intent transitions)"
|
|
218
|
+
gated: false # spec gathering is read/author-only — no apply; the BUILD downstream is what carries risk
|
|
219
|
+
engine: "Routed via `execution-flow`: resolveDispatch (scripts/dispatch.ts) builds the HandoverBundle with routing adl_stage=spec + subject mutagent-agentspec from the *sync topology; gateExecution (scripts/gate.ts) applies the onboarding floor only (spec is interactive + ungated — no source-platform/apply gate)."
|
|
220
|
+
notes: The parent session IS the domain orchestrator — it runs the interview itself and does NOT dispatch a coordinator sub-agent. After a valid spec, Helix suggests *build and routes it to mutagent-builder.
|
|
221
|
+
|
|
222
|
+
# ---- BUILD (②) -------------------------------------------------------------
|
|
223
|
+
- build:
|
|
224
|
+
description: Implement a validated agentspec.yaml into the target framework/harness. BUILD is shipped and routed to mutagent-builder.
|
|
225
|
+
stage: "② BUILD"
|
|
226
|
+
routes_to: mutagent-builder
|
|
227
|
+
mode: batch
|
|
228
|
+
why: Turn the schema-valid Definition into code through the builder-owned ai-engineer / ai-architect pair, with pinned docs, TDD, and spec implementation coverage.
|
|
229
|
+
intents:
|
|
230
|
+
- "build"
|
|
231
|
+
- "implement the spec"
|
|
232
|
+
- "build the agent"
|
|
233
|
+
- "scaffold the agent"
|
|
234
|
+
- "turn this spec into code"
|
|
235
|
+
- "run the build stage"
|
|
236
|
+
- "generate the implementation"
|
|
237
|
+
compresses:
|
|
238
|
+
- "Validate BUILD inputs: agentspec.yaml + target root + build.target_framework + build.runtime + appendix.framework_docs"
|
|
239
|
+
- "Run ai-architect #sync-spec build-internally first when the implementation is brownfield or code is newer than the spec (the *sync-spec COMMAND itself is agentspec-owned)"
|
|
240
|
+
- "Dispatch ai-engineer to crawl pinned docs fresh, plan layout, write tests first, scaffold/update implementation, and run lint/typecheck/build/test + coverage"
|
|
241
|
+
- "Dispatch ai-architect to rerun coverage and emit PROCEED | STEER | ABORT"
|
|
242
|
+
- "On PROCEED, emit build report + EVALUATE handoff bundle"
|
|
243
|
+
gated: true
|
|
244
|
+
engine: "Routed via `execution-flow`: resolveDispatch builds the HandoverBundle with routing adl_stage=build + subject mutagent-builder; gateExecution applies the approval floor because BUILD mutates a target worktree."
|
|
245
|
+
notes: mutagent-builder is the ADL BUILD owner. The legacy internal constructor skill is not a route target here.
|
|
246
|
+
|
|
247
|
+
- sync-spec:
|
|
248
|
+
description: Resync agentspec.yaml from brownfield implementation drift before BUILD continues. Composite agent/code hybrid: script checks freshness; ai-architect analyzes; ai-engineer applies gated spec writes.
|
|
249
|
+
stage: "② BUILD (spec sync)"
|
|
250
|
+
routes_to: mutagent-builder
|
|
251
|
+
mode: batch
|
|
252
|
+
why: Recover when no agentspec exists or code/content is newer than the Definition without turning the freshness probe into a god script.
|
|
253
|
+
intents:
|
|
254
|
+
- "spec sync"
|
|
255
|
+
- "sync the spec"
|
|
256
|
+
- "resync agentspec"
|
|
257
|
+
- "code drifted from spec"
|
|
258
|
+
- "derive spec from code"
|
|
259
|
+
- "brownfield spec sync"
|
|
260
|
+
- "no agentspec exists"
|
|
261
|
+
compresses:
|
|
262
|
+
- "Run scripts/sync-spec/check-sync-spec.ts for deterministic missing/in-sync/needs-sync status"
|
|
263
|
+
- "Have ai-architect read implementation/config/env/test surfaces and draft a cited sync plan when missing or stale"
|
|
264
|
+
- "Have ai-engineer apply the spec update under the BUILD gate, then validate before normal build continues"
|
|
265
|
+
gated: true
|
|
266
|
+
engine: "Routed via `execution-flow`: resolveDispatch builds the HandoverBundle with routing adl_stage=build + subject mutagent-builder; gateExecution applies the approval floor because the follow-up write step may mutate agentspec.yaml."
|
|
267
|
+
notes: The script only compares freshness. Reading, GH CLI context, and draft-spec judgment belong to the agents.
|
|
268
|
+
|
|
269
|
+
# ---- EVALUATE (③) ----------------------------------------------------------
|
|
270
|
+
- evaluate:
|
|
271
|
+
description: Run the eval-suite against a target skill/agent → deep-read traces for success/failure → binary criteria + confidence → GATE verdict + variance. Routes failures to *diagnose. JUDGE ONLY — never fixes.
|
|
272
|
+
stage: "③ EVALUATE"
|
|
273
|
+
routes_to: mutagent-evaluator # the evaluator skill (its *evaluate / *discover-evals / *build-evals surface)
|
|
274
|
+
mode: batch # heavy: dispatched to the evaluator sub-agent; interaction (subject pick) stays on parent
|
|
275
|
+
why: Determine success/failure of a skill/agent's sessions and emit an actionable verdict. The heart of v1.
|
|
276
|
+
intents:
|
|
277
|
+
- "evaluate"
|
|
278
|
+
- "evaluate this skill"
|
|
279
|
+
- "evaluate the agent"
|
|
280
|
+
- "run the evals"
|
|
281
|
+
- "is it passing"
|
|
282
|
+
- "score this skill/agent"
|
|
283
|
+
- "did the session reach its goal"
|
|
284
|
+
- "build evals / discover-evals (mine criteria)"
|
|
285
|
+
- "validate the judge"
|
|
286
|
+
compresses:
|
|
287
|
+
- "Resolve subject (skill OR agent) + scope from the *sync index"
|
|
288
|
+
- "Fetch + filter traces from the configured source platform"
|
|
289
|
+
- "Deep-read → success/failure determination per trace"
|
|
290
|
+
- "Run eval-suite (one binary criterion + confidence each) → GATE + variance"
|
|
291
|
+
- "Emit verdict + scorecard; route FAILURES to *diagnose via the handover bundle"
|
|
292
|
+
gated: false # evaluation is read/judge-only — safe; the APPLY downstream is what's gated
|
|
293
|
+
engine: "Routed via `execution-flow`: resolveDispatch (scripts/dispatch.ts) builds the HandoverBundle with routing adl_stage=evaluate + subject from the *sync topology; gateExecution (scripts/gate.ts) applies the scoped floors — a source is required ONLY in DISCOVER mode (a code/dataset run streams to stdout instead → `source-required` only when discovering), and an in-house judge_runtime additionally needs a provider credential (→ `provider-required`). No approval gate (evaluate is read/judge-only)."
|
|
294
|
+
notes: Subject profile is auto-generated (code/platform/trace exploration), never hand-authored. Evaluator stays a sub-agent (hybrid dispatch).
|
|
295
|
+
|
|
296
|
+
# ---- AUDIT (③ sibling) -----------------------------------------------------
|
|
297
|
+
- audit:
|
|
298
|
+
description: Data-flow / leak / context-flow / UI audit of a skill or agent — operational/contract-boundary · UI-render faithfulness · data-correctness. v1 generalizes today's strength to agent context-flow (included gaps only).
|
|
299
|
+
stage: "③ EVALUATE (audit sibling)"
|
|
300
|
+
routes_to: mutagent-evaluator # the evaluator's *audit surface
|
|
301
|
+
mode: batch
|
|
302
|
+
why: Catch structural data-flow problems (computed-but-not-rendered, producer-not-threaded, contract-too-narrow) that a goal-level eval can miss.
|
|
303
|
+
intents:
|
|
304
|
+
- "audit"
|
|
305
|
+
- "audit this skill"
|
|
306
|
+
- "check for data leaks"
|
|
307
|
+
- "context-flow audit"
|
|
308
|
+
- "UI faithfulness check"
|
|
309
|
+
- "is anything computed but not rendered"
|
|
310
|
+
- "contract-boundary check"
|
|
311
|
+
compresses:
|
|
312
|
+
- "Resolve subject + scope from *sync index"
|
|
313
|
+
- "Run data-leak / context-flow / UI-representation checks"
|
|
314
|
+
- "Classify findings (class × locus) → report"
|
|
315
|
+
gated: false
|
|
316
|
+
engine: "Routed via `execution-flow`: resolveDispatch builds the bundle with routing adl_stage=audit while the target subject is the evaluator (whose *sync topology classification is 'evaluate') — the two-enum split, NOT conflated. Audit is NOT a source stage, so gateExecution applies no onboarding floor (and no approval gate)."
|
|
317
|
+
notes: Deeper security/taint layer (prompt-injection, sensitive-data isolation) is DEFERRED out of v1.
|
|
318
|
+
|
|
319
|
+
# ---- DIAGNOSE (④) ----------------------------------------------------------
|
|
320
|
+
- diagnose:
|
|
321
|
+
description: Structural RCA + causal-chain breakdown on the FAILURES the evaluator routed → ranked remedies + gold-standard report. Runs AFTER evaluate (it can't know success on its own).
|
|
322
|
+
stage: "④ DIAGNOSE"
|
|
323
|
+
routes_to: mutagent-diagnostics # its orchestrator-protocol + ≤5 parallel analyzer sub-agents
|
|
324
|
+
mode: batch # diagnostics runs its pre-filter + parallel analyzer crew
|
|
325
|
+
why: Turn a failure bundle into root causes and ranked, actionable remedies. The improve stage applies them (gated).
|
|
326
|
+
intents:
|
|
327
|
+
- "diagnose"
|
|
328
|
+
- "diagnose the failures"
|
|
329
|
+
- "root cause this"
|
|
330
|
+
- "why did it fail"
|
|
331
|
+
- "RCA"
|
|
332
|
+
- "causal chain breakdown"
|
|
333
|
+
- "what's the fix"
|
|
334
|
+
compresses:
|
|
335
|
+
- "Receive the evaluator's FAILURE handover bundle (subject + failing traces + verdict)"
|
|
336
|
+
- "Run diagnostics' pre-filter + parallel analyzer crew (≤5)"
|
|
337
|
+
- "Produce ranked remedies + gold-standard report"
|
|
338
|
+
- "IMPROVE (⑤) is the GATED apply — an APPROVED RemedyPacket routes onward to ⑤ IMPROVE (owner: mutagent-optimize; the write itself goes through the shared `mutagent-cli apply`) only on explicit operator approval"
|
|
339
|
+
gated: true # the apply / improve step is approval-gated (no auto-apply remedies)
|
|
340
|
+
engine: "Routed via `execution-flow`: resolveDispatch builds the bundle with routing adl_stage=diagnose + subject mutagent-diagnostics; gateExecution applies the scoped floors — diagnose ALWAYS needs a resolvable global source (→ `source-required`), needs a resolvable global target AT APPLY unless `lifecycle.diagnostics.apply` is report-only (→ `target-required`), and the approval floor (gated → `approval-required`). allowed only when the required floors clear AND approval is granted."
|
|
341
|
+
notes: Diagnostics keeps its mature native internals. ⑤ IMPROVE is owned by mutagent-optimize — an approved remedy applies via the shared `mutagent-cli apply`, gated (the legacy apply-worker is retired, M9).
|
|
342
|
+
|
|
343
|
+
# ---- IMPROVE (⑤) -----------------------------------------------------------
|
|
344
|
+
- improve:
|
|
345
|
+
description: The closed, bounded eval-driven optimize loop (Build → Eval → Diagnose → Improve ↻), owned by mutagent-optimize. The session CONDUCTS the loop (Model B) — confirm ONCE at entry, bounded auto-iterations, ONE apply-gate at convergence. optimize writes nothing itself — it delegates the WRITE to ② builder, the JUDGE to ③ evaluator, the RCA to ④ diagnostics, and the TRANSPORT to the shared `mutagent-cli apply`. Draft remedies need no target; APPLY writes the fix to a resolvable global target.
|
|
346
|
+
stage: "⑤ IMPROVE"
|
|
347
|
+
routes_to: mutagent-optimize # the ⑤ IMPROVE single owner (DC-6) — conducts the loop; it DELEGATES the write to builder (never a direct builder re-route)
|
|
348
|
+
mode: batch
|
|
349
|
+
why: Close the ADL loop — turn ranked remedies (or an eval goal) into an applied, verified change, gated once at apply.
|
|
350
|
+
intents:
|
|
351
|
+
- "improve"
|
|
352
|
+
- "optimize"
|
|
353
|
+
- "optimize this agent"
|
|
354
|
+
- "optimize this skill"
|
|
355
|
+
- "run the improve loop"
|
|
356
|
+
- "run the optimize loop"
|
|
357
|
+
- "apply the fix"
|
|
358
|
+
- "apply the remedy"
|
|
359
|
+
- "ship the remedy"
|
|
360
|
+
- "make the change"
|
|
361
|
+
- "next iteration"
|
|
362
|
+
- "loop back to build"
|
|
363
|
+
- "make it better"
|
|
364
|
+
- "keep improving"
|
|
365
|
+
compresses:
|
|
366
|
+
- "Confirm ONCE at loop entry (the gate) → forward the HandoverBundle into mutagent-optimize (MODE-2 AUTONOMOUS-LOOP emit — see execution-flow step 3)"
|
|
367
|
+
- "mutagent-optimize conducts the bounded Build→Eval→Diagnose→Improve loop (Model B — the session conducts; not a code while-loop): WRITE→②builder · JUDGE→③evaluator · RCA→④diagnostics"
|
|
368
|
+
- "On convergence, raise ONE apply-gate — GATED: the shared `mutagent-cli apply` writes the fix to the role-bound global target (code-pr / markdown / cloud-deploy) on explicit operator approval"
|
|
369
|
+
gated: true # apply is approval-gated; a draft gates at apply-time via the target floor
|
|
370
|
+
engine: "Routed via `execution-flow`: resolveDispatch builds the bundle with routing adl_stage=improve + subject mutagent-optimize (the ⑤ IMPROVE owner — DC-6; the routing stage stays Improve, the two-enum split holds); gateExecution applies the target floor AT APPLY (a resolvable global target + a known apply.kind → `target-required`) plus the approval floor (gated → `approval-required`). A draft (apply not requested) needs no target."
|
|
371
|
+
notes: "⑤ IMPROVE has a SINGLE owner — mutagent-optimize (DC-6, resolves the KP-O1 split-brain; the legacy apply-worker is retired, M9). A remedy applies through the loop's convergence gate via the shared `mutagent-cli apply` — never by re-routing *improve to the builder. AdlStage.Improve already exists in the frozen handover contract."
|
|
372
|
+
|
|
373
|
+
# ---- STATE -----------------------------------------------------------------
|
|
374
|
+
- status:
|
|
375
|
+
description: Show current ADL state — which stage(s) are active, the last verdict, the indexed skills/agents, pending handovers, and any gated transition awaiting approval.
|
|
376
|
+
stage: STATE (cross-cutting)
|
|
377
|
+
routes_to: orchestrator-internal # reads transient session state + last handover docs
|
|
378
|
+
mode: interactive
|
|
379
|
+
why: The single source of truth for "where are we in the lifecycle right now". Auto-rendered at stage transitions.
|
|
380
|
+
intents:
|
|
381
|
+
- "status"
|
|
382
|
+
- "where are we"
|
|
383
|
+
- "what's the current state"
|
|
384
|
+
- "show the lifecycle"
|
|
385
|
+
- "what's pending"
|
|
386
|
+
- "last verdict"
|
|
387
|
+
compresses:
|
|
388
|
+
- "Read transient session state (active stage, last verdict)"
|
|
389
|
+
- "Read latest file-based handover docs (cross-stage bundle)"
|
|
390
|
+
- "Render the ADL state panel (stage ladder + indexed subjects + gated-transition flags)"
|
|
391
|
+
notes: Auto-renders at stage transitions (evaluate→diagnose handoff, gated-apply prompt).
|
|
392
|
+
|
|
393
|
+
# ---- ONBOARD / CONFIG ------------------------------------------------------
|
|
394
|
+
- onboard:
|
|
395
|
+
description: Orchestrator-led unified onboarding + config. Checks completion, runs every step required by the stages you'll use, writes one config (.mutagent/config.yaml). Alias — *config.
|
|
396
|
+
stage: SETUP (cross-cutting)
|
|
397
|
+
routes_to: orchestrator-internal (+ delegates each skill's minimal standalone onboarding)
|
|
398
|
+
mode: interactive # asks the operator: provider creds · workspace · models · source platform · framework substrate
|
|
399
|
+
why: One config to avoid duplicate copies. Unified onboarding completes all stages' needs; a standalone skill's own onboarding covers only its minimal bit.
|
|
400
|
+
intents:
|
|
401
|
+
- "onboard"
|
|
402
|
+
- "config"
|
|
403
|
+
- "configure"
|
|
404
|
+
- "set up"
|
|
405
|
+
- "setup"
|
|
406
|
+
- "pick my models"
|
|
407
|
+
- "which eval framework"
|
|
408
|
+
- "set the source platform"
|
|
409
|
+
- "credentials"
|
|
410
|
+
compresses:
|
|
411
|
+
- "Check existing .mutagent/config.yaml completion"
|
|
412
|
+
- "Collect the global base (provider creds · repo/workspace · default + judge_model models · brand/theme)"
|
|
413
|
+
- "Collect the global sources[] + targets[] catalogs (bound by role — one auto-binds; many ⇒ mark one `default: true` to auto-select, else pick at run time; >1 default is a config error)"
|
|
414
|
+
- "Evaluator judge_runtime choice (your framework · in-house AI-SDK/LiteLLM judge · code-based evals in CI)"
|
|
415
|
+
- "CLI install — APPROVAL-GATED (always)"
|
|
416
|
+
gated: true # CLI install is always approval-gated
|
|
417
|
+
contract: |
|
|
418
|
+
The config file is validated against the TypeBox `MutagentConfigSchema` at
|
|
419
|
+
`scripts/config-schema.ts` — a CLOSED object frozen at `config_version`
|
|
420
|
+
0.2.0, with a structural `validateConfig()` + a `loadConfig(path)` that
|
|
421
|
+
reads + YAML-parses an injected path AND detects a LEGACY (pre-0.2.0)
|
|
422
|
+
config → `{ ok:false, legacy:true }` (routed to `migration-required`; see
|
|
423
|
+
references/config-migration.md). The schema has three blocks: `global`
|
|
424
|
+
(provider credential REFS — env-var names or {env,path}, never raw secrets ·
|
|
425
|
+
workspace · default + judge_model models · brand · project-wide context[] ·
|
|
426
|
+
the sources[] + targets[] catalogs bound BY ROLE under the SELECTION
|
|
427
|
+
contract — one entry auto-binds; with MANY, an entry marked `default: true`
|
|
428
|
+
auto-selects (`resolved`), none-marked ⇒ `needs-selection` (pick at run,
|
|
429
|
+
floor still satisfied), >1-marked ⇒ `multiple-defaults` (a config error →
|
|
430
|
+
`source-config-error` / `target-config-error`)) · `lifecycle` (per-skill,
|
|
431
|
+
keyed by skill name — the orchestrator types spec_dir/context/apply/judge_runtime,
|
|
432
|
+
the rest is each skill's opaque passthrough) · `triggers` (per-stage, ships
|
|
433
|
+
DISABLED — enabled:false, no rules; absorbs the old schedule/heartbeat). The
|
|
434
|
+
old `stages` map is DROPPED. Onboarding COMPLETION is reported by the pure
|
|
435
|
+
`checkOnboardingComplete(config, activeStages, runCtx)` at
|
|
436
|
+
`scripts/onboarding-check.ts`, which SCOPES its floors to the invoked stage:
|
|
437
|
+
the base floor (models.judge_model for judging stages · models.default ·
|
|
438
|
+
workspace.repo for target-writers), the source floor (diagnose always ·
|
|
439
|
+
evaluate in DISCOVER only → `source-required`), the target floor
|
|
440
|
+
(build/improve/diagnose at apply, unless diagnostics.apply is report-only →
|
|
441
|
+
`target-required`), the provider floor (evaluate + in-house judge_runtime
|
|
442
|
+
→ `provider-required`), and the SELECTION config-error floor (a multi-entry
|
|
443
|
+
source/target catalog with >1 `default: true` → `source-config-error` /
|
|
444
|
+
`target-config-error`). The execution gate `gateExecution` (scripts/gate.ts)
|
|
445
|
+
splits those into their blocker kinds (incl. a distinct `config-error`
|
|
446
|
+
blocker carrying WHICH selector is broken) + the APPROVAL floor (*onboard is
|
|
447
|
+
`gated`). DECLARE-ONLY still: the live CLI-install / batch-approval UI flow is
|
|
448
|
+
wired when the runtime is connected — the engine adjudicates the gate; it does
|
|
449
|
+
not yet perform the install.
|
|
450
|
+
notes: One file — .mutagent/config.yaml — for orchestrator + all skills.
|
|
451
|
+
|
|
452
|
+
# ---- META ------------------------------------------------------------------
|
|
453
|
+
- help:
|
|
454
|
+
description: Show the NL dashboard — MUTAGENT brand header + ADL state + the *command roster.
|
|
455
|
+
stage: META
|
|
456
|
+
routes_to: orchestrator-internal
|
|
457
|
+
mode: interactive
|
|
458
|
+
why: Discover the commands and their NL utterances; see where you are in the lifecycle.
|
|
459
|
+
intents:
|
|
460
|
+
- "help"
|
|
461
|
+
- "what can you do"
|
|
462
|
+
- "commands"
|
|
463
|
+
- "menu"
|
|
464
|
+
- "show the dashboard"
|
|
465
|
+
compresses:
|
|
466
|
+
- "Render help-display-template (dashboard)"
|
|
467
|
+
- "Generate the *command roster: run `bun run scripts/render-roster.ts` (relative to the helix skill; degrade to reading routing.yaml directly if absent in a published install). It reads routing.yaml `visibility` flags (shown|glimpse|internal) and emits the === Lifecycle === / === Evaluator (glimpse) === / === State & Setup === blocks. Render that into the {command_roster} placeholder. Visibility is DISPLAY-ONLY — internal commands (*audit etc.) stay hidden here but still route when typed. A test asserts roster == routing-visibility (§9.4.6, no drift)."
|
|
468
|
+
|
|
469
|
+
# =============================================================================
|
|
470
|
+
# COMMAND EXECUTION FLOW (resolve → gate → emit) — the dispatch engine
|
|
471
|
+
# =============================================================================
|
|
472
|
+
# The deterministic engine behind every routed *command. Two pure scripts in
|
|
473
|
+
# this directory do the work (resolve + gate); the RUNTIME hand-off to a sibling
|
|
474
|
+
# skill is a PERSONA action (step 3) — WIRED here, NOT a new dispatch script.
|
|
475
|
+
# dispatch.ts stays a pure library that only computes route + bundle + gate.
|
|
476
|
+
# =============================================================================
|
|
477
|
+
execution-flow:
|
|
478
|
+
description: |
|
|
479
|
+
When a *command resolves to a stage route, the orchestrator runs a fixed
|
|
480
|
+
three-step flow. Steps 1-2 are the DETERMINISTIC ENGINE (pure, tested,
|
|
481
|
+
scripts/dispatch.ts + scripts/gate.ts). Step 3 is the RUNTIME hand-off — the
|
|
482
|
+
PERSONA (not a script) invokes the owning skill and hands it the bundle. The
|
|
483
|
+
invocation mechanism is the SAME Skill-tool / sub-agent dispatch Helix already
|
|
484
|
+
uses for forward-intents — extended from a single intent to stage→stage
|
|
485
|
+
chaining. dispatch.ts is NOT turned into a runner: it computes route+bundle+gate
|
|
486
|
+
and the agent acts on the result (router-not-executor holds).
|
|
487
|
+
steps:
|
|
488
|
+
- "1. RESOLVE — `resolveDispatch(command, ctx)` (scripts/dispatch.ts) maps the
|
|
489
|
+
resolved *command + the INJECTED *sync topology to a DispatchDescriptor.
|
|
490
|
+
A dispatch command (*evaluate/*audit/*diagnose) resolves its target subject
|
|
491
|
+
from the topology and BUILDS the HandoverBundle (via makeHandoverBundle —
|
|
492
|
+
the contract in scripts/handover-contract.ts). The routing AdlStage is
|
|
493
|
+
assigned PER COMMAND (build|evaluate|diagnose|improve|audit) and is NOT the
|
|
494
|
+
subject's *sync directory-classification enum — *audit proves the split
|
|
495
|
+
(same evaluator target, routing stage Audit). Local commands
|
|
496
|
+
(*sync/*status/*onboard/*help, +*config alias) resolve to a non-dispatch
|
|
497
|
+
descriptor (no subject, no bundle)."
|
|
498
|
+
- "2. GATE — `gateExecution(command, config, ctx)` (scripts/gate.ts) returns
|
|
499
|
+
{ allowed, blockers }. Floors (v0.2.0): (a) MIGRATION — a legacy (pre-0.2.0)
|
|
500
|
+
config short-circuits to 'migration-required'. (b) ONBOARDING — the gate calls
|
|
501
|
+
`checkOnboardingComplete(config, [stage], runCtx)` and splits its scoped result
|
|
502
|
+
into the specific blocker kinds: 'source-required' (diagnose always · evaluate
|
|
503
|
+
in DISCOVER), 'target-required' (build/improve/diagnose at apply, unless
|
|
504
|
+
diagnostics.apply is report-only), 'provider-required' (evaluate + in-house
|
|
505
|
+
judge_runtime), and 'onboarding-incomplete' for the remaining base keys. The
|
|
506
|
+
gate CONSULTS the completion-check; it never tightens the config schema —
|
|
507
|
+
shape-vs-completeness stays split. (c) APPROVAL — a `gated` command
|
|
508
|
+
(*build / *diagnose / *improve / *onboard, CLI-install / apply) is blocked
|
|
509
|
+
'approval-required' unless approval is granted (orchestrator-led batch-approval;
|
|
510
|
+
standalone + sandboxed clients still gate). allowed = no blockers."
|
|
511
|
+
- "3. EMIT (RUNTIME — WIRED · a PERSONA action, no new script) — IF allowed,
|
|
512
|
+
the orchestrator persona INVOKES the owning skill on the resolved route and
|
|
513
|
+
HANDS it the descriptor's HandoverBundle (the same Skill-tool / sub-agent
|
|
514
|
+
mechanism used for forward-intents, extended from single-intent to
|
|
515
|
+
stage→stage chaining). The owning skill READS the HandoverBundle on entry —
|
|
516
|
+
`bundle.inputs[]` are LOCATABLE relative paths (the pre-fetched trace JSONL +
|
|
517
|
+
manifest, or the approved RemedyPacket) — instead of re-fetching (the
|
|
518
|
+
single-collection-point invariant holds: one auditable slice, no per-stage
|
|
519
|
+
drift). Two emit LAYERS, discriminated by `intent.command` (no contract bump):
|
|
520
|
+
• MODE-1 INTERACTIVE (default — every top-level stage swap, e.g.
|
|
521
|
+
*build→*evaluate, *diagnose→apply): the persona waits for the per-swap
|
|
522
|
+
human confirm the gate required, THEN invokes the owning skill with the
|
|
523
|
+
bundle. No deterministic driver — the agent does the invocation.
|
|
524
|
+
• MODE-2 AUTONOMOUS-LOOP (*optimize only): Helix confirms ONCE at loop
|
|
525
|
+
entry, forwards the bundle into mutagent-optimize, and steps out; the
|
|
526
|
+
improve-loop TS FSM driver (scripts/improve-loop-run.ts) owns the
|
|
527
|
+
intra-loop Build→Eval→Diagnose→Improve transitions ONE LAYER BELOW this
|
|
528
|
+
routing gate — so they never re-hit the per-swap prompt — and raises ONE
|
|
529
|
+
apply-gate back up on convergence. 'Ask once + promote once' falls out of
|
|
530
|
+
the layering; dispatch.ts/gate.ts stay pure for BOTH modes.
|
|
531
|
+
PROVEN EDGE — diagnose → apply: on an approved RemedyPacket the persona builds
|
|
532
|
+
the ImproveHandover (routing `adl_stage: improve` — a FROZEN enum member, no
|
|
533
|
+
contract bump) and routes it as a GATED call to the shared `mutagent-cli apply`
|
|
534
|
+
service (caller b — NOT through the optimize loop). If NOT allowed, surface the
|
|
535
|
+
blockers (onboarding steps to finish / the gated approval to grant) — never
|
|
536
|
+
auto-advance past a blocker."
|
|
537
|
+
trace-prefetch: |
|
|
538
|
+
TRACE PRE-FETCH (source stages: *diagnose / *evaluate). Before RESOLVE builds the
|
|
539
|
+
HandoverBundle for a trace-consuming stage, Helix FETCHES the trace slice FIRST — the
|
|
540
|
+
stage READS the handover, it NEVER fetches its own traces (single collection point =
|
|
541
|
+
one auditable slice; no per-stage drift). The flow:
|
|
542
|
+
1. Helix runs the shared trace CLI to SIZE then COLLECT the slice:
|
|
543
|
+
mutagent-cli trace count --platform <p> <filters> --since <w>
|
|
544
|
+
mutagent-cli trace fetch --platform <p> <filters> --since <w> \
|
|
545
|
+
--export .mutagent/traces/<query_id>/traces.jsonl
|
|
546
|
+
`--export` writes the UniTF JSONL AND a sibling `traces.manifest.json` (the
|
|
547
|
+
TraceManifest — it ECHOES the TraceQuery so the slice is auditable).
|
|
548
|
+
2. RESOLVE (step 1) then builds the HandoverBundle with the fetched artifacts as
|
|
549
|
+
`inputs`:
|
|
550
|
+
inputs = [
|
|
551
|
+
{ kind: "trace", path: ".mutagent/traces/<id>/traces.jsonl", sha },
|
|
552
|
+
{ kind: "config", path: ".mutagent/traces/<id>/traces.manifest.json" }
|
|
553
|
+
]
|
|
554
|
+
(both LOCATABLE relative paths — validateHandoverBundle's at-least-one-locator
|
|
555
|
+
floor holds; `sha` is the manifest's integrity stamp.)
|
|
556
|
+
3. GATE (step 2) + EMIT (step 3) proceed as normal — the target stage receives the
|
|
557
|
+
bundle and reads traces.jsonl + the manifest; it does NO fetching of its own.
|
|
558
|
+
Contracts: TraceQuery + TraceManifest v0.1 (mutagent-tools/src/format/*), carried as
|
|
559
|
+
ArtifactRefs inside the FROZEN HandoverBundle v0.1.0 (the ADL envelope is unchanged).
|
|
560
|
+
See mutagent-tools/references/TRACES-CLI.md §3 (Handoff contracts).
|
|
561
|
+
DISCOVERABILITY: agents + operators discover the full trace surface (subcommands +
|
|
562
|
+
flags) via `mutagent-cli trace --help` (and `mutagent-cli trace <subcommand> --help`);
|
|
563
|
+
run `--help` first before reconstructing flags.
|
|
564
|
+
trace-collection-route: |
|
|
565
|
+
DELEGATED COLLECTION (`*discover` → the `discovery` SYSTEM AGENT; `*collect-traces` = alias).
|
|
566
|
+
The inline pre-fetch above is what Helix may still do DIRECTLY for a plain count/list (generic
|
|
567
|
+
fetch is agent-optional). The `*discover` route FORMALIZES trace collection + CURATION into a
|
|
568
|
+
delegatable cell: it dispatches the `discovery` agent (subject kind:agent, name:"discovery",
|
|
569
|
+
path mutagent-orchestrator/assets/agents/discovery.md, indexed by *sync as a system_agent) with
|
|
570
|
+
a HandoverBundle carrying the TraceQuery (inputs=[{kind:"config", id:"trace-query"}]).
|
|
571
|
+
INTENT-BRANCHED — the agent reads `TraceQuery.operationIntent`:
|
|
572
|
+
• `fetch` (DEFAULT / generic): `mutagent-cli trace {count|list|fetch --export}` → STOP at a
|
|
573
|
+
plain TraceManifest. NO select, NO classify, ZERO LLM. Use: list / monitor / ad-hoc collect.
|
|
574
|
+
• `evals` | `dataset` (purposed): `trace fetch --export` → `trace select` (deterministic
|
|
575
|
+
worthiness signals → ext.signals + a SelectionManifest) → an LLM CLASSIFY pass over the
|
|
576
|
+
worthy subset (scenario · edgeCase · outcome · worthiness → ext.classification) → a curated
|
|
577
|
+
handoff. The purposed handoffs feed *discover-evals / *discover-dataset (evaluator).
|
|
578
|
+
Routing: a `dispatch` route in scripts/dispatch.ts (route_target "discovery"), resolved from the
|
|
579
|
+
*sync topology. TWO-ENUM SPLIT: the frozen routing AdlStage set has NO "collect" member (adding
|
|
580
|
+
one would break the frozen HandoverBundle contract), so the route carries the DEFAULT downstream
|
|
581
|
+
consumer stage — Diagnose — while the subject is an AGENT, not a skill (the discovery agent's OWN
|
|
582
|
+
bundle then carries the true diagnose|evaluate adl_stage).
|
|
583
|
+
determinism: "Steps 1-2 are pure + deterministic (no clock/random/abs-path): the
|
|
584
|
+
same command + ctx ⇒ a deep-equal descriptor + gate result. provenance.produced_at
|
|
585
|
+
is an INJECTED ctx field, never a self-read clock."
|
|
586
|
+
triggers_dormant: "The config `triggers` block ships DISABLED (DEFAULT_TRIGGER_BLOCK:
|
|
587
|
+
enabled:false, no rules). No always-on monitor consumes it — execution is
|
|
588
|
+
on-demand only (feedback_self_diagnostics_on_demand_only). No auto-fire, no cron."
|
|
589
|
+
|
|
590
|
+
# =============================================================================
|
|
591
|
+
# CROSS-STAGE HANDOFF (the shared contract bundle)
|
|
592
|
+
# =============================================================================
|
|
593
|
+
cross-stage-handoff:
|
|
594
|
+
description: |
|
|
595
|
+
Every stage→stage handover conforms to ONE shared contract bundle (a defined
|
|
596
|
+
blueprint), paired with a file-based handover doc for auditability (sessions
|
|
597
|
+
go out of context — the file is the durable record). The orchestrator owns the
|
|
598
|
+
handoff; each stage reads/writes the bundle, never another skill's source.
|
|
599
|
+
blueprint: |
|
|
600
|
+
The executable form of this bundle is the TypeBox HandoverBundle schema at
|
|
601
|
+
`scripts/handover-contract.ts` — a CLOSED object (additionalProperties:false)
|
|
602
|
+
with `validateHandoverBundle()` + the pure `makeHandoverBundle()` builder, frozen
|
|
603
|
+
at `bundle_version` 0.1.0. The routing commands (*evaluate / *audit / *diagnose)
|
|
604
|
+
EMIT a HandoverBundle when they route a stage: `inputs[]` enumerates every
|
|
605
|
+
artifact that crosses the boundary and `context_pack` (rules · memory ·
|
|
606
|
+
partial_loads) enumerates the curated context handed down — making the boundary
|
|
607
|
+
explicit + auditable (the data-leak / context-flow audit reads exactly this).
|
|
608
|
+
NOTE: the dispatch that BUILDS this bundle has landed — see `execution-flow`
|
|
609
|
+
above (scripts/dispatch.ts `resolveDispatch` → scripts/gate.ts `gateExecution`).
|
|
610
|
+
Step 3 (the live cross-skill RUNTIME invocation that hands the gated bundle to
|
|
611
|
+
the sibling skill) is now WIRED as a persona action: on a cleared gate the agent
|
|
612
|
+
invokes the owning skill and hands it the bundle, and the owning skill reads the
|
|
613
|
+
handover on entry. No new dispatch script — dispatch.ts/gate.ts stay a pure
|
|
614
|
+
library serving both emit modes (MODE-1 interactive persona-invoke · MODE-2 the
|
|
615
|
+
*optimize loop driver).
|
|
616
|
+
bundle_shape:
|
|
617
|
+
subject_ref: "skill OR agent under test (auto-generated profile, never hand-authored)"
|
|
618
|
+
scope: "trace filter + sampling parameters (from the *sync index)"
|
|
619
|
+
verdict: "evaluator output — pass/fail + per-criterion + confidence + variance"
|
|
620
|
+
failures: "the failing traces routed to diagnose (the diagnose input)"
|
|
621
|
+
remedies: "diagnose output — ranked, actionable (the gated improve input)"
|
|
622
|
+
file_handover: "A handover doc written to the workspace per transition, so a fresh session can resume. The in-session bundle + the file doc are kept in sync."
|
|
623
|
+
rule: "evaluate → (failures) → diagnose → (remedies, GATED) → improve. No stage skips the bundle; no transition is automatic."
|
|
624
|
+
|
|
625
|
+
# =============================================================================
|
|
626
|
+
# ADL STAGE → SKILL MAP (the system the orchestrator routes)
|
|
627
|
+
# =============================================================================
|
|
628
|
+
adl-stage-map:
|
|
629
|
+
- stage: "① SPEC"
|
|
630
|
+
owner: "mutagent-agentspec"
|
|
631
|
+
command: "*spec · *validate-spec"
|
|
632
|
+
status: "shipped SPEC owner; suggests *build after a valid spec"
|
|
633
|
+
- stage: "② BUILD"
|
|
634
|
+
owner: "mutagent-builder"
|
|
635
|
+
command: "*build · *sync-spec"
|
|
636
|
+
status: "shipped BUILD owner"
|
|
637
|
+
- stage: "③ EVALUATE / AUDIT"
|
|
638
|
+
owner: "mutagent-evaluator (v2)"
|
|
639
|
+
command: "*evaluate · *audit"
|
|
640
|
+
status: "★ the v1 redesign"
|
|
641
|
+
- stage: "④ DIAGNOSE"
|
|
642
|
+
owner: "mutagent-diagnostics"
|
|
643
|
+
command: "*diagnose"
|
|
644
|
+
status: "keep native (mature)"
|
|
645
|
+
- stage: "⑤ IMPROVE"
|
|
646
|
+
owner: "mutagent-optimize"
|
|
647
|
+
command: "*improve → the *optimize loop (apply via the shared mutagent-cli apply, gated)"
|
|
648
|
+
status: "single owner (DC-6) — conducts the closed Build→Eval→Diagnose→Improve loop; delegates WRITE→②builder · JUDGE→③evaluator · RCA→④diagnostics · TRANSPORT→mutagent-cli apply; the apply-worker is retired"
|
|
649
|
+
|
|
650
|
+
# =============================================================================
|
|
651
|
+
# SYSTEM AGENTS (cross-stage — indexed by *sync as `system_agent`)
|
|
652
|
+
# =============================================================================
|
|
653
|
+
# System agents are orchestrator-owned, cross-stage cells that are NOT an ADL
|
|
654
|
+
# lifecycle stage of their own. Their defs live under
|
|
655
|
+
# `mutagent-orchestrator/assets/agents/*.md` (the orchestrator's first `assets/`)
|
|
656
|
+
# and are indexed by `*sync` with kind `system_agent` (folded to SubjectKind.Agent
|
|
657
|
+
# on the frozen HandoverBundle). Today there is one: `discovery`.
|
|
658
|
+
# =============================================================================
|
|
659
|
+
system-agents:
|
|
660
|
+
- agent: discovery
|
|
661
|
+
def: "mutagent-orchestrator/assets/agents/discovery.md (class: system_agent)"
|
|
662
|
+
command: "*discover (alias: *collect-traces)"
|
|
663
|
+
dispatch: "scripts/dispatch.ts → route_target \"discovery\", routing adl_stage Diagnose (the DEFAULT downstream consumer — two-enum split; NOT a new enum member), mode batch, ungated"
|
|
664
|
+
role: >
|
|
665
|
+
The trace-Discovery cell — source-platform collection + (purposed) worthiness SELECTION +
|
|
666
|
+
scenario CLASSIFICATION. Curation only; it never judges or scores the agent under test.
|
|
667
|
+
intent_branch: |
|
|
668
|
+
The agent BRANCHES on `TraceQuery.operationIntent` (mutagent-tools/src/format/trace-query.ts):
|
|
669
|
+
• fetch (DEFAULT / generic): `mutagent-cli trace {count|list|fetch --export}` → STOP at a
|
|
670
|
+
plain TraceManifest. NO select, NO classify, ZERO LLM. (list / monitor / ad-hoc collect.)
|
|
671
|
+
• evals |
|
|
672
|
+
dataset (purposed): `trace fetch --export` → `trace select` (deterministic signals →
|
|
673
|
+
ext.signals + SelectionManifest) → an LLM CLASSIFY pass over the worthy subset
|
|
674
|
+
(scenario · edgeCase · outcome · worthiness → ext.classification) → curated handoff.
|
|
675
|
+
GUARD: under `fetch` the agent MUST NOT run select/classify (assert-and-skip) — generic
|
|
676
|
+
collection stays deterministic + tokenless.
|
|
677
|
+
flow: |
|
|
678
|
+
*discover (generic fetch) collects/lists/monitors → plain handoff.
|
|
679
|
+
*discover (purposed, or set by the evaluator commands) → curated, classified handoff that feeds:
|
|
680
|
+
• *discover-evals → the evaluator mines criteria, STRATIFIED by ext.classification.scenario,
|
|
681
|
+
PRIORITIZED by ext.signals.worthinessScore.
|
|
682
|
+
• *discover-dataset → the evaluator distills a scenario-balanced dataset, edge-cases first
|
|
683
|
+
(re-fronts the old *derive-dataset).
|
|
684
|
+
Both evaluator commands READ the curated SelectionManifest + traces via the Phase-2 handover
|
|
685
|
+
(skills never fetch). See the evaluator SKILL.md.
|
|
686
|
+
|
|
687
|
+
- agent: dogfood-monitor
|
|
688
|
+
def: "mutagent-orchestrator/assets/agents/dogfood-monitor.md (class: system_agent)"
|
|
689
|
+
command: "*dogfood [sessionId?] · *dogfood-stop"
|
|
690
|
+
dispatch: "scripts/dispatch.ts → LOCAL orchestrator-internal (no skill subject); spawns this BG monitor agent; ungated (read-only observation)"
|
|
691
|
+
visibility: internal # HIDDEN — maintainer-only observe surface; never in the roster, still invocable by name
|
|
692
|
+
role: >
|
|
693
|
+
The dogfood observe cell — live-monitors a session where Helix is USED, vacuums user feedback
|
|
694
|
+
(verbatim [feedback] blocks + P-0 chat-feedback/negative-reaction signals) → actionable feedback
|
|
695
|
+
with rationale, and renders a live HTML status report every 3m + ON DRIFT. `*dogfood` is ALWAYS a
|
|
696
|
+
live monitor (watch by default; the internal `--once` opt-out is test-only).
|
|
697
|
+
source: |
|
|
698
|
+
BUILD-PROJECT ≠ DOGFOOD-PROJECT. The session source is `config.dogfood.source_dir` — the
|
|
699
|
+
Claude-Code session dir of the DOGFOOD TARGET project (a DIFFERENT project than where Helix is
|
|
700
|
+
built). `*dogfood` with no sessionId → latest *.jsonl by mtime there; also tails the dispatched
|
|
701
|
+
subagent JSONLs. NEVER watches the current build project's own sessions.
|
|
702
|
+
renders: |
|
|
703
|
+
status.html (architecture.html style) — lifecycle stage TIMELINE · *command/skill usage · agent
|
|
704
|
+
internal steps · user feedback+notes (actionable+rationale) · a trajectory Call-Stack DAG
|
|
705
|
+
(Helix → *command → skill|agent → sub-step). Reuses the mutagent-tools claude-code adapter to
|
|
706
|
+
parse transcripts + the P-0 signals for implicit feedback. artifact_namespace .mutagent/dogfood/{runId}/.
|
|
707
|
+
slack: |
|
|
708
|
+
OPTIONAL live Slack thread — when `config.dogfood.slack.enabled`, `*dogfood` opens a thread and
|
|
709
|
+
posts typed replies (stage-change · agent-dispatch · feedback · signal · progress). If an operator
|
|
710
|
+
asks "how do I get dogfood into Slack?", answer from references/MONITORING.md#slack-setup — do NOT
|
|
711
|
+
improvise. The 4-line gist: (1) create a Slack app → (2) add the Bot Token Scope `chat:write` →
|
|
712
|
+
(3) install + export the `xoxb-…` bot token as an env var → (4) set `config.dogfood.slack:
|
|
713
|
+
{ enabled, channel, token_ref }` (token_ref = the env-var NAME). Threading needs the Slack Web API
|
|
714
|
+
(chat.postMessage + thread_ts), not a webhook. Unconfigured/disabled ⇒ HTML report only, never an error.
|
|
715
|
+
|
|
716
|
+
- agent: monitor
|
|
717
|
+
def: "mutagent-orchestrator/assets/agents/monitor.md (class: system_agent)"
|
|
718
|
+
command: "*monitor · *monitor-stop"
|
|
719
|
+
dispatch: "scripts/dispatch.ts → LOCAL orchestrator-internal (no skill subject); spawns this BG watch agent; ungated (arming a read-only watch)"
|
|
720
|
+
visibility: internal # HIDDEN — maintainer/system observe surface; never in the roster, still invocable by name
|
|
721
|
+
role: >
|
|
722
|
+
The EXTERNAL (outward) monitor — the OUTWARD counterpart to *dogfood (inward). Arms a watch on
|
|
723
|
+
the DORMANT config.triggers (evaluate/diagnose rules); on a fired trigger (trace-count · schedule ·
|
|
724
|
+
ci · manual) it ROUTES a HandoverBundle to the target stage (same dispatch model as *discover) AND
|
|
725
|
+
posts a discrete Slack NOTIFICATION (scripts/monitor/slack-notify.ts — its OWN emitter, not the
|
|
726
|
+
dogfood thread). SHIPS DISABLED: no auto-fire until triggers.<stage>.enabled:true. Observe-and-route
|
|
727
|
+
only — it hands off, never runs a stage or edits a target. See references/MONITORING.md#5.
|
|
728
|
+
|
|
729
|
+
# =============================================================================
|
|
730
|
+
# HELP DISPLAY (the NL dashboard — MUTAGENT brand header)
|
|
731
|
+
# =============================================================================
|
|
732
|
+
# Brand: MUTAGENT wordmark · violet primary (#7E47D7) · cyan accent (#45b8cc).
|
|
733
|
+
# (unified design-system tokens — supersedes the legacy #a78bfa/#06b6d4.)
|
|
734
|
+
# Similar to the Architech software-orchestrator dashboard — NOT a clone.
|
|
735
|
+
#
|
|
736
|
+
# The *command roster ({command_roster}) is GENERATED from routing.yaml's
|
|
737
|
+
# `visibility` flags by scripts/render-roster.ts (§9.4.6) — NOT hand-maintained.
|
|
738
|
+
# shown → visible · glimpse → "Evaluator (glimpse)" · internal → hidden (still
|
|
739
|
+
# invocable). A test asserts roster == routing-visibility, so it can't drift.
|
|
740
|
+
# =============================================================================
|
|
741
|
+
help-display-template: |
|
|
742
|
+
╔════════════════════════════════════════════════════════════════════════════════════╗
|
|
743
|
+
║ ███╗ ███╗ ██╗ ██╗ ████████╗ █████╗ ██████╗ ███████╗ ███╗ ██╗ ████████╗ ║
|
|
744
|
+
║ ████╗ ████║ ██║ ██║ ╚══██╔══╝ ██╔══██╗ ██╔════╝ ██╔════╝ ████╗ ██║ ╚══██╔══╝ ║
|
|
745
|
+
║ ██╔████╔██║ ██║ ██║ ██║ ███████║ ██║ ███╗ █████╗ ██╔██╗ ██║ ██║ ║
|
|
746
|
+
║ ██║╚██╔╝██║ ██║ ██║ ██║ ██╔══██║ ██║ ██║ ██╔══╝ ██║╚██╗██║ ██║ ║
|
|
747
|
+
║ ██║ ╚═╝ ██║ ╚██████╔╝ ██║ ██║ ██║ ╚██████╔╝ ███████╗ ██║ ╚████║ ██║ ║
|
|
748
|
+
║ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═══╝ ╚═╝ ║
|
|
749
|
+
╠════════════════════════════════════════════════════════════════════════════════════╣
|
|
750
|
+
║ Helix · ADL Orchestrator · build · evaluate · diagnose · evolve ║
|
|
751
|
+
╚════════════════════════════════════════════════════════════════════════════════════╝
|
|
752
|
+
|
|
753
|
+
┌─ AGENTIC DEVELOPMENT LIFECYCLE ────────────────────────────────────────────────
|
|
754
|
+
│ ① SPEC ──▶ ② BUILD ──▶ ③ EVALUATE ──▶ ④ DIAGNOSE ──▶ ⑤ IMPROVE
|
|
755
|
+
│ agentspec builder evaluator ★ diagnostics optimize (gated apply)
|
|
756
|
+
│ Enter at ANY stage — the loop is a flexible DAG. Transitions need explicit intent.
|
|
757
|
+
└────────────────────────────────────────────────────────────────────────────────
|
|
758
|
+
|
|
759
|
+
┌─ SYSTEM (from index) ──────────────────────────────────────────────────────────
|
|
760
|
+
│ {indexed_skills_and_agents} ← *sync runs scripts/sync-index.ts → renders this
|
|
761
|
+
│ table (ADL Stage · Name · Kind · Version · Onboarding)
|
|
762
|
+
└────────────────────────────────────────────────────────────────────────────────
|
|
763
|
+
|
|
764
|
+
┌─ SETUP / ONBOARDING ───────────────────────────────────────────────────────────
|
|
765
|
+
│ {onboarding_status} ← boot reads .mutagent/config.yaml → checkOnboardingComplete
|
|
766
|
+
│ (not-started / incomplete+missing keys / ✓ complete)
|
|
767
|
+
└────────────────────────────────────────────────────────────────────────────────
|
|
768
|
+
|
|
769
|
+
┌─ STATE ────────────────────────────────────────────────────────────────────────
|
|
770
|
+
│ active stage: {active_stage} last verdict: {last_verdict} gated: {gated_pending}
|
|
771
|
+
└────────────────────────────────────────────────────────────────────────────────
|
|
772
|
+
|
|
773
|
+
All commands start with * (asterisk). Free text routes via the NL intent layer.
|
|
774
|
+
|
|
775
|
+
{command_roster} ← *help runs scripts/render-roster.ts → emits these blocks
|
|
776
|
+
(=== Lifecycle === · === Evaluator (glimpse) === · === State & Setup ===)
|
|
777
|
+
GENERATED from routing.yaml `visibility`. INTERNAL commands
|
|
778
|
+
(*audit · *discover-dataset · *collect-traces · *build
|
|
779
|
+
internals) are hidden here but STILL invocable by name.
|
|
780
|
+
|
|
781
|
+
WORKFLOW: *onboard → *sync → *spec → *build → *evaluate → (failures) *diagnose → (gated) *improve — the optimize loop.
|
|
782
|
+
```
|