attention-manifest-protocol 0.4.1 → 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 -283
- package/CHANGELOG.zh-CN.md +51 -8
- package/README.md +250 -169
- package/README.zh-CN.md +251 -169
- 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/lib/window/index.d.ts +3 -0
- package/lib/window/index.js +1 -0
- 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 -4
- 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
package/src/database/sql/sql.ts
DELETED
|
@@ -1,543 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generic SQL layer for one table.
|
|
3
|
-
*
|
|
4
|
-
* Every concrete table adapter extends {@link Sql} and supplies its
|
|
5
|
-
* {@link TableMeta}. The base class owns the statement shapes shared by all
|
|
6
|
-
* tables: primary-key lookup, list, count, insert, update, delete, upsert and
|
|
7
|
-
* existence checks. Table-specific queries belong in a concrete subclass and
|
|
8
|
-
* use the protected `query`, `queryOne`, `run` and `quote` helpers.
|
|
9
|
-
*
|
|
10
|
-
* Parameters are always bound; identifiers come from trusted {@link TableMeta}
|
|
11
|
-
* values and are validated before they are interpolated.
|
|
12
|
-
*/
|
|
13
|
-
import type { DatabaseSync } from "node:sqlite";
|
|
14
|
-
|
|
15
|
-
import type { PrimaryKey } from "../entity/entity.ts";
|
|
16
|
-
import type { TableMeta } from "../entity/meta.ts";
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Value accepted by a SQLite bound parameter.
|
|
20
|
-
*/
|
|
21
|
-
export type SqlParameter = string | number | bigint | null | Uint8Array;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Result of an INSERT, UPDATE or DELETE statement.
|
|
25
|
-
*/
|
|
26
|
-
export interface MutationResult {
|
|
27
|
-
/**
|
|
28
|
-
* Number of rows changed by the statement.
|
|
29
|
-
*/
|
|
30
|
-
readonly changes: number;
|
|
31
|
-
/**
|
|
32
|
-
* SQLite rowid generated by an INSERT, or zero when none was generated.
|
|
33
|
-
*/
|
|
34
|
-
readonly lastInsertRowid: number | bigint;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Raw result returned by `StatementSync.run`.
|
|
39
|
-
*
|
|
40
|
-
* `changes` may be a bigint on platforms where SQLite reports 64-bit counts;
|
|
41
|
-
* public {@link MutationResult} values normalize it to a number.
|
|
42
|
-
*/
|
|
43
|
-
interface RawMutationResult {
|
|
44
|
-
changes: number | bigint;
|
|
45
|
-
lastInsertRowid: number | bigint;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Options for a generated SELECT.
|
|
50
|
-
*/
|
|
51
|
-
export interface SelectOptions {
|
|
52
|
-
/**
|
|
53
|
-
* Optional SQL after WHERE.
|
|
54
|
-
*/
|
|
55
|
-
readonly where?: string;
|
|
56
|
-
/**
|
|
57
|
-
* Bound values for the WHERE fragment.
|
|
58
|
-
*/
|
|
59
|
-
readonly params?: readonly SqlParameter[];
|
|
60
|
-
/**
|
|
61
|
-
* Full ORDER BY fragment, for example a value returned by `Sort.toSql()`.
|
|
62
|
-
*/
|
|
63
|
-
readonly orderBy?: string;
|
|
64
|
-
/**
|
|
65
|
-
* Maximum row count.
|
|
66
|
-
*/
|
|
67
|
-
readonly limit?: number;
|
|
68
|
-
/**
|
|
69
|
-
* Number of rows to skip.
|
|
70
|
-
*/
|
|
71
|
-
readonly offset?: number;
|
|
72
|
-
/**
|
|
73
|
-
* Optional column projection.
|
|
74
|
-
*/
|
|
75
|
-
readonly columns?: readonly string[];
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Row shape for COUNT queries.
|
|
80
|
-
*/
|
|
81
|
-
interface CountRow {
|
|
82
|
-
n: number;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Convert a JavaScript value into a value `node:sqlite` can bind.
|
|
87
|
-
*
|
|
88
|
-
* Booleans become `1`/`0`, `undefined` becomes `NULL`, and unsupported object
|
|
89
|
-
* types fail early instead of being stringified silently.
|
|
90
|
-
*
|
|
91
|
-
* @param value - Value from a repository or service.
|
|
92
|
-
* @returns A bindable SQLite parameter.
|
|
93
|
-
* @throws TypeError when the value has no SQLite representation.
|
|
94
|
-
*/
|
|
95
|
-
export const toSqlParameter: (value: unknown) => SqlParameter = (value: unknown): SqlParameter => {
|
|
96
|
-
if (value === (void 0) || value === null) {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
if (typeof(value) === "boolean") {
|
|
100
|
-
return value ? 1 : 0;
|
|
101
|
-
}
|
|
102
|
-
if (typeof(value) === "string" || typeof(value) === "bigint") {
|
|
103
|
-
return value;
|
|
104
|
-
}
|
|
105
|
-
if (typeof(value) === "number") {
|
|
106
|
-
if (!Number.isFinite(value)) {
|
|
107
|
-
throw new TypeError("SQL parameters cannot be NaN or Infinity");
|
|
108
|
-
}
|
|
109
|
-
return value;
|
|
110
|
-
}
|
|
111
|
-
if (value instanceof Uint8Array) {
|
|
112
|
-
return value;
|
|
113
|
-
}
|
|
114
|
-
throw new TypeError(`Unsupported SQL parameter type: ${Object.prototype.toString.call(value)}`);
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Validate a SQL identifier before it is interpolated into a statement.
|
|
119
|
-
*
|
|
120
|
-
* @param identifier - Table or column name.
|
|
121
|
-
* @returns The identifier unchanged.
|
|
122
|
-
* @throws Error when the identifier contains anything except letters, digits
|
|
123
|
-
* and underscores, or when it starts with a digit.
|
|
124
|
-
*/
|
|
125
|
-
export const assertSqlIdentifier: (identifier: string) => string = (identifier: string): string => {
|
|
126
|
-
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(identifier)) {
|
|
127
|
-
throw new Error(`Invalid SQL identifier: ${identifier}`);
|
|
128
|
-
}
|
|
129
|
-
return identifier;
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Abstract CRUD adapter for a single table.
|
|
134
|
-
*
|
|
135
|
-
* @typeParam TEntity - Row shape returned by the table.
|
|
136
|
-
* @typeParam TKey - Primary-key type.
|
|
137
|
-
*/
|
|
138
|
-
export abstract class Sql<TEntity extends object, TKey extends PrimaryKey = PrimaryKey> {
|
|
139
|
-
protected readonly db: DatabaseSync;
|
|
140
|
-
readonly meta: TableMeta;
|
|
141
|
-
private readonly columnSet: ReadonlySet<string>;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Create a table adapter.
|
|
145
|
-
*
|
|
146
|
-
* @param db - Open SQLite connection.
|
|
147
|
-
* @param meta - Table, primary key and column metadata.
|
|
148
|
-
*/
|
|
149
|
-
protected constructor(db: DatabaseSync, meta: TableMeta) {
|
|
150
|
-
this.db = db;
|
|
151
|
-
this.meta = meta;
|
|
152
|
-
this.columnSet = new Set(meta.columns);
|
|
153
|
-
this.assertMeta();
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Physical table name.
|
|
158
|
-
*/
|
|
159
|
-
get table(): string {
|
|
160
|
-
return this.meta.table;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Primary-key column name.
|
|
165
|
-
*/
|
|
166
|
-
get primaryKey(): string {
|
|
167
|
-
return this.meta.primaryKey;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Columns allowed in generated statements.
|
|
172
|
-
*/
|
|
173
|
-
get columns(): readonly string[] {
|
|
174
|
-
return this.meta.columns;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Find one row by primary key.
|
|
179
|
-
*
|
|
180
|
-
* @param id - Primary-key value.
|
|
181
|
-
* @returns The row, or `undefined` when absent.
|
|
182
|
-
*/
|
|
183
|
-
findById(id: TKey): TEntity | undefined {
|
|
184
|
-
const row: unknown = this.db
|
|
185
|
-
.prepare(`SELECT * FROM ${this.quote(this.table)} WHERE ${this.quote(this.primaryKey)} = ? LIMIT 1`)
|
|
186
|
-
.get(toSqlParameter(id));
|
|
187
|
-
return row as TEntity | undefined;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Read rows in unspecified order.
|
|
192
|
-
*
|
|
193
|
-
* @param limit - Maximum row count.
|
|
194
|
-
* @returns Matching rows.
|
|
195
|
-
*/
|
|
196
|
-
all(limit: number = 1000): TEntity[] {
|
|
197
|
-
const bounded: number = this.normalizeLimit(limit);
|
|
198
|
-
return this.db.prepare(`SELECT * FROM ${this.quote(this.table)} LIMIT ?`).all(bounded) as unknown as TEntity[];
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Read rows with a trusted SQL WHERE fragment.
|
|
203
|
-
*
|
|
204
|
-
* The fragment is not analyzed; callers must pass only literals and
|
|
205
|
-
* placeholders, never interpolated user input.
|
|
206
|
-
*
|
|
207
|
-
* @param clause - SQL after `WHERE`.
|
|
208
|
-
* @param params - Bound values for the clause.
|
|
209
|
-
* @returns Matching rows.
|
|
210
|
-
*/
|
|
211
|
-
where(clause: string, ...params: SqlParameter[]): TEntity[] {
|
|
212
|
-
const where: string = clause.trim();
|
|
213
|
-
if (where.length === 0) {
|
|
214
|
-
throw new Error("where clause must not be empty");
|
|
215
|
-
}
|
|
216
|
-
return this.db.prepare(`SELECT * FROM ${this.quote(this.table)} WHERE ${where}`).all(...params) as unknown as TEntity[];
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Read rows with optional filtering, ordering and pagination.
|
|
221
|
-
*
|
|
222
|
-
* @param options - Select options.
|
|
223
|
-
* @returns Matching rows.
|
|
224
|
-
*/
|
|
225
|
-
select(options: SelectOptions = {}): TEntity[] {
|
|
226
|
-
const where: string = options.where?.trim() ?? "";
|
|
227
|
-
const params: SqlParameter[] = options.params === (void 0) ? [] : [...options.params];
|
|
228
|
-
if (where.length === 0 && params.length > 0) {
|
|
229
|
-
throw new Error("select parameters require a where clause");
|
|
230
|
-
}
|
|
231
|
-
let sql: string = `SELECT ${this.selectList(options.columns)} FROM ${this.quote(this.table)}`;
|
|
232
|
-
if (where.length > 0) {
|
|
233
|
-
sql += ` WHERE ${where}`;
|
|
234
|
-
}
|
|
235
|
-
const orderBy: string = options.orderBy?.trim() ?? "";
|
|
236
|
-
if (orderBy.length > 0) {
|
|
237
|
-
sql += ` ${orderBy}`;
|
|
238
|
-
}
|
|
239
|
-
if (options.limit !== (void 0)) {
|
|
240
|
-
const limit: number = this.normalizeLimit(options.limit);
|
|
241
|
-
sql += " LIMIT ?";
|
|
242
|
-
params.push(limit);
|
|
243
|
-
} else if (options.offset !== (void 0) && options.offset > 0) {
|
|
244
|
-
this.normalizeLimit(options.offset);
|
|
245
|
-
sql += " LIMIT -1";
|
|
246
|
-
}
|
|
247
|
-
if (options.offset !== (void 0)) {
|
|
248
|
-
const offset: number = this.normalizeLimit(options.offset);
|
|
249
|
-
sql += " OFFSET ?";
|
|
250
|
-
params.push(offset);
|
|
251
|
-
}
|
|
252
|
-
return this.query<TEntity>(sql, ...params);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Count rows, optionally restricted by a WHERE fragment.
|
|
257
|
-
*
|
|
258
|
-
* @param clause - Optional SQL after `WHERE`.
|
|
259
|
-
* @param params - Bound values for the clause.
|
|
260
|
-
* @returns Number of matching rows.
|
|
261
|
-
*/
|
|
262
|
-
count(clause?: string, ...params: SqlParameter[]): number {
|
|
263
|
-
const where: string = clause?.trim() ?? "";
|
|
264
|
-
const sql: string =
|
|
265
|
-
where.length === 0 ? `SELECT COUNT(*) AS n FROM ${this.quote(this.table)}` : `SELECT COUNT(*) AS n FROM ${this.quote(this.table)} WHERE ${where}`;
|
|
266
|
-
const row: CountRow | undefined = this.db.prepare(sql).get(...params) as unknown as CountRow | undefined;
|
|
267
|
-
return row?.n ?? 0;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Test whether a primary key exists.
|
|
272
|
-
*
|
|
273
|
-
* @param id - Primary-key value.
|
|
274
|
-
* @returns `true` when the row exists.
|
|
275
|
-
*/
|
|
276
|
-
exists(id: TKey): boolean {
|
|
277
|
-
const row: unknown = this.db
|
|
278
|
-
.prepare(`SELECT 1 AS present FROM ${this.quote(this.table)} WHERE ${this.quote(this.primaryKey)} = ? LIMIT 1`)
|
|
279
|
-
.get(toSqlParameter(id));
|
|
280
|
-
return row !== (void 0);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
/**
|
|
284
|
-
* Insert one row.
|
|
285
|
-
*
|
|
286
|
-
* @param values - Column values; unknown keys are rejected.
|
|
287
|
-
* @returns Mutation metadata.
|
|
288
|
-
*/
|
|
289
|
-
insert(values: Readonly<Record<string, unknown>>): MutationResult {
|
|
290
|
-
const columns: string[] = this.collectColumns(values, true);
|
|
291
|
-
const placeholders: string = columns.map(() => "?").join(", ");
|
|
292
|
-
const params: SqlParameter[] = this.collectParams(values, columns);
|
|
293
|
-
const sql: string = `INSERT INTO ${this.quote(this.table)} (${columns.map((column) => this.quote(column)).join(", ")}) VALUES (${placeholders})`;
|
|
294
|
-
return this.run(sql, ...params);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Update one row by primary key.
|
|
299
|
-
*
|
|
300
|
-
* @param id - Primary-key value.
|
|
301
|
-
* @param values - Column values; the primary key is ignored.
|
|
302
|
-
* @returns Number of changed rows.
|
|
303
|
-
*/
|
|
304
|
-
update(id: TKey, values: Readonly<Record<string, unknown>>): number {
|
|
305
|
-
const columns: string[] = this.collectColumns(values, false);
|
|
306
|
-
const params: SqlParameter[] = this.collectParams(values, columns);
|
|
307
|
-
const assignments: string = columns.map((column) => `${this.quote(column)} = ?`).join(", ");
|
|
308
|
-
const sql: string = `UPDATE ${this.quote(this.table)} SET ${assignments} WHERE ${this.quote(this.primaryKey)} = ?`;
|
|
309
|
-
const result: RawMutationResult = this.db.prepare(sql).run(...params, toSqlParameter(id));
|
|
310
|
-
return Number(result.changes);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Update rows selected by a trusted WHERE fragment.
|
|
315
|
-
*
|
|
316
|
-
* @param clause - SQL after `WHERE`.
|
|
317
|
-
* @param values - Column values; the primary key is ignored.
|
|
318
|
-
* @param params - Bound values for the clause.
|
|
319
|
-
* @returns Number of changed rows.
|
|
320
|
-
*/
|
|
321
|
-
updateWhere(clause: string, values: Readonly<Record<string, unknown>>, ...params: SqlParameter[]): number {
|
|
322
|
-
const where: string = clause.trim();
|
|
323
|
-
if (where.length === 0) {
|
|
324
|
-
throw new Error("where clause must not be empty");
|
|
325
|
-
}
|
|
326
|
-
const columns: string[] = this.collectColumns(values, false);
|
|
327
|
-
const assignments: string = columns.map((column) => `${this.quote(column)} = ?`).join(", ");
|
|
328
|
-
const sql: string = `UPDATE ${this.quote(this.table)} SET ${assignments} WHERE ${where}`;
|
|
329
|
-
const result: RawMutationResult = this.db.prepare(sql).run(...this.collectParams(values, columns), ...params);
|
|
330
|
-
return Number(result.changes);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
/**
|
|
334
|
-
* Delete one row by primary key.
|
|
335
|
-
*
|
|
336
|
-
* @param id - Primary-key value.
|
|
337
|
-
* @returns Number of deleted rows.
|
|
338
|
-
*/
|
|
339
|
-
delete(id: TKey): number {
|
|
340
|
-
const result: RawMutationResult = this.db
|
|
341
|
-
.prepare(`DELETE FROM ${this.quote(this.table)} WHERE ${this.quote(this.primaryKey)} = ?`)
|
|
342
|
-
.run(toSqlParameter(id));
|
|
343
|
-
return Number(result.changes);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
/**
|
|
347
|
-
* Delete rows selected by a trusted WHERE fragment.
|
|
348
|
-
*
|
|
349
|
-
* @param clause - SQL after `WHERE`.
|
|
350
|
-
* @param params - Bound values for the clause.
|
|
351
|
-
* @returns Number of deleted rows.
|
|
352
|
-
*/
|
|
353
|
-
deleteWhere(clause: string, ...params: SqlParameter[]): number {
|
|
354
|
-
const where: string = clause.trim();
|
|
355
|
-
if (where.length === 0) {
|
|
356
|
-
throw new Error("where clause must not be empty");
|
|
357
|
-
}
|
|
358
|
-
const result: RawMutationResult = this.db.prepare(`DELETE FROM ${this.quote(this.table)} WHERE ${where}`).run(...params);
|
|
359
|
-
return Number(result.changes);
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
/**
|
|
363
|
-
* Insert a row, replacing conflicting columns on a conflict.
|
|
364
|
-
*
|
|
365
|
-
* @param values - Column values; conflict columns must be present.
|
|
366
|
-
* @param conflictColumns - Unique columns; defaults to the primary key.
|
|
367
|
-
* @returns Mutation metadata.
|
|
368
|
-
*/
|
|
369
|
-
upsert(values: Readonly<Record<string, unknown>>, conflictColumns?: readonly string[]): MutationResult {
|
|
370
|
-
const columns: string[] = this.collectColumns(values, true);
|
|
371
|
-
const params: SqlParameter[] = this.collectParams(values, columns);
|
|
372
|
-
const conflicts: readonly string[] = conflictColumns ?? [this.primaryKey];
|
|
373
|
-
for (let index: number = 0; index < conflicts.length; index += 1) {
|
|
374
|
-
const column: string = conflicts[index];
|
|
375
|
-
if (!columns.includes(column)) {
|
|
376
|
-
throw new Error(`upsert conflict column is not supplied: ${column}`);
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
const conflictSql: string = conflicts.map((column) => this.quote(column)).join(", ");
|
|
380
|
-
const updates: string[] = columns.filter((column) => !conflicts.includes(column));
|
|
381
|
-
const action: string =
|
|
382
|
-
updates.length === 0
|
|
383
|
-
? "DO NOTHING"
|
|
384
|
-
: `DO UPDATE SET ${updates.map((column) => `${this.quote(column)} = excluded.${this.quote(column)}`).join(", ")}`;
|
|
385
|
-
const placeholders: string = columns.map(() => "?").join(", ");
|
|
386
|
-
const sql: string = `INSERT INTO ${this.quote(this.table)} (${columns.map((column) => this.quote(column)).join(", ")}) VALUES (${placeholders}) ON CONFLICT(${conflictSql}) ${action}`;
|
|
387
|
-
return this.run(sql, ...params);
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* Build a SELECT column list.
|
|
392
|
-
*
|
|
393
|
-
* @param columns - Optional columns; omitted means all columns.
|
|
394
|
-
* @returns SQL column list.
|
|
395
|
-
*/
|
|
396
|
-
private selectList(columns?: readonly string[]): string {
|
|
397
|
-
if (columns === (void 0) || columns.length === 0) {
|
|
398
|
-
return "*";
|
|
399
|
-
}
|
|
400
|
-
return columns.map((column) => this.quote(column)).join(", ");
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
/**
|
|
404
|
-
* Execute a trusted statement with bound parameters.
|
|
405
|
-
*
|
|
406
|
-
* @param sql - Complete SQL statement.
|
|
407
|
-
* @param params - Bound values.
|
|
408
|
-
* @returns Mutation metadata.
|
|
409
|
-
*/
|
|
410
|
-
protected run(sql: string, ...params: SqlParameter[]): MutationResult {
|
|
411
|
-
const result: RawMutationResult = this.db.prepare(sql).run(...params);
|
|
412
|
-
return {
|
|
413
|
-
changes: Number(result.changes),
|
|
414
|
-
lastInsertRowid: result.lastInsertRowid,
|
|
415
|
-
};
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
/**
|
|
419
|
-
* Read rows from a trusted statement.
|
|
420
|
-
*
|
|
421
|
-
* @typeParam TRow - Row shape.
|
|
422
|
-
* @param sql - Complete SQL statement.
|
|
423
|
-
* @param params - Bound values.
|
|
424
|
-
* @returns Rows.
|
|
425
|
-
*/
|
|
426
|
-
query<TRow>(sql: string, ...params: SqlParameter[]): TRow[] {
|
|
427
|
-
return this.db.prepare(sql).all(...params) as TRow[];
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
/**
|
|
431
|
-
* Read one row from a trusted statement.
|
|
432
|
-
*
|
|
433
|
-
* @typeParam TRow - Row shape.
|
|
434
|
-
* @param sql - Complete SQL statement.
|
|
435
|
-
* @param params - Bound values.
|
|
436
|
-
* @returns The row, or `undefined`.
|
|
437
|
-
*/
|
|
438
|
-
queryOne<TRow>(sql: string, ...params: SqlParameter[]): TRow | undefined {
|
|
439
|
-
return this.db.prepare(sql).get(...params) as TRow | undefined;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
/**
|
|
443
|
-
* Quote an identifier after validating it.
|
|
444
|
-
*
|
|
445
|
-
* @param identifier - Table or column name.
|
|
446
|
-
* @returns Double-quoted identifier.
|
|
447
|
-
*/
|
|
448
|
-
protected quote(identifier: string): string {
|
|
449
|
-
return `"${assertSqlIdentifier(identifier)}"`;
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* Check that the table metadata is internally consistent.
|
|
454
|
-
*/
|
|
455
|
-
private assertMeta(): void {
|
|
456
|
-
assertSqlIdentifier(this.meta.table);
|
|
457
|
-
assertSqlIdentifier(this.meta.primaryKey);
|
|
458
|
-
if (this.meta.columns.length === 0) {
|
|
459
|
-
throw new Error(`table ${this.meta.table} must declare at least one column`);
|
|
460
|
-
}
|
|
461
|
-
if (!this.columnSet.has(this.meta.primaryKey)) {
|
|
462
|
-
throw new Error(`primary key ${this.meta.primaryKey} is not listed in columns`);
|
|
463
|
-
}
|
|
464
|
-
for (let index: number = 0; index < this.meta.columns.length; index += 1) {
|
|
465
|
-
assertSqlIdentifier(this.meta.columns[index]);
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/**
|
|
470
|
-
* Select writable columns from a value map.
|
|
471
|
-
*
|
|
472
|
-
* @param values - Caller-supplied values.
|
|
473
|
-
* @param includePrimaryKey - Whether the primary key is writable.
|
|
474
|
-
* @returns Ordered column names.
|
|
475
|
-
*/
|
|
476
|
-
private collectColumns(values: Readonly<Record<string, unknown>>, includePrimaryKey: boolean): string[] {
|
|
477
|
-
const keys: string[] = Object.keys(values);
|
|
478
|
-
const columns: string[] = [];
|
|
479
|
-
for (let index: number = 0; index < keys.length; index += 1) {
|
|
480
|
-
const column: string = keys[index];
|
|
481
|
-
if (!this.columnSet.has(column)) {
|
|
482
|
-
throw new Error(`unknown column for ${this.table}: ${column}`);
|
|
483
|
-
}
|
|
484
|
-
if (!includePrimaryKey && column === this.primaryKey) {
|
|
485
|
-
continue;
|
|
486
|
-
}
|
|
487
|
-
columns.push(column);
|
|
488
|
-
}
|
|
489
|
-
if (columns.length === 0) {
|
|
490
|
-
throw new Error(`no writable columns supplied for ${this.table}`);
|
|
491
|
-
}
|
|
492
|
-
return columns;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
/**
|
|
496
|
-
* Build bound parameters in column order.
|
|
497
|
-
*
|
|
498
|
-
* @param values - Caller-supplied values.
|
|
499
|
-
* @param columns - Ordered column names.
|
|
500
|
-
* @returns Bindable parameters.
|
|
501
|
-
*/
|
|
502
|
-
private collectParams(values: Readonly<Record<string, unknown>>, columns: readonly string[]): SqlParameter[] {
|
|
503
|
-
const params: SqlParameter[] = [];
|
|
504
|
-
for (let index: number = 0; index < columns.length; index += 1) {
|
|
505
|
-
params.push(toSqlParameter(values[columns[index]]));
|
|
506
|
-
}
|
|
507
|
-
return params;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
/**
|
|
511
|
-
* Validate and normalize a LIMIT value.
|
|
512
|
-
*
|
|
513
|
-
* @param limit - Requested row count.
|
|
514
|
-
* @returns A non-negative integer.
|
|
515
|
-
*/
|
|
516
|
-
private normalizeLimit(limit: number): number {
|
|
517
|
-
if (!Number.isInteger(limit) || limit < 0) {
|
|
518
|
-
throw new RangeError("limit must be a non-negative integer");
|
|
519
|
-
}
|
|
520
|
-
return limit;
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
/**
|
|
525
|
-
* Concrete SQL adapter for a table that only needs generated CRUD statements.
|
|
526
|
-
*
|
|
527
|
-
* Table-specific operations can instead subclass {@link Sql} and use the
|
|
528
|
-
* public query helpers.
|
|
529
|
-
*
|
|
530
|
-
* @typeParam TEntity - Row shape returned by the table.
|
|
531
|
-
* @typeParam TKey - Primary-key type.
|
|
532
|
-
*/
|
|
533
|
-
export class TableSql<TEntity extends object, TKey extends PrimaryKey = PrimaryKey> extends Sql<TEntity, TKey> {
|
|
534
|
-
/**
|
|
535
|
-
* Create a generated table adapter.
|
|
536
|
-
*
|
|
537
|
-
* @param db - Open SQLite connection.
|
|
538
|
-
* @param meta - Table, primary key and column metadata.
|
|
539
|
-
*/
|
|
540
|
-
constructor(db: DatabaseSync, meta: TableMeta) {
|
|
541
|
-
super(db, meta);
|
|
542
|
-
}
|
|
543
|
-
}
|