attention-manifest-protocol 0.4.2 → 0.4.3
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/CHANGELOG.md +341 -293
- package/CHANGELOG.zh-CN.md +41 -8
- package/README.md +250 -171
- package/README.zh-CN.md +251 -171
- package/lib/assignment/assign.d.ts +102 -0
- package/lib/assignment/assign.js +556 -0
- package/lib/assignment/binding.d.ts +103 -0
- package/lib/assignment/binding.js +575 -0
- package/lib/assignment/errors.d.ts +14 -0
- package/lib/assignment/errors.js +16 -0
- package/lib/assignment/guards.d.ts +18 -0
- package/lib/assignment/guards.js +28 -0
- package/lib/assignment/index.d.ts +10 -0
- package/lib/assignment/index.js +10 -0
- package/lib/assignment/types.d.ts +169 -0
- package/lib/assignment/types.js +1 -0
- package/lib/attention/budget.d.ts +1 -1
- package/lib/attention/budget.js +31 -9
- package/lib/bayes/engine.js +2 -1
- package/lib/bayes/reliability.js +25 -10
- package/lib/boundary/frame.d.ts +10 -4
- package/lib/boundary/frame.js +346 -109
- package/lib/boundary/kinds.d.ts +11 -0
- package/lib/boundary/kinds.js +33 -0
- package/lib/boundary/refTable.d.ts +19 -9
- package/lib/boundary/refTable.js +128 -30
- package/lib/boundary/toolCall.d.ts +22 -10
- package/lib/boundary/toolCall.js +798 -97
- package/lib/concept/conceptBudget.js +10 -1
- package/lib/concurrency/idempotency.d.ts +4 -3
- package/lib/concurrency/idempotency.js +57 -13
- package/lib/concurrency/retry.js +18 -3
- package/lib/context/agentContext.d.ts +13 -0
- package/lib/context/agentContext.js +14 -1
- package/lib/context/ast.d.ts +4 -1
- package/lib/context/ast.js +13 -3
- package/lib/context/contentStore.js +22 -9
- package/lib/context/contextBuilder.d.ts +457 -0
- package/lib/context/contextBuilder.js +1395 -0
- package/lib/context/contextPackage.d.ts +214 -0
- package/lib/context/contextPackage.js +191 -0
- package/lib/context/index.d.ts +14 -3
- package/lib/context/index.js +9 -1
- package/lib/context/relevance.d.ts +171 -0
- package/lib/context/relevance.js +250 -0
- package/lib/context/workspaceDiff.d.ts +105 -0
- package/lib/context/workspaceDiff.js +238 -0
- package/lib/context/workspaceService.d.ts +236 -1
- package/lib/context/workspaceService.js +1501 -73
- package/lib/cooperation/collaboration.d.ts +9 -0
- package/lib/cooperation/session.d.ts +4 -4
- package/lib/cooperation/session.js +3 -3
- package/lib/database/adapter/filesystemStore.d.ts +145 -0
- package/lib/database/adapter/filesystemStore.js +321 -0
- package/lib/database/adapter/index.d.ts +2 -0
- package/lib/database/adapter/index.js +2 -0
- package/lib/database/adapter/workspaceSessionStore.d.ts +118 -0
- package/lib/database/adapter/workspaceSessionStore.js +120 -0
- package/lib/database/entity/fileGraph.d.ts +53 -0
- package/lib/database/entity/fileGraph.js +15 -0
- package/lib/database/entity/fileTree.d.ts +76 -0
- package/lib/database/entity/fileTree.js +39 -0
- package/lib/database/entity/hook.d.ts +29 -0
- package/lib/database/entity/hook.js +18 -0
- package/lib/database/entity/index.d.ts +4 -0
- package/lib/database/entity/index.js +4 -0
- package/lib/database/entity/workspaceSession.d.ts +53 -0
- package/lib/database/entity/workspaceSession.js +28 -0
- package/lib/database/repository/fileAnnotationRepository.d.ts +75 -0
- package/lib/database/repository/fileAnnotationRepository.js +109 -0
- package/lib/database/repository/fileGraphRepository.d.ts +188 -0
- package/lib/database/repository/fileGraphRepository.js +648 -0
- package/lib/database/repository/fileNodeRepository.d.ts +116 -0
- package/lib/database/repository/fileNodeRepository.js +263 -0
- package/lib/database/repository/fileOutlineRepository.d.ts +40 -0
- package/lib/database/repository/fileOutlineRepository.js +104 -0
- package/lib/database/repository/fileWriteRepository.d.ts +41 -0
- package/lib/database/repository/fileWriteRepository.js +93 -0
- package/lib/database/repository/hookRepository.d.ts +67 -0
- package/lib/database/repository/hookRepository.js +150 -0
- package/lib/database/repository/index.d.ts +7 -0
- package/lib/database/repository/index.js +7 -0
- package/lib/database/repository/workspaceSessionRepository.d.ts +134 -0
- package/lib/database/repository/workspaceSessionRepository.js +327 -0
- package/lib/database/service/database.d.ts +14 -0
- package/lib/database/service/database.js +21 -0
- package/lib/database/sql/schema.js +187 -0
- package/lib/database/store/database.js +6 -1
- package/lib/delegate/team.d.ts +5 -0
- package/lib/delegate/team.js +83 -20
- package/lib/discover/classify.d.ts +20 -0
- package/lib/discover/classify.js +85 -0
- package/lib/discover/host.d.ts +20 -0
- package/lib/discover/host.js +89 -0
- package/lib/discover/index.d.ts +11 -0
- package/lib/discover/index.js +11 -0
- package/lib/discover/kinds.d.ts +14 -0
- package/lib/discover/kinds.js +23 -0
- package/lib/discover/tree.d.ts +7 -0
- package/lib/discover/tree.js +432 -0
- package/lib/discover/types.d.ts +115 -0
- package/lib/discover/types.js +1 -0
- package/lib/error/boundaryRejection.d.ts +1 -1
- package/lib/evaluation/agreement.js +2 -2
- package/lib/execution/handles.js +6 -0
- package/lib/execution/pin.js +2 -2
- package/lib/file/cfb.d.ts +56 -0
- package/lib/file/cfb.js +396 -0
- package/lib/file/dependency.d.ts +151 -0
- package/lib/file/dependency.js +568 -0
- package/lib/file/directory.d.ts +34 -0
- package/lib/file/directory.js +141 -0
- package/lib/file/errors.d.ts +20 -0
- package/lib/file/errors.js +18 -0
- package/lib/file/exportGraph.d.ts +31 -0
- package/lib/file/exportGraph.js +554 -0
- package/lib/file/file.d.ts +40 -0
- package/lib/file/file.js +339 -0
- package/lib/file/importGraph.d.ts +121 -0
- package/lib/file/importGraph.js +1022 -0
- package/lib/file/index.d.ts +45 -0
- package/lib/file/index.js +30 -0
- package/lib/file/metadata.d.ts +66 -0
- package/lib/file/metadata.js +470 -0
- package/lib/file/path.d.ts +60 -0
- package/lib/file/path.js +259 -0
- package/lib/file/read.d.ts +168 -0
- package/lib/file/read.js +541 -0
- package/lib/file/runtime.d.ts +95 -0
- package/lib/file/runtime.js +150 -0
- package/lib/file/service.d.ts +227 -0
- package/lib/file/service.js +663 -0
- package/lib/file/syntaxTree.d.ts +7 -0
- package/lib/file/syntaxTree.js +38 -0
- package/lib/file/time.d.ts +38 -0
- package/lib/file/time.js +44 -0
- package/lib/file/tree.d.ts +53 -0
- package/lib/file/tree.js +417 -0
- package/lib/file/types.d.ts +371 -0
- package/lib/file/types.js +1 -0
- package/lib/file/write.d.ts +159 -0
- package/lib/file/write.js +1028 -0
- package/lib/file/zip.d.ts +35 -0
- package/lib/file/zip.js +349 -0
- package/lib/fingerprint/algorithm.d.ts +97 -0
- package/lib/fingerprint/algorithm.js +271 -0
- package/lib/fingerprint/bytes.d.ts +18 -0
- package/lib/fingerprint/bytes.js +31 -0
- package/lib/fingerprint/error.d.ts +73 -0
- package/lib/fingerprint/error.js +86 -0
- package/lib/fingerprint/file.d.ts +71 -0
- package/lib/fingerprint/file.js +254 -0
- package/lib/fingerprint/index.d.ts +37 -0
- package/lib/fingerprint/index.js +12 -0
- package/lib/fingerprint/json.d.ts +41 -0
- package/lib/fingerprint/json.js +94 -0
- package/lib/fingerprint/number.d.ts +32 -0
- package/lib/fingerprint/number.js +95 -0
- package/lib/fingerprint/policy.d.ts +54 -0
- package/lib/fingerprint/policy.js +50 -0
- package/lib/fingerprint/preimage.d.ts +84 -0
- package/lib/fingerprint/preimage.js +133 -0
- package/lib/fingerprint/raw.d.ts +26 -0
- package/lib/fingerprint/raw.js +45 -0
- package/lib/fingerprint/ref.d.ts +39 -0
- package/lib/fingerprint/ref.js +178 -0
- package/lib/fingerprint/text.d.ts +42 -0
- package/lib/fingerprint/text.js +155 -0
- package/lib/fingerprint/tree.d.ts +56 -0
- package/lib/fingerprint/tree.js +288 -0
- package/lib/fingerprint/verify.d.ts +20 -0
- package/lib/fingerprint/verify.js +99 -0
- package/lib/global/filesystem.d.ts +43 -0
- package/lib/global/filesystem.js +75 -0
- package/lib/global/index.d.ts +8 -0
- package/lib/global/index.js +8 -0
- package/lib/global/service.d.ts +51 -0
- package/lib/global/service.js +98 -0
- package/lib/governance/transport.js +18 -6
- package/lib/hook/ast.d.ts +29 -0
- package/lib/hook/ast.js +22 -0
- package/lib/hook/code.d.ts +55 -0
- package/lib/hook/code.js +47 -0
- package/lib/hook/dependency.d.ts +45 -0
- package/lib/hook/dependency.js +28 -0
- package/lib/hook/diff.d.ts +114 -0
- package/lib/hook/diff.js +327 -0
- package/lib/hook/exportation.d.ts +31 -0
- package/lib/hook/exportation.js +24 -0
- package/lib/hook/file.d.ts +44 -0
- package/lib/hook/file.js +154 -0
- package/lib/hook/importation.d.ts +33 -0
- package/lib/hook/importation.js +22 -0
- package/lib/hook/index.d.ts +30 -0
- package/lib/hook/index.js +23 -0
- package/lib/hook/outline.d.ts +35 -0
- package/lib/hook/outline.js +27 -0
- package/lib/hook/project.d.ts +65 -0
- package/lib/hook/project.js +217 -0
- package/lib/hook/types.d.ts +114 -0
- package/lib/hook/types.js +407 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +9 -0
- package/lib/lock/lease.js +28 -3
- package/lib/manifest/cardSign.d.ts +1 -1
- package/lib/manifest/cardSign.js +37 -7
- package/lib/manifest/federation.js +13 -6
- package/lib/manifest/trust.d.ts +2 -0
- package/lib/manifest/trust.js +27 -6
- package/lib/module/index.d.ts +4 -0
- package/lib/module/index.js +4 -0
- package/lib/module/mcp/client.js +21 -2
- package/lib/module/mcp/filesystemServer.d.ts +24 -0
- package/lib/module/mcp/filesystemServer.js +102 -0
- package/lib/module/mcp/http.js +32 -19
- package/lib/module/mcp/workspaceServer.js +20 -3
- package/lib/module/tool/filesystemExecutor.d.ts +18 -0
- package/lib/module/tool/filesystemExecutor.js +49 -0
- package/lib/module/tool/globalExecutor.d.ts +17 -0
- package/lib/module/tool/globalExecutor.js +39 -0
- package/lib/module/tool/globalFilesystemExecutor.d.ts +18 -0
- package/lib/module/tool/globalFilesystemExecutor.js +49 -0
- package/lib/module/tool/workspaceExecutor.d.ts +9 -0
- package/lib/module/tool/workspaceExecutor.js +16 -3
- package/lib/naming/aliases.d.ts +48 -0
- package/lib/naming/aliases.js +79 -0
- package/lib/naming/catalog.d.ts +117 -0
- package/lib/naming/catalog.js +108 -0
- package/lib/naming/grammar.d.ts +67 -0
- package/lib/naming/grammar.js +212 -0
- package/lib/naming/ids.d.ts +157 -0
- package/lib/naming/ids.js +119 -0
- package/lib/naming/index.d.ts +13 -0
- package/lib/naming/index.js +13 -0
- package/lib/outline/index.d.ts +9 -0
- package/lib/outline/index.js +8 -0
- package/lib/outline/office.d.ts +160 -0
- package/lib/outline/office.js +2375 -0
- package/lib/outline/officeBridge.d.ts +32 -0
- package/lib/outline/officeBridge.js +27 -0
- package/lib/outline/outline.d.ts +159 -0
- package/lib/outline/outline.js +837 -0
- package/lib/outline/outlineIndex.d.ts +97 -0
- package/lib/outline/outlineIndex.js +325 -0
- package/lib/outline/outlineKeywords.d.ts +59 -0
- package/lib/outline/outlineKeywords.js +143 -0
- package/lib/outline/outlineStrategies.d.ts +414 -0
- package/lib/outline/outlineStrategies.js +8324 -0
- package/lib/outline/reactOutline.d.ts +37 -0
- package/lib/outline/reactOutline.js +1070 -0
- package/lib/outline/shellOutline.d.ts +65 -0
- package/lib/outline/shellOutline.js +873 -0
- package/lib/outline/sqlOutline.d.ts +170 -0
- package/lib/outline/sqlOutline.js +1536 -0
- package/lib/outline/strategy.d.ts +46 -0
- package/lib/outline/strategy.js +1 -0
- package/lib/outline/types.d.ts +95 -0
- package/lib/outline/types.js +1 -0
- package/lib/outline/visualBasicOutline.d.ts +27 -0
- package/lib/outline/visualBasicOutline.js +750 -0
- package/lib/protocol/filesystem.d.ts +55 -0
- package/lib/protocol/filesystem.js +105 -0
- package/lib/protocol/global.d.ts +42 -0
- package/lib/protocol/global.js +63 -0
- package/lib/protocol/globalFilesystem.d.ts +40 -0
- package/lib/protocol/globalFilesystem.js +59 -0
- package/lib/protocol/index.d.ts +4 -0
- package/lib/protocol/index.js +4 -0
- package/lib/protocol/protocol.d.ts +4 -0
- package/lib/protocol/wire.js +5 -2
- package/lib/protocol/workspace.d.ts +305 -0
- package/lib/protocol/workspace.js +258 -0
- package/lib/receipt/receipt.d.ts +8 -0
- package/lib/registry/content.js +9 -3
- package/lib/runtime/kernelRuntime.js +9 -1
- package/lib/scenario/scenario.js +5 -4
- package/lib/semantic/canonical.d.ts +61 -0
- package/lib/semantic/canonical.js +135 -8
- package/lib/semantic/jsonValue.d.ts +31 -0
- package/lib/semantic/jsonValue.js +122 -0
- package/lib/semantic/sha256.js +3 -0
- package/lib/semantic/time.d.ts +14 -0
- package/lib/semantic/time.js +56 -0
- package/lib/session/context.d.ts +76 -0
- package/lib/session/context.js +419 -0
- package/lib/session/errors.d.ts +24 -0
- package/lib/session/errors.js +22 -0
- package/lib/session/identity.d.ts +24 -0
- package/lib/session/identity.js +56 -0
- package/lib/session/index.d.ts +14 -0
- package/lib/session/index.js +12 -0
- package/lib/session/registry.d.ts +130 -0
- package/lib/session/registry.js +908 -0
- package/lib/session/types.d.ts +227 -0
- package/lib/session/types.js +14 -0
- package/lib/structure/index.d.ts +1 -0
- package/lib/structure/index.js +1 -0
- package/lib/structure/trie.d.ts +88 -0
- package/lib/structure/trie.js +183 -0
- package/lib/syntax/byteIndex.d.ts +44 -0
- package/lib/syntax/byteIndex.js +148 -0
- package/lib/syntax/charset.d.ts +88 -0
- package/lib/syntax/charset.js +276 -0
- package/lib/syntax/index.d.ts +6 -0
- package/lib/syntax/index.js +5 -0
- package/lib/syntax/syntaxRegistry.d.ts +150 -0
- package/lib/syntax/syntaxRegistry.js +314 -0
- package/lib/syntax/syntaxTree.d.ts +106 -0
- package/lib/syntax/syntaxTree.js +668 -0
- package/lib/syntax/types.d.ts +15 -0
- package/lib/syntax/types.js +1 -0
- package/lib/types/common.d.ts +1 -1
- package/package.json +72 -193
- package/.editorconfig +0 -12
- package/.prettierignore +0 -17
- package/MCP-Token/347/250/216/344/270/216/344/270/213/344/270/200/344/273/243/345/267/245/345/205/267/345/215/217/350/256/256.html +0 -1763
- package/docs/annotation-campaign-A.csv +0 -54
- package/docs/annotation-campaign-B.csv +0 -54
- package/docs/annotation-campaign.csv +0 -54
- package/docs/eval/annotations-A.jsonl +0 -16
- package/docs/eval/annotations.json +0 -122
- package/docs/eval/recorded-labels.json +0 -12
- package/docs/eval/replay-cases.json +0 -14
- package/docs/eval/replay-labels-b.json +0 -14
- package/docs/examples/attention-request.json +0 -16
- package/docs/examples/checkpoint.json +0 -15
- package/docs/examples/claim.json +0 -66
- package/docs/examples/collaboration.json +0 -66
- package/docs/examples/concept-checkpoint.json +0 -15
- package/docs/examples/concept-prune-plan.json +0 -45
- package/docs/examples/federation.json +0 -126
- package/docs/examples/frame-chain.json +0 -77
- package/docs/examples/ledger-snapshot.json +0 -108
- package/docs/examples/manifest.json +0 -77
- package/docs/examples/message.json +0 -19
- package/docs/examples/other-model.json +0 -45
- package/docs/examples/plan.json +0 -50
- package/docs/examples/prune-plan.json +0 -48
- package/docs/examples/receipt.json +0 -22
- package/docs/examples/runtime-run.json +0 -573
- package/docs/examples/team.json +0 -66
- package/docs/examples/verb-note.json +0 -11
- package/docs/probes/bayes-scores.json +0 -1452
- package/docs/probes/calibration-imported.json +0 -141
- package/docs/probes/context-ast-deepseek.json +0 -1577
- package/docs/probes/deepseek-probe.json +0 -917
- package/docs/probes/eval-recorded-replay.json +0 -597
- package/docs/probes/eval-replay.json +0 -124
- package/docs/probes/eval-summary.json +0 -42
- package/docs/probes/runtime-eval.json +0 -4230
- package/docs/schemas/collaboration.schema.json +0 -73
- package/docs/schemas/common.schema.json +0 -125
- package/docs/schemas/compaction.schema.json +0 -121
- package/docs/schemas/concept-compaction.schema.json +0 -73
- package/docs/schemas/concept.schema.json +0 -97
- package/docs/schemas/epistemic.schema.json +0 -178
- package/docs/schemas/federation.schema.json +0 -66
- package/docs/schemas/frame.schema.json +0 -86
- package/docs/schemas/ledger-snapshot.schema.json +0 -30
- package/docs/schemas/manifest.schema.json +0 -169
- package/docs/schemas/message.schema.json +0 -41
- package/docs/schemas/plan.schema.json +0 -189
- package/docs/schemas/receipt.schema.json +0 -45
- package/docs/schemas/social.schema.json +0 -153
- package/docs/schemas/team.schema.json +0 -56
- package/docs/schemas/verb.schema.json +0 -120
- package/eslint.config.mts +0 -96
- package/index.html +0 -13
- package/lib/context/workspaceProtocol.d.ts +0 -30
- package/lib/context/workspaceProtocol.js +0 -49
- package/prettier.config.mts +0 -37
- package/public/favicon.svg +0 -1
- package/public/icons.svg +0 -24
- package/src/attention/attention.ts +0 -347
- package/src/attention/budget.ts +0 -72
- package/src/attention/cognition.ts +0 -519
- package/src/attention/index.ts +0 -8
- package/src/attention/interrupts.ts +0 -228
- package/src/attention/resource.ts +0 -316
- package/src/attention/social.ts +0 -217
- package/src/attention/socialTypes.ts +0 -115
- package/src/authz/authz.ts +0 -305
- package/src/authz/index.ts +0 -1
- package/src/bayes/calibration.ts +0 -204
- package/src/bayes/calibrationRegistry.ts +0 -111
- package/src/bayes/calibrationSelection.ts +0 -154
- package/src/bayes/engine.ts +0 -532
- package/src/bayes/index.ts +0 -6
- package/src/bayes/reliability.ts +0 -62
- package/src/bayes/scopedPriors.ts +0 -88
- package/src/boundary/frame.ts +0 -322
- package/src/boundary/ids.ts +0 -14
- package/src/boundary/index.ts +0 -12
- package/src/boundary/refTable.ts +0 -125
- package/src/boundary/toolCall.ts +0 -212
- package/src/concept/concept.ts +0 -75
- package/src/concept/conceptBudget.ts +0 -346
- package/src/concept/conceptBudgetTypes.ts +0 -79
- package/src/concept/index.ts +0 -3
- package/src/concurrency/idempotency.ts +0 -41
- package/src/concurrency/index.ts +0 -5
- package/src/concurrency/mutex.ts +0 -26
- package/src/concurrency/namedLocks.ts +0 -35
- package/src/concurrency/retry.ts +0 -50
- package/src/concurrency/worker.ts +0 -128
- package/src/context/agentContext.ts +0 -308
- package/src/context/ast.ts +0 -499
- package/src/context/contentStore.ts +0 -75
- package/src/context/context.ts +0 -65
- package/src/context/contextIndex.ts +0 -85
- package/src/context/document.ts +0 -137
- package/src/context/fileStorePath.ts +0 -14
- package/src/context/index.ts +0 -43
- package/src/context/lifecycle.ts +0 -221
- package/src/context/projections.ts +0 -151
- package/src/context/workspace.ts +0 -422
- package/src/context/workspaceProtocol.ts +0 -112
- package/src/context/workspaceService.ts +0 -423
- package/src/cooperation/board.ts +0 -104
- package/src/cooperation/collaboration.ts +0 -60
- package/src/cooperation/index.ts +0 -6
- package/src/cooperation/merge.ts +0 -190
- package/src/cooperation/metrics.ts +0 -57
- package/src/cooperation/session.ts +0 -131
- package/src/cooperation/unified.ts +0 -56
- package/src/counter.ts +0 -9
- package/src/database/adapter/adapters.ts +0 -35
- package/src/database/adapter/index.ts +0 -4
- package/src/database/adapter/runtimeSink.ts +0 -74
- package/src/database/adapter/sessionStore.ts +0 -32
- package/src/database/adapter/turnStore.ts +0 -23
- package/src/database/entity/agent.ts +0 -199
- package/src/database/entity/entity.ts +0 -1046
- package/src/database/entity/handle.ts +0 -79
- package/src/database/entity/index.ts +0 -32
- package/src/database/entity/message.ts +0 -74
- package/src/database/entity/meta.ts +0 -11
- package/src/database/entity/object.ts +0 -42
- package/src/database/entity/outbox.ts +0 -15
- package/src/database/entity/process.ts +0 -65
- package/src/database/entity/registry.ts +0 -155
- package/src/database/entity/runtimeApproval.ts +0 -30
- package/src/database/entity/runtimeSession.ts +0 -13
- package/src/database/entity/runtimeTurn.ts +0 -15
- package/src/database/entity/thread.ts +0 -85
- package/src/database/entity/window.ts +0 -85
- package/src/database/entity/worker.ts +0 -90
- package/src/database/index.ts +0 -6
- package/src/database/repository/addressSpaceRepository.ts +0 -72
- package/src/database/repository/agentRepository.ts +0 -460
- package/src/database/repository/base.ts +0 -41
- package/src/database/repository/executionRepository.ts +0 -477
- package/src/database/repository/handleRepository.ts +0 -64
- package/src/database/repository/index.ts +0 -20
- package/src/database/repository/messageRepository.ts +0 -52
- package/src/database/repository/objectRepository.ts +0 -69
- package/src/database/repository/outboxRepository.ts +0 -63
- package/src/database/repository/processRepository.ts +0 -58
- package/src/database/repository/registryRepository.ts +0 -119
- package/src/database/repository/repository.ts +0 -491
- package/src/database/repository/runtimeApprovalRepository.ts +0 -44
- package/src/database/repository/runtimeSessionRepository.ts +0 -27
- package/src/database/repository/runtimeTurnRepository.ts +0 -39
- package/src/database/repository/socialRepository.ts +0 -185
- package/src/database/repository/threadRepository.ts +0 -57
- package/src/database/repository/windowRepository.ts +0 -88
- package/src/database/repository/workerRepository.ts +0 -69
- package/src/database/service/database.ts +0 -90
- package/src/database/service/handleService.ts +0 -48
- package/src/database/service/index.ts +0 -16
- package/src/database/service/messageService.ts +0 -61
- package/src/database/service/objectService.ts +0 -59
- package/src/database/service/processService.ts +0 -61
- package/src/database/service/registryServices.ts +0 -88
- package/src/database/service/service.ts +0 -183
- package/src/database/service/stepService.ts +0 -53
- package/src/database/service/threadService.ts +0 -65
- package/src/database/service/windowService.ts +0 -30
- package/src/database/service/workerService.ts +0 -57
- package/src/database/sql/index.ts +0 -3
- package/src/database/sql/schema.ts +0 -418
- package/src/database/sql/sql.ts +0 -543
- package/src/database/store/database.ts +0 -210
- package/src/database/store/index.ts +0 -3
- package/src/database/store/store.ts +0 -266
- package/src/delegate/index.ts +0 -2
- package/src/delegate/team.ts +0 -268
- package/src/delegate/teamTypes.ts +0 -47
- package/src/diagnosis/checklist.ts +0 -74
- package/src/diagnosis/context.ts +0 -93
- package/src/diagnosis/frame.ts +0 -256
- package/src/diagnosis/index.ts +0 -5
- package/src/diagnosis/router.ts +0 -72
- package/src/diagnosis/types.ts +0 -89
- package/src/error/agentError.ts +0 -16
- package/src/error/ampError.ts +0 -20
- package/src/error/authzError.ts +0 -14
- package/src/error/boundaryRejection.ts +0 -20
- package/src/error/index.ts +0 -7
- package/src/error/kernelError.ts +0 -27
- package/src/error/mailboxError.ts +0 -9
- package/src/error/windowError.ts +0 -12
- package/src/evaluation/agreement.ts +0 -96
- package/src/evaluation/index.ts +0 -2
- package/src/evaluation/labels.ts +0 -241
- package/src/evidence/evidenceGraph.ts +0 -205
- package/src/evidence/index.ts +0 -4
- package/src/evidence/revalidation.ts +0 -191
- package/src/execution/exec.ts +0 -408
- package/src/execution/handles.ts +0 -65
- package/src/execution/index.ts +0 -3
- package/src/execution/pin.ts +0 -154
- package/src/frame/frame.ts +0 -70
- package/src/frame/index.ts +0 -1
- package/src/goal/goal.ts +0 -43
- package/src/goal/index.ts +0 -2
- package/src/goal/plan.ts +0 -196
- package/src/governance/attentionManifest.ts +0 -802
- package/src/governance/audit.ts +0 -362
- package/src/governance/budget.ts +0 -628
- package/src/governance/context.ts +0 -356
- package/src/governance/control.ts +0 -159
- package/src/governance/cooperation.ts +0 -479
- package/src/governance/credential.ts +0 -359
- package/src/governance/httpServer.ts +0 -99
- package/src/governance/index.ts +0 -32
- package/src/governance/legal.ts +0 -574
- package/src/governance/matrix.ts +0 -460
- package/src/governance/perspectives.ts +0 -406
- package/src/governance/signing.ts +0 -407
- package/src/governance/store.ts +0 -125
- package/src/governance/switching.ts +0 -459
- package/src/governance/toolPolicy.ts +0 -80
- package/src/governance/transport.ts +0 -204
- package/src/governance/types.ts +0 -380
- package/src/governance/workflow.ts +0 -743
- package/src/index.ts +0 -11
- package/src/interaction/index.ts +0 -1
- package/src/interaction/interaction.ts +0 -391
- package/src/ipc/index.ts +0 -4
- package/src/ipc/mailbox.ts +0 -132
- package/src/ipc/memorySocialStore.ts +0 -93
- package/src/ipc/social.ts +0 -93
- package/src/kernel/index.ts +0 -14
- package/src/kernel/scheduler.ts +0 -498
- package/src/ledger/checkpoint.ts +0 -304
- package/src/ledger/index.ts +0 -4
- package/src/ledger/ledger.ts +0 -31
- package/src/ledger/persistence.ts +0 -159
- package/src/ledger/share.ts +0 -80
- package/src/lock/index.ts +0 -2
- package/src/lock/lease.ts +0 -74
- package/src/main.ts +0 -199
- package/src/manifest/agentCard.ts +0 -72
- package/src/manifest/cardSign.ts +0 -87
- package/src/manifest/federation.ts +0 -237
- package/src/manifest/federationTypes.ts +0 -55
- package/src/manifest/index.ts +0 -8
- package/src/manifest/keys.ts +0 -643
- package/src/manifest/manifest.ts +0 -114
- package/src/manifest/sign.ts +0 -134
- package/src/manifest/trust.ts +0 -146
- package/src/mission/index.ts +0 -2
- package/src/mission/missionQueue.ts +0 -75
- package/src/module/index.ts +0 -9
- package/src/module/llm/deepseek.ts +0 -214
- package/src/module/llm/llm.ts +0 -84
- package/src/module/mcp/client.ts +0 -110
- package/src/module/mcp/http.ts +0 -102
- package/src/module/mcp/protocol.ts +0 -77
- package/src/module/mcp/server.ts +0 -148
- package/src/module/mcp/transport.ts +0 -30
- package/src/module/mcp/workspaceServer.ts +0 -111
- package/src/module/sandbox/sandbox.ts +0 -29
- package/src/module/tool/mcpExecutor.ts +0 -54
- package/src/module/tool/policy.ts +0 -52
- package/src/module/tool/redact.ts +0 -29
- package/src/module/tool/tool.ts +0 -53
- package/src/module/tool/workspaceExecutor.ts +0 -35
- package/src/policy/guard.ts +0 -240
- package/src/policy/index.ts +0 -2
- package/src/policy/policy.ts +0 -561
- package/src/process/agent.ts +0 -341
- package/src/process/agentService.ts +0 -236
- package/src/process/agentStore.ts +0 -378
- package/src/process/executionStore.ts +0 -151
- package/src/process/index.ts +0 -5
- package/src/process/process.ts +0 -240
- package/src/process/transitions.ts +0 -19
- package/src/progress/index.ts +0 -2
- package/src/progress/progress.ts +0 -85
- package/src/protocol/a2a.ts +0 -120
- package/src/protocol/channel.ts +0 -44
- package/src/protocol/envelope.ts +0 -655
- package/src/protocol/httpChannel.ts +0 -87
- package/src/protocol/index.ts +0 -6
- package/src/protocol/protocol.ts +0 -138
- package/src/protocol/wire.ts +0 -60
- package/src/receipt/index.ts +0 -1
- package/src/receipt/receipt.ts +0 -47
- package/src/registry/content.ts +0 -69
- package/src/registry/index.ts +0 -23
- package/src/registry/registry.ts +0 -599
- package/src/runtime/action.ts +0 -87
- package/src/runtime/behavior.ts +0 -330
- package/src/runtime/behaviorTuning.ts +0 -163
- package/src/runtime/cognitiveRuntime.ts +0 -703
- package/src/runtime/escalation.ts +0 -35
- package/src/runtime/governedTask.ts +0 -233
- package/src/runtime/index.ts +0 -15
- package/src/runtime/kernelRuntime.ts +0 -144
- package/src/runtime/operation.ts +0 -35
- package/src/runtime/replay.ts +0 -71
- package/src/runtime/routing.ts +0 -58
- package/src/runtime/safety.ts +0 -48
- package/src/runtime/session.ts +0 -341
- package/src/runtime/sessionStore.ts +0 -43
- package/src/runtime/telemetry.ts +0 -55
- package/src/runtime/turnStore.ts +0 -30
- package/src/scenario/index.ts +0 -1
- package/src/scenario/scenario.ts +0 -299
- package/src/semantic/canonical.ts +0 -24
- package/src/semantic/index.ts +0 -2
- package/src/semantic/sha256.ts +0 -82
- package/src/storage/appendLog.ts +0 -372
- package/src/storage/fileAppendSink.ts +0 -40
- package/src/storage/index.ts +0 -2
- package/src/store/bindCache.ts +0 -22
- package/src/store/cache.ts +0 -191
- package/src/store/context.ts +0 -31
- package/src/store/handleStore.ts +0 -31
- package/src/store/index.ts +0 -9
- package/src/store/messageStore.ts +0 -31
- package/src/store/objectStore.ts +0 -31
- package/src/store/processStore.ts +0 -31
- package/src/store/threadStore.ts +0 -31
- package/src/store/windowStore.ts +0 -31
- package/src/structure/abstractSyntaxTree.ts +0 -493
- package/src/structure/avlTree.ts +0 -408
- package/src/structure/binarySearchTree.ts +0 -352
- package/src/structure/binaryTree.ts +0 -525
- package/src/structure/bloomFilter.ts +0 -231
- package/src/structure/compare.ts +0 -110
- package/src/structure/cuckooFilter.ts +0 -337
- package/src/structure/deque.ts +0 -223
- package/src/structure/filterKey.ts +0 -36
- package/src/structure/hash.ts +0 -279
- package/src/structure/heap.ts +0 -268
- package/src/structure/index.ts +0 -20
- package/src/structure/iterator.ts +0 -22
- package/src/structure/lru.ts +0 -619
- package/src/structure/ordered.ts +0 -399
- package/src/structure/priority.ts +0 -915
- package/src/structure/queue.ts +0 -168
- package/src/structure/redBlackTree.ts +0 -680
- package/src/structure/segmentTree.ts +0 -248
- package/src/structure/stack.ts +0 -118
- package/src/structure/unordered.ts +0 -407
- package/src/style.css +0 -278
- package/src/thread/index.ts +0 -2
- package/src/thread/thread.ts +0 -176
- package/src/thread/transitions.ts +0 -17
- package/src/types/common.ts +0 -119
- package/src/types/index.ts +0 -23
- package/src/warrant/epistemic.ts +0 -154
- package/src/warrant/index.ts +0 -3
- package/src/warrant/inquiry.ts +0 -166
- package/src/warrant/warrant.ts +0 -179
- package/src/window/compaction.ts +0 -403
- package/src/window/compactionTypes.ts +0 -119
- package/src/window/index.ts +0 -7
- package/src/window/page.ts +0 -18
- package/src/window/window.ts +0 -244
- package/tools/_helpers.ts +0 -34
- package/tools/a2a-check.ts +0 -110
- package/tools/a2a-flow-check.ts +0 -78
- package/tools/agent-card-check.ts +0 -76
- package/tools/agent-check.ts +0 -236
- package/tools/agent-store-check.ts +0 -153
- package/tools/agreement-check.ts +0 -27
- package/tools/annotation-server-check.ts +0 -48
- package/tools/annotation-server.ts +0 -230
- package/tools/annotation-status.ts +0 -65
- package/tools/approval-access-check.ts +0 -66
- package/tools/arch-check.ts +0 -72
- package/tools/attention-core-check.ts +0 -48
- package/tools/attention-resource-check.ts +0 -169
- package/tools/audit-check.ts +0 -207
- package/tools/authority-check.ts +0 -124
- package/tools/authz-check.ts +0 -138
- package/tools/bayes-check.ts +0 -162
- package/tools/bayes-probe.ts +0 -154
- package/tools/behavior-tuning-check.ts +0 -53
- package/tools/board-check.ts +0 -87
- package/tools/boundary-check.ts +0 -199
- package/tools/bundle-trust-check.ts +0 -96
- package/tools/calibrate-imported.ts +0 -108
- package/tools/calibration-check.ts +0 -44
- package/tools/calibration-registry-check.ts +0 -40
- package/tools/calibration-sim.ts +0 -40
- package/tools/card-sign-check.ts +0 -71
- package/tools/card-trust-check.ts +0 -78
- package/tools/channel-check.ts +0 -86
- package/tools/checkpoint-check.ts +0 -620
- package/tools/cleanup-style-configs.ts +0 -29
- package/tools/cognition-check.ts +0 -648
- package/tools/cognitive-runtime-check.ts +0 -609
- package/tools/collaboration-demo.ts +0 -78
- package/tools/compaction-check.ts +0 -266
- package/tools/concept-check.ts +0 -260
- package/tools/concurrency-check.ts +0 -242
- package/tools/conformance-runtime.ts +0 -389
- package/tools/conformance.ts +0 -651
- package/tools/context-ast-check.ts +0 -90
- package/tools/context-ast-deepseek.ts +0 -242
- package/tools/context-graph-bench.ts +0 -50
- package/tools/context-graph-check.ts +0 -229
- package/tools/context-index-check.ts +0 -48
- package/tools/context-lifecycle-check.ts +0 -69
- package/tools/context-projection-check.ts +0 -73
- package/tools/context-scope-check.ts +0 -134
- package/tools/context-storage-check.ts +0 -113
- package/tools/cooperation-check.ts +0 -517
- package/tools/cooperation-http-check.ts +0 -125
- package/tools/deepseek-llm-check.ts +0 -147
- package/tools/deepseek-probe.ts +0 -494
- package/tools/diagnosis-check.ts +0 -109
- package/tools/diagnosis-router-check.ts +0 -50
- package/tools/document-context-check.ts +0 -237
- package/tools/envelope-check.ts +0 -659
- package/tools/eslint-rules/index.ts +0 -26
- package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
- package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
- package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
- package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
- package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
- package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
- package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
- package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
- package/tools/eslint-rules/rules/variable-naming.ts +0 -175
- package/tools/eval-recorded-replay.ts +0 -215
- package/tools/eval-replay.ts +0 -139
- package/tools/eval-summary.ts +0 -136
- package/tools/evidence-revalidation-check.ts +0 -235
- package/tools/exec-check.ts +0 -217
- package/tools/federation-check.ts +0 -166
- package/tools/federation-demo.ts +0 -45
- package/tools/filter-check.ts +0 -243
- package/tools/governance-check.ts +0 -680
- package/tools/governance-store-check.ts +0 -131
- package/tools/governed-task-check.ts +0 -227
- package/tools/guard-check.ts +0 -122
- package/tools/http-channel-check.ts +0 -125
- package/tools/import-campaign.ts +0 -28
- package/tools/inquiry-check.ts +0 -126
- package/tools/interaction-check.ts +0 -171
- package/tools/interrupts-check.ts +0 -173
- package/tools/ipc-check.ts +0 -170
- package/tools/kernel-async-check.ts +0 -136
- package/tools/kernel-check.ts +0 -369
- package/tools/kernel-runtime-check.ts +0 -276
- package/tools/keys-check.ts +0 -559
- package/tools/label-audit.ts +0 -70
- package/tools/labels-workflow-check.ts +0 -49
- package/tools/linear-structure-check.ts +0 -524
- package/tools/live-exec.ts +0 -62
- package/tools/live-governance-eval.ts +0 -813
- package/tools/live-legacy.ts +0 -50
- package/tools/lru-check.ts +0 -182
- package/tools/make-annotation-campaign.ts +0 -57
- package/tools/mcp-executor-check.ts +0 -33
- package/tools/merge-annotations.ts +0 -32
- package/tools/merge-check.ts +0 -98
- package/tools/metrics-check.ts +0 -84
- package/tools/net-probe.ts +0 -107
- package/tools/oauth-probe.ts +0 -117
- package/tools/outbox-check.ts +0 -50
- package/tools/persistence-check.ts +0 -144
- package/tools/pin-check.ts +0 -116
- package/tools/platform-check.ts +0 -281
- package/tools/policy-check.ts +0 -514
- package/tools/prettier-plugin/index.mts +0 -84
- package/tools/priority-check.ts +0 -627
- package/tools/probe-context7.ts +0 -63
- package/tools/registry-check.ts +0 -252
- package/tools/reliability-check.ts +0 -25
- package/tools/retry-check.ts +0 -85
- package/tools/rewrite-declaration-extensions.ts +0 -98
- package/tools/runtime-check.ts +0 -165
- package/tools/runtime-deepseek-check.ts +0 -85
- package/tools/runtime-eval.ts +0 -358
- package/tools/scenario-check.ts +0 -161
- package/tools/scenario-incident.ts +0 -162
- package/tools/scoped-priors-check.ts +0 -35
- package/tools/scoped-priors-pooling.ts +0 -34
- package/tools/segment-ast-check.ts +0 -649
- package/tools/session-check.ts +0 -196
- package/tools/session-store-check.ts +0 -73
- package/tools/share-check.ts +0 -88
- package/tools/sign-check.ts +0 -95
- package/tools/signing-check.ts +0 -275
- package/tools/snapshot-demo.ts +0 -65
- package/tools/social-check.ts +0 -146
- package/tools/structure-compare-check.ts +0 -95
- package/tools/support/documentScanner.ts +0 -577
- package/tools/support/texScanner.ts +0 -631
- package/tools/support/workspaceScanner.ts +0 -476
- package/tools/team-check.ts +0 -163
- package/tools/team-demo.ts +0 -36
- package/tools/telemetry-check.ts +0 -44
- package/tools/tex-context-check.ts +0 -263
- package/tools/tool-gate-check.ts +0 -98
- package/tools/tree-structure-check.ts +0 -786
- package/tools/trust-flow-check.ts +0 -158
- package/tools/turn-store-check.ts +0 -57
- package/tools/unified-check.ts +0 -83
- package/tools/validate.ts +0 -309
- package/tools/wire-check.ts +0 -96
- package/tools/workspace-agent-check.ts +0 -486
- package/tools/workspace-agent-demo.ts +0 -62
- package/tools/workspace-agent-server.ts +0 -101
- package/tools/workspace-context-check.ts +0 -331
- package/tools/workspace-context.ts +0 -131
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -24
- package/tsconfig.tools.json +0 -31
- package/viz/context-ast.json +0 -1577
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UTF-8 byte offsets for 1-based line ranges.
|
|
3
|
+
*
|
|
4
|
+
* Outline ranges are persisted and compared across tools, so they use UTF-8
|
|
5
|
+
* byte offsets, matching tree-sitter and SCIP, rather than JavaScript string
|
|
6
|
+
* indices (UTF-16 code units). The segment tree stores the byte length of every
|
|
7
|
+
* line and answers "where does line N start?" as a prefix sum in O(log n),
|
|
8
|
+
* which keeps large-book outlines from rebuilding a byte table per node.
|
|
9
|
+
*
|
|
10
|
+
* Line extents are half-open on bytes (`endByte` is the first byte after the
|
|
11
|
+
* range) and inclusive on lines (`endLine` is the last covered line). A line's
|
|
12
|
+
* byte span includes its trailing newline so consecutive ranges tile the file
|
|
13
|
+
* without gaps.
|
|
14
|
+
*/
|
|
15
|
+
import { SegmentTree } from "../structure/segmentTree.js";
|
|
16
|
+
const startsOf = (text) => {
|
|
17
|
+
if (text.length === 0) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
const starts = [0];
|
|
21
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
22
|
+
if (text.charCodeAt(index) === 10 && index + 1 < text.length) {
|
|
23
|
+
starts.push(index + 1);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return starts;
|
|
27
|
+
};
|
|
28
|
+
export class ByteLineIndex {
|
|
29
|
+
tree;
|
|
30
|
+
starts;
|
|
31
|
+
text;
|
|
32
|
+
total;
|
|
33
|
+
/**
|
|
34
|
+
* Bytes before the decoded text (a UTF-8/UTF-16 BOM). Symbol ranges are
|
|
35
|
+
* offsets in the original file, while the decoded text starts after the
|
|
36
|
+
* marker; adding the base here keeps both coordinate systems consistent.
|
|
37
|
+
*/
|
|
38
|
+
base;
|
|
39
|
+
constructor(text, bomBytes = 0) {
|
|
40
|
+
this.text = text;
|
|
41
|
+
this.base = Number.isSafeInteger(bomBytes) && bomBytes > 0 ? bomBytes : 0;
|
|
42
|
+
this.starts = startsOf(text);
|
|
43
|
+
const lengths = [];
|
|
44
|
+
for (let index = 0; index < this.starts.length; index += 1) {
|
|
45
|
+
const from = this.starts[index];
|
|
46
|
+
const to = index + 1 < this.starts.length ? this.starts[index + 1] : text.length;
|
|
47
|
+
lengths.push(Buffer.byteLength(text.slice(from, to), "utf8"));
|
|
48
|
+
}
|
|
49
|
+
this.total = BigInt(Buffer.byteLength(text, "utf8") + this.base);
|
|
50
|
+
this.tree = new SegmentTree({
|
|
51
|
+
size: lengths.length,
|
|
52
|
+
operation: (left, right) => left + right,
|
|
53
|
+
identity: 0,
|
|
54
|
+
values: lengths,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Number of logical lines. The empty file has zero lines.
|
|
59
|
+
*/
|
|
60
|
+
get lineCount() {
|
|
61
|
+
return this.starts.length;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Start byte offset of a 1-based line. Lines past EOF clamp to the end.
|
|
65
|
+
*/
|
|
66
|
+
startByte(line) {
|
|
67
|
+
if (line <= 1) {
|
|
68
|
+
return BigInt(this.base);
|
|
69
|
+
}
|
|
70
|
+
const last = this.starts.length;
|
|
71
|
+
if (line > last) {
|
|
72
|
+
return this.total;
|
|
73
|
+
}
|
|
74
|
+
return BigInt(this.base + this.tree.query(0, line - 1));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Half-open end byte offset for an inclusive line.
|
|
78
|
+
*/
|
|
79
|
+
endByte(line) {
|
|
80
|
+
return this.startByte(line + 1);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Byte length of the whole text.
|
|
84
|
+
*/
|
|
85
|
+
byteLength() {
|
|
86
|
+
return this.total;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Build a half-open byte / inclusive line range. Inputs are clamped so a
|
|
90
|
+
* parser can be approximate without producing an invalid range.
|
|
91
|
+
*/
|
|
92
|
+
range(startLine, endLine) {
|
|
93
|
+
const start = Math.max(1, Math.min(startLine, Math.max(1, this.starts.length)));
|
|
94
|
+
const end = Math.max(start, Math.min(endLine, Math.max(1, this.starts.length)));
|
|
95
|
+
return {
|
|
96
|
+
startByte: this.startByte(start),
|
|
97
|
+
endByte: this.endByte(end),
|
|
98
|
+
startLine: BigInt(start),
|
|
99
|
+
endLine: BigInt(end),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Range covering the entire text; used for a file anchor.
|
|
104
|
+
*/
|
|
105
|
+
fullRange() {
|
|
106
|
+
return {
|
|
107
|
+
startByte: 0n,
|
|
108
|
+
endByte: this.total,
|
|
109
|
+
startLine: 1n,
|
|
110
|
+
endLine: BigInt(Math.max(1, this.starts.length)),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Source slice for a range, useful for a `detail`/signature preview.
|
|
115
|
+
*/
|
|
116
|
+
slice(range) {
|
|
117
|
+
const from = this.offsetOf(range.startByte);
|
|
118
|
+
const to = this.offsetOf(range.endByte);
|
|
119
|
+
return this.text.slice(from, to);
|
|
120
|
+
}
|
|
121
|
+
offsetOf(byteOffset) {
|
|
122
|
+
if (byteOffset <= 0n) {
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
const target = Number(byteOffset);
|
|
126
|
+
if (!Number.isSafeInteger(target) || target >= Number(this.total)) {
|
|
127
|
+
return this.text.length;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Line starts are already sorted, so a binary search over the byte
|
|
131
|
+
* prefix positions is cheaper than another tree walk for one offset.
|
|
132
|
+
*/
|
|
133
|
+
let low = 0;
|
|
134
|
+
let high = this.starts.length - 1;
|
|
135
|
+
while (low < high) {
|
|
136
|
+
const mid = Math.ceil((low + high) / 2);
|
|
137
|
+
const midByte = Number(this.startByte(mid + 1));
|
|
138
|
+
if (midByte <= target) {
|
|
139
|
+
low = mid;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
high = mid - 1;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const lineStartByte = Number(this.startByte(low + 1));
|
|
146
|
+
return this.starts[low] + (target - lineStartByte);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Charset detection, decoding and line indexing.
|
|
3
|
+
*
|
|
4
|
+
* Detection is deliberately conservative. A file that does not decode as
|
|
5
|
+
* UTF-8/UTF-16 is only treated as Latin-1 when it looks like text; anything
|
|
6
|
+
* with NUL bytes or a high control-character ratio is `binary`, because
|
|
7
|
+
* guessing an encoding is how a tool silently corrupts a file on write.
|
|
8
|
+
*/
|
|
9
|
+
import type { Charset } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Result of sniffing a byte sequence. `bomLength` is the number of leading
|
|
12
|
+
* bytes that are part of the encoding marker and must not appear in the text.
|
|
13
|
+
*/
|
|
14
|
+
export interface DetectedCharset {
|
|
15
|
+
readonly charset: Charset;
|
|
16
|
+
readonly bomLength: number;
|
|
17
|
+
readonly binary: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Sniff a byte sequence.
|
|
21
|
+
*
|
|
22
|
+
* @param bytes - Raw file bytes.
|
|
23
|
+
* @returns Charset, BOM length and whether the content is binary.
|
|
24
|
+
*/
|
|
25
|
+
export declare const detectCharset: (bytes: Uint8Array) => DetectedCharset;
|
|
26
|
+
/**
|
|
27
|
+
* Decode bytes with a declared charset. `binary` and `none` are refused: a
|
|
28
|
+
* caller must decide whether base64 is the right transport.
|
|
29
|
+
*
|
|
30
|
+
* @param bytes - Raw bytes.
|
|
31
|
+
* @param charset - Charset from detection or node metadata.
|
|
32
|
+
* @returns Decoded text without a BOM.
|
|
33
|
+
*/
|
|
34
|
+
export declare const decodeText: (bytes: Uint8Array, charset: Charset) => string;
|
|
35
|
+
/**
|
|
36
|
+
* Encode text for a write. The returned bytes include the BOM for
|
|
37
|
+
* `utf-8-bom`/UTF-16 encodings, so a caller can write them verbatim.
|
|
38
|
+
*
|
|
39
|
+
* @param text - Text to encode.
|
|
40
|
+
* @param encoding - Target encoding; defaults to strict UTF-8.
|
|
41
|
+
* @returns Encoded bytes.
|
|
42
|
+
*/
|
|
43
|
+
export declare const encodeText: (text: string, encoding?: "utf-8" | "utf-8-bom" | "utf-16le" | "utf-16be" | "latin1") => Uint8Array;
|
|
44
|
+
/**
|
|
45
|
+
* Count logical lines. The empty file has zero lines; a trailing newline does
|
|
46
|
+
* not add a phantom empty line, matching how editors number a file.
|
|
47
|
+
*
|
|
48
|
+
* @param text - Decoded text.
|
|
49
|
+
* @returns Line count as a bigint.
|
|
50
|
+
*/
|
|
51
|
+
export declare const countLines: (text: string) => bigint;
|
|
52
|
+
/**
|
|
53
|
+
* Lazily-built newline index over one decoded text.
|
|
54
|
+
*
|
|
55
|
+
* Offsets are JavaScript string indices (UTF-16 code units), which is exactly
|
|
56
|
+
* what `String.prototype.slice` consumes. Byte offsets are intentionally not
|
|
57
|
+
* stored: a caller that needs bytes uses `Buffer.byteLength` on the slice.
|
|
58
|
+
*/
|
|
59
|
+
export declare class LineIndex {
|
|
60
|
+
private readonly text;
|
|
61
|
+
private offsets;
|
|
62
|
+
constructor(text: string);
|
|
63
|
+
/**
|
|
64
|
+
* Number of lines in the text.
|
|
65
|
+
*/
|
|
66
|
+
get count(): number;
|
|
67
|
+
private starts;
|
|
68
|
+
/**
|
|
69
|
+
* Start offset of a 1-based line; lines past the end clamp to EOF.
|
|
70
|
+
*/
|
|
71
|
+
start(line: number): number;
|
|
72
|
+
/**
|
|
73
|
+
* End offset (exclusive) of a 1-based line, including its newline.
|
|
74
|
+
*/
|
|
75
|
+
end(line: number): number;
|
|
76
|
+
/**
|
|
77
|
+
* Slice a bounded run of lines.
|
|
78
|
+
*
|
|
79
|
+
* @param startLine - 1-based inclusive start.
|
|
80
|
+
* @param maxLines - Maximum number of lines.
|
|
81
|
+
* @returns Text without a trailing newline plus the inclusive range.
|
|
82
|
+
*/
|
|
83
|
+
slice(startLine: number, maxLines: number): {
|
|
84
|
+
text: string;
|
|
85
|
+
startLine: number;
|
|
86
|
+
endLine: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { fail } from "../file/errors.js";
|
|
2
|
+
const Utf8Bom = [0xef, 0xbb, 0xbf];
|
|
3
|
+
const Utf16LeBom = [0xff, 0xfe];
|
|
4
|
+
const Utf16BeBom = [0xfe, 0xff];
|
|
5
|
+
const startsWith = (bytes, prefix) => {
|
|
6
|
+
if (bytes.length < prefix.length) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
for (let index = 0; index < prefix.length; index += 1) {
|
|
10
|
+
if (bytes[index] !== prefix[index]) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
};
|
|
16
|
+
const isUtf8 = (bytes) => {
|
|
17
|
+
try {
|
|
18
|
+
new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Heuristic for BOM-less UTF-16: sample ASCII code units and count NULs on
|
|
27
|
+
* each byte lane. A binary file with many NULs usually fails both lanes.
|
|
28
|
+
*/
|
|
29
|
+
const detectUtf16WithoutBom = (bytes) => {
|
|
30
|
+
if (bytes.length < 8 || bytes.length % 2 !== 0) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const sample = Math.min(bytes.length, 512);
|
|
34
|
+
let evenNul = 0;
|
|
35
|
+
let oddNul = 0;
|
|
36
|
+
let evenTotal = 0;
|
|
37
|
+
let oddTotal = 0;
|
|
38
|
+
for (let index = 0; index + 1 < sample; index += 2) {
|
|
39
|
+
evenTotal += 1;
|
|
40
|
+
oddTotal += 1;
|
|
41
|
+
if (bytes[index] === 0) {
|
|
42
|
+
evenNul += 1;
|
|
43
|
+
}
|
|
44
|
+
if (bytes[index + 1] === 0) {
|
|
45
|
+
oddNul += 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (oddNul / oddTotal > 0.6 && evenNul / evenTotal < 0.1) {
|
|
49
|
+
return "utf-16le";
|
|
50
|
+
}
|
|
51
|
+
if (evenNul / evenTotal > 0.6 && oddNul / oddTotal < 0.1) {
|
|
52
|
+
return "utf-16be";
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Control-character ratio over the first 8 KiB. Tab/newline/carriage return are
|
|
58
|
+
* text; other C0 controls usually mean a container format.
|
|
59
|
+
*/
|
|
60
|
+
const controlRatio = (bytes) => {
|
|
61
|
+
const sample = Math.min(bytes.length, 8192);
|
|
62
|
+
let controls = 0;
|
|
63
|
+
for (let index = 0; index < sample; index += 1) {
|
|
64
|
+
const byte = bytes[index];
|
|
65
|
+
if (byte < 0x20 && byte !== 0x09 && byte !== 0x0a && byte !== 0x0d) {
|
|
66
|
+
controls += 1;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return sample === 0 ? 0 : controls / sample;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Sniff a byte sequence.
|
|
73
|
+
*
|
|
74
|
+
* @param bytes - Raw file bytes.
|
|
75
|
+
* @returns Charset, BOM length and whether the content is binary.
|
|
76
|
+
*/
|
|
77
|
+
export const detectCharset = (bytes) => {
|
|
78
|
+
if (bytes.length === 0) {
|
|
79
|
+
return { charset: "utf-8", bomLength: 0, binary: false };
|
|
80
|
+
}
|
|
81
|
+
if (startsWith(bytes, Utf8Bom)) {
|
|
82
|
+
return { charset: "utf-8-bom", bomLength: Utf8Bom.length, binary: false };
|
|
83
|
+
}
|
|
84
|
+
if (startsWith(bytes, Utf16LeBom)) {
|
|
85
|
+
return { charset: "utf-16le", bomLength: Utf16LeBom.length, binary: false };
|
|
86
|
+
}
|
|
87
|
+
if (startsWith(bytes, Utf16BeBom)) {
|
|
88
|
+
return { charset: "utf-16be", bomLength: Utf16BeBom.length, binary: false };
|
|
89
|
+
}
|
|
90
|
+
const utf16 = detectUtf16WithoutBom(bytes);
|
|
91
|
+
if (utf16 !== undefined) {
|
|
92
|
+
return { charset: utf16, bomLength: 0, binary: false };
|
|
93
|
+
}
|
|
94
|
+
if (isUtf8(bytes)) {
|
|
95
|
+
return { charset: "utf-8", bomLength: 0, binary: controlRatio(bytes) > 0.05 };
|
|
96
|
+
}
|
|
97
|
+
return { charset: "latin1", bomLength: 0, binary: controlRatio(bytes) > 0.05 };
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Decode bytes with a declared charset. `binary` and `none` are refused: a
|
|
101
|
+
* caller must decide whether base64 is the right transport.
|
|
102
|
+
*
|
|
103
|
+
* @param bytes - Raw bytes.
|
|
104
|
+
* @param charset - Charset from detection or node metadata.
|
|
105
|
+
* @returns Decoded text without a BOM.
|
|
106
|
+
*/
|
|
107
|
+
export const decodeText = (bytes, charset) => {
|
|
108
|
+
switch (charset) {
|
|
109
|
+
case "utf-8": {
|
|
110
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
111
|
+
}
|
|
112
|
+
case "utf-8-bom": {
|
|
113
|
+
const bom = detectCharset(bytes);
|
|
114
|
+
const body = bom.bomLength === 0 ? bytes : bytes.subarray(bom.bomLength);
|
|
115
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(body);
|
|
116
|
+
}
|
|
117
|
+
case "utf-16le": {
|
|
118
|
+
const body = startsWith(bytes, Utf16LeBom) ? bytes.subarray(2) : bytes;
|
|
119
|
+
return new TextDecoder("utf-16le", { fatal: true }).decode(body);
|
|
120
|
+
}
|
|
121
|
+
case "utf-16be": {
|
|
122
|
+
const body = startsWith(bytes, Utf16BeBom) ? bytes.subarray(2) : bytes;
|
|
123
|
+
return new TextDecoder("utf-16be", { fatal: true }).decode(body);
|
|
124
|
+
}
|
|
125
|
+
case "latin1": {
|
|
126
|
+
return Buffer.from(bytes).toString("latin1");
|
|
127
|
+
}
|
|
128
|
+
case "binary":
|
|
129
|
+
case "none": {
|
|
130
|
+
return fail("binary_file");
|
|
131
|
+
}
|
|
132
|
+
default: {
|
|
133
|
+
return fail("charset_unsupported");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Encode text for a write. The returned bytes include the BOM for
|
|
139
|
+
* `utf-8-bom`/UTF-16 encodings, so a caller can write them verbatim.
|
|
140
|
+
*
|
|
141
|
+
* @param text - Text to encode.
|
|
142
|
+
* @param encoding - Target encoding; defaults to strict UTF-8.
|
|
143
|
+
* @returns Encoded bytes.
|
|
144
|
+
*/
|
|
145
|
+
export const encodeText = (text, encoding = "utf-8") => {
|
|
146
|
+
switch (encoding) {
|
|
147
|
+
case "utf-8": {
|
|
148
|
+
return new TextEncoder().encode(text);
|
|
149
|
+
}
|
|
150
|
+
case "utf-8-bom": {
|
|
151
|
+
const body = new TextEncoder().encode(text);
|
|
152
|
+
const result = new Uint8Array(body.length + 3);
|
|
153
|
+
result.set(Utf8Bom);
|
|
154
|
+
result.set(body, 3);
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
case "utf-16le": {
|
|
158
|
+
const body = Buffer.from(text, "utf16le");
|
|
159
|
+
return new Uint8Array(Buffer.concat([Buffer.from(Utf16LeBom), body]));
|
|
160
|
+
}
|
|
161
|
+
case "utf-16be": {
|
|
162
|
+
const body = Buffer.from(text, "utf16le");
|
|
163
|
+
body.swap16();
|
|
164
|
+
return new Uint8Array(Buffer.concat([Buffer.from(Utf16BeBom), body]));
|
|
165
|
+
}
|
|
166
|
+
case "latin1": {
|
|
167
|
+
if ([...text].some((character) => character.codePointAt(0) > 0xff)) {
|
|
168
|
+
return fail("charset_unsupported");
|
|
169
|
+
}
|
|
170
|
+
return new Uint8Array(Buffer.from(text, "latin1"));
|
|
171
|
+
}
|
|
172
|
+
default: {
|
|
173
|
+
return fail("charset_unsupported");
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Count logical lines. The empty file has zero lines; a trailing newline does
|
|
179
|
+
* not add a phantom empty line, matching how editors number a file.
|
|
180
|
+
*
|
|
181
|
+
* @param text - Decoded text.
|
|
182
|
+
* @returns Line count as a bigint.
|
|
183
|
+
*/
|
|
184
|
+
export const countLines = (text) => {
|
|
185
|
+
if (text.length === 0) {
|
|
186
|
+
return 0n;
|
|
187
|
+
}
|
|
188
|
+
let count = 0n;
|
|
189
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
190
|
+
if (text.charCodeAt(index) === 10) {
|
|
191
|
+
count += 1n;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (text.charCodeAt(text.length - 1) !== 10) {
|
|
195
|
+
count += 1n;
|
|
196
|
+
}
|
|
197
|
+
return count;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Lazily-built newline index over one decoded text.
|
|
201
|
+
*
|
|
202
|
+
* Offsets are JavaScript string indices (UTF-16 code units), which is exactly
|
|
203
|
+
* what `String.prototype.slice` consumes. Byte offsets are intentionally not
|
|
204
|
+
* stored: a caller that needs bytes uses `Buffer.byteLength` on the slice.
|
|
205
|
+
*/
|
|
206
|
+
export class LineIndex {
|
|
207
|
+
text;
|
|
208
|
+
offsets;
|
|
209
|
+
constructor(text) {
|
|
210
|
+
this.text = text;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Number of lines in the text.
|
|
214
|
+
*/
|
|
215
|
+
get count() {
|
|
216
|
+
return this.starts().length;
|
|
217
|
+
}
|
|
218
|
+
starts() {
|
|
219
|
+
if (this.offsets !== undefined) {
|
|
220
|
+
return this.offsets;
|
|
221
|
+
}
|
|
222
|
+
const starts = [];
|
|
223
|
+
if (this.text.length > 0) {
|
|
224
|
+
starts.push(0);
|
|
225
|
+
for (let index = 0; index < this.text.length; index += 1) {
|
|
226
|
+
if (this.text.charCodeAt(index) === 10 && index + 1 < this.text.length) {
|
|
227
|
+
starts.push(index + 1);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
this.offsets = starts;
|
|
232
|
+
return starts;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Start offset of a 1-based line; lines past the end clamp to EOF.
|
|
236
|
+
*/
|
|
237
|
+
start(line) {
|
|
238
|
+
const starts = this.starts();
|
|
239
|
+
if (line <= 1) {
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
242
|
+
return starts[Math.min(line - 1, starts.length)] ?? this.text.length;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* End offset (exclusive) of a 1-based line, including its newline.
|
|
246
|
+
*/
|
|
247
|
+
end(line) {
|
|
248
|
+
return this.start(line + 1);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Slice a bounded run of lines.
|
|
252
|
+
*
|
|
253
|
+
* @param startLine - 1-based inclusive start.
|
|
254
|
+
* @param maxLines - Maximum number of lines.
|
|
255
|
+
* @returns Text without a trailing newline plus the inclusive range.
|
|
256
|
+
*/
|
|
257
|
+
slice(startLine, maxLines) {
|
|
258
|
+
const starts = this.starts();
|
|
259
|
+
const total = starts.length;
|
|
260
|
+
if (total === 0 || startLine > total) {
|
|
261
|
+
return { text: "", startLine, endLine: startLine - 1 };
|
|
262
|
+
}
|
|
263
|
+
const first = Math.max(1, startLine);
|
|
264
|
+
const last = Math.min(total, first + Math.max(1, maxLines) - 1);
|
|
265
|
+
const from = starts[first - 1];
|
|
266
|
+
const to = last < total ? starts[last] : this.text.length;
|
|
267
|
+
let text = this.text.slice(from, to);
|
|
268
|
+
if (text.endsWith("\n")) {
|
|
269
|
+
text = text.slice(0, -1);
|
|
270
|
+
}
|
|
271
|
+
if (text.endsWith("\r")) {
|
|
272
|
+
text = text.slice(0, -1);
|
|
273
|
+
}
|
|
274
|
+
return { text, startLine: first, endLine: last };
|
|
275
|
+
}
|
|
276
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Source encodings, byte/line indexing and bounded concrete syntax trees. */
|
|
2
|
+
export * from "./types.js";
|
|
3
|
+
export * from "./charset.js";
|
|
4
|
+
export * from "./byteIndex.js";
|
|
5
|
+
export * from "./syntaxTree.js";
|
|
6
|
+
export type { SyntaxFamily, SyntaxRule } from "./syntaxRegistry.js";
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Syntax registry.
|
|
3
|
+
*
|
|
4
|
+
* Languages, token categories and node categories are data, not three frozen
|
|
5
|
+
* unions spread across the parser. A host can add a language (or override an
|
|
6
|
+
* extension) without editing `syntaxTree.ts`; the parser only asks the registry
|
|
7
|
+
* for the language definition and the allowed token/node ids it already knows
|
|
8
|
+
* how to construct.
|
|
9
|
+
*
|
|
10
|
+
* The three public type aliases stay plain strings on purpose: the registry is
|
|
11
|
+
* the authority, so a value that did not pass `register*` is rejected at the
|
|
12
|
+
* boundary instead of being accepted by the type system and failing later.
|
|
13
|
+
*/
|
|
14
|
+
import type { SourceRange as OutlineRange } from "./types.js";
|
|
15
|
+
/**
|
|
16
|
+
* Registered language id. Built-ins include `typescript`, `python`, `html`,
|
|
17
|
+
* `vue`, `json`, `markdown`, `tex` and `plainText`.
|
|
18
|
+
*/
|
|
19
|
+
export type SyntaxLanguage = string;
|
|
20
|
+
/**
|
|
21
|
+
* Registered token id. Built-ins: `keyword`, `identifier`, `number`, `string`,
|
|
22
|
+
* `comment`, `punctuation`, `text`.
|
|
23
|
+
*/
|
|
24
|
+
export type SyntaxTokenKind = string;
|
|
25
|
+
/**
|
|
26
|
+
* Registered node id. Built-ins: `SourceFile`, `Block`, `Declaration`, `Class`,
|
|
27
|
+
* `Interface`, `Struct`, `Trait`, `Enum`, `Namespace`, `Function`, `Method`,
|
|
28
|
+
* `Property`, `Import`, `Export`, `Parameter`, `Tag`, `Attribute`, `Text`,
|
|
29
|
+
* `Heading`, `Rule`, `Comment`.
|
|
30
|
+
*/
|
|
31
|
+
export type SyntaxNodeKind = string;
|
|
32
|
+
/**
|
|
33
|
+
* Coarse parser family. It selects the tree builder, not the language id.
|
|
34
|
+
*/
|
|
35
|
+
export type SyntaxFamily = "code" | "python" | "markup" | "text" | "json" | "style";
|
|
36
|
+
/**
|
|
37
|
+
* One language definition.
|
|
38
|
+
*/
|
|
39
|
+
export interface SyntaxLanguageDefinition {
|
|
40
|
+
readonly id: SyntaxLanguage;
|
|
41
|
+
readonly family: SyntaxFamily;
|
|
42
|
+
readonly extensions: readonly string[];
|
|
43
|
+
readonly lineComment?: string;
|
|
44
|
+
readonly blockStart?: string;
|
|
45
|
+
readonly blockEnd?: string;
|
|
46
|
+
readonly keywords?: readonly string[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* One token-category definition.
|
|
50
|
+
*/
|
|
51
|
+
export interface SyntaxTokenKindDefinition {
|
|
52
|
+
readonly id: SyntaxTokenKind;
|
|
53
|
+
readonly description: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* One node-category definition.
|
|
57
|
+
*/
|
|
58
|
+
export interface SyntaxNodeKindDefinition {
|
|
59
|
+
readonly id: SyntaxNodeKind;
|
|
60
|
+
readonly category: "container" | "declaration" | "token" | "markup" | "text";
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Lexical rules derived from one language definition.
|
|
64
|
+
*/
|
|
65
|
+
export interface SyntaxRule {
|
|
66
|
+
readonly lineComment?: string;
|
|
67
|
+
readonly blockStart?: string;
|
|
68
|
+
readonly blockEnd?: string;
|
|
69
|
+
readonly family: SyntaxFamily;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A mutable registry with duplicate and shape checks. The default instance is
|
|
73
|
+
* populated once at module load; `createSyntaxRegistry()` returns an empty one
|
|
74
|
+
* for a host that wants a different catalog.
|
|
75
|
+
*/
|
|
76
|
+
export declare class SyntaxRegistry {
|
|
77
|
+
private readonly languageById;
|
|
78
|
+
private readonly languageByExtension;
|
|
79
|
+
private readonly tokenKinds;
|
|
80
|
+
private readonly nodeKinds;
|
|
81
|
+
/**
|
|
82
|
+
* Register one language. An empty id, a duplicate id, a duplicate
|
|
83
|
+
* extension, an invalid extension or an unknown family is rejected.
|
|
84
|
+
*/
|
|
85
|
+
registerLanguage(definition: SyntaxLanguageDefinition): this;
|
|
86
|
+
/**
|
|
87
|
+
* Register a token category.
|
|
88
|
+
*/
|
|
89
|
+
registerTokenKind(definition: SyntaxTokenKindDefinition): this;
|
|
90
|
+
/**
|
|
91
|
+
* Register a node category.
|
|
92
|
+
*/
|
|
93
|
+
registerNodeKind(definition: SyntaxNodeKindDefinition): this;
|
|
94
|
+
/**
|
|
95
|
+
* Look up a language by id.
|
|
96
|
+
*/
|
|
97
|
+
language(id: SyntaxLanguage): SyntaxLanguageDefinition | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Resolve a path's extension. Unknown extensions return `unknown`; a path
|
|
100
|
+
* without an extension returns `plainText`.
|
|
101
|
+
*/
|
|
102
|
+
languageOf(path: string): SyntaxLanguage;
|
|
103
|
+
/**
|
|
104
|
+
* Rule object consumed by the tokenizer.
|
|
105
|
+
*/
|
|
106
|
+
ruleOf(language: SyntaxLanguage): SyntaxRule;
|
|
107
|
+
/**
|
|
108
|
+
* Keyword set for one language.
|
|
109
|
+
*/
|
|
110
|
+
keywordsOf(language: SyntaxLanguage): ReadonlySet<string>;
|
|
111
|
+
/**
|
|
112
|
+
* All registered languages, in registration order.
|
|
113
|
+
*/
|
|
114
|
+
languages(): SyntaxLanguageDefinition[];
|
|
115
|
+
/**
|
|
116
|
+
* All registered token kinds.
|
|
117
|
+
*/
|
|
118
|
+
tokenKindsList(): SyntaxTokenKindDefinition[];
|
|
119
|
+
/**
|
|
120
|
+
* All registered node kinds.
|
|
121
|
+
*/
|
|
122
|
+
nodeKindsList(): SyntaxNodeKindDefinition[];
|
|
123
|
+
/**
|
|
124
|
+
* Whether every id is registered.
|
|
125
|
+
*/
|
|
126
|
+
hasTokenKind(id: SyntaxTokenKind): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Whether every id is registered.
|
|
129
|
+
*/
|
|
130
|
+
hasNodeKind(id: SyntaxNodeKind): boolean;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* The process-wide catalog used by the parser. It is frozen after module load;
|
|
134
|
+
* a host that needs a different catalog builds one with
|
|
135
|
+
* `createSyntaxRegistry()` and registers it explicitly.
|
|
136
|
+
*/
|
|
137
|
+
export declare const DefaultSyntaxRegistry: SyntaxRegistry;
|
|
138
|
+
/**
|
|
139
|
+
* Create an empty registry for a host that wants to register a custom catalog.
|
|
140
|
+
*/
|
|
141
|
+
export declare const createSyntaxRegistry: () => SyntaxRegistry;
|
|
142
|
+
/**
|
|
143
|
+
* Convenience wrapper over the default catalog.
|
|
144
|
+
*/
|
|
145
|
+
export declare const syntaxLanguageOf: (path: string) => SyntaxLanguage;
|
|
146
|
+
/**
|
|
147
|
+
* A range used by syntax tokens/nodes; re-exported for callers that only import
|
|
148
|
+
* the registry module.
|
|
149
|
+
*/
|
|
150
|
+
export type SyntaxRange = OutlineRange;
|