@shrkcrft/inspector 0.1.0-alpha.29 → 0.1.0-alpha.31
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/dist/acceptance-replay.js +1 -1
- package/dist/agent-contract-templates.js +6 -6
- package/dist/agent-contract.d.ts.map +1 -1
- package/dist/agent-contract.js +13 -8
- package/dist/agent-orchestration.js +2 -2
- package/dist/agent-task-prep.d.ts +16 -0
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +51 -4
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +21 -3
- package/dist/architecture-map.d.ts +16 -0
- package/dist/architecture-map.d.ts.map +1 -1
- package/dist/architecture-map.js +42 -26
- package/dist/area-explore.d.ts +2 -2
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +36 -16
- package/dist/area-map.d.ts +56 -11
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +106 -25
- package/dist/asset-doctor-proposed-exit.d.ts +21 -0
- package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
- package/dist/asset-doctor-proposed-exit.js +22 -0
- package/dist/asset-provenance.js +1 -1
- package/dist/boundaries-changed-only.d.ts +24 -1
- package/dist/boundaries-changed-only.d.ts.map +1 -1
- package/dist/boundaries-changed-only.js +12 -2
- package/dist/boundary-check-options.model.d.ts +40 -0
- package/dist/boundary-check-options.model.d.ts.map +1 -0
- package/dist/boundary-check-options.model.js +1 -0
- package/dist/boundary-check-result.model.d.ts +89 -0
- package/dist/boundary-check-result.model.d.ts.map +1 -0
- package/dist/boundary-check-result.model.js +1 -0
- package/dist/boundary-configuration-status.d.ts +38 -0
- package/dist/boundary-configuration-status.d.ts.map +1 -0
- package/dist/boundary-configuration-status.js +118 -0
- package/dist/boundary-configuration-status.model.d.ts +37 -0
- package/dist/boundary-configuration-status.model.d.ts.map +1 -0
- package/dist/boundary-configuration-status.model.js +1 -0
- package/dist/boundary-load-issue.model.d.ts +30 -0
- package/dist/boundary-load-issue.model.d.ts.map +1 -0
- package/dist/boundary-load-issue.model.js +1 -0
- package/dist/boundary-rule-check.model.d.ts +44 -0
- package/dist/boundary-rule-check.model.d.ts.map +1 -0
- package/dist/boundary-rule-check.model.js +1 -0
- package/dist/boundary-rule-invalidation.model.d.ts +31 -0
- package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
- package/dist/boundary-rule-invalidation.model.js +1 -0
- package/dist/boundary-rule-set-diff.model.d.ts +75 -0
- package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
- package/dist/boundary-rule-set-diff.model.js +1 -0
- package/dist/boundary-rule-sources.d.ts +28 -0
- package/dist/boundary-rule-sources.d.ts.map +1 -0
- package/dist/boundary-rule-sources.js +110 -0
- package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
- package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
- package/dist/boundary-stale-exception-finding.model.js +1 -0
- package/dist/boundary-unit-liveness.d.ts +35 -0
- package/dist/boundary-unit-liveness.d.ts.map +1 -0
- package/dist/boundary-unit-liveness.js +71 -0
- package/dist/change-intent.d.ts +3 -0
- package/dist/change-intent.d.ts.map +1 -1
- package/dist/change-intent.js +61 -27
- package/dist/changes-summary.d.ts.map +1 -1
- package/dist/changes-summary.js +19 -9
- package/dist/ci-integrity-report.js +1 -1
- package/dist/ci-predict.d.ts.map +1 -1
- package/dist/ci-predict.js +38 -5
- package/dist/code-intelligence-doctor.d.ts +40 -0
- package/dist/code-intelligence-doctor.d.ts.map +1 -1
- package/dist/code-intelligence-doctor.js +86 -12
- package/dist/command-recommender.d.ts +45 -2
- package/dist/command-recommender.d.ts.map +1 -1
- package/dist/command-recommender.js +41 -263
- package/dist/command-resolution-status.d.ts +44 -0
- package/dist/command-resolution-status.d.ts.map +1 -0
- package/dist/command-resolution-status.js +44 -0
- package/dist/command-safety-level.d.ts +15 -0
- package/dist/command-safety-level.d.ts.map +1 -0
- package/dist/command-safety-level.js +43 -0
- package/dist/command-taxonomy.js +1 -1
- package/dist/compliance-evidence.js +1 -1
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-registry.d.ts +40 -0
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +186 -82
- package/dist/context-tuning.d.ts +4 -0
- package/dist/context-tuning.d.ts.map +1 -1
- package/dist/context-tuning.js +10 -7
- package/dist/contract-template-registry.d.ts +10 -0
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +59 -33
- package/dist/contribution-kind.d.ts +52 -0
- package/dist/contribution-kind.d.ts.map +1 -0
- package/dist/contribution-kind.js +52 -0
- package/dist/contribution-load-failures.d.ts +106 -0
- package/dist/contribution-load-failures.d.ts.map +1 -0
- package/dist/contribution-load-failures.js +575 -0
- package/dist/contributions-report.d.ts +28 -0
- package/dist/contributions-report.d.ts.map +1 -0
- package/dist/contributions-report.js +242 -0
- package/dist/convention-registry.d.ts +22 -0
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +79 -39
- package/dist/coverage-report.d.ts.map +1 -1
- package/dist/coverage-report.js +6 -6
- package/dist/custom-checks.d.ts +60 -1
- package/dist/custom-checks.d.ts.map +1 -1
- package/dist/custom-checks.js +159 -6
- package/dist/dashboard/dashboard-data.d.ts +6 -0
- package/dist/dashboard/dashboard-data.d.ts.map +1 -1
- package/dist/dashboard/dashboard-data.js +99 -8
- package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
- package/dist/dashboard/dashboard-knowledge.js +14 -2
- package/dist/decision-records.d.ts +20 -0
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +68 -20
- package/dist/declared-cross-references.d.ts +61 -0
- package/dist/declared-cross-references.d.ts.map +1 -0
- package/dist/declared-cross-references.js +550 -0
- package/dist/declared-gate-plane-rules.d.ts +24 -0
- package/dist/declared-gate-plane-rules.d.ts.map +1 -0
- package/dist/declared-gate-plane-rules.js +39 -0
- package/dist/declared-reference-coverage.d.ts +27 -0
- package/dist/declared-reference-coverage.d.ts.map +1 -0
- package/dist/declared-reference-coverage.js +50 -0
- package/dist/declared-xref-status.d.ts +19 -0
- package/dist/declared-xref-status.d.ts.map +1 -0
- package/dist/declared-xref-status.js +19 -0
- package/dist/delegate-pack-recipes.d.ts +13 -2
- package/dist/delegate-pack-recipes.d.ts.map +1 -1
- package/dist/delegate-pack-recipes.js +45 -14
- package/dist/demo-package.js +2 -2
- package/dist/demo-script.js +2 -2
- package/dist/demo-workflow.js +3 -3
- package/dist/dev-cycle.js +1 -1
- package/dist/dev-session.js +1 -1
- package/dist/doc-references.d.ts +80 -0
- package/dist/doc-references.d.ts.map +1 -0
- package/dist/doc-references.js +269 -0
- package/dist/doctor-result.d.ts +8 -0
- package/dist/doctor-result.d.ts.map +1 -1
- package/dist/doctor-verdict-kind.d.ts +19 -0
- package/dist/doctor-verdict-kind.d.ts.map +1 -0
- package/dist/doctor-verdict-kind.js +19 -0
- package/dist/doctor-verdict.d.ts +18 -0
- package/dist/doctor-verdict.d.ts.map +1 -0
- package/dist/doctor-verdict.js +28 -0
- package/dist/drift.d.ts +17 -0
- package/dist/drift.d.ts.map +1 -1
- package/dist/drift.js +40 -10
- package/dist/entrypoint-matrix.d.ts.map +1 -1
- package/dist/entrypoint-matrix.js +4 -1
- package/dist/feedback-ingestion.d.ts +28 -2
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +68 -19
- package/dist/fix-preview.d.ts.map +1 -1
- package/dist/fix-preview.js +9 -5
- package/dist/framework-extractor-outcomes.d.ts +27 -0
- package/dist/framework-extractor-outcomes.d.ts.map +1 -0
- package/dist/framework-extractor-outcomes.js +83 -0
- package/dist/fuzzy-impact.d.ts.map +1 -1
- package/dist/fuzzy-impact.js +12 -21
- package/dist/healing-plan.d.ts.map +1 -1
- package/dist/healing-plan.js +3 -4
- package/dist/helper-catalog.d.ts +25 -0
- package/dist/helper-catalog.d.ts.map +1 -0
- package/dist/helper-catalog.js +91 -0
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +17 -1
- package/dist/helper-view.d.ts +33 -0
- package/dist/helper-view.d.ts.map +1 -0
- package/dist/helper-view.js +1 -0
- package/dist/i-asset-doctor-flags.d.ts +16 -0
- package/dist/i-asset-doctor-flags.d.ts.map +1 -0
- package/dist/i-asset-doctor-flags.js +1 -0
- package/dist/i-command-resolution.d.ts +22 -0
- package/dist/i-command-resolution.d.ts.map +1 -0
- package/dist/i-command-resolution.js +1 -0
- package/dist/i-command-resolve-options.d.ts +24 -0
- package/dist/i-command-resolve-options.d.ts.map +1 -0
- package/dist/i-command-resolve-options.js +1 -0
- package/dist/i-command-safety.d.ts +13 -0
- package/dist/i-command-safety.d.ts.map +1 -0
- package/dist/i-command-safety.js +1 -0
- package/dist/i-contribution-accepted-entry.d.ts +18 -0
- package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
- package/dist/i-contribution-accepted-entry.js +1 -0
- package/dist/i-contribution-entry-rejection.d.ts +21 -0
- package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
- package/dist/i-contribution-entry-rejection.js +1 -0
- package/dist/i-contribution-file-issue.d.ts +18 -0
- package/dist/i-contribution-file-issue.d.ts.map +1 -0
- package/dist/i-contribution-file-issue.js +1 -0
- package/dist/i-contribution-file-report.d.ts +40 -0
- package/dist/i-contribution-file-report.d.ts.map +1 -0
- package/dist/i-contribution-file-report.js +1 -0
- package/dist/i-contribution-file-validation.d.ts +24 -0
- package/dist/i-contribution-file-validation.d.ts.map +1 -0
- package/dist/i-contribution-file-validation.js +1 -0
- package/dist/i-contributions-report.d.ts +31 -0
- package/dist/i-contributions-report.d.ts.map +1 -0
- package/dist/i-contributions-report.js +1 -0
- package/dist/i-declared-xref-field.d.ts +25 -0
- package/dist/i-declared-xref-field.d.ts.map +1 -0
- package/dist/i-declared-xref-field.js +1 -0
- package/dist/i-declared-xref-issue.d.ts +25 -0
- package/dist/i-declared-xref-issue.d.ts.map +1 -0
- package/dist/i-declared-xref-issue.js +1 -0
- package/dist/i-declared-xref-report.d.ts +48 -0
- package/dist/i-declared-xref-report.d.ts.map +1 -0
- package/dist/i-declared-xref-report.js +1 -0
- package/dist/i-declared-xref-row.d.ts +29 -0
- package/dist/i-declared-xref-row.d.ts.map +1 -0
- package/dist/i-declared-xref-row.js +1 -0
- package/dist/i-doctor-verdict.d.ts +10 -0
- package/dist/i-doctor-verdict.d.ts.map +1 -0
- package/dist/i-doctor-verdict.js +1 -0
- package/dist/i-kind-outcomes.d.ts +13 -0
- package/dist/i-kind-outcomes.d.ts.map +1 -0
- package/dist/i-kind-outcomes.js +1 -0
- package/dist/i-pack-doctor-verdict.d.ts +15 -0
- package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
- package/dist/i-pack-doctor-verdict.js +1 -0
- package/dist/i-probed-id-field.d.ts +17 -0
- package/dist/i-probed-id-field.d.ts.map +1 -0
- package/dist/i-probed-id-field.js +1 -0
- package/dist/i-reference-kind-declaration.d.ts +38 -0
- package/dist/i-reference-kind-declaration.d.ts.map +1 -0
- package/dist/i-reference-kind-declaration.js +1 -0
- package/dist/i-reference-warm-options.d.ts +21 -0
- package/dist/i-reference-warm-options.d.ts.map +1 -0
- package/dist/i-reference-warm-options.js +1 -0
- package/dist/i-registry-outcomes.d.ts +16 -0
- package/dist/i-registry-outcomes.d.ts.map +1 -0
- package/dist/i-registry-outcomes.js +1 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/i-scaffold-pattern-doctor-report.js +1 -0
- package/dist/i-search-tuning-key-probe.d.ts +30 -0
- package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
- package/dist/i-search-tuning-key-probe.js +1 -0
- package/dist/i-search-tuning-lint-issue.d.ts +61 -0
- package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-issue.js +1 -0
- package/dist/i-search-tuning-lint-report.d.ts +38 -0
- package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-report.js +1 -0
- package/dist/i-unresolvable-reference-scan.d.ts +14 -0
- package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
- package/dist/i-unresolvable-reference-scan.js +1 -0
- package/dist/i-unresolvable-reference.d.ts +29 -0
- package/dist/i-unresolvable-reference.d.ts.map +1 -0
- package/dist/i-unresolvable-reference.js +1 -0
- package/dist/i-workspace-profile-payload.d.ts +12 -0
- package/dist/i-workspace-profile-payload.d.ts.map +1 -0
- package/dist/i-workspace-profile-payload.js +1 -0
- package/dist/impact-analysis.d.ts +15 -0
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +58 -13
- package/dist/impact-render.d.ts.map +1 -1
- package/dist/impact-render.js +22 -0
- package/dist/import-hygiene.d.ts +35 -1
- package/dist/import-hygiene.d.ts.map +1 -1
- package/dist/import-hygiene.js +107 -13
- package/dist/index.d.ts +145 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +176 -0
- package/dist/inspection-discovery.d.ts +45 -0
- package/dist/inspection-discovery.d.ts.map +1 -0
- package/dist/inspection-discovery.js +70 -0
- package/dist/knowledge-advisory-code.d.ts +17 -0
- package/dist/knowledge-advisory-code.d.ts.map +1 -0
- package/dist/knowledge-advisory-code.js +17 -0
- package/dist/knowledge-aged-entry.d.ts +10 -0
- package/dist/knowledge-aged-entry.d.ts.map +1 -0
- package/dist/knowledge-aged-entry.js +1 -0
- package/dist/knowledge-authoring.d.ts +24 -1
- package/dist/knowledge-authoring.d.ts.map +1 -1
- package/dist/knowledge-authoring.js +46 -7
- package/dist/knowledge-entry-verdict-record.d.ts +22 -0
- package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict-record.js +1 -0
- package/dist/knowledge-entry-verdict.d.ts +17 -0
- package/dist/knowledge-entry-verdict.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict.js +17 -0
- package/dist/knowledge-graph.d.ts +6 -0
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +18 -7
- package/dist/knowledge-kind-bucket.d.ts +19 -0
- package/dist/knowledge-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-kind-bucket.js +1 -0
- package/dist/knowledge-load-failure.d.ts +23 -0
- package/dist/knowledge-load-failure.d.ts.map +1 -0
- package/dist/knowledge-load-failure.js +1 -0
- package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
- package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-reference-kind-bucket.js +1 -0
- package/dist/knowledge-stale-advisory.d.ts +14 -0
- package/dist/knowledge-stale-advisory.d.ts.map +1 -0
- package/dist/knowledge-stale-advisory.js +1 -0
- package/dist/knowledge-stale-coverage.d.ts +19 -0
- package/dist/knowledge-stale-coverage.d.ts.map +1 -0
- package/dist/knowledge-stale-coverage.js +1 -0
- package/dist/knowledge-stale-gate-flags.d.ts +33 -0
- package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-flags.js +1 -0
- package/dist/knowledge-stale-gate-input.d.ts +46 -0
- package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-input.js +1 -0
- package/dist/knowledge-stale-gate-result.d.ts +33 -0
- package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-result.js +1 -0
- package/dist/knowledge-stale-gate-rule.d.ts +33 -0
- package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-rule.js +1 -0
- package/dist/knowledge-stale-gate-violation.d.ts +13 -0
- package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-violation.js +1 -0
- package/dist/knowledge-stale-gate.d.ts +83 -0
- package/dist/knowledge-stale-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-gate.js +429 -0
- package/dist/knowledge-stale-quality-gate.d.ts +26 -0
- package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-quality-gate.js +110 -0
- package/dist/knowledge-stale.d.ts +122 -9
- package/dist/knowledge-stale.d.ts.map +1 -1
- package/dist/knowledge-stale.js +1002 -316
- package/dist/knowledge-unverifiable-reason.d.ts +12 -0
- package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
- package/dist/knowledge-unverifiable-reason.js +12 -0
- package/dist/loader-diagnostics.d.ts +14 -2
- package/dist/loader-diagnostics.d.ts.map +1 -1
- package/dist/match-terms.d.ts +48 -0
- package/dist/match-terms.d.ts.map +1 -0
- package/dist/match-terms.js +155 -0
- package/dist/migration-profile-registry.d.ts +10 -0
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +57 -34
- package/dist/migration-readiness.d.ts.map +1 -1
- package/dist/migration-readiness.js +1 -3
- package/dist/nearest-id.d.ts +14 -0
- package/dist/nearest-id.d.ts.map +1 -0
- package/dist/nearest-id.js +12 -0
- package/dist/pack-asset-freshness.d.ts +65 -0
- package/dist/pack-asset-freshness.d.ts.map +1 -0
- package/dist/pack-asset-freshness.js +340 -0
- package/dist/pack-author-ux.d.ts +24 -3
- package/dist/pack-author-ux.d.ts.map +1 -1
- package/dist/pack-author-ux.js +87 -93
- package/dist/pack-contributions-inventory.d.ts +79 -39
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +443 -286
- package/dist/pack-doctor-verdict.d.ts +29 -0
- package/dist/pack-doctor-verdict.d.ts.map +1 -0
- package/dist/pack-doctor-verdict.js +45 -0
- package/dist/pack-doctor.d.ts +74 -1
- package/dist/pack-doctor.d.ts.map +1 -1
- package/dist/pack-doctor.js +281 -1
- package/dist/pack-helper-plan.d.ts +24 -0
- package/dist/pack-helper-plan.d.ts.map +1 -0
- package/dist/pack-helper-plan.js +77 -0
- package/dist/pack-helper-registry.d.ts +14 -0
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +76 -37
- package/dist/pack-manifest-reader.d.ts +8 -0
- package/dist/pack-manifest-reader.d.ts.map +1 -0
- package/dist/pack-manifest-reader.js +79 -0
- package/dist/pack-release-check.d.ts +14 -1
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +23 -1
- package/dist/pack-signature-status.d.ts +18 -6
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +59 -105
- package/dist/pack-test-runner.d.ts +27 -5
- package/dist/pack-test-runner.d.ts.map +1 -1
- package/dist/pack-test-runner.js +91 -35
- package/dist/pack-typecheck.d.ts +8 -0
- package/dist/pack-typecheck.d.ts.map +1 -0
- package/dist/pack-typecheck.js +76 -0
- package/dist/plan-review.d.ts +2 -0
- package/dist/plan-review.d.ts.map +1 -1
- package/dist/plan-review.js +17 -5
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +16 -5
- package/dist/playbook-load-issue.d.ts +16 -0
- package/dist/playbook-load-issue.d.ts.map +1 -0
- package/dist/playbook-load-issue.js +1 -0
- package/dist/playbook-registry.d.ts +32 -1
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +144 -55
- package/dist/policy-declaration.d.ts +18 -0
- package/dist/policy-declaration.d.ts.map +1 -0
- package/dist/policy-declaration.js +1 -0
- package/dist/policy-engine.d.ts +8 -0
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +26 -9
- package/dist/policy-overrides.d.ts.map +1 -1
- package/dist/policy-overrides.js +4 -4
- package/dist/policy-registry.d.ts +42 -0
- package/dist/policy-registry.d.ts.map +1 -0
- package/dist/policy-registry.js +131 -0
- package/dist/probed-id-fields.d.ts +21 -0
- package/dist/probed-id-fields.d.ts.map +1 -0
- package/dist/probed-id-fields.js +25 -0
- package/dist/probed-id-source.d.ts +11 -0
- package/dist/probed-id-source.d.ts.map +1 -0
- package/dist/probed-id-source.js +11 -0
- package/dist/profile-registry.d.ts +25 -2
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +59 -6
- package/dist/quality-gate-examination.d.ts +15 -0
- package/dist/quality-gate-examination.d.ts.map +1 -0
- package/dist/quality-gate-examination.js +15 -0
- package/dist/quality-gate-row-status.d.ts +19 -0
- package/dist/quality-gate-row-status.d.ts.map +1 -0
- package/dist/quality-gate-row-status.js +28 -0
- package/dist/quality-gate-status.d.ts +16 -0
- package/dist/quality-gate-status.d.ts.map +1 -0
- package/dist/quality-gate-status.js +16 -0
- package/dist/quality-html.d.ts.map +1 -1
- package/dist/quality-html.js +14 -3
- package/dist/quality-report-coverage.d.ts +26 -0
- package/dist/quality-report-coverage.d.ts.map +1 -0
- package/dist/quality-report-coverage.js +48 -0
- package/dist/quality-report.d.ts +28 -1
- package/dist/quality-report.d.ts.map +1 -1
- package/dist/quality-report.js +263 -35
- package/dist/query-intent-kind.d.ts +18 -0
- package/dist/query-intent-kind.d.ts.map +1 -0
- package/dist/query-intent-kind.js +18 -0
- package/dist/query-intent-result.d.ts +23 -0
- package/dist/query-intent-result.d.ts.map +1 -0
- package/dist/query-intent-result.js +1 -0
- package/dist/query-intent.d.ts +18 -0
- package/dist/query-intent.d.ts.map +1 -0
- package/dist/query-intent.js +336 -0
- package/dist/query-resolver.d.ts +18 -0
- package/dist/query-resolver.d.ts.map +1 -1
- package/dist/query-resolver.js +15 -12
- package/dist/ranked-recommendations.d.ts +36 -0
- package/dist/ranked-recommendations.d.ts.map +1 -0
- package/dist/ranked-recommendations.js +1 -0
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +38 -10
- package/dist/recommend-recipe.d.ts +17 -0
- package/dist/recommend-recipe.d.ts.map +1 -0
- package/dist/recommend-recipe.js +1 -0
- package/dist/recommend-recipes.d.ts +9 -0
- package/dist/recommend-recipes.d.ts.map +1 -0
- package/dist/recommend-recipes.js +106 -0
- package/dist/recommendation-candidate.d.ts +30 -0
- package/dist/recommendation-candidate.d.ts.map +1 -0
- package/dist/recommendation-candidate.js +1 -0
- package/dist/recommendation-confidence.d.ts +27 -0
- package/dist/recommendation-confidence.d.ts.map +1 -0
- package/dist/recommendation-confidence.js +1 -0
- package/dist/recommendation-ranking-options.d.ts +24 -0
- package/dist/recommendation-ranking-options.d.ts.map +1 -0
- package/dist/recommendation-ranking-options.js +1 -0
- package/dist/recommendation-ranking.d.ts +50 -0
- package/dist/recommendation-ranking.d.ts.map +1 -0
- package/dist/recommendation-ranking.js +527 -0
- package/dist/recommendation-source.d.ts +23 -0
- package/dist/recommendation-source.d.ts.map +1 -0
- package/dist/recommendation-source.js +23 -0
- package/dist/recommendation-suppression.d.ts +14 -0
- package/dist/recommendation-suppression.d.ts.map +1 -0
- package/dist/recommendation-suppression.js +14 -0
- package/dist/reference-asset-kind.d.ts +14 -0
- package/dist/reference-asset-kind.d.ts.map +1 -0
- package/dist/reference-asset-kind.js +14 -0
- package/dist/reference-content-check.d.ts +32 -0
- package/dist/reference-content-check.d.ts.map +1 -0
- package/dist/reference-content-check.js +143 -0
- package/dist/reference-failure.d.ts +31 -0
- package/dist/reference-failure.d.ts.map +1 -0
- package/dist/reference-failure.js +31 -0
- package/dist/reference-id-status.d.ts +15 -0
- package/dist/reference-id-status.d.ts.map +1 -0
- package/dist/reference-id-status.js +15 -0
- package/dist/reference-kind-declarations.d.ts +42 -0
- package/dist/reference-kind-declarations.d.ts.map +1 -0
- package/dist/reference-kind-declarations.js +142 -0
- package/dist/reference-lookup.d.ts +6 -0
- package/dist/reference-lookup.d.ts.map +1 -1
- package/dist/reference-lookup.js +13 -5
- package/dist/reference-registry.d.ts +210 -0
- package/dist/reference-registry.d.ts.map +1 -0
- package/dist/reference-registry.js +395 -0
- package/dist/reference-subject.d.ts +20 -0
- package/dist/reference-subject.d.ts.map +1 -0
- package/dist/reference-subject.js +1 -0
- package/dist/registration-hint-discovery-status.d.ts +25 -0
- package/dist/registration-hint-discovery-status.d.ts.map +1 -0
- package/dist/registration-hint-discovery-status.js +25 -0
- package/dist/registration-hint-registry.d.ts +80 -0
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +356 -138
- package/dist/registry-lifecycle.d.ts +200 -19
- package/dist/registry-lifecycle.d.ts.map +1 -1
- package/dist/registry-lifecycle.js +526 -136
- package/dist/release-readiness.d.ts.map +1 -1
- package/dist/release-readiness.js +10 -7
- package/dist/release-smoke.d.ts.map +1 -1
- package/dist/release-smoke.js +11 -7
- package/dist/report-site.d.ts.map +1 -1
- package/dist/report-site.js +25 -7
- package/dist/repository-intelligence.d.ts.map +1 -1
- package/dist/repository-intelligence.js +3 -2
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/repository-knowledge-model.js +18 -5
- package/dist/resolve-project-config.d.ts +64 -0
- package/dist/resolve-project-config.d.ts.map +1 -1
- package/dist/resolve-project-config.js +258 -32
- package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
- package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
- package/dist/reuse/compute-reuse-coverage.js +198 -0
- package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
- package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-candidates.js +212 -0
- package/dist/reuse/rank-reuse-options.d.ts +20 -0
- package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-options.js +1 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-suggestions.js +31 -0
- package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
- package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
- package/dist/reuse/resolve-curated-reuse.js +115 -0
- package/dist/reuse/reuse-candidate.d.ts +29 -0
- package/dist/reuse/reuse-candidate.d.ts.map +1 -0
- package/dist/reuse/reuse-candidate.js +1 -0
- package/dist/reuse/reuse-coverage-report.d.ts +74 -0
- package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
- package/dist/reuse/reuse-coverage-report.js +1 -0
- package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
- package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-coverage.js +1 -0
- package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
- package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-resolution.js +1 -0
- package/dist/reuse/reuse-curated-status.d.ts +21 -0
- package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-status.js +21 -0
- package/dist/reuse/reuse-match-detail.d.ts +15 -0
- package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
- package/dist/reuse/reuse-match-detail.js +1 -0
- package/dist/reuse/reuse-ranking.d.ts +37 -0
- package/dist/reuse/reuse-ranking.d.ts.map +1 -0
- package/dist/reuse/reuse-ranking.js +1 -0
- package/dist/reuse/reuse-suggestion.d.ts +19 -0
- package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
- package/dist/reuse/reuse-suggestion.js +1 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
- package/dist/reuse/reuse-symbol-lookup.js +1 -0
- package/dist/reuse/reuse-tokenize.d.ts +11 -0
- package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
- package/dist/reuse/reuse-tokenize.js +26 -0
- package/dist/reuse/score-reuse-name.d.ts +16 -0
- package/dist/reuse/score-reuse-name.d.ts.map +1 -0
- package/dist/reuse/score-reuse-name.js +35 -0
- package/dist/reuse/score-reuse-primitive.d.ts +33 -0
- package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
- package/dist/reuse/score-reuse-primitive.js +92 -0
- package/dist/review-packet.d.ts +2 -0
- package/dist/review-packet.d.ts.map +1 -1
- package/dist/review-packet.js +13 -6
- package/dist/role-views.d.ts.map +1 -1
- package/dist/role-views.js +16 -16
- package/dist/routing-recommends-channels.d.ts +24 -0
- package/dist/routing-recommends-channels.d.ts.map +1 -0
- package/dist/routing-recommends-channels.js +19 -0
- package/dist/run-boundary-check.d.ts +118 -0
- package/dist/run-boundary-check.d.ts.map +1 -0
- package/dist/run-boundary-check.js +592 -0
- package/dist/safety-audit.js +1 -1
- package/dist/scaffold-coverage.js +1 -1
- package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
- package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/scaffold-pattern-doctor-report.js +54 -0
- package/dist/scaffold-patterns.d.ts +75 -1
- package/dist/scaffold-patterns.d.ts.map +1 -1
- package/dist/scaffold-patterns.js +375 -84
- package/dist/schema-inventory.d.ts.map +1 -1
- package/dist/schema-inventory.js +4 -3
- package/dist/search-document-id.d.ts +52 -0
- package/dist/search-document-id.d.ts.map +1 -0
- package/dist/search-document-id.js +72 -0
- package/dist/search-document-prefix.d.ts +7 -0
- package/dist/search-document-prefix.d.ts.map +1 -0
- package/dist/search-document-prefix.js +1 -0
- package/dist/search-index.d.ts.map +1 -1
- package/dist/search-index.js +20 -23
- package/dist/search-tuning-explain.d.ts +6 -0
- package/dist/search-tuning-explain.d.ts.map +1 -1
- package/dist/search-tuning-explain.js +19 -17
- package/dist/search-tuning-key-probes.d.ts +16 -0
- package/dist/search-tuning-key-probes.d.ts.map +1 -0
- package/dist/search-tuning-key-probes.js +65 -0
- package/dist/search-tuning-key-resolution.d.ts +25 -0
- package/dist/search-tuning-key-resolution.d.ts.map +1 -0
- package/dist/search-tuning-key-resolution.js +1 -0
- package/dist/search-tuning-key-resolver.d.ts +4 -0
- package/dist/search-tuning-key-resolver.d.ts.map +1 -0
- package/dist/search-tuning-key-resolver.js +107 -0
- package/dist/search-tuning-key-status.d.ts +24 -0
- package/dist/search-tuning-key-status.d.ts.map +1 -0
- package/dist/search-tuning-key-status.js +24 -0
- package/dist/search-tuning-lint.d.ts +9 -0
- package/dist/search-tuning-lint.d.ts.map +1 -0
- package/dist/search-tuning-lint.js +468 -0
- package/dist/search-tuning-registry.d.ts +43 -0
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +214 -49
- package/dist/self-audit.d.ts +12 -0
- package/dist/self-audit.d.ts.map +1 -1
- package/dist/self-audit.js +36 -10
- package/dist/self-config-doctor-v2.d.ts +145 -3
- package/dist/self-config-doctor-v2.d.ts.map +1 -1
- package/dist/self-config-doctor-v2.js +1329 -255
- package/dist/self-config-doctor.d.ts +20 -1
- package/dist/self-config-doctor.d.ts.map +1 -1
- package/dist/self-config-doctor.js +65 -309
- package/dist/settled-unit-states.d.ts +9 -0
- package/dist/settled-unit-states.d.ts.map +1 -0
- package/dist/settled-unit-states.js +14 -0
- package/dist/sharkcraft-inspector.d.ts +47 -1
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +278 -29
- package/dist/spec/spec-evidence.d.ts.map +1 -1
- package/dist/spec/spec-evidence.js +14 -20
- package/dist/split-identifier.d.ts +21 -0
- package/dist/split-identifier.d.ts.map +1 -0
- package/dist/split-identifier.js +27 -0
- package/dist/start-here.d.ts.map +1 -1
- package/dist/start-here.js +1 -2
- package/dist/substitute-placeholders.d.ts +8 -0
- package/dist/substitute-placeholders.d.ts.map +1 -0
- package/dist/substitute-placeholders.js +9 -0
- package/dist/symbol-index.d.ts +33 -0
- package/dist/symbol-index.d.ts.map +1 -1
- package/dist/symbol-index.js +241 -3
- package/dist/symbol-member-entry.d.ts +26 -0
- package/dist/symbol-member-entry.d.ts.map +1 -0
- package/dist/symbol-member-entry.js +1 -0
- package/dist/symbol-member-kind.d.ts +14 -0
- package/dist/symbol-member-kind.d.ts.map +1 -0
- package/dist/symbol-member-kind.js +14 -0
- package/dist/task-packet.d.ts.map +1 -1
- package/dist/task-packet.js +52 -9
- package/dist/task-ranker.d.ts +8 -0
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +25 -13
- package/dist/task-risk.js +1 -1
- package/dist/task-routing-hint-registry.d.ts +20 -1
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +186 -42
- package/dist/template-drift.d.ts.map +1 -1
- package/dist/template-drift.js +30 -9
- package/dist/template-lint.d.ts.map +1 -1
- package/dist/template-lint.js +160 -2
- package/dist/term-query.d.ts +10 -0
- package/dist/term-query.d.ts.map +1 -0
- package/dist/term-query.js +1 -0
- package/dist/test-definitions.d.ts +6 -3
- package/dist/test-definitions.d.ts.map +1 -1
- package/dist/test-runner.d.ts +95 -10
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +309 -318
- package/dist/tuning-query-tokens.d.ts +29 -0
- package/dist/tuning-query-tokens.d.ts.map +1 -0
- package/dist/tuning-query-tokens.js +51 -0
- package/dist/typecheck-files.d.ts +36 -0
- package/dist/typecheck-files.d.ts.map +1 -0
- package/dist/typecheck-files.js +158 -0
- package/dist/uncertainty.js +1 -1
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +5 -3
- package/dist/unregistered-exports.d.ts +19 -0
- package/dist/unregistered-exports.d.ts.map +1 -0
- package/dist/unregistered-exports.js +141 -0
- package/dist/unresolvable-reason.d.ts +11 -0
- package/dist/unresolvable-reason.d.ts.map +1 -0
- package/dist/unresolvable-reason.js +11 -0
- package/dist/upgrade-advisor.d.ts.map +1 -1
- package/dist/upgrade-advisor.js +16 -9
- package/dist/validate-contribution-file.d.ts +4 -0
- package/dist/validate-contribution-file.d.ts.map +1 -0
- package/dist/validate-contribution-file.js +228 -0
- package/dist/why-file.d.ts +3 -0
- package/dist/why-file.d.ts.map +1 -1
- package/dist/why-file.js +7 -3
- package/package.json +17 -17
|
@@ -100,7 +100,7 @@ const CONDITIONAL_GATES = [
|
|
|
100
100
|
f.path.startsWith('sharkcraft/')),
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
|
-
command: 'shrk
|
|
103
|
+
command: 'shrk quality',
|
|
104
104
|
category: 'gate',
|
|
105
105
|
reason: ReplayReason.Inspector,
|
|
106
106
|
trigger: (r) => r.files.some((f) => f.area === ChangeArea.Inspector),
|
|
@@ -63,7 +63,7 @@ export const PUBLIC_API_CHANGE_TEMPLATE = t({
|
|
|
63
63
|
RULE_ERR('packages/plugin-api/**/internal/**', ContractFileRuleKind.Glob, 'Never touch internal/* from a public-API change.'),
|
|
64
64
|
RULE_ERR('.git/**', ContractFileRuleKind.Glob, 'Never write to git internals.'),
|
|
65
65
|
],
|
|
66
|
-
defaultRequiredValidations: ['bun test', 'shrk doctor', 'shrk check boundaries', 'shrk api
|
|
66
|
+
defaultRequiredValidations: ['bun test', 'shrk doctor', 'shrk check boundaries', 'shrk api-diff .sharkcraft/api-baseline.json --fail-on-breaking'],
|
|
67
67
|
defaultHumanApprovalGates: [
|
|
68
68
|
'API reviewer approves the surface diff before `shrk apply`.',
|
|
69
69
|
'Update CHANGELOG.md with public-API change notes.',
|
|
@@ -75,7 +75,7 @@ export const PUBLIC_API_CHANGE_TEMPLATE = t({
|
|
|
75
75
|
],
|
|
76
76
|
defaultRollbackPlan: [
|
|
77
77
|
'Revert the API change PR.',
|
|
78
|
-
'Re-run `shrk api
|
|
78
|
+
'Re-run `shrk api-diff .sharkcraft/api-baseline.json --fail-on-breaking` to confirm clean surface.',
|
|
79
79
|
],
|
|
80
80
|
appliesWhen: {
|
|
81
81
|
taskKeywords: ['public api', 'plugin-api', 'exported', 'public surface'],
|
|
@@ -126,18 +126,18 @@ export const MIGRATION_TASK_TEMPLATE = t({
|
|
|
126
126
|
RULE_ERR('package.json', ContractFileRuleKind.Exact, 'Do not bump dep versions mid-migration.'),
|
|
127
127
|
RULE_ERR('.git/**', ContractFileRuleKind.Glob, 'Never write to git internals.'),
|
|
128
128
|
],
|
|
129
|
-
defaultRequiredValidations: ['bun test', 'shrk doctor', 'shrk
|
|
129
|
+
defaultRequiredValidations: ['bun test', 'shrk doctor', 'shrk migrate plan <id>'],
|
|
130
130
|
defaultHumanApprovalGates: [
|
|
131
|
-
'
|
|
131
|
+
'The migration plan (`shrk migrate plan <id>`) must be reviewed before applying it.',
|
|
132
132
|
],
|
|
133
133
|
defaultDefinitionOfDone: [
|
|
134
134
|
'All migration steps reviewed.',
|
|
135
|
-
'
|
|
135
|
+
'The migration plan was reviewed.',
|
|
136
136
|
'Tests + boundary check pass after each step.',
|
|
137
137
|
],
|
|
138
138
|
defaultRollbackPlan: [
|
|
139
139
|
'Revert the migration commit.',
|
|
140
|
-
'Re-run `shrk
|
|
140
|
+
'Re-run `shrk migrate plan <id>` to confirm the rollback state.',
|
|
141
141
|
],
|
|
142
142
|
appliesWhen: {
|
|
143
143
|
taskKeywords: ['migrate', 'migration', 'refactor', 'rename', 'rip out', 'retire'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-contract.d.ts","sourceRoot":"","sources":["../src/agent-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AAEpE,oBAAY,iBAAiB;IAC3B,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,qBAAqB,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpD,sBAAsB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtD,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"agent-contract.d.ts","sourceRoot":"","sources":["../src/agent-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AAEpE,oBAAY,iBAAiB;IAC3B,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,qBAAqB,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpD,sBAAsB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtD,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AA2XD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,cAAc,CAAC,CA0GzB;AAOD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CA8BjE;AAOD,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CA+BrE;AAWD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAGjE"}
|
package/dist/agent-contract.js
CHANGED
|
@@ -204,15 +204,18 @@ function buildAllowedCommands(role, intent) {
|
|
|
204
204
|
const t = JSON.stringify(intent.task || '<task>');
|
|
205
205
|
const out = [
|
|
206
206
|
`shrk brief ${t}`,
|
|
207
|
-
|
|
207
|
+
// The risk report carries the change intent; there is no separate intent verb.
|
|
208
208
|
`shrk risk ${t} --include-memory`,
|
|
209
209
|
`shrk impact --since main`,
|
|
210
210
|
'shrk check boundaries',
|
|
211
211
|
];
|
|
212
212
|
if (role === RoleId.AiAgent) {
|
|
213
|
-
|
|
213
|
+
// The handoff is a brief mode, not a verb of its own.
|
|
214
|
+
out.push(`shrk brief ${t} --mode handoff`);
|
|
214
215
|
out.push(`shrk orchestrate ${t} --mode conservative`);
|
|
215
|
-
|
|
216
|
+
// There was never an agent-graph verb (the execution graph is the MCP
|
|
217
|
+
// `create_execution_graph` tool); the task packet is the CLI's answer.
|
|
218
|
+
out.push(`shrk task ${t}`);
|
|
216
219
|
}
|
|
217
220
|
if (role === RoleId.Reviewer || role === RoleId.Architect) {
|
|
218
221
|
out.push('shrk review packet --v3 --since main');
|
|
@@ -225,6 +228,8 @@ function buildAllowedCommands(role, intent) {
|
|
|
225
228
|
}
|
|
226
229
|
return uniq(out);
|
|
227
230
|
}
|
|
231
|
+
/** The migration gate: the named migration's plan (there is no migration-readiness verb). */
|
|
232
|
+
const MIGRATION_PLAN_COMMAND = 'shrk migrate plan <id>';
|
|
228
233
|
function buildRequiredValidations(intent, risk) {
|
|
229
234
|
const out = new Set();
|
|
230
235
|
out.add('bun x tsc -p tsconfig.base.json --noEmit');
|
|
@@ -244,7 +249,7 @@ function buildRequiredValidations(intent, risk) {
|
|
|
244
249
|
out.add('shrk release readiness --strict');
|
|
245
250
|
}
|
|
246
251
|
if (isMigrationTask(intent)) {
|
|
247
|
-
out.add(
|
|
252
|
+
out.add(MIGRATION_PLAN_COMMAND);
|
|
248
253
|
}
|
|
249
254
|
return [...out];
|
|
250
255
|
}
|
|
@@ -319,8 +324,8 @@ function buildDefinitionOfDone(intent, validations) {
|
|
|
319
324
|
if (isReleaseTask(intent)) {
|
|
320
325
|
out.push('CHANGELOG entry exists; preflight is green.');
|
|
321
326
|
}
|
|
322
|
-
if (validations.includes(
|
|
323
|
-
out.push('
|
|
327
|
+
if (validations.includes(MIGRATION_PLAN_COMMAND)) {
|
|
328
|
+
out.push('The migration plan was reviewed before it was applied.');
|
|
324
329
|
}
|
|
325
330
|
return out;
|
|
326
331
|
}
|
|
@@ -343,7 +348,7 @@ function buildSafetyNotes(role, intent, risk) {
|
|
|
343
348
|
];
|
|
344
349
|
if (role === RoleId.AiAgent) {
|
|
345
350
|
out.push('Agent contract requires explicit human approval before apply.');
|
|
346
|
-
out.push('Always run shrk
|
|
351
|
+
out.push('Always run shrk brief (or its handoff mode) before first action.');
|
|
347
352
|
}
|
|
348
353
|
if (risk.riskLevel === TaskRiskLevel.High || risk.riskLevel === TaskRiskLevel.Critical) {
|
|
349
354
|
out.push(`Risk level is ${risk.riskLevel} — extra approval required.`);
|
|
@@ -356,7 +361,7 @@ function buildSafetyNotes(role, intent, risk) {
|
|
|
356
361
|
function buildRecommendedNextCommand(role, intent) {
|
|
357
362
|
const t = JSON.stringify(intent.task || '<task>');
|
|
358
363
|
if (role === RoleId.AiAgent)
|
|
359
|
-
return `shrk
|
|
364
|
+
return `shrk brief ${t} --mode handoff`;
|
|
360
365
|
if (role === RoleId.ReleaseManager)
|
|
361
366
|
return 'shrk release readiness --strict';
|
|
362
367
|
if (role === RoleId.Security)
|
|
@@ -56,7 +56,7 @@ function planPhase(intent, mode) {
|
|
|
56
56
|
]
|
|
57
57
|
: [
|
|
58
58
|
`shrk dev start "${intent.task}"`,
|
|
59
|
-
`shrk
|
|
59
|
+
`shrk brief "${intent.task}" --mode handoff --output .sharkcraft/handoff.md`,
|
|
60
60
|
`shrk gen <templateId> <name> --dry-run --save-plan /tmp/plan.json`,
|
|
61
61
|
];
|
|
62
62
|
return {
|
|
@@ -92,7 +92,7 @@ function reviewPhase(intent, mode) {
|
|
|
92
92
|
function applyPhase(intent, mode) {
|
|
93
93
|
const writePhase = intent.kind === ChangeIntentKind.Release ? 'release' : 'apply';
|
|
94
94
|
const cmds = writePhase === 'release'
|
|
95
|
-
? ['shrk release readiness --strict', 'shrk release smoke --scenario all', '
|
|
95
|
+
? ['shrk release readiness --strict', 'shrk release smoke --scenario all', 'bun run release:preflight']
|
|
96
96
|
: [
|
|
97
97
|
'shrk apply /tmp/plan.json --verify-signature --validate --verification typecheck --verification unit-tests',
|
|
98
98
|
];
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type ReferenceKind } from './reference-registry.js';
|
|
2
|
+
import type { ITaskRoutingRecommends } from '@shrkcrft/plugin-api';
|
|
1
3
|
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
2
4
|
export declare const AGENT_TASK_PREP_SCHEMA = "sharkcraft.agent-task-prep/v1";
|
|
3
5
|
export interface IAgentTaskPrepReport {
|
|
@@ -19,10 +21,24 @@ export interface IAgentTaskPrepReport {
|
|
|
19
21
|
id: string;
|
|
20
22
|
title: string;
|
|
21
23
|
}[];
|
|
24
|
+
/** Matched routing hints, each with the channels it recommends. */
|
|
22
25
|
readonly routingHints: readonly {
|
|
23
26
|
id: string;
|
|
24
27
|
title: string;
|
|
25
28
|
reasons: readonly string[];
|
|
29
|
+
recommends: Readonly<Partial<Record<keyof ITaskRoutingRecommends, readonly string[]>>>;
|
|
30
|
+
}[];
|
|
31
|
+
/**
|
|
32
|
+
* Every NON-command asset the matched routing hints recommend (templates,
|
|
33
|
+
* playbooks, pipelines, rules, path conventions, knowledge, policies, …) that
|
|
34
|
+
* resolves in its registry, deduped, in hint-score order. Only
|
|
35
|
+
* `recommends.commands` used to have a consumer; the other channels loaded,
|
|
36
|
+
* validated, and reached nothing.
|
|
37
|
+
*/
|
|
38
|
+
readonly recommendedAssets: readonly {
|
|
39
|
+
kind: ReferenceKind;
|
|
40
|
+
id: string;
|
|
41
|
+
hintId: string;
|
|
26
42
|
}[];
|
|
27
43
|
readonly safetyNotes: readonly string[];
|
|
28
44
|
readonly nextSafeAction: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-task-prep.d.ts","sourceRoot":"","sources":["../src/agent-task-prep.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-task-prep.d.ts","sourceRoot":"","sources":["../src/agent-task-prep.ts"],"names":[],"mappings":"AAqBA,OAAO,EAA8C,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKzG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,QAAQ,CAAC,mBAAmB,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvE,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,SAAS;QAC9B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;KACxF,EAAE,CAAC;IACJ;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,EAAE,SAAS;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3F,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAcD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,oBAAoB,CAAC,CAkF/B"}
|
package/dist/agent-task-prep.js
CHANGED
|
@@ -16,13 +16,49 @@ import { buildTaskPacket } from "./task-packet.js";
|
|
|
16
16
|
import { listConventions } from "./convention-registry.js";
|
|
17
17
|
import { listTaskRoutingHints, explainTaskRouting } from "./task-routing-hint-registry.js";
|
|
18
18
|
import { buildUncertaintySummary } from "./uncertainty.js";
|
|
19
|
+
import { matchTerm, prepareTermQuery } from "./match-terms.js";
|
|
20
|
+
import { classifyQueryIntent } from "./query-intent.js";
|
|
21
|
+
import { QueryIntent } from "./query-intent-kind.js";
|
|
22
|
+
import { referenceIdExists, warmReferenceRegistries } from "./reference-registry.js";
|
|
23
|
+
import { ROUTING_RECOMMENDS_CHANNEL_KEYS, ROUTING_RECOMMENDS_CHANNELS, } from "./routing-recommends-channels.js";
|
|
19
24
|
export const AGENT_TASK_PREP_SCHEMA = 'sharkcraft.agent-task-prep/v1';
|
|
25
|
+
/** The channels a hint actually declares, copied — never the hint object itself. */
|
|
26
|
+
function recommendsSummary(recommends) {
|
|
27
|
+
const out = {};
|
|
28
|
+
for (const channel of ROUTING_RECOMMENDS_CHANNEL_KEYS) {
|
|
29
|
+
const ids = recommends?.[channel];
|
|
30
|
+
if (Array.isArray(ids) && ids.length > 0)
|
|
31
|
+
out[channel] = [...ids];
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
20
35
|
export async function prepareAgentTask(inspection, task) {
|
|
21
36
|
const packet = buildTaskPacket(inspection, task);
|
|
22
37
|
const uncertaintyReport = buildUncertaintySummary(packet);
|
|
23
38
|
const conventions = await listConventions(inspection);
|
|
24
39
|
const routing = await explainTaskRouting(inspection, task);
|
|
25
40
|
await listTaskRoutingHints(inspection); // warm cache
|
|
41
|
+
// THE id resolver answers "does this recommended id exist?" — the same one
|
|
42
|
+
// the self-config doctor probes these channels with.
|
|
43
|
+
await warmReferenceRegistries(inspection);
|
|
44
|
+
const recommendedAssets = [];
|
|
45
|
+
const seenAssets = new Set();
|
|
46
|
+
for (const match of routing) {
|
|
47
|
+
for (const channel of ROUTING_RECOMMENDS_CHANNEL_KEYS) {
|
|
48
|
+
const spec = ROUTING_RECOMMENDS_CHANNELS[channel];
|
|
49
|
+
if (spec.kind === 'command')
|
|
50
|
+
continue;
|
|
51
|
+
for (const id of match.hint.recommends?.[channel] ?? []) {
|
|
52
|
+
if (typeof id !== 'string' || !referenceIdExists(inspection, spec.kind, id))
|
|
53
|
+
continue;
|
|
54
|
+
const key = `${spec.kind}:${id}`;
|
|
55
|
+
if (seenAssets.has(key))
|
|
56
|
+
continue;
|
|
57
|
+
seenAssets.add(key);
|
|
58
|
+
recommendedAssets.push({ kind: spec.kind, id, hintId: match.hint.id });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
26
62
|
const inspectionCommands = [
|
|
27
63
|
`shrk context --task "${task}" --commands-first`,
|
|
28
64
|
`shrk task "${task}"`,
|
|
@@ -40,12 +76,17 @@ export async function prepareAgentTask(inspection, task) {
|
|
|
40
76
|
'shrk self-config doctor',
|
|
41
77
|
];
|
|
42
78
|
const primaryCommands = routing.flatMap((m) => m.hint.recommends.commands ?? []).slice(0, 5);
|
|
79
|
+
// THE query-intent classifier and THE term matcher — this used to be a
|
|
80
|
+
// fifth ad-hoc verb-regex set ("add" anywhere meant generate-code, so
|
|
81
|
+
// "fix the bug the last add introduced" was create work).
|
|
82
|
+
const queryIntent = classifyQueryIntent(task);
|
|
83
|
+
const termQuery = prepareTermQuery(task);
|
|
43
84
|
const intentHints = [];
|
|
44
|
-
if (
|
|
85
|
+
if (queryIntent.intent === QueryIntent.Refactor || matchTerm(termQuery, 'rename'))
|
|
45
86
|
intentHints.push('refactor');
|
|
46
|
-
if (
|
|
87
|
+
if (matchTerm(termQuery, 'remove') || matchTerm(termQuery, 'delete'))
|
|
47
88
|
intentHints.push('removal');
|
|
48
|
-
if (
|
|
89
|
+
if (queryIntent.createVerb !== undefined)
|
|
49
90
|
intentHints.push('generate-code');
|
|
50
91
|
return {
|
|
51
92
|
schema: AGENT_TASK_PREP_SCHEMA,
|
|
@@ -60,7 +101,13 @@ export async function prepareAgentTask(inspection, task) {
|
|
|
60
101
|
validationCommands,
|
|
61
102
|
relevantProfiles: [],
|
|
62
103
|
relevantConventions: conventions.slice(0, 5).map((e) => ({ id: e.convention.id, title: e.convention.title })),
|
|
63
|
-
routingHints: routing.slice(0, 5).map((m) => ({
|
|
104
|
+
routingHints: routing.slice(0, 5).map((m) => ({
|
|
105
|
+
id: m.hint.id,
|
|
106
|
+
title: m.hint.title,
|
|
107
|
+
reasons: m.reasons,
|
|
108
|
+
recommends: recommendsSummary(m.hint.recommends),
|
|
109
|
+
})),
|
|
110
|
+
recommendedAssets,
|
|
64
111
|
safetyNotes: [
|
|
65
112
|
'SharkCraft engine never auto-applies plans. The human runs `shrk apply --verify-signature`.',
|
|
66
113
|
'MCP tools are read-only; every write happens via the CLI.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-readiness.d.ts","sourceRoot":"","sources":["../src/ai-readiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAYvE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,OAAO,EAAE,kBAAkB,CAAC;IAC5B,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,mBAAmB,EAAE,OAAO,CAAC;IAC7B,qEAAqE;IACrE,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,8EAA8E;IAC9E,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,wEAAwE;IACxE,cAAc,EAAE,eAAe,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,UAAU,EAAE,OAAO,CAAC;IACpB,wHAAwH;IACxH,aAAa,EAAE,OAAO,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"ai-readiness.d.ts","sourceRoot":"","sources":["../src/ai-readiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAYvE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,OAAO,EAAE,kBAAkB,CAAC;IAC5B,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,mBAAmB,EAAE,OAAO,CAAC;IAC7B,qEAAqE;IACrE,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,8EAA8E;IAC9E,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,wEAAwE;IACxE,cAAc,EAAE,eAAe,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,UAAU,EAAE,OAAO,CAAC;IACpB,wHAAwH;IACxH,aAAa,EAAE,OAAO,CAAC;CACxB;AAkFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,qBAAqB,GAAG,gBAAgB,CAkW1F"}
|
package/dist/ai-readiness.js
CHANGED
|
@@ -85,6 +85,14 @@ function classifyShape(profiles) {
|
|
|
85
85
|
}
|
|
86
86
|
return { label, isLibrary, isService, isMonorepo, isApplication };
|
|
87
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Readiness wording for a config file that EXISTS but failed to load — one
|
|
90
|
+
* string for the dimension note and the blocker. The inspection leaves
|
|
91
|
+
* `configFile` null for both "missing" and "invalid"; `configLoadError` is what
|
|
92
|
+
* tells them apart, and "create the file" is the wrong fix for a file that is
|
|
93
|
+
* there.
|
|
94
|
+
*/
|
|
95
|
+
const CONFIG_INVALID_NOTE = 'sharkcraft.config.ts invalid — not loaded (see config-invalid)';
|
|
88
96
|
/**
|
|
89
97
|
* Deterministic AI-readiness report.
|
|
90
98
|
*
|
|
@@ -136,6 +144,9 @@ export function buildAiReadinessReport(inspection) {
|
|
|
136
144
|
? 'core'
|
|
137
145
|
: 'advisory';
|
|
138
146
|
// 1) Config present — always core (this is the "did you opt in?" signal).
|
|
147
|
+
// An INVALID config (the file exists but failed the schema / import) leaves
|
|
148
|
+
// `configFile` null too, so `configLoadError` is checked first: telling the
|
|
149
|
+
// user to "create" a file that exists sends them to the wrong fix.
|
|
139
150
|
dims.push({
|
|
140
151
|
id: 'config',
|
|
141
152
|
title: 'sharkcraft.config.ts present',
|
|
@@ -143,10 +154,15 @@ export function buildAiReadinessReport(inspection) {
|
|
|
143
154
|
score: inspection.configFile ? 10 : 0,
|
|
144
155
|
note: inspection.configFile
|
|
145
156
|
? `loaded from ${inspection.configFile}`
|
|
146
|
-
:
|
|
157
|
+
: inspection.configLoadError
|
|
158
|
+
? CONFIG_INVALID_NOTE
|
|
159
|
+
: 'missing — using defaults',
|
|
147
160
|
applies: 'core',
|
|
148
161
|
});
|
|
149
|
-
if (
|
|
162
|
+
if (inspection.configLoadError) {
|
|
163
|
+
recs.push(`Fix ${inspection.configLoadError.file ?? 'sharkcraft.config.ts'} — it exists but failed to load (run \`shrk doctor\`, check \`config-invalid\`).`);
|
|
164
|
+
}
|
|
165
|
+
else if (!inspection.configFile) {
|
|
150
166
|
recs.push('Create sharkcraft/sharkcraft.config.ts to opt in to project-specific config.');
|
|
151
167
|
}
|
|
152
168
|
// 2) Knowledge entries — softcap at 15 (focused) and full at 22.
|
|
@@ -402,7 +418,9 @@ export function buildAiReadinessReport(inspection) {
|
|
|
402
418
|
const blockers = [];
|
|
403
419
|
if (!doctor.passed)
|
|
404
420
|
blockers.push('doctor reports errors');
|
|
405
|
-
if (
|
|
421
|
+
if (inspection.configLoadError)
|
|
422
|
+
blockers.push(CONFIG_INVALID_NOTE);
|
|
423
|
+
else if (!inspection.configFile)
|
|
406
424
|
blockers.push('sharkcraft.config.ts missing');
|
|
407
425
|
if (!hasDryRunDefault)
|
|
408
426
|
blockers.push('no cli-only write policy rule');
|
|
@@ -39,6 +39,8 @@ export interface IArchitectureMap {
|
|
|
39
39
|
warning: number;
|
|
40
40
|
info: number;
|
|
41
41
|
};
|
|
42
|
+
/** Why the boundary counts are not a full answer (THE boundary verdict's shortfalls), when they are not. */
|
|
43
|
+
boundaryShortfalls?: readonly string[];
|
|
42
44
|
constructsByKind: readonly {
|
|
43
45
|
kind: string;
|
|
44
46
|
count: number;
|
|
@@ -67,6 +69,20 @@ export interface IArchitectureViolationsReport {
|
|
|
67
69
|
count: number;
|
|
68
70
|
}[];
|
|
69
71
|
violations: readonly IArchitectureBoundaryViolation[];
|
|
72
|
+
/**
|
|
73
|
+
* 0 clean · 1 a violation (any severity) or a failing rule · 2 zero rules, or
|
|
74
|
+
* part of a rule's scope never examined — THE boundary verdict
|
|
75
|
+
* (`runBoundaryCheck`), with its shortfalls.
|
|
76
|
+
*/
|
|
77
|
+
exitCode: number;
|
|
78
|
+
verdict: 'pass' | 'fail' | 'not-verified' | 'usage-error';
|
|
79
|
+
shortfalls: readonly string[];
|
|
80
|
+
/**
|
|
81
|
+
* THE boundary verdict's settled acceptances (`<rule>: accepted by
|
|
82
|
+
* expectEmpty: …`) — present only at exit 0 (round 13 review: a planned
|
|
83
|
+
* `from` glob settled this report 2 → 0 and the acceptance was never printed).
|
|
84
|
+
*/
|
|
85
|
+
accepted?: readonly string[];
|
|
70
86
|
}
|
|
71
87
|
export declare function buildArchitectureViolations(inspection: ISharkcraftInspection): Promise<IArchitectureViolationsReport>;
|
|
72
88
|
export type ArchitectureViolationDiffClassification = 'existing-touched' | 'new-in-changed-file' | 'resolved' | 'unknown';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture-map.d.ts","sourceRoot":"","sources":["../src/architecture-map.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,uBAAuB,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,kBAAkB,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAC9D,uBAAuB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,gBAAgB,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,eAAe,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACxD,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,YAAY,EAAE,4BAA4B,CAAC,WAAW,CAAC,CAAC;IACxD,cAAc,EAAE,OAAO,CAAC;CACzB;AAqCD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/F,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"architecture-map.d.ts","sourceRoot":"","sources":["../src/architecture-map.ts"],"names":[],"mappings":"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"}
|
package/dist/architecture-map.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Read-only.
|
|
10
10
|
*/
|
|
11
11
|
import { existsSync, readFileSync } from 'node:fs';
|
|
12
|
-
import {
|
|
12
|
+
import { runBoundaryCheck } from "./run-boundary-check.js";
|
|
13
13
|
import { analyzeImportGraph } from "./import-graph-analysis.js";
|
|
14
14
|
import { buildRepositoryIntelligenceGraph, RepoNodeKind, } from "./repository-intelligence.js";
|
|
15
15
|
import { getChangedFiles } from "./git-helpers.js";
|
|
@@ -85,13 +85,14 @@ export async function buildArchitectureMap(inspection, options = {}) {
|
|
|
85
85
|
// Boundary violations (real signal when --signals is enabled).
|
|
86
86
|
let boundaryViolations = [];
|
|
87
87
|
let boundaryViolationCounts = { error: 0, warning: 0, info: 0 };
|
|
88
|
+
let boundaryShortfalls = [];
|
|
88
89
|
if (signalsEnabled && include.has('boundaries') && inspection.boundaryRegistry.size() > 0) {
|
|
89
90
|
try {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const evalResult =
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
// THE boundary orchestrator — the counts `check boundaries` reports
|
|
92
|
+
// (round 11 review R11-GAP-3), including what it could not examine.
|
|
93
|
+
const evalResult = runBoundaryCheck(inspection);
|
|
94
|
+
if (evalResult.verdict === 'not-verified')
|
|
95
|
+
boundaryShortfalls = evalResult.shortfalls;
|
|
95
96
|
boundaryViolations = evalResult.violations.slice(0, 50).map((v) => ({
|
|
96
97
|
ruleId: v.ruleId,
|
|
97
98
|
file: v.file,
|
|
@@ -136,7 +137,7 @@ export async function buildArchitectureMap(inspection, options = {}) {
|
|
|
136
137
|
'shrk drift --json',
|
|
137
138
|
'shrk coverage --json',
|
|
138
139
|
'shrk impact --since main',
|
|
139
|
-
'shrk
|
|
140
|
+
'shrk graph hubs --json',
|
|
140
141
|
];
|
|
141
142
|
const risks = [];
|
|
142
143
|
if (options.risk !== false) {
|
|
@@ -168,6 +169,13 @@ export async function buildArchitectureMap(inspection, options = {}) {
|
|
|
168
169
|
description: `${boundaryViolationCounts.warning} boundary violation(s) at warning severity.`,
|
|
169
170
|
});
|
|
170
171
|
}
|
|
172
|
+
if (boundaryShortfalls.length > 0) {
|
|
173
|
+
risks.push({
|
|
174
|
+
id: 'boundary-scan-not-verified',
|
|
175
|
+
severity: 'warning',
|
|
176
|
+
description: `Boundary scan NOT VERIFIED — the counts above miss what it could not examine: ${boundaryShortfalls.slice(0, 3).join('; ')}`,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
171
179
|
if (graph.truncation.filesCapped) {
|
|
172
180
|
risks.push({
|
|
173
181
|
id: 'file-list-truncated',
|
|
@@ -185,6 +193,7 @@ export async function buildArchitectureMap(inspection, options = {}) {
|
|
|
185
193
|
boundaryRules,
|
|
186
194
|
boundaryViolations,
|
|
187
195
|
boundaryViolationCounts,
|
|
196
|
+
...(boundaryShortfalls.length > 0 ? { boundaryShortfalls } : {}),
|
|
188
197
|
constructsByKind,
|
|
189
198
|
packs,
|
|
190
199
|
testsCoverageHint,
|
|
@@ -198,39 +207,46 @@ export async function buildArchitectureMap(inspection, options = {}) {
|
|
|
198
207
|
};
|
|
199
208
|
}
|
|
200
209
|
export async function buildArchitectureViolations(inspection) {
|
|
210
|
+
// THE boundary orchestrator — the call `check boundaries` makes (round 11
|
|
211
|
+
// review R11-GAP-3). A private scan + evaluate read `total 0` (exit 0) over
|
|
212
|
+
// an unreadable governed file the gate settled 2, and over zero rules.
|
|
201
213
|
const violations = [];
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
214
|
+
let proposed;
|
|
215
|
+
try {
|
|
216
|
+
const r = runBoundaryCheck(inspection);
|
|
217
|
+
for (const v of r.violations) {
|
|
218
|
+
violations.push({
|
|
219
|
+
ruleId: v.ruleId,
|
|
220
|
+
file: v.file,
|
|
221
|
+
importSpecifier: v.importSpecifier,
|
|
222
|
+
severity: v.severity,
|
|
223
|
+
line: v.line,
|
|
224
|
+
message: v.message,
|
|
208
225
|
});
|
|
209
|
-
for (const v of evalResult.violations) {
|
|
210
|
-
violations.push({
|
|
211
|
-
ruleId: v.ruleId,
|
|
212
|
-
file: v.file,
|
|
213
|
-
importSpecifier: v.importSpecifier,
|
|
214
|
-
severity: v.severity,
|
|
215
|
-
line: v.line,
|
|
216
|
-
message: v.message,
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
catch {
|
|
221
|
-
/* best-effort */
|
|
222
226
|
}
|
|
227
|
+
proposed = { exitCode: r.exitCode, verdict: r.verdict, shortfalls: r.shortfalls, accepted: r.accepted };
|
|
228
|
+
}
|
|
229
|
+
catch (e) {
|
|
230
|
+
// A scan that could not run proved nothing — never a clean 0.
|
|
231
|
+
proposed = { exitCode: 2, verdict: 'not-verified', shortfalls: [`the boundary check could not run: ${e.message}`] };
|
|
223
232
|
}
|
|
224
233
|
const byRuleMap = new Map();
|
|
225
234
|
for (const v of violations)
|
|
226
235
|
byRuleMap.set(v.ruleId, (byRuleMap.get(v.ruleId) ?? 0) + 1);
|
|
227
236
|
const byRule = [...byRuleMap.entries()].map(([ruleId, count]) => ({ ruleId, count })).sort((a, b) => b.count - a.count);
|
|
237
|
+
// Any violation (warnings included) fails this report, as it always has.
|
|
238
|
+
const failed = violations.length > 0;
|
|
228
239
|
return {
|
|
229
240
|
schema: 'sharkcraft.architecture-violations/v1',
|
|
230
241
|
generatedAt: new Date().toISOString(),
|
|
231
242
|
total: violations.length,
|
|
232
243
|
byRule,
|
|
233
244
|
violations: violations.slice(0, 100),
|
|
245
|
+
exitCode: failed ? 1 : proposed.exitCode,
|
|
246
|
+
verdict: failed ? 'fail' : proposed.verdict,
|
|
247
|
+
shortfalls: proposed.shortfalls,
|
|
248
|
+
// An acceptance is printed at exit 0 only — never next to a violation.
|
|
249
|
+
accepted: failed ? [] : (proposed.accepted ?? []),
|
|
234
250
|
};
|
|
235
251
|
}
|
|
236
252
|
function normalizeViolationKey(v) {
|
package/dist/area-explore.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Workspace-aware "explore this directory".
|
|
3
3
|
*
|
|
4
4
|
* Answers "explain this *specific* directory" with one deterministic
|
|
5
|
-
* call.
|
|
6
|
-
* already in `ISharkcraftInspection`.
|
|
5
|
+
* call. Classifies through THE file → area classifier (`createAreaClassifier`)
|
|
6
|
+
* and reads the registries already in `ISharkcraftInspection`.
|
|
7
7
|
*
|
|
8
8
|
* Output:
|
|
9
9
|
* - inferred area kind + role,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area-explore.d.ts","sourceRoot":"","sources":["../src/area-explore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"area-explore.d.ts","sourceRoot":"","sources":["../src/area-explore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAwB,MAAM,eAAe,CAAC;AAE/D,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC7E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EACT,iBAAiB,GACjB,aAAa,GACb,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GACnB,UAAU,CAAC;IACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACxD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9C;AAuND,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,qBAAqB,CAAC;IAClC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,cAAc,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,mDAAmD;IACnD,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,8CAA8C;IAC9C,eAAe,CAAC,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAqJxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAoDxE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAuC5E"}
|
package/dist/area-explore.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Workspace-aware "explore this directory".
|
|
3
3
|
*
|
|
4
4
|
* Answers "explain this *specific* directory" with one deterministic
|
|
5
|
-
* call.
|
|
6
|
-
* already in `ISharkcraftInspection`.
|
|
5
|
+
* call. Classifies through THE file → area classifier (`createAreaClassifier`)
|
|
6
|
+
* and reads the registries already in `ISharkcraftInspection`.
|
|
7
7
|
*
|
|
8
8
|
* Output:
|
|
9
9
|
* - inferred area kind + role,
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
21
21
|
import * as nodePath from 'node:path';
|
|
22
|
-
import { AreaKind,
|
|
22
|
+
import { AreaKind, createAreaClassifier } from "./area-map.js";
|
|
23
23
|
export const AREA_EXPLORE_SCHEMA = 'sharkcraft.area-explore/v1';
|
|
24
24
|
const IGNORE_DIRS = new Set([
|
|
25
25
|
'node_modules',
|
|
@@ -83,17 +83,38 @@ function walkLimited(root, base, maxFiles = 4000) {
|
|
|
83
83
|
}
|
|
84
84
|
return out;
|
|
85
85
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
86
|
+
/**
|
|
87
|
+
* The area kind of an explored path, through THE file → area classifier
|
|
88
|
+
* (`createAreaClassifier`, the one the area map, impact and the changes
|
|
89
|
+
* summary use). This used to prefix-match the area map's `paths`, which hold
|
|
90
|
+
* only a top segment, so a config pattern for part of `libs/` gave EVERY
|
|
91
|
+
* `libs/…` path that area's kind.
|
|
92
|
+
*
|
|
93
|
+
* - A FILE is classified directly.
|
|
94
|
+
* - A DIRECTORY has no area of its own. Its kind is the most common kind
|
|
95
|
+
* among the files under it (the explore walk's files), ties broken by kind
|
|
96
|
+
* name so the answer is total. It is `unknown` only when none of them
|
|
97
|
+
* classifies.
|
|
98
|
+
*/
|
|
99
|
+
function inferKindForPath(relPath, isDir, filesUnder, classify) {
|
|
100
|
+
if (!isDir)
|
|
101
|
+
return classify(relPath).kind;
|
|
102
|
+
const counts = new Map();
|
|
103
|
+
for (const f of filesUnder) {
|
|
104
|
+
const kind = classify(f).kind;
|
|
105
|
+
if (kind === AreaKind.Unknown)
|
|
106
|
+
continue;
|
|
107
|
+
counts.set(kind, (counts.get(kind) ?? 0) + 1);
|
|
108
|
+
}
|
|
109
|
+
let best = AreaKind.Unknown;
|
|
110
|
+
let bestCount = 0;
|
|
111
|
+
for (const [kind, n] of [...counts].sort(([a], [b]) => a.localeCompare(b))) {
|
|
112
|
+
if (n > bestCount) {
|
|
113
|
+
best = kind;
|
|
114
|
+
bestCount = n;
|
|
115
|
+
}
|
|
95
116
|
}
|
|
96
|
-
return
|
|
117
|
+
return best;
|
|
97
118
|
}
|
|
98
119
|
function describeRole(relPath, kind) {
|
|
99
120
|
const segs = relPath.split('/');
|
|
@@ -220,7 +241,7 @@ export function exploreArea(input) {
|
|
|
220
241
|
boundaryRuleIds: [],
|
|
221
242
|
pathConventionIds: [],
|
|
222
243
|
risks: [],
|
|
223
|
-
nextCommands: [`shrk
|
|
244
|
+
nextCommands: [`shrk explore . # repo-wide map`],
|
|
224
245
|
};
|
|
225
246
|
}
|
|
226
247
|
const stat = statSync(absPath);
|
|
@@ -249,8 +270,7 @@ export function exploreArea(input) {
|
|
|
249
270
|
// Secondary key makes the order TOTAL: same-size files near the cutoff would
|
|
250
271
|
// otherwise be ranked by filesystem order (non-deterministic).
|
|
251
272
|
files.sort((a, b) => b.sizeBytes - a.sizeBytes || a.relPath.localeCompare(b.relPath));
|
|
252
|
-
const
|
|
253
|
-
const inferredKind = inferKindForPath(relPath, areaMap);
|
|
273
|
+
const inferredKind = inferKindForPath(relPath, isDir, files.map((f) => f.relPath), createAreaClassifier(input.inspection.config?.areaMap));
|
|
254
274
|
const role = describeRole(relPath, inferredKind);
|
|
255
275
|
const topFiles = input.topFiles ?? 10;
|
|
256
276
|
const keyFiles = files
|