@mutagent/helix 0.1.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/mutagent-helix/SKILL.md +113 -0
- package/.claude/skills/mutagent-helix/scripts/cli/codex-transcode.ts +143 -0
- package/.claude/skills/mutagent-helix/scripts/cli/doctor.ts +111 -0
- package/.claude/skills/mutagent-helix/scripts/cli/init.ts +382 -0
- package/.claude/skills/mutagent-helix/scripts/cli/run.sh +61 -0
- package/CLAUDE.md +193 -0
- package/LICENSE +201 -0
- package/NOTICE +22 -0
- package/README.md +209 -0
- package/assets/adl-loop.svg +162 -0
- package/assets/system-status.svg +422 -0
- package/bin/mutagent-cli.mjs +9950 -0
- package/bin/mutagent-helix.mjs +78 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/CLAUDE.md +28 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/SKILL.md +138 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/assets/templates/agentspec.yaml.tpl +247 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/frameworks/doc-pins.md +53 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/principles.md +91 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/requirements.yaml +295 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/workflows/orchestrator-protocol.md +302 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/doctor.ts +116 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/init.ts +230 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/run.sh +60 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/config/resolve-spec-dir.ts +199 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/contract/agentspec.schema.ts +455 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/setup/detect.ts +67 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/validate/validate-spec.ts +93 -0
- package/mutagent-agentspec/LICENSE +201 -0
- package/mutagent-agentspec/NOTICE +19 -0
- package/mutagent-agentspec/README.md +44 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/SKILL.md +100 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md +312 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md +357 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/templates/build-report.md.tpl +39 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/principles.md +31 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/build-protocol.md +61 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/improve-handoff.md +23 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/cli/run.sh +60 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/handoff/validate-build-input.ts +72 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/sync-spec/check-sync-spec.ts +499 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts +182 -0
- package/mutagent-builder/CLAUDE.md +25 -0
- package/mutagent-builder/README.md +26 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/README.md +192 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/SKILL.md +352 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-architect.md +256 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-engineer.md +344 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/diagnostics-analyzer.md +576 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/discovery.md +425 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.json.tpl +24 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.md.tpl +49 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/config.yaml.tpl +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/pr-body.md.tpl +56 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/report.html.tpl +327 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/README.md +27 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/iter-N-handover.md.tpl +125 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/self-diagnosis-contract.v0.1.0.yaml.tpl +234 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/spec.yaml.tpl +152 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/team.yaml.tpl +127 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/wave-N-dashboard.html.tpl +1712 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.1-nl-query.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.2-tier0-progress.md +58 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.3-analysis-progress.md +44 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.4-html-report.md +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.5-rca-detail.md +69 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.6-stale-warning.md +53 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.1-welcome.md +60 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.2-source-platform-picker.md +41 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.3-source-auth.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.4-target-picker.md +48 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.5-ask-tool.md +43 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.6-config-review.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.7-filter-defaults.md +52 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.8-first-run.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-findings.json +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-meta.json +47 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/adapter-strategy.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config-migration.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config.md +159 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/filter-search-matrix.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/harness-knowledge.md +22 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/memory-format.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/onboarding-decisions.yaml +187 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/operation-inventory.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/overview.md +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/reference.md +119 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/script-index.md +101 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-adapter-contract.md +93 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/claude-code-transcripts.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex-transcripts.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex.md +145 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/install-paths.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/langfuse.md +178 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/local-jsonl.md +55 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/openobserve.md +102 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/otel.md +63 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/cloud-rest.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-claude.md +65 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cloud-agent-sdk.md +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-codex.md +72 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cursor.md +108 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-mastra.md +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-opencode.md +70 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/apply-pr-comment-format.md +82 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/diagnostics.md +35 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/handover-contract.md +247 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/onboarding.md +300 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/orchestrator-protocol.md +1861 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rca.md +331 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rendering-anatomy.md +314 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/schedule-prep.md +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/scope-model.md +128 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/verification-methodology.md +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/aggregate/sort-findings.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/blind-spots.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/llm-sample.ts +681 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/doctor.ts +215 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/init.ts +1013 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/install-agents.ts +350 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/run.sh +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/shared-templates.ts +79 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/load.ts +392 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/resolve-credential.ts +120 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/schema.ts +641 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/validate.ts +134 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/build-diagnosis-context.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/load-context.ts +105 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/contract/types.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/build-render-input.ts +1964 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/corpus-severity.ts +172 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/dismissal-match.ts +270 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/rank-remedies.ts +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/install-hooks.sh +46 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/pre-push.sh +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/invocation/parse-brief.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/match.ts +114 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/paths.ts +95 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/store.ts +535 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/types.ts +181 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/lint/template-inline-js.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/append.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/read.ts +218 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/platforms/entity-context.ts +686 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/read-unitf.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/trace.ts +1078 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-adapter.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-types.ts +213 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/persist-selections.ts +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/render.ts +3254 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/diagnose.ts +64 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/session.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/caps.ts +345 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/deep-read-gate.ts +424 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/representative.ts +584 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/objection.ts +224 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/trajectory.ts +489 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/dispatch.ts +135 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/probe.ts +170 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/detect.ts +307 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/ensure-cli.ts +315 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/reconfigure.ts +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/verify-agents.ts +207 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/slicer.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/claude-code.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/codex.ts +11 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/langfuse.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/local-jsonl.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/otel.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/index.ts +54 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/registry.ts +45 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/types.ts +86 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/stale-detector.ts +74 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/test/render-playwright.cli.ts +477 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/claude-code.ts +133 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/langfuse.ts +143 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0-scan.ts +423 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/completeness-check.ts +436 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/doc-refs.ts +190 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/finalize-gate.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/findings-contract.ts +628 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/render-js-syntax.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/report-checklist.yaml +217 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/trace-shape.ts +262 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/wave6-checklist.ts +326 -0
- package/mutagent-diagnostics/CLAUDE.md +41 -0
- package/mutagent-diagnostics/LICENSE +201 -0
- package/mutagent-diagnostics/NOTICE +18 -0
- package/mutagent-diagnostics/README.md +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/SKILL.md +548 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/audit-executor.md +169 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/dataset-builder.md +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/discovery.md +425 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/evaluator.md +1108 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/theme.css +213 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/wordmark.html +9 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/context-flow-lens.md +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/data-lens.md +47 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/decision-lens.md +48 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/methodology-critic-lens.md +53 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/trajectory-lens.md +44 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/build-review-interface.md +83 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/edd-loop.md +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/error-analysis.md +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-audit.md +154 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-stage.md +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/generate-synthetic-data.md +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/grounded-adjudication.md +221 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/memory-format.md +65 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/methodology.md +201 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/operation-inventory.md +197 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/validate-evaluator.md +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/workflows/orchestrator-protocol.md +300 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/write-judge-prompt.md +123 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/behavior-tree.schema.yaml +73 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/dataset.schema.yaml +66 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/edd-change-request.schema.yaml +114 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/eval-matrix.schema.yaml +74 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-graph.schema.yaml +69 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-profile.schema.yaml +49 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/methodology-review.schema.yaml +40 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/scorecard.schema.yaml +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/agent-dispatch.ts +0 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/aggregate-discover.ts +543 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/artifact-paths.ts +115 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/assemble-scorecard.ts +172 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-dataset.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-evals.ts +93 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-review-ui.ts +393 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/check-method-router.ts +170 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/aggregate.ts +112 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/audit-run.ts +182 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/doctor.ts +211 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/dogfood.ts +133 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/init.ts +601 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/methodology-review.ts +122 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/prep.ts +295 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/profile-subject.ts +165 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/run.sh +56 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/variance-check.ts +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-eval.ts +248 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-quality-verdict.ts +285 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/codegen-evals.ts +173 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-project.ts +151 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-sampler.ts +267 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/load.ts +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/schema.ts +380 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/agentspec-evals.ts +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/dataset.ts +149 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-engine.ts +118 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-matrix.ts +577 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-types.ts +1074 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/flow-graph.ts +194 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/types.ts +303 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/validation.ts +193 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/derive-dataset.ts +152 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/determine-outcome.ts +219 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/diff-discriminate.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/discover-criteria.ts +348 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/change-request.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/edd-types.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/variance-gate.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/emit-completeness.ts +111 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/eval-engine.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/evaluate.ts +333 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/flow-graph.ts +230 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-prompt-template.ts +253 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-provider.ts +135 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-grounding.ts +229 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-uniformity.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/living-suite.ts +109 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-bundle.ts +203 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile-vocab.ts +64 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/mask.ts +138 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/materialize-dataset.ts +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/matrix-judge.ts +750 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/append.ts +215 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/read.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/persist-eval-criteria.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/prep-tasks.ts +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/profile-subject.ts +310 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/publish-report.ts +131 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/read-unitf-traces.ts +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-build-cards.ts +195 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-discover-report.ts +1640 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-eval-report.ts +3838 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-report.ts +212 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-credential.ts +110 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-ref.ts +98 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/result-verify.ts +129 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/route-failures.ts +330 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-deterministic.ts +367 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-evaluate.ts +719 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-judge.ts +155 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-pipeline.ts +175 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sample-traces.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/self-audit.ts +387 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/source-map.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/subject-profile.ts +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/substrate.ts +162 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sync-eval-criteria.ts +244 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/ui-slots.ts +119 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/unitf-to-evaltrace.ts +284 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/validate-judge.ts +358 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/variance-compare.ts +177 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/behavior-tree.yaml +140 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/eval-matrix.yaml +1270 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/methodology-review.yaml +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/audit.workflow.js +82 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/data-leak.workflow.js +236 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/variance.workflow.js +163 -0
- package/mutagent-evaluator/CLAUDE.md +45 -0
- package/mutagent-evaluator/LICENSE +201 -0
- package/mutagent-evaluator/NOTICE +23 -0
- package/mutagent-evaluator/README.md +88 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/SKILL.md +287 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/contracts/amend-request.ts +503 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/improve-loop-run.ts +304 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state-cli.ts +300 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state.ts +440 -0
- package/mutagent-optimize/CLAUDE.md +49 -0
- package/mutagent-optimize/README.md +26 -0
- package/mutagent-orchestrator/CLAUDE.md +102 -0
- package/mutagent-orchestrator/README.md +20 -0
- package/mutagent-orchestrator/assets/agents/discovery.md +425 -0
- package/mutagent-orchestrator/assets/agents/dogfood-monitor.md +266 -0
- package/mutagent-orchestrator/assets/agents/monitor.md +258 -0
- package/mutagent-orchestrator/orchestrator.md +782 -0
- package/mutagent-orchestrator/references/MONITORING.md +209 -0
- package/mutagent-orchestrator/references/config-fields.md +132 -0
- package/mutagent-orchestrator/references/config-migration.md +132 -0
- package/mutagent-orchestrator/references/index-registry.md +92 -0
- package/mutagent-orchestrator/routing.yaml +391 -0
- package/mutagent-orchestrator/scripts/config-schema.ts +1010 -0
- package/mutagent-orchestrator/scripts/dispatch.ts +439 -0
- package/mutagent-orchestrator/scripts/dogfood/extract-feedback.ts +203 -0
- package/mutagent-orchestrator/scripts/dogfood/reconstruct-trajectory.ts +327 -0
- package/mutagent-orchestrator/scripts/dogfood/render-dogfood-report.ts +347 -0
- package/mutagent-orchestrator/scripts/dogfood/resolve-subagents.ts +160 -0
- package/mutagent-orchestrator/scripts/dogfood/run-report.ts +264 -0
- package/mutagent-orchestrator/scripts/dogfood/slack-thread.ts +106 -0
- package/mutagent-orchestrator/scripts/dogfood/types.ts +257 -0
- package/mutagent-orchestrator/scripts/eval-routing.ts +753 -0
- package/mutagent-orchestrator/scripts/gate.ts +219 -0
- package/mutagent-orchestrator/scripts/handover-contract.ts +362 -0
- package/mutagent-orchestrator/scripts/index/build-index.ts +351 -0
- package/mutagent-orchestrator/scripts/index/render-index.ts +110 -0
- package/mutagent-orchestrator/scripts/monitor/slack-notify.ts +111 -0
- package/mutagent-orchestrator/scripts/monitor/triggers.ts +162 -0
- package/mutagent-orchestrator/scripts/onboarding-check.ts +369 -0
- package/mutagent-orchestrator/scripts/render-roster.ts +308 -0
- package/mutagent-orchestrator/scripts/resolve-credential.ts +185 -0
- package/mutagent-orchestrator/scripts/resolve-paths.ts +114 -0
- package/mutagent-orchestrator/scripts/slack/format.ts +63 -0
- package/mutagent-orchestrator/scripts/slack/post.ts +115 -0
- package/mutagent-orchestrator/scripts/sync-index.ts +311 -0
- package/package.json +64 -0
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/invocation/parse-brief.ts
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/invocation/parse-brief.ts
|
|
3
|
+
* R2.6 (+D2) — natural-language operator-brief parser (regex v0.2).
|
|
4
|
+
* Type A — Pure Script (deterministic regex parse; NO clock/random/LLM/I-O).
|
|
5
|
+
*
|
|
6
|
+
* The slash-command `/mutagent-diagnostics "<brief>"` takes a single positional
|
|
7
|
+
* natural-language arg. This parser extracts a best-effort structured shape:
|
|
8
|
+
* { agent?, timeWindow?, focus?, residual, scopeType, entity? }
|
|
9
|
+
*
|
|
10
|
+
* DEFENSIVE BY DESIGN (plan §4 R2.6): the parser NEVER throws and NEVER drops the
|
|
11
|
+
* brief. Anything it cannot classify lands in `residual` and the run proceeds with
|
|
12
|
+
* a neutral survey (design philosophy §2.2 — operator-driven, never skill-prompts).
|
|
13
|
+
*
|
|
14
|
+
* D2: the caller stores the VERBATIM brief (runMeta.operatorInvocation) ALONGSIDE
|
|
15
|
+
* this parsed shape (runMeta.parsedInvocation) — the verbatim is never dropped even
|
|
16
|
+
* when parsing fully succeeds (re-parse later + intent context + library authenticity).
|
|
17
|
+
*
|
|
18
|
+
* v0.2 regex grammar (documented, intentionally simple — iterate later):
|
|
19
|
+
* agent ← "agent <name>" | "for <name>" | "diagnose <name>"
|
|
20
|
+
* NOTE: "the agent <name>" is NOT matched (article false-positive guard)
|
|
21
|
+
* timeWindow ← "last <N> <unit>" | "past <N> <unit>" | "<N><unit-short> window"
|
|
22
|
+
* focus ← "focus on <text>" | "focused on <text>" | "focus: <text>" | "about <text>"
|
|
23
|
+
* scopeType ← derived from the named entity: "skill" if it looks like a skill name
|
|
24
|
+
* (contains "skill" / "diagnostics" / ends in "-skill"), "agent" otherwise.
|
|
25
|
+
* null when no entity is extractable.
|
|
26
|
+
* entity ← the raw extracted name (same as agent field when set)
|
|
27
|
+
*
|
|
28
|
+
* W11-06 changes:
|
|
29
|
+
* - FOCUS_RE: added "focus: <text>" colon form
|
|
30
|
+
* - AGENT_RE: negative lookbehind (?<!the\s) to guard "the agent X" false-positive
|
|
31
|
+
* - ParsedInvocation: added scopeType + entity fields
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
export interface ParsedInvocation {
|
|
35
|
+
/** Agent / entity the operator named, when extractable. */
|
|
36
|
+
agent?: string;
|
|
37
|
+
/** Time window phrase, normalized (e.g. "last 24h"). */
|
|
38
|
+
timeWindow?: string;
|
|
39
|
+
/** Focus directive — when set, the report leads with a Guided tab. */
|
|
40
|
+
focus?: string;
|
|
41
|
+
/** Everything not classified — the brief is NEVER dropped (defensive). */
|
|
42
|
+
residual: string;
|
|
43
|
+
/**
|
|
44
|
+
* W11-06: classified scope of the diagnosed subject.
|
|
45
|
+
* - "skill" — the named entity looks like a skill (contains "skill" or
|
|
46
|
+
* "diagnostics", or ends in "-skill")
|
|
47
|
+
* - "agent" — a named entity was found but it does not match skill heuristics
|
|
48
|
+
* - null — no entity was extractable from the brief
|
|
49
|
+
*/
|
|
50
|
+
scopeType: "skill" | "agent" | null;
|
|
51
|
+
/**
|
|
52
|
+
* W11-06: the raw extracted entity name (same value as `agent` when set).
|
|
53
|
+
* Populated when scopeType is non-null; absent when scopeType === null.
|
|
54
|
+
*/
|
|
55
|
+
entity?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* W11-06 AGENT_RE:
|
|
60
|
+
* Guards against "the agent X" false-positive in two layers:
|
|
61
|
+
*
|
|
62
|
+
* Layer 1 — Negative lookbehind (?<!the\s):
|
|
63
|
+
* Prevents the "agent" keyword itself from firing when preceded by "the ".
|
|
64
|
+
* Handles "focus on the agent" where "agent" is a generic noun, not a trigger.
|
|
65
|
+
*
|
|
66
|
+
* Layer 2 — Negative lookahead (?!the\b|a\b|an\b):
|
|
67
|
+
* Prevents article/determiner words from being captured as the entity name.
|
|
68
|
+
* Handles "diagnose the agent" where "diagnose" triggers and "the" would
|
|
69
|
+
* otherwise be captured as the entity name.
|
|
70
|
+
*
|
|
71
|
+
* Combined: "diagnose the agent" → no entity (both layers block it)
|
|
72
|
+
* "diagnose search-agent" → entity = "search-agent" (neither layer fires)
|
|
73
|
+
*/
|
|
74
|
+
const AGENT_RE =
|
|
75
|
+
/(?<!the\s)\b(?:agent|for|diagnose)\s+(?!the\b|a\b|an\b)([a-z0-9][a-z0-9._-]*)/i;
|
|
76
|
+
const TIME_RE =
|
|
77
|
+
/\b(?:last|past)\s+(\d+)\s*(hours?|hrs?|h|days?|d|weeks?|w|minutes?|mins?|m)\b/i;
|
|
78
|
+
/**
|
|
79
|
+
* W11-06 FOCUS_RE: extended to also match "focus: <text>" (colon form).
|
|
80
|
+
* Original forms retained: "focus on", "focused on", "about".
|
|
81
|
+
*/
|
|
82
|
+
const FOCUS_RE = /\b(?:focus(?:ed)?\s+on|focus\s*:|about)\s+(.+?)(?:\s*$|[.;])/i;
|
|
83
|
+
|
|
84
|
+
/** Normalize a time unit token to a short canonical form. */
|
|
85
|
+
function normalizeUnit(unit: string): string {
|
|
86
|
+
const u = unit.toLowerCase();
|
|
87
|
+
if (u.startsWith("h")) return "h";
|
|
88
|
+
if (u.startsWith("d")) return "d";
|
|
89
|
+
if (u.startsWith("w")) return "w";
|
|
90
|
+
if (u.startsWith("min") || u === "m") return "m";
|
|
91
|
+
return u;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* W11-06: Classify a named entity as 'skill' or 'agent' from its name heuristic.
|
|
96
|
+
* Deterministic — same input always returns same output.
|
|
97
|
+
* Heuristic: skill if name contains "skill", "diagnostics", or ends in "-skill".
|
|
98
|
+
*/
|
|
99
|
+
function classifyScopeType(name: string): "skill" | "agent" {
|
|
100
|
+
const lower = name.toLowerCase();
|
|
101
|
+
if (
|
|
102
|
+
lower.includes("skill") ||
|
|
103
|
+
lower.includes("diagnostics") ||
|
|
104
|
+
lower.endsWith("-skill")
|
|
105
|
+
) {
|
|
106
|
+
return "skill";
|
|
107
|
+
}
|
|
108
|
+
return "agent";
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* R2.6 — parse a natural-language brief into ParsedInvocation. Deterministic +
|
|
113
|
+
* defensive: never throws, always returns a residual. An empty/whitespace brief
|
|
114
|
+
* yields `{ residual: "", scopeType: null }` and the caller falls back to a neutral survey.
|
|
115
|
+
*/
|
|
116
|
+
export function parseBrief(brief: string): ParsedInvocation {
|
|
117
|
+
const trimmed = (brief ?? "").trim();
|
|
118
|
+
if (trimmed.length === 0) return { residual: "", scopeType: null };
|
|
119
|
+
|
|
120
|
+
const result: ParsedInvocation = { residual: trimmed, scopeType: null };
|
|
121
|
+
|
|
122
|
+
const agentMatch = AGENT_RE.exec(trimmed);
|
|
123
|
+
if (agentMatch) {
|
|
124
|
+
const name = agentMatch[1];
|
|
125
|
+
result.agent = name;
|
|
126
|
+
result.entity = name;
|
|
127
|
+
result.scopeType = classifyScopeType(name);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const timeMatch = TIME_RE.exec(trimmed);
|
|
131
|
+
if (timeMatch)
|
|
132
|
+
result.timeWindow = `last ${timeMatch[1]}${normalizeUnit(timeMatch[2])}`;
|
|
133
|
+
|
|
134
|
+
const focusMatch = FOCUS_RE.exec(trimmed);
|
|
135
|
+
if (focusMatch) result.focus = focusMatch[1].trim();
|
|
136
|
+
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* True when the parsed invocation carries a focus directive — drives the report's
|
|
142
|
+
* tab layout (focus → Guided REPLACES Overview; no focus → neutral survey).
|
|
143
|
+
*/
|
|
144
|
+
export function isFocusedInvocation(parsed: ParsedInvocation): boolean {
|
|
145
|
+
return typeof parsed.focus === "string" && parsed.focus.trim().length > 0;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// ── CLI entrypoint (PRD-SO-05) ────────────────────────────────────────────────
|
|
149
|
+
//
|
|
150
|
+
// Usage:
|
|
151
|
+
// bun scripts/cli/run.sh scripts/invocation/parse-brief.ts "<brief string>"
|
|
152
|
+
// bun scripts/cli/run.sh scripts/invocation/parse-brief.ts --output <file> "<brief>"
|
|
153
|
+
//
|
|
154
|
+
// Accepts a positional brief string (may be quoted). Emits { verbatim, parsed } JSON
|
|
155
|
+
// to --output (stdout when omitted). Exit 0 always (parse-brief never throws).
|
|
156
|
+
|
|
157
|
+
if (import.meta.main) {
|
|
158
|
+
const { writeFileSync } = await import("node:fs");
|
|
159
|
+
const { resolve } = await import("node:path");
|
|
160
|
+
|
|
161
|
+
const args = process.argv.slice(2);
|
|
162
|
+
|
|
163
|
+
let outputPath: string | null = null;
|
|
164
|
+
const remaining: string[] = [];
|
|
165
|
+
|
|
166
|
+
for (let i = 0; i < args.length; i++) {
|
|
167
|
+
if (args[i] === "--output" && args[i + 1]) {
|
|
168
|
+
outputPath = args[++i];
|
|
169
|
+
} else {
|
|
170
|
+
remaining.push(args[i]);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// The brief is everything in remaining joined (handles multi-word quoted strings
|
|
175
|
+
// that the shell may have split across positions).
|
|
176
|
+
const brief = remaining.join(" ").trim();
|
|
177
|
+
const parsed = parseBrief(brief);
|
|
178
|
+
|
|
179
|
+
const out = { verbatim: brief, parsed };
|
|
180
|
+
const json = JSON.stringify(out, null, 2);
|
|
181
|
+
|
|
182
|
+
if (outputPath) {
|
|
183
|
+
writeFileSync(resolve(outputPath), json, "utf-8");
|
|
184
|
+
console.info(`parse-brief result written to ${outputPath}`);
|
|
185
|
+
} else {
|
|
186
|
+
console.info(json);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/library/match.ts
|
|
3
|
+
* R2.3 — library-first Tier-0 matching. Promoted regex patterns are matched
|
|
4
|
+
* BEFORE the generic Tier-0 heuristics so a known failure mode is recognised
|
|
5
|
+
* cheaply on the next run.
|
|
6
|
+
* Type A — Pure Script (deterministic regex matching; library is loaded read-only).
|
|
7
|
+
*
|
|
8
|
+
* PRD-MP-07 (PR-037): Step 4.5 library-match is MANDATORY when this function
|
|
9
|
+
* returns priors for the entity. The orchestrator MUST:
|
|
10
|
+
* 1. Call matchLibraryPatterns() before runTier0ScanPlatformAware()
|
|
11
|
+
* 2. Pass matches to runTier0ScanWithLibrary() (attaches 3× weight priors)
|
|
12
|
+
* 3. When ≥1 approved prior exists: SKIP the Step 3.5 awareness mini-sample
|
|
13
|
+
* (shouldFireAwareness({priorSignalsRef}) will return fire:false)
|
|
14
|
+
* 4. Record the skip in runMeta.exemptions or runMeta.decisions
|
|
15
|
+
*
|
|
16
|
+
* Library writes are approved-only (scripts/library/store.ts addPattern — operator gate).
|
|
17
|
+
* Per-host storage: .mutagent/diagnostics/library/ (gitignored).
|
|
18
|
+
* 3× weight is HARD-CODED (Q15: not configurable — prevents tuning drift).
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { TraceMetadata } from "../normalize/trace.ts";
|
|
22
|
+
import type { LibraryPattern } from "./types.ts";
|
|
23
|
+
import { loadEntity } from "./store.ts";
|
|
24
|
+
import { entitySlug } from "./paths.ts";
|
|
25
|
+
|
|
26
|
+
export interface LibraryMatch {
|
|
27
|
+
patternId: string;
|
|
28
|
+
signal: string;
|
|
29
|
+
/** Trace IDs that matched the pattern. */
|
|
30
|
+
traceIds: string[];
|
|
31
|
+
/** PRIOR_SIGNAL_WEIGHT applied (3×) — library priors outrank fresh Tier-0 signals. */
|
|
32
|
+
weight: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Build a deterministic text surface for a trace to match patterns against. Uses
|
|
37
|
+
* stable, content-derived fields only (tags + agentId + platform). No clock/random.
|
|
38
|
+
*/
|
|
39
|
+
function traceText(t: TraceMetadata): string {
|
|
40
|
+
const parts = [t.agentId ?? "", t.sourcePlatform, ...(t.tags ?? [])];
|
|
41
|
+
return parts.join(" ");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Compile a library pattern to a RegExp, returning null on an invalid source. */
|
|
45
|
+
function compile(p: LibraryPattern): RegExp | null {
|
|
46
|
+
try {
|
|
47
|
+
return new RegExp(p.regex, p.flags ?? "");
|
|
48
|
+
} catch {
|
|
49
|
+
return null; // a malformed stored pattern is skipped, never throws.
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* R2.3 — match library patterns for an entity against a batch of traces. Returns
|
|
55
|
+
* one LibraryMatch per pattern that hit at least one trace. Deterministic: patterns
|
|
56
|
+
* iterate in stored order, traces in input order. The 3× prior weight is attached.
|
|
57
|
+
*/
|
|
58
|
+
export function matchLibraryPatterns(
|
|
59
|
+
entityName: string,
|
|
60
|
+
traces: TraceMetadata[],
|
|
61
|
+
home?: string,
|
|
62
|
+
weight: number = 3
|
|
63
|
+
): LibraryMatch[] {
|
|
64
|
+
const entity = loadEntity(entitySlug(entityName), home);
|
|
65
|
+
if (!entity || entity.patterns.length === 0) return [];
|
|
66
|
+
|
|
67
|
+
const matches: LibraryMatch[] = [];
|
|
68
|
+
for (const pattern of entity.patterns) {
|
|
69
|
+
const re = compile(pattern);
|
|
70
|
+
if (!re) continue;
|
|
71
|
+
const hitIds: string[] = [];
|
|
72
|
+
for (const t of traces) {
|
|
73
|
+
if (re.test(traceText(t))) hitIds.push(t.traceId);
|
|
74
|
+
}
|
|
75
|
+
if (hitIds.length > 0) {
|
|
76
|
+
matches.push({ patternId: pattern.patternId, signal: pattern.signal, traceIds: hitIds, weight });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return matches;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* PRD-MP-07: Convenience predicate — true when the library has ≥1 approved prior
|
|
84
|
+
* for the entity. The orchestrator uses this to decide whether to skip the
|
|
85
|
+
* Step 3.5 awareness mini-sample (Q18: require ≥1 approved prior, not ≥3).
|
|
86
|
+
*
|
|
87
|
+
* NOTE: This does NOT run the match (no traces needed) — it checks whether the
|
|
88
|
+
* entity record exists AND has at least one pattern. Callers that need actual
|
|
89
|
+
* match counts should use matchLibraryPatterns(). For a pure existence check
|
|
90
|
+
* (without loading match state), scripts/library/store.ts hasPriors() is sufficient.
|
|
91
|
+
*
|
|
92
|
+
* Preferred match-aware predicate: call matchLibraryPatterns() and check length.
|
|
93
|
+
* This function provides a quick path when trace data is not yet available.
|
|
94
|
+
*/
|
|
95
|
+
export function hasLibraryPriors(entityName: string, home?: string): boolean {
|
|
96
|
+
const entity = loadEntity(entitySlug(entityName), home);
|
|
97
|
+
return entity !== null && entity.patterns.length > 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* PRD-MP-07: Build a priorSignalsRef string for matchLibraryPatterns results,
|
|
102
|
+
* suitable for passing to shouldFireAwareness(). Returns undefined when no
|
|
103
|
+
* matches so the awareness layer fires normally.
|
|
104
|
+
*
|
|
105
|
+
* Format: "<entity>:<matchCount> library hits" — stable, human-readable, grep-able.
|
|
106
|
+
* Use this AFTER calling matchLibraryPatterns() to build the ref from actual hits.
|
|
107
|
+
*/
|
|
108
|
+
export function buildMatchPriorSignalsRef(
|
|
109
|
+
entityName: string,
|
|
110
|
+
matches: LibraryMatch[]
|
|
111
|
+
): string | undefined {
|
|
112
|
+
if (matches.length === 0) return undefined;
|
|
113
|
+
return `${entitySlug(entityName)}:${matches.length} library hits`;
|
|
114
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/library/paths.ts
|
|
3
|
+
* R2.3 — class-memory library path resolution. LOCAL (per-install) + GITIGNORED.
|
|
4
|
+
* Type A — Pure Script (path construction only; the base dir is INJECTABLE).
|
|
5
|
+
*
|
|
6
|
+
* The library is the skill's cross-run memory: per-entity journals of approved
|
|
7
|
+
* findings + regex patterns that get matched FIRST in Tier-0 (so a known failure
|
|
8
|
+
* mode is recognised cheaply on the next run). It lives LOCAL under the unified
|
|
9
|
+
* `.mutagent/` at the install/init dir (`<root>/.mutagent/diagnostics/library/`)
|
|
10
|
+
* and is GITIGNORED — we commit the library CODE + a .gitignore entry, NEVER the
|
|
11
|
+
* library DATA (it is install-/operator-specific and may carry operator-private
|
|
12
|
+
* invocation briefs via D2). Relocated from the former per-host home dir to the
|
|
13
|
+
* local `.mutagent/` source of truth (operator decision 2026-06-29): the library
|
|
14
|
+
* is now per-install, not cross-project per-host.
|
|
15
|
+
*
|
|
16
|
+
* Layout (Evolvr-style):
|
|
17
|
+
* <root>/.mutagent/diagnostics/library/
|
|
18
|
+
* INDEX.md # deterministic ToC, sorted by entity
|
|
19
|
+
* by-entity/<entity-slug>/
|
|
20
|
+
* entity.json # machine record (name, type, runs[], priors)
|
|
21
|
+
* journal.md # append-only human log of approved findings
|
|
22
|
+
* patterns/<pattern-id>.json # regex detectors promoted from approved findings
|
|
23
|
+
* deep-read-ledger.json # BLOCK G — cross-run deep-read digests (deduped by traceId)
|
|
24
|
+
*
|
|
25
|
+
* The base dir is INJECTABLE (defaults to the process cwd = the host project root
|
|
26
|
+
* where `.mutagent/` lives) so tests pass a temp dir and never touch real disk.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
import { join } from "path";
|
|
30
|
+
|
|
31
|
+
/** Root of the local class-memory library. Injectable base for tests. */
|
|
32
|
+
export function libraryRoot(base: string = process.cwd()): string {
|
|
33
|
+
return join(base, ".mutagent", "diagnostics", "library");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function indexPath(base?: string): string {
|
|
37
|
+
return join(libraryRoot(base), "INDEX.md");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function byEntityRoot(base?: string): string {
|
|
41
|
+
return join(libraryRoot(base), "by-entity");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function entityDir(entitySlug: string, base?: string): string {
|
|
45
|
+
return join(byEntityRoot(base), entitySlug);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function entityJsonPath(entitySlug: string, base?: string): string {
|
|
49
|
+
return join(entityDir(entitySlug, base), "entity.json");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function journalPath(entitySlug: string, base?: string): string {
|
|
53
|
+
return join(entityDir(entitySlug, base), "journal.md");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function patternsDir(entitySlug: string, base?: string): string {
|
|
57
|
+
return join(entityDir(entitySlug, base), "patterns");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function patternPath(entitySlug: string, patternId: string, base?: string): string {
|
|
61
|
+
return join(patternsDir(entitySlug, base), `${patternId}.json`);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* BLOCK G — per-entity deep-read ledger file (cross-run digests, deduped by traceId).
|
|
66
|
+
* Lives under the entity's class-memory dir, alongside entity.json — same local,
|
|
67
|
+
* gitignored boundary as the rest of the library.
|
|
68
|
+
*/
|
|
69
|
+
export function deepReadLedgerPath(entitySlug: string, base?: string): string {
|
|
70
|
+
return join(entityDir(entitySlug, base), "deep-read-ledger.json");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* UNIFIED VERDICT LEDGER — per-entity finding-verdict memory (both polarities:
|
|
75
|
+
* approved + dismissed). Lives alongside entity.json in the entity's class-memory
|
|
76
|
+
* dir, same local + gitignored boundary as the rest of the library. Separate file
|
|
77
|
+
* (like deep-read-ledger.json) so the approved-only entity.json write gate stays clean
|
|
78
|
+
* and the approve→pattern promote bytes are unchanged.
|
|
79
|
+
*/
|
|
80
|
+
export function verdictLedgerPath(entitySlug: string, base?: string): string {
|
|
81
|
+
return join(entityDir(entitySlug, base), "verdict-ledger.json");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Deterministic entity slug: lowercase, non-alphanumerics → "-", collapse repeats,
|
|
86
|
+
* trim leading/trailing "-". Stable across runs so the same entity always maps to
|
|
87
|
+
* the same library dir.
|
|
88
|
+
*/
|
|
89
|
+
export function entitySlug(name: string): string {
|
|
90
|
+
return name
|
|
91
|
+
.toLowerCase()
|
|
92
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
93
|
+
.replace(/-+/g, "-")
|
|
94
|
+
.replace(/^-|-$/g, "") || "unknown";
|
|
95
|
+
}
|