@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,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/slicer.ts
|
|
3
|
+
* Dynamic-cluster and window-based trace slicer — PR-017
|
|
4
|
+
* Type A — Pure Script (deterministic math + cap-of-5 clustering)
|
|
5
|
+
*
|
|
6
|
+
* Reads a Tier0Report + TraceMetadata list, emits a slice plan (array of slices,
|
|
7
|
+
* each being a list of traceIds for one analyzer to process).
|
|
8
|
+
*
|
|
9
|
+
* Usage: bun scripts/slicer.ts <tier0-report.json> <traces-metadata.json> [--cap N]
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { readFileSync } from "fs";
|
|
13
|
+
import type { TraceMetadata } from "./normalize/trace.ts";
|
|
14
|
+
import type { Tier0Report } from "./tier0-scan.ts";
|
|
15
|
+
|
|
16
|
+
export interface SlicePlan {
|
|
17
|
+
totalSlices: number;
|
|
18
|
+
slices: TraceSlice[];
|
|
19
|
+
/** Why this slicing strategy was chosen */
|
|
20
|
+
rationale: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface TraceSlice {
|
|
24
|
+
sliceId: string;
|
|
25
|
+
strategy: "dynamic-cluster" | "window-based";
|
|
26
|
+
/** Cluster label for dynamic-cluster slices */
|
|
27
|
+
clusterLabel?: string;
|
|
28
|
+
traceIds: string[];
|
|
29
|
+
/** Scope context passed to the analyzer */
|
|
30
|
+
scope: {
|
|
31
|
+
hasError: boolean;
|
|
32
|
+
hasFeedback: boolean;
|
|
33
|
+
isPrimarySignal: boolean;
|
|
34
|
+
estimatedComplexity: "low" | "medium" | "high";
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const DEFAULT_CAP = 5;
|
|
39
|
+
|
|
40
|
+
export function computeSlicePlan(
|
|
41
|
+
tier0: Tier0Report,
|
|
42
|
+
traces: TraceMetadata[],
|
|
43
|
+
cap = DEFAULT_CAP
|
|
44
|
+
): SlicePlan {
|
|
45
|
+
if (traces.length === 0) {
|
|
46
|
+
return {
|
|
47
|
+
totalSlices: 0,
|
|
48
|
+
slices: [],
|
|
49
|
+
rationale: "No traces to analyze.",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (tier0.recommendedSlicing === "dynamic-cluster") {
|
|
54
|
+
return dynamicClusterSlice(tier0, traces, cap);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return windowBasedSlice(traces, cap);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function dynamicClusterSlice(
|
|
61
|
+
tier0: Tier0Report,
|
|
62
|
+
traces: TraceMetadata[],
|
|
63
|
+
cap: number
|
|
64
|
+
): SlicePlan {
|
|
65
|
+
const clusters: Map<string, TraceMetadata[]> = new Map();
|
|
66
|
+
|
|
67
|
+
// Cluster 1: errors
|
|
68
|
+
const errors = traces.filter((t) => t.hasError);
|
|
69
|
+
if (errors.length > 0) clusters.set("errors", errors);
|
|
70
|
+
|
|
71
|
+
// Cluster 2: low-score + feedback
|
|
72
|
+
const scoredNegative = traces.filter(
|
|
73
|
+
(t) =>
|
|
74
|
+
t.hasFeedback ||
|
|
75
|
+
(t.normalizedScore !== undefined && t.normalizedScore <= 0.4)
|
|
76
|
+
);
|
|
77
|
+
if (scoredNegative.length > 0) clusters.set("negative-feedback", scoredNegative);
|
|
78
|
+
|
|
79
|
+
// Cluster 3: high-latency (not already in errors)
|
|
80
|
+
const highLatency = traces.filter(
|
|
81
|
+
(t) => !t.hasError && t.latencyMs !== undefined && t.latencyMs > 10_000
|
|
82
|
+
);
|
|
83
|
+
if (highLatency.length > 0) clusters.set("high-latency", highLatency);
|
|
84
|
+
|
|
85
|
+
// Fill remaining slots with unclustered traces
|
|
86
|
+
const clusteredIds = new Set([...clusters.values()].flatMap((ts) => ts.map((t) => t.traceId)));
|
|
87
|
+
const unclustered = traces.filter((t) => !clusteredIds.has(t.traceId));
|
|
88
|
+
if (unclustered.length > 0 && clusters.size < cap) {
|
|
89
|
+
clusters.set("remaining", unclustered);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const slices: TraceSlice[] = [...clusters.entries()]
|
|
93
|
+
.slice(0, cap)
|
|
94
|
+
.map(([label, ts], i) => ({
|
|
95
|
+
sliceId: `slice-${i + 1}`,
|
|
96
|
+
strategy: "dynamic-cluster" as const,
|
|
97
|
+
clusterLabel: label,
|
|
98
|
+
traceIds: ts.map((t) => t.traceId),
|
|
99
|
+
scope: {
|
|
100
|
+
hasError: ts.some((t) => t.hasError),
|
|
101
|
+
hasFeedback: ts.some((t) => t.hasFeedback),
|
|
102
|
+
isPrimarySignal: label === "negative-feedback" || label === "errors",
|
|
103
|
+
estimatedComplexity:
|
|
104
|
+
ts.length > 20 ? "high" : ts.length > 5 ? "medium" : "low",
|
|
105
|
+
},
|
|
106
|
+
}));
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
totalSlices: slices.length,
|
|
110
|
+
slices,
|
|
111
|
+
rationale: `Dynamic-cluster slicing: ${slices.length} cluster(s) from ${traces.length} traces. Clusters: ${slices.map((s) => s.clusterLabel).join(", ")}.`,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function windowBasedSlice(traces: TraceMetadata[], cap: number): SlicePlan {
|
|
116
|
+
const windowSize = Math.ceil(traces.length / cap);
|
|
117
|
+
const slices: TraceSlice[] = [];
|
|
118
|
+
|
|
119
|
+
for (let i = 0; i < cap && i * windowSize < traces.length; i++) {
|
|
120
|
+
const window = traces.slice(i * windowSize, (i + 1) * windowSize);
|
|
121
|
+
slices.push({
|
|
122
|
+
sliceId: `slice-${i + 1}`,
|
|
123
|
+
strategy: "window-based",
|
|
124
|
+
traceIds: window.map((t) => t.traceId),
|
|
125
|
+
scope: {
|
|
126
|
+
hasError: window.some((t) => t.hasError),
|
|
127
|
+
hasFeedback: window.some((t) => t.hasFeedback),
|
|
128
|
+
isPrimarySignal: false,
|
|
129
|
+
estimatedComplexity:
|
|
130
|
+
window.length > 20 ? "high" : window.length > 5 ? "medium" : "low",
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return {
|
|
136
|
+
totalSlices: slices.length,
|
|
137
|
+
slices,
|
|
138
|
+
rationale: `Window-based slicing (no a-priori signal): ${slices.length} window(s) of ~${windowSize} traces each.`,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// CLI entrypoint
|
|
143
|
+
if (import.meta.main) {
|
|
144
|
+
const tier0Path = process.argv[2];
|
|
145
|
+
const tracesPath = process.argv[3];
|
|
146
|
+
const capArg = process.argv.indexOf("--cap");
|
|
147
|
+
const cap = capArg >= 0 ? parseInt(process.argv[capArg + 1] ?? "5", 10) : DEFAULT_CAP;
|
|
148
|
+
|
|
149
|
+
if (!tier0Path || !tracesPath) {
|
|
150
|
+
process.stderr.write(
|
|
151
|
+
"Usage: bun scripts/slicer.ts <tier0-report.json> <traces-metadata.json> [--cap N]\n"
|
|
152
|
+
);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
const tier0: Tier0Report = JSON.parse(readFileSync(tier0Path, "utf8"));
|
|
158
|
+
const traces: TraceMetadata[] = JSON.parse(readFileSync(tracesPath, "utf8"));
|
|
159
|
+
const plan = computeSlicePlan(tier0, traces, cap);
|
|
160
|
+
process.stdout.write(JSON.stringify(plan, null, 2) + "\n");
|
|
161
|
+
process.exit(0);
|
|
162
|
+
} catch (err) {
|
|
163
|
+
process.stderr.write(`Error: ${err}\n`);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SourceAdapterId } from "../types.ts";
|
|
2
|
+
import type { SourceAdapter } from "../types.ts";
|
|
3
|
+
|
|
4
|
+
// Claude Code source adapter. The bespoke Tier-0 scanner (v0.3 apiErrors /
|
|
5
|
+
// compactionEvents / teammate-ratio patterns) lives in tier0/claude-code.ts and
|
|
6
|
+
// is loaded LAZILY — mirroring the pre-registry dynamic import. runClaudeCodeTier0
|
|
7
|
+
// takes no config, so the `config` param of the Tier0Scan signature is omitted here
|
|
8
|
+
// (TypeScript permits an implementation with fewer params than its type).
|
|
9
|
+
export const claudeCodeSourceAdapter: SourceAdapter = {
|
|
10
|
+
id: SourceAdapterId.ClaudeCode,
|
|
11
|
+
label: "Claude Code",
|
|
12
|
+
live: true,
|
|
13
|
+
async tier0Scan(traces) {
|
|
14
|
+
const mod = await import("../../tier0/claude-code.ts");
|
|
15
|
+
return mod.runClaudeCodeTier0(traces);
|
|
16
|
+
},
|
|
17
|
+
};
|
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/codex.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SourceAdapterId } from "../types.ts";
|
|
2
|
+
import type { SourceAdapter } from "../types.ts";
|
|
3
|
+
|
|
4
|
+
// Codex source adapter — Codex session transcripts. No bespoke Tier-0 scanner;
|
|
5
|
+
// uses the generic scan (omitting `tier0Scan`), unchanged from the pre-registry
|
|
6
|
+
// fallback path (Codex never had a per-platform Tier-0 branch).
|
|
7
|
+
export const codexSourceAdapter: SourceAdapter = {
|
|
8
|
+
id: SourceAdapterId.Codex,
|
|
9
|
+
label: "Codex",
|
|
10
|
+
live: true,
|
|
11
|
+
};
|
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/langfuse.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SourceAdapterId } from "../types.ts";
|
|
2
|
+
import type { SourceAdapter } from "../types.ts";
|
|
3
|
+
|
|
4
|
+
// Langfuse source adapter. The bespoke Tier-0 scanner (LF-001 low-score
|
|
5
|
+
// concentration + config-honoring IQR latency fence) lives in tier0/langfuse.ts;
|
|
6
|
+
// it is loaded LAZILY here — exactly as the pre-registry `dispatchPlatformTier0`
|
|
7
|
+
// did — so (a) registering the adapter set is cheap and (b) there is no eval-time
|
|
8
|
+
// import cycle (tier0/langfuse.ts imports iqrUpperFence from tier0-scan.ts).
|
|
9
|
+
export const langfuseSourceAdapter: SourceAdapter = {
|
|
10
|
+
id: SourceAdapterId.Langfuse,
|
|
11
|
+
label: "Langfuse",
|
|
12
|
+
live: true,
|
|
13
|
+
async tier0Scan(traces, config) {
|
|
14
|
+
const mod = await import("../../tier0/langfuse.ts");
|
|
15
|
+
return mod.runLangfuseTier0(traces, config);
|
|
16
|
+
},
|
|
17
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SourceAdapterId } from "../types.ts";
|
|
2
|
+
import type { SourceAdapter } from "../types.ts";
|
|
3
|
+
|
|
4
|
+
// Local-JSONL source adapter — the UniTF handover format read directly off disk
|
|
5
|
+
// (no per-platform fetch/normalize; see normalize/read-unitf.ts). No bespoke
|
|
6
|
+
// Tier-0 scanner — uses the generic scan (omitting `tier0Scan`), unchanged from
|
|
7
|
+
// the pre-registry fallback path.
|
|
8
|
+
export const localJsonlSourceAdapter: SourceAdapter = {
|
|
9
|
+
id: SourceAdapterId.LocalJsonl,
|
|
10
|
+
label: "Local JSONL (UniTF)",
|
|
11
|
+
live: true,
|
|
12
|
+
};
|
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/otel.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SourceAdapterId } from "../types.ts";
|
|
2
|
+
import type { SourceAdapter } from "../types.ts";
|
|
3
|
+
|
|
4
|
+
// OpenTelemetry source adapter (also the transport for OpenObserve, ingested via
|
|
5
|
+
// the UniTF/local-jsonl handover). No bespoke Tier-0 scanner — OTel batches use
|
|
6
|
+
// the generic scan (omitting `tier0Scan` selects the generic path), preserving
|
|
7
|
+
// the exact pre-registry behavior where only langfuse/claude-code had a branch.
|
|
8
|
+
export const otelSourceAdapter: SourceAdapter = {
|
|
9
|
+
id: SourceAdapterId.Otel,
|
|
10
|
+
label: "OpenTelemetry",
|
|
11
|
+
live: true,
|
|
12
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { registerSourceAdapter, clearSourceAdapters } from "./registry.ts";
|
|
2
|
+
import { langfuseSourceAdapter } from "./adapters/langfuse.ts";
|
|
3
|
+
import { otelSourceAdapter } from "./adapters/otel.ts";
|
|
4
|
+
import { localJsonlSourceAdapter } from "./adapters/local-jsonl.ts";
|
|
5
|
+
import { claudeCodeSourceAdapter } from "./adapters/claude-code.ts";
|
|
6
|
+
import { codexSourceAdapter } from "./adapters/codex.ts";
|
|
7
|
+
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Source-adapter registration entry point (mirrors apply/index.ts
|
|
10
|
+
// registerBuiltinAdapters). The five shipped sources register declaratively
|
|
11
|
+
// here; adding a source = drop an adapter file + one line below (+ the
|
|
12
|
+
// SourcePlatform literal in normalize/trace.ts & config/schema.ts). No consumer
|
|
13
|
+
// switch to edit — see references/source-adapter-contract.md.
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
/** Register the shipped source adapters (idempotent — clears then registers). */
|
|
17
|
+
export function registerBuiltinSourceAdapters(): void {
|
|
18
|
+
clearSourceAdapters();
|
|
19
|
+
registerSourceAdapter(langfuseSourceAdapter);
|
|
20
|
+
registerSourceAdapter(otelSourceAdapter);
|
|
21
|
+
registerSourceAdapter(localJsonlSourceAdapter);
|
|
22
|
+
registerSourceAdapter(claudeCodeSourceAdapter);
|
|
23
|
+
registerSourceAdapter(codexSourceAdapter);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let _builtinsRegistered = false;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Ensure the shipped adapters are registered EXACTLY once. Library callers (e.g.
|
|
30
|
+
* tier0-scan's platform-aware dispatch) invoke this instead of
|
|
31
|
+
* registerBuiltinSourceAdapters so a caller-registered custom/fake adapter is not
|
|
32
|
+
* clobbered on every scan. Tests reset via clearSourceAdapters() +
|
|
33
|
+
* resetBuiltinSourceAdaptersForTest().
|
|
34
|
+
*/
|
|
35
|
+
export function ensureBuiltinSourceAdapters(): void {
|
|
36
|
+
if (_builtinsRegistered) return;
|
|
37
|
+
registerBuiltinSourceAdapters();
|
|
38
|
+
_builtinsRegistered = true;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Test seam — reset the ensure-once latch so a suite can re-exercise registration. */
|
|
42
|
+
export function resetBuiltinSourceAdaptersForTest(): void {
|
|
43
|
+
_builtinsRegistered = false;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export type { SourceAdapter, SourceAdapterIdValue } from "./types.ts";
|
|
47
|
+
export { SourceAdapterId } from "./types.ts";
|
|
48
|
+
export {
|
|
49
|
+
registerSourceAdapter,
|
|
50
|
+
getSourceAdapter,
|
|
51
|
+
tryGetSourceAdapter,
|
|
52
|
+
listSourceAdapters,
|
|
53
|
+
clearSourceAdapters,
|
|
54
|
+
} from "./registry.ts";
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SourceAdapter, SourceAdapterIdValue } from "./types.ts";
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Source-adapter registry (mirrors the apply-layer target-adapter registry in
|
|
5
|
+
// @mutagent/tools src/apply/registry.ts). Adapters self-register via ./index.ts
|
|
6
|
+
// (imported once). Kept tiny so the registration graph is obvious.
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
const REGISTRY = new Map<SourceAdapterIdValue, SourceAdapter>();
|
|
10
|
+
|
|
11
|
+
export function registerSourceAdapter(adapter: SourceAdapter): void {
|
|
12
|
+
REGISTRY.set(adapter.id, adapter);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Resolve an adapter, THROWING a clear error (with the registered set) when the
|
|
17
|
+
* source is unknown. Use this for the strict binding path where an unregistered
|
|
18
|
+
* `source.platform` is a hard error.
|
|
19
|
+
*/
|
|
20
|
+
export function getSourceAdapter(id: SourceAdapterIdValue): SourceAdapter {
|
|
21
|
+
const a = REGISTRY.get(id);
|
|
22
|
+
if (!a) {
|
|
23
|
+
const known = [...REGISTRY.keys()].sort().join(", ") || "(none registered)";
|
|
24
|
+
throw new Error(`no source adapter registered for id '${id}'. Registered: ${known}.`);
|
|
25
|
+
}
|
|
26
|
+
return a;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Resolve an adapter, or `undefined` when unknown. Use this for the tolerant
|
|
31
|
+
* dispatch path (tier0-scan) that must FALL BACK to the generic scan for an
|
|
32
|
+
* unregistered / mixed-platform batch rather than throw.
|
|
33
|
+
*/
|
|
34
|
+
export function tryGetSourceAdapter(id: SourceAdapterIdValue): SourceAdapter | undefined {
|
|
35
|
+
return REGISTRY.get(id);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function listSourceAdapters(): SourceAdapter[] {
|
|
39
|
+
return [...REGISTRY.values()].sort((a, b) => a.id.localeCompare(b.id));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Test/reset seam. */
|
|
43
|
+
export function clearSourceAdapters(): void {
|
|
44
|
+
REGISTRY.clear();
|
|
45
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// mutagent-diagnostics source layer — the SHARED read-side transport (the
|
|
3
|
+
// symmetric twin of the write-side `TargetAdapter` in @mutagent/tools
|
|
4
|
+
// src/apply). One `SourceAdapter` interface, N adapters; the `source.platform`
|
|
5
|
+
// config field binds to an adapter id (see ./registry.ts getSourceAdapter).
|
|
6
|
+
//
|
|
7
|
+
// BEFORE this layer the per-platform read path was ad-hoc: tier0-scan.ts held a
|
|
8
|
+
// hard-coded `if (platform === "langfuse") … if (platform === "claude-code") …`
|
|
9
|
+
// dispatch with inline dynamic imports. A new trace source could not register
|
|
10
|
+
// declaratively — you edited the switch. This layer replaces that switch with a
|
|
11
|
+
// registry, mirroring the apply layer exactly:
|
|
12
|
+
//
|
|
13
|
+
// apply (write side) source (read side)
|
|
14
|
+
// ────────────────── ──────────────────
|
|
15
|
+
// AdapterId (const) ⇄ SourceAdapterId (const)
|
|
16
|
+
// TargetAdapter (interface) ⇄ SourceAdapter (interface)
|
|
17
|
+
// registerTargetAdapter ⇄ registerSourceAdapter
|
|
18
|
+
// getTargetAdapter (throws) ⇄ getSourceAdapter (throws)
|
|
19
|
+
// listTargetAdapters ⇄ listSourceAdapters
|
|
20
|
+
// clearTargetAdapters ⇄ clearSourceAdapters
|
|
21
|
+
// registerBuiltinAdapters ⇄ registerBuiltinSourceAdapters
|
|
22
|
+
// apply.kind → adapterIdForKind ⇄ source.platform → id (1:1, identity)
|
|
23
|
+
//
|
|
24
|
+
// Asymmetry (intentional): the apply layer needs a binding.ts because `apply.kind`
|
|
25
|
+
// (4 config values) maps NON-1:1 onto adapter ids (code-pr AND markdown → worktree-pr;
|
|
26
|
+
// cloud-deploy → rest OR vendor). On the read side `source.platform` → adapter id is
|
|
27
|
+
// 1:1 (the id IS the platform literal), so no binding module is warranted — the
|
|
28
|
+
// registry key IS the platform. See references/source-adapter-contract.md.
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
|
|
31
|
+
import type { SourcePlatform, TraceMetadata } from "../normalize/trace.ts";
|
|
32
|
+
import type { Tier0Report, Tier0ScanConfig } from "../tier0-scan.ts";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The source transports — `source.platform` binds directly to one of these ids
|
|
36
|
+
* (1:1). Mirrors `AdapterId` in the apply layer. Declared as a const object (not
|
|
37
|
+
* a bare union) so callers can reference `SourceAdapterId.Langfuse` symbolically
|
|
38
|
+
* and so `listSourceAdapters()` / tests can enumerate the shipped set.
|
|
39
|
+
*/
|
|
40
|
+
export const SourceAdapterId = {
|
|
41
|
+
/** Langfuse traces — explicit score + feedback + latency signals as first-class fields. */
|
|
42
|
+
Langfuse: "langfuse",
|
|
43
|
+
/** OpenTelemetry spans (incl. OpenObserve, ingested via the UniTF/local-jsonl handover). */
|
|
44
|
+
Otel: "otel",
|
|
45
|
+
/** Local JSONL export (the UniTF handover format) — read directly, no per-platform fetch. */
|
|
46
|
+
LocalJsonl: "local-jsonl",
|
|
47
|
+
/** Claude Code session transcripts — v0.3 apiErrors / compactionEvents extensions. */
|
|
48
|
+
ClaudeCode: "claude-code",
|
|
49
|
+
/** Codex session transcripts. */
|
|
50
|
+
Codex: "codex",
|
|
51
|
+
} as const;
|
|
52
|
+
|
|
53
|
+
/** An adapter id === a `SourcePlatform` literal (the read-side ids are 1:1 with platforms). */
|
|
54
|
+
export type SourceAdapterIdValue = SourcePlatform;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Optional per-platform Tier-0 enrichment capability. When an adapter provides
|
|
58
|
+
* this, `runTier0ScanPlatformAware` dispatches a homogeneous batch here for signal
|
|
59
|
+
* extraction tuned to the source's signal density (e.g. Langfuse LF-001 low-score
|
|
60
|
+
* concentration, Claude-Code compaction clusters). When ABSENT, the generic
|
|
61
|
+
* `runTier0Scan` runs — identical to the pre-registry fallback for otel /
|
|
62
|
+
* local-jsonl / codex. Implementations should lazily `import()` their heavy scan
|
|
63
|
+
* module (as the pre-registry dispatch did) so registration stays cheap + cycle-free.
|
|
64
|
+
*/
|
|
65
|
+
// eslint-disable-next-line no-unused-vars -- fn-type-alias param names (pkg convention, see setup/ensure-cli.ts)
|
|
66
|
+
export type Tier0ScanFn = (traces: TraceMetadata[], config: Tier0ScanConfig) => Tier0Report | Promise<Tier0Report>;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The contract every source adapter implements — the read-side twin of
|
|
70
|
+
* `TargetAdapter`. Adapters self-register through the registry (./index.ts).
|
|
71
|
+
*/
|
|
72
|
+
export interface SourceAdapter {
|
|
73
|
+
/** The source platform this adapter serves — binds to config `source.platform`. */
|
|
74
|
+
id: SourceAdapterIdValue;
|
|
75
|
+
/** Human-readable label (onboarding pickers / diagnostics). */
|
|
76
|
+
label: string;
|
|
77
|
+
/** false for a SEAM stub (a source declared but not yet live); true when shipped. */
|
|
78
|
+
live: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Optional per-platform Tier-0 scan. Present for platforms with a bespoke scanner
|
|
81
|
+
* (langfuse, claude-code); absent for platforms that use the generic scan (otel,
|
|
82
|
+
* local-jsonl, codex). Absence is a first-class, behavior-defining value — it
|
|
83
|
+
* selects the generic path, NOT an error.
|
|
84
|
+
*/
|
|
85
|
+
tier0Scan?: Tier0ScanFn;
|
|
86
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/stale-detector.ts
|
|
3
|
+
* Hash comparison for target freshness check — PR-011
|
|
4
|
+
* Type A — Pure Script (pure hash compare, no I/O side effects)
|
|
5
|
+
*
|
|
6
|
+
* Before any apply, the orchestrator calls this script to check if the target
|
|
7
|
+
* has changed since the diagnostic was run.
|
|
8
|
+
*
|
|
9
|
+
* Usage: bun scripts/stale-detector.ts <diagnosed-at-hash> <current-hash>
|
|
10
|
+
* Exit 0 = fresh (hashes match), Exit 1 = stale (hashes differ), Exit 2 = error
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { createHash } from "crypto";
|
|
14
|
+
import { readFileSync, existsSync } from "fs";
|
|
15
|
+
|
|
16
|
+
export interface StalenessResult {
|
|
17
|
+
stale: boolean;
|
|
18
|
+
diagnosedAtHash: string;
|
|
19
|
+
currentHash: string;
|
|
20
|
+
reason?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Compare two content hashes.
|
|
25
|
+
* Returns stale=true if they differ.
|
|
26
|
+
*/
|
|
27
|
+
export function checkStaleness(
|
|
28
|
+
diagnosedAtHash: string,
|
|
29
|
+
currentHash: string
|
|
30
|
+
): StalenessResult {
|
|
31
|
+
const stale = diagnosedAtHash !== currentHash;
|
|
32
|
+
return {
|
|
33
|
+
stale,
|
|
34
|
+
diagnosedAtHash,
|
|
35
|
+
currentHash,
|
|
36
|
+
reason: stale
|
|
37
|
+
? "Target has changed since diagnostic was run. Re-diagnose recommended."
|
|
38
|
+
: undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Compute SHA-256 hash of a file's content.
|
|
44
|
+
* Returns null if file doesn't exist.
|
|
45
|
+
*/
|
|
46
|
+
export function hashFile(filePath: string): string | null {
|
|
47
|
+
if (!existsSync(filePath)) return null;
|
|
48
|
+
const content = readFileSync(filePath);
|
|
49
|
+
return createHash("sha256").update(content).digest("hex");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Compute SHA-256 hash of a string value.
|
|
54
|
+
*/
|
|
55
|
+
export function hashString(value: string): string {
|
|
56
|
+
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// CLI entrypoint
|
|
60
|
+
if (import.meta.main) {
|
|
61
|
+
const diagnosedAtHash = process.argv[2];
|
|
62
|
+
const currentHash = process.argv[3];
|
|
63
|
+
|
|
64
|
+
if (!diagnosedAtHash || !currentHash) {
|
|
65
|
+
process.stderr.write(
|
|
66
|
+
"Usage: bun scripts/stale-detector.ts <diagnosed-at-hash> <current-hash>\n"
|
|
67
|
+
);
|
|
68
|
+
process.exit(2);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const result = checkStaleness(diagnosedAtHash, currentHash);
|
|
72
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
73
|
+
process.exit(result.stale ? 1 : 0);
|
|
74
|
+
}
|