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,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Literal spellings owned by this module.
|
|
3
|
+
*
|
|
4
|
+
* The frozen naming table is typed `string` today, so the casts below are the
|
|
5
|
+
* only place this file narrows a table value to its literal; once the table
|
|
6
|
+
* carries literal types the casts disappear without changing any consumer.
|
|
7
|
+
*/
|
|
8
|
+
type WorkspaceProtocolName = "amp_protocol_workspace";
|
|
9
|
+
type WorkspaceVersion = 1;
|
|
10
|
+
type WorkspaceServiceName = "amp_service_workspace";
|
|
11
|
+
/**
|
|
12
|
+
* Wire protocol value. The literal type is intentional: `WorkspaceResponse` is
|
|
13
|
+
* constrained by it, so a widened `string` would let a response advertise a
|
|
14
|
+
* protocol this service does not implement.
|
|
15
|
+
*/
|
|
16
|
+
export declare const WorkspaceProtocol: WorkspaceProtocolName;
|
|
17
|
+
/**
|
|
18
|
+
* Envelope version. Kept as the literal `1` because the response type embeds
|
|
19
|
+
* it; changing it is a breaking wire change rather than a routine edit.
|
|
20
|
+
*/
|
|
21
|
+
export declare const WorkspaceProtocolVersion: WorkspaceVersion;
|
|
22
|
+
/**
|
|
23
|
+
* Service identity published as `serverInfo.name` and repeated as `serviceId`.
|
|
24
|
+
* Hosts route per server, so the namespace must be stable across every
|
|
25
|
+
* transport instead of being derived from whatever process happens to run it.
|
|
26
|
+
*/
|
|
27
|
+
export declare const WorkspaceServiceId: WorkspaceServiceName;
|
|
28
|
+
/**
|
|
29
|
+
* Legacy protocol spellings kept for lenient hosts. Exporting them here lets a
|
|
30
|
+
* host compare an old `amp.workspace` value without hard-coding it, while the
|
|
31
|
+
* server itself writes only `WorkspaceProtocol`.
|
|
32
|
+
*/
|
|
33
|
+
export { WorkspaceProtocolAliases } from "../naming/index.js";
|
|
34
|
+
/**
|
|
35
|
+
* Error taxonomy callers branch on.
|
|
36
|
+
*
|
|
37
|
+
* The set is closed and the strings are part of the wire contract, so a new
|
|
38
|
+
* failure mode needs a new code rather than a free-form message; that is what
|
|
39
|
+
* lets an adapter map a failure without parsing prose.
|
|
40
|
+
*/
|
|
41
|
+
export type WorkspaceErrorCode = "invalid_arguments" | "unknown_tool" | "revision_mismatch" | "not_available" | "frame_unavailable" | "write_unavailable" | "run_unavailable" | "unsupported_action" | "fingerprint_mismatch" | "stale_detail" | "budget_exhausted" | "capacity_exceeded" | "response_too_large" | "integrity_failure" | "internal_error";
|
|
42
|
+
/**
|
|
43
|
+
* Success or failure envelope.
|
|
44
|
+
*
|
|
45
|
+
* `protocol`, `version` and `revision` stay on both branches so a host can
|
|
46
|
+
* reject a stale or foreign response before inspecting `ok`; `data` and `error`
|
|
47
|
+
* are mutually exclusive so a caller never has to decide which half to trust.
|
|
48
|
+
*/
|
|
49
|
+
export type WorkspaceResponse = {
|
|
50
|
+
protocol: typeof WorkspaceProtocol;
|
|
51
|
+
version: typeof WorkspaceProtocolVersion;
|
|
52
|
+
revision: string;
|
|
53
|
+
} & ({
|
|
54
|
+
ok: true;
|
|
55
|
+
data: Record<string, unknown>;
|
|
56
|
+
} | {
|
|
57
|
+
ok: false;
|
|
58
|
+
error: {
|
|
59
|
+
code: WorkspaceErrorCode;
|
|
60
|
+
message: string;
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Advertised tool descriptor.
|
|
65
|
+
*
|
|
66
|
+
* Kept structural instead of importing an MCP type so the same definition can
|
|
67
|
+
* feed `tools/list`, the direct registry and the catalog digest without the
|
|
68
|
+
* protocol module depending on any adapter.
|
|
69
|
+
*/
|
|
70
|
+
export interface WorkspaceToolDefinition {
|
|
71
|
+
name: string;
|
|
72
|
+
description: string;
|
|
73
|
+
inputSchema: Record<string, unknown>;
|
|
74
|
+
/**
|
|
75
|
+
* Side-effect class. `read` covers discovery and detail reads; `write`
|
|
76
|
+
* covers the one tool that asks the host to persist new project content.
|
|
77
|
+
* The field is carried on the descriptor so the registry, the MCP
|
|
78
|
+
* annotations and the catalog digest cannot disagree about a tool.
|
|
79
|
+
*/
|
|
80
|
+
risk: WorkspaceRisk;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Closed side-effect classes for workspace tools.
|
|
84
|
+
*/
|
|
85
|
+
export type WorkspaceRisk = "read" | "write";
|
|
86
|
+
/**
|
|
87
|
+
* One relative file reached through an `imports` relation.
|
|
88
|
+
*
|
|
89
|
+
* `id` is the opaque workspace key the caller can re-query, while `path` is the
|
|
90
|
+
* project-relative source URI a human reads. `line` is the 1-based line of the
|
|
91
|
+
* extraction site and `method` records how the edge was produced.
|
|
92
|
+
*/
|
|
93
|
+
export interface WorkspaceFileLink {
|
|
94
|
+
id: string;
|
|
95
|
+
path: string;
|
|
96
|
+
line?: number;
|
|
97
|
+
method: "manifest" | "compiler" | "explicit";
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Files that import the node's file: the consumers of its exports.
|
|
101
|
+
*
|
|
102
|
+
* `path` is the node's containing file (or `null` when the node is not inside a
|
|
103
|
+
* file). `files` is bounded by the service's `maxFileLinks`; `total` is the
|
|
104
|
+
* untruncated count and `truncated` says whether `files` is a prefix.
|
|
105
|
+
*/
|
|
106
|
+
export interface WorkspaceExportation {
|
|
107
|
+
path: string | null;
|
|
108
|
+
files: WorkspaceFileLink[];
|
|
109
|
+
total: number;
|
|
110
|
+
truncated: boolean;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Files the node's file imports, plus the bare package specifiers it depends on.
|
|
114
|
+
*
|
|
115
|
+
* Only relative workspace files appear in `files`; declarations outside the
|
|
116
|
+
* indexed snapshot stay in `external` because there is no relative path to
|
|
117
|
+
* report for them. Missing edges are extraction gaps, not proof of independence.
|
|
118
|
+
*/
|
|
119
|
+
export interface WorkspaceImportation {
|
|
120
|
+
path: string | null;
|
|
121
|
+
files: WorkspaceFileLink[];
|
|
122
|
+
external: string[];
|
|
123
|
+
/**
|
|
124
|
+
* Untruncated external-specifier count and whether `external` was cut by
|
|
125
|
+
* `maxFileLinks`. Kept separate from `total`/`truncated`, which describe
|
|
126
|
+
* the relative-file list.
|
|
127
|
+
*/
|
|
128
|
+
externalTotal: number;
|
|
129
|
+
externalTruncated: boolean;
|
|
130
|
+
total: number;
|
|
131
|
+
truncated: boolean;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Dependency/impact facts attached to detail reads and writes.
|
|
135
|
+
*/
|
|
136
|
+
export interface WorkspaceImpacts {
|
|
137
|
+
exportation: WorkspaceExportation;
|
|
138
|
+
importation: WorkspaceImportation;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Actions the project tool accepts. `detect` only inspects the snapshot; the
|
|
142
|
+
* other four are handed to the host runner, which owns the decision to execute.
|
|
143
|
+
*/
|
|
144
|
+
export type WorkspaceProjectAction = "detect" | "build" | "compile" | "run" | "test";
|
|
145
|
+
/**
|
|
146
|
+
* The manifest file that made a brand recognisable.
|
|
147
|
+
*/
|
|
148
|
+
export interface WorkspaceProjectManifest {
|
|
149
|
+
id: string;
|
|
150
|
+
path: string;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* One detected project brand with the conventional commands for it.
|
|
154
|
+
*
|
|
155
|
+
* Commands are suggestions for the host runner, not a shell grammar: the agent
|
|
156
|
+
* cannot supply one, and the runner may reject or rewrite any of them.
|
|
157
|
+
*/
|
|
158
|
+
export interface WorkspaceProjectBrand {
|
|
159
|
+
brand: string;
|
|
160
|
+
language: string;
|
|
161
|
+
manifest: WorkspaceProjectManifest;
|
|
162
|
+
actions: WorkspaceProjectAction[];
|
|
163
|
+
commands: Partial<Record<WorkspaceProjectAction, string>>;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* One project's detection result. `brand`/`manifest`/`commands` are the primary
|
|
167
|
+
* (most specific) evidence; `detected` keeps every brand found so a caller can
|
|
168
|
+
* choose when a repository mixes toolchains.
|
|
169
|
+
*/
|
|
170
|
+
export interface WorkspaceProjectSummary {
|
|
171
|
+
projectId: string;
|
|
172
|
+
label: string;
|
|
173
|
+
cwd: string;
|
|
174
|
+
brand: string;
|
|
175
|
+
language: string;
|
|
176
|
+
manifest: WorkspaceProjectManifest | null;
|
|
177
|
+
actions: WorkspaceProjectAction[];
|
|
178
|
+
commands: Partial<Record<WorkspaceProjectAction, string>>;
|
|
179
|
+
detected: WorkspaceProjectBrand[];
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* One node in the cascading project outline.
|
|
183
|
+
*
|
|
184
|
+
* `children` nests project → directory → file → symbol/knowledge, and
|
|
185
|
+
* `childCount` is the untruncated number of children so a caller can tell a
|
|
186
|
+
* leaf from a node the `limit` cut.
|
|
187
|
+
*/
|
|
188
|
+
export interface WorkspaceOutlineNode {
|
|
189
|
+
id: string;
|
|
190
|
+
kind: "project" | "directory" | "file" | "symbol" | "knowledge";
|
|
191
|
+
label: string;
|
|
192
|
+
path: string;
|
|
193
|
+
structureKind?: string;
|
|
194
|
+
startLine?: number;
|
|
195
|
+
endLine?: number;
|
|
196
|
+
childCount: number;
|
|
197
|
+
children: WorkspaceOutlineNode[];
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* One project dependency edge with the declaration that produced it.
|
|
201
|
+
*/
|
|
202
|
+
export interface WorkspaceDependencyEdge {
|
|
203
|
+
id: string;
|
|
204
|
+
kind: string;
|
|
205
|
+
label: string;
|
|
206
|
+
path: string;
|
|
207
|
+
method: "manifest" | "compiler" | "explicit";
|
|
208
|
+
line?: number;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* One project's dependencies and dependents.
|
|
212
|
+
*/
|
|
213
|
+
export interface WorkspaceProjectDependency {
|
|
214
|
+
projectId: string;
|
|
215
|
+
label: string;
|
|
216
|
+
dependencies: WorkspaceDependencyEdge[];
|
|
217
|
+
dependents: WorkspaceDependencyEdge[];
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Node properties the reactive surface may write.
|
|
221
|
+
*
|
|
222
|
+
* `summary`/`label`/`tags` are service-local annotations: they change what the
|
|
223
|
+
* reactive tree (and later reads of the node card) report without touching the
|
|
224
|
+
* host. `content` is the guarded file write and needs the same materialized
|
|
225
|
+
* allocation and host write port as `amp_tool_workspace_write`.
|
|
226
|
+
*/
|
|
227
|
+
export type WorkspaceReactiveProperty = "summary" | "label" | "tags" | "content";
|
|
228
|
+
/**
|
|
229
|
+
* Plain projection of a reactive node. The in-process value is a Proxy whose
|
|
230
|
+
* `children`/`content` properties materialize lazily; `toJSON` produces this
|
|
231
|
+
* shape, bounded by the call's `maxDepth`/`limit`.
|
|
232
|
+
*/
|
|
233
|
+
export interface WorkspaceReactiveNode {
|
|
234
|
+
id: string;
|
|
235
|
+
kind: string;
|
|
236
|
+
label: string;
|
|
237
|
+
path: string;
|
|
238
|
+
summary: string;
|
|
239
|
+
tags: string[];
|
|
240
|
+
structureKind?: string;
|
|
241
|
+
startLine?: number;
|
|
242
|
+
endLine?: number;
|
|
243
|
+
revision: string;
|
|
244
|
+
childCount: number;
|
|
245
|
+
children: WorkspaceReactiveNode[];
|
|
246
|
+
truncated?: boolean;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* One comparable file node from `diff_read`. `revision` is the content revision
|
|
250
|
+
* the snapshot records, so two calls over different revisions can be compared
|
|
251
|
+
* without fetching bodies; `bytes`/`lines` are derived from the stored detail
|
|
252
|
+
* and stay `null` when the host did not provide it.
|
|
253
|
+
*/
|
|
254
|
+
export interface WorkspaceDiffNode {
|
|
255
|
+
id: string;
|
|
256
|
+
kind: "project" | "directory" | "file";
|
|
257
|
+
label: string;
|
|
258
|
+
path: string;
|
|
259
|
+
revision: string;
|
|
260
|
+
bytes: number | null;
|
|
261
|
+
lines: number | null;
|
|
262
|
+
content: string | null;
|
|
263
|
+
contentOmitted: boolean;
|
|
264
|
+
/**
|
|
265
|
+
* True when `content` is a prefix of the file rather than the whole body
|
|
266
|
+
* (the service caps it at `maxReadChars`). `bytes`/`lines` always describe
|
|
267
|
+
* the whole file, so a truncated body is never mistaken for a short one.
|
|
268
|
+
*/
|
|
269
|
+
contentTruncated: boolean;
|
|
270
|
+
childCount: number;
|
|
271
|
+
children: WorkspaceDiffNode[];
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* One changed region reported by `diff_write`.
|
|
275
|
+
*/
|
|
276
|
+
export interface WorkspaceDiffHunk {
|
|
277
|
+
beforeStart: number;
|
|
278
|
+
beforeLines: number;
|
|
279
|
+
afterStart: number;
|
|
280
|
+
afterLines: number;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Return fresh copies of the descriptors.
|
|
284
|
+
*
|
|
285
|
+
* The definitions are module-level state; handing out the originals would let
|
|
286
|
+
* one adapter's tampering change what another adapter advertises. The clone
|
|
287
|
+
* keeps every caller's mutations local without duplicating the source table.
|
|
288
|
+
*/
|
|
289
|
+
export declare const workspaceToolDefinitions: () => WorkspaceToolDefinition[];
|
|
290
|
+
/**
|
|
291
|
+
* Canonical tool id to its single leaf segment.
|
|
292
|
+
*
|
|
293
|
+
* Dispatch needs the operation token, and parsing it once here means the
|
|
294
|
+
* service never slices a name by hand or re-derives a convention the grammar
|
|
295
|
+
* already owns. Deriving from `Definitions` rather than a second literal table
|
|
296
|
+
* keeps the map and the advertised tools from drifting apart; a descriptor that
|
|
297
|
+
* stops being a single-leaf workspace tool fails at module load instead of at
|
|
298
|
+
* the first call.
|
|
299
|
+
*/
|
|
300
|
+
declare const WorkspaceToolLeaves: ReadonlyMap<string, string>;
|
|
301
|
+
/**
|
|
302
|
+
* Frozen-contract alias for the leaf index; the local binding stays PascalCase
|
|
303
|
+
* because it is module-level data, matching the alias convention in naming.
|
|
304
|
+
*/
|
|
305
|
+
export { WorkspaceToolLeaves as workspaceToolLeaves };
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AMP workspace extension v1. Local entity IDs are opaque workspace keys, not
|
|
3
|
+
* paths or global AMP object IDs. JSON Schemas are shared by all adapters.
|
|
4
|
+
*
|
|
5
|
+
* The file lives outside `src/context` because a protocol is a wire contract,
|
|
6
|
+
* not a domain concept: direct executors and MCP bridges both need the same
|
|
7
|
+
* identities and schemas, and a domain directory must not own a public protocol
|
|
8
|
+
* surface. Every name comes from the frozen naming table, so this file adds no
|
|
9
|
+
* second spelling of an id.
|
|
10
|
+
*/
|
|
11
|
+
import { MaxLeafSegments, parseId, ProtocolIds, ServiceIds, ToolIds } from "../naming/index.js";
|
|
12
|
+
import { ComponentKinds, DiscoveryScopes, ModuleKinds } from "../discover/kinds.js";
|
|
13
|
+
/**
|
|
14
|
+
* Wire protocol value. The literal type is intentional: `WorkspaceResponse` is
|
|
15
|
+
* constrained by it, so a widened `string` would let a response advertise a
|
|
16
|
+
* protocol this service does not implement.
|
|
17
|
+
*/
|
|
18
|
+
export const WorkspaceProtocol = ProtocolIds.workspace;
|
|
19
|
+
/**
|
|
20
|
+
* Envelope version. Kept as the literal `1` because the response type embeds
|
|
21
|
+
* it; changing it is a breaking wire change rather than a routine edit.
|
|
22
|
+
*/
|
|
23
|
+
export const WorkspaceProtocolVersion = 1;
|
|
24
|
+
/**
|
|
25
|
+
* Service identity published as `serverInfo.name` and repeated as `serviceId`.
|
|
26
|
+
* Hosts route per server, so the namespace must be stable across every
|
|
27
|
+
* transport instead of being derived from whatever process happens to run it.
|
|
28
|
+
*/
|
|
29
|
+
export const WorkspaceServiceId = ServiceIds.workspace;
|
|
30
|
+
/**
|
|
31
|
+
* Legacy protocol spellings kept for lenient hosts. Exporting them here lets a
|
|
32
|
+
* host compare an old `amp.workspace` value without hard-coding it, while the
|
|
33
|
+
* server itself writes only `WorkspaceProtocol`.
|
|
34
|
+
*/
|
|
35
|
+
export { WorkspaceProtocolAliases } from "../naming/index.js";
|
|
36
|
+
const Key = { type: "string", minLength: 1, maxLength: 4096 };
|
|
37
|
+
const Keys = { type: "array", items: Key, maxItems: 100 };
|
|
38
|
+
const Kinds = ["project_depends_on", "imports", "calls", "references", "documents"];
|
|
39
|
+
const Page = {
|
|
40
|
+
offset: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
|
|
41
|
+
limit: { type: "integer", minimum: 1, maximum: 100 },
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Line-addressed page bounds. The ceiling matches the filesystem read tool so a
|
|
45
|
+
* host can map one addressing model onto both surfaces without a second limit.
|
|
46
|
+
*/
|
|
47
|
+
const LineNumber = { type: "integer", minimum: 1, maximum: Number.MAX_SAFE_INTEGER };
|
|
48
|
+
const MaxPageBytes = 262144;
|
|
49
|
+
/**
|
|
50
|
+
* Largest single write this protocol accepts. The service enforces the same
|
|
51
|
+
* ceiling on the resulting content, because line/byte splices can grow a file
|
|
52
|
+
* beyond the length of the replacement text.
|
|
53
|
+
*/
|
|
54
|
+
const MaxWriteChars = 1048576;
|
|
55
|
+
/**
|
|
56
|
+
* One line splice for `diff_write`. The validator understands nested object
|
|
57
|
+
* schemas, so the change list stays strictly typed without free-form patches.
|
|
58
|
+
*/
|
|
59
|
+
const LineChangeSchema = {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {
|
|
62
|
+
startLine: LineNumber,
|
|
63
|
+
endLine: LineNumber,
|
|
64
|
+
content: { type: "string", maxLength: MaxWriteChars },
|
|
65
|
+
},
|
|
66
|
+
required: ["startLine", "endLine", "content"],
|
|
67
|
+
additionalProperties: false,
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* One UTF-8 byte splice for `diff_write`.
|
|
71
|
+
*/
|
|
72
|
+
const ByteChangeSchema = {
|
|
73
|
+
type: "object",
|
|
74
|
+
properties: {
|
|
75
|
+
offsetBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
|
|
76
|
+
endBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
|
|
77
|
+
content: { type: "string", maxLength: MaxWriteChars },
|
|
78
|
+
},
|
|
79
|
+
required: ["offsetBytes", "endBytes", "content"],
|
|
80
|
+
additionalProperties: false,
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Build one descriptor from its canonical id.
|
|
84
|
+
*
|
|
85
|
+
* The caller supplies a `ToolIds` value rather than a leaf, so a definition
|
|
86
|
+
* cannot silently invent a name that the naming table and the alias resolver do
|
|
87
|
+
* not know about. Schema field order is fixed here because the catalog digest
|
|
88
|
+
* covers the schema as canonical JSON, not as a reordered authoring choice.
|
|
89
|
+
* `risk` is part of the descriptor rather than a side table so the digest, the
|
|
90
|
+
* registry and the MCP annotations cannot disagree about a side effect.
|
|
91
|
+
*/
|
|
92
|
+
const definition = (id, risk, description, properties, required = []) => ({
|
|
93
|
+
name: id,
|
|
94
|
+
risk,
|
|
95
|
+
description,
|
|
96
|
+
inputSchema: { type: "object", properties, required, additionalProperties: false },
|
|
97
|
+
});
|
|
98
|
+
const Definitions = [
|
|
99
|
+
definition(ToolIds.workspaceCapabilities, "read", "Discover authorized workspace projects, revision, registered Frame IDs and service limits. Does not grant new access.", {}),
|
|
100
|
+
definition(ToolIds.workspaceTree, "read", "List project roots or direct structural children with native source locations; no summary or detail bodies. Use offset for pagination.", { revision: Key, parentId: Key, ...Page }, ["revision"]),
|
|
101
|
+
definition(ToolIds.workspaceQuery, "read", "Find candidate IDs using lexical AND search and bounded graph traversal. Candidates need host Frame allocation before content reads.", {
|
|
102
|
+
revision: Key,
|
|
103
|
+
text: { type: "string", maxLength: 4096 },
|
|
104
|
+
seedIds: Keys,
|
|
105
|
+
projectIds: Keys,
|
|
106
|
+
relationKinds: { type: "array", items: { type: "string", enum: Kinds }, maxItems: 5 },
|
|
107
|
+
direction: { type: "string", enum: ["incoming", "outgoing", "both"] },
|
|
108
|
+
maxDepth: { type: "integer", minimum: 0, maximum: 10 },
|
|
109
|
+
limit: Page.limit,
|
|
110
|
+
}, ["revision"]),
|
|
111
|
+
definition(ToolIds.workspaceRelations, "read", "Page descriptive dependency/call/reference edges for one authorized node. Does not materialize either endpoint.", {
|
|
112
|
+
revision: Key,
|
|
113
|
+
nodeId: Key,
|
|
114
|
+
direction: { type: "string", enum: ["incoming", "outgoing"] },
|
|
115
|
+
relationKind: { type: "string", enum: Kinds },
|
|
116
|
+
...Page,
|
|
117
|
+
}, ["revision", "nodeId", "direction"]),
|
|
118
|
+
definition(ToolIds.workspaceDiscover, "read", "Discover authorized projects, internal modules (service/tool/...), file names and bounded content matches, plus host-registered plugins/services/tools, as one structural tree. Project nodes carry description, purpose and summary. Read-only; snippets are discovery evidence, not a detail grant.", {
|
|
119
|
+
revision: Key,
|
|
120
|
+
text: { type: "string", maxLength: 512 },
|
|
121
|
+
scope: { type: "string", enum: DiscoveryScopes },
|
|
122
|
+
moduleKind: { type: "string", enum: ModuleKinds },
|
|
123
|
+
componentKind: { type: "string", enum: ComponentKinds },
|
|
124
|
+
extension: { type: "string", maxLength: 16 },
|
|
125
|
+
pathPrefix: { type: "string", maxLength: 1024 },
|
|
126
|
+
content: { type: "boolean" },
|
|
127
|
+
maxDepth: { type: "integer", minimum: 0, maximum: 12 },
|
|
128
|
+
limit: { type: "integer", minimum: 1, maximum: 200 },
|
|
129
|
+
}, ["revision"]),
|
|
130
|
+
definition(ToolIds.workspaceMaterialize, "read", "Materialize a host-registered Frame once. Repeated calls reuse its Context. Only summaries fitting the requested and host/Frame budgets are returned.", {
|
|
131
|
+
revision: Key,
|
|
132
|
+
frameId: Key,
|
|
133
|
+
budgetTokens: { type: "integer", minimum: 1, maximum: 32000 },
|
|
134
|
+
}, ["revision", "frameId", "budgetTokens"]),
|
|
135
|
+
definition(ToolIds.workspaceRead, "read", "Read a bounded page of CAS-verified detail from an explicitly allocated, materialized target. Structural ancestors alone do not grant detail access. Page by character offset (default), by 1-based lines (startLine/maxLines) or by UTF-8 bytes (offsetBytes/maxBytes); the char `offset`/`nextOffset` pair continues any page, a byte offset inside a character advances to the next boundary, and one line longer than the page budget is returned whole. The reply also carries the containing file's `exportation` (relative files that import it) and `importation` (relative files it imports, plus truncated `external` package specifiers) from the indexed snapshot, so an edit can be scoped without a second query. A symbol or knowledge page whose containing file was written through this service answers `stale_detail` until the host refreshes the snapshot.", {
|
|
136
|
+
revision: Key,
|
|
137
|
+
contextId: Key,
|
|
138
|
+
nodeId: Key,
|
|
139
|
+
offset: Page.offset,
|
|
140
|
+
maxChars: { type: "integer", minimum: 1, maximum: 16000 },
|
|
141
|
+
startLine: LineNumber,
|
|
142
|
+
maxLines: { type: "integer", minimum: 1, maximum: 2000 },
|
|
143
|
+
offsetBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
|
|
144
|
+
maxBytes: { type: "integer", minimum: 1, maximum: MaxPageBytes },
|
|
145
|
+
}, ["revision", "contextId", "nodeId"]),
|
|
146
|
+
definition(ToolIds.workspaceWrite, "write", "Replace project content for one explicitly allocated, materialized file target. Address the whole node (default), a 1-based line range (startLine/endLine) or a UTF-8 byte range (offsetBytes/endBytes); `content` is inserted in place of that span. Line mode keeps the file's line-terminator shape: a missing final terminator is supplied and empty `content` deletes the selected lines. Byte offsets must fall on a UTF-8 character boundary. `expectRevision` is compare-and-swap against the content revision a previous read returned; `dryRun` validates and previews without asking the host to persist. The reply carries the same `exportation`/`importation` edges as `read`; the indexed snapshot is not re-parsed, so those lists describe the snapshot rather than the new text.", {
|
|
147
|
+
revision: Key,
|
|
148
|
+
contextId: Key,
|
|
149
|
+
nodeId: Key,
|
|
150
|
+
content: { type: "string", maxLength: MaxWriteChars },
|
|
151
|
+
startLine: LineNumber,
|
|
152
|
+
endLine: LineNumber,
|
|
153
|
+
offsetBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
|
|
154
|
+
endBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
|
|
155
|
+
expectRevision: { type: "string", minLength: 1, maxLength: 256 },
|
|
156
|
+
dryRun: { type: "boolean" },
|
|
157
|
+
}, ["revision", "contextId", "nodeId", "content"]),
|
|
158
|
+
definition(ToolIds.workspaceProject, "write", "Detect a project's brand from manifest and lockfile evidence (npm/pnpm/yarn/bun, Maven, Gradle, CMake, Cargo, Go, Python, Make, Composer, .NET, Bundler, Swift, sbt) with its conventional build/compile/run/test commands. `action: \"detect\"` only reads the snapshot; any other action hands exactly one host-chosen command to the runner port, so an agent can never author a command string. Without `brand` the first detected brand that defines the requested action is used; a pinned `brand` that lacks it fails `unsupported_action`. Execution is host-gated: without a runner the call fails `run_unavailable`. `dryRun` returns the command without running it.", {
|
|
159
|
+
revision: Key,
|
|
160
|
+
projectId: Key,
|
|
161
|
+
action: { type: "string", enum: ["detect", "build", "compile", "run", "test"] },
|
|
162
|
+
brand: { type: "string", minLength: 1, maxLength: 32 },
|
|
163
|
+
dryRun: { type: "boolean" },
|
|
164
|
+
}, ["revision"]),
|
|
165
|
+
definition(ToolIds.workspaceOutline, "read", "Return one cascading outline for a project: project → directories → files → symbol/knowledge nodes, each with its project-relative path and 1-based source range. File bodies and summaries are not returned. `maxDepth` and `limit` bound the tree, and each node's `childCount` reports how many children it has before truncation. Use `pathPrefix`/`extension` to keep the outline focused and `includeSymbols: false` for directories and files only.", {
|
|
166
|
+
revision: Key,
|
|
167
|
+
projectId: Key,
|
|
168
|
+
pathPrefix: { type: "string", maxLength: 1024 },
|
|
169
|
+
extension: { type: "string", maxLength: 16 },
|
|
170
|
+
maxDepth: { type: "integer", minimum: 0, maximum: 12 },
|
|
171
|
+
limit: { type: "integer", minimum: 1, maximum: 2000 },
|
|
172
|
+
includeSymbols: { type: "boolean" },
|
|
173
|
+
}, ["revision"]),
|
|
174
|
+
definition(ToolIds.workspaceDependency, "read", "Report project-level dependencies and dependents from manifest/compiler `project_depends_on` edges, with the declaring source and extraction method. File-level imports stay on `read` and `relations`. `direction` selects outgoing, incoming or both; `offset`/`limit` page the project list.", {
|
|
175
|
+
revision: Key,
|
|
176
|
+
projectId: Key,
|
|
177
|
+
direction: { type: "string", enum: ["outgoing", "incoming", "both"] },
|
|
178
|
+
offset: Page.offset,
|
|
179
|
+
limit: { type: "integer", minimum: 1, maximum: 200 },
|
|
180
|
+
}, ["revision"]),
|
|
181
|
+
definition(ToolIds.workspaceReactiveRead, "read", "Return a reactive workspace tree. In process every node is a Proxy whose `label`, `summary`, `tags`, `revision`, `childCount` and `children` are materialized on first access and cached; `toJSON` (and therefore the wire response) is a bounded plain projection of the same tree. Structural metadata only: no file bodies. Use `reactive_write` to change a cached property; the reply reports the cache version and the invalidated ancestors.", {
|
|
182
|
+
revision: Key,
|
|
183
|
+
projectId: Key,
|
|
184
|
+
nodeId: Key,
|
|
185
|
+
maxDepth: { type: "integer", minimum: 0, maximum: 12 },
|
|
186
|
+
limit: { type: "integer", minimum: 1, maximum: 2000 },
|
|
187
|
+
}, ["revision"]),
|
|
188
|
+
definition(ToolIds.workspaceReactiveWrite, "write", "Set one property on a reactive node and refresh the affected cache. `summary`, `label` and `tags` update the service-local annotation overlay and are immediately visible to the next `reactive_read`; they are not persisted to the host. `content` replaces a file's text and is the guarded write path: it needs a materialized Context, the same readable target as `write`, compare-and-swap and the host write port. The reply lists the invalidated node ids and the new cache version, plus the write payload for `content`.", {
|
|
189
|
+
revision: Key,
|
|
190
|
+
nodeId: Key,
|
|
191
|
+
property: { type: "string", enum: ["summary", "label", "tags", "content"] },
|
|
192
|
+
value: {
|
|
193
|
+
anyOf: [
|
|
194
|
+
{ type: "string", minLength: 1, maxLength: 4096 },
|
|
195
|
+
{ type: "array", items: Key, maxItems: 32 },
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
contextId: Key,
|
|
199
|
+
expectRevision: { type: "string", minLength: 1, maxLength: 256 },
|
|
200
|
+
dryRun: { type: "boolean" },
|
|
201
|
+
}, ["revision", "nodeId", "property", "value"]),
|
|
202
|
+
definition(ToolIds.workspaceDiffRead, "read", "Return a comparable tree for diffing: project → directory → file, where every node carries its content `revision` and each file reports `bytes`/`lines` derived from the stored detail. Because the identity and revision fields are stable, two calls over different snapshots can be compared directly. `includeContent` additionally returns bounded file text, and only for targets readable in the supplied materialized Context; every other file reports `content: null, contentOmitted: true`.", {
|
|
203
|
+
revision: Key,
|
|
204
|
+
projectId: Key,
|
|
205
|
+
pathPrefix: { type: "string", maxLength: 1024 },
|
|
206
|
+
extension: { type: "string", maxLength: 16 },
|
|
207
|
+
contextId: Key,
|
|
208
|
+
includeContent: { type: "boolean" },
|
|
209
|
+
limit: { type: "integer", minimum: 1, maximum: 2000 },
|
|
210
|
+
}, ["revision"]),
|
|
211
|
+
definition(ToolIds.workspaceDiffWrite, "write", "Write one file from a diff decision. Supply exactly one of `content` (whole file), `changes` (1-based line splices) or `byteChanges` (UTF-8 byte splices); line and byte changes apply bottom-up so ranges stay valid, then the whole result is persisted through the host write port. The reply reports the strategy, the line diff (`added`/`removed`/`unchanged` and bounded hunks), the content revision, and the same `exportation`/`importation` facts as `read`. Auth, CAS (`expectRevision`) and `dryRun` match `write`.", {
|
|
212
|
+
revision: Key,
|
|
213
|
+
contextId: Key,
|
|
214
|
+
nodeId: Key,
|
|
215
|
+
content: { type: "string", maxLength: MaxWriteChars },
|
|
216
|
+
changes: { type: "array", items: LineChangeSchema, maxItems: 100 },
|
|
217
|
+
byteChanges: { type: "array", items: ByteChangeSchema, maxItems: 100 },
|
|
218
|
+
contextLines: { type: "integer", minimum: 0, maximum: 20 },
|
|
219
|
+
expectRevision: { type: "string", minLength: 1, maxLength: 256 },
|
|
220
|
+
dryRun: { type: "boolean" },
|
|
221
|
+
}, ["revision", "contextId", "nodeId"]),
|
|
222
|
+
definition(ToolIds.workspaceRelease, "read", "Release this service's Context handle. Does not create an action Receipt or refund/reopen its Frame budget.", { revision: Key, contextId: Key }, ["revision", "contextId"]),
|
|
223
|
+
];
|
|
224
|
+
/**
|
|
225
|
+
* Return fresh copies of the descriptors.
|
|
226
|
+
*
|
|
227
|
+
* The definitions are module-level state; handing out the originals would let
|
|
228
|
+
* one adapter's tampering change what another adapter advertises. The clone
|
|
229
|
+
* keeps every caller's mutations local without duplicating the source table.
|
|
230
|
+
*/
|
|
231
|
+
export const workspaceToolDefinitions = () => structuredClone(Definitions);
|
|
232
|
+
/**
|
|
233
|
+
* Canonical tool id to its single leaf segment.
|
|
234
|
+
*
|
|
235
|
+
* Dispatch needs the operation token, and parsing it once here means the
|
|
236
|
+
* service never slices a name by hand or re-derives a convention the grammar
|
|
237
|
+
* already owns. Deriving from `Definitions` rather than a second literal table
|
|
238
|
+
* keeps the map and the advertised tools from drifting apart; a descriptor that
|
|
239
|
+
* stops being a single-leaf workspace tool fails at module load instead of at
|
|
240
|
+
* the first call.
|
|
241
|
+
*/
|
|
242
|
+
const WorkspaceToolLeaves = new Map(Definitions.map((tool) => {
|
|
243
|
+
const parsed = parseId(tool.name);
|
|
244
|
+
if (parsed.kind !== "tool" || parsed.component !== "workspace" || parsed.leaf.length < 1 || parsed.leaf.length > MaxLeafSegments) {
|
|
245
|
+
throw new Error(`workspace tool id must be a one- or two-leaf tool in the workspace component: "${tool.name}"`);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Two-segment leaves (`reactive_read`, `diff_write`) keep their full
|
|
249
|
+
* spelling so the dispatcher can switch on one stable token. The
|
|
250
|
+
* grammar already caps the segment count, so joining is unambiguous.
|
|
251
|
+
*/
|
|
252
|
+
return [tool.name, parsed.leaf.join("_")];
|
|
253
|
+
}));
|
|
254
|
+
/**
|
|
255
|
+
* Frozen-contract alias for the leaf index; the local binding stays PascalCase
|
|
256
|
+
* because it is module-level data, matching the alias convention in naming.
|
|
257
|
+
*/
|
|
258
|
+
export { WorkspaceToolLeaves as workspaceToolLeaves };
|
package/lib/receipt/receipt.d.ts
CHANGED
|
@@ -23,6 +23,14 @@ export interface Receipt {
|
|
|
23
23
|
predicted_voi?: Confidence;
|
|
24
24
|
realized_voi?: Confidence;
|
|
25
25
|
handle?: Handle;
|
|
26
|
+
/**
|
|
27
|
+
* Optional normative links: which assignment/duty or interaction contract
|
|
28
|
+
* this cost belongs to. They make cost attribution possible without
|
|
29
|
+
* changing the receipt's evidence semantics.
|
|
30
|
+
*/
|
|
31
|
+
assignment?: Id;
|
|
32
|
+
duty?: Id;
|
|
33
|
+
interaction?: Id;
|
|
26
34
|
note?: string;
|
|
27
35
|
}
|
|
28
36
|
/**
|
package/lib/registry/content.js
CHANGED
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
* hashes every file under the directory into a sorted manifest, then hashes the
|
|
6
6
|
* manifest, so a declaration can bind the actual code. `verifyModuleContent`
|
|
7
7
|
* recomputes it and reports drift.
|
|
8
|
+
*
|
|
9
|
+
* Files are hashed as bytes, not as decoded text. Reading with `"utf8"` maps
|
|
10
|
+
* every invalid byte sequence to U+FFFD, so a PNG and a ZIP in the same tree
|
|
11
|
+
* could share a digest; bytes are the only thing a content binding can mean.
|
|
12
|
+
* For a file that is valid UTF-8 the two forms agree, which is why the digest
|
|
13
|
+
* of a text-only module does not change.
|
|
8
14
|
*/
|
|
9
15
|
import { readdir, readFile } from "node:fs/promises";
|
|
10
16
|
import path from "node:path";
|
|
17
|
+
import { rawHex } from "../fingerprint/index.js";
|
|
11
18
|
import { digestOf } from "../semantic/canonical.js";
|
|
12
|
-
import { sha256Hex } from "../semantic/sha256.js";
|
|
13
19
|
const Skip = new Set(["node_modules", ".git", ".tscheck", "dist"]);
|
|
14
20
|
const walk = async (root, current, out) => {
|
|
15
21
|
const entries = await readdir(current, { withFileTypes: true });
|
|
@@ -26,8 +32,8 @@ const walk = async (root, current, out) => {
|
|
|
26
32
|
if (!entry.isFile()) {
|
|
27
33
|
continue;
|
|
28
34
|
}
|
|
29
|
-
const
|
|
30
|
-
out.push({ path: path.relative(root, full).split(path.sep).join("/"), digest:
|
|
35
|
+
const bytes = await readFile(full);
|
|
36
|
+
out.push({ path: path.relative(root, full).split(path.sep).join("/"), digest: rawHex(bytes) });
|
|
31
37
|
}
|
|
32
38
|
};
|
|
33
39
|
export const collectDirectory = async (root) => {
|
|
@@ -39,7 +39,7 @@ export class KernelRuntime {
|
|
|
39
39
|
return result;
|
|
40
40
|
}
|
|
41
41
|
serialize(turn) {
|
|
42
|
-
|
|
42
|
+
const body = {
|
|
43
43
|
turnId: turn.turnId,
|
|
44
44
|
sessionId: turn.sessionId,
|
|
45
45
|
scope: turn.scope,
|
|
@@ -101,5 +101,13 @@ export class KernelRuntime {
|
|
|
101
101
|
trace: turn.trace,
|
|
102
102
|
runtimeReceiptId: turn.receiptId,
|
|
103
103
|
};
|
|
104
|
+
const keys = Object.keys(body);
|
|
105
|
+
for (let index = 0; index < keys.length; index += 1) {
|
|
106
|
+
const key = keys[index];
|
|
107
|
+
if (body[key] === (void 0)) {
|
|
108
|
+
delete body[key];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return body;
|
|
104
112
|
}
|
|
105
113
|
}
|
package/lib/scenario/scenario.js
CHANGED
|
@@ -126,7 +126,7 @@ const vote = (weights, read) => {
|
|
|
126
126
|
*/
|
|
127
127
|
export const normalizeScenarioMix = (mix) => {
|
|
128
128
|
const result = {};
|
|
129
|
-
let
|
|
129
|
+
let maximum = 0;
|
|
130
130
|
for (let index = 0; index < ScenarioKinds.length; index += 1) {
|
|
131
131
|
const kind = ScenarioKinds[index];
|
|
132
132
|
const raw = mix[kind] ?? 0;
|
|
@@ -134,14 +134,15 @@ export const normalizeScenarioMix = (mix) => {
|
|
|
134
134
|
throw new RangeError(`scenario weight ${kind} must be a finite non-negative number`);
|
|
135
135
|
}
|
|
136
136
|
result[kind] = raw;
|
|
137
|
-
|
|
137
|
+
maximum = Math.max(maximum, raw);
|
|
138
138
|
}
|
|
139
|
-
if (
|
|
139
|
+
if (maximum <= 0) {
|
|
140
140
|
throw new RangeError("scenario mix must contain at least one positive weight");
|
|
141
141
|
}
|
|
142
|
+
const total = ScenarioKinds.reduce((sum, kind) => sum + result[kind] / maximum, 0);
|
|
142
143
|
for (let index = 0; index < ScenarioKinds.length; index += 1) {
|
|
143
144
|
const kind = ScenarioKinds[index];
|
|
144
|
-
result[kind]
|
|
145
|
+
result[kind] = (result[kind] / maximum) / total;
|
|
145
146
|
}
|
|
146
147
|
return result;
|
|
147
148
|
};
|