@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,641 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/config/schema.ts
|
|
3
|
+
* TypeBox schema for the `lifecycle.diagnostics:` section of the unified
|
|
4
|
+
* `.mutagent/config.yaml` (v0.2.0) + the PORTED `global.sources[]` / `global.targets[]`
|
|
5
|
+
* catalog entries the diagnostics skill binds BY ROLE.
|
|
6
|
+
*
|
|
7
|
+
* v0.2.0 config-shape break (plan PHASE 1 · Fork B hard-cut):
|
|
8
|
+
* - `source` / `target` are NO LONGER in this section — the diagnostics skill
|
|
9
|
+
* binds a `global.sources[]` (by the source-consumer role) + a `global.targets[]`
|
|
10
|
+
* (by the target-writer role). `GlobalSourceSchema` / `GlobalTargetSchema` below
|
|
11
|
+
* are BYTE-PARITY ports of the orchestrator's `SourceSchema` / `TargetSchema`
|
|
12
|
+
* (mutagent-orchestrator/scripts/config-schema.ts) — never cross-imported
|
|
13
|
+
* (standalone + symbiosis invariant; parity is asserted by config.parity.test.ts).
|
|
14
|
+
* - `schedule` / `trigger_rules` / `heartbeat` moved OUT to the top-level
|
|
15
|
+
* `triggers.<stage>` block (orchestrator-owned) — removed here.
|
|
16
|
+
* - `credential_ref` is WIDENED to `string | { env, path? }` (mirrors
|
|
17
|
+
* resolve-credential.ts `CredentialRef`).
|
|
18
|
+
*
|
|
19
|
+
* credential_ref values resolve via resolve-credential.ts (env → .env → .mutagentrc);
|
|
20
|
+
* raw secrets never live here.
|
|
21
|
+
* Type A — Pure Script (deterministic schema definition)
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { Type } from "@sinclair/typebox";
|
|
25
|
+
import type { Static } from "@sinclair/typebox";
|
|
26
|
+
|
|
27
|
+
// ── Credential ref (widened v0.2.0) ──────────────────────────────────────────
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* A credential REFERENCE — an ENV-VAR NAME (string) or an object that also pins an
|
|
31
|
+
* explicit file to read first (`{ env, path? }`). NEVER a raw secret value.
|
|
32
|
+
* PARITY: mirrors resolve-credential.ts `CredentialRef` AND the orchestrator's
|
|
33
|
+
* `CredentialRefSchema` (mutagent-orchestrator/scripts/config-schema.ts). Ported,
|
|
34
|
+
* not imported (standalone invariant).
|
|
35
|
+
*/
|
|
36
|
+
export const CredentialRefSchema = Type.Union([
|
|
37
|
+
Type.String({ minLength: 1 }),
|
|
38
|
+
Type.Object(
|
|
39
|
+
{
|
|
40
|
+
env: Type.String({ minLength: 1 }),
|
|
41
|
+
path: Type.Optional(Type.String({ minLength: 1 })),
|
|
42
|
+
},
|
|
43
|
+
{ additionalProperties: false },
|
|
44
|
+
),
|
|
45
|
+
]);
|
|
46
|
+
export type CredentialRefValue = Static<typeof CredentialRefSchema>;
|
|
47
|
+
|
|
48
|
+
// ── Source platform ──────────────────────────────────────────────────────────
|
|
49
|
+
|
|
50
|
+
export const SourcePlatformSchema = Type.Union([
|
|
51
|
+
Type.Literal("langfuse"),
|
|
52
|
+
Type.Literal("otel"),
|
|
53
|
+
Type.Literal("local-jsonl"),
|
|
54
|
+
Type.Literal("claude-code"),
|
|
55
|
+
Type.Literal("codex"),
|
|
56
|
+
]);
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* PRD-SO-03: Enum-constrained format values (Q9 — yes, enum-constrain).
|
|
60
|
+
* Used by source.format to hint the normalizer which shape to expect.
|
|
61
|
+
*
|
|
62
|
+
* CONSUMER: scripts/normalize/*.ts (per-platform normalizer dispatch) — the format
|
|
63
|
+
* picks the record-shape parser. PURPOSE: tell the intake which on-disk shape the
|
|
64
|
+
* `paths[]` files carry so the right parser runs (or, for `unitf`, is SKIPPED).
|
|
65
|
+
*
|
|
66
|
+
* F1 (plan FEATURE 1 · Fork A) — `"unitf"`: the file is ALREADY conformant UniTF
|
|
67
|
+
* JSONL (emitted by the eval-run `captureUniTF` wrap for bare code agents). The
|
|
68
|
+
* read side SKIPS per-platform normalization and reads the JSONL directly — no
|
|
69
|
+
* shape translation. Typically paired with `platform: local-jsonl` + `paths:[…]`.
|
|
70
|
+
* PARITY: byte-identical to the orchestrator's `SourceFormat` enum (parity.test.ts
|
|
71
|
+
* asserts the literal set; the `"unitf"` add lands in both ports at once).
|
|
72
|
+
*/
|
|
73
|
+
export const SourceFormatSchema = Type.Union([
|
|
74
|
+
Type.Literal("langfuse-export"),
|
|
75
|
+
Type.Literal("claude-code"),
|
|
76
|
+
Type.Literal("codex"),
|
|
77
|
+
Type.Literal("raw"),
|
|
78
|
+
Type.Literal("unitf"),
|
|
79
|
+
]);
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* PARITY-PORT of the orchestrator's `SourceSchema` (mutagent-orchestrator/
|
|
83
|
+
* scripts/config-schema.ts). One `global.sources[]` catalog entry — where traces
|
|
84
|
+
* live. Bound BY ROLE (source-consumers evaluate/diagnose bind `global.sources`);
|
|
85
|
+
* a single entry auto-binds, multiple ⇒ disambiguation deferred (NOT a hard fail).
|
|
86
|
+
*
|
|
87
|
+
* v0.2.0: `name` is the catalog id (referenced by role) — NEW vs the old inline
|
|
88
|
+
* `source`. `credential_ref` is the widened `CredentialRefSchema`. Field set +
|
|
89
|
+
* enum values + optionality are byte-identical to the orchestrator's (config.parity.test.ts).
|
|
90
|
+
* Closed object (`additionalProperties:false`) — mirrors the orchestrator.
|
|
91
|
+
*
|
|
92
|
+
* SELECTION (parity with orchestrator + evaluator): `default?: boolean` disambiguates
|
|
93
|
+
* a multi-entry catalog WITHOUT an interactive prompt — exactly one `default: true`
|
|
94
|
+
* auto-binds; >1 default is a config error (`multiple-defaults`); 0 default with >1
|
|
95
|
+
* entry defers to a run-start ASK (`needs-selection`). See `selectByRole` in load.ts.
|
|
96
|
+
*/
|
|
97
|
+
export const GlobalSourceSchema = Type.Object(
|
|
98
|
+
{
|
|
99
|
+
/** CONSUMER: load.ts `selectByRole` (role binding) + Step 1.5 ASK. PURPOSE: the
|
|
100
|
+
* catalog id an operator picks/`--source`-names + the label shown in the run-start
|
|
101
|
+
* ASK. Required — the join key for the whole selection contract. */
|
|
102
|
+
name: Type.String({ minLength: 1 }),
|
|
103
|
+
/** CONSUMER: scripts/normalize/* + the Helix pre-stage `mutagent-cli trace fetch`.
|
|
104
|
+
* PURPOSE: which trace back-end this source reads from (closed enum) — selects the
|
|
105
|
+
* fetch adapter + normalizer. Required. */
|
|
106
|
+
platform: SourcePlatformSchema,
|
|
107
|
+
/** CONSUMER: `mutagent-cli trace fetch` (Langfuse/OTel project scoping). PURPOSE:
|
|
108
|
+
* the platform-side project/workspace id that narrows the trace query. */
|
|
109
|
+
project: Type.Optional(Type.String({ minLength: 1 })),
|
|
110
|
+
/** CONSUMER: `mutagent-cli trace fetch` (self-hosted back-ends). PURPOSE: override
|
|
111
|
+
* the platform's default API host (e.g. a self-hosted Langfuse/OTel collector). */
|
|
112
|
+
endpoint: Type.Optional(Type.String({ minLength: 1 })),
|
|
113
|
+
/** CONSUMER: resolve-credential.ts (env → .env → .mutagentrc). PURPOSE: the ENV-VAR
|
|
114
|
+
* NAME (or `{env,path}`) for the platform's read auth — NEVER a raw secret. */
|
|
115
|
+
credential_ref: Type.Optional(CredentialRefSchema),
|
|
116
|
+
/** CONSUMER: the read side for `platform: local-jsonl` (+ `format:"unitf"`).
|
|
117
|
+
* PURPOSE: glob(s) of on-disk JSONL trace files to read directly (no API fetch). */
|
|
118
|
+
paths: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),
|
|
119
|
+
/** CONSUMER: scripts/normalize/* dispatch. PURPOSE: on-disk record shape hint —
|
|
120
|
+
* picks the parser, or `"unitf"` ⇒ skip normalize (F1). See SourceFormatSchema. */
|
|
121
|
+
format: Type.Optional(SourceFormatSchema),
|
|
122
|
+
/** CONSUMER: normalize/trace.ts (agent-id extraction). PURPOSE: override the JSON
|
|
123
|
+
* field the normalizer reads the agent identifier from when it is non-standard. */
|
|
124
|
+
agent_field: Type.Optional(Type.String({ minLength: 1 })),
|
|
125
|
+
/** CONSUMER: normalize/trace.ts (latency canonicalization). PURPOSE: how to read raw
|
|
126
|
+
* duration values — `auto` infers, `ms`/`s` force the unit. */
|
|
127
|
+
latency_unit: Type.Optional(
|
|
128
|
+
Type.Union([Type.Literal("auto"), Type.Literal("ms"), Type.Literal("s")]),
|
|
129
|
+
),
|
|
130
|
+
/** CONSUMER: load.ts `selectByRole` (F2). PURPOSE: preselect THIS entry when >1
|
|
131
|
+
* source exists — Step 1.5 then CONFIRMs it (`resolved-default`) rather than asking
|
|
132
|
+
* which. Exactly one `default:true` allowed; >1 is a config error. */
|
|
133
|
+
default: Type.Optional(Type.Boolean()),
|
|
134
|
+
},
|
|
135
|
+
{ additionalProperties: false },
|
|
136
|
+
);
|
|
137
|
+
export type GlobalSource = Static<typeof GlobalSourceSchema>;
|
|
138
|
+
|
|
139
|
+
// ── Target platform ──────────────────────────────────────────────────────────
|
|
140
|
+
|
|
141
|
+
export const TargetPlatformSchema = Type.Union([
|
|
142
|
+
Type.Literal("local-claude"),
|
|
143
|
+
Type.Literal("local-codex"),
|
|
144
|
+
Type.Literal("local-cursor"),
|
|
145
|
+
Type.Literal("local-opencode"),
|
|
146
|
+
Type.Literal("local-mastra"),
|
|
147
|
+
Type.Literal("local-cloud-agent-sdk"),
|
|
148
|
+
Type.Literal("cloud-rest"),
|
|
149
|
+
/**
|
|
150
|
+
* PRD-SO-04: report-only target — produce the HTML report but skip the apply gate
|
|
151
|
+
* (Step 11 AskUserQuestion is hard-skipped; runMeta.applySkipped is populated).
|
|
152
|
+
* Use for read-only environments, audits, or when you want a report without committing
|
|
153
|
+
* to any agent-definition changes.
|
|
154
|
+
*/
|
|
155
|
+
Type.Literal("report-only"),
|
|
156
|
+
]);
|
|
157
|
+
|
|
158
|
+
export const TargetModeSchema = Type.Union([
|
|
159
|
+
Type.Literal("local"),
|
|
160
|
+
Type.Literal("remote"),
|
|
161
|
+
]);
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* HOW a fix is applied for a target. `kind` gates the report-only branch.
|
|
165
|
+
* PARITY-PORT of the orchestrator's `ApplyKind` enum + `ApplySchema`.
|
|
166
|
+
*/
|
|
167
|
+
export const ApplyKindSchema = Type.Union([
|
|
168
|
+
Type.Literal("code-pr"),
|
|
169
|
+
Type.Literal("markdown"),
|
|
170
|
+
Type.Literal("cloud-deploy"),
|
|
171
|
+
Type.Literal("report-only"),
|
|
172
|
+
]);
|
|
173
|
+
|
|
174
|
+
export const ApplySchema = Type.Object(
|
|
175
|
+
{
|
|
176
|
+
/** CONSUMER: orchestrator apply gate + DiagnosticsConfig.apply (report-only branch).
|
|
177
|
+
* PURPOSE: HOW a fix lands for this target — `report-only` hard-skips the apply gate;
|
|
178
|
+
* the others route to the matching apply worker. Required. */
|
|
179
|
+
kind: ApplyKindSchema,
|
|
180
|
+
/** RESERVED — consumed by Build/Improve (future). PURPOSE: whether the apply worker
|
|
181
|
+
* stamps a version bump on the changed target. Not read by diagnostics today. */
|
|
182
|
+
versioning: Type.Optional(Type.Boolean()),
|
|
183
|
+
/** RESERVED — consumed by Build/Improve (future). PURPOSE: whether the apply worker
|
|
184
|
+
* opens a PR (vs a direct write) for the fix. Not read by diagnostics today. */
|
|
185
|
+
pr: Type.Optional(Type.Boolean()),
|
|
186
|
+
},
|
|
187
|
+
{ additionalProperties: false },
|
|
188
|
+
);
|
|
189
|
+
export type Apply = Static<typeof ApplySchema>;
|
|
190
|
+
|
|
191
|
+
/** A precise link to an Agent / Tooling definition file in a code target. */
|
|
192
|
+
export const CodeRefSchema = Type.Object(
|
|
193
|
+
{
|
|
194
|
+
path: Type.String({ minLength: 1 }),
|
|
195
|
+
why: Type.String({ minLength: 1 }),
|
|
196
|
+
},
|
|
197
|
+
{ additionalProperties: false },
|
|
198
|
+
);
|
|
199
|
+
export type CodeRef = Static<typeof CodeRefSchema>;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* PARITY-PORT of the orchestrator's `TargetSchema` (mutagent-orchestrator/
|
|
203
|
+
* scripts/config-schema.ts). One `global.targets[]` catalog entry — where agent
|
|
204
|
+
* defs live + how a fix is applied. Bound BY ROLE (target-writers build/
|
|
205
|
+
* diagnose-apply bind `global.targets`); a single entry auto-binds, multiple ⇒
|
|
206
|
+
* disambiguation deferred.
|
|
207
|
+
*
|
|
208
|
+
* v0.2.0: `name` catalog id, `apply` block (required), `repo_url` + `code_refs`
|
|
209
|
+
* are NEW vs the old inline `target`. Field set + enum values + optionality are
|
|
210
|
+
* byte-identical to the orchestrator's (config.parity.test.ts). Closed object.
|
|
211
|
+
*
|
|
212
|
+
* SELECTION (parity with orchestrator + evaluator): `default?: boolean` disambiguates
|
|
213
|
+
* a multi-entry catalog WITHOUT an interactive prompt — same precedence as the source
|
|
214
|
+
* (exactly-one-default ⇒ bound; >1 ⇒ `multiple-defaults`; 0 ⇒ `needs-selection`).
|
|
215
|
+
*/
|
|
216
|
+
export const GlobalTargetSchema = Type.Object(
|
|
217
|
+
{
|
|
218
|
+
/** CONSUMER: load.ts `selectByRole` (role binding) + Step 1.5 ASK. PURPOSE: the
|
|
219
|
+
* catalog id an operator picks/`--target`-names + the label shown in the ASK.
|
|
220
|
+
* Required — the selection-contract join key. */
|
|
221
|
+
name: Type.String({ minLength: 1 }),
|
|
222
|
+
/** CONSUMER: the diagnostics apply worker (dispatch by platform). PURPOSE: WHERE the
|
|
223
|
+
* fix is written (local coding-agent md · code construct · cloud REST · report-only
|
|
224
|
+
* sink). Closed enum. Required. */
|
|
225
|
+
platform: TargetPlatformSchema,
|
|
226
|
+
/** CONSUMER: apply worker (local vs remote path). PURPOSE: `local` writes files in a
|
|
227
|
+
* worktree; `remote` does a REST read-before-write PUT. Required. */
|
|
228
|
+
mode: TargetModeSchema,
|
|
229
|
+
/** CONSUMER: local-mode apply worker. PURPOSE: filesystem root the fix writes under
|
|
230
|
+
* (e.g. `.claude/agents/`). Required-when `mode: local`. */
|
|
231
|
+
root: Type.Optional(Type.String({ minLength: 1 })),
|
|
232
|
+
/** CONSUMER: remote-mode apply worker. PURPOSE: base URL for the cloud REST apply
|
|
233
|
+
* endpoint. Required-when `mode: remote`. */
|
|
234
|
+
rest_base_url: Type.Optional(Type.String({ minLength: 1 })),
|
|
235
|
+
/** CONSUMER: the apply worker's PR opener (local code targets). PURPOSE: the git
|
|
236
|
+
* remote the fix PR is opened against. */
|
|
237
|
+
repo_url: Type.Optional(Type.String({ minLength: 1 })),
|
|
238
|
+
/** RESERVED — consumed by Build/Improve (future). PURPOSE: precise links to the
|
|
239
|
+
* Agent/Tooling definition files a fix should amend. Not read by diagnostics today
|
|
240
|
+
* (F4 `.mutagent/index.md` will source realized impl paths from here). */
|
|
241
|
+
code_refs: Type.Optional(Type.Array(CodeRefSchema)),
|
|
242
|
+
/** CONSUMER: resolve-credential.ts (remote targets). PURPOSE: ENV-VAR NAME (or
|
|
243
|
+
* `{env,path}`) for the target's write auth — NEVER a raw secret. */
|
|
244
|
+
credential_ref: Type.Optional(CredentialRefSchema),
|
|
245
|
+
/** CONSUMER: orchestrator apply gate. PURPOSE: HOW the fix lands (see ApplySchema);
|
|
246
|
+
* `kind: report-only` skips the gate. Required. */
|
|
247
|
+
apply: ApplySchema,
|
|
248
|
+
/** CONSUMER: load.ts `selectByRole` (F2). PURPOSE: preselect THIS entry when >1
|
|
249
|
+
* target exists — Step 1.5 CONFIRMs it (`resolved-default`) rather than asking which.
|
|
250
|
+
* Exactly one `default:true` allowed; >1 is a config error. */
|
|
251
|
+
default: Type.Optional(Type.Boolean()),
|
|
252
|
+
},
|
|
253
|
+
{ additionalProperties: false },
|
|
254
|
+
);
|
|
255
|
+
export type GlobalTarget = Static<typeof GlobalTargetSchema>;
|
|
256
|
+
|
|
257
|
+
// ── Context links (PHASE 4) ──────────────────────────────────────────────────
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* PARITY-PORT of the orchestrator's `ContextLinkSchema`. A supplementary context
|
|
261
|
+
* link with WHAT / WHY / WHEN — all four fields REQUIRED (a link with no rationale
|
|
262
|
+
* is noise). Loaded at run start: `global.context[]` (every run) +
|
|
263
|
+
* `lifecycle.diagnostics.context[]` (diagnose runs) — see scripts/context/load-context.ts.
|
|
264
|
+
*/
|
|
265
|
+
export const ContextLinkSchema = Type.Object(
|
|
266
|
+
{
|
|
267
|
+
path: Type.String({ minLength: 1 }),
|
|
268
|
+
what: Type.String({ minLength: 1 }),
|
|
269
|
+
why: Type.String({ minLength: 1 }),
|
|
270
|
+
when: Type.String({ minLength: 1 }),
|
|
271
|
+
},
|
|
272
|
+
{ additionalProperties: false },
|
|
273
|
+
);
|
|
274
|
+
export type ContextLink = Static<typeof ContextLinkSchema>;
|
|
275
|
+
|
|
276
|
+
// ── ASK tool ────────────────────────────────────────────────────────────────
|
|
277
|
+
|
|
278
|
+
export const AskRuntimeSchema = Type.Union([
|
|
279
|
+
Type.Literal("claude-code"),
|
|
280
|
+
Type.Literal("codex"),
|
|
281
|
+
Type.Literal("cursor"),
|
|
282
|
+
Type.Literal("opencode"),
|
|
283
|
+
Type.Literal("generic"),
|
|
284
|
+
]);
|
|
285
|
+
|
|
286
|
+
export const AskToolConfigSchema = Type.Object({
|
|
287
|
+
/** Detected coding-agent runtime (auto-detected by cli/init.ts) */
|
|
288
|
+
runtime: AskRuntimeSchema,
|
|
289
|
+
/** Platform-specific tool name (AskUserQuestion on Claude Code) */
|
|
290
|
+
native_tool: Type.Optional(Type.String({ default: "AskUserQuestion" })),
|
|
291
|
+
/** Fallback when native tool unavailable */
|
|
292
|
+
fallback: Type.Optional(
|
|
293
|
+
Type.Literal("chat-multi-choice", { default: "chat-multi-choice" })
|
|
294
|
+
),
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
// ── Trace filter ─────────────────────────────────────────────────────────────
|
|
298
|
+
//
|
|
299
|
+
// NOTE (v0.2.0): `schedule` / `trigger_rules` / `heartbeat` are REMOVED from the
|
|
300
|
+
// diagnostics section — the (future) monitor now lives under the top-level
|
|
301
|
+
// `triggers.<stage>` block (orchestrator-owned; see mutagent-orchestrator/
|
|
302
|
+
// scripts/config-schema.ts `TriggerStageBlockSchema`). `TraceFilterSchema` STAYS:
|
|
303
|
+
// it types trace-scoping filters consumed at run time (I-013 skill_agent_scope,
|
|
304
|
+
// referenced by normalize/trace.ts), independent of the removed trigger machinery.
|
|
305
|
+
|
|
306
|
+
export const TraceFilterSchema = Type.Object({
|
|
307
|
+
agent_id: Type.Optional(Type.String()),
|
|
308
|
+
session_id: Type.Optional(Type.String()),
|
|
309
|
+
start_time: Type.Optional(Type.String()),
|
|
310
|
+
end_time: Type.Optional(Type.String()),
|
|
311
|
+
has_error: Type.Optional(Type.Boolean()),
|
|
312
|
+
has_feedback: Type.Optional(Type.Boolean()),
|
|
313
|
+
score_below: Type.Optional(Type.Number()),
|
|
314
|
+
latency_p99_ms_above: Type.Optional(Type.Number()),
|
|
315
|
+
by_skill: Type.Optional(Type.String()),
|
|
316
|
+
by_route: Type.Optional(Type.String()),
|
|
317
|
+
by_tag: Type.Optional(Type.Array(Type.String())),
|
|
318
|
+
/**
|
|
319
|
+
* I-013: Restrict diagnostic analysis to traces from these agent IDs.
|
|
320
|
+
* Empty array or absent = no filter (all agents included).
|
|
321
|
+
* Typical use: set to the skill's own agent IDs for self-diagnostics scoping.
|
|
322
|
+
* snake_case to match existing TraceFilterSchema field convention (agent_id, by_skill, by_tag).
|
|
323
|
+
*/
|
|
324
|
+
skill_agent_scope: Type.Optional(Type.Array(Type.String())),
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
// ── Self-diagnostics [INTERNAL] ──────────────────────────────────────────────
|
|
328
|
+
|
|
329
|
+
export const SelfDiagnosticsCadenceSchema = Type.Union([
|
|
330
|
+
Type.Literal("per-session"),
|
|
331
|
+
Type.Literal("daily"),
|
|
332
|
+
Type.Literal("manual"),
|
|
333
|
+
]);
|
|
334
|
+
|
|
335
|
+
export const SelfDiagnosticsConfigSchema = Type.Object({
|
|
336
|
+
/**
|
|
337
|
+
* OFF by default for end users.
|
|
338
|
+
* ON for skill maintainers + dogfood mode.
|
|
339
|
+
* [INTERNAL] — when enabled, feeds own session transcript through RCA pipeline (PR-022)
|
|
340
|
+
*/
|
|
341
|
+
enabled: Type.Optional(Type.Boolean({ default: false })),
|
|
342
|
+
/** How often to self-diagnose */
|
|
343
|
+
cadence: Type.Optional(SelfDiagnosticsCadenceSchema),
|
|
344
|
+
/** Auto-detect host coding agent for transcript path */
|
|
345
|
+
source: Type.Optional(Type.String({ default: "host-coding-agent" })),
|
|
346
|
+
/** Branch name for self-remedy PRs (template: use {date} placeholder) */
|
|
347
|
+
remedy_branch: Type.Optional(
|
|
348
|
+
Type.String({ default: "mutagent/self-diagnostics/{date}" })
|
|
349
|
+
),
|
|
350
|
+
/** [INTERNAL] prefix added to all self-remedy PR titles */
|
|
351
|
+
marker: Type.Optional(Type.String({ default: "[INTERNAL]" })),
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
// ── Feedback sources (Phase-2 self-diag opt-in) ─────────────────────────────
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* PRD-SO-02 + Phase-2 self-diag: opt-in config for auto-collecting feedback sources.
|
|
358
|
+
* When enabled, the skill collects operator feedback from configured sources (chat
|
|
359
|
+
* transcripts, Langfuse trace scores, external platform) and surfaces it in findings
|
|
360
|
+
* as feedbackSources[] blocks (D5).
|
|
361
|
+
*
|
|
362
|
+
* Opt-in via config.feedback_sources.enabled: true (Q11 — opt-in, not always-on).
|
|
363
|
+
* Each sub-source has its own enabled flag for granular control.
|
|
364
|
+
*/
|
|
365
|
+
export const FeedbackSourcesConfigSchema = Type.Object({
|
|
366
|
+
/**
|
|
367
|
+
* Master switch. OFF by default. When true, the skill collects feedback from all
|
|
368
|
+
* enabled sub-sources and injects FeedbackSource[] into each finding before render.
|
|
369
|
+
*/
|
|
370
|
+
enabled: Type.Optional(Type.Boolean({ default: false })),
|
|
371
|
+
/**
|
|
372
|
+
* Chat source: search recent Claude Code / coding-agent session transcripts
|
|
373
|
+
* (~/.claude/projects/<encoded>/*.jsonl) for operator messages mentioning the entity.
|
|
374
|
+
*/
|
|
375
|
+
chat: Type.Optional(
|
|
376
|
+
Type.Object({
|
|
377
|
+
enabled: Type.Optional(Type.Boolean({ default: true })),
|
|
378
|
+
/**
|
|
379
|
+
* How many most-recent session files to scan. Default 10. Higher values cost
|
|
380
|
+
* more I/O but catch older feedback.
|
|
381
|
+
*/
|
|
382
|
+
max_sessions: Type.Optional(Type.Number({ default: 10 })),
|
|
383
|
+
})
|
|
384
|
+
),
|
|
385
|
+
/**
|
|
386
|
+
* Langfuse trace-score source: fetch trace scores with comments matching the entity.
|
|
387
|
+
* Only active when source.platform = "langfuse".
|
|
388
|
+
*/
|
|
389
|
+
trace_score: Type.Optional(
|
|
390
|
+
Type.Object({
|
|
391
|
+
enabled: Type.Optional(Type.Boolean({ default: true })),
|
|
392
|
+
/**
|
|
393
|
+
* Minimum score value to include (inclusive). Absent = include all scores.
|
|
394
|
+
* Use to filter out non-feedback scores (e.g., numeric quality scores without comments).
|
|
395
|
+
*/
|
|
396
|
+
min_score: Type.Optional(Type.Number()),
|
|
397
|
+
})
|
|
398
|
+
),
|
|
399
|
+
/**
|
|
400
|
+
* External feedback platform source: REST endpoint returning FeedbackSource[].
|
|
401
|
+
* Optional — only active when endpoint is set.
|
|
402
|
+
*/
|
|
403
|
+
external: Type.Optional(
|
|
404
|
+
Type.Object({
|
|
405
|
+
enabled: Type.Optional(Type.Boolean({ default: false })),
|
|
406
|
+
/** REST endpoint URL returning FeedbackSource[] JSON for the entity. */
|
|
407
|
+
endpoint: Type.Optional(Type.String()),
|
|
408
|
+
/** Env-var NAME for the external platform's auth, resolved via env → .env → .mutagentrc (never store value here). */
|
|
409
|
+
credential_ref: Type.Optional(Type.String()),
|
|
410
|
+
})
|
|
411
|
+
),
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
export type FeedbackSourcesConfig = Static<typeof FeedbackSourcesConfigSchema>;
|
|
415
|
+
|
|
416
|
+
// ── Run metadata (v0.3 run-tagging) ─────────────────────────────────────────
|
|
417
|
+
|
|
418
|
+
export const RunMetaSchema = Type.Object({
|
|
419
|
+
runId: Type.String(),
|
|
420
|
+
/** Tags applied to this specific run (from config.run_tags + any --tag CLI args) */
|
|
421
|
+
tags: Type.Array(Type.String()),
|
|
422
|
+
startedAt: Type.String(),
|
|
423
|
+
endedAt: Type.Optional(Type.String()),
|
|
424
|
+
/** Platform that provided traces for this run */
|
|
425
|
+
source: Type.Optional(Type.String()),
|
|
426
|
+
/** Target platform for this run's remedies */
|
|
427
|
+
target: Type.Optional(Type.String()),
|
|
428
|
+
/** Number of traces analyzed in this run */
|
|
429
|
+
traceCount: Type.Optional(Type.Number()),
|
|
430
|
+
/**
|
|
431
|
+
* Wave-6 D2: the VERBATIM operator invocation brief that initiated this run.
|
|
432
|
+
* Persisted even when parsing succeeds (re-parse later + library authenticity).
|
|
433
|
+
* Optional (backward-compat — absent on runs not started via the slash command).
|
|
434
|
+
*/
|
|
435
|
+
operatorInvocation: Type.Optional(Type.String()),
|
|
436
|
+
/**
|
|
437
|
+
* V3-2: the EFFECTIVE awareness deep-read sample size this run used (the number
|
|
438
|
+
* of traces the awareness layer deep-read). Persisted so a LATER `--run-id`
|
|
439
|
+
* cascade can scale its first-pass seed with THIS run's depth
|
|
440
|
+
* (first-pass N = min(originalSampleN, AWARENESS_SAMPLE_DEFAULT); see
|
|
441
|
+
* awareness/llm-sample.ts:recoverOriginalSampleN + cascadeFirstPassSize).
|
|
442
|
+
* Optional (backward-compat — absent on legacy runs; recovery falls back to
|
|
443
|
+
* AWARENESS_SAMPLE_DEFAULT when unset, never to the legacy discovery size).
|
|
444
|
+
*/
|
|
445
|
+
awarenessSampleSize: Type.Optional(Type.Number()),
|
|
446
|
+
});
|
|
447
|
+
|
|
448
|
+
export type RunMeta = Static<typeof RunMetaSchema>;
|
|
449
|
+
|
|
450
|
+
// ── Default audience (W13-D operator directive) ──────────────────────────────
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* W13-D: the audience a render pass uses when NO explicit `--audience` flag is
|
|
454
|
+
* given. Two values:
|
|
455
|
+
* "client" — the client-stripped report (internal nodes NODE-STRIPPED).
|
|
456
|
+
* "internal" — the full report (Methodology + Trajectory + internal banners).
|
|
457
|
+
*
|
|
458
|
+
* Operator directive: a published / client install should produce the
|
|
459
|
+
* client-stripped report BY DEFAULT; internal is opt-in. So `init` writes
|
|
460
|
+
* `default_audience: client` and the schema default is also "client".
|
|
461
|
+
*
|
|
462
|
+
* This NEVER overrides the PR-022 self-diag invariant: an `isMetaReport`
|
|
463
|
+
* (self-diagnosis) render is ALWAYS internal regardless of this field — the
|
|
464
|
+
* renderer hard-refuses `audience:client` on a meta report.
|
|
465
|
+
*/
|
|
466
|
+
export const DefaultAudienceSchema = Type.Union(
|
|
467
|
+
[Type.Literal("client"), Type.Literal("internal")],
|
|
468
|
+
{ default: "client" }
|
|
469
|
+
);
|
|
470
|
+
|
|
471
|
+
export type DefaultAudience = Static<typeof DefaultAudienceSchema>;
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* W13-D: the schema-level default audience. Single source of truth for "what does
|
|
475
|
+
* a fresh install render as when nobody says otherwise" → "client" (operator
|
|
476
|
+
* directive). `init` writes this value; the resolver below falls back to it.
|
|
477
|
+
*/
|
|
478
|
+
export const DEFAULT_AUDIENCE: DefaultAudience = "client";
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* W13-D: deterministically resolve the effective render audience.
|
|
482
|
+
*
|
|
483
|
+
* Precedence (highest first):
|
|
484
|
+
* 1. explicit `--audience` flag (operator override at render time)
|
|
485
|
+
* 2. config.default_audience (the fresh-init default — "client")
|
|
486
|
+
* 3. DEFAULT_AUDIENCE (schema fallback — "client")
|
|
487
|
+
*
|
|
488
|
+
* PR-022 INVARIANT (non-negotiable): a self-diagnosis render (isMetaReport)
|
|
489
|
+
* is ALWAYS "internal" — it overrides every other input. Self-diag is never
|
|
490
|
+
* client. This mirrors the renderer's hard-refuse so the orchestrator never
|
|
491
|
+
* even builds an `--audience client` invocation for a meta report.
|
|
492
|
+
*
|
|
493
|
+
* Pure + deterministic — no clock, no I/O. The orchestrator calls this to decide
|
|
494
|
+
* the `--audience` value it threads into the Step-9 render command.
|
|
495
|
+
*
|
|
496
|
+
* @param opts.explicitFlag the operator's `--audience` value, if any.
|
|
497
|
+
* @param opts.configDefault config.default_audience, if present.
|
|
498
|
+
* @param opts.isMetaReport true for a self-diagnosis render (PR-022).
|
|
499
|
+
*/
|
|
500
|
+
export function resolveEffectiveAudience(opts: {
|
|
501
|
+
explicitFlag?: DefaultAudience;
|
|
502
|
+
configDefault?: DefaultAudience;
|
|
503
|
+
isMetaReport?: boolean;
|
|
504
|
+
}): DefaultAudience {
|
|
505
|
+
// PR-022: self-diag is ALWAYS internal — overrides flag + config.
|
|
506
|
+
if (opts.isMetaReport) return "internal";
|
|
507
|
+
if (opts.explicitFlag === "client" || opts.explicitFlag === "internal") {
|
|
508
|
+
return opts.explicitFlag;
|
|
509
|
+
}
|
|
510
|
+
if (opts.configDefault === "client" || opts.configDefault === "internal") {
|
|
511
|
+
return opts.configDefault;
|
|
512
|
+
}
|
|
513
|
+
return DEFAULT_AUDIENCE;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
// ── Root config ──────────────────────────────────────────────────────────────
|
|
517
|
+
|
|
518
|
+
// ── Agent identity map (W11-07) ─────────────────────────────────────────────
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* W11-07: Per-platform observability identity for a named agent.
|
|
522
|
+
* Each entry tells the skill HOW to find this agent's traces on each supported
|
|
523
|
+
* observability platform (Langfuse trace.name / tags, OTel service.name / attrs).
|
|
524
|
+
*
|
|
525
|
+
* This is the CROSS-PLATFORM JOIN KEY: one code-level agent may appear as
|
|
526
|
+
* different identifiers in different tracing back-ends.
|
|
527
|
+
*
|
|
528
|
+
* Example config.yaml entry:
|
|
529
|
+
* agents:
|
|
530
|
+
* - name: search-agent
|
|
531
|
+
* langfuse:
|
|
532
|
+
* traceName: "search-agent-v2"
|
|
533
|
+
* tags: ["production", "search"]
|
|
534
|
+
* agentIdField: "metadata.agent_id"
|
|
535
|
+
* otel:
|
|
536
|
+
* serviceName: "search-svc"
|
|
537
|
+
* resourceAttrs: { "deployment.env": "prod" }
|
|
538
|
+
*/
|
|
539
|
+
export const AgentPlatformLangfuseSchema = Type.Object({
|
|
540
|
+
/** Langfuse trace.name value for this agent. */
|
|
541
|
+
traceName: Type.Optional(Type.String()),
|
|
542
|
+
/** Langfuse tags that identify this agent's traces. */
|
|
543
|
+
tags: Type.Optional(Type.Array(Type.String())),
|
|
544
|
+
/** Override the JSON field used to extract agentId from raw Langfuse records. */
|
|
545
|
+
agentIdField: Type.Optional(Type.String()),
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
export const AgentPlatformOtelSchema = Type.Object({
|
|
549
|
+
/** OpenTelemetry service.name resource attribute value. */
|
|
550
|
+
serviceName: Type.Optional(Type.String()),
|
|
551
|
+
/** Additional OTEL resource attributes that narrow the agent identity. */
|
|
552
|
+
resourceAttrs: Type.Optional(Type.Record(Type.String(), Type.String())),
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
export const AgentIdentitySchema = Type.Object({
|
|
556
|
+
/** Canonical code-level agent name (matches the entity you pass to parse-brief). */
|
|
557
|
+
name: Type.String(),
|
|
558
|
+
/** Langfuse-specific identity pointers for this agent. */
|
|
559
|
+
langfuse: Type.Optional(AgentPlatformLangfuseSchema),
|
|
560
|
+
/** OTel-specific identity pointers for this agent. */
|
|
561
|
+
otel: Type.Optional(AgentPlatformOtelSchema),
|
|
562
|
+
});
|
|
563
|
+
|
|
564
|
+
export type AgentIdentity = Static<typeof AgentIdentitySchema>;
|
|
565
|
+
|
|
566
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
567
|
+
|
|
568
|
+
export const DiagnosticsConfigSchema = Type.Object({
|
|
569
|
+
/**
|
|
570
|
+
* v0.2.0: `source` / `target` are GONE — the diagnostics skill binds a
|
|
571
|
+
* `global.sources[]` (source-consumer role) + a `global.targets[]`
|
|
572
|
+
* (target-writer role) resolved in load.ts. `schedule` / `trigger_rules` /
|
|
573
|
+
* `heartbeat` moved to the top-level `triggers.<stage>` block.
|
|
574
|
+
*
|
|
575
|
+
* PHASE 4 — stage-specific context links (triage runbook), loaded at run start
|
|
576
|
+
* alongside `global.context[]`. Orchestrator-typed (parity with the
|
|
577
|
+
* orchestrator's `LifecycleDiagnosticsSchema.context`).
|
|
578
|
+
*/
|
|
579
|
+
context: Type.Optional(Type.Array(ContextLinkSchema)),
|
|
580
|
+
/**
|
|
581
|
+
* PHASE 1 — the report-only gate the orchestrator reads: `report-only` ⇒ produce
|
|
582
|
+
* the report, skip the target/apply gate (no target needed). Free `string` at the
|
|
583
|
+
* skill level to mirror the orchestrator's permissive `apply` field; the apply
|
|
584
|
+
* kinds themselves are enum-checked at the target (`ApplySchema.kind`).
|
|
585
|
+
*/
|
|
586
|
+
apply: Type.Optional(Type.String({ minLength: 1 })),
|
|
587
|
+
ask_tool: AskToolConfigSchema,
|
|
588
|
+
self_diagnostics: Type.Optional(SelfDiagnosticsConfigSchema),
|
|
589
|
+
/**
|
|
590
|
+
* v0.3 run-tagging: default tags applied to EVERY diagnostic run.
|
|
591
|
+
* Useful for filtering in diagnostics-history by feature, milestone, or environment.
|
|
592
|
+
* Examples: ["production", "search-agent"] or ["self-diagnostics", "internal"]
|
|
593
|
+
*/
|
|
594
|
+
run_tags: Type.Optional(Type.Array(Type.String())),
|
|
595
|
+
/**
|
|
596
|
+
* PRD-SO-02 + Phase-2 self-diag: opt-in feedback source collection.
|
|
597
|
+
* When enabled, findings are enriched with feedbackSources[] from chat, trace
|
|
598
|
+
* scores, and/or external platforms before render (D5).
|
|
599
|
+
* Defaults to disabled. Opt-in explicitly per Q11.
|
|
600
|
+
*/
|
|
601
|
+
feedback_sources: Type.Optional(FeedbackSourcesConfigSchema),
|
|
602
|
+
/**
|
|
603
|
+
* W11-07: Optional agent identity map — cross-platform join keys so the skill
|
|
604
|
+
* can resolve a code-level agent name to its observability identifiers on
|
|
605
|
+
* Langfuse (trace.name / tags / agentIdField) and OTel (service.name / attrs).
|
|
606
|
+
*
|
|
607
|
+
* ADDITIVE + OPTIONAL: absent in existing configs (backward-compatible).
|
|
608
|
+
* Populate when your agent appears under different names across platforms.
|
|
609
|
+
* The identity for the diagnosed agent (from parse-brief.entity) is looked up
|
|
610
|
+
* here and injected into EntityContext.identity at Step 3.7.
|
|
611
|
+
*
|
|
612
|
+
* Example:
|
|
613
|
+
* agents:
|
|
614
|
+
* - name: search-agent
|
|
615
|
+
* langfuse: { traceName: "search-v2", tags: ["prod"] }
|
|
616
|
+
* otel: { serviceName: "search-svc" }
|
|
617
|
+
*/
|
|
618
|
+
agents: Type.Optional(Type.Array(AgentIdentitySchema)),
|
|
619
|
+
/**
|
|
620
|
+
* W13-D (operator directive): the audience used for the rendered report when no
|
|
621
|
+
* explicit `--audience` flag is passed to the renderer.
|
|
622
|
+
*
|
|
623
|
+
* ADDITIVE + OPTIONAL (backward-compatible — absent in pre-W13-D configs).
|
|
624
|
+
* Schema default is "client": a fresh `init` writes `default_audience: client`
|
|
625
|
+
* so a published/client install produces the client-stripped report by default;
|
|
626
|
+
* internal is opt-in. The orchestrator threads this value as
|
|
627
|
+
* `--audience <config.default_audience>` at the Step-9 render invocation when the
|
|
628
|
+
* operator gave no explicit flag.
|
|
629
|
+
*
|
|
630
|
+
* Effective-default precedence at render time:
|
|
631
|
+
* explicit `--audience` flag > config.default_audience > renderer fallback ("internal").
|
|
632
|
+
* The renderer's own argv default stays "internal" (safe when neither config nor
|
|
633
|
+
* flag is present); the config default makes a fresh init effectively "client".
|
|
634
|
+
*
|
|
635
|
+
* NEVER overrides PR-022: an `isMetaReport` (self-diag) render is ALWAYS internal.
|
|
636
|
+
*/
|
|
637
|
+
default_audience: Type.Optional(DefaultAudienceSchema),
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
export type DiagnosticsConfig = Static<typeof DiagnosticsConfigSchema>;
|
|
641
|
+
export type TraceFilter = Static<typeof TraceFilterSchema>;
|