kibi-cli 0.19.0 → 1.0.1
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/cli-operation-loader.d.ts.map +1 -1
- package/dist/cli-operation-loader.js +53 -20
- package/dist/cli-operation-metadata.d.ts +20 -8
- package/dist/cli-operation-metadata.d.ts.map +1 -1
- package/dist/cli-operation-metadata.js +23 -8
- package/dist/cli-protocol.d.ts.map +1 -1
- package/dist/cli-protocol.js +38 -8
- package/dist/cli-register-foundation.d.ts.map +1 -1
- package/dist/cli-register-foundation.js +14 -2
- package/dist/cli-register-maintenance.d.ts.map +1 -1
- package/dist/cli-register-maintenance.js +26 -4
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +10 -0
- package/dist/cli-register-verification.d.ts +3 -0
- package/dist/cli-register-verification.d.ts.map +1 -0
- package/dist/cli-register-verification.js +16 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/commands/aggregated-checks.d.ts +1 -2
- package/dist/commands/aggregated-checks.d.ts.map +1 -1
- package/dist/commands/aggregated-checks.js +14 -9
- package/dist/commands/branch.d.ts +36 -0
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +371 -40
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +20 -67
- package/dist/commands/discovery-shared.d.ts.map +1 -1
- package/dist/commands/discovery-shared.js +10 -19
- package/dist/commands/doctor.d.ts +4 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +259 -24
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +10 -7
- package/dist/commands/gc.d.ts +5 -2
- package/dist/commands/gc.d.ts.map +1 -1
- package/dist/commands/gc.js +140 -71
- package/dist/commands/github-init.d.ts +56 -0
- package/dist/commands/github-init.d.ts.map +1 -0
- package/dist/commands/github-init.js +310 -0
- package/dist/commands/init-helpers.d.ts +1 -1
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +73 -25
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +79 -24
- package/dist/commands/legacy-storage-migration.d.ts +54 -0
- package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
- package/dist/commands/legacy-storage-migration.js +277 -0
- package/dist/commands/migrate.d.ts +7 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +244 -91
- package/dist/commands/report.d.ts +24 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +191 -0
- package/dist/commands/sync/cache.d.ts +16 -3
- package/dist/commands/sync/cache.d.ts.map +1 -1
- package/dist/commands/sync/cache.js +111 -4
- package/dist/commands/sync/discovery.d.ts +23 -2
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +196 -15
- package/dist/commands/sync/extraction.d.ts +8 -1
- package/dist/commands/sync/extraction.d.ts.map +1 -1
- package/dist/commands/sync/extraction.js +38 -4
- package/dist/commands/sync/manifest.d.ts +8 -5
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +142 -39
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +3 -0
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +304 -79
- package/dist/commands/verify.d.ts +10 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +126 -0
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/engine.d.ts +96 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +392 -23
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +5 -6
- package/dist/extractors/manifest.d.ts +8 -1
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +51 -9
- package/dist/extractors/markdown.d.ts +2 -1
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +21 -3
- package/dist/extractors/playwright-cases.d.ts +24 -0
- package/dist/extractors/playwright-cases.d.ts.map +1 -0
- package/dist/extractors/playwright-cases.js +126 -0
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +1 -0
- package/dist/extractors/symbol-coordinates.d.ts +81 -3
- package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
- package/dist/extractors/symbol-coordinates.js +389 -51
- package/dist/extractors/symbols-coordinator.js +11 -1
- package/dist/intent-search.d.ts +60 -0
- package/dist/intent-search.d.ts.map +1 -0
- package/dist/intent-search.js +433 -0
- package/dist/operations/bootstrap/activation.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/activation.js +48 -31
- package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidates.d.ts +4 -0
- package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
- package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
- package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
- package/dist/operations/bootstrap/generate.d.ts +8 -0
- package/dist/operations/bootstrap/generate.d.ts.map +1 -0
- package/dist/operations/bootstrap/generate.js +204 -0
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
- package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/guidance.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/guidance.js +2 -0
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
- package/dist/operations/bootstrap/presentation.d.ts +15 -0
- package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
- package/dist/operations/bootstrap/presentation.js +177 -0
- package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
- package/dist/operations/bootstrap/types.d.ts.map +1 -0
- package/dist/operations/bootstrap/types.js +25 -0
- package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
- package/dist/operations/modeling/model-requirement.js +4 -17
- package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-applicability.js +276 -0
- package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +100 -3
- package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
- package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-bindings.js +122 -0
- package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-4.js +155 -0
- package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference-1.js +8 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
- package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference.js +4 -0
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +7 -0
- package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
- package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-ranker.js +156 -24
- package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-score-3.js +6 -0
- package/dist/operations/modeling/predicate-types.d.ts +34 -0
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
- package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-utils.js +2 -0
- package/dist/operations/modeling/suggest-predicates.d.ts +1 -1
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +170 -32
- package/dist/operations/mutation/delete.d.ts.map +1 -1
- package/dist/operations/mutation/delete.js +415 -19
- package/dist/operations/mutation/entity-projection.d.ts +11 -0
- package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
- package/dist/operations/mutation/entity-projection.js +14 -0
- package/dist/operations/mutation/relationships.d.ts +10 -0
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +71 -1
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +1 -0
- package/dist/operations/mutation/source-authoring.d.ts +61 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
- package/dist/operations/mutation/source-authoring.js +543 -0
- package/dist/operations/mutation/symbol-compiler-lock.d.ts +51 -0
- package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
- package/dist/operations/mutation/symbol-compiler-lock.js +274 -0
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +34 -3
- package/dist/operations/mutation/symbol-refresh.d.ts +18 -1
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +225 -63
- package/dist/operations/mutation/types.d.ts +57 -1
- package/dist/operations/mutation/types.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +363 -24
- package/dist/operations/mutation/validation.d.ts.map +1 -1
- package/dist/operations/mutation/validation.js +1 -0
- package/dist/operations/planning/apply-plan.d.ts +117 -0
- package/dist/operations/planning/apply-plan.d.ts.map +1 -0
- package/dist/operations/planning/apply-plan.js +1437 -0
- package/dist/operations/planning/compile-intent.d.ts +106 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -0
- package/dist/operations/planning/compile-intent.js +562 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +6 -2
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +15 -2
- package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
- package/dist/operations/semantic-advisor/types.d.ts +13 -5
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/operations/verification/ingest-verification.d.ts +29 -0
- package/dist/operations/verification/ingest-verification.d.ts.map +1 -0
- package/dist/operations/verification/ingest-verification.js +192 -0
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +2 -1
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +27 -8
- package/dist/public/branch-resolver.d.ts +1 -0
- package/dist/public/branch-resolver.d.ts.map +1 -1
- package/dist/public/branch-resolver.js +1 -0
- package/dist/public/check-types.d.ts +2 -2
- package/dist/public/check-types.d.ts.map +1 -1
- package/dist/public/check-types.js +16 -16
- package/dist/public/diagnostic-usage.d.ts.map +1 -1
- package/dist/public/diagnostic-usage.js +69 -1
- package/dist/public/distribution-parity.d.ts +1 -1
- package/dist/public/distribution-parity.d.ts.map +1 -1
- package/dist/public/distribution-parity.js +1 -0
- package/dist/public/ignore-policy.d.ts.map +1 -1
- package/dist/public/ignore-policy.js +16 -4
- package/dist/public/impact/coverage-depth-quality.d.ts +6 -1
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +21 -3
- package/dist/public/impact/full-kb-quality.d.ts +4 -2
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +61 -1
- package/dist/public/impact/manifest.d.ts.map +1 -1
- package/dist/public/impact/manifest.js +2 -5
- package/dist/public/operational-artifacts.d.ts.map +1 -1
- package/dist/public/operational-artifacts.js +7 -1
- package/dist/public/operations/catalog.d.ts +682 -67
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/catalog.js +126 -4
- package/dist/public/operations/check-executor.d.ts +2 -2
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +72 -13
- package/dist/public/operations/check-format-shared.d.ts +3 -0
- package/dist/public/operations/check-format-shared.d.ts.map +1 -1
- package/dist/public/operations/check-format-shared.js +3 -0
- package/dist/public/operations/check-helpers.d.ts +27 -2
- package/dist/public/operations/check-helpers.d.ts.map +1 -1
- package/dist/public/operations/check-helpers.js +62 -26
- package/dist/public/operations/contracts.d.ts +11 -0
- package/dist/public/operations/contracts.d.ts.map +1 -0
- package/dist/public/operations/contracts.js +325 -0
- package/dist/public/operations/discovery-executors.d.ts +37 -1
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +206 -6
- package/dist/public/operations/index.d.ts +9 -4
- package/dist/public/operations/index.d.ts.map +1 -1
- package/dist/public/operations/index.js +8 -3
- package/dist/public/operations/migration-plan.d.ts +101 -0
- package/dist/public/operations/migration-plan.d.ts.map +1 -0
- package/dist/public/operations/migration-plan.js +537 -0
- package/dist/public/operations/node-ports.d.ts.map +1 -1
- package/dist/public/operations/node-ports.js +68 -8
- package/dist/public/operations/prolog-json.d.ts +14 -0
- package/dist/public/operations/prolog-json.d.ts.map +1 -1
- package/dist/public/operations/prolog-json.js +44 -5
- package/dist/public/operations/repair-plan.d.ts.map +1 -1
- package/dist/public/operations/repair-plan.js +1 -0
- package/dist/public/operations/result-envelope.d.ts +13 -0
- package/dist/public/operations/result-envelope.d.ts.map +1 -0
- package/dist/public/operations/result-envelope.js +104 -0
- package/dist/public/operations/runtime-types.d.ts +97 -7
- package/dist/public/operations/runtime-types.d.ts.map +1 -1
- package/dist/public/operations/source-relationship-parity.d.ts +13 -0
- package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
- package/dist/public/operations/source-relationship-parity.js +162 -0
- package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
- package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
- package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
- package/dist/public/operations/specs/check.d.ts +4 -4
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +4 -3
- package/dist/public/operations/specs/discovery.d.ts +87 -3
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +53 -3
- package/dist/public/operations/specs/modeling.d.ts +3 -3
- package/dist/public/operations/specs/modeling.js +3 -3
- package/dist/public/operations/specs/mutation-schemas.d.ts +190 -47
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +3 -1
- package/dist/public/operations/specs/mutation.d.ts +42 -2
- package/dist/public/operations/specs/mutation.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation.js +26 -2
- package/dist/public/operations/specs/planning.d.ts +270 -0
- package/dist/public/operations/specs/planning.d.ts.map +1 -0
- package/dist/public/operations/specs/planning.js +191 -0
- package/dist/public/operations/specs/reporting.d.ts +4 -1
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +46 -1
- package/dist/public/operations/specs/upsert.d.ts +204 -47
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/specs/upsert.js +9 -0
- package/dist/public/operations/specs/verification.d.ts +78 -0
- package/dist/public/operations/specs/verification.d.ts.map +1 -0
- package/dist/public/operations/specs/verification.js +62 -0
- package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
- package/dist/public/operations/symbol-repair-plan.js +123 -0
- package/dist/public/operations/types.d.ts +52 -1
- package/dist/public/operations/types.d.ts.map +1 -1
- package/dist/public/playwright-case-id.d.ts +8 -0
- package/dist/public/playwright-case-id.d.ts.map +1 -0
- package/dist/public/playwright-case-id.js +25 -0
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +4 -2
- package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/dist/public/skills/kibi-freshness/SKILL.md +39 -9
- package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
- package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/dist/public/skills/kibi-usage/SKILL.md +115 -239
- package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +56 -3
- package/dist/public/symbol-granularity.d.ts +1 -1
- package/dist/public/symbol-granularity.d.ts.map +1 -1
- package/dist/public/symbol-granularity.js +1 -0
- package/dist/public/telemetry-acceptance.d.ts +7 -0
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +8 -1
- package/dist/public/telemetry-remediation.js +1 -1
- package/dist/public/verification-receipt.d.ts +206 -39
- package/dist/public/verification-receipt.d.ts.map +1 -1
- package/dist/public/verification-receipt.js +171 -4
- package/dist/relationships/shards.d.ts +16 -0
- package/dist/relationships/shards.d.ts.map +1 -1
- package/dist/relationships/shards.js +87 -2
- package/dist/report/brand.d.ts +19 -0
- package/dist/report/brand.d.ts.map +1 -0
- package/dist/report/brand.js +112 -0
- package/dist/report/html-report.d.ts +19 -0
- package/dist/report/html-report.d.ts.map +1 -0
- package/dist/report/html-report.js +963 -0
- package/dist/report/relative-time.d.ts +4 -0
- package/dist/report/relative-time.d.ts.map +1 -0
- package/dist/report/relative-time.js +46 -0
- package/dist/report/report-view.d.ts +17 -0
- package/dist/report/report-view.d.ts.map +1 -0
- package/dist/report/report-view.js +33 -0
- package/dist/report/repository.d.ts +35 -0
- package/dist/report/repository.d.ts.map +1 -0
- package/dist/report/repository.js +151 -0
- package/dist/runtime/cli-runtime.d.ts.map +1 -1
- package/dist/runtime/cli-runtime.js +82 -22
- package/dist/schemas/entity.schema.json +1148 -273
- package/dist/traceability/evidence-model.d.ts +2 -2
- package/dist/traceability/evidence-model.d.ts.map +1 -1
- package/dist/traceability/evidence-model.js +2 -2
- package/dist/traceability/git-staged.d.ts.map +1 -1
- package/dist/traceability/git-staged.js +15 -40
- package/dist/traceability/markdown-validate.d.ts.map +1 -1
- package/dist/traceability/markdown-validate.js +12 -7
- package/dist/traceability/staged-impact-contract.d.ts +3 -3
- package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
- package/dist/traceability/staged-impact-contract.js +10 -38
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +8 -3
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +3 -0
- package/dist/types/entities.d.ts +3 -0
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/branch-resolver.d.ts +24 -10
- package/dist/utils/branch-resolver.d.ts.map +1 -1
- package/dist/utils/branch-resolver.js +121 -38
- package/dist/utils/branch-store-locator.d.ts +23 -0
- package/dist/utils/branch-store-locator.d.ts.map +1 -0
- package/dist/utils/branch-store-locator.js +90 -0
- package/dist/utils/branch-store.d.ts +15 -0
- package/dist/utils/branch-store.d.ts.map +1 -0
- package/dist/utils/branch-store.js +130 -0
- package/dist/utils/config.d.ts +39 -37
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +107 -119
- package/dist/utils/kb-manifest.d.ts +35 -0
- package/dist/utils/kb-manifest.d.ts.map +1 -0
- package/dist/utils/kb-manifest.js +154 -0
- package/dist/utils/kb-paths.d.ts +54 -0
- package/dist/utils/kb-paths.d.ts.map +1 -0
- package/dist/utils/kb-paths.js +125 -0
- package/dist/utils/manifest-paths.d.ts +4 -4
- package/dist/utils/manifest-paths.d.ts.map +1 -1
- package/dist/utils/manifest-paths.js +8 -56
- package/dist/utils/rule-registry.d.ts +48 -20
- package/dist/utils/rule-registry.d.ts.map +1 -1
- package/dist/utils/rule-registry.js +82 -77
- package/dist/utils/schema-version.d.ts +5 -5
- package/dist/utils/schema-version.d.ts.map +1 -1
- package/dist/utils/schema-version.js +26 -6
- package/dist/utils/strict-modeling.d.ts +0 -4
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +7 -8
- package/dist/verification/playwright-reporter.d.ts +21 -0
- package/dist/verification/playwright-reporter.d.ts.map +1 -0
- package/dist/verification/playwright-reporter.js +114 -0
- package/package.json +46 -7
- package/schema/config.json +2 -2
- package/schema/manifest.json +26 -0
- package/src/public/branch-resolver.ts +1 -0
- package/src/public/check-types.ts +22 -19
- package/src/public/diagnostic-usage.ts +79 -1
- package/src/public/distribution-parity.ts +1 -0
- package/src/public/ignore-policy.ts +16 -10
- package/src/public/impact/coverage-depth-quality.ts +36 -0
- package/src/public/impact/full-kb-quality.ts +118 -5
- package/src/public/impact/manifest.ts +2 -4
- package/src/public/operational-artifacts.ts +9 -1
- package/src/public/operations/catalog.ts +146 -9
- package/src/public/operations/check-executor.ts +102 -15
- package/src/public/operations/check-format-shared.ts +6 -0
- package/src/public/operations/check-helpers.ts +74 -35
- package/src/public/operations/contracts.ts +366 -0
- package/src/public/operations/discovery-executors.ts +299 -12
- package/src/public/operations/index.ts +9 -4
- package/src/public/operations/migration-plan.ts +740 -0
- package/src/public/operations/node-ports.ts +84 -10
- package/src/public/operations/prolog-json.ts +60 -5
- package/src/public/operations/repair-plan.ts +1 -0
- package/src/public/operations/result-envelope.ts +136 -0
- package/src/public/operations/runtime-types.ts +91 -5
- package/src/public/operations/source-relationship-parity.ts +226 -0
- package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
- package/src/public/operations/specs/check.ts +4 -3
- package/src/public/operations/specs/discovery.ts +57 -3
- package/src/public/operations/specs/modeling.ts +3 -3
- package/src/public/operations/specs/mutation-schemas.ts +6 -1
- package/src/public/operations/specs/mutation.ts +27 -2
- package/src/public/operations/specs/planning.ts +234 -0
- package/src/public/operations/specs/reporting.ts +55 -1
- package/src/public/operations/specs/upsert.ts +10 -0
- package/src/public/operations/specs/verification.ts +78 -0
- package/src/public/operations/symbol-repair-plan.ts +164 -0
- package/src/public/operations/types.ts +62 -1
- package/src/public/playwright-case-id.ts +35 -0
- package/src/public/schemas/entity.ts +7 -2
- package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/src/public/skills/kibi-freshness/SKILL.md +39 -9
- package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/src/public/skills/kibi-traceability/SKILL.md +47 -47
- package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/src/public/skills/kibi-usage/SKILL.md +115 -239
- package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +56 -3
- package/src/public/symbol-granularity.ts +1 -0
- package/src/public/telemetry-acceptance.ts +16 -1
- package/src/public/telemetry-remediation.ts +1 -1
- package/src/public/verification-receipt.ts +248 -6
- package/src/schemas/entity.schema.json +1148 -273
- package/templates/github/kibi-badge.yml +86 -0
- package/templates/github/kibi-report.yml +84 -0
- package/dist/operations/autopilot/activation.d.ts.map +0 -1
- package/dist/operations/autopilot/candidates.d.ts +0 -4
- package/dist/operations/autopilot/discovery.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.d.ts +0 -8
- package/dist/operations/autopilot/generate.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.js +0 -112
- package/dist/operations/autopilot/presentation.d.ts +0 -13
- package/dist/operations/autopilot/presentation.d.ts.map +0 -1
- package/dist/operations/autopilot/presentation.js +0 -91
- package/dist/operations/autopilot/types.d.ts.map +0 -1
- package/dist/operations/autopilot/types.js +0 -8
- package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
- package/dist/public/skills/init-kibi/SKILL.md +0 -62
- package/src/public/skills/init-kibi/SKILL.md +0 -62
- /package/dist/operations/{autopilot → bootstrap}/activation.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
|
@@ -1,4 +1,18 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
1
4
|
import { dump as dumpYAML, load as parseYAML } from "js-yaml";
|
|
5
|
+
/**
|
|
6
|
+
* Format version of the generated coordinate artifact. Version 2 binds every
|
|
7
|
+
* record to the extraction identity that produced it so stale coordinates can
|
|
8
|
+
* never silently overlay a changed symbol.
|
|
9
|
+
*/
|
|
10
|
+
// implements REQ-generated-coordinate-persistence
|
|
11
|
+
export const SYMBOL_COORDINATES_FORMAT_VERSION = 2;
|
|
12
|
+
// implements REQ-generated-coordinate-persistence
|
|
13
|
+
export class CoordinateArtifactError extends Error {
|
|
14
|
+
name = "CoordinateArtifactError";
|
|
15
|
+
}
|
|
2
16
|
const SYMBOL_COORDINATES_COMMENT_BLOCK = `# symbol-coordinates.yaml
|
|
3
17
|
# GENERATED coordinate artifact — do not edit manually.
|
|
4
18
|
# Run \`kibi sync --refresh-symbol-coordinates\` to refresh.
|
|
@@ -6,78 +20,402 @@ const SYMBOL_COORDINATES_COMMENT_BLOCK = `# symbol-coordinates.yaml
|
|
|
6
20
|
function isRecord(value) {
|
|
7
21
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8
22
|
}
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
|
|
23
|
+
function canonicalIdentityValue(value) {
|
|
24
|
+
return typeof value === "string" ? value : "";
|
|
25
|
+
}
|
|
26
|
+
/** Deterministic canonical identity string for a symbol extraction state. */
|
|
27
|
+
// implements REQ-generated-coordinate-persistence
|
|
28
|
+
export function coordinateIdentityKey(identity) {
|
|
29
|
+
return [
|
|
30
|
+
identity.id,
|
|
31
|
+
canonicalIdentityValue(identity.title),
|
|
32
|
+
canonicalIdentityValue(identity.sourceFile),
|
|
33
|
+
canonicalIdentityValue(identity.granularity_reason),
|
|
34
|
+
].join("\u0000");
|
|
35
|
+
}
|
|
36
|
+
/** Stable hash binding a generated coordinate record to its extraction identity. */
|
|
37
|
+
// implements REQ-generated-coordinate-persistence
|
|
38
|
+
export function coordinateIdentityHash(identity) {
|
|
39
|
+
return createHash("sha256")
|
|
40
|
+
.update(coordinateIdentityKey(identity))
|
|
41
|
+
.digest("hex");
|
|
42
|
+
}
|
|
43
|
+
/** Stable hash of the exact source text used to generate a coordinate span. */
|
|
44
|
+
// implements REQ-generated-coordinate-persistence
|
|
45
|
+
export function coordinateSourceHash(sourceText) {
|
|
46
|
+
return createHash("sha256").update(sourceText).digest("hex");
|
|
47
|
+
}
|
|
48
|
+
/** Select a stable coarse anchor, preferring a title match over the whole file. */
|
|
49
|
+
// implements REQ-generated-coordinate-persistence
|
|
50
|
+
export function coarseCoordinateSpan(sourceFile, title, content) {
|
|
51
|
+
if (title.length > 0) {
|
|
52
|
+
const escaped = title.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
53
|
+
const pattern = new RegExp(`\\b${escaped}\\b`);
|
|
54
|
+
const lines = content.split(/\r?\n/);
|
|
55
|
+
for (let index = 0; index < lines.length; index++) {
|
|
56
|
+
const line = lines[index];
|
|
57
|
+
if (line === undefined)
|
|
58
|
+
continue;
|
|
59
|
+
const match = pattern.exec(line);
|
|
60
|
+
if (!match || match.index < 0)
|
|
61
|
+
continue;
|
|
62
|
+
return {
|
|
63
|
+
sourceFile,
|
|
64
|
+
sourceLine: index + 1,
|
|
65
|
+
sourceColumn: match.index,
|
|
66
|
+
sourceEndLine: index + 1,
|
|
67
|
+
sourceEndColumn: match.index + title.length,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
12
70
|
}
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
71
|
+
const lines = content.split(/\r?\n/);
|
|
72
|
+
const lastLine = lines[lines.length - 1] ?? "";
|
|
73
|
+
return {
|
|
74
|
+
sourceFile,
|
|
75
|
+
sourceLine: 1,
|
|
76
|
+
sourceColumn: 0,
|
|
77
|
+
sourceEndLine: Math.max(1, lines.length),
|
|
78
|
+
sourceEndColumn: lastLine.length,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function isSha256Hash(value) {
|
|
82
|
+
return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Validate a coordinate span against the same rules requirement proof enforces:
|
|
86
|
+
* nonempty source file, sourceLine >= 1, columns >= 0, endLine >= sourceLine.
|
|
87
|
+
*/
|
|
88
|
+
// implements REQ-generated-coordinate-persistence
|
|
89
|
+
export function isValidCoordinateSpan(value) {
|
|
90
|
+
if (!isRecord(value))
|
|
91
|
+
return false;
|
|
92
|
+
const { sourceFile, sourceLine, sourceColumn, sourceEndLine, sourceEndColumn, } = value;
|
|
93
|
+
return (typeof sourceFile === "string" &&
|
|
94
|
+
sourceFile.length > 0 &&
|
|
95
|
+
typeof sourceLine === "number" &&
|
|
96
|
+
Number.isInteger(sourceLine) &&
|
|
97
|
+
sourceLine >= 1 &&
|
|
98
|
+
typeof sourceColumn === "number" &&
|
|
99
|
+
Number.isInteger(sourceColumn) &&
|
|
100
|
+
sourceColumn >= 0 &&
|
|
101
|
+
typeof sourceEndLine === "number" &&
|
|
102
|
+
Number.isInteger(sourceEndLine) &&
|
|
103
|
+
sourceEndLine >= sourceLine &&
|
|
104
|
+
typeof sourceEndColumn === "number" &&
|
|
105
|
+
Number.isInteger(sourceEndColumn) &&
|
|
106
|
+
sourceEndColumn >= 0);
|
|
107
|
+
}
|
|
108
|
+
function normalizeRawEntry(value) {
|
|
109
|
+
if (!isRecord(value))
|
|
110
|
+
return null;
|
|
111
|
+
const { identityHash, sourceHash, ...rest } = value;
|
|
112
|
+
if (!isValidCoordinateSpan(rest))
|
|
113
|
+
return null;
|
|
114
|
+
if (("identityHash" in value && !isSha256Hash(identityHash)) ||
|
|
115
|
+
("sourceHash" in value && !isSha256Hash(sourceHash))) {
|
|
19
116
|
return null;
|
|
20
117
|
}
|
|
21
118
|
return {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
119
|
+
span: {
|
|
120
|
+
sourceFile: rest.sourceFile,
|
|
121
|
+
sourceLine: rest.sourceLine,
|
|
122
|
+
sourceColumn: rest.sourceColumn,
|
|
123
|
+
sourceEndLine: rest.sourceEndLine,
|
|
124
|
+
sourceEndColumn: rest.sourceEndColumn,
|
|
125
|
+
},
|
|
126
|
+
...(typeof identityHash === "string" && identityHash.length > 0
|
|
127
|
+
? { identityHash }
|
|
128
|
+
: {}),
|
|
129
|
+
...(typeof sourceHash === "string" && sourceHash.length > 0
|
|
130
|
+
? { sourceHash }
|
|
131
|
+
: {}),
|
|
27
132
|
};
|
|
28
133
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Strictly parse a generated coordinate artifact. Records failing span
|
|
136
|
+
* validation make the whole artifact invalid; consumers must fail closed
|
|
137
|
+
* instead of silently dropping evidence.
|
|
138
|
+
*/
|
|
139
|
+
// implements REQ-generated-coordinate-persistence
|
|
140
|
+
export function parseCoordinateArtifact(content) {
|
|
141
|
+
let parsed;
|
|
142
|
+
try {
|
|
143
|
+
parsed = parseYAML(content);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return {
|
|
147
|
+
status: "invalid",
|
|
148
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (parsed === null || parsed === undefined) {
|
|
152
|
+
return { status: "legacy", coordinates: {} };
|
|
153
|
+
}
|
|
154
|
+
if (!isRecord(parsed)) {
|
|
155
|
+
return { status: "invalid", reason: "artifact root is not a mapping" };
|
|
156
|
+
}
|
|
157
|
+
const rawCoordinates = parsed.coordinates ?? {};
|
|
158
|
+
if (!isRecord(rawCoordinates)) {
|
|
159
|
+
return { status: "invalid", reason: "coordinates is not a mapping" };
|
|
160
|
+
}
|
|
161
|
+
const declaredVersion = parsed.version;
|
|
162
|
+
const entries = {};
|
|
163
|
+
for (const [id, value] of Object.entries(rawCoordinates)) {
|
|
164
|
+
const entry = normalizeRawEntry(value);
|
|
165
|
+
if (entry === null) {
|
|
166
|
+
return {
|
|
167
|
+
status: "invalid",
|
|
168
|
+
reason: `record '${id}' has an invalid coordinate span`,
|
|
169
|
+
};
|
|
35
170
|
}
|
|
36
|
-
|
|
171
|
+
entries[id] = entry;
|
|
37
172
|
}
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return { coordinates: {} };
|
|
173
|
+
if (declaredVersion === undefined) {
|
|
174
|
+
const legacy = {};
|
|
175
|
+
for (const [id, entry] of Object.entries(entries)) {
|
|
176
|
+
legacy[id] = entry.span;
|
|
177
|
+
}
|
|
178
|
+
return { status: "legacy", coordinates: legacy };
|
|
45
179
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
180
|
+
if (declaredVersion !== SYMBOL_COORDINATES_FORMAT_VERSION) {
|
|
181
|
+
return {
|
|
182
|
+
status: "invalid",
|
|
183
|
+
reason: `unsupported or missing artifact version: ${String(declaredVersion)}`,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
if (declaredVersion === SYMBOL_COORDINATES_FORMAT_VERSION) {
|
|
187
|
+
const bound = {};
|
|
188
|
+
for (const [id, entry] of Object.entries(entries)) {
|
|
189
|
+
const identityHash = entry.identityHash;
|
|
190
|
+
const sourceHash = entry.sourceHash;
|
|
191
|
+
if (identityHash === undefined || sourceHash === undefined) {
|
|
192
|
+
return {
|
|
193
|
+
status: "invalid",
|
|
194
|
+
reason: `record '${id}' is missing its identity or source binding in a versioned artifact`,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
bound[id] = { ...entry.span, identityHash, sourceHash };
|
|
51
198
|
}
|
|
52
|
-
|
|
199
|
+
return {
|
|
200
|
+
status: "parsed",
|
|
201
|
+
formatVersion: SYMBOL_COORDINATES_FORMAT_VERSION,
|
|
202
|
+
coordinates: bound,
|
|
203
|
+
};
|
|
53
204
|
}
|
|
54
|
-
return {
|
|
205
|
+
return { status: "invalid", reason: "unreachable artifact parser state" };
|
|
55
206
|
}
|
|
56
|
-
|
|
57
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Serialize the generated artifact as a version 2 document. Every record is
|
|
209
|
+
* bound to both its manifest identity and exact source content.
|
|
210
|
+
* Key order is deterministic without relying on YAML sortKeys so the
|
|
211
|
+
* human-readable header stays first.
|
|
212
|
+
*/
|
|
213
|
+
// implements REQ-generated-coordinate-persistence
|
|
214
|
+
export function writeCoordinateArtifact(entries) {
|
|
215
|
+
const coordinates = {};
|
|
216
|
+
for (const id of Object.keys(entries).sort((left, right) => left.localeCompare(right))) {
|
|
217
|
+
const entry = entries[id];
|
|
218
|
+
if (entry === undefined || !isValidCoordinateSpan(entry)) {
|
|
219
|
+
throw new CoordinateArtifactError(`refusing to publish an invalid or missing coordinate span${id === undefined ? "" : ` for ${id}`}`);
|
|
220
|
+
}
|
|
221
|
+
if (!isSha256Hash(entry.identityHash) || !isSha256Hash(entry.sourceHash)) {
|
|
222
|
+
throw new CoordinateArtifactError(`refusing to publish an invalid or missing identityHash/sourceHash binding for ${id}`);
|
|
223
|
+
}
|
|
224
|
+
coordinates[id] = {
|
|
225
|
+
identityHash: entry.identityHash,
|
|
226
|
+
sourceHash: entry.sourceHash,
|
|
227
|
+
sourceColumn: entry.sourceColumn,
|
|
228
|
+
sourceEndColumn: entry.sourceEndColumn,
|
|
229
|
+
sourceEndLine: entry.sourceEndLine,
|
|
230
|
+
sourceFile: entry.sourceFile,
|
|
231
|
+
sourceLine: entry.sourceLine,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
58
234
|
const artifact = {
|
|
59
|
-
|
|
235
|
+
version: SYMBOL_COORDINATES_FORMAT_VERSION,
|
|
236
|
+
coordinates,
|
|
60
237
|
};
|
|
61
238
|
return `${SYMBOL_COORDINATES_COMMENT_BLOCK}${dumpYAML(artifact, {
|
|
62
239
|
lineWidth: -1,
|
|
63
240
|
noRefs: true,
|
|
64
|
-
sortKeys: true,
|
|
65
241
|
})}`;
|
|
66
242
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
243
|
+
/** Serialize a legacy artifact without introducing v2 bindings or metadata. */
|
|
244
|
+
// implements REQ-generated-coordinate-persistence
|
|
245
|
+
export function writeLegacyCoordinateArtifact(entries) {
|
|
246
|
+
const coordinates = {};
|
|
247
|
+
for (const id of Object.keys(entries).sort((left, right) => left.localeCompare(right))) {
|
|
248
|
+
const entry = entries[id];
|
|
249
|
+
if (entry === undefined || !isValidCoordinateSpan(entry)) {
|
|
250
|
+
throw new CoordinateArtifactError(`refusing to publish an invalid or missing legacy coordinate span for ${id}`);
|
|
251
|
+
}
|
|
252
|
+
coordinates[id] = {
|
|
253
|
+
sourceColumn: entry.sourceColumn,
|
|
254
|
+
sourceEndColumn: entry.sourceEndColumn,
|
|
255
|
+
sourceEndLine: entry.sourceEndLine,
|
|
256
|
+
sourceFile: entry.sourceFile,
|
|
257
|
+
sourceLine: entry.sourceLine,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
return `${SYMBOL_COORDINATES_COMMENT_BLOCK}${dumpYAML({ coordinates }, { lineWidth: -1, noRefs: true })}`;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Reader kept for diff/traceability surfaces. Legacy records remain available
|
|
264
|
+
* as spans while v2 records retain their bindings.
|
|
265
|
+
*/
|
|
266
|
+
// implements REQ-generated-coordinate-persistence
|
|
267
|
+
export function readCoordinateArtifact(content) {
|
|
268
|
+
const parsed = parseCoordinateArtifact(content);
|
|
269
|
+
if (parsed.status === "invalid") {
|
|
270
|
+
throw new CoordinateArtifactError(parsed.reason);
|
|
271
|
+
}
|
|
272
|
+
const coordinates = {};
|
|
273
|
+
for (const [id, record] of Object.entries(parsed.coordinates)) {
|
|
274
|
+
coordinates[id] = record;
|
|
275
|
+
}
|
|
276
|
+
return { coordinates };
|
|
277
|
+
}
|
|
278
|
+
const GENERATED_MANIFEST_FIELDS = [
|
|
279
|
+
"sourceLine",
|
|
280
|
+
"sourceColumn",
|
|
281
|
+
"sourceEndLine",
|
|
282
|
+
"sourceEndColumn",
|
|
283
|
+
"coordinatesGeneratedAt",
|
|
284
|
+
];
|
|
285
|
+
function stripGeneratedFields(record) {
|
|
286
|
+
const next = { ...record };
|
|
287
|
+
for (const field of GENERATED_MANIFEST_FIELDS) {
|
|
288
|
+
delete next[field];
|
|
289
|
+
}
|
|
290
|
+
return next;
|
|
291
|
+
}
|
|
292
|
+
function manifestSourceFile(record) {
|
|
293
|
+
if (typeof record.sourceFile === "string" && record.sourceFile.length > 0) {
|
|
294
|
+
return record.sourceFile;
|
|
295
|
+
}
|
|
296
|
+
if (typeof record.source === "string" && record.source.length > 0) {
|
|
297
|
+
return record.source;
|
|
298
|
+
}
|
|
299
|
+
return undefined;
|
|
300
|
+
}
|
|
301
|
+
function defaultResolveSourceText(sourceFile) {
|
|
302
|
+
const absolute = path.isAbsolute(sourceFile)
|
|
303
|
+
? sourceFile
|
|
304
|
+
: path.resolve(process.cwd(), sourceFile);
|
|
305
|
+
if (!existsSync(absolute))
|
|
306
|
+
return null;
|
|
307
|
+
try {
|
|
308
|
+
const content = readFileSync(absolute, "utf8");
|
|
309
|
+
return typeof content === "string" ? content : null;
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
return null;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function overlaySpan(stripped, span) {
|
|
316
|
+
return {
|
|
317
|
+
...stripped,
|
|
318
|
+
sourceFile: span.sourceFile,
|
|
319
|
+
sourceLine: span.sourceLine,
|
|
320
|
+
sourceColumn: span.sourceColumn,
|
|
321
|
+
sourceEndLine: span.sourceEndLine,
|
|
322
|
+
sourceEndColumn: span.sourceEndColumn,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Overlay generated coordinates onto authored manifest records.
|
|
327
|
+
*
|
|
328
|
+
* Generated fields are always stripped first so stale spans can never reach
|
|
329
|
+
* compiled state. Bound v2 records apply only when both their identity hash
|
|
330
|
+
* and exact source-content hash match the current manifest and source. Legacy
|
|
331
|
+
* records and inline coordinates are accepted only after live declaration
|
|
332
|
+
* validation.
|
|
333
|
+
*/
|
|
334
|
+
export function mergeCoordinatesWithManifest(symbolRecords, coordinateArtifact, options = {}) {
|
|
335
|
+
if (coordinateArtifact !== null && "status" in coordinateArtifact) {
|
|
336
|
+
if (coordinateArtifact.status === "invalid") {
|
|
337
|
+
throw new CoordinateArtifactError(coordinateArtifact.reason);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
const resolveSourceText = options.resolveSourceText ?? defaultResolveSourceText;
|
|
341
|
+
const rawCoordinates = coordinateArtifact?.coordinates ?? {};
|
|
70
342
|
return symbolRecords.map((symbolRecord) => {
|
|
71
|
-
const
|
|
343
|
+
const stripped = stripGeneratedFields(symbolRecord);
|
|
72
344
|
const symbolId = typeof symbolRecord.id === "string" ? symbolRecord.id : undefined;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
345
|
+
if (symbolId === undefined)
|
|
346
|
+
return stripped;
|
|
347
|
+
const entry = rawCoordinates[symbolId];
|
|
348
|
+
const candidate = entry ??
|
|
349
|
+
(coordinateArtifact === null ? inlineSpanOf(symbolRecord) : undefined);
|
|
350
|
+
if (candidate === undefined)
|
|
351
|
+
return stripped;
|
|
352
|
+
const identityHash = candidate.identityHash;
|
|
353
|
+
const sourceHash = candidate.sourceHash;
|
|
354
|
+
if (identityHash !== undefined || sourceHash !== undefined) {
|
|
355
|
+
const recordSourceFile = manifestSourceFile(symbolRecord);
|
|
356
|
+
const expected = coordinateIdentityHash({
|
|
357
|
+
id: symbolId,
|
|
358
|
+
...(symbolRecord.title === undefined
|
|
359
|
+
? {}
|
|
360
|
+
: { title: symbolRecord.title }),
|
|
361
|
+
...(recordSourceFile === undefined
|
|
362
|
+
? {}
|
|
363
|
+
: { sourceFile: recordSourceFile }),
|
|
364
|
+
...(typeof symbolRecord.granularity_reason === "string"
|
|
365
|
+
? { granularity_reason: symbolRecord.granularity_reason }
|
|
366
|
+
: {}),
|
|
367
|
+
});
|
|
368
|
+
if (!isSha256Hash(identityHash) ||
|
|
369
|
+
!isSha256Hash(sourceHash) ||
|
|
370
|
+
identityHash !== expected ||
|
|
371
|
+
!isValidCoordinateSpan(candidate) ||
|
|
372
|
+
recordSourceFile === undefined ||
|
|
373
|
+
candidate.sourceFile !== recordSourceFile) {
|
|
374
|
+
return stripped;
|
|
375
|
+
}
|
|
376
|
+
const sourceText = resolveSourceText(candidate.sourceFile);
|
|
377
|
+
if (sourceText === null ||
|
|
378
|
+
coordinateSourceHash(sourceText) !== sourceHash) {
|
|
379
|
+
return stripped;
|
|
380
|
+
}
|
|
381
|
+
return overlaySpan(stripped, candidate);
|
|
76
382
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
383
|
+
if (!isValidCoordinateSpan(candidate))
|
|
384
|
+
return stripped;
|
|
385
|
+
if (!legacyRecordMatchesCurrentExtraction(symbolRecord, candidate, resolveSourceText)) {
|
|
386
|
+
return stripped;
|
|
387
|
+
}
|
|
388
|
+
return overlaySpan(stripped, candidate);
|
|
82
389
|
});
|
|
83
390
|
}
|
|
391
|
+
function legacyRecordMatchesCurrentExtraction(record, entry, resolveSourceText) {
|
|
392
|
+
const sourceFile = manifestSourceFile(record);
|
|
393
|
+
if (sourceFile === undefined || entry.sourceFile !== sourceFile)
|
|
394
|
+
return false;
|
|
395
|
+
const title = typeof record.title === "string" ? record.title : "";
|
|
396
|
+
const declarationName = title.slice(title.lastIndexOf(".") + 1);
|
|
397
|
+
if (declarationName.length === 0)
|
|
398
|
+
return false;
|
|
399
|
+
const content = resolveSourceText(entry.sourceFile);
|
|
400
|
+
if (content === null)
|
|
401
|
+
return false;
|
|
402
|
+
const lines = content.split(/\r?\n/);
|
|
403
|
+
const lineText = lines[entry.sourceLine - 1];
|
|
404
|
+
if (lineText === undefined)
|
|
405
|
+
return false;
|
|
406
|
+
if (entry.sourceColumn > lineText.length - declarationName.length) {
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
return (lineText.slice(entry.sourceColumn, entry.sourceColumn + declarationName.length) === declarationName);
|
|
410
|
+
}
|
|
411
|
+
function inlineSpanOf(record) {
|
|
412
|
+
const sourceFile = manifestSourceFile(record) ?? "";
|
|
413
|
+
const span = {
|
|
414
|
+
sourceFile,
|
|
415
|
+
sourceLine: typeof record.sourceLine === "number" ? record.sourceLine : -1,
|
|
416
|
+
sourceColumn: typeof record.sourceColumn === "number" ? record.sourceColumn : -1,
|
|
417
|
+
sourceEndLine: typeof record.sourceEndLine === "number" ? record.sourceEndLine : -1,
|
|
418
|
+
sourceEndColumn: typeof record.sourceEndColumn === "number" ? record.sourceEndColumn : -1,
|
|
419
|
+
};
|
|
420
|
+
return isValidCoordinateSpan(span) ? span : undefined;
|
|
421
|
+
}
|
|
@@ -77,7 +77,7 @@ export function analyzeSourceText(filePathOrEntries, contentOrWorkspaceRoot, opt
|
|
|
77
77
|
export async function enrichSymbolCoordinates(entries, workspaceRoot, deps) {
|
|
78
78
|
// implements REQ-vscode-traceability
|
|
79
79
|
const enrichTsCoordinates = deps?.enrichTsCoordinates ?? enrichSymbolCoordinatesWithTsMorph;
|
|
80
|
-
const output = entries.map((entry) => (
|
|
80
|
+
const output = entries.map((entry) => withoutGeneratedCoordinates(entry));
|
|
81
81
|
const tsIndices = [];
|
|
82
82
|
const tsEntries = [];
|
|
83
83
|
for (let index = 0; index < output.length; index++) {
|
|
@@ -107,6 +107,16 @@ export async function enrichSymbolCoordinates(entries, workspaceRoot, deps) {
|
|
|
107
107
|
}
|
|
108
108
|
return output;
|
|
109
109
|
}
|
|
110
|
+
function withoutGeneratedCoordinates(entry) {
|
|
111
|
+
const generatedFields = new Set([
|
|
112
|
+
"sourceLine",
|
|
113
|
+
"sourceColumn",
|
|
114
|
+
"sourceEndLine",
|
|
115
|
+
"sourceEndColumn",
|
|
116
|
+
"coordinatesGeneratedAt",
|
|
117
|
+
]);
|
|
118
|
+
return Object.fromEntries(Object.entries(entry).filter(([field]) => !generatedFields.has(field)));
|
|
119
|
+
}
|
|
110
120
|
function enrichWithRegexHeuristic(entry, absolutePath) {
|
|
111
121
|
try {
|
|
112
122
|
const content = fs.readFileSync(absolutePath, "utf8");
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type VALID_ENTITY_TYPES } from "./public/operations/discovery-entities.js";
|
|
2
|
+
import type { PrologPort } from "./public/operations/runtime-types.js";
|
|
3
|
+
import type { SearchMatch } from "./search-ranking.js";
|
|
4
|
+
export type IntentSearchFacetName = "actors" | "actions" | "objects" | "constraints" | "aliases";
|
|
5
|
+
export type IntentSearchFacets = Readonly<Partial<Record<IntentSearchFacetName, readonly string[]>>>;
|
|
6
|
+
export type SourceLocation = Readonly<{
|
|
7
|
+
path: string;
|
|
8
|
+
line?: number;
|
|
9
|
+
column?: number;
|
|
10
|
+
symbol?: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type IntentSearchOptions = Readonly<{
|
|
13
|
+
query: string;
|
|
14
|
+
type?: (typeof VALID_ENTITY_TYPES)[number] | string;
|
|
15
|
+
semanticFacets?: IntentSearchFacets;
|
|
16
|
+
sourceLocations?: readonly SourceLocation[];
|
|
17
|
+
minScore?: number;
|
|
18
|
+
}>;
|
|
19
|
+
export type IntentSourceMatch = Readonly<{
|
|
20
|
+
path: string;
|
|
21
|
+
symbolId?: string;
|
|
22
|
+
distance?: number;
|
|
23
|
+
}>;
|
|
24
|
+
export type IntentGraphPath = Readonly<{
|
|
25
|
+
from: string;
|
|
26
|
+
relationships: readonly string[];
|
|
27
|
+
to: string;
|
|
28
|
+
}>;
|
|
29
|
+
export type IntentSearchEvidence = Readonly<{
|
|
30
|
+
normalizedScore: number;
|
|
31
|
+
matchedFacets: readonly string[];
|
|
32
|
+
sourceMatches: readonly IntentSourceMatch[];
|
|
33
|
+
graphPaths: readonly IntentGraphPath[];
|
|
34
|
+
abstentionEligible: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
export type IntentSearchMatch = SearchMatch & {
|
|
37
|
+
readonly evidence: IntentSearchEvidence;
|
|
38
|
+
};
|
|
39
|
+
export type IntentSearchAnalysis = Readonly<{
|
|
40
|
+
rankingMode: "intent-v1";
|
|
41
|
+
candidateCount: number;
|
|
42
|
+
acceptedCount: number;
|
|
43
|
+
topScore: number | null;
|
|
44
|
+
topTwoMargin: number | null;
|
|
45
|
+
abstained: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
export type IntentSearchResult = Readonly<{
|
|
48
|
+
matches: readonly IntentSearchMatch[];
|
|
49
|
+
analysis: IntentSearchAnalysis;
|
|
50
|
+
}>;
|
|
51
|
+
type GraphEdge = Readonly<{
|
|
52
|
+
relationship: string;
|
|
53
|
+
from: string;
|
|
54
|
+
to: string;
|
|
55
|
+
}>;
|
|
56
|
+
export declare function rankIntentEntities(entities: readonly Record<string, unknown>[], options: IntentSearchOptions, workspaceRoot: string, graphEdges?: readonly GraphEdge[]): Promise<IntentSearchResult>;
|
|
57
|
+
export declare function executeIntentSearch(options: IntentSearchOptions, prolog: PrologPort, workspaceRoot: string): Promise<IntentSearchResult>;
|
|
58
|
+
export declare function validateIntentSearchInput(input: IntentSearchOptions): void;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=intent-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-search.d.ts","sourceRoot":"","sources":["../src/intent-search.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,SAAS,GACT,SAAS,GACT,aAAa,GACb,SAAS,CAAC;AAGd,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAC1D,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAGH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACpD,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAGH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CAAC;AAGH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC,CAAC;AAGH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;CACzC,CAAC;AAGF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAGH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtC,QAAQ,EAAE,oBAAoB,CAAC;CAChC,CAAC,CAAC;AAEH,KAAK,SAAS,GAAG,QAAQ,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CAAC;AA+RH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC5C,OAAO,EAAE,mBAAmB,EAC5B,aAAa,EAAE,MAAM,EACrB,UAAU,GAAE,SAAS,SAAS,EAAO,GACpC,OAAO,CAAC,kBAAkB,CAAC,CA8F7B;AAyFD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAuC7B;AAGD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CA0C1E"}
|