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
package/lib/file/file.js
ADDED
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-node construction and wire projection.
|
|
3
|
+
*
|
|
4
|
+
* A file node is self-describing: its fingerprint covers every byte, while the
|
|
5
|
+
* descriptive metadata is derived from a bounded head. Large files therefore
|
|
6
|
+
* stay cheap to fingerprint (a streaming SHA-256 over 1 MiB chunks) without
|
|
7
|
+
* loading them into memory. Charset detection and line counting are delegated
|
|
8
|
+
* to `charset.ts` so the tree, the reader and the writer cannot disagree about
|
|
9
|
+
* what a line is.
|
|
10
|
+
*
|
|
11
|
+
* Every host path stays inside this module. Callers supply a root-relative POSIX
|
|
12
|
+
* path and receive detached metadata; errors are code-only.
|
|
13
|
+
*/
|
|
14
|
+
import { createHash } from "node:crypto";
|
|
15
|
+
import { closeSync, lstatSync, openSync, readSync, realpathSync, statSync } from "node:fs";
|
|
16
|
+
import { isAbsolute, join } from "node:path";
|
|
17
|
+
import { countLines, decodeText, detectCharset } from "../syntax/charset.js";
|
|
18
|
+
import { fail } from "./errors.js";
|
|
19
|
+
import { annotationFor, describeFile, extensionOfPath, nameOfPath } from "./metadata.js";
|
|
20
|
+
import { PathSandbox } from "./path.js";
|
|
21
|
+
import { creationTime, formatNodeTime } from "./time.js";
|
|
22
|
+
const HeadBytes = 64 * 1024;
|
|
23
|
+
const LargeFileBytes = 32 * 1024 * 1024;
|
|
24
|
+
const ChunkBytes = 1024 * 1024;
|
|
25
|
+
const NewlineByte = 0x0a;
|
|
26
|
+
const ZeroByte = 0x00;
|
|
27
|
+
const ControlCharacters = /[\u0000-\u001f\u007f]/;
|
|
28
|
+
const DriveLetter = /^[A-Za-z]:/;
|
|
29
|
+
const errnoCode = (error) => {
|
|
30
|
+
if (typeof (error) === "object" && error !== null) {
|
|
31
|
+
const candidate = error;
|
|
32
|
+
if (typeof (candidate.code) === "string") {
|
|
33
|
+
return candidate.code;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return "";
|
|
37
|
+
};
|
|
38
|
+
const failRead = (error) => {
|
|
39
|
+
const code = errnoCode(error);
|
|
40
|
+
if (code === "ENOENT" || code === "ENOTDIR") {
|
|
41
|
+
return fail("not_found");
|
|
42
|
+
}
|
|
43
|
+
if (code === "EACCES" || code === "EPERM") {
|
|
44
|
+
return fail("permission_denied");
|
|
45
|
+
}
|
|
46
|
+
if (code === "EISDIR") {
|
|
47
|
+
return fail("not_file");
|
|
48
|
+
}
|
|
49
|
+
if (code === "ELOOP") {
|
|
50
|
+
return fail("symlink_denied");
|
|
51
|
+
}
|
|
52
|
+
return fail("internal_error");
|
|
53
|
+
};
|
|
54
|
+
const normalizeFileRelative = (relative) => {
|
|
55
|
+
if (typeof (relative) !== "string" || ControlCharacters.test(relative)) {
|
|
56
|
+
return fail("invalid_path");
|
|
57
|
+
}
|
|
58
|
+
const text = relative.trim();
|
|
59
|
+
if (text.length === 0) {
|
|
60
|
+
return fail("not_file");
|
|
61
|
+
}
|
|
62
|
+
if (text.includes("\\")) {
|
|
63
|
+
return fail("invalid_path");
|
|
64
|
+
}
|
|
65
|
+
if (isAbsolute(text) || DriveLetter.test(text) || text.startsWith("//")) {
|
|
66
|
+
return fail("invalid_path");
|
|
67
|
+
}
|
|
68
|
+
const segments = [];
|
|
69
|
+
const parts = text.split("/");
|
|
70
|
+
for (let index = 0; index < parts.length; index += 1) {
|
|
71
|
+
const part = parts[index];
|
|
72
|
+
if (part === "" || part === ".") {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (part === "..") {
|
|
76
|
+
return fail("path_escape");
|
|
77
|
+
}
|
|
78
|
+
segments.push(part);
|
|
79
|
+
}
|
|
80
|
+
if (segments.length === 0) {
|
|
81
|
+
return fail("not_file");
|
|
82
|
+
}
|
|
83
|
+
return segments.join("/");
|
|
84
|
+
};
|
|
85
|
+
const absoluteOf = (root, relative) => join(root.path, ...relative.split("/"));
|
|
86
|
+
const linkTargetStat = (root, absolute, linkStat, options) => {
|
|
87
|
+
if (!linkStat.isSymbolicLink()) {
|
|
88
|
+
return linkStat;
|
|
89
|
+
}
|
|
90
|
+
if (options.followSymlinks !== true) {
|
|
91
|
+
return fail("symlink_denied");
|
|
92
|
+
}
|
|
93
|
+
let real;
|
|
94
|
+
try {
|
|
95
|
+
real = realpathSync(absolute);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
return failRead(error);
|
|
99
|
+
}
|
|
100
|
+
const sandbox = new PathSandbox([root], { followSymlinks: true });
|
|
101
|
+
if (!sandbox.contains(root.path, real)) {
|
|
102
|
+
return fail("path_escape");
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
return statSync(real);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return failRead(error);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const concatBytes = (parts) => {
|
|
112
|
+
let total = 0;
|
|
113
|
+
for (let index = 0; index < parts.length; index += 1) {
|
|
114
|
+
total += parts[index].length;
|
|
115
|
+
}
|
|
116
|
+
const result = new Uint8Array(total);
|
|
117
|
+
let offset = 0;
|
|
118
|
+
for (let index = 0; index < parts.length; index += 1) {
|
|
119
|
+
result.set(parts[index], offset);
|
|
120
|
+
offset += parts[index].length;
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
};
|
|
124
|
+
const tallyChunk = (tally, chunk) => {
|
|
125
|
+
for (let index = 0; index < chunk.length; index += 1) {
|
|
126
|
+
if (chunk[index] === NewlineByte) {
|
|
127
|
+
tally.lf += 1n;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
for (let index = 0; index + 1 < chunk.length; index += 2) {
|
|
131
|
+
if (chunk[index] === NewlineByte && chunk[index + 1] === ZeroByte) {
|
|
132
|
+
tally.le += 1n;
|
|
133
|
+
}
|
|
134
|
+
if (chunk[index] === ZeroByte && chunk[index + 1] === NewlineByte) {
|
|
135
|
+
tally.be += 1n;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (chunk.length > 0) {
|
|
139
|
+
tally.previous = chunk.length > 1 ? chunk[chunk.length - 2] : tally.tail;
|
|
140
|
+
tally.tail = chunk[chunk.length - 1];
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const readFileBytes = (absolute, size) => {
|
|
144
|
+
const collect = size <= LargeFileBytes;
|
|
145
|
+
const chunks = [];
|
|
146
|
+
const headParts = [];
|
|
147
|
+
const tally = { lf: 0n, le: 0n, be: 0n, previous: -1, tail: -1 };
|
|
148
|
+
const hasher = createHash("sha256");
|
|
149
|
+
const fd = openSync(absolute, "r");
|
|
150
|
+
let position = 0;
|
|
151
|
+
let headLength = 0;
|
|
152
|
+
try {
|
|
153
|
+
while (position < size) {
|
|
154
|
+
const length = Math.min(ChunkBytes, size - position);
|
|
155
|
+
const buffer = Buffer.allocUnsafe(length);
|
|
156
|
+
const read = readSync(fd, buffer, 0, length, position);
|
|
157
|
+
if (read <= 0) {
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
const chunk = buffer.subarray(0, read);
|
|
161
|
+
hasher.update(chunk);
|
|
162
|
+
if (collect) {
|
|
163
|
+
chunks.push(chunk);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
tallyChunk(tally, chunk);
|
|
167
|
+
}
|
|
168
|
+
if (headLength < HeadBytes) {
|
|
169
|
+
const take = Math.min(HeadBytes - headLength, chunk.length);
|
|
170
|
+
headParts.push(chunk.subarray(0, take));
|
|
171
|
+
headLength += take;
|
|
172
|
+
}
|
|
173
|
+
position += read;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
closeSync(fd);
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
head: concatBytes(headParts),
|
|
181
|
+
full: collect ? concatBytes(chunks) : undefined,
|
|
182
|
+
fingerprint: `sha256:${hasher.digest("hex")}`,
|
|
183
|
+
tally,
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
const countStreamedLines = (charset, size, tally) => {
|
|
187
|
+
if (size === 0 || charset === "binary" || charset === "none") {
|
|
188
|
+
return 0n;
|
|
189
|
+
}
|
|
190
|
+
if (charset === "utf-16le") {
|
|
191
|
+
const endsWithNewline = tally.previous === NewlineByte && tally.tail === ZeroByte;
|
|
192
|
+
return tally.le + (endsWithNewline ? 0n : 1n);
|
|
193
|
+
}
|
|
194
|
+
if (charset === "utf-16be") {
|
|
195
|
+
const endsWithNewline = tally.previous === ZeroByte && tally.tail === NewlineByte;
|
|
196
|
+
return tally.be + (endsWithNewline ? 0n : 1n);
|
|
197
|
+
}
|
|
198
|
+
return tally.lf + (tally.tail === NewlineByte ? 0n : 1n);
|
|
199
|
+
};
|
|
200
|
+
const timeZoneOf = (options) => (options.timeZone === "utc" ? "utc" : "local");
|
|
201
|
+
/**
|
|
202
|
+
* Build one file node by stat-ing and reading the file behind a root-relative
|
|
203
|
+
* path.
|
|
204
|
+
*
|
|
205
|
+
* @param root - Session root that owns the file.
|
|
206
|
+
* @param relative - Root-relative POSIX path.
|
|
207
|
+
* @param options - Tree bounds and metadata options.
|
|
208
|
+
* @returns A file node with a full-content fingerprint.
|
|
209
|
+
*/
|
|
210
|
+
export const buildFileNode = (root, relative, options = {}) => {
|
|
211
|
+
const path = normalizeFileRelative(relative);
|
|
212
|
+
const absolute = absoluteOf(root, path);
|
|
213
|
+
const rootExclude = Array.isArray(root.exclude) ? root.exclude : [];
|
|
214
|
+
const optionExclude = Array.isArray(options.exclude) ? options.exclude : [];
|
|
215
|
+
const scopedRoot = { ...root, exclude: [...rootExclude, ...optionExclude] };
|
|
216
|
+
const sandbox = new PathSandbox([scopedRoot], { followSymlinks: options.followSymlinks === true });
|
|
217
|
+
if (sandbox.isExcluded(scopedRoot, path)) {
|
|
218
|
+
return fail("excluded_path");
|
|
219
|
+
}
|
|
220
|
+
sandbox.revalidate({ root: scopedRoot, relative: path, absolute });
|
|
221
|
+
let linkStat;
|
|
222
|
+
try {
|
|
223
|
+
linkStat = lstatSync(absolute);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
return failRead(error);
|
|
227
|
+
}
|
|
228
|
+
const stat = linkTargetStat(scopedRoot, absolute, linkStat, options);
|
|
229
|
+
if (!stat.isFile()) {
|
|
230
|
+
return fail("not_file");
|
|
231
|
+
}
|
|
232
|
+
let read;
|
|
233
|
+
try {
|
|
234
|
+
read = readFileBytes(absolute, stat.size);
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
return failRead(error);
|
|
238
|
+
}
|
|
239
|
+
const body = read.full;
|
|
240
|
+
const detected = detectCharset(body ?? read.head);
|
|
241
|
+
let charset = detected.binary ? "binary" : detected.charset;
|
|
242
|
+
let lines = 0n;
|
|
243
|
+
if (charset !== "binary") {
|
|
244
|
+
if (body !== (void 0)) {
|
|
245
|
+
try {
|
|
246
|
+
lines = countLines(decodeText(body, charset));
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
charset = "binary";
|
|
250
|
+
lines = 0n;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
lines = countStreamedLines(charset, stat.size, read.tally);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
const described = describeFile(absolute, path, charset, read.head, annotationFor(options.annotations, path));
|
|
258
|
+
const timeZone = timeZoneOf(options);
|
|
259
|
+
const create = formatNodeTime(creationTime(stat), timeZone);
|
|
260
|
+
const modify = formatNodeTime(new Date(stat.mtimeMs), timeZone);
|
|
261
|
+
return {
|
|
262
|
+
type: "File",
|
|
263
|
+
path,
|
|
264
|
+
name: nameOfPath(path),
|
|
265
|
+
extension: extensionOfPath(path),
|
|
266
|
+
children: [],
|
|
267
|
+
fingerprint: read.fingerprint,
|
|
268
|
+
charset,
|
|
269
|
+
lines,
|
|
270
|
+
bytes: BigInt(stat.size),
|
|
271
|
+
create,
|
|
272
|
+
modify,
|
|
273
|
+
description: described.description,
|
|
274
|
+
summary: described.summary,
|
|
275
|
+
purpose: described.purpose,
|
|
276
|
+
};
|
|
277
|
+
};
|
|
278
|
+
const wireFile = (node) => ({
|
|
279
|
+
...node,
|
|
280
|
+
lines: `${node.lines}`,
|
|
281
|
+
bytes: `${node.bytes}`,
|
|
282
|
+
children: [],
|
|
283
|
+
});
|
|
284
|
+
const wireDirectory = (node, children) => ({
|
|
285
|
+
...node,
|
|
286
|
+
lines: `${node.lines}`,
|
|
287
|
+
bytes: `${node.bytes}`,
|
|
288
|
+
children,
|
|
289
|
+
});
|
|
290
|
+
/**
|
|
291
|
+
* Project an in-process node into its JSON-safe wire shape. `lines`/`bytes`
|
|
292
|
+
* become decimal strings and every descendant is projected as well.
|
|
293
|
+
*
|
|
294
|
+
* @param node - Node to project.
|
|
295
|
+
* @returns Wire node.
|
|
296
|
+
*/
|
|
297
|
+
export const wireNode = (node) => {
|
|
298
|
+
if (node.type === "File") {
|
|
299
|
+
return wireFile(node);
|
|
300
|
+
}
|
|
301
|
+
return wireDirectory(node, node.children.map((child) => wireNode(child)));
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Project a node with a bounded number of child levels. `depth` 0 returns the
|
|
305
|
+
* node with an empty child list, which is what a flat directory listing needs.
|
|
306
|
+
*
|
|
307
|
+
* @param node - Node to project.
|
|
308
|
+
* @param depth - Maximum child levels to include.
|
|
309
|
+
* @param offset - Child offset at the first level.
|
|
310
|
+
* @param limit - Maximum children at the first level.
|
|
311
|
+
* @returns Wire node.
|
|
312
|
+
*/
|
|
313
|
+
export const wireTree = (node, depth, offset, limit) => {
|
|
314
|
+
if (node.type === "File") {
|
|
315
|
+
return wireFile(node);
|
|
316
|
+
}
|
|
317
|
+
const levels = Number.isFinite(depth) ? Math.max(0, Math.floor(depth)) : depth > 0 ? Number.MAX_SAFE_INTEGER : 0;
|
|
318
|
+
if (levels === 0) {
|
|
319
|
+
return wireDirectory(node, []);
|
|
320
|
+
}
|
|
321
|
+
const start = Number.isFinite(offset) ? Math.max(0, Math.floor(offset)) : 0;
|
|
322
|
+
const size = Number.isFinite(limit) ? Math.max(0, Math.floor(limit)) : node.children.length;
|
|
323
|
+
const selected = node.children.slice(start, start + size);
|
|
324
|
+
return wireDirectory(node, selected.map((child) => wireTree(child, levels - 1, 0, Number.MAX_SAFE_INTEGER)));
|
|
325
|
+
};
|
|
326
|
+
/**
|
|
327
|
+
* Re-read a file and fail unless its content fingerprint matches the expected
|
|
328
|
+
* value. The whole file is hashed; no partial comparison is attempted.
|
|
329
|
+
*
|
|
330
|
+
* @param root - Session root that owns the file.
|
|
331
|
+
* @param relative - Root-relative POSIX path.
|
|
332
|
+
* @param expected - Expected `sha256:<hex>` reference.
|
|
333
|
+
*/
|
|
334
|
+
export const verifyFingerprint = (root, relative, expected) => {
|
|
335
|
+
const node = buildFileNode(root, relative);
|
|
336
|
+
if (node.fingerprint !== expected) {
|
|
337
|
+
return fail("fingerprint_mismatch");
|
|
338
|
+
}
|
|
339
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { PathSandbox } from "./path.js";
|
|
2
|
+
import type { ImportEdge, ImportReport } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* One file read through a sandbox. `path` is root-relative and the fingerprint
|
|
5
|
+
* covers the exact bytes that were measured, so a caller can persist the report
|
|
6
|
+
* against the same content address a tree node would use.
|
|
7
|
+
*/
|
|
8
|
+
export interface SourceFileSnapshot {
|
|
9
|
+
readonly path: string;
|
|
10
|
+
readonly fingerprint: string;
|
|
11
|
+
readonly text: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* One lexical token. `value` is decoded for string literals and raw for
|
|
15
|
+
* identifiers, punctuation and templates. `line` is 1-based.
|
|
16
|
+
*/
|
|
17
|
+
export interface SourceToken {
|
|
18
|
+
readonly kind: "identifier" | "string" | "template" | "punct";
|
|
19
|
+
readonly value: string;
|
|
20
|
+
readonly line: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Result of resolving one specifier from one root-relative file.
|
|
24
|
+
*
|
|
25
|
+
* `resolved` means a file was found for a relative specifier, or that the
|
|
26
|
+
* specifier is external and therefore intentionally not probed. `to` is the
|
|
27
|
+
* resolved root-relative path for internal specifiers, the bare specifier for
|
|
28
|
+
* external ones, and the unchanged absolute specifier for `/...`.
|
|
29
|
+
*/
|
|
30
|
+
export interface ResolvedSpecifier {
|
|
31
|
+
readonly to: string;
|
|
32
|
+
readonly resolved: boolean;
|
|
33
|
+
readonly external: boolean;
|
|
34
|
+
}
|
|
35
|
+
type ReadSourceFileFn = (sandbox: PathSandbox, path: string) => SourceFileSnapshot;
|
|
36
|
+
type ResolveImportSpecifierFn = (sandbox: PathSandbox, from: string, specifier: string) => ResolvedSpecifier;
|
|
37
|
+
type ExtractImportsFn = (sandbox: PathSandbox, path: string) => ImportReport;
|
|
38
|
+
type ImportedByFn = (sandbox: PathSandbox, target: string, candidates: readonly string[]) => ImportEdge[];
|
|
39
|
+
/**
|
|
40
|
+
* Read one sandboxed file for import/export extraction.
|
|
41
|
+
*
|
|
42
|
+
* The size limit is checked before the read and again after it: a file that
|
|
43
|
+
* grows between the two checks is refused rather than silently truncated. A
|
|
44
|
+
* binary charset is refused because slicing it as text would produce nonsense
|
|
45
|
+
* tokens. Errors carry a code only, never a host path.
|
|
46
|
+
*
|
|
47
|
+
* @param sandbox - Root-confined path resolver.
|
|
48
|
+
* @param path - Root-relative file path.
|
|
49
|
+
* @returns Decoded text, root-relative path and content fingerprint.
|
|
50
|
+
*/
|
|
51
|
+
export declare const readSourceFile: ReadSourceFileFn;
|
|
52
|
+
/**
|
|
53
|
+
* Whether the extension is one of the JS/TS family the lexical scanner covers.
|
|
54
|
+
*/
|
|
55
|
+
export declare const isParseableSource: (path: string) => boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the extension may contain JSX syntax. JSX-aware tokenization is
|
|
58
|
+
* enabled only for `.tsx`/`.jsx`; plain `.ts` keeps `<...>` as generic/type
|
|
59
|
+
* punctuation so type parameters are not mistaken for elements.
|
|
60
|
+
*/
|
|
61
|
+
export declare const isJsxSource: (path: string) => boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Tokenize JavaScript/TypeScript well enough to find module keywords.
|
|
64
|
+
*
|
|
65
|
+
* Comments, strings, template literal text, JSX text and regular-expression
|
|
66
|
+
* literals are consumed as opaque units, which is what makes pseudo-imports in
|
|
67
|
+
* those regions invisible. `${...}` expressions inside a template and
|
|
68
|
+
* `{...}` expressions inside JSX are tokenized recursively, so a real dynamic
|
|
69
|
+
* import there is still reported. The scanner is not a full lexer:
|
|
70
|
+
* regex-versus-division is resolved by attempting to close a regex before a
|
|
71
|
+
* newline or semicolon; a lone division slash falls back to punctuation, and a
|
|
72
|
+
* regex candidate never manufactures an edge because its body stays opaque.
|
|
73
|
+
*
|
|
74
|
+
* @param text - Decoded source text.
|
|
75
|
+
* @param jsx - Whether JSX elements should be skipped as opaque regions.
|
|
76
|
+
* @returns Tokens in source order, with 1-based line numbers.
|
|
77
|
+
*/
|
|
78
|
+
export declare const tokenizeSource: (text: string, jsx?: boolean) => SourceToken[];
|
|
79
|
+
/**
|
|
80
|
+
* Resolve one import specifier against a root-relative source file.
|
|
81
|
+
*
|
|
82
|
+
* Relative specifiers are normalized (never allowed to climb above the root)
|
|
83
|
+
* and probed as exact path, extensionless, then directory index. An unresolved
|
|
84
|
+
* relative specifier still reports a guessed path so a caller can show what was
|
|
85
|
+
* tried; absolute specifiers keep their original spelling and stay unresolved;
|
|
86
|
+
* bare specifiers are external by definition, including `node:*`.
|
|
87
|
+
*
|
|
88
|
+
* @param sandbox - Root-confined path resolver used for existence checks.
|
|
89
|
+
* @param from - Root-relative path of the importing file.
|
|
90
|
+
* @param specifier - Raw specifier text.
|
|
91
|
+
* @returns Target path plus resolved/external flags.
|
|
92
|
+
*/
|
|
93
|
+
export declare const resolveImportSpecifier: ResolveImportSpecifierFn;
|
|
94
|
+
/**
|
|
95
|
+
* Extract module edges for one file.
|
|
96
|
+
*
|
|
97
|
+
* Supported forms are static imports (including side-effect imports), type-only
|
|
98
|
+
* imports, `export ... from`, dynamic `import()` and `require()`. Files with a
|
|
99
|
+
* non-JS/TS extension are still read and fingerprinted but produce an empty
|
|
100
|
+
* edge list. `importedBy` is left empty for the service/graph layer to fill.
|
|
101
|
+
*
|
|
102
|
+
* @param sandbox - Root-confined path resolver.
|
|
103
|
+
* @param path - Root-relative file path.
|
|
104
|
+
* @returns Import report for the file.
|
|
105
|
+
*/
|
|
106
|
+
export declare const extractImports: ExtractImportsFn;
|
|
107
|
+
/**
|
|
108
|
+
* Build the reverse edge list for one target from a set of candidate files.
|
|
109
|
+
*
|
|
110
|
+
* Candidates that cannot be read (missing, binary, over quota) are skipped
|
|
111
|
+
* rather than failing the whole reverse lookup: one unreadable file must not
|
|
112
|
+
* make "who imports this?" unavailable. Duplicate edges are removed while
|
|
113
|
+
* preserving candidate order.
|
|
114
|
+
*
|
|
115
|
+
* @param sandbox - Root-confined path resolver.
|
|
116
|
+
* @param target - Root-relative target file.
|
|
117
|
+
* @param candidates - Root-relative files to inspect.
|
|
118
|
+
* @returns Edges that resolve to `target`.
|
|
119
|
+
*/
|
|
120
|
+
export declare const importedBy: ImportedByFn;
|
|
121
|
+
export {};
|