@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
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/install-agents.ts
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/cli/install-agents.ts
|
|
3
|
+
* Symlink assets/agents/*.md into the host coding-agent's agents directory.
|
|
4
|
+
* Phase 3-E addition: MD→TOML transcode for Codex (--transcode-only --to codex).
|
|
5
|
+
*
|
|
6
|
+
* Implements R-SELF-01-a (approved 2026-05-28).
|
|
7
|
+
* Closes F-SELF-01: onboarding never installed the agent symlinks, so every
|
|
8
|
+
* dispatch fell back to subagent_type=general-purpose.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* bun scripts/cli/install-agents.ts [project-root] [--scope=project|user] [--force]
|
|
12
|
+
* bun scripts/cli/install-agents.ts --transcode-only --to codex <input.md> <output.toml>
|
|
13
|
+
*
|
|
14
|
+
* Default scope: project (.claude/agents/) — falls back to user (~/.claude/agents/)
|
|
15
|
+
* if no project .claude/ dir exists.
|
|
16
|
+
*
|
|
17
|
+
* Idempotent: if the symlink already points at the correct target, prints OK and exits 0.
|
|
18
|
+
* Will NOT clobber a non-symlink at the destination unless --force is passed.
|
|
19
|
+
*
|
|
20
|
+
* IMPORTANT: After install, the host coding-agent (Claude Code) must restart its
|
|
21
|
+
* session to pick up the new agent types — its subagent_type registry is loaded
|
|
22
|
+
* at session boot.
|
|
23
|
+
*
|
|
24
|
+
* MD→TOML transcode (Phase 3-E / OQ-3):
|
|
25
|
+
* Converts Claude Code .md agent files (YAML frontmatter + body) to Codex .toml format.
|
|
26
|
+
* TOML format: [agent] block with key-value pairs + [agent.body] content.
|
|
27
|
+
* See references/source-platforms/codex.md for format spec.
|
|
28
|
+
* ⚠️ Verify against Codex docs before publishing — format is best-effort per OQ-3.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import {
|
|
32
|
+
existsSync, lstatSync, readlinkSync, readdirSync, symlinkSync,
|
|
33
|
+
unlinkSync, mkdirSync, realpathSync, readFileSync, writeFileSync,
|
|
34
|
+
} from "fs";
|
|
35
|
+
import { resolve, join, basename } from "path";
|
|
36
|
+
import { homedir } from "os";
|
|
37
|
+
|
|
38
|
+
// ── MD→TOML transcode (Phase 3-E) ────────────────────────────────────────────
|
|
39
|
+
|
|
40
|
+
export type TranscodeTargetPlatform = "codex";
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Parse a minimal YAML frontmatter block (between --- delimiters).
|
|
44
|
+
* Handles simple string values and comma-separated lists.
|
|
45
|
+
* Returns meta key-value pairs and the document body.
|
|
46
|
+
*/
|
|
47
|
+
export function parseAgentFrontmatter(content: string): {
|
|
48
|
+
meta: Record<string, string>;
|
|
49
|
+
body: string;
|
|
50
|
+
} {
|
|
51
|
+
// Match opening --- ... closing ---
|
|
52
|
+
const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)/);
|
|
53
|
+
if (!fmMatch) {
|
|
54
|
+
return { meta: {}, body: content };
|
|
55
|
+
}
|
|
56
|
+
const rawFrontmatter = fmMatch[1] ?? "";
|
|
57
|
+
const body = fmMatch[2] ?? "";
|
|
58
|
+
|
|
59
|
+
const meta: Record<string, string> = {};
|
|
60
|
+
for (const line of rawFrontmatter.split("\n")) {
|
|
61
|
+
// Strip \r so CRLF files parse identically to LF files
|
|
62
|
+
const kv = line.replace(/\r$/, "").match(/^([^:#][^:]*?):\s*(.*)$/);
|
|
63
|
+
if (kv) {
|
|
64
|
+
meta[kv[1].trim()] = kv[2].trim();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { meta, body };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Serialize a frontmatter value to a TOML value string.
|
|
72
|
+
* - "tools" key: "Bash, Read" → ["Bash", "Read"]
|
|
73
|
+
* - All other values: quoted string with escaping
|
|
74
|
+
*/
|
|
75
|
+
export function serializeToTomlValue(key: string, value: string): string {
|
|
76
|
+
if (key === "tools") {
|
|
77
|
+
const parts = value
|
|
78
|
+
.split(",")
|
|
79
|
+
.map((s) => s.trim())
|
|
80
|
+
.filter((s) => s.length > 0)
|
|
81
|
+
.map((s) => `"${s.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`);
|
|
82
|
+
return `[${parts.join(", ")}]`;
|
|
83
|
+
}
|
|
84
|
+
// Generic string: escape backslashes and double-quotes
|
|
85
|
+
const escaped = value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
86
|
+
return `"${escaped}"`;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Transcode a Claude Code agent .md file to Codex .toml format.
|
|
91
|
+
*
|
|
92
|
+
* Output shape:
|
|
93
|
+
* [agent]
|
|
94
|
+
* name = "..."
|
|
95
|
+
* description = "..."
|
|
96
|
+
* tools = ["Bash", "Read", ...]
|
|
97
|
+
* ...other frontmatter keys...
|
|
98
|
+
*
|
|
99
|
+
* [agent.body]
|
|
100
|
+
* content = """
|
|
101
|
+
* ...body...
|
|
102
|
+
* """
|
|
103
|
+
*
|
|
104
|
+
* ⚠️ Verify [agent] and [agent.body] key names against Codex docs before publishing.
|
|
105
|
+
*/
|
|
106
|
+
export function transcodeAgentMdToToml(mdContent: string): string {
|
|
107
|
+
const { meta, body } = parseAgentFrontmatter(mdContent);
|
|
108
|
+
|
|
109
|
+
const lines: string[] = ["[agent]"];
|
|
110
|
+
for (const [key, value] of Object.entries(meta)) {
|
|
111
|
+
lines.push(`${key} = ${serializeToTomlValue(key, value)}`);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const trimmedBody = body.trim();
|
|
115
|
+
if (trimmedBody) {
|
|
116
|
+
lines.push("");
|
|
117
|
+
lines.push("[agent.body]");
|
|
118
|
+
// TOML multi-line basic string: first newline after """ is trimmed by TOML spec
|
|
119
|
+
lines.push(`content = """\n${trimmedBody}\n"""`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return lines.join("\n") + "\n";
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Transcode a single .md file to a platform-specific format and write to dest.
|
|
127
|
+
* Currently only "codex" (TOML) is supported; others will be copied as-is.
|
|
128
|
+
*/
|
|
129
|
+
export function transcodeAgentFile(
|
|
130
|
+
srcPath: string,
|
|
131
|
+
destPath: string,
|
|
132
|
+
targetPlatform: TranscodeTargetPlatform
|
|
133
|
+
): void {
|
|
134
|
+
const content = readFileSync(srcPath, "utf8");
|
|
135
|
+
if (targetPlatform === "codex") {
|
|
136
|
+
const toml = transcodeAgentMdToToml(content);
|
|
137
|
+
writeFileSync(destPath, toml, "utf8");
|
|
138
|
+
} else {
|
|
139
|
+
// Other platforms: copy as-is
|
|
140
|
+
writeFileSync(destPath, content, "utf8");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export type InstallScope = "project" | "user";
|
|
145
|
+
|
|
146
|
+
export interface InstallEntry {
|
|
147
|
+
agentName: string;
|
|
148
|
+
src: string;
|
|
149
|
+
dest: string;
|
|
150
|
+
/** "installed" = new symlink created. "ok" = already correct. "skipped" = collision, --force not set. "replaced" = collision replaced. */
|
|
151
|
+
action: "installed" | "ok" | "skipped" | "replaced";
|
|
152
|
+
note?: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export interface InstallResult {
|
|
156
|
+
scope: InstallScope;
|
|
157
|
+
destDir: string;
|
|
158
|
+
entries: InstallEntry[];
|
|
159
|
+
needsSessionRestart: boolean;
|
|
160
|
+
errors: string[];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// realpath-resolve so SKILL_DIR is the canonical install location even if the
|
|
164
|
+
// script is invoked through a symlink chain (e.g. when ~/.claude/skills/<skill>
|
|
165
|
+
// is itself a symlink into a worktree). Otherwise SRC paths won't match existing
|
|
166
|
+
// canonical symlinks and idempotency breaks. (Sibling of F-SELF-05 cwd-leak.)
|
|
167
|
+
const SCRIPT_DIR = realpathSync(import.meta.dirname ?? import.meta.url.replace(/^file:\/\//, "").replace(/\/[^/]+$/, ""));
|
|
168
|
+
const SKILL_DIR = resolve(SCRIPT_DIR, "../..");
|
|
169
|
+
const AGENTS_SRC_DIR = join(SKILL_DIR, "assets", "agents");
|
|
170
|
+
|
|
171
|
+
export function installAgents(
|
|
172
|
+
projectRoot: string,
|
|
173
|
+
scope: InstallScope = "project",
|
|
174
|
+
force = false
|
|
175
|
+
): InstallResult {
|
|
176
|
+
const result: InstallResult = {
|
|
177
|
+
scope,
|
|
178
|
+
destDir: "",
|
|
179
|
+
entries: [],
|
|
180
|
+
needsSessionRestart: false,
|
|
181
|
+
errors: [],
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// Pick destination
|
|
185
|
+
if (scope === "project") {
|
|
186
|
+
const projDotClaude = join(projectRoot, ".claude");
|
|
187
|
+
if (!existsSync(projDotClaude)) {
|
|
188
|
+
result.errors.push(
|
|
189
|
+
`Project .claude/ dir missing at ${projDotClaude}. ` +
|
|
190
|
+
`Either init the project's Claude Code setup, or re-run with --scope=user.`
|
|
191
|
+
);
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
result.destDir = join(projDotClaude, "agents");
|
|
195
|
+
} else {
|
|
196
|
+
result.destDir = join(homedir(), ".claude", "agents");
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (!existsSync(result.destDir)) {
|
|
200
|
+
mkdirSync(result.destDir, { recursive: true });
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if (!existsSync(AGENTS_SRC_DIR)) {
|
|
204
|
+
result.errors.push(`Skill agents src dir missing: ${AGENTS_SRC_DIR}`);
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const agentFiles = readdirSync(AGENTS_SRC_DIR).filter((f) => f.endsWith(".md"));
|
|
209
|
+
|
|
210
|
+
for (const fname of agentFiles) {
|
|
211
|
+
const src = join(AGENTS_SRC_DIR, fname);
|
|
212
|
+
const dest = join(result.destDir, fname);
|
|
213
|
+
const entry: InstallEntry = { agentName: basename(fname, ".md"), src, dest, action: "installed" };
|
|
214
|
+
|
|
215
|
+
if (existsSync(dest)) {
|
|
216
|
+
const stat = lstatSync(dest);
|
|
217
|
+
if (stat.isSymbolicLink()) {
|
|
218
|
+
const literal = readlinkSync(dest);
|
|
219
|
+
// Compare CANONICAL paths — the existing symlink may point at a different
|
|
220
|
+
// representation (e.g. ~/.claude/skills/...) that realpath-resolves to
|
|
221
|
+
// the same place as our src (which may go through a worktree chain).
|
|
222
|
+
let canonicalDest: string | null = null;
|
|
223
|
+
try { canonicalDest = realpathSync(dest); } catch { /* dangling */ }
|
|
224
|
+
const canonicalSrc = realpathSync(src);
|
|
225
|
+
if (canonicalDest === canonicalSrc) {
|
|
226
|
+
entry.action = "ok";
|
|
227
|
+
entry.note = `Symlink resolves to the correct skill source (literal target: ${literal}).`;
|
|
228
|
+
result.entries.push(entry);
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
if (!force) {
|
|
232
|
+
entry.action = "skipped";
|
|
233
|
+
entry.note = `Existing symlink resolves elsewhere (${canonicalDest ?? "<dangling>"}). Re-run with --force to replace.`;
|
|
234
|
+
result.entries.push(entry);
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
unlinkSync(dest);
|
|
238
|
+
entry.action = "replaced";
|
|
239
|
+
} else {
|
|
240
|
+
if (!force) {
|
|
241
|
+
entry.action = "skipped";
|
|
242
|
+
entry.note = `Destination exists and is NOT a symlink. Re-run with --force to replace.`;
|
|
243
|
+
result.entries.push(entry);
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
unlinkSync(dest);
|
|
247
|
+
entry.action = "replaced";
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
try {
|
|
252
|
+
symlinkSync(src, dest);
|
|
253
|
+
result.entries.push(entry);
|
|
254
|
+
result.needsSessionRestart = true;
|
|
255
|
+
} catch (err) {
|
|
256
|
+
result.errors.push(`Failed to symlink ${dest} → ${src}: ${err instanceof Error ? err.message : String(err)}`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// CLI entrypoint
|
|
264
|
+
if (import.meta.main) {
|
|
265
|
+
const args = process.argv.slice(2);
|
|
266
|
+
|
|
267
|
+
// ── Transcode-only mode (Phase 3-E) ──────────────────────────────────────
|
|
268
|
+
// Usage: install-agents.ts --transcode-only --to <platform> <input.md> <output.toml>
|
|
269
|
+
if (args.includes("--transcode-only")) {
|
|
270
|
+
// Resolve --to platform (supports both "--to codex" and "--to=codex")
|
|
271
|
+
let platform: string | undefined;
|
|
272
|
+
const toEqIdx = args.findIndex((a) => a.startsWith("--to="));
|
|
273
|
+
const toSpaceIdx = args.indexOf("--to");
|
|
274
|
+
if (toEqIdx !== -1) {
|
|
275
|
+
platform = args[toEqIdx]!.split("=")[1];
|
|
276
|
+
} else if (toSpaceIdx !== -1) {
|
|
277
|
+
platform = args[toSpaceIdx + 1];
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (!platform || platform !== "codex") {
|
|
281
|
+
process.stderr.write(
|
|
282
|
+
`[install-agents] --transcode-only requires --to codex (only 'codex' is supported)\n`
|
|
283
|
+
);
|
|
284
|
+
process.exit(1);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Collect positional args — skip flag tokens and the platform value following "--to"
|
|
288
|
+
const toConsumesNext = toSpaceIdx !== -1; // "--to codex" form consumes next token
|
|
289
|
+
const skipSet = new Set<number>();
|
|
290
|
+
if (toConsumesNext) {
|
|
291
|
+
skipSet.add(toSpaceIdx);
|
|
292
|
+
skipSet.add(toSpaceIdx + 1);
|
|
293
|
+
}
|
|
294
|
+
const positional: string[] = [];
|
|
295
|
+
for (let i = 0; i < args.length; i++) {
|
|
296
|
+
if (skipSet.has(i)) continue;
|
|
297
|
+
const a = args[i]!;
|
|
298
|
+
if (!a.startsWith("--")) positional.push(a);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const inputPath = positional[0];
|
|
302
|
+
const outputPath = positional[1];
|
|
303
|
+
|
|
304
|
+
if (!inputPath || !outputPath) {
|
|
305
|
+
process.stderr.write(
|
|
306
|
+
`[install-agents] --transcode-only usage: install-agents.ts --transcode-only --to codex <input.md> <output.toml>\n`
|
|
307
|
+
);
|
|
308
|
+
process.exit(1);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (!existsSync(inputPath)) {
|
|
312
|
+
process.stderr.write(`[install-agents] Input file not found: ${inputPath}\n`);
|
|
313
|
+
process.exit(1);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
try {
|
|
317
|
+
transcodeAgentFile(inputPath, outputPath, "codex");
|
|
318
|
+
process.stderr.write(`[install-agents] Transcoded ${inputPath} → ${outputPath} (codex TOML)\n`);
|
|
319
|
+
process.exit(0);
|
|
320
|
+
} catch (err) {
|
|
321
|
+
process.stderr.write(
|
|
322
|
+
`[install-agents] Transcode failed: ${err instanceof Error ? err.message : String(err)}\n`
|
|
323
|
+
);
|
|
324
|
+
process.exit(1);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// ── Standard install mode ─────────────────────────────────────────────────
|
|
329
|
+
const positional = args.filter((a) => !a.startsWith("--"));
|
|
330
|
+
const projectRoot = positional[0] ?? process.cwd();
|
|
331
|
+
const scopeArg = args.find((a) => a.startsWith("--scope="));
|
|
332
|
+
const scope: InstallScope = scopeArg?.split("=")[1] === "user" ? "user" : "project";
|
|
333
|
+
const force = args.includes("--force");
|
|
334
|
+
|
|
335
|
+
const result = installAgents(projectRoot, scope, force);
|
|
336
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
337
|
+
|
|
338
|
+
// Human summary on stderr (won't pollute JSON pipes)
|
|
339
|
+
if (result.errors.length === 0) {
|
|
340
|
+
const installed = result.entries.filter((e) => e.action === "installed" || e.action === "replaced");
|
|
341
|
+
const ok = result.entries.filter((e) => e.action === "ok");
|
|
342
|
+
const skipped = result.entries.filter((e) => e.action === "skipped");
|
|
343
|
+
process.stderr.write(`\n[install-agents] ${result.scope} scope → ${result.destDir}\n`);
|
|
344
|
+
process.stderr.write(` ${installed.length} installed, ${ok.length} already-ok, ${skipped.length} skipped\n`);
|
|
345
|
+
if (result.needsSessionRestart) {
|
|
346
|
+
process.stderr.write(`\n⚠ Restart your Claude Code session — the agent-type registry caches at boot.\n`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
process.exit(result.errors.length > 0 ? 1 : 0);
|
|
350
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# scripts/cli/run.sh — bun→pnpm→npm fallback selector + .sh dispatch (iter-7 T11, R-014-A)
|
|
3
|
+
# Usage: scripts/cli/run.sh <script-path.{ts|sh}> [args...]
|
|
4
|
+
# scripts/cli/run.sh --selftest
|
|
5
|
+
#
|
|
6
|
+
# This wrapper provides consistent script invocation across operator environments.
|
|
7
|
+
# All agent Bash() calls to TypeScript OR shell scripts MUST go through this wrapper:
|
|
8
|
+
# Bash("scripts/cli/run.sh scripts/tier0-scan.ts ...")
|
|
9
|
+
# Bash("scripts/cli/run.sh scripts/normalize/read-unitf.ts --in <traces.jsonl> ...")
|
|
10
|
+
#
|
|
11
|
+
# Platform matrix — which tier fires when:
|
|
12
|
+
# Tier 1 (bun) : bun is on PATH (local dev, mutagent CI, most operator installs)
|
|
13
|
+
# Tier 2 (pnpm-tsx) : bun absent, pnpm on PATH (corporate Node setups, pnpm-only CIs)
|
|
14
|
+
# Tier 3 (npx-tsx) : bun + pnpm absent, npx on PATH (vanilla Node, GitHub Actions default)
|
|
15
|
+
# Tier 4 (error) : none of the above — exits 1 with install guidance
|
|
16
|
+
# .sh scripts bypass all tiers and run directly via bash regardless of PATH state.
|
|
17
|
+
|
|
18
|
+
set -e
|
|
19
|
+
|
|
20
|
+
SCRIPT="$1"
|
|
21
|
+
|
|
22
|
+
# --selftest: print selected runtime and exit 0 (portability probe — R-PT-3)
|
|
23
|
+
if [ "$SCRIPT" = "--selftest" ]; then
|
|
24
|
+
if command -v bun >/dev/null 2>&1; then
|
|
25
|
+
echo "run.sh selftest: tier=1 runtime=bun version=$(bun --version 2>/dev/null || echo unknown)"
|
|
26
|
+
elif command -v pnpm >/dev/null 2>&1; then
|
|
27
|
+
echo "run.sh selftest: tier=2 runtime=pnpm-tsx version=$(pnpm --version 2>/dev/null || echo unknown)"
|
|
28
|
+
elif command -v npx >/dev/null 2>&1; then
|
|
29
|
+
echo "run.sh selftest: tier=3 runtime=npx-tsx version=$(node --version 2>/dev/null || echo unknown)"
|
|
30
|
+
else
|
|
31
|
+
echo "run.sh selftest: tier=4 runtime=none (install bun: curl -fsSL https://bun.sh/install | bash)"
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
exit 0
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
shift
|
|
38
|
+
|
|
39
|
+
if [ -z "$SCRIPT" ]; then
|
|
40
|
+
echo "ERROR: no script path provided" >&2
|
|
41
|
+
echo "Usage: run.sh <script.{ts|sh}> [args...]" >&2
|
|
42
|
+
echo " run.sh --selftest" >&2
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# .sh files: execute directly via bash (no TS runtime needed — R-014-A)
|
|
47
|
+
case "$SCRIPT" in
|
|
48
|
+
*.sh) exec bash "$SCRIPT" "$@" ;;
|
|
49
|
+
esac
|
|
50
|
+
|
|
51
|
+
if command -v bun >/dev/null 2>&1; then
|
|
52
|
+
exec bun run "$SCRIPT" "$@"
|
|
53
|
+
elif command -v pnpm >/dev/null 2>&1; then
|
|
54
|
+
exec pnpm exec tsx "$SCRIPT" "$@"
|
|
55
|
+
elif command -v npx >/dev/null 2>&1; then
|
|
56
|
+
exec npx tsx "$SCRIPT" "$@"
|
|
57
|
+
else
|
|
58
|
+
echo "ERROR: mutagent-diagnostics requires bun, pnpm, or npm/npx to run TypeScript scripts" >&2
|
|
59
|
+
echo "Install bun: curl -fsSL https://bun.sh/install | bash" >&2
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/shared-templates.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/cli/shared-templates.ts
|
|
3
|
+
*
|
|
4
|
+
* Offline resolver for the BUNDLED shared install-time templates.
|
|
5
|
+
*
|
|
6
|
+
* These templates (self-diagnosis-contract, spec.yaml, team.yaml, iter-handover,
|
|
7
|
+
* wave-dashboard) were historically peer-installed from `@mutagent/templates`.
|
|
8
|
+
* For the npm public release of `@mutagent/diagnostics` they are bundled directly
|
|
9
|
+
* into the skill tree at `<skill-root>/assets/templates/shared/`, so the package
|
|
10
|
+
* is fully self-contained — `init` works offline with NO dependency on
|
|
11
|
+
* `@mutagent/templates`.
|
|
12
|
+
*
|
|
13
|
+
* Resolution mirrors `report/render.ts::defaultTemplatePath()`: resolve relative
|
|
14
|
+
* to this script's own directory so it is CWD-independent. From `scripts/cli/`
|
|
15
|
+
* the skill root is two levels up, then `assets/templates/shared`.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { existsSync, readdirSync } from "fs";
|
|
19
|
+
import { dirname, join } from "path";
|
|
20
|
+
|
|
21
|
+
/** Canonical bundled-shared-templates filenames (provenance: @mutagent/templates). */
|
|
22
|
+
export const SHARED_TEMPLATE_FILES = [
|
|
23
|
+
"self-diagnosis-contract.v0.1.0.yaml.tpl",
|
|
24
|
+
"spec.yaml.tpl",
|
|
25
|
+
"team.yaml.tpl",
|
|
26
|
+
"iter-N-handover.md.tpl",
|
|
27
|
+
"wave-N-dashboard.html.tpl",
|
|
28
|
+
] as const;
|
|
29
|
+
|
|
30
|
+
export type SharedTemplateFile = (typeof SHARED_TEMPLATE_FILES)[number];
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Resolve this script's directory in both Bun and Node, with no `import.meta.url`
|
|
34
|
+
* fallback surprises (mirrors the pattern used across the skill's CLI scripts).
|
|
35
|
+
*/
|
|
36
|
+
function scriptDir(): string {
|
|
37
|
+
return (
|
|
38
|
+
import.meta.dirname ??
|
|
39
|
+
dirname(import.meta.url.replace(/^file:\/\//, ""))
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Absolute path to the bundled shared-templates directory:
|
|
45
|
+
* `<skill-root>/assets/templates/shared`.
|
|
46
|
+
*
|
|
47
|
+
* From `scripts/cli/` the skill root is `../..`.
|
|
48
|
+
*/
|
|
49
|
+
export function sharedTemplatesDir(): string {
|
|
50
|
+
return join(scriptDir(), "..", "..", "assets", "templates", "shared");
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Absolute path to a single bundled shared template by filename.
|
|
55
|
+
* Does NOT assert existence — callers that need a hard guarantee should use
|
|
56
|
+
* `assertSharedTemplatesPresent()` first (the prepublish guard does).
|
|
57
|
+
*/
|
|
58
|
+
export function sharedTemplatePath(file: SharedTemplateFile): string {
|
|
59
|
+
return join(sharedTemplatesDir(), file);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* True only if the bundled shared-templates directory exists AND contains every
|
|
64
|
+
* canonical template file. Used by the prepublish guard to prove the package is
|
|
65
|
+
* self-contained before it ships.
|
|
66
|
+
*/
|
|
67
|
+
export function assertSharedTemplatesPresent(): {
|
|
68
|
+
ok: boolean;
|
|
69
|
+
dir: string;
|
|
70
|
+
missing: string[];
|
|
71
|
+
} {
|
|
72
|
+
const dir = sharedTemplatesDir();
|
|
73
|
+
if (!existsSync(dir)) {
|
|
74
|
+
return { ok: false, dir, missing: [...SHARED_TEMPLATE_FILES] };
|
|
75
|
+
}
|
|
76
|
+
const present = new Set(readdirSync(dir));
|
|
77
|
+
const missing = SHARED_TEMPLATE_FILES.filter((f) => !present.has(f));
|
|
78
|
+
return { ok: missing.length === 0, dir, missing };
|
|
79
|
+
}
|