project-tiny-context-harness 0.8.16 → 0.11.0
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/README.md +119 -41
- package/assets/README.md +184 -55
- package/assets/README.zh-CN.md +114 -40
- package/assets/agents/AGENTS_CORE.md +2 -2
- package/assets/context_templates/context.toml +6 -1
- package/assets/context_templates/screen-contract.md +16 -0
- package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_helpers.cs +301 -0
- package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_run.cs +197 -0
- package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_types.cs +215 -0
- package/assets/runtime/windows-job-supervisor/windows_job_process_supervisor.ps1 +117 -0
- package/assets/skills/context_development_engineer/SKILL.md +16 -30
- package/assets/skills/context_development_engineer/references/engineering-design-reasoning.md +93 -0
- package/assets/skills/context_surface_contract/SKILL.md +13 -2
- package/assets/skills/context_uiux_design/SKILL.md +7 -3
- package/assets/skills/context_uiux_design/references/task-uiux-analysis.md +82 -0
- package/assets/skills/design-resource-authoring/SKILL.md +18 -9
- package/assets/skills/design-resource-authoring/references/authority-delta-assessment.md +52 -0
- package/assets/skills/design-resource-authoring/references/downstream-handoff.md +22 -6
- package/assets/skills/design-resource-authoring/references/formal-selected-web-app-handoff.md +26 -8
- package/assets/skills/design-resource-authoring/references/implementation-feasibility.md +111 -0
- package/assets/skills/design-resource-authoring/references/open-design-provider.md +45 -7
- package/assets/skills/design-resource-authoring/references/recovery-and-writeback.md +7 -1
- package/assets/skills/design-resource-authoring/references/resource-selection.md +115 -3
- package/assets/skills/design-system-authoring/SKILL.md +23 -17
- package/assets/skills/design-system-authoring/references/authority-adoption.md +19 -9
- package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +4 -0
- package/assets/skills/long-task-workflow/SKILL.md +6 -6
- package/assets/skills/long-task-workflow/references/authority-lifecycle.md +10 -4
- package/assets/skills/long-task-workflow/references/contract-authoring.md +5 -5
- package/assets/skills/long-task-workflow/references/evidence-design.md +14 -3
- package/assets/skills/long-task-workflow/references/source-authoring.md +11 -8
- package/assets/tools/context_rules.json +53 -0
- package/assets/tools/validate_context.py +302 -77
- package/dist/cli.js +2 -1
- package/dist/commands/context-create.d.ts +1 -0
- package/dist/commands/context-create.js +90 -0
- package/dist/commands/context-inspect.d.ts +1 -0
- package/dist/commands/context-inspect.js +98 -0
- package/dist/commands/context-move.d.ts +1 -0
- package/dist/commands/context-move.js +78 -0
- package/dist/commands/context-register.d.ts +1 -0
- package/dist/commands/context-register.js +110 -0
- package/dist/commands/context-transaction.d.ts +1 -0
- package/dist/commands/context-transaction.js +84 -0
- package/dist/commands/context.d.ts +1 -0
- package/dist/commands/context.js +36 -0
- package/dist/commands/design-authority-delta.d.ts +1 -0
- package/dist/commands/design-authority-delta.js +53 -0
- package/dist/commands/design-authority.d.ts +1 -0
- package/dist/commands/design-authority.js +104 -0
- package/dist/commands/design-resource.js +17 -3
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.js +61 -3
- package/dist/commands/index.js +19 -2
- package/dist/commands/long-task-authoring.js +20 -2
- package/dist/commands/long-task-workdir.d.ts +2 -0
- package/dist/commands/long-task-workdir.js +23 -0
- package/dist/commands/long-task.js +75 -6
- package/dist/commands/route.d.ts +15 -0
- package/dist/commands/route.js +142 -0
- package/dist/index.d.ts +3 -13
- package/dist/index.js +3 -12
- package/dist/lib/cli-exit.d.ts +14 -0
- package/dist/lib/cli-exit.js +19 -0
- package/dist/lib/context-catalog/catalog-default-footprint.d.ts +3 -0
- package/dist/lib/context-catalog/catalog-default-footprint.js +53 -0
- package/dist/lib/context-catalog/catalog-diagnostics.d.ts +9 -0
- package/dist/lib/context-catalog/catalog-diagnostics.js +34 -0
- package/dist/lib/context-catalog/catalog-discovery.d.ts +7 -0
- package/dist/lib/context-catalog/catalog-discovery.js +81 -0
- package/dist/lib/context-catalog/catalog-load.d.ts +8 -0
- package/dist/lib/context-catalog/catalog-load.js +187 -0
- package/dist/lib/context-catalog/catalog-path-validation.d.ts +7 -0
- package/dist/lib/context-catalog/catalog-path-validation.js +62 -0
- package/dist/lib/context-catalog/catalog-paths.d.ts +11 -0
- package/dist/lib/context-catalog/catalog-paths.js +41 -0
- package/dist/lib/context-catalog/catalog-portable-contract.d.ts +15 -0
- package/dist/lib/context-catalog/catalog-portable-contract.js +68 -0
- package/dist/lib/context-catalog/catalog-staged-path-safety.d.ts +1 -0
- package/dist/lib/context-catalog/catalog-staged-path-safety.js +36 -0
- package/dist/lib/context-catalog/catalog-types.d.ts +40 -0
- package/dist/lib/context-catalog/catalog-types.js +1 -0
- package/dist/lib/context-catalog/catalog-validation.d.ts +9 -0
- package/dist/lib/context-catalog/catalog-validation.js +148 -0
- package/dist/lib/context-create/context-create-path.d.ts +2 -0
- package/dist/lib/context-create/context-create-path.js +30 -0
- package/dist/lib/context-create/context-create-template.d.ts +2 -0
- package/dist/lib/context-create/context-create-template.js +95 -0
- package/dist/lib/context-create/context-create-types.d.ts +28 -0
- package/dist/lib/context-create/context-create-types.js +1 -0
- package/dist/lib/context-create/context-create-write.d.ts +1 -0
- package/dist/lib/context-create/context-create-write.js +85 -0
- package/dist/lib/context-create/context-create.d.ts +2 -0
- package/dist/lib/context-create/context-create.js +84 -0
- package/dist/lib/context-default-footprint.d.ts +2 -3
- package/dist/lib/context-default-footprint.js +49 -57
- package/dist/lib/context-doctor/context-doctor-types.d.ts +16 -0
- package/dist/lib/context-doctor/context-doctor-types.js +15 -0
- package/dist/lib/context-doctor/context-doctor.d.ts +2 -0
- package/dist/lib/context-doctor/context-doctor.js +130 -0
- package/dist/lib/context-graph-snapshot.d.ts +5 -0
- package/dist/lib/context-graph-snapshot.js +46 -25
- package/dist/lib/context-inspect/context-inspect-projection.d.ts +9 -0
- package/dist/lib/context-inspect/context-inspect-projection.js +49 -0
- package/dist/lib/context-inspect/context-inspect-render.d.ts +2 -0
- package/dist/lib/context-inspect/context-inspect-render.js +29 -0
- package/dist/lib/context-inspect/context-inspect-types.d.ts +43 -0
- package/dist/lib/context-inspect/context-inspect-types.js +1 -0
- package/dist/lib/context-inspect/context-inspect.d.ts +2 -0
- package/dist/lib/context-inspect/context-inspect.js +104 -0
- package/dist/lib/context-manifest-schema.d.ts +1 -1
- package/dist/lib/context-manifest-schema.js +4 -20
- package/dist/lib/context-markdown/context-markdown-analysis.d.ts +15 -0
- package/dist/lib/context-markdown/context-markdown-analysis.js +245 -0
- package/dist/lib/context-markdown/context-markdown-extract.d.ts +7 -0
- package/dist/lib/context-markdown/context-markdown-extract.js +114 -0
- package/dist/lib/context-markdown/context-markdown-types.d.ts +57 -0
- package/dist/lib/context-markdown/context-markdown-types.js +1 -0
- package/dist/lib/context-move/context-move-input.d.ts +8 -0
- package/dist/lib/context-move/context-move-input.js +17 -0
- package/dist/lib/context-move/context-move-literal-scan.d.ts +20 -0
- package/dist/lib/context-move/context-move-literal-scan.js +213 -0
- package/dist/lib/context-move/context-move-live-validation.d.ts +3 -0
- package/dist/lib/context-move/context-move-live-validation.js +56 -0
- package/dist/lib/context-move/context-move-markdown-plan.d.ts +22 -0
- package/dist/lib/context-move/context-move-markdown-plan.js +39 -0
- package/dist/lib/context-move/context-move-projection.d.ts +3 -0
- package/dist/lib/context-move/context-move-projection.js +11 -0
- package/dist/lib/context-move/context-move-reference-validation.d.ts +11 -0
- package/dist/lib/context-move/context-move-reference-validation.js +64 -0
- package/dist/lib/context-move/context-move-render.d.ts +2 -0
- package/dist/lib/context-move/context-move-render.js +24 -0
- package/dist/lib/context-move/context-move-support.d.ts +10 -0
- package/dist/lib/context-move/context-move-support.js +88 -0
- package/dist/lib/context-move/context-move-transaction-plan.d.ts +24 -0
- package/dist/lib/context-move/context-move-transaction-plan.js +108 -0
- package/dist/lib/context-move/context-move-types.d.ts +74 -0
- package/dist/lib/context-move/context-move-types.js +1 -0
- package/dist/lib/context-move/context-move.d.ts +8 -0
- package/dist/lib/context-move/context-move.js +180 -0
- package/dist/lib/context-mutation/manifest-lossless-patch.d.ts +28 -0
- package/dist/lib/context-mutation/manifest-lossless-patch.js +208 -0
- package/dist/lib/context-mutation/markdown-link-patch.d.ts +34 -0
- package/dist/lib/context-mutation/markdown-link-patch.js +143 -0
- package/dist/lib/context-mutation/markdown-link-spans.d.ts +10 -0
- package/dist/lib/context-mutation/markdown-link-spans.js +179 -0
- package/dist/lib/context-mutation/mutation-cas.d.ts +13 -0
- package/dist/lib/context-mutation/mutation-cas.js +365 -0
- package/dist/lib/context-mutation/mutation-command-support.d.ts +12 -0
- package/dist/lib/context-mutation/mutation-command-support.js +57 -0
- package/dist/lib/context-mutation/mutation-commit.d.ts +12 -0
- package/dist/lib/context-mutation/mutation-commit.js +89 -0
- package/dist/lib/context-mutation/mutation-directories.d.ts +5 -0
- package/dist/lib/context-mutation/mutation-directories.js +56 -0
- package/dist/lib/context-mutation/mutation-file-state.d.ts +14 -0
- package/dist/lib/context-mutation/mutation-file-state.js +137 -0
- package/dist/lib/context-mutation/mutation-journal-file-validation.d.ts +1 -0
- package/dist/lib/context-mutation/mutation-journal-file-validation.js +106 -0
- package/dist/lib/context-mutation/mutation-journal-io.d.ts +5 -0
- package/dist/lib/context-mutation/mutation-journal-io.js +55 -0
- package/dist/lib/context-mutation/mutation-journal-storage.d.ts +18 -0
- package/dist/lib/context-mutation/mutation-journal-storage.js +283 -0
- package/dist/lib/context-mutation/mutation-journal-validation-support.d.ts +16 -0
- package/dist/lib/context-mutation/mutation-journal-validation-support.js +140 -0
- package/dist/lib/context-mutation/mutation-journal-validation.d.ts +3 -0
- package/dist/lib/context-mutation/mutation-journal-validation.js +177 -0
- package/dist/lib/context-mutation/mutation-journal.d.ts +8 -0
- package/dist/lib/context-mutation/mutation-journal.js +111 -0
- package/dist/lib/context-mutation/mutation-live-validation.d.ts +3 -0
- package/dist/lib/context-mutation/mutation-live-validation.js +51 -0
- package/dist/lib/context-mutation/mutation-long-task-guard.d.ts +6 -0
- package/dist/lib/context-mutation/mutation-long-task-guard.js +57 -0
- package/dist/lib/context-mutation/mutation-recovery.d.ts +4 -0
- package/dist/lib/context-mutation/mutation-recovery.js +189 -0
- package/dist/lib/context-mutation/mutation-staged-fs.d.ts +5 -0
- package/dist/lib/context-mutation/mutation-staged-fs.js +56 -0
- package/dist/lib/context-mutation/mutation-types.d.ts +103 -0
- package/dist/lib/context-mutation/mutation-types.js +1 -0
- package/dist/lib/context-register/context-register-input.d.ts +11 -0
- package/dist/lib/context-register/context-register-input.js +43 -0
- package/dist/lib/context-register/context-register-render.d.ts +2 -0
- package/dist/lib/context-register/context-register-render.js +21 -0
- package/dist/lib/context-register/context-register-support.d.ts +6 -0
- package/dist/lib/context-register/context-register-support.js +46 -0
- package/dist/lib/context-register/context-register-types.d.ts +46 -0
- package/dist/lib/context-register/context-register-types.js +1 -0
- package/dist/lib/context-register/context-register.d.ts +8 -0
- package/dist/lib/context-register/context-register.js +155 -0
- package/dist/lib/context-router/context-route-budget.d.ts +15 -0
- package/dist/lib/context-router/context-route-budget.js +14 -0
- package/dist/lib/context-router/context-route-candidates.d.ts +15 -0
- package/dist/lib/context-router/context-route-candidates.js +112 -0
- package/dist/lib/context-router/context-route-order.d.ts +6 -0
- package/dist/lib/context-router/context-route-order.js +53 -0
- package/dist/lib/context-router/context-route-paths.d.ts +16 -0
- package/dist/lib/context-router/context-route-paths.js +109 -0
- package/dist/lib/context-router/context-route-render.d.ts +2 -0
- package/dist/lib/context-router/context-route-render.js +32 -0
- package/dist/lib/context-router/context-route-scan.d.ts +18 -0
- package/dist/lib/context-router/context-route-scan.js +156 -0
- package/dist/lib/context-router/context-route-selection.d.ts +16 -0
- package/dist/lib/context-router/context-route-selection.js +72 -0
- package/dist/lib/context-router/context-route-terms.d.ts +13 -0
- package/dist/lib/context-router/context-route-terms.js +202 -0
- package/dist/lib/context-router/context-route-types.d.ts +101 -0
- package/dist/lib/context-router/context-route-types.js +1 -0
- package/dist/lib/context-router/context-route.d.ts +2 -0
- package/dist/lib/context-router/context-route.js +127 -0
- package/dist/lib/context-units-migration.d.ts +13 -0
- package/dist/lib/context-units-migration.js +217 -0
- package/dist/lib/design-authority-binding.d.ts +7 -0
- package/dist/lib/design-authority-binding.js +96 -0
- package/dist/lib/design-authority-closure.d.ts +3 -0
- package/dist/lib/design-authority-closure.js +201 -0
- package/dist/lib/design-authority-delta-codec-primitives.d.ts +10 -0
- package/dist/lib/design-authority-delta-codec-primitives.js +58 -0
- package/dist/lib/design-authority-delta-codec.d.ts +2 -0
- package/dist/lib/design-authority-delta-codec.js +193 -0
- package/dist/lib/design-authority-delta-types.d.ts +65 -0
- package/dist/lib/design-authority-delta-types.js +6 -0
- package/dist/lib/design-authority-delta-validation.d.ts +2 -0
- package/dist/lib/design-authority-delta-validation.js +16 -0
- package/dist/lib/design-authority-digest.d.ts +8 -0
- package/dist/lib/design-authority-digest.js +36 -0
- package/dist/lib/design-authority-files.d.ts +9 -0
- package/dist/lib/design-authority-files.js +62 -0
- package/dist/lib/design-authority-format.d.ts +2 -0
- package/dist/lib/design-authority-format.js +93 -0
- package/dist/lib/design-authority-links.d.ts +10 -0
- package/dist/lib/design-authority-links.js +137 -0
- package/dist/lib/design-authority-manifest.d.ts +4 -0
- package/dist/lib/design-authority-manifest.js +144 -0
- package/dist/lib/design-authority-tokens.d.ts +9 -0
- package/dist/lib/design-authority-tokens.js +45 -0
- package/dist/lib/design-authority-types.d.ts +80 -0
- package/dist/lib/design-authority-types.js +23 -0
- package/dist/lib/design-md-tool-adapter.d.ts +9 -0
- package/dist/lib/design-md-tool-adapter.js +152 -0
- package/dist/lib/design-md-tool-normalization.d.ts +7 -0
- package/dist/lib/design-md-tool-normalization.js +78 -0
- package/dist/lib/design-md-tool-types.d.ts +99 -0
- package/dist/lib/design-md-tool-types.js +8 -0
- package/dist/lib/design-resource-handoff-bundle.js +5 -0
- package/dist/lib/design-resource-handoff-input-types.d.ts +1 -1
- package/dist/lib/design-resource-handoff-manifest-projection.js +4 -0
- package/dist/lib/design-resource-handoff-set-integrity.js +1 -0
- package/dist/lib/design-resource-handoff-shape.js +18 -2
- package/dist/lib/design-resource-handoff-types.d.ts +8 -0
- package/dist/lib/design-resource-handoff-validation.js +24 -0
- package/dist/lib/design-resource-implementation-feasibility-model.d.ts +35 -0
- package/dist/lib/design-resource-implementation-feasibility-model.js +62 -0
- package/dist/lib/design-resource-implementation-feasibility-shape-sections.d.ts +43 -0
- package/dist/lib/design-resource-implementation-feasibility-shape-sections.js +142 -0
- package/dist/lib/design-resource-implementation-feasibility-shape.d.ts +4 -0
- package/dist/lib/design-resource-implementation-feasibility-shape.js +154 -0
- package/dist/lib/design-resource-implementation-feasibility-source-decision-projection.d.ts +24 -0
- package/dist/lib/design-resource-implementation-feasibility-source-decision-projection.js +106 -0
- package/dist/lib/design-resource-implementation-feasibility-source-decision.d.ts +21 -0
- package/dist/lib/design-resource-implementation-feasibility-source-decision.js +75 -0
- package/dist/lib/design-resource-implementation-feasibility-types.d.ts +135 -0
- package/dist/lib/design-resource-implementation-feasibility-types.js +37 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-cells.d.ts +5 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-cells.js +125 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-document.d.ts +4 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-document.js +167 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-facts.d.ts +3 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-facts.js +76 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-realizations.d.ts +8 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-realizations.js +76 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-support.d.ts +10 -0
- package/dist/lib/design-resource-implementation-feasibility-validation-support.js +75 -0
- package/dist/lib/design-resource-implementation-feasibility-validation.d.ts +3 -0
- package/dist/lib/design-resource-implementation-feasibility-validation.js +138 -0
- package/dist/lib/design-resource-recovery-current.js +22 -0
- package/dist/lib/design-resource-recovery-shape.js +64 -7
- package/dist/lib/design-resource-recovery-types.d.ts +4 -1
- package/dist/lib/design-resource-symbolic-fact-shape.js +9 -1
- package/dist/lib/design-resource-symbolic-fact-types.d.ts +8 -0
- package/dist/lib/design-resource-symbolic-fact-validation.js +25 -0
- package/dist/lib/doctor.d.ts +2 -1
- package/dist/lib/doctor.js +29 -1
- package/dist/lib/fs.js +1 -1
- package/dist/lib/long-task-acceptance-reachability-claims.d.ts +2 -0
- package/dist/lib/long-task-acceptance-reachability-claims.js +279 -0
- package/dist/lib/long-task-acceptance-reachability-design.d.ts +2 -0
- package/dist/lib/long-task-acceptance-reachability-design.js +96 -0
- package/dist/lib/long-task-acceptance-reachability-external.d.ts +9 -0
- package/dist/lib/long-task-acceptance-reachability-external.js +123 -0
- package/dist/lib/long-task-acceptance-reachability-helpers.d.ts +64 -0
- package/dist/lib/long-task-acceptance-reachability-helpers.js +473 -0
- package/dist/lib/long-task-acceptance-reachability-semantic.d.ts +2 -0
- package/dist/lib/long-task-acceptance-reachability-semantic.js +122 -0
- package/dist/lib/long-task-acceptance-reachability-types.d.ts +91 -0
- package/dist/lib/long-task-acceptance-reachability-types.js +1 -0
- package/dist/lib/long-task-acceptance-reachability.d.ts +4 -0
- package/dist/lib/long-task-acceptance-reachability.js +115 -0
- package/dist/lib/long-task-activation-validation.d.ts +6 -0
- package/dist/lib/long-task-activation-validation.js +96 -23
- package/dist/lib/long-task-active-authority-lock-context.d.ts +4 -0
- package/dist/lib/long-task-active-authority-lock-context.js +29 -0
- package/dist/lib/long-task-applicability-identity.d.ts +25 -0
- package/dist/lib/long-task-applicability-identity.js +60 -0
- package/dist/lib/long-task-authoring-preflight-diagnostics.js +8 -0
- package/dist/lib/long-task-authoring-preflight-types.d.ts +2 -0
- package/dist/lib/long-task-authoring-preflight-types.js +9 -0
- package/dist/lib/long-task-authoring-preflight.js +18 -2
- package/dist/lib/long-task-authority-material-diff.js +4 -0
- package/dist/lib/long-task-authority-materials.js +19 -0
- package/dist/lib/long-task-authority-policy.d.ts +3 -0
- package/dist/lib/long-task-authority-policy.js +3 -0
- package/dist/lib/long-task-authority-revision-details.js +2 -1
- package/dist/lib/long-task-authority-types.d.ts +2 -0
- package/dist/lib/long-task-authority.js +2 -0
- package/dist/lib/long-task-check-runner.js +3 -296
- package/dist/lib/long-task-check-shape.js +6 -1
- package/dist/lib/long-task-claim-definitions.js +1 -3
- package/dist/lib/long-task-claim-semantic-proof-floor.d.ts +3 -0
- package/dist/lib/long-task-claim-semantic-proof-floor.js +78 -0
- package/dist/lib/long-task-claims.d.ts +0 -18
- package/dist/lib/long-task-claims.js +15 -14
- package/dist/lib/long-task-command-process.d.ts +9 -0
- package/dist/lib/long-task-command-process.js +178 -0
- package/dist/lib/long-task-compact-authoring.js +3 -0
- package/dist/lib/long-task-compact-projections.js +10 -0
- package/dist/lib/long-task-complete-delivery-evidence-types.d.ts +38 -0
- package/dist/lib/long-task-complete-delivery-evidence-types.js +1 -0
- package/dist/lib/long-task-completion-types.d.ts +109 -0
- package/dist/lib/long-task-completion-types.js +1 -0
- package/dist/lib/long-task-conformance-policy.d.ts +2 -1
- package/dist/lib/long-task-conformance-policy.js +11 -4
- package/dist/lib/long-task-context-authority-topology.js +6 -4
- package/dist/lib/long-task-contract-types.d.ts +52 -1
- package/dist/lib/long-task-counterfactual-sandbox.d.ts +7 -1
- package/dist/lib/long-task-counterfactual-sandbox.js +86 -6
- package/dist/lib/long-task-delivery-compiler-preflight.d.ts +24 -0
- package/dist/lib/long-task-delivery-compiler-preflight.js +32 -0
- package/dist/lib/long-task-delivery-compiler.d.ts +1 -0
- package/dist/lib/long-task-delivery-compiler.js +59 -44
- package/dist/lib/long-task-delivery-parser.d.ts +3 -0
- package/dist/lib/long-task-delivery-parser.js +26 -8
- package/dist/lib/long-task-delivery-types.d.ts +2 -0
- package/dist/lib/long-task-delivery-types.js +2 -0
- package/dist/lib/long-task-delivery-validation.d.ts +11 -3
- package/dist/lib/long-task-delivery-validation.js +23 -8
- package/dist/lib/long-task-design-feasibility-binding-owners.d.ts +6 -0
- package/dist/lib/long-task-design-feasibility-binding-owners.js +52 -0
- package/dist/lib/long-task-design-feasibility-binding.d.ts +14 -0
- package/dist/lib/long-task-design-feasibility-binding.js +114 -0
- package/dist/lib/long-task-design-feasibility-source-closure.d.ts +11 -0
- package/dist/lib/long-task-design-feasibility-source-closure.js +87 -0
- package/dist/lib/long-task-design-obligation.d.ts +50 -0
- package/dist/lib/long-task-design-obligation.js +99 -0
- package/dist/lib/long-task-design-resource-handoff.d.ts +5 -3
- package/dist/lib/long-task-design-resource-handoff.js +64 -4
- package/dist/lib/long-task-design-resource-method-binding.js +20 -2
- package/dist/lib/long-task-effective-external-takeover.d.ts +15 -0
- package/dist/lib/long-task-effective-external-takeover.js +109 -0
- package/dist/lib/long-task-effective-external-ui-takeover.d.ts +5 -0
- package/dist/lib/long-task-effective-external-ui-takeover.js +117 -0
- package/dist/lib/long-task-evidence-capability-codec.js +91 -0
- package/dist/lib/long-task-evidence-capability-runtime.js +62 -14
- package/dist/lib/long-task-evidence-capability-types.d.ts +3 -2
- package/dist/lib/long-task-evidence-v2.d.ts +6 -1
- package/dist/lib/long-task-evidence-v2.js +253 -170
- package/dist/lib/long-task-execution-observation.d.ts +7 -0
- package/dist/lib/long-task-execution-observation.js +21 -4
- package/dist/lib/long-task-expected-authority.d.ts +4 -0
- package/dist/lib/long-task-expected-authority.js +126 -0
- package/dist/lib/long-task-external-confirmation-artifacts.d.ts +9 -0
- package/dist/lib/long-task-external-confirmation-artifacts.js +138 -0
- package/dist/lib/long-task-external-confirmation-attestation.d.ts +20 -0
- package/dist/lib/long-task-external-confirmation-attestation.js +115 -0
- package/dist/lib/long-task-external-confirmation-challenge.d.ts +23 -0
- package/dist/lib/long-task-external-confirmation-challenge.js +164 -0
- package/dist/lib/long-task-external-confirmation-context.d.ts +14 -0
- package/dist/lib/long-task-external-confirmation-context.js +53 -0
- package/dist/lib/long-task-external-confirmation-evaluation.d.ts +11 -0
- package/dist/lib/long-task-external-confirmation-evaluation.js +454 -0
- package/dist/lib/long-task-external-confirmation-expected.d.ts +8 -0
- package/dist/lib/long-task-external-confirmation-expected.js +200 -0
- package/dist/lib/long-task-external-confirmation-identity.d.ts +10 -0
- package/dist/lib/long-task-external-confirmation-identity.js +77 -0
- package/dist/lib/long-task-external-confirmation-plan.d.ts +25 -0
- package/dist/lib/long-task-external-confirmation-plan.js +148 -0
- package/dist/lib/long-task-external-confirmation-preparation.d.ts +4 -0
- package/dist/lib/long-task-external-confirmation-preparation.js +100 -0
- package/dist/lib/long-task-external-confirmation-shape.d.ts +8 -0
- package/dist/lib/long-task-external-confirmation-shape.js +387 -0
- package/dist/lib/long-task-external-confirmation-state.d.ts +10 -0
- package/dist/lib/long-task-external-confirmation-state.js +109 -0
- package/dist/lib/long-task-external-confirmation-types.d.ts +195 -0
- package/dist/lib/long-task-external-confirmation-types.js +1 -0
- package/dist/lib/long-task-final-integrity.d.ts +2 -0
- package/dist/lib/long-task-final-integrity.js +21 -10
- package/dist/lib/long-task-final-v2.d.ts +7 -2
- package/dist/lib/long-task-final-v2.js +179 -55
- package/dist/lib/long-task-finalization-identity.d.ts +27 -0
- package/dist/lib/long-task-finalization-identity.js +58 -0
- package/dist/lib/long-task-finding-context.d.ts +1 -1
- package/dist/lib/long-task-finding-context.js +139 -13
- package/dist/lib/long-task-freshness.d.ts +27 -0
- package/dist/lib/long-task-freshness.js +129 -6
- package/dist/lib/long-task-git.js +3 -3
- package/dist/lib/long-task-material-input-closure.d.ts +3 -0
- package/dist/lib/long-task-material-input-closure.js +92 -0
- package/dist/lib/long-task-obligation-authority-resolution.d.ts +12 -0
- package/dist/lib/long-task-obligation-authority-resolution.js +57 -0
- package/dist/lib/long-task-obligation-semantic-identity.d.ts +16 -0
- package/dist/lib/long-task-obligation-semantic-identity.js +116 -0
- package/dist/lib/long-task-observation-authority.d.ts +11 -0
- package/dist/lib/long-task-observation-authority.js +137 -6
- package/dist/lib/long-task-process-table.d.ts +9 -0
- package/dist/lib/long-task-process-table.js +87 -0
- package/dist/lib/long-task-process-tree.d.ts +8 -0
- package/dist/lib/long-task-process-tree.js +108 -0
- package/dist/lib/long-task-proof-adequacy.d.ts +12 -0
- package/dist/lib/long-task-proof-adequacy.js +57 -0
- package/dist/lib/long-task-proof-capability-floor.d.ts +6 -0
- package/dist/lib/long-task-proof-capability-floor.js +137 -0
- package/dist/lib/long-task-protected-files.d.ts +1 -1
- package/dist/lib/long-task-protected-files.js +1 -1
- package/dist/lib/long-task-repair-frontier-checks.d.ts +8 -0
- package/dist/lib/long-task-repair-frontier-checks.js +93 -0
- package/dist/lib/long-task-repair-frontier-groups.d.ts +2 -0
- package/dist/lib/long-task-repair-frontier-groups.js +64 -0
- package/dist/lib/long-task-repair-frontier-utils.d.ts +6 -0
- package/dist/lib/long-task-repair-frontier-utils.js +27 -0
- package/dist/lib/long-task-repair-frontier.d.ts +14 -0
- package/dist/lib/long-task-repair-frontier.js +132 -0
- package/dist/lib/long-task-risk.d.ts +3 -2
- package/dist/lib/long-task-risk.js +73 -24
- package/dist/lib/long-task-root-shape.js +148 -8
- package/dist/lib/long-task-runner-freeze.d.ts +2 -1
- package/dist/lib/long-task-runner-freeze.js +23 -8
- package/dist/lib/long-task-runtime-types.d.ts +34 -40
- package/dist/lib/long-task-semantic-assurance-policy.js +2 -11
- package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
- package/dist/lib/long-task-semantic-drift-migration.js +48 -2
- package/dist/lib/long-task-semantic-fact-binding-types.d.ts +20 -0
- package/dist/lib/long-task-semantic-fact-closure.d.ts +5 -1
- package/dist/lib/long-task-semantic-fact-closure.js +33 -5
- package/dist/lib/long-task-semantic-fact-contract-closure.js +176 -1
- package/dist/lib/long-task-semantic-fact-contract-proofs.js +18 -1
- package/dist/lib/long-task-semantic-fact-input-closure.d.ts +16 -2
- package/dist/lib/long-task-semantic-fact-input-closure.js +138 -15
- package/dist/lib/long-task-semantic-fact-provenance-closure.js +1 -1
- package/dist/lib/long-task-semantic-fact-shape.d.ts +2 -1
- package/dist/lib/long-task-semantic-fact-shape.js +35 -1
- package/dist/lib/long-task-semantic-proof-adequacy.d.ts +2 -0
- package/dist/lib/long-task-semantic-proof-adequacy.js +19 -0
- package/dist/lib/long-task-semantic-proof-profile.d.ts +5 -0
- package/dist/lib/long-task-semantic-proof-profile.js +187 -0
- package/dist/lib/long-task-shape-primitives.d.ts +1 -1
- package/dist/lib/long-task-shape-primitives.js +5 -0
- package/dist/lib/long-task-source-anchors.d.ts +10 -0
- package/dist/lib/long-task-source-anchors.js +102 -0
- package/dist/lib/long-task-source-authority-types.d.ts +46 -0
- package/dist/lib/long-task-source-claim-validation.js +36 -0
- package/dist/lib/long-task-source-conservation-facts.d.ts +8 -0
- package/dist/lib/long-task-source-conservation-facts.js +57 -0
- package/dist/lib/long-task-source-conservation-types.d.ts +34 -0
- package/dist/lib/long-task-source-conservation-types.js +1 -0
- package/dist/lib/long-task-source-conservation.d.ts +7 -0
- package/dist/lib/long-task-source-conservation.js +110 -0
- package/dist/lib/long-task-source-fragments.d.ts +6 -0
- package/dist/lib/long-task-source-fragments.js +219 -0
- package/dist/lib/long-task-source-projection-resolution.d.ts +5 -0
- package/dist/lib/long-task-source-projection-resolution.js +57 -0
- package/dist/lib/long-task-source-projection-validation.d.ts +17 -0
- package/dist/lib/long-task-source-projection-validation.js +154 -0
- package/dist/lib/long-task-source-shape.js +14 -6
- package/dist/lib/long-task-source-supersession.d.ts +5 -0
- package/dist/lib/long-task-source-supersession.js +138 -0
- package/dist/lib/long-task-stage-policy.d.ts +7 -2
- package/dist/lib/long-task-stage-policy.js +67 -23
- package/dist/lib/long-task-state.d.ts +18 -4
- package/dist/lib/long-task-state.js +319 -33
- package/dist/lib/long-task-static-observation-freeze.js +4 -3
- package/dist/lib/long-task-status-projection.d.ts +3 -1
- package/dist/lib/long-task-status-projection.js +44 -13
- package/dist/lib/long-task-status-v2.d.ts +10 -6
- package/dist/lib/long-task-status-v2.js +70 -58
- package/dist/lib/long-task-target-policy.d.ts +8 -3
- package/dist/lib/long-task-target-policy.js +40 -9
- package/dist/lib/long-task-terminal-finalization.d.ts +12 -0
- package/dist/lib/long-task-terminal-finalization.js +190 -0
- package/dist/lib/long-task-ui-design-policy.js +15 -4
- package/dist/lib/long-task-ui-surface-policy.d.ts +2 -1
- package/dist/lib/long-task-ui-surface-policy.js +7 -4
- package/dist/lib/long-task-ui-surface-validation.d.ts +3 -1
- package/dist/lib/long-task-ui-surface-validation.js +2 -2
- package/dist/lib/long-task-verifier-counterfactuals.d.ts +11 -0
- package/dist/lib/long-task-verifier-counterfactuals.js +96 -0
- package/dist/lib/long-task-verifier-execution.d.ts +9 -0
- package/dist/lib/long-task-verifier-execution.js +67 -0
- package/dist/lib/long-task-verifier-identity.js +16 -5
- package/dist/lib/long-task-verifier-v2.js +52 -65
- package/dist/lib/long-task-windows-job-supervisor-helper.d.ts +1 -0
- package/dist/lib/long-task-windows-job-supervisor-helper.js +104 -0
- package/dist/lib/long-task-windows-job-supervisor-protocol.d.ts +28 -0
- package/dist/lib/long-task-windows-job-supervisor-protocol.js +124 -0
- package/dist/lib/long-task-windows-job-supervisor-result.d.ts +11 -0
- package/dist/lib/long-task-windows-job-supervisor-result.js +152 -0
- package/dist/lib/long-task-windows-job-supervisor.d.ts +2 -0
- package/dist/lib/long-task-windows-job-supervisor.js +126 -0
- package/dist/lib/long-task-workspace-scope.d.ts +1 -0
- package/dist/lib/long-task-workspace-scope.js +4 -1
- package/dist/lib/long-task-workspace.d.ts +1 -0
- package/dist/lib/long-task-workspace.js +10 -0
- package/dist/lib/migrations.js +43 -2
- package/dist/lib/repository-path-safety.d.ts +3 -0
- package/dist/lib/repository-path-safety.js +39 -3
- package/dist/lib/semantic-fact-input-shape.d.ts +7 -2
- package/dist/lib/semantic-fact-input-shape.js +25 -1
- package/dist/lib/semantic-fact-inventory-types.d.ts +8 -2
- package/dist/lib/semantic-fact-policy-census.d.ts +1 -1
- package/dist/lib/semantic-fact-policy-census.js +5 -2
- package/dist/lib/semantic-fact-policy.d.ts +1 -1
- package/dist/lib/semantic-fact-policy.js +2 -2
- package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
- package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
- package/dist/lib/validators.d.ts +3 -0
- package/dist/lib/validators.js +45 -157
- package/dist/public-api-core.d.ts +12 -0
- package/dist/public-api-core.js +12 -0
- package/dist/public-api-long-task.d.ts +10 -0
- package/dist/public-api-long-task.js +10 -0
- package/dist/public-types.d.ts +6 -1
- package/dist/schemas/design-authority-delta-assessment-v1.schema.json +191 -0
- package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +166 -2
- package/dist/schemas/long-task-external-confirmation-record-v1.schema.json +155 -0
- package/dist/schemas/long-task-external-confirmation-record-v2.schema.json +209 -0
- package/migrations/README.md +99 -0
- package/package.json +7 -5
- package/source-mappings.yaml +18 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function renderContextRouteText(result, explain) {
|
|
2
|
+
const lines = [
|
|
3
|
+
"Experimental Context route (diagnostic only)",
|
|
4
|
+
`complete=${result.complete} catalog_valid=${result.catalog_valid} output_truncated=${result.output_truncated}`,
|
|
5
|
+
`scan files=${result.scan.files_scanned}/${result.scan.files_considered} bytes=${result.scan.bytes_scanned}`,
|
|
6
|
+
`default Context: ${result.default_context.length} file(s)`,
|
|
7
|
+
];
|
|
8
|
+
if (result.scan.exceeded.length > 0) {
|
|
9
|
+
for (const item of result.scan.exceeded)
|
|
10
|
+
lines.push(`budget exceeded: ${item.budget} observed=${item.observed} limit=${item.limit}${item.path ? ` path=${item.path}` : ""}`);
|
|
11
|
+
}
|
|
12
|
+
for (const candidate of [
|
|
13
|
+
...result.candidates,
|
|
14
|
+
...result.unregistered_matches,
|
|
15
|
+
]) {
|
|
16
|
+
lines.push(`${candidate.registration === "unregistered" ? "unregistered" : "candidate"}: ${candidate.path} (${candidate.bytes} bytes; ${candidate.groups.join(",")})`);
|
|
17
|
+
if (!explain)
|
|
18
|
+
continue;
|
|
19
|
+
for (const reason of candidate.reasons)
|
|
20
|
+
lines.push(` ${reason.kind}: ${reason.input} — ${reason.detail}`);
|
|
21
|
+
for (const match of candidate.matches)
|
|
22
|
+
lines.push(` match ${match.line}:${match.column} ${match.term_source}=${JSON.stringify(match.term)}`);
|
|
23
|
+
}
|
|
24
|
+
for (const item of result.ambiguous)
|
|
25
|
+
lines.push(`ambiguous: ${item.input} -> ${item.candidates.map((entry) => `${entry.id}:${entry.root}`).join(", ")}`);
|
|
26
|
+
for (const item of result.unresolved)
|
|
27
|
+
lines.push(`unresolved: ${item.input} — ${item.reason}`);
|
|
28
|
+
for (const diagnostic of result.diagnostics)
|
|
29
|
+
lines.push(`${diagnostic.severity}: ${diagnostic.code}: ${diagnostic.message}`);
|
|
30
|
+
lines.push("This output neither establishes Authority nor replaces the Workflow-required bounded Context search.");
|
|
31
|
+
return `${lines.join("\n")}\n`;
|
|
32
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CatalogFile } from "../context-catalog/catalog-types.js";
|
|
2
|
+
import type { ContextRouteMatch, ContextRouteScanReport, ContextRouteTerm } from "./context-route-types.js";
|
|
3
|
+
export interface ContextRouteFileMatches {
|
|
4
|
+
matches: ContextRouteMatch[];
|
|
5
|
+
matched_terms: string[];
|
|
6
|
+
output_truncated: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ContextRouteScanResult {
|
|
9
|
+
scan: ContextRouteScanReport;
|
|
10
|
+
matches_by_path: Map<string, ContextRouteFileMatches>;
|
|
11
|
+
output_truncated: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function scanContextCatalogFiles(input: {
|
|
14
|
+
files: CatalogFile[];
|
|
15
|
+
terms: ContextRouteTerm[];
|
|
16
|
+
case_sensitive: boolean;
|
|
17
|
+
max_search_results: number;
|
|
18
|
+
}): Promise<ContextRouteScanResult>;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { open } from "node:fs/promises";
|
|
2
|
+
import { compareUtf8Paths } from "../context-catalog/catalog-paths.js";
|
|
3
|
+
import { CONTEXT_ROUTE_BUDGETS } from "./context-route-budget.js";
|
|
4
|
+
import { stableRouteBudgetExceeded } from "./context-route-order.js";
|
|
5
|
+
import { normalizeRouteText } from "./context-route-terms.js";
|
|
6
|
+
export async function scanContextCatalogFiles(input) {
|
|
7
|
+
const files = [...input.files].sort((left, right) => compareUtf8Paths(left.path, right.path));
|
|
8
|
+
const exceeded = [];
|
|
9
|
+
if (files.length > CONTEXT_ROUTE_BUDGETS.candidate_files) {
|
|
10
|
+
exceeded.push({
|
|
11
|
+
budget: "candidate_files",
|
|
12
|
+
limit: CONTEXT_ROUTE_BUDGETS.candidate_files,
|
|
13
|
+
observed: files.length,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const selectedFiles = files.slice(0, CONTEXT_ROUTE_BUDGETS.candidate_files);
|
|
17
|
+
const matchesByPath = new Map();
|
|
18
|
+
let bytesScanned = 0;
|
|
19
|
+
let filesScanned = 0;
|
|
20
|
+
let outputCount = 0;
|
|
21
|
+
let outputTruncated = false;
|
|
22
|
+
for (const file of selectedFiles) {
|
|
23
|
+
if (file.bytes > CONTEXT_ROUTE_BUDGETS.per_file_scan_bytes) {
|
|
24
|
+
exceeded.push({
|
|
25
|
+
budget: "per_file_scan_bytes",
|
|
26
|
+
limit: CONTEXT_ROUTE_BUDGETS.per_file_scan_bytes,
|
|
27
|
+
observed: file.bytes,
|
|
28
|
+
path: file.path,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const remaining = CONTEXT_ROUTE_BUDGETS.aggregate_scan_bytes - bytesScanned;
|
|
32
|
+
if (remaining <= 0) {
|
|
33
|
+
exceeded.push({
|
|
34
|
+
budget: "aggregate_scan_bytes",
|
|
35
|
+
limit: CONTEXT_ROUTE_BUDGETS.aggregate_scan_bytes,
|
|
36
|
+
observed: bytesScanned +
|
|
37
|
+
Math.min(file.bytes, CONTEXT_ROUTE_BUDGETS.per_file_scan_bytes),
|
|
38
|
+
path: file.path,
|
|
39
|
+
});
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
const byteLimit = Math.min(file.bytes, CONTEXT_ROUTE_BUDGETS.per_file_scan_bytes, remaining);
|
|
43
|
+
if (bytesScanned +
|
|
44
|
+
Math.min(file.bytes, CONTEXT_ROUTE_BUDGETS.per_file_scan_bytes) >
|
|
45
|
+
CONTEXT_ROUTE_BUDGETS.aggregate_scan_bytes) {
|
|
46
|
+
exceeded.push({
|
|
47
|
+
budget: "aggregate_scan_bytes",
|
|
48
|
+
limit: CONTEXT_ROUTE_BUDGETS.aggregate_scan_bytes,
|
|
49
|
+
observed: bytesScanned +
|
|
50
|
+
Math.min(file.bytes, CONTEXT_ROUTE_BUDGETS.per_file_scan_bytes),
|
|
51
|
+
path: file.path,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const content = await readPrefix(file.absolute_path, byteLimit);
|
|
55
|
+
bytesScanned += content.bytes;
|
|
56
|
+
filesScanned += 1;
|
|
57
|
+
const normalized = normalizeRouteText(content.text, input.case_sensitive);
|
|
58
|
+
const fileResult = matchFile(normalized, input.terms);
|
|
59
|
+
if (fileResult.matched_terms.length === 0)
|
|
60
|
+
continue;
|
|
61
|
+
if (fileResult.output_truncated)
|
|
62
|
+
outputTruncated = true;
|
|
63
|
+
const remainingOutput = Math.max(0, input.max_search_results - outputCount);
|
|
64
|
+
const projected = fileResult.matches.slice(0, remainingOutput);
|
|
65
|
+
if (projected.length < fileResult.matches.length || remainingOutput === 0)
|
|
66
|
+
outputTruncated = true;
|
|
67
|
+
outputCount += projected.length;
|
|
68
|
+
matchesByPath.set(file.path, {
|
|
69
|
+
matches: projected,
|
|
70
|
+
matched_terms: fileResult.matched_terms,
|
|
71
|
+
output_truncated: fileResult.output_truncated,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
scan: {
|
|
76
|
+
files_considered: files.length,
|
|
77
|
+
files_scanned: filesScanned,
|
|
78
|
+
bytes_scanned: bytesScanned,
|
|
79
|
+
budget_exceeded: exceeded.length > 0,
|
|
80
|
+
exceeded: stableRouteBudgetExceeded(exceeded),
|
|
81
|
+
},
|
|
82
|
+
matches_by_path: matchesByPath,
|
|
83
|
+
output_truncated: outputTruncated,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
async function readPrefix(absolutePath, limit) {
|
|
87
|
+
const handle = await open(absolutePath, "r");
|
|
88
|
+
try {
|
|
89
|
+
const buffer = Buffer.alloc(limit);
|
|
90
|
+
const { bytesRead } = await handle.read(buffer, 0, limit, 0);
|
|
91
|
+
return {
|
|
92
|
+
text: buffer.subarray(0, bytesRead).toString("utf8"),
|
|
93
|
+
bytes: bytesRead,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
await handle.close();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function matchFile(content, terms) {
|
|
101
|
+
const found = [];
|
|
102
|
+
const matchedTerms = [];
|
|
103
|
+
for (const term of terms) {
|
|
104
|
+
let offset = content.indexOf(term.normalized);
|
|
105
|
+
if (offset < 0)
|
|
106
|
+
continue;
|
|
107
|
+
matchedTerms.push(term.value);
|
|
108
|
+
let count = 0;
|
|
109
|
+
while (offset >= 0 &&
|
|
110
|
+
count <= CONTEXT_ROUTE_BUDGETS.per_file_output_matches) {
|
|
111
|
+
found.push({
|
|
112
|
+
term: term.value,
|
|
113
|
+
term_source: term.source,
|
|
114
|
+
line: 0,
|
|
115
|
+
column: 0,
|
|
116
|
+
offset,
|
|
117
|
+
term_order: term.order,
|
|
118
|
+
});
|
|
119
|
+
count += 1;
|
|
120
|
+
offset = content.indexOf(term.normalized, offset + Math.max(1, term.normalized.length));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
found.sort((left, right) => left.offset - right.offset || left.term_order - right.term_order);
|
|
124
|
+
const limited = found.slice(0, CONTEXT_ROUTE_BUDGETS.per_file_output_matches);
|
|
125
|
+
const starts = lineStarts(content);
|
|
126
|
+
return {
|
|
127
|
+
matched_terms: matchedTerms,
|
|
128
|
+
matches: limited.map(({ offset, term_order: _termOrder, ...entry }) => {
|
|
129
|
+
const location = lineAndColumn(content, starts, offset);
|
|
130
|
+
return { ...entry, ...location };
|
|
131
|
+
}),
|
|
132
|
+
output_truncated: found.length > limited.length,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function lineStarts(value) {
|
|
136
|
+
const starts = [0];
|
|
137
|
+
for (let index = 0; index < value.length; index += 1)
|
|
138
|
+
if (value[index] === "\n")
|
|
139
|
+
starts.push(index + 1);
|
|
140
|
+
return starts;
|
|
141
|
+
}
|
|
142
|
+
function lineAndColumn(value, starts, offset) {
|
|
143
|
+
let low = 0;
|
|
144
|
+
let high = starts.length - 1;
|
|
145
|
+
while (low < high) {
|
|
146
|
+
const middle = Math.ceil((low + high) / 2);
|
|
147
|
+
if (starts[middle] <= offset)
|
|
148
|
+
low = middle;
|
|
149
|
+
else
|
|
150
|
+
high = middle - 1;
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
line: low + 1,
|
|
154
|
+
column: Array.from(value.slice(starts[low], offset)).length + 1,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CatalogFile, ContextCatalog } from "../context-catalog/catalog-types.js";
|
|
2
|
+
import type { ContextRouteFileMatches } from "./context-route-scan.js";
|
|
3
|
+
import type { ContextRouteCandidate, ContextRouteDefaultEntry } from "./context-route-types.js";
|
|
4
|
+
import type { ContextRoutePathMatch } from "./context-route-paths.js";
|
|
5
|
+
export declare function selectContextRouteCandidates(input: {
|
|
6
|
+
catalog: ContextCatalog;
|
|
7
|
+
default_context: ContextRouteDefaultEntry[];
|
|
8
|
+
path_matches: ContextRoutePathMatch[];
|
|
9
|
+
literal_matches: Map<string, ContextRouteFileMatches>;
|
|
10
|
+
includes: CatalogFile[];
|
|
11
|
+
task: string;
|
|
12
|
+
case_sensitive: boolean;
|
|
13
|
+
}): {
|
|
14
|
+
registered: ContextRouteCandidate[];
|
|
15
|
+
unregistered: ContextRouteCandidate[];
|
|
16
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { addReason, projectCandidates, } from "./context-route-candidates.js";
|
|
2
|
+
import { normalizeRouteText } from "./context-route-terms.js";
|
|
3
|
+
export function selectContextRouteCandidates(input) {
|
|
4
|
+
const registeredByPath = new Map(input.catalog.registered_contexts.map((entry) => [entry.path, entry]));
|
|
5
|
+
const filesByPath = new Map(input.catalog.context_files.map((entry) => [entry.path, entry]));
|
|
6
|
+
const candidates = new Map();
|
|
7
|
+
addDefaultCandidates(candidates, input.catalog, filesByPath, registeredByPath, input.default_context);
|
|
8
|
+
addPathCandidates(candidates, input.catalog, filesByPath, registeredByPath, input.path_matches);
|
|
9
|
+
addTriggerCandidates(candidates, input.catalog, filesByPath, registeredByPath, input.task, input.case_sensitive);
|
|
10
|
+
addLiteralCandidates(candidates, input.catalog, filesByPath, registeredByPath, input.literal_matches);
|
|
11
|
+
addManualCandidates(candidates, input.catalog, filesByPath, registeredByPath, input.includes);
|
|
12
|
+
const registered = [];
|
|
13
|
+
const unregistered = [];
|
|
14
|
+
for (const candidate of candidates.values())
|
|
15
|
+
(candidate.registration === "registered" ? registered : unregistered).push(candidate);
|
|
16
|
+
return {
|
|
17
|
+
registered: projectCandidates(registered),
|
|
18
|
+
unregistered: projectCandidates(unregistered),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function addDefaultCandidates(candidates, catalog, files, registered, defaults) {
|
|
22
|
+
for (const entry of defaults) {
|
|
23
|
+
if (!registered.has(entry.path))
|
|
24
|
+
continue;
|
|
25
|
+
addReason(candidates, catalog, files, registered, entry.path, {
|
|
26
|
+
kind: "default",
|
|
27
|
+
input: entry.reasons.join(","),
|
|
28
|
+
detail: "registered Context belongs to the unchanged default footprint",
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function addPathCandidates(candidates, catalog, files, registered, matches) {
|
|
33
|
+
for (const match of matches)
|
|
34
|
+
addReason(candidates, catalog, files, registered, match.area.context, {
|
|
35
|
+
kind: "path",
|
|
36
|
+
input: match.input,
|
|
37
|
+
detail: `deepest Area ${match.area.id} at ${match.area.root}`,
|
|
38
|
+
}, "path_candidates", match.normalized_path);
|
|
39
|
+
}
|
|
40
|
+
function addTriggerCandidates(candidates, catalog, files, registered, task, caseSensitive) {
|
|
41
|
+
const normalizedTask = normalizeRouteText(task, caseSensitive);
|
|
42
|
+
for (const entry of catalog.registered_contexts)
|
|
43
|
+
for (const trigger of entry.context?.triggers ?? []) {
|
|
44
|
+
const normalizedTrigger = trigger.normalize("NFC");
|
|
45
|
+
if (!normalizedTask.includes(normalizeRouteText(normalizedTrigger, caseSensitive)))
|
|
46
|
+
continue;
|
|
47
|
+
addReason(candidates, catalog, files, registered, entry.path, {
|
|
48
|
+
kind: "trigger",
|
|
49
|
+
input: normalizedTrigger,
|
|
50
|
+
detail: "Manifest trigger occurs literally in task text",
|
|
51
|
+
}, "trigger_candidates");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function addLiteralCandidates(candidates, catalog, files, registered, matchesByPath) {
|
|
55
|
+
for (const [contextPath, matches] of matchesByPath) {
|
|
56
|
+
const candidate = addReason(candidates, catalog, files, registered, contextPath, {
|
|
57
|
+
kind: "literal",
|
|
58
|
+
input: matches.matched_terms.join(", "),
|
|
59
|
+
detail: "bounded literal search matched Context text",
|
|
60
|
+
}, "literal_candidates");
|
|
61
|
+
candidate.matches = matches.matches;
|
|
62
|
+
candidate.matched_terms = matches.matched_terms;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function addManualCandidates(candidates, catalog, files, registered, includes) {
|
|
66
|
+
for (const file of includes)
|
|
67
|
+
addReason(candidates, catalog, files, registered, file.path, {
|
|
68
|
+
kind: "manual_include",
|
|
69
|
+
input: file.path,
|
|
70
|
+
detail: "caller explicitly included this eligible Context file",
|
|
71
|
+
}, "manual_includes");
|
|
72
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ContextRouteBudgetExceeded, ContextRouteTerm } from "./context-route-types.js";
|
|
2
|
+
export interface ContextRouteTermBuildResult {
|
|
3
|
+
terms: ContextRouteTerm[];
|
|
4
|
+
exceeded: ContextRouteBudgetExceeded[];
|
|
5
|
+
}
|
|
6
|
+
export declare function buildContextRouteTerms(input: {
|
|
7
|
+
task: string;
|
|
8
|
+
explicit_terms: string[];
|
|
9
|
+
paths: string[];
|
|
10
|
+
manifest_triggers: string[];
|
|
11
|
+
case_sensitive: boolean;
|
|
12
|
+
}): ContextRouteTermBuildResult;
|
|
13
|
+
export declare function normalizeRouteText(value: string, caseSensitive: boolean): string;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { CONTEXT_ROUTE_BUDGETS } from "./context-route-budget.js";
|
|
2
|
+
import { stableRouteBudgetExceeded } from "./context-route-order.js";
|
|
3
|
+
const STOP_WORDS = new Set([
|
|
4
|
+
"a",
|
|
5
|
+
"an",
|
|
6
|
+
"and",
|
|
7
|
+
"as",
|
|
8
|
+
"at",
|
|
9
|
+
"be",
|
|
10
|
+
"by",
|
|
11
|
+
"for",
|
|
12
|
+
"from",
|
|
13
|
+
"in",
|
|
14
|
+
"is",
|
|
15
|
+
"it",
|
|
16
|
+
"of",
|
|
17
|
+
"on",
|
|
18
|
+
"or",
|
|
19
|
+
"that",
|
|
20
|
+
"the",
|
|
21
|
+
"this",
|
|
22
|
+
"to",
|
|
23
|
+
"with",
|
|
24
|
+
]);
|
|
25
|
+
export function buildContextRouteTerms(input) {
|
|
26
|
+
const exceeded = [];
|
|
27
|
+
const terms = [];
|
|
28
|
+
const normalizedSeen = new Set();
|
|
29
|
+
let order = 0;
|
|
30
|
+
const add = (value, source) => {
|
|
31
|
+
const trimmed = value.trim();
|
|
32
|
+
if (!trimmed)
|
|
33
|
+
return;
|
|
34
|
+
const length = codePointLength(trimmed);
|
|
35
|
+
const minimum = source === "explicit"
|
|
36
|
+
? CONTEXT_ROUTE_BUDGETS.explicit_term_min_code_points
|
|
37
|
+
: CONTEXT_ROUTE_BUDGETS.automatic_term_min_code_points;
|
|
38
|
+
if (length < minimum)
|
|
39
|
+
return;
|
|
40
|
+
if (length > CONTEXT_ROUTE_BUDGETS.term_max_code_points) {
|
|
41
|
+
exceeded.push({
|
|
42
|
+
budget: "term_max_code_points",
|
|
43
|
+
limit: CONTEXT_ROUTE_BUDGETS.term_max_code_points,
|
|
44
|
+
observed: length,
|
|
45
|
+
});
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const normalized = normalizeRouteText(trimmed, input.case_sensitive);
|
|
49
|
+
if (normalizedSeen.has(normalized))
|
|
50
|
+
return;
|
|
51
|
+
normalizedSeen.add(normalized);
|
|
52
|
+
terms.push({ value: trimmed.normalize("NFC"), normalized, source, order });
|
|
53
|
+
order += 1;
|
|
54
|
+
};
|
|
55
|
+
if (input.explicit_terms.length > CONTEXT_ROUTE_BUDGETS.explicit_terms) {
|
|
56
|
+
exceeded.push({
|
|
57
|
+
budget: "explicit_terms",
|
|
58
|
+
limit: CONTEXT_ROUTE_BUDGETS.explicit_terms,
|
|
59
|
+
observed: input.explicit_terms.length,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
for (const term of input.explicit_terms.slice(0, CONTEXT_ROUTE_BUDGETS.explicit_terms))
|
|
63
|
+
add(term, "explicit");
|
|
64
|
+
const automatic = [];
|
|
65
|
+
for (const value of quotedPhrases(input.task))
|
|
66
|
+
automatic.push({ value, source: "quoted_phrase" });
|
|
67
|
+
const lexical = lexicalTokens(input.task);
|
|
68
|
+
for (const value of lexical.filter(isCodeIdentifier))
|
|
69
|
+
automatic.push({ value, source: "code_identifier" });
|
|
70
|
+
for (const value of pathFragments([...lexical, ...input.paths]))
|
|
71
|
+
automatic.push({ value, source: "path_fragment" });
|
|
72
|
+
const normalizedTask = normalizeRouteText(input.task, input.case_sensitive);
|
|
73
|
+
for (const trigger of input.manifest_triggers) {
|
|
74
|
+
const normalizedTrigger = normalizeRouteText(trigger, input.case_sensitive);
|
|
75
|
+
if (normalizedTrigger && normalizedTask.includes(normalizedTrigger))
|
|
76
|
+
automatic.push({ value: trigger, source: "manifest_trigger" });
|
|
77
|
+
}
|
|
78
|
+
for (const value of lexical.filter(isStableName))
|
|
79
|
+
automatic.push({ value, source: "stable_name" });
|
|
80
|
+
const automaticSeen = new Set();
|
|
81
|
+
const uniqueAutomatic = automatic.filter(({ value }) => {
|
|
82
|
+
const normalized = normalizeRouteText(value.trim(), input.case_sensitive);
|
|
83
|
+
if (!normalized ||
|
|
84
|
+
automaticSeen.has(normalized) ||
|
|
85
|
+
normalizedSeen.has(normalized))
|
|
86
|
+
return false;
|
|
87
|
+
automaticSeen.add(normalized);
|
|
88
|
+
return true;
|
|
89
|
+
});
|
|
90
|
+
if (uniqueAutomatic.length > CONTEXT_ROUTE_BUDGETS.automatic_terms) {
|
|
91
|
+
exceeded.push({
|
|
92
|
+
budget: "automatic_terms",
|
|
93
|
+
limit: CONTEXT_ROUTE_BUDGETS.automatic_terms,
|
|
94
|
+
observed: uniqueAutomatic.length,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
for (const entry of uniqueAutomatic.slice(0, CONTEXT_ROUTE_BUDGETS.automatic_terms))
|
|
98
|
+
add(entry.value, entry.source);
|
|
99
|
+
return { terms, exceeded: stableRouteBudgetExceeded(exceeded) };
|
|
100
|
+
}
|
|
101
|
+
export function normalizeRouteText(value, caseSensitive) {
|
|
102
|
+
const normalized = value.normalize("NFC");
|
|
103
|
+
return caseSensitive ? normalized : normalized.toLowerCase();
|
|
104
|
+
}
|
|
105
|
+
function quotedPhrases(value) {
|
|
106
|
+
const pairs = new Map([
|
|
107
|
+
['"', '"'],
|
|
108
|
+
["'", "'"],
|
|
109
|
+
["“", "”"],
|
|
110
|
+
["‘", "’"],
|
|
111
|
+
]);
|
|
112
|
+
const result = [];
|
|
113
|
+
const points = Array.from(value);
|
|
114
|
+
for (let index = 0; index < points.length; index += 1) {
|
|
115
|
+
const close = pairs.get(points[index]);
|
|
116
|
+
if (!close)
|
|
117
|
+
continue;
|
|
118
|
+
const start = index + 1;
|
|
119
|
+
while (index + 1 < points.length && points[index + 1] !== close)
|
|
120
|
+
index += 1;
|
|
121
|
+
if (index + 1 >= points.length)
|
|
122
|
+
break;
|
|
123
|
+
result.push(points.slice(start, index + 1).join(""));
|
|
124
|
+
index += 1;
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
function lexicalTokens(value) {
|
|
129
|
+
const result = [];
|
|
130
|
+
let current = "";
|
|
131
|
+
const flush = () => {
|
|
132
|
+
if (current)
|
|
133
|
+
result.push(current);
|
|
134
|
+
current = "";
|
|
135
|
+
};
|
|
136
|
+
for (const point of Array.from(value)) {
|
|
137
|
+
if (isLexicalCharacter(point))
|
|
138
|
+
current += point;
|
|
139
|
+
else
|
|
140
|
+
flush();
|
|
141
|
+
}
|
|
142
|
+
flush();
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
function isLexicalCharacter(value) {
|
|
146
|
+
const code = value.codePointAt(0) ?? 0;
|
|
147
|
+
return ((code >= 48 && code <= 57) ||
|
|
148
|
+
(code >= 65 && code <= 90) ||
|
|
149
|
+
(code >= 97 && code <= 122) ||
|
|
150
|
+
value === "_" ||
|
|
151
|
+
value === "$" ||
|
|
152
|
+
value === "-" ||
|
|
153
|
+
value === "." ||
|
|
154
|
+
value === "/" ||
|
|
155
|
+
value === "\\");
|
|
156
|
+
}
|
|
157
|
+
function isCodeIdentifier(value) {
|
|
158
|
+
if (value.includes("/") || value.includes("\\"))
|
|
159
|
+
return false;
|
|
160
|
+
const startsCorrectly = isAsciiLetter(value[0] ?? "") || "_$".includes(value[0] ?? "");
|
|
161
|
+
if (!startsCorrectly)
|
|
162
|
+
return false;
|
|
163
|
+
return (value.includes("_") ||
|
|
164
|
+
value.includes("$") ||
|
|
165
|
+
value.includes(".") ||
|
|
166
|
+
hasCamelBoundary(value));
|
|
167
|
+
}
|
|
168
|
+
function isStableName(value) {
|
|
169
|
+
if (value.includes("/") || value.includes("\\") || isCodeIdentifier(value))
|
|
170
|
+
return false;
|
|
171
|
+
const normalized = value.toLowerCase();
|
|
172
|
+
return codePointLength(value) >= 3 && !STOP_WORDS.has(normalized);
|
|
173
|
+
}
|
|
174
|
+
function hasCamelBoundary(value) {
|
|
175
|
+
for (let index = 1; index < value.length; index += 1) {
|
|
176
|
+
const previous = value.charCodeAt(index - 1);
|
|
177
|
+
const current = value.charCodeAt(index);
|
|
178
|
+
if (previous >= 97 && previous <= 122 && current >= 65 && current <= 90)
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
function pathFragments(values) {
|
|
184
|
+
const result = [];
|
|
185
|
+
for (const raw of values) {
|
|
186
|
+
if (!raw.includes("/") && !raw.includes("\\"))
|
|
187
|
+
continue;
|
|
188
|
+
const normalized = raw.replaceAll("\\", "/").replace(/^\.\//u, "");
|
|
189
|
+
result.push(normalized);
|
|
190
|
+
for (const segment of normalized.split("/"))
|
|
191
|
+
if (segment)
|
|
192
|
+
result.push(segment);
|
|
193
|
+
}
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
function isAsciiLetter(value) {
|
|
197
|
+
const code = value.charCodeAt(0);
|
|
198
|
+
return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
|
|
199
|
+
}
|
|
200
|
+
function codePointLength(value) {
|
|
201
|
+
return Array.from(value).length;
|
|
202
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { CatalogDiagnostic } from "../context-catalog/catalog-types.js";
|
|
2
|
+
import type { ContextRole } from "../context-catalog/catalog-portable-contract.js";
|
|
3
|
+
import type { DefaultContextSelectionReason } from "../context-catalog/catalog-default-footprint.js";
|
|
4
|
+
import type { ContextRouteBudgetName } from "./context-route-budget.js";
|
|
5
|
+
export type ContextRouteTermSource = "explicit" | "quoted_phrase" | "code_identifier" | "path_fragment" | "manifest_trigger" | "stable_name";
|
|
6
|
+
export interface ContextRouteTerm {
|
|
7
|
+
value: string;
|
|
8
|
+
normalized: string;
|
|
9
|
+
source: ContextRouteTermSource;
|
|
10
|
+
order: number;
|
|
11
|
+
}
|
|
12
|
+
export type ContextRouteGroup = "default_registered" | "on_demand_registered" | "legacy_registered" | "unregistered" | "path_candidates" | "trigger_candidates" | "literal_candidates" | "manual_includes";
|
|
13
|
+
export interface ContextRouteMatch {
|
|
14
|
+
term: string;
|
|
15
|
+
term_source: ContextRouteTermSource;
|
|
16
|
+
line: number;
|
|
17
|
+
column: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ContextRouteReason {
|
|
20
|
+
kind: "default" | "path" | "trigger" | "literal" | "manual_include";
|
|
21
|
+
input: string;
|
|
22
|
+
detail: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ContextRouteCandidate {
|
|
25
|
+
path: string;
|
|
26
|
+
registration: "registered" | "unregistered";
|
|
27
|
+
role: ContextRole | null;
|
|
28
|
+
read_policy: string | null;
|
|
29
|
+
groups: ContextRouteGroup[];
|
|
30
|
+
reasons: ContextRouteReason[];
|
|
31
|
+
matched_terms: string[];
|
|
32
|
+
matched_paths: string[];
|
|
33
|
+
matches: ContextRouteMatch[];
|
|
34
|
+
bytes: number;
|
|
35
|
+
cumulative_bytes: number;
|
|
36
|
+
}
|
|
37
|
+
export interface ContextRouteDefaultEntry {
|
|
38
|
+
path: string;
|
|
39
|
+
reasons: DefaultContextSelectionReason[];
|
|
40
|
+
bytes: number;
|
|
41
|
+
cumulative_bytes: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ContextRouteAreaCandidate {
|
|
44
|
+
id: string;
|
|
45
|
+
root: string;
|
|
46
|
+
context: string;
|
|
47
|
+
}
|
|
48
|
+
export interface ContextRouteAmbiguity {
|
|
49
|
+
kind: "area_path";
|
|
50
|
+
input: string;
|
|
51
|
+
candidates: ContextRouteAreaCandidate[];
|
|
52
|
+
reason: string;
|
|
53
|
+
}
|
|
54
|
+
export interface ContextRouteUnresolved {
|
|
55
|
+
kind: "path" | "include";
|
|
56
|
+
input: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
}
|
|
59
|
+
export interface ContextRouteBudgetExceeded {
|
|
60
|
+
budget: ContextRouteBudgetName;
|
|
61
|
+
limit: number;
|
|
62
|
+
observed: number;
|
|
63
|
+
path?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface ContextRouteScanReport {
|
|
66
|
+
files_considered: number;
|
|
67
|
+
files_scanned: number;
|
|
68
|
+
bytes_scanned: number;
|
|
69
|
+
budget_exceeded: boolean;
|
|
70
|
+
exceeded: ContextRouteBudgetExceeded[];
|
|
71
|
+
}
|
|
72
|
+
export interface ContextRouteResult {
|
|
73
|
+
schema_version: 1;
|
|
74
|
+
complete: boolean;
|
|
75
|
+
catalog_valid: boolean;
|
|
76
|
+
experimental: true;
|
|
77
|
+
authority: false;
|
|
78
|
+
workflow_search_replaced: false;
|
|
79
|
+
matching: {
|
|
80
|
+
literal: true;
|
|
81
|
+
unicode_normalization: "NFC";
|
|
82
|
+
case_sensitive: boolean;
|
|
83
|
+
};
|
|
84
|
+
scan: ContextRouteScanReport;
|
|
85
|
+
output_truncated: boolean;
|
|
86
|
+
default_context: ContextRouteDefaultEntry[];
|
|
87
|
+
candidates: ContextRouteCandidate[];
|
|
88
|
+
unregistered_matches: ContextRouteCandidate[];
|
|
89
|
+
ambiguous: ContextRouteAmbiguity[];
|
|
90
|
+
unresolved: ContextRouteUnresolved[];
|
|
91
|
+
diagnostics: CatalogDiagnostic[];
|
|
92
|
+
}
|
|
93
|
+
export interface ContextRouteInput {
|
|
94
|
+
project_root: string;
|
|
95
|
+
task: string;
|
|
96
|
+
paths?: string[];
|
|
97
|
+
explicit_terms?: string[];
|
|
98
|
+
includes?: string[];
|
|
99
|
+
case_sensitive?: boolean;
|
|
100
|
+
max_search_results?: number;
|
|
101
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|