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
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync, rmdirSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Workspace-scoped mutex serializing every writer of the symbol compiler
|
|
5
|
+
* surface: authored manifest edits, targeted coordinate refresh, full
|
|
6
|
+
* coordinate refresh, ordinary manifest compilation, and the RDF commit that
|
|
7
|
+
* consumes them. Atomic rename prevents torn files but not lost updates, so
|
|
8
|
+
* concurrent read-modify-write cycles must hold this lock across their whole
|
|
9
|
+
* sequence.
|
|
10
|
+
*/
|
|
11
|
+
const LOCK_FILE_RELATIVE = path.join(".kb", ".symbol-compiler.lock");
|
|
12
|
+
const OWNER_FILE = "owner.json";
|
|
13
|
+
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
14
|
+
const RETRY_INTERVAL_MS = 25;
|
|
15
|
+
const MAX_RELEASE_FILESYSTEM_ATTEMPTS = 3;
|
|
16
|
+
const NODE_FILE_SYSTEM = {
|
|
17
|
+
mkdirSync: (target, options) => {
|
|
18
|
+
mkdirSync(target, options);
|
|
19
|
+
},
|
|
20
|
+
readFileSync: (target) => readFileSync(target, "utf8"),
|
|
21
|
+
writeFileSync: (target, data, options) => {
|
|
22
|
+
writeFileSync(target, data, options);
|
|
23
|
+
},
|
|
24
|
+
unlinkSync: (target) => unlinkSync(target),
|
|
25
|
+
rmdirSync: (target) => rmdirSync(target),
|
|
26
|
+
};
|
|
27
|
+
// implements REQ-generated-coordinate-persistence
|
|
28
|
+
export class SymbolCompilerLockError extends Error {
|
|
29
|
+
name = "SymbolCompilerLockError";
|
|
30
|
+
}
|
|
31
|
+
function lockPath(workspaceRoot) {
|
|
32
|
+
return path.join(workspaceRoot, LOCK_FILE_RELATIVE);
|
|
33
|
+
}
|
|
34
|
+
function randomToken() {
|
|
35
|
+
return `${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
|
|
36
|
+
}
|
|
37
|
+
function readLockRecord(content) {
|
|
38
|
+
try {
|
|
39
|
+
const parsed = JSON.parse(content);
|
|
40
|
+
if (typeof parsed !== "object" ||
|
|
41
|
+
parsed === null ||
|
|
42
|
+
typeof parsed.pid !== "number" ||
|
|
43
|
+
typeof parsed.token !== "string" ||
|
|
44
|
+
typeof parsed.acquiredAt !== "number") {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return parsed;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function errorDetail(error) {
|
|
54
|
+
if (!(error instanceof Error))
|
|
55
|
+
return String(error);
|
|
56
|
+
const code = error.code;
|
|
57
|
+
return code === undefined ? error.message : `${code}: ${error.message}`;
|
|
58
|
+
}
|
|
59
|
+
function errorCode(error) {
|
|
60
|
+
if (typeof error !== "object" || error === null)
|
|
61
|
+
return undefined;
|
|
62
|
+
return error.code;
|
|
63
|
+
}
|
|
64
|
+
function isTransientFilesystemError(error) {
|
|
65
|
+
if (typeof error !== "object" || error === null)
|
|
66
|
+
return false;
|
|
67
|
+
const code = error.code;
|
|
68
|
+
return (code === "EBUSY" ||
|
|
69
|
+
code === "EAGAIN" ||
|
|
70
|
+
code === "EINTR" ||
|
|
71
|
+
code === "EPERM");
|
|
72
|
+
}
|
|
73
|
+
function retryTransientFilesystemOperation(operation, canRetry = () => true) {
|
|
74
|
+
let attempts = 0;
|
|
75
|
+
while (attempts < MAX_RELEASE_FILESYSTEM_ATTEMPTS) {
|
|
76
|
+
attempts += 1;
|
|
77
|
+
try {
|
|
78
|
+
return { ok: true, value: operation(), attempts };
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (!isTransientFilesystemError(error) ||
|
|
82
|
+
attempts === MAX_RELEASE_FILESYSTEM_ATTEMPTS ||
|
|
83
|
+
!canRetry(error)) {
|
|
84
|
+
return { ok: false, error, attempts };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
throw new Error("unreachable retry state");
|
|
89
|
+
}
|
|
90
|
+
function manualCleanupGuidance(target, ownerPath) {
|
|
91
|
+
return `To clean it manually, verify no operation is active, verify ${ownerPath} and ${target}, then remove ${target}`;
|
|
92
|
+
}
|
|
93
|
+
function removeLockDirectory(fileSystem, target) {
|
|
94
|
+
const result = retryTransientFilesystemOperation(() => fileSystem.rmdirSync(target));
|
|
95
|
+
if (result.ok)
|
|
96
|
+
return;
|
|
97
|
+
const ownerPath = path.join(target, OWNER_FILE);
|
|
98
|
+
throw new SymbolCompilerLockError(`failed to remove symbol compiler lock directory at ${target} after ${result.attempts} attempt(s): ${errorDetail(result.error)}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
|
|
99
|
+
}
|
|
100
|
+
function removeLockOwner(fileSystem, target, ownerPath, ignoreMissing) {
|
|
101
|
+
const result = retryTransientFilesystemOperation(() => fileSystem.unlinkSync(ownerPath));
|
|
102
|
+
if (result.ok)
|
|
103
|
+
return;
|
|
104
|
+
const code = errorCode(result.error);
|
|
105
|
+
if (ignoreMissing && code === "ENOENT")
|
|
106
|
+
return;
|
|
107
|
+
throw new SymbolCompilerLockError(`failed to remove symbol compiler lock owner at ${ownerPath} after ${result.attempts} attempt(s): ${errorDetail(result.error)}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
|
|
108
|
+
}
|
|
109
|
+
function existingLockDescription(fileSystem, target, ownerPath) {
|
|
110
|
+
try {
|
|
111
|
+
const record = readLockRecord(fileSystem.readFileSync(ownerPath));
|
|
112
|
+
return record === null
|
|
113
|
+
? "lock owner metadata is corrupt"
|
|
114
|
+
: `held by pid ${record.pid}`;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
try {
|
|
118
|
+
const legacyRecord = readLockRecord(fileSystem.readFileSync(target));
|
|
119
|
+
return legacyRecord === null
|
|
120
|
+
? "legacy or corrupt lock"
|
|
121
|
+
: `legacy lock held by pid ${legacyRecord.pid}`;
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return "lock is initializing or corrupt";
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function defaultSleep(ms) {
|
|
129
|
+
await new Promise((resolvePromise) => setTimeout(resolvePromise, ms));
|
|
130
|
+
}
|
|
131
|
+
// implements REQ-generated-coordinate-persistence
|
|
132
|
+
export function releaseSymbolCompilerLock(handle, operationFailure) {
|
|
133
|
+
if (handle === undefined)
|
|
134
|
+
return;
|
|
135
|
+
try {
|
|
136
|
+
handle.release();
|
|
137
|
+
}
|
|
138
|
+
catch (releaseError) {
|
|
139
|
+
if (operationFailure !== undefined) {
|
|
140
|
+
throw new AggregateError([operationFailure.error, releaseError], "Operation failed and symbol compiler lock release failed");
|
|
141
|
+
}
|
|
142
|
+
throw releaseError;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Acquire the workspace symbol compiler lock without a callback shape, for
|
|
147
|
+
* operations whose lock must span several awaits (source publication,
|
|
148
|
+
* coordinate refresh, canonical re-extraction, and the RDF commit).
|
|
149
|
+
*/
|
|
150
|
+
// implements REQ-generated-coordinate-persistence
|
|
151
|
+
export async function acquireSymbolCompilerLock(workspaceRoot, options = {}) {
|
|
152
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
153
|
+
const now = options.now ?? Date.now;
|
|
154
|
+
const sleep = options.sleep ?? defaultSleep;
|
|
155
|
+
const fileSystem = options.fileSystem ?? NODE_FILE_SYSTEM;
|
|
156
|
+
const target = lockPath(workspaceRoot);
|
|
157
|
+
const ownerPath = path.join(target, OWNER_FILE);
|
|
158
|
+
const token = randomToken();
|
|
159
|
+
const deadline = now() + timeoutMs;
|
|
160
|
+
const parentPath = path.dirname(target);
|
|
161
|
+
const parentResult = retryTransientFilesystemOperation(() => fileSystem.mkdirSync(parentPath, { recursive: true }));
|
|
162
|
+
if (!parentResult.ok) {
|
|
163
|
+
throw new SymbolCompilerLockError(`failed to create symbol compiler lock parent at ${parentPath} after ${parentResult.attempts} attempt(s): ${errorDetail(parentResult.error)}`);
|
|
164
|
+
}
|
|
165
|
+
let acquired = false;
|
|
166
|
+
let lastBlocker = "unknown";
|
|
167
|
+
while (now() < deadline) {
|
|
168
|
+
const targetResult = retryTransientFilesystemOperation(() => {
|
|
169
|
+
// Directory creation is the atomic, cross-platform lock authority.
|
|
170
|
+
fileSystem.mkdirSync(target);
|
|
171
|
+
});
|
|
172
|
+
if (targetResult.ok) {
|
|
173
|
+
acquired = true;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
if (errorCode(targetResult.error) !== "EEXIST") {
|
|
177
|
+
throw new SymbolCompilerLockError(`failed to acquire symbol compiler lock directory at ${target} after ${targetResult.attempts} attempt(s): ${errorDetail(targetResult.error)}`);
|
|
178
|
+
}
|
|
179
|
+
lastBlocker = existingLockDescription(fileSystem, target, ownerPath);
|
|
180
|
+
await sleep(RETRY_INTERVAL_MS);
|
|
181
|
+
}
|
|
182
|
+
if (!acquired) {
|
|
183
|
+
throw new SymbolCompilerLockError(`symbol compiler lock is ${lastBlocker}; refused after ${timeoutMs}ms to avoid a lost update`);
|
|
184
|
+
}
|
|
185
|
+
const payload = `${JSON.stringify({
|
|
186
|
+
pid: process.pid,
|
|
187
|
+
token,
|
|
188
|
+
acquiredAt: now(),
|
|
189
|
+
})}\n`;
|
|
190
|
+
try {
|
|
191
|
+
const ownerResult = retryTransientFilesystemOperation(() => fileSystem.writeFileSync(ownerPath, payload, {
|
|
192
|
+
encoding: "utf8",
|
|
193
|
+
flag: "wx",
|
|
194
|
+
}), () => {
|
|
195
|
+
try {
|
|
196
|
+
fileSystem.readFileSync(ownerPath);
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
catch (probeError) {
|
|
200
|
+
return errorCode(probeError) === "ENOENT";
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
if (!ownerResult.ok)
|
|
204
|
+
throw ownerResult.error;
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
const cleanupFailures = [];
|
|
208
|
+
try {
|
|
209
|
+
removeLockOwner(fileSystem, target, ownerPath, true);
|
|
210
|
+
}
|
|
211
|
+
catch (cleanupError) {
|
|
212
|
+
cleanupFailures.push(`owner cleanup: ${errorDetail(cleanupError)}`);
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
removeLockDirectory(fileSystem, target);
|
|
216
|
+
}
|
|
217
|
+
catch (cleanupError) {
|
|
218
|
+
cleanupFailures.push(`directory cleanup: ${errorDetail(cleanupError)}`);
|
|
219
|
+
}
|
|
220
|
+
const cleanupContext = cleanupFailures.length === 0
|
|
221
|
+
? "lock directory cleanup completed"
|
|
222
|
+
: `lock remains fail-closed at ${target}; ${cleanupFailures.join("; ")}`;
|
|
223
|
+
throw new SymbolCompilerLockError(`failed to initialize symbol compiler lock owner at ${ownerPath}: ${errorDetail(error)}; ${cleanupContext}`);
|
|
224
|
+
}
|
|
225
|
+
let releaseState = "owned";
|
|
226
|
+
return {
|
|
227
|
+
release: () => {
|
|
228
|
+
if (releaseState === "released")
|
|
229
|
+
return;
|
|
230
|
+
if (releaseState === "owned") {
|
|
231
|
+
const readResult = retryTransientFilesystemOperation(() => fileSystem.readFileSync(ownerPath));
|
|
232
|
+
if (!readResult.ok) {
|
|
233
|
+
throw new SymbolCompilerLockError(`failed to validate symbol compiler lock owner at ${ownerPath} after ${readResult.attempts} attempt(s): ${errorDetail(readResult.error)}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
|
|
234
|
+
}
|
|
235
|
+
const record = readLockRecord(readResult.value);
|
|
236
|
+
if (record === null) {
|
|
237
|
+
throw new SymbolCompilerLockError(`refused to release symbol compiler lock with corrupt owner metadata at ${ownerPath}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
|
|
238
|
+
}
|
|
239
|
+
if (record.token !== token) {
|
|
240
|
+
releaseState = "released";
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
removeLockOwner(fileSystem, target, ownerPath, false);
|
|
244
|
+
releaseState = "owner-removed";
|
|
245
|
+
}
|
|
246
|
+
removeLockDirectory(fileSystem, target);
|
|
247
|
+
releaseState = "released";
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Run `operation` while holding the workspace symbol compiler lock.
|
|
253
|
+
*
|
|
254
|
+
* Atomic directory creation is the lock authority. Owner metadata is
|
|
255
|
+
* release authorization and diagnostics: every existing target, including a
|
|
256
|
+
* legacy file or a directory with missing/corrupt metadata, blocks contenders
|
|
257
|
+
* until timeout.
|
|
258
|
+
* Release failures propagate so successful work is never reported unlocked.
|
|
259
|
+
*/
|
|
260
|
+
// implements REQ-generated-coordinate-persistence
|
|
261
|
+
export async function withSymbolCompilerLock(workspaceRoot, operation, options = {}) {
|
|
262
|
+
const handle = await acquireSymbolCompilerLock(workspaceRoot, options);
|
|
263
|
+
let operationFailure;
|
|
264
|
+
try {
|
|
265
|
+
return await operation();
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
operationFailure = { error };
|
|
269
|
+
throw error;
|
|
270
|
+
}
|
|
271
|
+
finally {
|
|
272
|
+
releaseSymbolCompilerLock(handle, operationFailure);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-granularity.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/symbol-granularity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAUjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"symbol-granularity.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/symbol-granularity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAUjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA+FpD,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,aAAa,EAAE,SAAS,iBAAiB,EAAE,EAC3C,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { Project, ScriptKind } from "ts-morph";
|
|
2
|
+
import { Project, ScriptKind, SyntaxKind } from "ts-morph";
|
|
3
3
|
import { getBehavioralSymbolNames, getNonBehavioralSymbolNames, inferSymbolRole, isAllowedGranularityReason, isTraceabilityRelationshipType, } from "../../public/symbol-granularity.js";
|
|
4
4
|
function scriptKind(filePath) {
|
|
5
5
|
const extension = path.extname(filePath).toLowerCase();
|
|
@@ -36,12 +36,31 @@ function candidates(filePath, content) {
|
|
|
36
36
|
if (className)
|
|
37
37
|
found.push(candidate(className, "class"));
|
|
38
38
|
for (const method of cls.getMethods()) {
|
|
39
|
+
if (isPrivateClassMember(method))
|
|
40
|
+
continue;
|
|
39
41
|
const name = method.getName();
|
|
40
42
|
if (className)
|
|
41
43
|
found.push(candidate(`${className}.${name}`, "method"));
|
|
42
44
|
bareMethods.set(name, candidate(name, "method"));
|
|
43
45
|
methodCounts.set(name, (methodCounts.get(name) ?? 0) + 1);
|
|
44
46
|
}
|
|
47
|
+
for (const property of cls.getProperties()) {
|
|
48
|
+
if (isPrivateClassMember(property))
|
|
49
|
+
continue;
|
|
50
|
+
const name = property.getName();
|
|
51
|
+
if (className)
|
|
52
|
+
found.push(candidate(`${className}.${name}`, "property"));
|
|
53
|
+
}
|
|
54
|
+
for (const accessor of [
|
|
55
|
+
...cls.getGetAccessors(),
|
|
56
|
+
...cls.getSetAccessors(),
|
|
57
|
+
]) {
|
|
58
|
+
if (isPrivateClassMember(accessor))
|
|
59
|
+
continue;
|
|
60
|
+
const name = accessor.getName();
|
|
61
|
+
if (className)
|
|
62
|
+
found.push(candidate(`${className}.${name}`, "accessor"));
|
|
63
|
+
}
|
|
45
64
|
}
|
|
46
65
|
for (const [name, count] of methodCounts) {
|
|
47
66
|
const method = bareMethods.get(name);
|
|
@@ -60,8 +79,19 @@ function candidates(filePath, content) {
|
|
|
60
79
|
if (item.isExported())
|
|
61
80
|
found.push(candidate(item.getName(), "enum"));
|
|
62
81
|
}
|
|
82
|
+
for (const statement of source.getVariableStatements()) {
|
|
83
|
+
if (!statement.isExported())
|
|
84
|
+
continue;
|
|
85
|
+
for (const declaration of statement.getDeclarations()) {
|
|
86
|
+
found.push(candidate(declaration.getName(), "variable"));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
63
89
|
return found.sort((left, right) => left.name.localeCompare(right.name));
|
|
64
90
|
}
|
|
91
|
+
function isPrivateClassMember(member) {
|
|
92
|
+
return (member.hasModifier(SyntaxKind.PrivateKeyword) ||
|
|
93
|
+
member.getName().startsWith("#"));
|
|
94
|
+
}
|
|
65
95
|
function summarized(names) {
|
|
66
96
|
const shown = names.slice(0, 10);
|
|
67
97
|
const hidden = names.length - shown.length;
|
|
@@ -96,7 +126,8 @@ export async function validateSymbolGranularity(entity, relationships, context)
|
|
|
96
126
|
throw error;
|
|
97
127
|
}
|
|
98
128
|
const available = candidates(entity.sourceFile, content);
|
|
99
|
-
|
|
129
|
+
const exact = available.find(({ name }) => name === entity.title);
|
|
130
|
+
if (exact && (exact.kind !== "variable" || entity.symbol_role === "config"))
|
|
100
131
|
return;
|
|
101
132
|
const behavioral = getBehavioralSymbolNames(available);
|
|
102
133
|
if (behavioral.length === 0)
|
|
@@ -105,5 +136,5 @@ export async function validateSymbolGranularity(entity, relationships, context)
|
|
|
105
136
|
const ignored = nonBehavioral.length > 0
|
|
106
137
|
? ` Non-behavioral symbols in the file were ignored for this decision: ${summarized(nonBehavioral)}.`
|
|
107
138
|
: "";
|
|
108
|
-
throw new Error(`Symbol ${String(entity.id)} links ${entity.sourceFile} coarsely while granular symbols are available (behavioral only): ${summarized(behavioral)}. Move relationships to a behavioral symbol, add a manifest behavioral anchor, or set granularity_reason to config-artifact, module-level-behavior, extractor-miss, or
|
|
139
|
+
throw new Error(`Symbol ${String(entity.id)} links ${entity.sourceFile} coarsely while granular symbols are available (behavioral only): ${summarized(behavioral)}. Move relationships to a behavioral symbol, add a manifest behavioral anchor, or set granularity_reason to config-artifact, module-level-behavior, extractor-miss, legacy-link, or test-suite.${ignored}`);
|
|
109
140
|
}
|
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import type { OperationContext } from "../../public/operations/runtime-types.js";
|
|
2
|
-
type
|
|
2
|
+
export type TargetedRefreshOutcome = "updated" | "unchanged" | "removed" | "not_found";
|
|
3
|
+
export type RefreshResult = {
|
|
3
4
|
readonly refreshed: boolean;
|
|
4
5
|
readonly found: boolean;
|
|
6
|
+
readonly outcome?: TargetedRefreshOutcome;
|
|
7
|
+
readonly publication?: ArtifactPublicationReceipt;
|
|
8
|
+
};
|
|
9
|
+
export type ArtifactPublicationReceipt = {
|
|
10
|
+
readonly path: string;
|
|
11
|
+
readonly beforeHash: string | null;
|
|
12
|
+
readonly afterHash: string;
|
|
13
|
+
rollback(): void;
|
|
5
14
|
};
|
|
6
15
|
type RefreshImplementation = (symbolId: string, context: OperationContext) => Promise<RefreshResult>;
|
|
16
|
+
/** Targeted coordinate refresh under the workspace symbol compiler lock. */
|
|
7
17
|
export declare function refreshSymbolCoordinates(symbolId: string, context: OperationContext): Promise<RefreshResult>;
|
|
18
|
+
/** Run one refresh step without acquiring the lock (caller holds it). */
|
|
19
|
+
export declare function refreshSymbolCoordinatesUnlocked(symbolId: string, context: OperationContext): Promise<RefreshResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Refresh against an explicitly authored manifest path (the source-first
|
|
22
|
+
* write target), not just the canonical lane. Callers hold the compiler lock.
|
|
23
|
+
*/
|
|
24
|
+
export declare function refreshSymbolCoordinatesForManifest(symbolId: string, manifestAbsolutePath: string, context: OperationContext): Promise<RefreshResult>;
|
|
8
25
|
export declare function setSymbolRefreshForTests(refresh: RefreshImplementation | undefined): void;
|
|
9
26
|
export {};
|
|
10
27
|
//# sourceMappingURL=symbol-refresh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-refresh.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/symbol-refresh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"symbol-refresh.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/symbol-refresh.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAgBjF,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,CAAC;AAGhB,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC;CACnD,CAAC;AAGF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,IAAI,IAAI,CAAC;CAClB,CAAC;AAEF,KAAK,qBAAqB,GAAG,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,KACtB,OAAO,CAAC,aAAa,CAAC,CAAC;AAqS5B,4EAA4E;AAC5E,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,aAAa,CAAC,CASxB;AAED,yEAAyE;AAEzE,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED;;;GAGG;AAEH,wBAAsB,mCAAmC,CACvD,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,aAAa,CAAC,CAOxB;AAGD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,IAAI,CAEN"}
|