attention-manifest-protocol 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +341 -293
- package/CHANGELOG.zh-CN.md +41 -8
- package/README.md +250 -171
- package/README.zh-CN.md +251 -171
- package/lib/assignment/assign.d.ts +102 -0
- package/lib/assignment/assign.js +556 -0
- package/lib/assignment/binding.d.ts +103 -0
- package/lib/assignment/binding.js +575 -0
- package/lib/assignment/errors.d.ts +14 -0
- package/lib/assignment/errors.js +16 -0
- package/lib/assignment/guards.d.ts +18 -0
- package/lib/assignment/guards.js +28 -0
- package/lib/assignment/index.d.ts +10 -0
- package/lib/assignment/index.js +10 -0
- package/lib/assignment/types.d.ts +169 -0
- package/lib/assignment/types.js +1 -0
- package/lib/attention/budget.d.ts +1 -1
- package/lib/attention/budget.js +31 -9
- package/lib/bayes/engine.js +2 -1
- package/lib/bayes/reliability.js +25 -10
- package/lib/boundary/frame.d.ts +10 -4
- package/lib/boundary/frame.js +346 -109
- package/lib/boundary/kinds.d.ts +11 -0
- package/lib/boundary/kinds.js +33 -0
- package/lib/boundary/refTable.d.ts +19 -9
- package/lib/boundary/refTable.js +128 -30
- package/lib/boundary/toolCall.d.ts +22 -10
- package/lib/boundary/toolCall.js +798 -97
- package/lib/concept/conceptBudget.js +10 -1
- package/lib/concurrency/idempotency.d.ts +4 -3
- package/lib/concurrency/idempotency.js +57 -13
- package/lib/concurrency/retry.js +18 -3
- package/lib/context/agentContext.d.ts +13 -0
- package/lib/context/agentContext.js +14 -1
- package/lib/context/ast.d.ts +4 -1
- package/lib/context/ast.js +13 -3
- package/lib/context/contentStore.js +22 -9
- package/lib/context/contextBuilder.d.ts +457 -0
- package/lib/context/contextBuilder.js +1395 -0
- package/lib/context/contextPackage.d.ts +214 -0
- package/lib/context/contextPackage.js +191 -0
- package/lib/context/index.d.ts +14 -3
- package/lib/context/index.js +9 -1
- package/lib/context/relevance.d.ts +171 -0
- package/lib/context/relevance.js +250 -0
- package/lib/context/workspaceDiff.d.ts +105 -0
- package/lib/context/workspaceDiff.js +238 -0
- package/lib/context/workspaceService.d.ts +236 -1
- package/lib/context/workspaceService.js +1501 -73
- package/lib/cooperation/collaboration.d.ts +9 -0
- package/lib/cooperation/session.d.ts +4 -4
- package/lib/cooperation/session.js +3 -3
- package/lib/database/adapter/filesystemStore.d.ts +145 -0
- package/lib/database/adapter/filesystemStore.js +321 -0
- package/lib/database/adapter/index.d.ts +2 -0
- package/lib/database/adapter/index.js +2 -0
- package/lib/database/adapter/workspaceSessionStore.d.ts +118 -0
- package/lib/database/adapter/workspaceSessionStore.js +120 -0
- package/lib/database/entity/fileGraph.d.ts +53 -0
- package/lib/database/entity/fileGraph.js +15 -0
- package/lib/database/entity/fileTree.d.ts +76 -0
- package/lib/database/entity/fileTree.js +39 -0
- package/lib/database/entity/hook.d.ts +29 -0
- package/lib/database/entity/hook.js +18 -0
- package/lib/database/entity/index.d.ts +4 -0
- package/lib/database/entity/index.js +4 -0
- package/lib/database/entity/workspaceSession.d.ts +53 -0
- package/lib/database/entity/workspaceSession.js +28 -0
- package/lib/database/repository/fileAnnotationRepository.d.ts +75 -0
- package/lib/database/repository/fileAnnotationRepository.js +109 -0
- package/lib/database/repository/fileGraphRepository.d.ts +188 -0
- package/lib/database/repository/fileGraphRepository.js +648 -0
- package/lib/database/repository/fileNodeRepository.d.ts +116 -0
- package/lib/database/repository/fileNodeRepository.js +263 -0
- package/lib/database/repository/fileOutlineRepository.d.ts +40 -0
- package/lib/database/repository/fileOutlineRepository.js +104 -0
- package/lib/database/repository/fileWriteRepository.d.ts +41 -0
- package/lib/database/repository/fileWriteRepository.js +93 -0
- package/lib/database/repository/hookRepository.d.ts +67 -0
- package/lib/database/repository/hookRepository.js +150 -0
- package/lib/database/repository/index.d.ts +7 -0
- package/lib/database/repository/index.js +7 -0
- package/lib/database/repository/workspaceSessionRepository.d.ts +134 -0
- package/lib/database/repository/workspaceSessionRepository.js +327 -0
- package/lib/database/service/database.d.ts +14 -0
- package/lib/database/service/database.js +21 -0
- package/lib/database/sql/schema.js +187 -0
- package/lib/database/store/database.js +6 -1
- package/lib/delegate/team.d.ts +5 -0
- package/lib/delegate/team.js +83 -20
- package/lib/discover/classify.d.ts +20 -0
- package/lib/discover/classify.js +85 -0
- package/lib/discover/host.d.ts +20 -0
- package/lib/discover/host.js +89 -0
- package/lib/discover/index.d.ts +11 -0
- package/lib/discover/index.js +11 -0
- package/lib/discover/kinds.d.ts +14 -0
- package/lib/discover/kinds.js +23 -0
- package/lib/discover/tree.d.ts +7 -0
- package/lib/discover/tree.js +432 -0
- package/lib/discover/types.d.ts +115 -0
- package/lib/discover/types.js +1 -0
- package/lib/error/boundaryRejection.d.ts +1 -1
- package/lib/evaluation/agreement.js +2 -2
- package/lib/execution/handles.js +6 -0
- package/lib/execution/pin.js +2 -2
- package/lib/file/cfb.d.ts +56 -0
- package/lib/file/cfb.js +396 -0
- package/lib/file/dependency.d.ts +151 -0
- package/lib/file/dependency.js +568 -0
- package/lib/file/directory.d.ts +34 -0
- package/lib/file/directory.js +141 -0
- package/lib/file/errors.d.ts +20 -0
- package/lib/file/errors.js +18 -0
- package/lib/file/exportGraph.d.ts +31 -0
- package/lib/file/exportGraph.js +554 -0
- package/lib/file/file.d.ts +40 -0
- package/lib/file/file.js +339 -0
- package/lib/file/importGraph.d.ts +121 -0
- package/lib/file/importGraph.js +1022 -0
- package/lib/file/index.d.ts +45 -0
- package/lib/file/index.js +30 -0
- package/lib/file/metadata.d.ts +66 -0
- package/lib/file/metadata.js +470 -0
- package/lib/file/path.d.ts +60 -0
- package/lib/file/path.js +259 -0
- package/lib/file/read.d.ts +168 -0
- package/lib/file/read.js +541 -0
- package/lib/file/runtime.d.ts +95 -0
- package/lib/file/runtime.js +150 -0
- package/lib/file/service.d.ts +227 -0
- package/lib/file/service.js +663 -0
- package/lib/file/syntaxTree.d.ts +7 -0
- package/lib/file/syntaxTree.js +38 -0
- package/lib/file/time.d.ts +38 -0
- package/lib/file/time.js +44 -0
- package/lib/file/tree.d.ts +53 -0
- package/lib/file/tree.js +417 -0
- package/lib/file/types.d.ts +371 -0
- package/lib/file/types.js +1 -0
- package/lib/file/write.d.ts +159 -0
- package/lib/file/write.js +1028 -0
- package/lib/file/zip.d.ts +35 -0
- package/lib/file/zip.js +349 -0
- package/lib/fingerprint/algorithm.d.ts +97 -0
- package/lib/fingerprint/algorithm.js +271 -0
- package/lib/fingerprint/bytes.d.ts +18 -0
- package/lib/fingerprint/bytes.js +31 -0
- package/lib/fingerprint/error.d.ts +73 -0
- package/lib/fingerprint/error.js +86 -0
- package/lib/fingerprint/file.d.ts +71 -0
- package/lib/fingerprint/file.js +254 -0
- package/lib/fingerprint/index.d.ts +37 -0
- package/lib/fingerprint/index.js +12 -0
- package/lib/fingerprint/json.d.ts +41 -0
- package/lib/fingerprint/json.js +94 -0
- package/lib/fingerprint/number.d.ts +32 -0
- package/lib/fingerprint/number.js +95 -0
- package/lib/fingerprint/policy.d.ts +54 -0
- package/lib/fingerprint/policy.js +50 -0
- package/lib/fingerprint/preimage.d.ts +84 -0
- package/lib/fingerprint/preimage.js +133 -0
- package/lib/fingerprint/raw.d.ts +26 -0
- package/lib/fingerprint/raw.js +45 -0
- package/lib/fingerprint/ref.d.ts +39 -0
- package/lib/fingerprint/ref.js +178 -0
- package/lib/fingerprint/text.d.ts +42 -0
- package/lib/fingerprint/text.js +155 -0
- package/lib/fingerprint/tree.d.ts +56 -0
- package/lib/fingerprint/tree.js +288 -0
- package/lib/fingerprint/verify.d.ts +20 -0
- package/lib/fingerprint/verify.js +99 -0
- package/lib/global/filesystem.d.ts +43 -0
- package/lib/global/filesystem.js +75 -0
- package/lib/global/index.d.ts +8 -0
- package/lib/global/index.js +8 -0
- package/lib/global/service.d.ts +51 -0
- package/lib/global/service.js +98 -0
- package/lib/governance/transport.js +18 -6
- package/lib/hook/ast.d.ts +29 -0
- package/lib/hook/ast.js +22 -0
- package/lib/hook/code.d.ts +55 -0
- package/lib/hook/code.js +47 -0
- package/lib/hook/dependency.d.ts +45 -0
- package/lib/hook/dependency.js +28 -0
- package/lib/hook/diff.d.ts +114 -0
- package/lib/hook/diff.js +327 -0
- package/lib/hook/exportation.d.ts +31 -0
- package/lib/hook/exportation.js +24 -0
- package/lib/hook/file.d.ts +44 -0
- package/lib/hook/file.js +154 -0
- package/lib/hook/importation.d.ts +33 -0
- package/lib/hook/importation.js +22 -0
- package/lib/hook/index.d.ts +30 -0
- package/lib/hook/index.js +23 -0
- package/lib/hook/outline.d.ts +35 -0
- package/lib/hook/outline.js +27 -0
- package/lib/hook/project.d.ts +65 -0
- package/lib/hook/project.js +217 -0
- package/lib/hook/types.d.ts +114 -0
- package/lib/hook/types.js +407 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +9 -0
- package/lib/lock/lease.js +28 -3
- package/lib/manifest/cardSign.d.ts +1 -1
- package/lib/manifest/cardSign.js +37 -7
- package/lib/manifest/federation.js +13 -6
- package/lib/manifest/trust.d.ts +2 -0
- package/lib/manifest/trust.js +27 -6
- package/lib/module/index.d.ts +4 -0
- package/lib/module/index.js +4 -0
- package/lib/module/mcp/client.js +21 -2
- package/lib/module/mcp/filesystemServer.d.ts +24 -0
- package/lib/module/mcp/filesystemServer.js +102 -0
- package/lib/module/mcp/http.js +32 -19
- package/lib/module/mcp/workspaceServer.js +20 -3
- package/lib/module/tool/filesystemExecutor.d.ts +18 -0
- package/lib/module/tool/filesystemExecutor.js +49 -0
- package/lib/module/tool/globalExecutor.d.ts +17 -0
- package/lib/module/tool/globalExecutor.js +39 -0
- package/lib/module/tool/globalFilesystemExecutor.d.ts +18 -0
- package/lib/module/tool/globalFilesystemExecutor.js +49 -0
- package/lib/module/tool/workspaceExecutor.d.ts +9 -0
- package/lib/module/tool/workspaceExecutor.js +16 -3
- package/lib/naming/aliases.d.ts +48 -0
- package/lib/naming/aliases.js +79 -0
- package/lib/naming/catalog.d.ts +117 -0
- package/lib/naming/catalog.js +108 -0
- package/lib/naming/grammar.d.ts +67 -0
- package/lib/naming/grammar.js +212 -0
- package/lib/naming/ids.d.ts +157 -0
- package/lib/naming/ids.js +119 -0
- package/lib/naming/index.d.ts +13 -0
- package/lib/naming/index.js +13 -0
- package/lib/outline/index.d.ts +9 -0
- package/lib/outline/index.js +8 -0
- package/lib/outline/office.d.ts +160 -0
- package/lib/outline/office.js +2375 -0
- package/lib/outline/officeBridge.d.ts +32 -0
- package/lib/outline/officeBridge.js +27 -0
- package/lib/outline/outline.d.ts +159 -0
- package/lib/outline/outline.js +837 -0
- package/lib/outline/outlineIndex.d.ts +97 -0
- package/lib/outline/outlineIndex.js +325 -0
- package/lib/outline/outlineKeywords.d.ts +59 -0
- package/lib/outline/outlineKeywords.js +143 -0
- package/lib/outline/outlineStrategies.d.ts +414 -0
- package/lib/outline/outlineStrategies.js +8324 -0
- package/lib/outline/reactOutline.d.ts +37 -0
- package/lib/outline/reactOutline.js +1070 -0
- package/lib/outline/shellOutline.d.ts +65 -0
- package/lib/outline/shellOutline.js +873 -0
- package/lib/outline/sqlOutline.d.ts +170 -0
- package/lib/outline/sqlOutline.js +1536 -0
- package/lib/outline/strategy.d.ts +46 -0
- package/lib/outline/strategy.js +1 -0
- package/lib/outline/types.d.ts +95 -0
- package/lib/outline/types.js +1 -0
- package/lib/outline/visualBasicOutline.d.ts +27 -0
- package/lib/outline/visualBasicOutline.js +750 -0
- package/lib/protocol/filesystem.d.ts +55 -0
- package/lib/protocol/filesystem.js +105 -0
- package/lib/protocol/global.d.ts +42 -0
- package/lib/protocol/global.js +63 -0
- package/lib/protocol/globalFilesystem.d.ts +40 -0
- package/lib/protocol/globalFilesystem.js +59 -0
- package/lib/protocol/index.d.ts +4 -0
- package/lib/protocol/index.js +4 -0
- package/lib/protocol/protocol.d.ts +4 -0
- package/lib/protocol/wire.js +5 -2
- package/lib/protocol/workspace.d.ts +305 -0
- package/lib/protocol/workspace.js +258 -0
- package/lib/receipt/receipt.d.ts +8 -0
- package/lib/registry/content.js +9 -3
- package/lib/runtime/kernelRuntime.js +9 -1
- package/lib/scenario/scenario.js +5 -4
- package/lib/semantic/canonical.d.ts +61 -0
- package/lib/semantic/canonical.js +135 -8
- package/lib/semantic/jsonValue.d.ts +31 -0
- package/lib/semantic/jsonValue.js +122 -0
- package/lib/semantic/sha256.js +3 -0
- package/lib/semantic/time.d.ts +14 -0
- package/lib/semantic/time.js +56 -0
- package/lib/session/context.d.ts +76 -0
- package/lib/session/context.js +419 -0
- package/lib/session/errors.d.ts +24 -0
- package/lib/session/errors.js +22 -0
- package/lib/session/identity.d.ts +24 -0
- package/lib/session/identity.js +56 -0
- package/lib/session/index.d.ts +14 -0
- package/lib/session/index.js +12 -0
- package/lib/session/registry.d.ts +130 -0
- package/lib/session/registry.js +908 -0
- package/lib/session/types.d.ts +227 -0
- package/lib/session/types.js +14 -0
- package/lib/structure/index.d.ts +1 -0
- package/lib/structure/index.js +1 -0
- package/lib/structure/trie.d.ts +88 -0
- package/lib/structure/trie.js +183 -0
- package/lib/syntax/byteIndex.d.ts +44 -0
- package/lib/syntax/byteIndex.js +148 -0
- package/lib/syntax/charset.d.ts +88 -0
- package/lib/syntax/charset.js +276 -0
- package/lib/syntax/index.d.ts +6 -0
- package/lib/syntax/index.js +5 -0
- package/lib/syntax/syntaxRegistry.d.ts +150 -0
- package/lib/syntax/syntaxRegistry.js +314 -0
- package/lib/syntax/syntaxTree.d.ts +106 -0
- package/lib/syntax/syntaxTree.js +668 -0
- package/lib/syntax/types.d.ts +15 -0
- package/lib/syntax/types.js +1 -0
- package/lib/types/common.d.ts +1 -1
- package/package.json +72 -193
- package/.editorconfig +0 -12
- package/.prettierignore +0 -17
- package/MCP-Token/347/250/216/344/270/216/344/270/213/344/270/200/344/273/243/345/267/245/345/205/267/345/215/217/350/256/256.html +0 -1763
- package/docs/annotation-campaign-A.csv +0 -54
- package/docs/annotation-campaign-B.csv +0 -54
- package/docs/annotation-campaign.csv +0 -54
- package/docs/eval/annotations-A.jsonl +0 -16
- package/docs/eval/annotations.json +0 -122
- package/docs/eval/recorded-labels.json +0 -12
- package/docs/eval/replay-cases.json +0 -14
- package/docs/eval/replay-labels-b.json +0 -14
- package/docs/examples/attention-request.json +0 -16
- package/docs/examples/checkpoint.json +0 -15
- package/docs/examples/claim.json +0 -66
- package/docs/examples/collaboration.json +0 -66
- package/docs/examples/concept-checkpoint.json +0 -15
- package/docs/examples/concept-prune-plan.json +0 -45
- package/docs/examples/federation.json +0 -126
- package/docs/examples/frame-chain.json +0 -77
- package/docs/examples/ledger-snapshot.json +0 -108
- package/docs/examples/manifest.json +0 -77
- package/docs/examples/message.json +0 -19
- package/docs/examples/other-model.json +0 -45
- package/docs/examples/plan.json +0 -50
- package/docs/examples/prune-plan.json +0 -48
- package/docs/examples/receipt.json +0 -22
- package/docs/examples/runtime-run.json +0 -573
- package/docs/examples/team.json +0 -66
- package/docs/examples/verb-note.json +0 -11
- package/docs/probes/bayes-scores.json +0 -1452
- package/docs/probes/calibration-imported.json +0 -141
- package/docs/probes/context-ast-deepseek.json +0 -1577
- package/docs/probes/deepseek-probe.json +0 -917
- package/docs/probes/eval-recorded-replay.json +0 -597
- package/docs/probes/eval-replay.json +0 -124
- package/docs/probes/eval-summary.json +0 -42
- package/docs/probes/runtime-eval.json +0 -4230
- package/docs/schemas/collaboration.schema.json +0 -73
- package/docs/schemas/common.schema.json +0 -125
- package/docs/schemas/compaction.schema.json +0 -121
- package/docs/schemas/concept-compaction.schema.json +0 -73
- package/docs/schemas/concept.schema.json +0 -97
- package/docs/schemas/epistemic.schema.json +0 -178
- package/docs/schemas/federation.schema.json +0 -66
- package/docs/schemas/frame.schema.json +0 -86
- package/docs/schemas/ledger-snapshot.schema.json +0 -30
- package/docs/schemas/manifest.schema.json +0 -169
- package/docs/schemas/message.schema.json +0 -41
- package/docs/schemas/plan.schema.json +0 -189
- package/docs/schemas/receipt.schema.json +0 -45
- package/docs/schemas/social.schema.json +0 -153
- package/docs/schemas/team.schema.json +0 -56
- package/docs/schemas/verb.schema.json +0 -120
- package/eslint.config.mts +0 -96
- package/index.html +0 -13
- package/lib/context/workspaceProtocol.d.ts +0 -30
- package/lib/context/workspaceProtocol.js +0 -49
- package/prettier.config.mts +0 -37
- package/public/favicon.svg +0 -1
- package/public/icons.svg +0 -24
- package/src/attention/attention.ts +0 -347
- package/src/attention/budget.ts +0 -72
- package/src/attention/cognition.ts +0 -519
- package/src/attention/index.ts +0 -8
- package/src/attention/interrupts.ts +0 -228
- package/src/attention/resource.ts +0 -316
- package/src/attention/social.ts +0 -217
- package/src/attention/socialTypes.ts +0 -115
- package/src/authz/authz.ts +0 -305
- package/src/authz/index.ts +0 -1
- package/src/bayes/calibration.ts +0 -204
- package/src/bayes/calibrationRegistry.ts +0 -111
- package/src/bayes/calibrationSelection.ts +0 -154
- package/src/bayes/engine.ts +0 -532
- package/src/bayes/index.ts +0 -6
- package/src/bayes/reliability.ts +0 -62
- package/src/bayes/scopedPriors.ts +0 -88
- package/src/boundary/frame.ts +0 -322
- package/src/boundary/ids.ts +0 -14
- package/src/boundary/index.ts +0 -12
- package/src/boundary/refTable.ts +0 -125
- package/src/boundary/toolCall.ts +0 -212
- package/src/concept/concept.ts +0 -75
- package/src/concept/conceptBudget.ts +0 -346
- package/src/concept/conceptBudgetTypes.ts +0 -79
- package/src/concept/index.ts +0 -3
- package/src/concurrency/idempotency.ts +0 -41
- package/src/concurrency/index.ts +0 -5
- package/src/concurrency/mutex.ts +0 -26
- package/src/concurrency/namedLocks.ts +0 -35
- package/src/concurrency/retry.ts +0 -50
- package/src/concurrency/worker.ts +0 -128
- package/src/context/agentContext.ts +0 -308
- package/src/context/ast.ts +0 -499
- package/src/context/contentStore.ts +0 -75
- package/src/context/context.ts +0 -65
- package/src/context/contextIndex.ts +0 -85
- package/src/context/document.ts +0 -137
- package/src/context/fileStorePath.ts +0 -14
- package/src/context/index.ts +0 -43
- package/src/context/lifecycle.ts +0 -221
- package/src/context/projections.ts +0 -151
- package/src/context/workspace.ts +0 -422
- package/src/context/workspaceProtocol.ts +0 -112
- package/src/context/workspaceService.ts +0 -423
- package/src/cooperation/board.ts +0 -104
- package/src/cooperation/collaboration.ts +0 -60
- package/src/cooperation/index.ts +0 -6
- package/src/cooperation/merge.ts +0 -190
- package/src/cooperation/metrics.ts +0 -57
- package/src/cooperation/session.ts +0 -131
- package/src/cooperation/unified.ts +0 -56
- package/src/counter.ts +0 -9
- package/src/database/adapter/adapters.ts +0 -35
- package/src/database/adapter/index.ts +0 -4
- package/src/database/adapter/runtimeSink.ts +0 -74
- package/src/database/adapter/sessionStore.ts +0 -32
- package/src/database/adapter/turnStore.ts +0 -23
- package/src/database/entity/agent.ts +0 -199
- package/src/database/entity/entity.ts +0 -1046
- package/src/database/entity/handle.ts +0 -79
- package/src/database/entity/index.ts +0 -32
- package/src/database/entity/message.ts +0 -74
- package/src/database/entity/meta.ts +0 -11
- package/src/database/entity/object.ts +0 -42
- package/src/database/entity/outbox.ts +0 -15
- package/src/database/entity/process.ts +0 -65
- package/src/database/entity/registry.ts +0 -155
- package/src/database/entity/runtimeApproval.ts +0 -30
- package/src/database/entity/runtimeSession.ts +0 -13
- package/src/database/entity/runtimeTurn.ts +0 -15
- package/src/database/entity/thread.ts +0 -85
- package/src/database/entity/window.ts +0 -85
- package/src/database/entity/worker.ts +0 -90
- package/src/database/index.ts +0 -6
- package/src/database/repository/addressSpaceRepository.ts +0 -72
- package/src/database/repository/agentRepository.ts +0 -460
- package/src/database/repository/base.ts +0 -41
- package/src/database/repository/executionRepository.ts +0 -477
- package/src/database/repository/handleRepository.ts +0 -64
- package/src/database/repository/index.ts +0 -20
- package/src/database/repository/messageRepository.ts +0 -52
- package/src/database/repository/objectRepository.ts +0 -69
- package/src/database/repository/outboxRepository.ts +0 -63
- package/src/database/repository/processRepository.ts +0 -58
- package/src/database/repository/registryRepository.ts +0 -119
- package/src/database/repository/repository.ts +0 -491
- package/src/database/repository/runtimeApprovalRepository.ts +0 -44
- package/src/database/repository/runtimeSessionRepository.ts +0 -27
- package/src/database/repository/runtimeTurnRepository.ts +0 -39
- package/src/database/repository/socialRepository.ts +0 -185
- package/src/database/repository/threadRepository.ts +0 -57
- package/src/database/repository/windowRepository.ts +0 -88
- package/src/database/repository/workerRepository.ts +0 -69
- package/src/database/service/database.ts +0 -90
- package/src/database/service/handleService.ts +0 -48
- package/src/database/service/index.ts +0 -16
- package/src/database/service/messageService.ts +0 -61
- package/src/database/service/objectService.ts +0 -59
- package/src/database/service/processService.ts +0 -61
- package/src/database/service/registryServices.ts +0 -88
- package/src/database/service/service.ts +0 -183
- package/src/database/service/stepService.ts +0 -53
- package/src/database/service/threadService.ts +0 -65
- package/src/database/service/windowService.ts +0 -30
- package/src/database/service/workerService.ts +0 -57
- package/src/database/sql/index.ts +0 -3
- package/src/database/sql/schema.ts +0 -418
- package/src/database/sql/sql.ts +0 -543
- package/src/database/store/database.ts +0 -210
- package/src/database/store/index.ts +0 -3
- package/src/database/store/store.ts +0 -266
- package/src/delegate/index.ts +0 -2
- package/src/delegate/team.ts +0 -268
- package/src/delegate/teamTypes.ts +0 -47
- package/src/diagnosis/checklist.ts +0 -74
- package/src/diagnosis/context.ts +0 -93
- package/src/diagnosis/frame.ts +0 -256
- package/src/diagnosis/index.ts +0 -5
- package/src/diagnosis/router.ts +0 -72
- package/src/diagnosis/types.ts +0 -89
- package/src/error/agentError.ts +0 -16
- package/src/error/ampError.ts +0 -20
- package/src/error/authzError.ts +0 -14
- package/src/error/boundaryRejection.ts +0 -20
- package/src/error/index.ts +0 -7
- package/src/error/kernelError.ts +0 -27
- package/src/error/mailboxError.ts +0 -9
- package/src/error/windowError.ts +0 -12
- package/src/evaluation/agreement.ts +0 -96
- package/src/evaluation/index.ts +0 -2
- package/src/evaluation/labels.ts +0 -241
- package/src/evidence/evidenceGraph.ts +0 -205
- package/src/evidence/index.ts +0 -4
- package/src/evidence/revalidation.ts +0 -191
- package/src/execution/exec.ts +0 -408
- package/src/execution/handles.ts +0 -65
- package/src/execution/index.ts +0 -3
- package/src/execution/pin.ts +0 -154
- package/src/frame/frame.ts +0 -70
- package/src/frame/index.ts +0 -1
- package/src/goal/goal.ts +0 -43
- package/src/goal/index.ts +0 -2
- package/src/goal/plan.ts +0 -196
- package/src/governance/attentionManifest.ts +0 -802
- package/src/governance/audit.ts +0 -362
- package/src/governance/budget.ts +0 -628
- package/src/governance/context.ts +0 -356
- package/src/governance/control.ts +0 -159
- package/src/governance/cooperation.ts +0 -479
- package/src/governance/credential.ts +0 -359
- package/src/governance/httpServer.ts +0 -99
- package/src/governance/index.ts +0 -32
- package/src/governance/legal.ts +0 -574
- package/src/governance/matrix.ts +0 -460
- package/src/governance/perspectives.ts +0 -406
- package/src/governance/signing.ts +0 -407
- package/src/governance/store.ts +0 -125
- package/src/governance/switching.ts +0 -459
- package/src/governance/toolPolicy.ts +0 -80
- package/src/governance/transport.ts +0 -204
- package/src/governance/types.ts +0 -380
- package/src/governance/workflow.ts +0 -743
- package/src/index.ts +0 -11
- package/src/interaction/index.ts +0 -1
- package/src/interaction/interaction.ts +0 -391
- package/src/ipc/index.ts +0 -4
- package/src/ipc/mailbox.ts +0 -132
- package/src/ipc/memorySocialStore.ts +0 -93
- package/src/ipc/social.ts +0 -93
- package/src/kernel/index.ts +0 -14
- package/src/kernel/scheduler.ts +0 -498
- package/src/ledger/checkpoint.ts +0 -304
- package/src/ledger/index.ts +0 -4
- package/src/ledger/ledger.ts +0 -31
- package/src/ledger/persistence.ts +0 -159
- package/src/ledger/share.ts +0 -80
- package/src/lock/index.ts +0 -2
- package/src/lock/lease.ts +0 -74
- package/src/main.ts +0 -199
- package/src/manifest/agentCard.ts +0 -72
- package/src/manifest/cardSign.ts +0 -87
- package/src/manifest/federation.ts +0 -237
- package/src/manifest/federationTypes.ts +0 -55
- package/src/manifest/index.ts +0 -8
- package/src/manifest/keys.ts +0 -643
- package/src/manifest/manifest.ts +0 -114
- package/src/manifest/sign.ts +0 -134
- package/src/manifest/trust.ts +0 -146
- package/src/mission/index.ts +0 -2
- package/src/mission/missionQueue.ts +0 -75
- package/src/module/index.ts +0 -9
- package/src/module/llm/deepseek.ts +0 -214
- package/src/module/llm/llm.ts +0 -84
- package/src/module/mcp/client.ts +0 -110
- package/src/module/mcp/http.ts +0 -102
- package/src/module/mcp/protocol.ts +0 -77
- package/src/module/mcp/server.ts +0 -148
- package/src/module/mcp/transport.ts +0 -30
- package/src/module/mcp/workspaceServer.ts +0 -111
- package/src/module/sandbox/sandbox.ts +0 -29
- package/src/module/tool/mcpExecutor.ts +0 -54
- package/src/module/tool/policy.ts +0 -52
- package/src/module/tool/redact.ts +0 -29
- package/src/module/tool/tool.ts +0 -53
- package/src/module/tool/workspaceExecutor.ts +0 -35
- package/src/policy/guard.ts +0 -240
- package/src/policy/index.ts +0 -2
- package/src/policy/policy.ts +0 -561
- package/src/process/agent.ts +0 -341
- package/src/process/agentService.ts +0 -236
- package/src/process/agentStore.ts +0 -378
- package/src/process/executionStore.ts +0 -151
- package/src/process/index.ts +0 -5
- package/src/process/process.ts +0 -240
- package/src/process/transitions.ts +0 -19
- package/src/progress/index.ts +0 -2
- package/src/progress/progress.ts +0 -85
- package/src/protocol/a2a.ts +0 -120
- package/src/protocol/channel.ts +0 -44
- package/src/protocol/envelope.ts +0 -655
- package/src/protocol/httpChannel.ts +0 -87
- package/src/protocol/index.ts +0 -6
- package/src/protocol/protocol.ts +0 -138
- package/src/protocol/wire.ts +0 -60
- package/src/receipt/index.ts +0 -1
- package/src/receipt/receipt.ts +0 -47
- package/src/registry/content.ts +0 -69
- package/src/registry/index.ts +0 -23
- package/src/registry/registry.ts +0 -599
- package/src/runtime/action.ts +0 -87
- package/src/runtime/behavior.ts +0 -330
- package/src/runtime/behaviorTuning.ts +0 -163
- package/src/runtime/cognitiveRuntime.ts +0 -703
- package/src/runtime/escalation.ts +0 -35
- package/src/runtime/governedTask.ts +0 -233
- package/src/runtime/index.ts +0 -15
- package/src/runtime/kernelRuntime.ts +0 -144
- package/src/runtime/operation.ts +0 -35
- package/src/runtime/replay.ts +0 -71
- package/src/runtime/routing.ts +0 -58
- package/src/runtime/safety.ts +0 -48
- package/src/runtime/session.ts +0 -341
- package/src/runtime/sessionStore.ts +0 -43
- package/src/runtime/telemetry.ts +0 -55
- package/src/runtime/turnStore.ts +0 -30
- package/src/scenario/index.ts +0 -1
- package/src/scenario/scenario.ts +0 -299
- package/src/semantic/canonical.ts +0 -24
- package/src/semantic/index.ts +0 -2
- package/src/semantic/sha256.ts +0 -82
- package/src/storage/appendLog.ts +0 -372
- package/src/storage/fileAppendSink.ts +0 -40
- package/src/storage/index.ts +0 -2
- package/src/store/bindCache.ts +0 -22
- package/src/store/cache.ts +0 -191
- package/src/store/context.ts +0 -31
- package/src/store/handleStore.ts +0 -31
- package/src/store/index.ts +0 -9
- package/src/store/messageStore.ts +0 -31
- package/src/store/objectStore.ts +0 -31
- package/src/store/processStore.ts +0 -31
- package/src/store/threadStore.ts +0 -31
- package/src/store/windowStore.ts +0 -31
- package/src/structure/abstractSyntaxTree.ts +0 -493
- package/src/structure/avlTree.ts +0 -408
- package/src/structure/binarySearchTree.ts +0 -352
- package/src/structure/binaryTree.ts +0 -525
- package/src/structure/bloomFilter.ts +0 -231
- package/src/structure/compare.ts +0 -110
- package/src/structure/cuckooFilter.ts +0 -337
- package/src/structure/deque.ts +0 -223
- package/src/structure/filterKey.ts +0 -36
- package/src/structure/hash.ts +0 -279
- package/src/structure/heap.ts +0 -268
- package/src/structure/index.ts +0 -20
- package/src/structure/iterator.ts +0 -22
- package/src/structure/lru.ts +0 -619
- package/src/structure/ordered.ts +0 -399
- package/src/structure/priority.ts +0 -915
- package/src/structure/queue.ts +0 -168
- package/src/structure/redBlackTree.ts +0 -680
- package/src/structure/segmentTree.ts +0 -248
- package/src/structure/stack.ts +0 -118
- package/src/structure/unordered.ts +0 -407
- package/src/style.css +0 -278
- package/src/thread/index.ts +0 -2
- package/src/thread/thread.ts +0 -176
- package/src/thread/transitions.ts +0 -17
- package/src/types/common.ts +0 -119
- package/src/types/index.ts +0 -23
- package/src/warrant/epistemic.ts +0 -154
- package/src/warrant/index.ts +0 -3
- package/src/warrant/inquiry.ts +0 -166
- package/src/warrant/warrant.ts +0 -179
- package/src/window/compaction.ts +0 -403
- package/src/window/compactionTypes.ts +0 -119
- package/src/window/index.ts +0 -7
- package/src/window/page.ts +0 -18
- package/src/window/window.ts +0 -244
- package/tools/_helpers.ts +0 -34
- package/tools/a2a-check.ts +0 -110
- package/tools/a2a-flow-check.ts +0 -78
- package/tools/agent-card-check.ts +0 -76
- package/tools/agent-check.ts +0 -236
- package/tools/agent-store-check.ts +0 -153
- package/tools/agreement-check.ts +0 -27
- package/tools/annotation-server-check.ts +0 -48
- package/tools/annotation-server.ts +0 -230
- package/tools/annotation-status.ts +0 -65
- package/tools/approval-access-check.ts +0 -66
- package/tools/arch-check.ts +0 -72
- package/tools/attention-core-check.ts +0 -48
- package/tools/attention-resource-check.ts +0 -169
- package/tools/audit-check.ts +0 -207
- package/tools/authority-check.ts +0 -124
- package/tools/authz-check.ts +0 -138
- package/tools/bayes-check.ts +0 -162
- package/tools/bayes-probe.ts +0 -154
- package/tools/behavior-tuning-check.ts +0 -53
- package/tools/board-check.ts +0 -87
- package/tools/boundary-check.ts +0 -199
- package/tools/bundle-trust-check.ts +0 -96
- package/tools/calibrate-imported.ts +0 -108
- package/tools/calibration-check.ts +0 -44
- package/tools/calibration-registry-check.ts +0 -40
- package/tools/calibration-sim.ts +0 -40
- package/tools/card-sign-check.ts +0 -71
- package/tools/card-trust-check.ts +0 -78
- package/tools/channel-check.ts +0 -86
- package/tools/checkpoint-check.ts +0 -620
- package/tools/cleanup-style-configs.ts +0 -29
- package/tools/cognition-check.ts +0 -648
- package/tools/cognitive-runtime-check.ts +0 -609
- package/tools/collaboration-demo.ts +0 -78
- package/tools/compaction-check.ts +0 -266
- package/tools/concept-check.ts +0 -260
- package/tools/concurrency-check.ts +0 -242
- package/tools/conformance-runtime.ts +0 -389
- package/tools/conformance.ts +0 -651
- package/tools/context-ast-check.ts +0 -90
- package/tools/context-ast-deepseek.ts +0 -242
- package/tools/context-graph-bench.ts +0 -50
- package/tools/context-graph-check.ts +0 -229
- package/tools/context-index-check.ts +0 -48
- package/tools/context-lifecycle-check.ts +0 -69
- package/tools/context-projection-check.ts +0 -73
- package/tools/context-scope-check.ts +0 -134
- package/tools/context-storage-check.ts +0 -113
- package/tools/cooperation-check.ts +0 -517
- package/tools/cooperation-http-check.ts +0 -125
- package/tools/deepseek-llm-check.ts +0 -147
- package/tools/deepseek-probe.ts +0 -494
- package/tools/diagnosis-check.ts +0 -109
- package/tools/diagnosis-router-check.ts +0 -50
- package/tools/document-context-check.ts +0 -237
- package/tools/envelope-check.ts +0 -659
- package/tools/eslint-rules/index.ts +0 -26
- package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
- package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
- package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
- package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
- package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
- package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
- package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
- package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
- package/tools/eslint-rules/rules/variable-naming.ts +0 -175
- package/tools/eval-recorded-replay.ts +0 -215
- package/tools/eval-replay.ts +0 -139
- package/tools/eval-summary.ts +0 -136
- package/tools/evidence-revalidation-check.ts +0 -235
- package/tools/exec-check.ts +0 -217
- package/tools/federation-check.ts +0 -166
- package/tools/federation-demo.ts +0 -45
- package/tools/filter-check.ts +0 -243
- package/tools/governance-check.ts +0 -680
- package/tools/governance-store-check.ts +0 -131
- package/tools/governed-task-check.ts +0 -227
- package/tools/guard-check.ts +0 -122
- package/tools/http-channel-check.ts +0 -125
- package/tools/import-campaign.ts +0 -28
- package/tools/inquiry-check.ts +0 -126
- package/tools/interaction-check.ts +0 -171
- package/tools/interrupts-check.ts +0 -173
- package/tools/ipc-check.ts +0 -170
- package/tools/kernel-async-check.ts +0 -136
- package/tools/kernel-check.ts +0 -369
- package/tools/kernel-runtime-check.ts +0 -276
- package/tools/keys-check.ts +0 -559
- package/tools/label-audit.ts +0 -70
- package/tools/labels-workflow-check.ts +0 -49
- package/tools/linear-structure-check.ts +0 -524
- package/tools/live-exec.ts +0 -62
- package/tools/live-governance-eval.ts +0 -813
- package/tools/live-legacy.ts +0 -50
- package/tools/lru-check.ts +0 -182
- package/tools/make-annotation-campaign.ts +0 -57
- package/tools/mcp-executor-check.ts +0 -33
- package/tools/merge-annotations.ts +0 -32
- package/tools/merge-check.ts +0 -98
- package/tools/metrics-check.ts +0 -84
- package/tools/net-probe.ts +0 -107
- package/tools/oauth-probe.ts +0 -117
- package/tools/outbox-check.ts +0 -50
- package/tools/persistence-check.ts +0 -144
- package/tools/pin-check.ts +0 -116
- package/tools/platform-check.ts +0 -281
- package/tools/policy-check.ts +0 -514
- package/tools/prettier-plugin/index.mts +0 -84
- package/tools/priority-check.ts +0 -627
- package/tools/probe-context7.ts +0 -63
- package/tools/registry-check.ts +0 -252
- package/tools/reliability-check.ts +0 -25
- package/tools/retry-check.ts +0 -85
- package/tools/rewrite-declaration-extensions.ts +0 -98
- package/tools/runtime-check.ts +0 -165
- package/tools/runtime-deepseek-check.ts +0 -85
- package/tools/runtime-eval.ts +0 -358
- package/tools/scenario-check.ts +0 -161
- package/tools/scenario-incident.ts +0 -162
- package/tools/scoped-priors-check.ts +0 -35
- package/tools/scoped-priors-pooling.ts +0 -34
- package/tools/segment-ast-check.ts +0 -649
- package/tools/session-check.ts +0 -196
- package/tools/session-store-check.ts +0 -73
- package/tools/share-check.ts +0 -88
- package/tools/sign-check.ts +0 -95
- package/tools/signing-check.ts +0 -275
- package/tools/snapshot-demo.ts +0 -65
- package/tools/social-check.ts +0 -146
- package/tools/structure-compare-check.ts +0 -95
- package/tools/support/documentScanner.ts +0 -577
- package/tools/support/texScanner.ts +0 -631
- package/tools/support/workspaceScanner.ts +0 -476
- package/tools/team-check.ts +0 -163
- package/tools/team-demo.ts +0 -36
- package/tools/telemetry-check.ts +0 -44
- package/tools/tex-context-check.ts +0 -263
- package/tools/tool-gate-check.ts +0 -98
- package/tools/tree-structure-check.ts +0 -786
- package/tools/trust-flow-check.ts +0 -158
- package/tools/turn-store-check.ts +0 -57
- package/tools/unified-check.ts +0 -83
- package/tools/validate.ts +0 -309
- package/tools/wire-check.ts +0 -96
- package/tools/workspace-agent-check.ts +0 -486
- package/tools/workspace-agent-demo.ts +0 -62
- package/tools/workspace-agent-server.ts +0 -101
- package/tools/workspace-context-check.ts +0 -331
- package/tools/workspace-context.ts +0 -131
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -24
- package/tsconfig.tools.json +0 -31
- package/viz/context-ast.json +0 -1577
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public filesystem surface: tree nodes, reads/writes, outlines and module
|
|
3
|
+
* graphs. Every export is read-only except `writeFile`/`ensureDirectory`;
|
|
4
|
+
* mutation authority is granted by a `SessionRoot` and enforced by
|
|
5
|
+
* `PathSandbox`.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./types.js";
|
|
8
|
+
export { FilesystemError, fail, isFilesystemError } from "./errors.js";
|
|
9
|
+
export { detectCharset, decodeText, encodeText, countLines, LineIndex } from "../syntax/charset.js";
|
|
10
|
+
export type { DetectedCharset } from "../syntax/charset.js";
|
|
11
|
+
export { ByteLineIndex } from "../syntax/byteIndex.js";
|
|
12
|
+
export { formatNodeTime, formatIsoTime, parseNodeTime, creationTime } from "./time.js";
|
|
13
|
+
export { PathSandbox } from "./path.js";
|
|
14
|
+
export type { PathSandboxOptions } from "./path.js";
|
|
15
|
+
export { buildFileNode, wireNode, wireTree, verifyFingerprint } from "./file.js";
|
|
16
|
+
export { buildDirectoryNode, listDirectory, compareTreeNodes } from "./directory.js";
|
|
17
|
+
export { buildTree, WorkspaceTree } from "./tree.js";
|
|
18
|
+
export { readPage, ReadCache, byteRangeFingerprint, locateLineSpan, useByte as useByteRead, useLine as useLineRead } from "./read.js";
|
|
19
|
+
export type { ReadOptions, ByteUse, ByteUseRequest, LineEnding, LineSpan, LineUse, LineUseRequest } from "./read.js";
|
|
20
|
+
export { writeFile, ensureDirectory, WriteLocks, useByte as useByteWrite, useLine as useLineWrite } from "./write.js";
|
|
21
|
+
export type { BytePatchRequest, LinePatchRequest, PatchJournalEntry, WriteOptions, WritePatchOptions, WritePatchResult, } from "./write.js";
|
|
22
|
+
export { SessionRuntime } from "./runtime.js";
|
|
23
|
+
export type { AnnotationMap, ResolvedNode, SessionRuntimeOptions } from "./runtime.js";
|
|
24
|
+
export { FilesystemService, FilesystemSession, filesystemSessionSummary } from "./service.js";
|
|
25
|
+
export type { AstRequest, DependencyQuery, ExportRequest, FilesystemServiceLimits, FilesystemServiceOptions, ImportRequest, OutlineRequest, } from "./service.js";
|
|
26
|
+
export { buildOutline, OutlineRegistry, DefaultOutlineRegistry, OutlineStrategies, OutlineMaxFileBytes, OutlineMaxScanLines, OutlineDefaultMaxNodes, OutlineHardMaxNodes, OutlineDefaultMaxDepth, OutlineHardMaxDepth, createOutlineRegistry, outlineLanguage, outlineNodeFingerprint, } from "../outline/outline.js";
|
|
27
|
+
export type { FingerprintedOutlineNode, OutlineAnchor, OutlineMatchInput, OutlineOptions, OutlineParseInput, OutlineStrategy } from "../outline/outline.js";
|
|
28
|
+
export { DefaultOutlineKeywords, OutlineKeywordRegistry, createOutlineKeywordRegistry } from "../outline/outlineKeywords.js";
|
|
29
|
+
export type { OutlineKeywordCategory } from "../outline/outlineKeywords.js";
|
|
30
|
+
export { buildSyntaxTree } from "./syntaxTree.js";
|
|
31
|
+
export { DefaultSyntaxRegistry, SyntaxRegistry, buildSyntaxTreeFromText, createSyntaxRegistry, disposeSyntaxNode, syntaxLanguageOf, wireSyntaxTree, } from "../syntax/syntaxTree.js";
|
|
32
|
+
export type { SyntaxLanguage, SyntaxLanguageDefinition, SyntaxNode, SyntaxNodeKind, SyntaxNodeKindDefinition, SyntaxToken, SyntaxTokenKind, SyntaxTokenKindDefinition, SyntaxTree, SyntaxTreeOptions, WireSyntaxNode, WireSyntaxToken, WireSyntaxTree, } from "../syntax/syntaxTree.js";
|
|
33
|
+
export { OutlineIndex, buildOutlineIndex, filterOutline, hasLabelPrefix, wireOutline, wireOutlineNode, wireOutlineRange, outlineFromWire } from "../outline/outlineIndex.js";
|
|
34
|
+
export type { OutlinePayload } from "../outline/outlineIndex.js";
|
|
35
|
+
export { extractImports, importedBy, isParseableSource, readSourceFile, resolveImportSpecifier, tokenizeSource } from "./importGraph.js";
|
|
36
|
+
export type { ResolvedSpecifier, SourceFileSnapshot, SourceToken } from "./importGraph.js";
|
|
37
|
+
export { extractExports } from "./exportGraph.js";
|
|
38
|
+
export { DependencyGraph, buildDependencyReport, graphFromImports } from "./dependency.js";
|
|
39
|
+
export { isOfficeFile, parseOffice, officeImports, officeExports, officeReferences, officeOutlineParser, installOfficeOutlineParser } from "../outline/office.js";
|
|
40
|
+
export type { OfficeDocument, OfficeFormat, OfficeKind, OfficeReference, OfficeSection, OfficeSectionKind } from "../outline/office.js";
|
|
41
|
+
export { readCfb } from "./cfb.js";
|
|
42
|
+
export type { CfbEntry } from "./cfb.js";
|
|
43
|
+
export { readZipEntries, zipText } from "./zip.js";
|
|
44
|
+
export type { ZipEntry } from "./zip.js";
|
|
45
|
+
export type { DependencyClosure, DependencyRequest, DependencySubgraph, TopologicalResult } from "./dependency.js";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public filesystem surface: tree nodes, reads/writes, outlines and module
|
|
3
|
+
* graphs. Every export is read-only except `writeFile`/`ensureDirectory`;
|
|
4
|
+
* mutation authority is granted by a `SessionRoot` and enforced by
|
|
5
|
+
* `PathSandbox`.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./types.js";
|
|
8
|
+
export { FilesystemError, fail, isFilesystemError } from "./errors.js";
|
|
9
|
+
export { detectCharset, decodeText, encodeText, countLines, LineIndex } from "../syntax/charset.js";
|
|
10
|
+
export { ByteLineIndex } from "../syntax/byteIndex.js";
|
|
11
|
+
export { formatNodeTime, formatIsoTime, parseNodeTime, creationTime } from "./time.js";
|
|
12
|
+
export { PathSandbox } from "./path.js";
|
|
13
|
+
export { buildFileNode, wireNode, wireTree, verifyFingerprint } from "./file.js";
|
|
14
|
+
export { buildDirectoryNode, listDirectory, compareTreeNodes } from "./directory.js";
|
|
15
|
+
export { buildTree, WorkspaceTree } from "./tree.js";
|
|
16
|
+
export { readPage, ReadCache, byteRangeFingerprint, locateLineSpan, useByte as useByteRead, useLine as useLineRead } from "./read.js";
|
|
17
|
+
export { writeFile, ensureDirectory, WriteLocks, useByte as useByteWrite, useLine as useLineWrite } from "./write.js";
|
|
18
|
+
export { SessionRuntime } from "./runtime.js";
|
|
19
|
+
export { FilesystemService, FilesystemSession, filesystemSessionSummary } from "./service.js";
|
|
20
|
+
export { buildOutline, OutlineRegistry, DefaultOutlineRegistry, OutlineStrategies, OutlineMaxFileBytes, OutlineMaxScanLines, OutlineDefaultMaxNodes, OutlineHardMaxNodes, OutlineDefaultMaxDepth, OutlineHardMaxDepth, createOutlineRegistry, outlineLanguage, outlineNodeFingerprint, } from "../outline/outline.js";
|
|
21
|
+
export { DefaultOutlineKeywords, OutlineKeywordRegistry, createOutlineKeywordRegistry } from "../outline/outlineKeywords.js";
|
|
22
|
+
export { buildSyntaxTree } from "./syntaxTree.js";
|
|
23
|
+
export { DefaultSyntaxRegistry, SyntaxRegistry, buildSyntaxTreeFromText, createSyntaxRegistry, disposeSyntaxNode, syntaxLanguageOf, wireSyntaxTree, } from "../syntax/syntaxTree.js";
|
|
24
|
+
export { OutlineIndex, buildOutlineIndex, filterOutline, hasLabelPrefix, wireOutline, wireOutlineNode, wireOutlineRange, outlineFromWire } from "../outline/outlineIndex.js";
|
|
25
|
+
export { extractImports, importedBy, isParseableSource, readSourceFile, resolveImportSpecifier, tokenizeSource } from "./importGraph.js";
|
|
26
|
+
export { extractExports } from "./exportGraph.js";
|
|
27
|
+
export { DependencyGraph, buildDependencyReport, graphFromImports } from "./dependency.js";
|
|
28
|
+
export { isOfficeFile, parseOffice, officeImports, officeExports, officeReferences, officeOutlineParser, installOfficeOutlineParser } from "../outline/office.js";
|
|
29
|
+
export { readCfb } from "./cfb.js";
|
|
30
|
+
export { readZipEntries, zipText } from "./zip.js";
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic, bounded metadata extraction for tree nodes.
|
|
3
|
+
*
|
|
4
|
+
* Descriptions are derived only from bytes the caller already has: a leading
|
|
5
|
+
* JSDoc or line comment, a Markdown heading and paragraph, front matter, a
|
|
6
|
+
* package manifest or the first paragraph of plain text. Extraction never
|
|
7
|
+
* touches the filesystem, never executes code and never inspects more than the
|
|
8
|
+
* first 64 KiB of a file, so building a tree stays cheap and side-effect free.
|
|
9
|
+
*
|
|
10
|
+
* The three fields have different jobs. `description` is a short identity line,
|
|
11
|
+
* `summary` adds detail for retrieval and `purpose` records what the host or the
|
|
12
|
+
* document explicitly says the node is for. Host annotations override all three,
|
|
13
|
+
* but they are descriptive only: they never change a fingerprint.
|
|
14
|
+
*/
|
|
15
|
+
import type { Charset } from "../syntax/types.js";
|
|
16
|
+
import type { NodeAnnotation, TreeNode } from "./types.js";
|
|
17
|
+
/**
|
|
18
|
+
* Descriptive fields derived for one node.
|
|
19
|
+
*/
|
|
20
|
+
export interface NodeDescription {
|
|
21
|
+
readonly description: string;
|
|
22
|
+
readonly summary: string;
|
|
23
|
+
readonly purpose: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Last path segment, accepting both POSIX and host separators so an absolute
|
|
27
|
+
* path is usable as a name fallback. The root path normalizes to `.`.
|
|
28
|
+
*/
|
|
29
|
+
export declare const nameOfPath: (value: string) => string;
|
|
30
|
+
/**
|
|
31
|
+
* Last lowercase extension without the dot; the empty string when the name has
|
|
32
|
+
* no extension. A leading dot is a hidden-file marker, not an extension.
|
|
33
|
+
*/
|
|
34
|
+
export declare const extensionOfPath: (value: string) => string;
|
|
35
|
+
/**
|
|
36
|
+
* Derive description/summary/purpose for one file from its detected charset and
|
|
37
|
+
* a bounded head of its bytes.
|
|
38
|
+
*
|
|
39
|
+
* @param absolute - Absolute host path, used only as a name fallback.
|
|
40
|
+
* @param relative - Root-relative POSIX path.
|
|
41
|
+
* @param charset - Detected charset; `binary`/`none` disable text extraction.
|
|
42
|
+
* @param head - First bytes of the file; at most 64 KiB are inspected.
|
|
43
|
+
* @param annotation - Optional host override.
|
|
44
|
+
* @returns The three descriptive fields.
|
|
45
|
+
*/
|
|
46
|
+
export declare const describeFile: (absolute: string, relative: string, charset: Charset, head: Uint8Array, annotation?: NodeAnnotation) => NodeDescription;
|
|
47
|
+
/**
|
|
48
|
+
* Derive description/summary/purpose for one directory from its direct
|
|
49
|
+
* children.
|
|
50
|
+
*
|
|
51
|
+
* @param relative - Root-relative POSIX path.
|
|
52
|
+
* @param children - Direct children in tree order.
|
|
53
|
+
* @param annotation - Optional host override.
|
|
54
|
+
* @param readme - Optional README text used for the purpose.
|
|
55
|
+
* @returns The three descriptive fields.
|
|
56
|
+
*/
|
|
57
|
+
export declare const describeDirectory: (relative: string, children: readonly TreeNode[], annotation?: NodeAnnotation, readme?: string) => NodeDescription;
|
|
58
|
+
/**
|
|
59
|
+
* Look up an annotation by exact root-relative path. Parent-directory
|
|
60
|
+
* annotations are not inherited: an override names exactly one node.
|
|
61
|
+
*
|
|
62
|
+
* @param annotations - Path-keyed override map.
|
|
63
|
+
* @param relative - Exact root-relative path.
|
|
64
|
+
* @returns The annotation when present.
|
|
65
|
+
*/
|
|
66
|
+
export declare const annotationFor: (annotations: Readonly<Record<string, NodeAnnotation>> | undefined, relative: string) => NodeAnnotation | undefined;
|
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
import { decodeText } from "../syntax/charset.js";
|
|
2
|
+
const MaxHeadBytes = 64 * 1024;
|
|
3
|
+
const MaxDescriptionLength = 160;
|
|
4
|
+
const MaxSummaryLength = 400;
|
|
5
|
+
const MaxPurposeLength = 200;
|
|
6
|
+
const MaxSummaryChildren = 6;
|
|
7
|
+
const ScriptExtensions = new Set([
|
|
8
|
+
"js",
|
|
9
|
+
"jsx",
|
|
10
|
+
"mjs",
|
|
11
|
+
"cjs",
|
|
12
|
+
"ts",
|
|
13
|
+
"tsx",
|
|
14
|
+
"mts",
|
|
15
|
+
"cts",
|
|
16
|
+
"java",
|
|
17
|
+
"kt",
|
|
18
|
+
"kts",
|
|
19
|
+
"c",
|
|
20
|
+
"h",
|
|
21
|
+
"cc",
|
|
22
|
+
"cpp",
|
|
23
|
+
"hpp",
|
|
24
|
+
"cs",
|
|
25
|
+
"go",
|
|
26
|
+
"rs",
|
|
27
|
+
"swift",
|
|
28
|
+
]);
|
|
29
|
+
const MarkdownExtensions = new Set(["md", "markdown", "mdx"]);
|
|
30
|
+
const collapse = (value) => value.replace(/\s+/gu, " ").trim();
|
|
31
|
+
const safeSliceEnd = (value, end) => {
|
|
32
|
+
let cut = Math.min(end, value.length);
|
|
33
|
+
if (cut > 0 && cut < value.length) {
|
|
34
|
+
const code = value.charCodeAt(cut - 1);
|
|
35
|
+
if (code >= 0xd800 && code <= 0xdbff) {
|
|
36
|
+
cut -= 1;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return cut;
|
|
40
|
+
};
|
|
41
|
+
const clip = (value, maximum) => {
|
|
42
|
+
if (value.length <= maximum) {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
const cut = safeSliceEnd(value, Math.max(0, maximum - 3));
|
|
46
|
+
return `${value.slice(0, cut)}...`;
|
|
47
|
+
};
|
|
48
|
+
const normalizeField = (value, maximum) => clip(collapse(value), maximum);
|
|
49
|
+
/**
|
|
50
|
+
* Last path segment, accepting both POSIX and host separators so an absolute
|
|
51
|
+
* path is usable as a name fallback. The root path normalizes to `.`.
|
|
52
|
+
*/
|
|
53
|
+
export const nameOfPath = (value) => {
|
|
54
|
+
const normalized = value.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
55
|
+
if (normalized.length === 0 || normalized === ".") {
|
|
56
|
+
return ".";
|
|
57
|
+
}
|
|
58
|
+
const slash = normalized.lastIndexOf("/");
|
|
59
|
+
return slash === -1 ? normalized : normalized.slice(slash + 1);
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Last lowercase extension without the dot; the empty string when the name has
|
|
63
|
+
* no extension. A leading dot is a hidden-file marker, not an extension.
|
|
64
|
+
*/
|
|
65
|
+
export const extensionOfPath = (value) => {
|
|
66
|
+
const name = nameOfPath(value);
|
|
67
|
+
const dot = name.lastIndexOf(".");
|
|
68
|
+
if (dot <= 0 || dot === name.length - 1) {
|
|
69
|
+
return "";
|
|
70
|
+
}
|
|
71
|
+
return name.slice(dot + 1).toLowerCase();
|
|
72
|
+
};
|
|
73
|
+
const decodePreview = (head, charset) => {
|
|
74
|
+
if (charset === "binary" || charset === "none") {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
const bounded = head.length > MaxHeadBytes ? head.subarray(0, MaxHeadBytes) : head;
|
|
78
|
+
const even = charset === "utf-16le" || charset === "utf-16be" ? bounded.subarray(0, bounded.length - (bounded.length % 2)) : bounded;
|
|
79
|
+
for (let trim = 0; trim <= 3; trim += 1) {
|
|
80
|
+
const candidate = trim === 0 ? even : even.subarray(0, Math.max(0, even.length - trim));
|
|
81
|
+
try {
|
|
82
|
+
return decodeText(candidate, charset);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return undefined;
|
|
89
|
+
};
|
|
90
|
+
const stripQuotes = (value) => {
|
|
91
|
+
const trimmed = value.trim();
|
|
92
|
+
if (trimmed.length >= 2) {
|
|
93
|
+
const first = trimmed[0];
|
|
94
|
+
const last = trimmed[trimmed.length - 1];
|
|
95
|
+
if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
|
|
96
|
+
return trimmed.slice(1, -1).trim();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return trimmed;
|
|
100
|
+
};
|
|
101
|
+
const parseFrontMatter = (text) => {
|
|
102
|
+
const normalized = text.replace(/\r\n?/g, "\n").replace(/^\uFEFF/, "");
|
|
103
|
+
const lines = normalized.split("\n");
|
|
104
|
+
if (lines.length === 0 || lines[0].trim() !== "---") {
|
|
105
|
+
return { body: normalized };
|
|
106
|
+
}
|
|
107
|
+
let closing = -1;
|
|
108
|
+
for (let index = 1; index < lines.length; index += 1) {
|
|
109
|
+
const marker = lines[index].trim();
|
|
110
|
+
if (marker === "---" || marker === "...") {
|
|
111
|
+
closing = index;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (closing === -1) {
|
|
116
|
+
return { body: normalized };
|
|
117
|
+
}
|
|
118
|
+
const fields = {};
|
|
119
|
+
for (let index = 1; index < closing; index += 1) {
|
|
120
|
+
const match = /^([A-Za-z][A-Za-z0-9_-]*)\s*:\s*(.*)$/.exec(lines[index]);
|
|
121
|
+
if (match === null) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const key = match[1].toLowerCase();
|
|
125
|
+
const value = stripQuotes(match[2]);
|
|
126
|
+
if (value.length === 0) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (key === "title" && fields.title === (void 0)) {
|
|
130
|
+
fields.title = value;
|
|
131
|
+
}
|
|
132
|
+
else if (key === "description" && fields.description === (void 0)) {
|
|
133
|
+
fields.description = value;
|
|
134
|
+
}
|
|
135
|
+
else if (key === "purpose" && fields.purpose === (void 0)) {
|
|
136
|
+
fields.purpose = value;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
title: fields.title,
|
|
141
|
+
description: fields.description,
|
|
142
|
+
purpose: fields.purpose,
|
|
143
|
+
body: lines.slice(closing + 1).join("\n"),
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
const firstNonEmptyLine = (text) => {
|
|
147
|
+
const lines = text.replace(/\r\n?/g, "\n").split("\n");
|
|
148
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
149
|
+
const trimmed = lines[index].trim();
|
|
150
|
+
if (trimmed.length > 0) {
|
|
151
|
+
return trimmed;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
};
|
|
156
|
+
const firstParagraph = (text) => {
|
|
157
|
+
const raw = text.replace(/\r\n?/g, "\n").split("\n");
|
|
158
|
+
const lines = [];
|
|
159
|
+
for (let index = 0; index < raw.length; index += 1) {
|
|
160
|
+
const line = raw[index].trim();
|
|
161
|
+
const next = index + 1 < raw.length ? raw[index + 1].trim() : "";
|
|
162
|
+
if (line.length > 0 && !line.startsWith("#") && /^=+\s*$/.test(next)) {
|
|
163
|
+
lines.push("");
|
|
164
|
+
index += 1;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
lines.push(line);
|
|
168
|
+
}
|
|
169
|
+
const collected = [];
|
|
170
|
+
let started = false;
|
|
171
|
+
let fence = false;
|
|
172
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
173
|
+
const line = lines[index].trim();
|
|
174
|
+
const fenceLine = line.startsWith("```") || line.startsWith("~~~");
|
|
175
|
+
if (fenceLine) {
|
|
176
|
+
if (started) {
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
fence = !fence;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (fence) {
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
if (!started) {
|
|
186
|
+
if (line.length === 0 || line.startsWith("#")) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
started = true;
|
|
190
|
+
}
|
|
191
|
+
else if (line.length === 0 || line.startsWith("#")) {
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
collected.push(line);
|
|
195
|
+
}
|
|
196
|
+
return collected.length === 0 ? undefined : collected.join(" ");
|
|
197
|
+
};
|
|
198
|
+
const firstMarkdownHeading = (text) => {
|
|
199
|
+
const lines = text.replace(/\r\n?/g, "\n").split("\n");
|
|
200
|
+
let fence = false;
|
|
201
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
202
|
+
const line = lines[index].trim();
|
|
203
|
+
if (line.startsWith("```") || line.startsWith("~~~")) {
|
|
204
|
+
fence = !fence;
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (fence) {
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const match = /^#\s+(.+?)\s*#*\s*$/.exec(line);
|
|
211
|
+
if (match !== null) {
|
|
212
|
+
return match[1].trim();
|
|
213
|
+
}
|
|
214
|
+
const next = index + 1 < lines.length ? lines[index + 1].trim() : "";
|
|
215
|
+
if (line.length > 0 && !line.startsWith("#") && /^=+\s*$/.test(next)) {
|
|
216
|
+
return line;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return undefined;
|
|
220
|
+
};
|
|
221
|
+
const cleanComment = (lines) => {
|
|
222
|
+
const cleaned = [];
|
|
223
|
+
let purpose;
|
|
224
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
225
|
+
let value = lines[index].trim();
|
|
226
|
+
if (value.startsWith("*")) {
|
|
227
|
+
value = value.replace(/^\*+\s?/, "").trim();
|
|
228
|
+
}
|
|
229
|
+
if (value.length === 0) {
|
|
230
|
+
cleaned.push("");
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const tag = /^@([A-Za-z][A-Za-z0-9_-]*)\s*(.*)$/.exec(value);
|
|
234
|
+
if (tag !== null) {
|
|
235
|
+
if (tag[1].toLowerCase() === "purpose") {
|
|
236
|
+
purpose = tag[2].trim();
|
|
237
|
+
}
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
cleaned.push(value);
|
|
241
|
+
}
|
|
242
|
+
return { text: cleaned.join("\n").trim(), purpose };
|
|
243
|
+
};
|
|
244
|
+
const extractLeadingComment = (text) => {
|
|
245
|
+
const lines = text.replace(/\r\n?/g, "\n").split("\n");
|
|
246
|
+
let index = 0;
|
|
247
|
+
while (index < lines.length && lines[index].trim().length === 0) {
|
|
248
|
+
index += 1;
|
|
249
|
+
}
|
|
250
|
+
if (index < lines.length && lines[index].trimStart().startsWith("#!")) {
|
|
251
|
+
index += 1;
|
|
252
|
+
}
|
|
253
|
+
while (index < lines.length && lines[index].trim().length === 0) {
|
|
254
|
+
index += 1;
|
|
255
|
+
}
|
|
256
|
+
if (index >= lines.length) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
const first = lines[index].trimStart();
|
|
260
|
+
if (first.startsWith("/*")) {
|
|
261
|
+
const raw = [];
|
|
262
|
+
let closed = false;
|
|
263
|
+
for (; index < lines.length; index += 1) {
|
|
264
|
+
const line = lines[index];
|
|
265
|
+
const open = line.indexOf("/*");
|
|
266
|
+
const content = line.slice(open === -1 ? 0 : open + 2);
|
|
267
|
+
const close = content.indexOf("*/");
|
|
268
|
+
raw.push(close === -1 ? content : content.slice(0, close));
|
|
269
|
+
if (close !== -1) {
|
|
270
|
+
closed = true;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return closed ? cleanComment(raw) : undefined;
|
|
275
|
+
}
|
|
276
|
+
if (first.startsWith("//")) {
|
|
277
|
+
const raw = [];
|
|
278
|
+
for (; index < lines.length; index += 1) {
|
|
279
|
+
const trimmed = lines[index].trim();
|
|
280
|
+
if (trimmed.startsWith("//")) {
|
|
281
|
+
raw.push(trimmed.slice(2));
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
if (trimmed.length === 0) {
|
|
285
|
+
raw.push("");
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
return raw.length === 0 ? undefined : cleanComment(raw);
|
|
291
|
+
}
|
|
292
|
+
return undefined;
|
|
293
|
+
};
|
|
294
|
+
const describePackage = (text, relative) => {
|
|
295
|
+
if (nameOfPath(relative).toLowerCase() !== "package.json") {
|
|
296
|
+
return undefined;
|
|
297
|
+
}
|
|
298
|
+
let parsed;
|
|
299
|
+
try {
|
|
300
|
+
parsed = JSON.parse(text);
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
return undefined;
|
|
304
|
+
}
|
|
305
|
+
if (typeof (parsed) !== "object" || parsed === null) {
|
|
306
|
+
return undefined;
|
|
307
|
+
}
|
|
308
|
+
const record = parsed;
|
|
309
|
+
const packageName = typeof (record.name) === "string" ? collapse(record.name) : "";
|
|
310
|
+
const declared = typeof (record.description) === "string" ? collapse(record.description) : "";
|
|
311
|
+
const description = packageName.length > 0 ? `Package ${packageName}.` : "File package.json.";
|
|
312
|
+
const summary = declared.length > 0 ? declared : description;
|
|
313
|
+
return {
|
|
314
|
+
description: normalizeField(description, MaxDescriptionLength),
|
|
315
|
+
summary: normalizeField(summary, MaxSummaryLength),
|
|
316
|
+
purpose: "not declared",
|
|
317
|
+
};
|
|
318
|
+
};
|
|
319
|
+
const withAnnotation = (base, annotation) => {
|
|
320
|
+
if (annotation === (void 0)) {
|
|
321
|
+
return base;
|
|
322
|
+
}
|
|
323
|
+
const description = annotation.description === (void 0) ? base.description : normalizeField(annotation.description, MaxDescriptionLength);
|
|
324
|
+
const summary = annotation.summary === (void 0) ? base.summary : normalizeField(annotation.summary, MaxSummaryLength);
|
|
325
|
+
const purpose = annotation.purpose === (void 0) ? base.purpose : normalizeField(annotation.purpose, MaxPurposeLength);
|
|
326
|
+
return { description, summary, purpose };
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* Derive description/summary/purpose for one file from its detected charset and
|
|
330
|
+
* a bounded head of its bytes.
|
|
331
|
+
*
|
|
332
|
+
* @param absolute - Absolute host path, used only as a name fallback.
|
|
333
|
+
* @param relative - Root-relative POSIX path.
|
|
334
|
+
* @param charset - Detected charset; `binary`/`none` disable text extraction.
|
|
335
|
+
* @param head - First bytes of the file; at most 64 KiB are inspected.
|
|
336
|
+
* @param annotation - Optional host override.
|
|
337
|
+
* @returns The three descriptive fields.
|
|
338
|
+
*/
|
|
339
|
+
export const describeFile = (absolute, relative, charset, head, annotation) => {
|
|
340
|
+
const nameFromPath = relative === "." || relative.length === 0 ? absolute : relative;
|
|
341
|
+
const name = nameOfPath(nameFromPath);
|
|
342
|
+
const fallback = {
|
|
343
|
+
description: normalizeField(`File ${name}.`, MaxDescriptionLength),
|
|
344
|
+
summary: normalizeField(`File ${name}.`, MaxSummaryLength),
|
|
345
|
+
purpose: "not declared",
|
|
346
|
+
};
|
|
347
|
+
const text = decodePreview(head, charset);
|
|
348
|
+
let description;
|
|
349
|
+
let summary;
|
|
350
|
+
let purpose;
|
|
351
|
+
if (text !== (void 0)) {
|
|
352
|
+
const front = parseFrontMatter(text);
|
|
353
|
+
const body = front.body;
|
|
354
|
+
const extension = extensionOfPath(relative);
|
|
355
|
+
const isPackage = nameOfPath(relative).toLowerCase() === "package.json";
|
|
356
|
+
const packageDescription = describePackage(text, relative);
|
|
357
|
+
if (packageDescription !== (void 0)) {
|
|
358
|
+
description = packageDescription.description;
|
|
359
|
+
summary = packageDescription.summary;
|
|
360
|
+
purpose = packageDescription.purpose;
|
|
361
|
+
}
|
|
362
|
+
else if (isPackage) {
|
|
363
|
+
description = "File package.json.";
|
|
364
|
+
summary = description;
|
|
365
|
+
}
|
|
366
|
+
else if (MarkdownExtensions.has(extension)) {
|
|
367
|
+
description = firstMarkdownHeading(body) ?? firstNonEmptyLine(body);
|
|
368
|
+
summary = firstParagraph(body) ?? description;
|
|
369
|
+
}
|
|
370
|
+
else if (ScriptExtensions.has(extension)) {
|
|
371
|
+
const comment = extractLeadingComment(body);
|
|
372
|
+
if (comment !== (void 0)) {
|
|
373
|
+
purpose = comment.purpose;
|
|
374
|
+
}
|
|
375
|
+
if (comment !== (void 0) && comment.text.length > 0) {
|
|
376
|
+
description = firstNonEmptyLine(comment.text);
|
|
377
|
+
summary = collapse(comment.text);
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
description = firstNonEmptyLine(body);
|
|
381
|
+
summary = firstParagraph(body);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
description = firstNonEmptyLine(body);
|
|
386
|
+
summary = firstParagraph(body);
|
|
387
|
+
}
|
|
388
|
+
if (front.title !== (void 0)) {
|
|
389
|
+
description = front.title;
|
|
390
|
+
}
|
|
391
|
+
if (front.description !== (void 0)) {
|
|
392
|
+
summary = front.description;
|
|
393
|
+
}
|
|
394
|
+
if (front.purpose !== (void 0)) {
|
|
395
|
+
purpose = front.purpose;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
const resolvedDescription = normalizeField(description ?? "", MaxDescriptionLength);
|
|
399
|
+
const resolvedSummary = normalizeField(summary ?? description ?? "", MaxSummaryLength);
|
|
400
|
+
const resolvedPurpose = normalizeField(purpose ?? "", MaxPurposeLength);
|
|
401
|
+
const base = {
|
|
402
|
+
description: resolvedDescription.length > 0 ? resolvedDescription : fallback.description,
|
|
403
|
+
summary: resolvedSummary.length > 0 ? resolvedSummary : resolvedDescription.length > 0 ? resolvedDescription : fallback.summary,
|
|
404
|
+
purpose: resolvedPurpose.length > 0 ? resolvedPurpose : fallback.purpose,
|
|
405
|
+
};
|
|
406
|
+
return withAnnotation(base, annotation);
|
|
407
|
+
};
|
|
408
|
+
/**
|
|
409
|
+
* Derive description/summary/purpose for one directory from its direct
|
|
410
|
+
* children.
|
|
411
|
+
*
|
|
412
|
+
* @param relative - Root-relative POSIX path.
|
|
413
|
+
* @param children - Direct children in tree order.
|
|
414
|
+
* @param annotation - Optional host override.
|
|
415
|
+
* @param readme - Optional README text used for the purpose.
|
|
416
|
+
* @returns The three descriptive fields.
|
|
417
|
+
*/
|
|
418
|
+
export const describeDirectory = (relative, children, annotation, readme) => {
|
|
419
|
+
const name = nameOfPath(relative);
|
|
420
|
+
let files = 0;
|
|
421
|
+
let directories = 0;
|
|
422
|
+
const names = [];
|
|
423
|
+
for (let index = 0; index < children.length; index += 1) {
|
|
424
|
+
const child = children[index];
|
|
425
|
+
if (child.type === "File") {
|
|
426
|
+
files += 1;
|
|
427
|
+
names.push(child.name);
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
directories += 1;
|
|
431
|
+
names.push(`${child.name}/`);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
names.sort((left, right) => (left < right ? -1 : left > right ? 1 : 0));
|
|
435
|
+
const fileWord = files === 1 ? "file" : "files";
|
|
436
|
+
const directoryWord = directories === 1 ? "directory" : "directories";
|
|
437
|
+
const description = `Directory ${name} with ${files} ${fileWord} and ${directories} ${directoryWord}.`;
|
|
438
|
+
const visible = names.slice(0, MaxSummaryChildren);
|
|
439
|
+
const hidden = names.length - visible.length;
|
|
440
|
+
const summary = names.length === 0 ? "Empty directory." : `Children: ${visible.join(", ")}${hidden > 0 ? ` (+${hidden} more)` : ""}.`;
|
|
441
|
+
let purpose = "not declared";
|
|
442
|
+
if (readme !== (void 0)) {
|
|
443
|
+
const bounded = readme.length > MaxHeadBytes ? readme.slice(0, MaxHeadBytes) : readme;
|
|
444
|
+
const front = parseFrontMatter(bounded);
|
|
445
|
+
purpose = front.purpose ?? firstParagraph(front.body) ?? firstMarkdownHeading(front.body) ?? "not declared";
|
|
446
|
+
}
|
|
447
|
+
const base = {
|
|
448
|
+
description: normalizeField(description, MaxDescriptionLength),
|
|
449
|
+
summary: normalizeField(summary, MaxSummaryLength),
|
|
450
|
+
purpose: normalizeField(purpose, MaxPurposeLength),
|
|
451
|
+
};
|
|
452
|
+
return withAnnotation(base, annotation);
|
|
453
|
+
};
|
|
454
|
+
/**
|
|
455
|
+
* Look up an annotation by exact root-relative path. Parent-directory
|
|
456
|
+
* annotations are not inherited: an override names exactly one node.
|
|
457
|
+
*
|
|
458
|
+
* @param annotations - Path-keyed override map.
|
|
459
|
+
* @param relative - Exact root-relative path.
|
|
460
|
+
* @returns The annotation when present.
|
|
461
|
+
*/
|
|
462
|
+
export const annotationFor = (annotations, relative) => {
|
|
463
|
+
if (annotations === (void 0) || annotations === null) {
|
|
464
|
+
return undefined;
|
|
465
|
+
}
|
|
466
|
+
if (!Object.prototype.hasOwnProperty.call(annotations, relative)) {
|
|
467
|
+
return undefined;
|
|
468
|
+
}
|
|
469
|
+
return annotations[relative];
|
|
470
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { SessionOperation, SessionRoot } from "../session/types.js";
|
|
2
|
+
import type { RootedPath } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Sandbox options. Symlink following is off by default because a link is a
|
|
5
|
+
* capability the session was not granted.
|
|
6
|
+
*/
|
|
7
|
+
export interface PathSandboxOptions {
|
|
8
|
+
readonly followSymlinks?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class PathSandbox {
|
|
11
|
+
private readonly roots;
|
|
12
|
+
private readonly byId;
|
|
13
|
+
private readonly followSymlinks;
|
|
14
|
+
private readonly defaultRootId;
|
|
15
|
+
constructor(roots: readonly SessionRoot[], options?: PathSandboxOptions);
|
|
16
|
+
/**
|
|
17
|
+
* All roots, in the order the session declared them.
|
|
18
|
+
*/
|
|
19
|
+
listRoots(): readonly SessionRoot[];
|
|
20
|
+
/**
|
|
21
|
+
* The root used when a path does not name one explicitly.
|
|
22
|
+
*/
|
|
23
|
+
defaultRoot(): SessionRoot;
|
|
24
|
+
/**
|
|
25
|
+
* Look up a root by id.
|
|
26
|
+
*/
|
|
27
|
+
root(id: string): SessionRoot;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve a caller path to a root, a normalized relative path and an
|
|
30
|
+
* absolute host path. The method does not require the target to exist; a
|
|
31
|
+
* write may create it. Symlink checks stop at the first missing component.
|
|
32
|
+
*
|
|
33
|
+
* @param input - Root-relative POSIX path, optionally prefixed by `rootId/`.
|
|
34
|
+
* @param operation - Operation used for writability checks.
|
|
35
|
+
* @returns Resolved path.
|
|
36
|
+
*/
|
|
37
|
+
resolve(input: unknown, operation: SessionOperation): RootedPath;
|
|
38
|
+
/**
|
|
39
|
+
* Whether an absolute path is inside a root, using the platform's case
|
|
40
|
+
* sensitivity.
|
|
41
|
+
*/
|
|
42
|
+
contains(rootPath: string, absolute: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Prefix/name exclusion. A bare name excludes a segment at any depth; a
|
|
45
|
+
* value containing `/` is a root-relative prefix.
|
|
46
|
+
*/
|
|
47
|
+
isExcluded(root: SessionRoot, relative: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* The root-relative POSIX path for an absolute path already known to be in
|
|
50
|
+
* the root.
|
|
51
|
+
*/
|
|
52
|
+
relative(root: SessionRoot, absolute: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Re-check that a path still resolves inside its root. Used after a write
|
|
55
|
+
* rename and before a read, so a component swapped for a symlink between
|
|
56
|
+
* resolution and I/O is rejected.
|
|
57
|
+
*/
|
|
58
|
+
revalidate(rooted: RootedPath): void;
|
|
59
|
+
private assertNoSymlinkEscape;
|
|
60
|
+
}
|