attention-manifest-protocol 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +341 -283
- package/CHANGELOG.zh-CN.md +51 -8
- package/README.md +250 -169
- package/README.zh-CN.md +251 -169
- package/lib/assignment/assign.d.ts +102 -0
- package/lib/assignment/assign.js +556 -0
- package/lib/assignment/binding.d.ts +103 -0
- package/lib/assignment/binding.js +575 -0
- package/lib/assignment/errors.d.ts +14 -0
- package/lib/assignment/errors.js +16 -0
- package/lib/assignment/guards.d.ts +18 -0
- package/lib/assignment/guards.js +28 -0
- package/lib/assignment/index.d.ts +10 -0
- package/lib/assignment/index.js +10 -0
- package/lib/assignment/types.d.ts +169 -0
- package/lib/assignment/types.js +1 -0
- package/lib/attention/budget.d.ts +1 -1
- package/lib/attention/budget.js +31 -9
- package/lib/bayes/engine.js +2 -1
- package/lib/bayes/reliability.js +25 -10
- package/lib/boundary/frame.d.ts +10 -4
- package/lib/boundary/frame.js +346 -109
- package/lib/boundary/kinds.d.ts +11 -0
- package/lib/boundary/kinds.js +33 -0
- package/lib/boundary/refTable.d.ts +19 -9
- package/lib/boundary/refTable.js +128 -30
- package/lib/boundary/toolCall.d.ts +22 -10
- package/lib/boundary/toolCall.js +798 -97
- package/lib/concept/conceptBudget.js +10 -1
- package/lib/concurrency/idempotency.d.ts +4 -3
- package/lib/concurrency/idempotency.js +57 -13
- package/lib/concurrency/retry.js +18 -3
- package/lib/context/agentContext.d.ts +13 -0
- package/lib/context/agentContext.js +14 -1
- package/lib/context/ast.d.ts +4 -1
- package/lib/context/ast.js +13 -3
- package/lib/context/contentStore.js +22 -9
- package/lib/context/contextBuilder.d.ts +457 -0
- package/lib/context/contextBuilder.js +1395 -0
- package/lib/context/contextPackage.d.ts +214 -0
- package/lib/context/contextPackage.js +191 -0
- package/lib/context/index.d.ts +14 -3
- package/lib/context/index.js +9 -1
- package/lib/context/relevance.d.ts +171 -0
- package/lib/context/relevance.js +250 -0
- package/lib/context/workspaceDiff.d.ts +105 -0
- package/lib/context/workspaceDiff.js +238 -0
- package/lib/context/workspaceService.d.ts +236 -1
- package/lib/context/workspaceService.js +1501 -73
- package/lib/cooperation/collaboration.d.ts +9 -0
- package/lib/cooperation/session.d.ts +4 -4
- package/lib/cooperation/session.js +3 -3
- package/lib/database/adapter/filesystemStore.d.ts +145 -0
- package/lib/database/adapter/filesystemStore.js +321 -0
- package/lib/database/adapter/index.d.ts +2 -0
- package/lib/database/adapter/index.js +2 -0
- package/lib/database/adapter/workspaceSessionStore.d.ts +118 -0
- package/lib/database/adapter/workspaceSessionStore.js +120 -0
- package/lib/database/entity/fileGraph.d.ts +53 -0
- package/lib/database/entity/fileGraph.js +15 -0
- package/lib/database/entity/fileTree.d.ts +76 -0
- package/lib/database/entity/fileTree.js +39 -0
- package/lib/database/entity/hook.d.ts +29 -0
- package/lib/database/entity/hook.js +18 -0
- package/lib/database/entity/index.d.ts +4 -0
- package/lib/database/entity/index.js +4 -0
- package/lib/database/entity/workspaceSession.d.ts +53 -0
- package/lib/database/entity/workspaceSession.js +28 -0
- package/lib/database/repository/fileAnnotationRepository.d.ts +75 -0
- package/lib/database/repository/fileAnnotationRepository.js +109 -0
- package/lib/database/repository/fileGraphRepository.d.ts +188 -0
- package/lib/database/repository/fileGraphRepository.js +648 -0
- package/lib/database/repository/fileNodeRepository.d.ts +116 -0
- package/lib/database/repository/fileNodeRepository.js +263 -0
- package/lib/database/repository/fileOutlineRepository.d.ts +40 -0
- package/lib/database/repository/fileOutlineRepository.js +104 -0
- package/lib/database/repository/fileWriteRepository.d.ts +41 -0
- package/lib/database/repository/fileWriteRepository.js +93 -0
- package/lib/database/repository/hookRepository.d.ts +67 -0
- package/lib/database/repository/hookRepository.js +150 -0
- package/lib/database/repository/index.d.ts +7 -0
- package/lib/database/repository/index.js +7 -0
- package/lib/database/repository/workspaceSessionRepository.d.ts +134 -0
- package/lib/database/repository/workspaceSessionRepository.js +327 -0
- package/lib/database/service/database.d.ts +14 -0
- package/lib/database/service/database.js +21 -0
- package/lib/database/sql/schema.js +187 -0
- package/lib/database/store/database.js +6 -1
- package/lib/delegate/team.d.ts +5 -0
- package/lib/delegate/team.js +83 -20
- package/lib/discover/classify.d.ts +20 -0
- package/lib/discover/classify.js +85 -0
- package/lib/discover/host.d.ts +20 -0
- package/lib/discover/host.js +89 -0
- package/lib/discover/index.d.ts +11 -0
- package/lib/discover/index.js +11 -0
- package/lib/discover/kinds.d.ts +14 -0
- package/lib/discover/kinds.js +23 -0
- package/lib/discover/tree.d.ts +7 -0
- package/lib/discover/tree.js +432 -0
- package/lib/discover/types.d.ts +115 -0
- package/lib/discover/types.js +1 -0
- package/lib/error/boundaryRejection.d.ts +1 -1
- package/lib/evaluation/agreement.js +2 -2
- package/lib/execution/handles.js +6 -0
- package/lib/execution/pin.js +2 -2
- package/lib/file/cfb.d.ts +56 -0
- package/lib/file/cfb.js +396 -0
- package/lib/file/dependency.d.ts +151 -0
- package/lib/file/dependency.js +568 -0
- package/lib/file/directory.d.ts +34 -0
- package/lib/file/directory.js +141 -0
- package/lib/file/errors.d.ts +20 -0
- package/lib/file/errors.js +18 -0
- package/lib/file/exportGraph.d.ts +31 -0
- package/lib/file/exportGraph.js +554 -0
- package/lib/file/file.d.ts +40 -0
- package/lib/file/file.js +339 -0
- package/lib/file/importGraph.d.ts +121 -0
- package/lib/file/importGraph.js +1022 -0
- package/lib/file/index.d.ts +45 -0
- package/lib/file/index.js +30 -0
- package/lib/file/metadata.d.ts +66 -0
- package/lib/file/metadata.js +470 -0
- package/lib/file/path.d.ts +60 -0
- package/lib/file/path.js +259 -0
- package/lib/file/read.d.ts +168 -0
- package/lib/file/read.js +541 -0
- package/lib/file/runtime.d.ts +95 -0
- package/lib/file/runtime.js +150 -0
- package/lib/file/service.d.ts +227 -0
- package/lib/file/service.js +663 -0
- package/lib/file/syntaxTree.d.ts +7 -0
- package/lib/file/syntaxTree.js +38 -0
- package/lib/file/time.d.ts +38 -0
- package/lib/file/time.js +44 -0
- package/lib/file/tree.d.ts +53 -0
- package/lib/file/tree.js +417 -0
- package/lib/file/types.d.ts +371 -0
- package/lib/file/types.js +1 -0
- package/lib/file/write.d.ts +159 -0
- package/lib/file/write.js +1028 -0
- package/lib/file/zip.d.ts +35 -0
- package/lib/file/zip.js +349 -0
- package/lib/fingerprint/algorithm.d.ts +97 -0
- package/lib/fingerprint/algorithm.js +271 -0
- package/lib/fingerprint/bytes.d.ts +18 -0
- package/lib/fingerprint/bytes.js +31 -0
- package/lib/fingerprint/error.d.ts +73 -0
- package/lib/fingerprint/error.js +86 -0
- package/lib/fingerprint/file.d.ts +71 -0
- package/lib/fingerprint/file.js +254 -0
- package/lib/fingerprint/index.d.ts +37 -0
- package/lib/fingerprint/index.js +12 -0
- package/lib/fingerprint/json.d.ts +41 -0
- package/lib/fingerprint/json.js +94 -0
- package/lib/fingerprint/number.d.ts +32 -0
- package/lib/fingerprint/number.js +95 -0
- package/lib/fingerprint/policy.d.ts +54 -0
- package/lib/fingerprint/policy.js +50 -0
- package/lib/fingerprint/preimage.d.ts +84 -0
- package/lib/fingerprint/preimage.js +133 -0
- package/lib/fingerprint/raw.d.ts +26 -0
- package/lib/fingerprint/raw.js +45 -0
- package/lib/fingerprint/ref.d.ts +39 -0
- package/lib/fingerprint/ref.js +178 -0
- package/lib/fingerprint/text.d.ts +42 -0
- package/lib/fingerprint/text.js +155 -0
- package/lib/fingerprint/tree.d.ts +56 -0
- package/lib/fingerprint/tree.js +288 -0
- package/lib/fingerprint/verify.d.ts +20 -0
- package/lib/fingerprint/verify.js +99 -0
- package/lib/global/filesystem.d.ts +43 -0
- package/lib/global/filesystem.js +75 -0
- package/lib/global/index.d.ts +8 -0
- package/lib/global/index.js +8 -0
- package/lib/global/service.d.ts +51 -0
- package/lib/global/service.js +98 -0
- package/lib/governance/transport.js +18 -6
- package/lib/hook/ast.d.ts +29 -0
- package/lib/hook/ast.js +22 -0
- package/lib/hook/code.d.ts +55 -0
- package/lib/hook/code.js +47 -0
- package/lib/hook/dependency.d.ts +45 -0
- package/lib/hook/dependency.js +28 -0
- package/lib/hook/diff.d.ts +114 -0
- package/lib/hook/diff.js +327 -0
- package/lib/hook/exportation.d.ts +31 -0
- package/lib/hook/exportation.js +24 -0
- package/lib/hook/file.d.ts +44 -0
- package/lib/hook/file.js +154 -0
- package/lib/hook/importation.d.ts +33 -0
- package/lib/hook/importation.js +22 -0
- package/lib/hook/index.d.ts +30 -0
- package/lib/hook/index.js +23 -0
- package/lib/hook/outline.d.ts +35 -0
- package/lib/hook/outline.js +27 -0
- package/lib/hook/project.d.ts +65 -0
- package/lib/hook/project.js +217 -0
- package/lib/hook/types.d.ts +114 -0
- package/lib/hook/types.js +407 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +9 -0
- package/lib/lock/lease.js +28 -3
- package/lib/manifest/cardSign.d.ts +1 -1
- package/lib/manifest/cardSign.js +37 -7
- package/lib/manifest/federation.js +13 -6
- package/lib/manifest/trust.d.ts +2 -0
- package/lib/manifest/trust.js +27 -6
- package/lib/module/index.d.ts +4 -0
- package/lib/module/index.js +4 -0
- package/lib/module/mcp/client.js +21 -2
- package/lib/module/mcp/filesystemServer.d.ts +24 -0
- package/lib/module/mcp/filesystemServer.js +102 -0
- package/lib/module/mcp/http.js +32 -19
- package/lib/module/mcp/workspaceServer.js +20 -3
- package/lib/module/tool/filesystemExecutor.d.ts +18 -0
- package/lib/module/tool/filesystemExecutor.js +49 -0
- package/lib/module/tool/globalExecutor.d.ts +17 -0
- package/lib/module/tool/globalExecutor.js +39 -0
- package/lib/module/tool/globalFilesystemExecutor.d.ts +18 -0
- package/lib/module/tool/globalFilesystemExecutor.js +49 -0
- package/lib/module/tool/workspaceExecutor.d.ts +9 -0
- package/lib/module/tool/workspaceExecutor.js +16 -3
- package/lib/naming/aliases.d.ts +48 -0
- package/lib/naming/aliases.js +79 -0
- package/lib/naming/catalog.d.ts +117 -0
- package/lib/naming/catalog.js +108 -0
- package/lib/naming/grammar.d.ts +67 -0
- package/lib/naming/grammar.js +212 -0
- package/lib/naming/ids.d.ts +157 -0
- package/lib/naming/ids.js +119 -0
- package/lib/naming/index.d.ts +13 -0
- package/lib/naming/index.js +13 -0
- package/lib/outline/index.d.ts +9 -0
- package/lib/outline/index.js +8 -0
- package/lib/outline/office.d.ts +160 -0
- package/lib/outline/office.js +2375 -0
- package/lib/outline/officeBridge.d.ts +32 -0
- package/lib/outline/officeBridge.js +27 -0
- package/lib/outline/outline.d.ts +159 -0
- package/lib/outline/outline.js +837 -0
- package/lib/outline/outlineIndex.d.ts +97 -0
- package/lib/outline/outlineIndex.js +325 -0
- package/lib/outline/outlineKeywords.d.ts +59 -0
- package/lib/outline/outlineKeywords.js +143 -0
- package/lib/outline/outlineStrategies.d.ts +414 -0
- package/lib/outline/outlineStrategies.js +8324 -0
- package/lib/outline/reactOutline.d.ts +37 -0
- package/lib/outline/reactOutline.js +1070 -0
- package/lib/outline/shellOutline.d.ts +65 -0
- package/lib/outline/shellOutline.js +873 -0
- package/lib/outline/sqlOutline.d.ts +170 -0
- package/lib/outline/sqlOutline.js +1536 -0
- package/lib/outline/strategy.d.ts +46 -0
- package/lib/outline/strategy.js +1 -0
- package/lib/outline/types.d.ts +95 -0
- package/lib/outline/types.js +1 -0
- package/lib/outline/visualBasicOutline.d.ts +27 -0
- package/lib/outline/visualBasicOutline.js +750 -0
- package/lib/protocol/filesystem.d.ts +55 -0
- package/lib/protocol/filesystem.js +105 -0
- package/lib/protocol/global.d.ts +42 -0
- package/lib/protocol/global.js +63 -0
- package/lib/protocol/globalFilesystem.d.ts +40 -0
- package/lib/protocol/globalFilesystem.js +59 -0
- package/lib/protocol/index.d.ts +4 -0
- package/lib/protocol/index.js +4 -0
- package/lib/protocol/protocol.d.ts +4 -0
- package/lib/protocol/wire.js +5 -2
- package/lib/protocol/workspace.d.ts +305 -0
- package/lib/protocol/workspace.js +258 -0
- package/lib/receipt/receipt.d.ts +8 -0
- package/lib/registry/content.js +9 -3
- package/lib/runtime/kernelRuntime.js +9 -1
- package/lib/scenario/scenario.js +5 -4
- package/lib/semantic/canonical.d.ts +61 -0
- package/lib/semantic/canonical.js +135 -8
- package/lib/semantic/jsonValue.d.ts +31 -0
- package/lib/semantic/jsonValue.js +122 -0
- package/lib/semantic/sha256.js +3 -0
- package/lib/semantic/time.d.ts +14 -0
- package/lib/semantic/time.js +56 -0
- package/lib/session/context.d.ts +76 -0
- package/lib/session/context.js +419 -0
- package/lib/session/errors.d.ts +24 -0
- package/lib/session/errors.js +22 -0
- package/lib/session/identity.d.ts +24 -0
- package/lib/session/identity.js +56 -0
- package/lib/session/index.d.ts +14 -0
- package/lib/session/index.js +12 -0
- package/lib/session/registry.d.ts +130 -0
- package/lib/session/registry.js +908 -0
- package/lib/session/types.d.ts +227 -0
- package/lib/session/types.js +14 -0
- package/lib/structure/index.d.ts +1 -0
- package/lib/structure/index.js +1 -0
- package/lib/structure/trie.d.ts +88 -0
- package/lib/structure/trie.js +183 -0
- package/lib/syntax/byteIndex.d.ts +44 -0
- package/lib/syntax/byteIndex.js +148 -0
- package/lib/syntax/charset.d.ts +88 -0
- package/lib/syntax/charset.js +276 -0
- package/lib/syntax/index.d.ts +6 -0
- package/lib/syntax/index.js +5 -0
- package/lib/syntax/syntaxRegistry.d.ts +150 -0
- package/lib/syntax/syntaxRegistry.js +314 -0
- package/lib/syntax/syntaxTree.d.ts +106 -0
- package/lib/syntax/syntaxTree.js +668 -0
- package/lib/syntax/types.d.ts +15 -0
- package/lib/syntax/types.js +1 -0
- package/lib/types/common.d.ts +1 -1
- package/lib/window/index.d.ts +3 -0
- package/lib/window/index.js +1 -0
- package/package.json +72 -193
- package/.editorconfig +0 -12
- package/.prettierignore +0 -17
- package/MCP-Token/347/250/216/344/270/216/344/270/213/344/270/200/344/273/243/345/267/245/345/205/267/345/215/217/350/256/256.html +0 -1763
- package/docs/annotation-campaign-A.csv +0 -54
- package/docs/annotation-campaign-B.csv +0 -54
- package/docs/annotation-campaign.csv +0 -54
- package/docs/eval/annotations-A.jsonl +0 -16
- package/docs/eval/annotations.json +0 -122
- package/docs/eval/recorded-labels.json +0 -12
- package/docs/eval/replay-cases.json +0 -14
- package/docs/eval/replay-labels-b.json +0 -14
- package/docs/examples/attention-request.json +0 -16
- package/docs/examples/checkpoint.json +0 -15
- package/docs/examples/claim.json +0 -66
- package/docs/examples/collaboration.json +0 -66
- package/docs/examples/concept-checkpoint.json +0 -15
- package/docs/examples/concept-prune-plan.json +0 -45
- package/docs/examples/federation.json +0 -126
- package/docs/examples/frame-chain.json +0 -77
- package/docs/examples/ledger-snapshot.json +0 -108
- package/docs/examples/manifest.json +0 -77
- package/docs/examples/message.json +0 -19
- package/docs/examples/other-model.json +0 -45
- package/docs/examples/plan.json +0 -50
- package/docs/examples/prune-plan.json +0 -48
- package/docs/examples/receipt.json +0 -22
- package/docs/examples/runtime-run.json +0 -573
- package/docs/examples/team.json +0 -66
- package/docs/examples/verb-note.json +0 -11
- package/docs/probes/bayes-scores.json +0 -1452
- package/docs/probes/calibration-imported.json +0 -141
- package/docs/probes/context-ast-deepseek.json +0 -1577
- package/docs/probes/deepseek-probe.json +0 -917
- package/docs/probes/eval-recorded-replay.json +0 -597
- package/docs/probes/eval-replay.json +0 -124
- package/docs/probes/eval-summary.json +0 -42
- package/docs/probes/runtime-eval.json +0 -4230
- package/docs/schemas/collaboration.schema.json +0 -73
- package/docs/schemas/common.schema.json +0 -125
- package/docs/schemas/compaction.schema.json +0 -121
- package/docs/schemas/concept-compaction.schema.json +0 -73
- package/docs/schemas/concept.schema.json +0 -97
- package/docs/schemas/epistemic.schema.json +0 -178
- package/docs/schemas/federation.schema.json +0 -66
- package/docs/schemas/frame.schema.json +0 -86
- package/docs/schemas/ledger-snapshot.schema.json +0 -30
- package/docs/schemas/manifest.schema.json +0 -169
- package/docs/schemas/message.schema.json +0 -41
- package/docs/schemas/plan.schema.json +0 -189
- package/docs/schemas/receipt.schema.json +0 -45
- package/docs/schemas/social.schema.json +0 -153
- package/docs/schemas/team.schema.json +0 -56
- package/docs/schemas/verb.schema.json +0 -120
- package/eslint.config.mts +0 -96
- package/index.html +0 -13
- package/lib/context/workspaceProtocol.d.ts +0 -30
- package/lib/context/workspaceProtocol.js +0 -49
- package/prettier.config.mts +0 -37
- package/public/favicon.svg +0 -1
- package/public/icons.svg +0 -24
- package/src/attention/attention.ts +0 -347
- package/src/attention/budget.ts +0 -72
- package/src/attention/cognition.ts +0 -519
- package/src/attention/index.ts +0 -8
- package/src/attention/interrupts.ts +0 -228
- package/src/attention/resource.ts +0 -316
- package/src/attention/social.ts +0 -217
- package/src/attention/socialTypes.ts +0 -115
- package/src/authz/authz.ts +0 -305
- package/src/authz/index.ts +0 -1
- package/src/bayes/calibration.ts +0 -204
- package/src/bayes/calibrationRegistry.ts +0 -111
- package/src/bayes/calibrationSelection.ts +0 -154
- package/src/bayes/engine.ts +0 -532
- package/src/bayes/index.ts +0 -6
- package/src/bayes/reliability.ts +0 -62
- package/src/bayes/scopedPriors.ts +0 -88
- package/src/boundary/frame.ts +0 -322
- package/src/boundary/ids.ts +0 -14
- package/src/boundary/index.ts +0 -12
- package/src/boundary/refTable.ts +0 -125
- package/src/boundary/toolCall.ts +0 -212
- package/src/concept/concept.ts +0 -75
- package/src/concept/conceptBudget.ts +0 -346
- package/src/concept/conceptBudgetTypes.ts +0 -79
- package/src/concept/index.ts +0 -3
- package/src/concurrency/idempotency.ts +0 -41
- package/src/concurrency/index.ts +0 -5
- package/src/concurrency/mutex.ts +0 -26
- package/src/concurrency/namedLocks.ts +0 -35
- package/src/concurrency/retry.ts +0 -50
- package/src/concurrency/worker.ts +0 -128
- package/src/context/agentContext.ts +0 -308
- package/src/context/ast.ts +0 -499
- package/src/context/contentStore.ts +0 -75
- package/src/context/context.ts +0 -65
- package/src/context/contextIndex.ts +0 -85
- package/src/context/document.ts +0 -137
- package/src/context/fileStorePath.ts +0 -14
- package/src/context/index.ts +0 -43
- package/src/context/lifecycle.ts +0 -221
- package/src/context/projections.ts +0 -151
- package/src/context/workspace.ts +0 -422
- package/src/context/workspaceProtocol.ts +0 -112
- package/src/context/workspaceService.ts +0 -423
- package/src/cooperation/board.ts +0 -104
- package/src/cooperation/collaboration.ts +0 -60
- package/src/cooperation/index.ts +0 -6
- package/src/cooperation/merge.ts +0 -190
- package/src/cooperation/metrics.ts +0 -57
- package/src/cooperation/session.ts +0 -131
- package/src/cooperation/unified.ts +0 -56
- package/src/counter.ts +0 -9
- package/src/database/adapter/adapters.ts +0 -35
- package/src/database/adapter/index.ts +0 -4
- package/src/database/adapter/runtimeSink.ts +0 -74
- package/src/database/adapter/sessionStore.ts +0 -32
- package/src/database/adapter/turnStore.ts +0 -23
- package/src/database/entity/agent.ts +0 -199
- package/src/database/entity/entity.ts +0 -1046
- package/src/database/entity/handle.ts +0 -79
- package/src/database/entity/index.ts +0 -32
- package/src/database/entity/message.ts +0 -74
- package/src/database/entity/meta.ts +0 -11
- package/src/database/entity/object.ts +0 -42
- package/src/database/entity/outbox.ts +0 -15
- package/src/database/entity/process.ts +0 -65
- package/src/database/entity/registry.ts +0 -155
- package/src/database/entity/runtimeApproval.ts +0 -30
- package/src/database/entity/runtimeSession.ts +0 -13
- package/src/database/entity/runtimeTurn.ts +0 -15
- package/src/database/entity/thread.ts +0 -85
- package/src/database/entity/window.ts +0 -85
- package/src/database/entity/worker.ts +0 -90
- package/src/database/index.ts +0 -6
- package/src/database/repository/addressSpaceRepository.ts +0 -72
- package/src/database/repository/agentRepository.ts +0 -460
- package/src/database/repository/base.ts +0 -41
- package/src/database/repository/executionRepository.ts +0 -477
- package/src/database/repository/handleRepository.ts +0 -64
- package/src/database/repository/index.ts +0 -20
- package/src/database/repository/messageRepository.ts +0 -52
- package/src/database/repository/objectRepository.ts +0 -69
- package/src/database/repository/outboxRepository.ts +0 -63
- package/src/database/repository/processRepository.ts +0 -58
- package/src/database/repository/registryRepository.ts +0 -119
- package/src/database/repository/repository.ts +0 -491
- package/src/database/repository/runtimeApprovalRepository.ts +0 -44
- package/src/database/repository/runtimeSessionRepository.ts +0 -27
- package/src/database/repository/runtimeTurnRepository.ts +0 -39
- package/src/database/repository/socialRepository.ts +0 -185
- package/src/database/repository/threadRepository.ts +0 -57
- package/src/database/repository/windowRepository.ts +0 -88
- package/src/database/repository/workerRepository.ts +0 -69
- package/src/database/service/database.ts +0 -90
- package/src/database/service/handleService.ts +0 -48
- package/src/database/service/index.ts +0 -16
- package/src/database/service/messageService.ts +0 -61
- package/src/database/service/objectService.ts +0 -59
- package/src/database/service/processService.ts +0 -61
- package/src/database/service/registryServices.ts +0 -88
- package/src/database/service/service.ts +0 -183
- package/src/database/service/stepService.ts +0 -53
- package/src/database/service/threadService.ts +0 -65
- package/src/database/service/windowService.ts +0 -30
- package/src/database/service/workerService.ts +0 -57
- package/src/database/sql/index.ts +0 -3
- package/src/database/sql/schema.ts +0 -418
- package/src/database/sql/sql.ts +0 -543
- package/src/database/store/database.ts +0 -210
- package/src/database/store/index.ts +0 -3
- package/src/database/store/store.ts +0 -266
- package/src/delegate/index.ts +0 -2
- package/src/delegate/team.ts +0 -268
- package/src/delegate/teamTypes.ts +0 -47
- package/src/diagnosis/checklist.ts +0 -74
- package/src/diagnosis/context.ts +0 -93
- package/src/diagnosis/frame.ts +0 -256
- package/src/diagnosis/index.ts +0 -5
- package/src/diagnosis/router.ts +0 -72
- package/src/diagnosis/types.ts +0 -89
- package/src/error/agentError.ts +0 -16
- package/src/error/ampError.ts +0 -20
- package/src/error/authzError.ts +0 -14
- package/src/error/boundaryRejection.ts +0 -20
- package/src/error/index.ts +0 -7
- package/src/error/kernelError.ts +0 -27
- package/src/error/mailboxError.ts +0 -9
- package/src/error/windowError.ts +0 -12
- package/src/evaluation/agreement.ts +0 -96
- package/src/evaluation/index.ts +0 -2
- package/src/evaluation/labels.ts +0 -241
- package/src/evidence/evidenceGraph.ts +0 -205
- package/src/evidence/index.ts +0 -4
- package/src/evidence/revalidation.ts +0 -191
- package/src/execution/exec.ts +0 -408
- package/src/execution/handles.ts +0 -65
- package/src/execution/index.ts +0 -3
- package/src/execution/pin.ts +0 -154
- package/src/frame/frame.ts +0 -70
- package/src/frame/index.ts +0 -1
- package/src/goal/goal.ts +0 -43
- package/src/goal/index.ts +0 -2
- package/src/goal/plan.ts +0 -196
- package/src/governance/attentionManifest.ts +0 -802
- package/src/governance/audit.ts +0 -362
- package/src/governance/budget.ts +0 -628
- package/src/governance/context.ts +0 -356
- package/src/governance/control.ts +0 -159
- package/src/governance/cooperation.ts +0 -479
- package/src/governance/credential.ts +0 -359
- package/src/governance/httpServer.ts +0 -99
- package/src/governance/index.ts +0 -32
- package/src/governance/legal.ts +0 -574
- package/src/governance/matrix.ts +0 -460
- package/src/governance/perspectives.ts +0 -406
- package/src/governance/signing.ts +0 -407
- package/src/governance/store.ts +0 -125
- package/src/governance/switching.ts +0 -459
- package/src/governance/toolPolicy.ts +0 -80
- package/src/governance/transport.ts +0 -204
- package/src/governance/types.ts +0 -380
- package/src/governance/workflow.ts +0 -743
- package/src/index.ts +0 -11
- package/src/interaction/index.ts +0 -1
- package/src/interaction/interaction.ts +0 -391
- package/src/ipc/index.ts +0 -4
- package/src/ipc/mailbox.ts +0 -132
- package/src/ipc/memorySocialStore.ts +0 -93
- package/src/ipc/social.ts +0 -93
- package/src/kernel/index.ts +0 -14
- package/src/kernel/scheduler.ts +0 -498
- package/src/ledger/checkpoint.ts +0 -304
- package/src/ledger/index.ts +0 -4
- package/src/ledger/ledger.ts +0 -31
- package/src/ledger/persistence.ts +0 -159
- package/src/ledger/share.ts +0 -80
- package/src/lock/index.ts +0 -2
- package/src/lock/lease.ts +0 -74
- package/src/main.ts +0 -199
- package/src/manifest/agentCard.ts +0 -72
- package/src/manifest/cardSign.ts +0 -87
- package/src/manifest/federation.ts +0 -237
- package/src/manifest/federationTypes.ts +0 -55
- package/src/manifest/index.ts +0 -8
- package/src/manifest/keys.ts +0 -643
- package/src/manifest/manifest.ts +0 -114
- package/src/manifest/sign.ts +0 -134
- package/src/manifest/trust.ts +0 -146
- package/src/mission/index.ts +0 -2
- package/src/mission/missionQueue.ts +0 -75
- package/src/module/index.ts +0 -9
- package/src/module/llm/deepseek.ts +0 -214
- package/src/module/llm/llm.ts +0 -84
- package/src/module/mcp/client.ts +0 -110
- package/src/module/mcp/http.ts +0 -102
- package/src/module/mcp/protocol.ts +0 -77
- package/src/module/mcp/server.ts +0 -148
- package/src/module/mcp/transport.ts +0 -30
- package/src/module/mcp/workspaceServer.ts +0 -111
- package/src/module/sandbox/sandbox.ts +0 -29
- package/src/module/tool/mcpExecutor.ts +0 -54
- package/src/module/tool/policy.ts +0 -52
- package/src/module/tool/redact.ts +0 -29
- package/src/module/tool/tool.ts +0 -53
- package/src/module/tool/workspaceExecutor.ts +0 -35
- package/src/policy/guard.ts +0 -240
- package/src/policy/index.ts +0 -2
- package/src/policy/policy.ts +0 -561
- package/src/process/agent.ts +0 -341
- package/src/process/agentService.ts +0 -236
- package/src/process/agentStore.ts +0 -378
- package/src/process/executionStore.ts +0 -151
- package/src/process/index.ts +0 -5
- package/src/process/process.ts +0 -240
- package/src/process/transitions.ts +0 -19
- package/src/progress/index.ts +0 -2
- package/src/progress/progress.ts +0 -85
- package/src/protocol/a2a.ts +0 -120
- package/src/protocol/channel.ts +0 -44
- package/src/protocol/envelope.ts +0 -655
- package/src/protocol/httpChannel.ts +0 -87
- package/src/protocol/index.ts +0 -6
- package/src/protocol/protocol.ts +0 -138
- package/src/protocol/wire.ts +0 -60
- package/src/receipt/index.ts +0 -1
- package/src/receipt/receipt.ts +0 -47
- package/src/registry/content.ts +0 -69
- package/src/registry/index.ts +0 -23
- package/src/registry/registry.ts +0 -599
- package/src/runtime/action.ts +0 -87
- package/src/runtime/behavior.ts +0 -330
- package/src/runtime/behaviorTuning.ts +0 -163
- package/src/runtime/cognitiveRuntime.ts +0 -703
- package/src/runtime/escalation.ts +0 -35
- package/src/runtime/governedTask.ts +0 -233
- package/src/runtime/index.ts +0 -15
- package/src/runtime/kernelRuntime.ts +0 -144
- package/src/runtime/operation.ts +0 -35
- package/src/runtime/replay.ts +0 -71
- package/src/runtime/routing.ts +0 -58
- package/src/runtime/safety.ts +0 -48
- package/src/runtime/session.ts +0 -341
- package/src/runtime/sessionStore.ts +0 -43
- package/src/runtime/telemetry.ts +0 -55
- package/src/runtime/turnStore.ts +0 -30
- package/src/scenario/index.ts +0 -1
- package/src/scenario/scenario.ts +0 -299
- package/src/semantic/canonical.ts +0 -24
- package/src/semantic/index.ts +0 -2
- package/src/semantic/sha256.ts +0 -82
- package/src/storage/appendLog.ts +0 -372
- package/src/storage/fileAppendSink.ts +0 -40
- package/src/storage/index.ts +0 -2
- package/src/store/bindCache.ts +0 -22
- package/src/store/cache.ts +0 -191
- package/src/store/context.ts +0 -31
- package/src/store/handleStore.ts +0 -31
- package/src/store/index.ts +0 -9
- package/src/store/messageStore.ts +0 -31
- package/src/store/objectStore.ts +0 -31
- package/src/store/processStore.ts +0 -31
- package/src/store/threadStore.ts +0 -31
- package/src/store/windowStore.ts +0 -31
- package/src/structure/abstractSyntaxTree.ts +0 -493
- package/src/structure/avlTree.ts +0 -408
- package/src/structure/binarySearchTree.ts +0 -352
- package/src/structure/binaryTree.ts +0 -525
- package/src/structure/bloomFilter.ts +0 -231
- package/src/structure/compare.ts +0 -110
- package/src/structure/cuckooFilter.ts +0 -337
- package/src/structure/deque.ts +0 -223
- package/src/structure/filterKey.ts +0 -36
- package/src/structure/hash.ts +0 -279
- package/src/structure/heap.ts +0 -268
- package/src/structure/index.ts +0 -20
- package/src/structure/iterator.ts +0 -22
- package/src/structure/lru.ts +0 -619
- package/src/structure/ordered.ts +0 -399
- package/src/structure/priority.ts +0 -915
- package/src/structure/queue.ts +0 -168
- package/src/structure/redBlackTree.ts +0 -680
- package/src/structure/segmentTree.ts +0 -248
- package/src/structure/stack.ts +0 -118
- package/src/structure/unordered.ts +0 -407
- package/src/style.css +0 -278
- package/src/thread/index.ts +0 -2
- package/src/thread/thread.ts +0 -176
- package/src/thread/transitions.ts +0 -17
- package/src/types/common.ts +0 -119
- package/src/types/index.ts +0 -23
- package/src/warrant/epistemic.ts +0 -154
- package/src/warrant/index.ts +0 -3
- package/src/warrant/inquiry.ts +0 -166
- package/src/warrant/warrant.ts +0 -179
- package/src/window/compaction.ts +0 -403
- package/src/window/compactionTypes.ts +0 -119
- package/src/window/index.ts +0 -4
- package/src/window/page.ts +0 -18
- package/src/window/window.ts +0 -244
- package/tools/_helpers.ts +0 -34
- package/tools/a2a-check.ts +0 -110
- package/tools/a2a-flow-check.ts +0 -78
- package/tools/agent-card-check.ts +0 -76
- package/tools/agent-check.ts +0 -236
- package/tools/agent-store-check.ts +0 -153
- package/tools/agreement-check.ts +0 -27
- package/tools/annotation-server-check.ts +0 -48
- package/tools/annotation-server.ts +0 -230
- package/tools/annotation-status.ts +0 -65
- package/tools/approval-access-check.ts +0 -66
- package/tools/arch-check.ts +0 -72
- package/tools/attention-core-check.ts +0 -48
- package/tools/attention-resource-check.ts +0 -169
- package/tools/audit-check.ts +0 -207
- package/tools/authority-check.ts +0 -124
- package/tools/authz-check.ts +0 -138
- package/tools/bayes-check.ts +0 -162
- package/tools/bayes-probe.ts +0 -154
- package/tools/behavior-tuning-check.ts +0 -53
- package/tools/board-check.ts +0 -87
- package/tools/boundary-check.ts +0 -199
- package/tools/bundle-trust-check.ts +0 -96
- package/tools/calibrate-imported.ts +0 -108
- package/tools/calibration-check.ts +0 -44
- package/tools/calibration-registry-check.ts +0 -40
- package/tools/calibration-sim.ts +0 -40
- package/tools/card-sign-check.ts +0 -71
- package/tools/card-trust-check.ts +0 -78
- package/tools/channel-check.ts +0 -86
- package/tools/checkpoint-check.ts +0 -620
- package/tools/cleanup-style-configs.ts +0 -29
- package/tools/cognition-check.ts +0 -648
- package/tools/cognitive-runtime-check.ts +0 -609
- package/tools/collaboration-demo.ts +0 -78
- package/tools/compaction-check.ts +0 -266
- package/tools/concept-check.ts +0 -260
- package/tools/concurrency-check.ts +0 -242
- package/tools/conformance-runtime.ts +0 -389
- package/tools/conformance.ts +0 -651
- package/tools/context-ast-check.ts +0 -90
- package/tools/context-ast-deepseek.ts +0 -242
- package/tools/context-graph-bench.ts +0 -50
- package/tools/context-graph-check.ts +0 -229
- package/tools/context-index-check.ts +0 -48
- package/tools/context-lifecycle-check.ts +0 -69
- package/tools/context-projection-check.ts +0 -73
- package/tools/context-scope-check.ts +0 -134
- package/tools/context-storage-check.ts +0 -113
- package/tools/cooperation-check.ts +0 -517
- package/tools/cooperation-http-check.ts +0 -125
- package/tools/deepseek-llm-check.ts +0 -147
- package/tools/deepseek-probe.ts +0 -494
- package/tools/diagnosis-check.ts +0 -109
- package/tools/diagnosis-router-check.ts +0 -50
- package/tools/document-context-check.ts +0 -237
- package/tools/envelope-check.ts +0 -659
- package/tools/eslint-rules/index.ts +0 -26
- package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
- package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
- package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
- package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
- package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
- package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
- package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
- package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
- package/tools/eslint-rules/rules/variable-naming.ts +0 -175
- package/tools/eval-recorded-replay.ts +0 -215
- package/tools/eval-replay.ts +0 -139
- package/tools/eval-summary.ts +0 -136
- package/tools/evidence-revalidation-check.ts +0 -235
- package/tools/exec-check.ts +0 -217
- package/tools/federation-check.ts +0 -166
- package/tools/federation-demo.ts +0 -45
- package/tools/filter-check.ts +0 -243
- package/tools/governance-check.ts +0 -680
- package/tools/governance-store-check.ts +0 -131
- package/tools/governed-task-check.ts +0 -227
- package/tools/guard-check.ts +0 -122
- package/tools/http-channel-check.ts +0 -125
- package/tools/import-campaign.ts +0 -28
- package/tools/inquiry-check.ts +0 -126
- package/tools/interaction-check.ts +0 -171
- package/tools/interrupts-check.ts +0 -173
- package/tools/ipc-check.ts +0 -170
- package/tools/kernel-async-check.ts +0 -136
- package/tools/kernel-check.ts +0 -369
- package/tools/kernel-runtime-check.ts +0 -276
- package/tools/keys-check.ts +0 -559
- package/tools/label-audit.ts +0 -70
- package/tools/labels-workflow-check.ts +0 -49
- package/tools/linear-structure-check.ts +0 -524
- package/tools/live-exec.ts +0 -62
- package/tools/live-governance-eval.ts +0 -813
- package/tools/live-legacy.ts +0 -50
- package/tools/lru-check.ts +0 -182
- package/tools/make-annotation-campaign.ts +0 -57
- package/tools/mcp-executor-check.ts +0 -33
- package/tools/merge-annotations.ts +0 -32
- package/tools/merge-check.ts +0 -98
- package/tools/metrics-check.ts +0 -84
- package/tools/net-probe.ts +0 -107
- package/tools/oauth-probe.ts +0 -117
- package/tools/outbox-check.ts +0 -50
- package/tools/persistence-check.ts +0 -144
- package/tools/pin-check.ts +0 -116
- package/tools/platform-check.ts +0 -281
- package/tools/policy-check.ts +0 -514
- package/tools/prettier-plugin/index.mts +0 -84
- package/tools/priority-check.ts +0 -627
- package/tools/probe-context7.ts +0 -63
- package/tools/registry-check.ts +0 -252
- package/tools/reliability-check.ts +0 -25
- package/tools/retry-check.ts +0 -85
- package/tools/rewrite-declaration-extensions.ts +0 -98
- package/tools/runtime-check.ts +0 -165
- package/tools/runtime-deepseek-check.ts +0 -85
- package/tools/runtime-eval.ts +0 -358
- package/tools/scenario-check.ts +0 -161
- package/tools/scenario-incident.ts +0 -162
- package/tools/scoped-priors-check.ts +0 -35
- package/tools/scoped-priors-pooling.ts +0 -34
- package/tools/segment-ast-check.ts +0 -649
- package/tools/session-check.ts +0 -196
- package/tools/session-store-check.ts +0 -73
- package/tools/share-check.ts +0 -88
- package/tools/sign-check.ts +0 -95
- package/tools/signing-check.ts +0 -275
- package/tools/snapshot-demo.ts +0 -65
- package/tools/social-check.ts +0 -146
- package/tools/structure-compare-check.ts +0 -95
- package/tools/support/documentScanner.ts +0 -577
- package/tools/support/texScanner.ts +0 -631
- package/tools/support/workspaceScanner.ts +0 -476
- package/tools/team-check.ts +0 -163
- package/tools/team-demo.ts +0 -36
- package/tools/telemetry-check.ts +0 -44
- package/tools/tex-context-check.ts +0 -263
- package/tools/tool-gate-check.ts +0 -98
- package/tools/tree-structure-check.ts +0 -786
- package/tools/trust-flow-check.ts +0 -158
- package/tools/turn-store-check.ts +0 -57
- package/tools/unified-check.ts +0 -83
- package/tools/validate.ts +0 -309
- package/tools/wire-check.ts +0 -96
- package/tools/workspace-agent-check.ts +0 -486
- package/tools/workspace-agent-demo.ts +0 -62
- package/tools/workspace-agent-server.ts +0 -101
- package/tools/workspace-context-check.ts +0 -331
- package/tools/workspace-context.ts +0 -131
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -24
- package/tsconfig.tools.json +0 -31
- package/viz/context-ast.json +0 -1577
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Local annotation UI. Two annotators open separate URLs, label with 1/2/3,
|
|
4
|
-
* and the server writes one JSONL row per case (last write wins).
|
|
5
|
-
*/
|
|
6
|
-
import { createServer } from "node:http";
|
|
7
|
-
import type { IncomingMessage, Server, ServerResponse } from "node:http";
|
|
8
|
-
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
9
|
-
import type { AddressInfo } from "node:net";
|
|
10
|
-
import { pathToFileURL } from "node:url";
|
|
11
|
-
|
|
12
|
-
interface CampaignRow {
|
|
13
|
-
caseId: string;
|
|
14
|
-
source: string;
|
|
15
|
-
input: string;
|
|
16
|
-
answer: string;
|
|
17
|
-
expected: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
interface LabelRow {
|
|
21
|
-
caseId: string;
|
|
22
|
-
annotator: string;
|
|
23
|
-
label: string;
|
|
24
|
-
note?: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface AnnotationServerOptions {
|
|
28
|
-
annotator: string;
|
|
29
|
-
port: number;
|
|
30
|
-
campaignPath?: string;
|
|
31
|
-
outputPath?: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface AnnotationServer {
|
|
35
|
-
server: Server;
|
|
36
|
-
url: string;
|
|
37
|
-
close: () => Promise<void>;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
type CasePayload = {
|
|
41
|
-
caseId: string;
|
|
42
|
-
source: string;
|
|
43
|
-
input: string;
|
|
44
|
-
answer: string;
|
|
45
|
-
expected: string;
|
|
46
|
-
annotator?: string;
|
|
47
|
-
label?: string;
|
|
48
|
-
note: string;
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
type ParsedLabel = {
|
|
52
|
-
caseId?: string;
|
|
53
|
-
label?: string;
|
|
54
|
-
note?: string;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
type SendResponse = (response: ServerResponse, status: number, body: string, type?: string) => void;
|
|
58
|
-
|
|
59
|
-
type AnnotationServerFactory = (options: AnnotationServerOptions) => Promise<AnnotationServer>;
|
|
60
|
-
|
|
61
|
-
const loadCsvRows: (path: string) => CampaignRow[] = (path: string): CampaignRow[] => {
|
|
62
|
-
const raw: string = readFileSync(path, "utf8");
|
|
63
|
-
const lines: string[] = raw.split(/\r?\n/).filter((line) => line.trim().length > 0);
|
|
64
|
-
if (lines.length === 0) {
|
|
65
|
-
return [];
|
|
66
|
-
}
|
|
67
|
-
const records: string[][] = [];
|
|
68
|
-
let record: string[] = [];
|
|
69
|
-
let cell: string = "";
|
|
70
|
-
let quoted: boolean = false;
|
|
71
|
-
for (let index: number = 0; index < raw.length; index += 1) {
|
|
72
|
-
const char: string = raw[index];
|
|
73
|
-
if (char === '"') {
|
|
74
|
-
if (quoted && raw[index + 1] === '"') {
|
|
75
|
-
cell += '"';
|
|
76
|
-
index += 1;
|
|
77
|
-
} else {
|
|
78
|
-
quoted = !quoted;
|
|
79
|
-
}
|
|
80
|
-
} else if (char === "," && !quoted) {
|
|
81
|
-
record.push(cell);
|
|
82
|
-
cell = "";
|
|
83
|
-
} else if ((char === "\n" || char === "\r") && !quoted) {
|
|
84
|
-
if (char === "\r" && raw[index + 1] === "\n") {
|
|
85
|
-
index += 1;
|
|
86
|
-
}
|
|
87
|
-
record.push(cell);
|
|
88
|
-
records.push(record);
|
|
89
|
-
record = [];
|
|
90
|
-
cell = "";
|
|
91
|
-
} else {
|
|
92
|
-
cell += char;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (cell.length > 0 || record.length > 0) {
|
|
96
|
-
record.push(cell);
|
|
97
|
-
records.push(record);
|
|
98
|
-
}
|
|
99
|
-
const header: string[] = records[0].map((entry) => entry.trim());
|
|
100
|
-
const get: (row: string[], name: string) => string = (row: string[], name: string): string => row[header.indexOf(name)] ?? "";
|
|
101
|
-
return records.slice(1).map((row) => ({
|
|
102
|
-
caseId: get(row, "caseId"),
|
|
103
|
-
source: get(row, "source"),
|
|
104
|
-
input: get(row, "input"),
|
|
105
|
-
answer: get(row, "answer"),
|
|
106
|
-
expected: get(row, "expected"),
|
|
107
|
-
}));
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
const readLabels: (path: string) => LabelRow[] = (path: string): LabelRow[] => {
|
|
111
|
-
if (!existsSync(path)) {
|
|
112
|
-
return [];
|
|
113
|
-
}
|
|
114
|
-
return readFileSync(path, "utf8")
|
|
115
|
-
.split(/\r?\n/)
|
|
116
|
-
.filter((line) => line.trim().length > 0)
|
|
117
|
-
.map((line) => JSON.parse(line) as LabelRow);
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const saveLabels: (path: string, labels: Map<string, LabelRow>) => void = (path: string, labels: Map<string, LabelRow>): void => {
|
|
121
|
-
writeFileSync(path, [...labels.values()].map((row) => JSON.stringify(row)).join("\n") + (labels.size > 0 ? "\n" : ""), "utf8");
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
const html: (annotator: string) => string = (annotator: string): string => `<!doctype html>
|
|
125
|
-
<html lang="zh-CN"><head><meta charset="utf-8"><title>AMP annotation ${annotator}</title>
|
|
126
|
-
<style>
|
|
127
|
-
body{font:16px/1.5 system-ui,sans-serif;max-width:860px;margin:40px auto;padding:0 20px;color:#111}
|
|
128
|
-
.card{border:1px solid #ddd;border-radius:12px;padding:20px;margin:16px 0;background:#fff}
|
|
129
|
-
.meta{color:#666;font-size:13px}.pre{white-space:pre-wrap;background:#f7f7f7;padding:12px;border-radius:8px}
|
|
130
|
-
button{font-size:16px;padding:10px 18px;margin:6px 6px 6px 0;border-radius:8px;border:1px solid #bbb;background:#fafafa;cursor:pointer}
|
|
131
|
-
button:hover{background:#eee}.ok{border-color:#2a7}.bad{border-color:#c33}.unsure{border-color:#ca0}
|
|
132
|
-
textarea{width:100%;min-height:70px;margin-top:8px;padding:8px;box-sizing:border-box}
|
|
133
|
-
.bar{position:sticky;bottom:0;background:#fff;padding:12px 0;border-top:1px solid #eee}
|
|
134
|
-
</style></head><body>
|
|
135
|
-
<h2>AMP 盲标 <small>${annotator}</small></h2>
|
|
136
|
-
<p class="meta">1=correct 2=incorrect 3=unsure|不要看 repo 里的 humanLabel/actual|共 <b id="total">?</b> 条</p>
|
|
137
|
-
<div class="card" id="case"><div class="meta">loading…</div></div>
|
|
138
|
-
<div class="bar"><button class="ok" onclick="mark('correct')">1 correct</button><button class="bad" onclick="mark('incorrect')">2 incorrect</button><button class="unsure" onclick="mark('unsure')">3 unsure</button><button onclick="skip()">跳过</button><span id="prog"></span></div>
|
|
139
|
-
<textarea id="note" placeholder="note(可选)"></textarea>
|
|
140
|
-
<script>
|
|
141
|
-
let rows=[], index=0;
|
|
142
|
-
const esc=s=>String(s??'').replace(/[&<>]/g,c=>({'&':'&','<':'<','>':'>'}[c]));
|
|
143
|
-
async function load(){rows=await (await fetch('/api/cases')).json(); document.getElementById('total').textContent=rows.length; render();}
|
|
144
|
-
function render(){const r=rows[index]; if(!r){document.getElementById('case').innerHTML='<b>done</b>'; document.getElementById('prog').textContent=''; return;}
|
|
145
|
-
document.getElementById('case').innerHTML='<div class="meta">'+esc(r.caseId)+' · '+esc(r.source)+'</div><h3>Input</h3><div class="pre">'+esc(r.input)+'</div><h3>Answer</h3><div class="pre">'+esc(r.answer)+'</div>'+(r.expected?'<div class="meta">expected: '+esc(r.expected)+'</div>':'');
|
|
146
|
-
document.getElementById('note').value=r.note||''; document.getElementById('prog').textContent=(index+1)+'/'+rows.length;}
|
|
147
|
-
async function mark(label){const r=rows[index]; if(!r)return; await fetch('/api/labels',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({caseId:r.caseId,label,note:document.getElementById('note').value})}); index++; render();}
|
|
148
|
-
function skip(){index++; render();}
|
|
149
|
-
document.addEventListener('keydown',e=>{if(e.key==='1')mark('correct'); if(e.key==='2')mark('incorrect'); if(e.key==='3')mark('unsure');});
|
|
150
|
-
load();
|
|
151
|
-
</script></body></html>`;
|
|
152
|
-
|
|
153
|
-
export const startAnnotationServer: AnnotationServerFactory = async (options: AnnotationServerOptions): Promise<AnnotationServer> => {
|
|
154
|
-
const campaignPath: string = options.campaignPath ?? "docs/annotation-campaign.csv";
|
|
155
|
-
const outputPath: string = options.outputPath ?? `docs/eval/annotations-${options.annotator}.jsonl`;
|
|
156
|
-
const campaign: CampaignRow[] = loadCsvRows(campaignPath);
|
|
157
|
-
const labels: Map<string, LabelRow> = new Map<string, LabelRow>(readLabels(outputPath).map((row) => [row.caseId, row]));
|
|
158
|
-
const send: SendResponse = (response: ServerResponse, status: number, body: string, type: string = "application/json"): void => {
|
|
159
|
-
response.writeHead(status, { "content-type": type, "cache-control": "no-store" });
|
|
160
|
-
response.end(body);
|
|
161
|
-
};
|
|
162
|
-
const handler: (request: IncomingMessage, response: ServerResponse) => void = (request: IncomingMessage, response: ServerResponse): void => {
|
|
163
|
-
const url: URL = new URL(request.url ?? "/", "http://127.0.0.1");
|
|
164
|
-
if (request.method === "GET" && url.pathname === "/") {
|
|
165
|
-
return send(response, 200, html(options.annotator), "text/html; charset=utf-8");
|
|
166
|
-
}
|
|
167
|
-
if (request.method === "GET" && url.pathname === "/api/cases") {
|
|
168
|
-
const rows: CasePayload[] = campaign.map((row) => ({ ...row, ...(labels.get(row.caseId) ?? {}), note: labels.get(row.caseId)?.note ?? "" }));
|
|
169
|
-
return send(response, 200, JSON.stringify(rows));
|
|
170
|
-
}
|
|
171
|
-
if (request.method === "GET" && url.pathname === "/api/progress") {
|
|
172
|
-
return send(response, 200, JSON.stringify({ done: labels.size, total: campaign.length }));
|
|
173
|
-
}
|
|
174
|
-
if (request.method === "POST" && url.pathname === "/api/labels") {
|
|
175
|
-
let body: string = "";
|
|
176
|
-
request.on("data", (chunk) => {
|
|
177
|
-
body += chunk;
|
|
178
|
-
if (body.length > 100_000) {
|
|
179
|
-
request.destroy();
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
request.on("end", () => {
|
|
183
|
-
try {
|
|
184
|
-
const parsed: ParsedLabel = JSON.parse(body) as ParsedLabel;
|
|
185
|
-
if (typeof(parsed.caseId) !== "string" || typeof(parsed.label) !== "string" || !["correct", "incorrect", "unsure"].includes(parsed.label)) {
|
|
186
|
-
return send(response, 400, JSON.stringify({ error: "invalid label" }));
|
|
187
|
-
}
|
|
188
|
-
if (!campaign.some((row) => row.caseId === parsed.caseId)) {
|
|
189
|
-
return send(response, 400, JSON.stringify({ error: "unknown case" }));
|
|
190
|
-
}
|
|
191
|
-
labels.set(parsed.caseId, {
|
|
192
|
-
caseId: parsed.caseId,
|
|
193
|
-
annotator: options.annotator,
|
|
194
|
-
label: parsed.label,
|
|
195
|
-
...(typeof(parsed.note) === "string" && parsed.note.trim().length > 0 ? { note: parsed.note.trim() } : {}),
|
|
196
|
-
});
|
|
197
|
-
saveLabels(outputPath, labels);
|
|
198
|
-
return send(response, 200, JSON.stringify({ done: labels.size, total: campaign.length }));
|
|
199
|
-
} catch {
|
|
200
|
-
return send(response, 400, JSON.stringify({ error: "bad json" }));
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
return send(response, 404, JSON.stringify({ error: "not found" }));
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
const server: Server = createServer(handler);
|
|
209
|
-
await new Promise<void>((resolve, reject) => {
|
|
210
|
-
server.once("error", reject);
|
|
211
|
-
server.listen(options.port, "127.0.0.1", () => resolve());
|
|
212
|
-
});
|
|
213
|
-
const address: AddressInfo | string | null = server.address();
|
|
214
|
-
const port: number = typeof(address) === "object" && address !== null ? address.port : options.port;
|
|
215
|
-
return {
|
|
216
|
-
server,
|
|
217
|
-
url: `http://127.0.0.1:${port}/`,
|
|
218
|
-
close: () => new Promise<void>((resolve, reject) => server.close((error) => (error === (void 0) ? resolve() : reject(error)))),
|
|
219
|
-
};
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
const IsMain: boolean = process.argv[1] !== (void 0) && import.meta.url === pathToFileURL(process.argv[1]).href;
|
|
223
|
-
if (IsMain) {
|
|
224
|
-
const args: string[] = process.argv.slice(2);
|
|
225
|
-
const annotator: string = args.find((arg) => arg.startsWith("--annotator="))?.split("=")[1] ?? "A";
|
|
226
|
-
const port: number = Number(args.find((arg) => arg.startsWith("--port="))?.split("=")[1] ?? "8787");
|
|
227
|
-
const running: AnnotationServer = await startAnnotationServer({ annotator, port });
|
|
228
|
-
console.log(`annotation UI: ${running.url} (${annotator})`);
|
|
229
|
-
console.log("Ctrl+C to stop");
|
|
230
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Progress/validation for the two blind annotation packets.
|
|
4
|
-
*/
|
|
5
|
-
import assert from "node:assert/strict";
|
|
6
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
7
|
-
|
|
8
|
-
import type { Annotation } from "../src/evaluation/labels.ts";
|
|
9
|
-
import { importAnnotationsCsv } from "../src/evaluation/labels.ts";
|
|
10
|
-
|
|
11
|
-
type InspectResult = {
|
|
12
|
-
filled: number;
|
|
13
|
-
invalid: string[];
|
|
14
|
-
unknown: string[];
|
|
15
|
-
duplicate: string[];
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const Allowed: Set<string> = new Set(["correct", "incorrect", "unsure"]);
|
|
19
|
-
const Campaign: Annotation[] = importAnnotationsCsv(readFileSync("docs/annotation-campaign.csv", "utf8"));
|
|
20
|
-
const Expected: Set<string> = new Set(Campaign.map((row) => row.caseId));
|
|
21
|
-
|
|
22
|
-
const inspect: (path: string) => InspectResult = (path: string): InspectResult => {
|
|
23
|
-
const rows: Annotation[] = importAnnotationsCsv(readFileSync(path, "utf8"));
|
|
24
|
-
const seen: Set<string> = new Set<string>();
|
|
25
|
-
const duplicate: string[] = [];
|
|
26
|
-
for (let index: number = 0; index < rows.length; index += 1) {
|
|
27
|
-
const row: Annotation = rows[index];
|
|
28
|
-
if (seen.has(row.caseId)) {
|
|
29
|
-
duplicate.push(row.caseId);
|
|
30
|
-
}
|
|
31
|
-
seen.add(row.caseId);
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
filled: rows.filter((row) => row.label.trim().length > 0).length,
|
|
35
|
-
invalid: rows.filter((row) => row.label.length > 0 && !Allowed.has(row.label)).map((row) => `${row.caseId}:${row.label}`),
|
|
36
|
-
unknown: rows.filter((row) => !Expected.has(row.caseId)).map((row) => row.caseId),
|
|
37
|
-
duplicate,
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const Left: InspectResult = inspect("docs/annotation-campaign-A.csv");
|
|
42
|
-
const Right: InspectResult = inspect("docs/annotation-campaign-B.csv");
|
|
43
|
-
const Results: InspectResult[] = [Left, Right];
|
|
44
|
-
for (let index: number = 0; index < Results.length; index += 1) {
|
|
45
|
-
const result: InspectResult = Results[index];
|
|
46
|
-
assert.equal(result.unknown.length, 0);
|
|
47
|
-
assert.equal(result.duplicate.length, 0);
|
|
48
|
-
assert.equal(result.invalid.length, 0);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
console.log(
|
|
52
|
-
`A=${Left.filled}/${Campaign.length} B=${Right.filled}/${Campaign.length} invalid=${Left.invalid.length + Right.invalid.length} unknown=${Left.unknown.length + Right.unknown.length}`,
|
|
53
|
-
);
|
|
54
|
-
const jsonl: (path: string) => number = (path: string): number =>
|
|
55
|
-
existsSync(path)
|
|
56
|
-
? readFileSync(path, "utf8")
|
|
57
|
-
.split(/\r?\n/)
|
|
58
|
-
.filter((line) => line.trim().length > 0).length
|
|
59
|
-
: 0;
|
|
60
|
-
console.log(`UI A=${jsonl("docs/eval/annotations-A.jsonl")}/${Campaign.length} UI B=${jsonl("docs/eval/annotations-B.jsonl")}/${Campaign.length}`);
|
|
61
|
-
if (Left.filled < Campaign.length || Right.filled < Campaign.length) {
|
|
62
|
-
console.log("status=pending human labels");
|
|
63
|
-
} else {
|
|
64
|
-
console.log("status=ready to import");
|
|
65
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Approval audit access control + field redaction.
|
|
4
|
-
*/
|
|
5
|
-
import assert from "node:assert/strict";
|
|
6
|
-
|
|
7
|
-
import { openStore } from "../src/database/store/database.ts";
|
|
8
|
-
import { RuntimeApprovalRepository } from "../src/database/repository/runtimeApprovalRepository.ts";
|
|
9
|
-
import { outboxEventSink } from "../src/database/adapter/runtimeSink.ts";
|
|
10
|
-
import { createProcess } from "../src/process/process.ts";
|
|
11
|
-
import { grant } from "../src/authz/authz.ts";
|
|
12
|
-
import type { Subject } from "../src/authz/authz.ts";
|
|
13
|
-
import { AuthzError } from "../src/error/authzError.ts";
|
|
14
|
-
|
|
15
|
-
const At = "2026-10-24T00:00:00.000Z";
|
|
16
|
-
const db = openStore(":memory:");
|
|
17
|
-
const owner = createProcess(db, { id: "a.approval.owner", name: "Owner" }, At);
|
|
18
|
-
const stranger = createProcess(db, { id: "a.approval.stranger", name: "Stranger" }, At);
|
|
19
|
-
const ownerSubject: Subject = { kind: "process", id: "a.approval.owner", pid: owner.pid };
|
|
20
|
-
const strangerSubject: Subject = { kind: "process", id: "a.approval.stranger", pid: stranger.pid };
|
|
21
|
-
const approvals = new RuntimeApprovalRepository(db);
|
|
22
|
-
|
|
23
|
-
outboxEventSink(
|
|
24
|
-
db,
|
|
25
|
-
{
|
|
26
|
-
topic: "runtime.approval",
|
|
27
|
-
payload: {
|
|
28
|
-
pid: owner.pid,
|
|
29
|
-
turnId: "rt.1",
|
|
30
|
-
operationId: "op.1",
|
|
31
|
-
tool: "deploy.rollback",
|
|
32
|
-
risk: "destructive",
|
|
33
|
-
decision: "token sk-abcdefghijklmnop123456",
|
|
34
|
-
status: "denied",
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
At,
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
const rows = approvals.list(owner.pid);
|
|
41
|
-
assert.equal(rows.length, 1);
|
|
42
|
-
assert.equal(rows[0].decision.includes("sk-abcdefghijklmnop123456"), false);
|
|
43
|
-
assert.equal(rows[0].decision.includes("[REDACTED]"), true);
|
|
44
|
-
|
|
45
|
-
assert.equal(approvals.listForSubject(ownerSubject, owner.pid, At).length, 1);
|
|
46
|
-
assert.throws(
|
|
47
|
-
() => approvals.listForSubject(strangerSubject, owner.pid, At),
|
|
48
|
-
(error: unknown) => error instanceof AuthzError && error.code === "permission_denied",
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
grant(
|
|
52
|
-
db,
|
|
53
|
-
{
|
|
54
|
-
grantor: ownerSubject,
|
|
55
|
-
grantee: strangerSubject,
|
|
56
|
-
resource: { kind: "object", id: `approval:${owner.pid}`, ownerPid: owner.pid },
|
|
57
|
-
rights: ["read"],
|
|
58
|
-
},
|
|
59
|
-
At,
|
|
60
|
-
);
|
|
61
|
-
assert.equal(approvals.listForSubject(strangerSubject, owner.pid, At).length, 1);
|
|
62
|
-
assert.equal(approvals.prune("2026-10-25T00:00:00.000Z"), 1);
|
|
63
|
-
|
|
64
|
-
db.close();
|
|
65
|
-
console.log("\x1b[32m✓\x1b[0m approval audit is authz-gated and redacted");
|
|
66
|
-
console.log("\n1 passed, 0 failed");
|
package/tools/arch-check.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Architecture fitness checks. These are intentionally cheap textual guards;
|
|
4
|
-
* they fail the verify when a dependency rule regresses.
|
|
5
|
-
*/
|
|
6
|
-
import assert from "node:assert/strict";
|
|
7
|
-
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
8
|
-
import { join } from "node:path";
|
|
9
|
-
|
|
10
|
-
assert.equal(existsSync("src/cycle"), false, "legacy cycle directory must stay deleted");
|
|
11
|
-
assert.equal(existsSync("tools/support/ampRuntime.ts"), false, "legacy AmpRuntime fixture must stay deleted");
|
|
12
|
-
|
|
13
|
-
const walk: (dir: string) => string[] = (dir: string): string[] => {
|
|
14
|
-
const files: string[] = [];
|
|
15
|
-
const names: string[] = readdirSync(dir);
|
|
16
|
-
for (let index: number = 0; index < names.length; index += 1) {
|
|
17
|
-
const name: string = names[index];
|
|
18
|
-
const path: string = join(dir, name);
|
|
19
|
-
if (statSync(path).isDirectory()) {
|
|
20
|
-
files.push(...walk(path));
|
|
21
|
-
} else if (path.endsWith(".ts")) {
|
|
22
|
-
files.push(path);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return files;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const RuntimeFiles: string[] = walk("src/runtime");
|
|
29
|
-
const RuntimeText: string = RuntimeFiles.map((file) => readFileSync(file, "utf8")).join("\n");
|
|
30
|
-
assert.equal(/from\s+["'][^"']*database/.test(RuntimeText), false, "runtime must not import database");
|
|
31
|
-
assert.equal(/node:sqlite/.test(RuntimeText), false, "runtime must not import node:sqlite");
|
|
32
|
-
|
|
33
|
-
const Kernel: string = readFileSync("src/kernel/scheduler.ts", "utf8");
|
|
34
|
-
const WorkspaceServiceFiles: string[] = [
|
|
35
|
-
"src/context/workspaceService.ts", "src/context/workspaceProtocol.ts",
|
|
36
|
-
"src/module/tool/workspaceExecutor.ts", "src/module/mcp/workspaceServer.ts",
|
|
37
|
-
];
|
|
38
|
-
const WorkspaceServiceText: string = WorkspaceServiceFiles.map((file: string): string => readFileSync(file, "utf8")).join("\n");
|
|
39
|
-
assert.equal(/from\s+["'][^"']*(?:database|tools\/support)/.test(WorkspaceServiceText), false, "workspace service must not import database or offline parsers");
|
|
40
|
-
assert.equal(/from\s+["'](?:typescript|fflate|fast-xml-parser|node:sqlite)["']/.test(WorkspaceServiceText), false, "workspace service must stay independent of parsers and SQL");
|
|
41
|
-
assert.equal(/\bdb\.prepare\(/.test(Kernel), false, "kernel must use the execution port, not raw SQL");
|
|
42
|
-
|
|
43
|
-
const ProcessSqlBaseline: number = 0;
|
|
44
|
-
const ProcessSql: number =
|
|
45
|
-
["src/process/process.ts", "src/thread/thread.ts"]
|
|
46
|
-
.map((file) => readFileSync(file, "utf8"))
|
|
47
|
-
.join("\n")
|
|
48
|
-
.match(/\.prepare\(/g)?.length ?? 0;
|
|
49
|
-
assert.ok(ProcessSql <= ProcessSqlBaseline, `process/thread raw SQL grew to ${ProcessSql} (baseline ${ProcessSqlBaseline})`);
|
|
50
|
-
|
|
51
|
-
const RuntimeIndex: string = readFileSync("src/runtime/index.ts", "utf8");
|
|
52
|
-
assert.equal(RuntimeIndex.includes("database"), false, "runtime index must not re-export database");
|
|
53
|
-
|
|
54
|
-
const GovernanceFiles: string[] = walk("src/governance");
|
|
55
|
-
const GovernanceText: string = GovernanceFiles.map((file) => readFileSync(file, "utf8")).join("\n");
|
|
56
|
-
assert.equal(/from\s+["'][^"']*database/.test(GovernanceText), false, "governance must not import database");
|
|
57
|
-
assert.equal(/node:sqlite/.test(GovernanceText), false, "governance must not import node:sqlite");
|
|
58
|
-
assert.equal(/from\s+["'][^"']*\/runtime\//.test(GovernanceText), false, "governance must not import runtime");
|
|
59
|
-
const RuntimeCoreFiles: string[] = RuntimeFiles.filter((file: string) => !file.endsWith("governedTask.ts"));
|
|
60
|
-
const RuntimeCoreText: string = RuntimeCoreFiles.map((file: string) => readFileSync(file, "utf8")).join("\n");
|
|
61
|
-
assert.equal(/from\s+["'][^"']*\/governance\//.test(RuntimeCoreText), false, "runtime core must not import governance directly; use governedTask.ts");
|
|
62
|
-
|
|
63
|
-
const LegacyUsers: string[] = readdirSync("tools")
|
|
64
|
-
.filter((name) => name.endsWith(".ts") && name !== "arch-check.ts")
|
|
65
|
-
.filter((name) => readFileSync(join("tools", name), "utf8").includes("support/ampRuntime"))
|
|
66
|
-
.sort();
|
|
67
|
-
assert.deepEqual(LegacyUsers, [], `legacy AmpRuntime references must be gone, found: ${LegacyUsers.join(", ")}`);
|
|
68
|
-
|
|
69
|
-
console.log(
|
|
70
|
-
`\x1b[32m✓\x1b[0m architecture fitness: runtime database-free, kernel SQL-free, process/thread SQL=${ProcessSql}<=${ProcessSqlBaseline}, legacy runtime deleted`,
|
|
71
|
-
);
|
|
72
|
-
console.log("\n1 passed, 0 failed");
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/** One Attention state: stable window, attraction/distraction forces, shift as Action. */
|
|
3
|
-
import assert from "node:assert/strict";
|
|
4
|
-
|
|
5
|
-
import { Attention, toShiftAction } from "../src/attention/index.ts";
|
|
6
|
-
import type { AttentionItem } from "../src/attention/index.ts";
|
|
7
|
-
|
|
8
|
-
const At = "2026-10-24T00:00:00.000Z";
|
|
9
|
-
const item = (id: string, order: number): AttentionItem => ({ target: { kind: "evidence", id }, order, weight: 0.5 });
|
|
10
|
-
|
|
11
|
-
const attention = new Attention({
|
|
12
|
-
subject: { pid: 1 },
|
|
13
|
-
capacity: { slots: 2, tokens: 100 },
|
|
14
|
-
items: [item("a", 0), item("b", 1), item("c", 2), item("d", 3)],
|
|
15
|
-
now: () => At,
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
assert.deepEqual(attention.focus().map((entry) => entry.target.id), ["a", "b"]);
|
|
19
|
-
const right = attention.shift({ actionId: "act.1", direction: "right", reason: "next two" });
|
|
20
|
-
assert.equal(right.changed, true);
|
|
21
|
-
assert.equal(right.blocked, false);
|
|
22
|
-
assert.deepEqual(right.snapshot.focus.map((entry) => entry.target.id), ["b", "c"]);
|
|
23
|
-
attention.shift({ actionId: "act.2", direction: "right", reason: "next two" });
|
|
24
|
-
const edge = attention.shift({ actionId: "act.3", direction: "right", reason: "beyond edge" });
|
|
25
|
-
assert.equal(edge.changed, false);
|
|
26
|
-
assert.equal(edge.blocked, true);
|
|
27
|
-
assert.match(edge.reason, /boundary/);
|
|
28
|
-
attention.shift({ actionId: "act.4", direction: "left", reason: "back" });
|
|
29
|
-
assert.deepEqual(attention.focus().map((entry) => entry.target.id), ["b", "c"]);
|
|
30
|
-
|
|
31
|
-
attention.observe({ kind: "attraction", from: { kind: "human", id: "user.1" }, target: { kind: "evidence", id: "d" }, strength: 0.4 });
|
|
32
|
-
attention.observe({ kind: "distraction", from: { kind: "event", id: "alert.1" }, target: { kind: "evidence", id: "d" }, competesWith: { kind: "evidence", id: "b" }, strength: 0.3 });
|
|
33
|
-
const snapshot = attention.snapshot();
|
|
34
|
-
assert.equal(snapshot.forces.length, 2);
|
|
35
|
-
assert.equal(snapshot.focus.length, 2);
|
|
36
|
-
assert.equal(snapshot.ignored.length, 2);
|
|
37
|
-
|
|
38
|
-
const action = toShiftAction({ direction: "right", steps: 1, reason: "test" });
|
|
39
|
-
assert.equal(action.intent, "attention.shift");
|
|
40
|
-
assert.equal(action.risk, "none");
|
|
41
|
-
assert.equal(action.successCriteria?.includes("a Receipt is recorded"), true);
|
|
42
|
-
|
|
43
|
-
attention.close();
|
|
44
|
-
assert.throws(() => attention.shift({ actionId: "act.x", direction: "left", reason: "closed" }), /closed/);
|
|
45
|
-
|
|
46
|
-
console.log(`focus=${snapshot.focus.map((entry) => entry.target.id).join(",")} ignored=${snapshot.ignored.map((entry) => entry.target.id).join(",")} forces=${snapshot.forces.length}`);
|
|
47
|
-
console.log("\x1b[32m✓\x1b[0m Attention is one state object; shift is an Action; forces do not reorder the window");
|
|
48
|
-
console.log("\n1 passed, 0 failed");
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Attention resource checks: process capacity -> thread allocation.
|
|
4
|
-
*
|
|
5
|
-
* The model is deliberately pure. It answers three questions:
|
|
6
|
-
* 1. how much foreground can this agent run before the reserve is touched?
|
|
7
|
-
* 2. when must the agent go offline/rest?
|
|
8
|
-
* 3. does the floor belong to safety and admitted tasks, not to every task?
|
|
9
|
-
*/
|
|
10
|
-
import assert from "node:assert/strict";
|
|
11
|
-
|
|
12
|
-
import type { CognitiveState } from "../src/attention/cognition.ts";
|
|
13
|
-
import {
|
|
14
|
-
DefaultAttentionPolicy,
|
|
15
|
-
applyRest,
|
|
16
|
-
attentionHealth,
|
|
17
|
-
planAttention,
|
|
18
|
-
processAttention,
|
|
19
|
-
qualityAdjustedThroughput,
|
|
20
|
-
recoveryDebtOf,
|
|
21
|
-
shouldRest,
|
|
22
|
-
} from "../src/attention/resource.ts";
|
|
23
|
-
import type { ThreadAttentionCandidate } from "../src/attention/resource.ts";
|
|
24
|
-
|
|
25
|
-
const At = "2026-10-24T00:00:00.000Z";
|
|
26
|
-
|
|
27
|
-
let passed = 0;
|
|
28
|
-
let failed = 0;
|
|
29
|
-
|
|
30
|
-
const test = (name: string, fn: () => void): void => {
|
|
31
|
-
try {
|
|
32
|
-
fn();
|
|
33
|
-
passed += 1;
|
|
34
|
-
console.log(`\x1b[32m\u2713\x1b[0m ${name}`);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
failed += 1;
|
|
37
|
-
const message = error instanceof Error ? error.message : `${error}`;
|
|
38
|
-
console.error(`\x1b[31m\u2717\x1b[0m ${name}\n ${message}`);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const state = (overrides: Partial<CognitiveState> = {}): CognitiveState => {
|
|
43
|
-
const base: CognitiveState = {
|
|
44
|
-
load: 0.2,
|
|
45
|
-
vigilance: 0.9,
|
|
46
|
-
arousal: 0.1,
|
|
47
|
-
mastery: 0.7,
|
|
48
|
-
accountability: 0.5,
|
|
49
|
-
cyclesSinceRest: 0,
|
|
50
|
-
capacityEff: 4,
|
|
51
|
-
pLapse: 0.1,
|
|
52
|
-
source: "default",
|
|
53
|
-
samples: 0,
|
|
54
|
-
};
|
|
55
|
-
return { ...base, ...overrides };
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const candidate = (
|
|
59
|
-
tid: number,
|
|
60
|
-
priority: number,
|
|
61
|
-
preferredSlots: number,
|
|
62
|
-
foreground = true,
|
|
63
|
-
extras: Partial<ThreadAttentionCandidate> = {},
|
|
64
|
-
): ThreadAttentionCandidate => ({
|
|
65
|
-
tid,
|
|
66
|
-
pid: 1,
|
|
67
|
-
priority,
|
|
68
|
-
preferredSlots,
|
|
69
|
-
foreground,
|
|
70
|
-
...extras,
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
test("process attention keeps a foreground cap and a safety reserve", () => {
|
|
74
|
-
const process = processAttention(1, state());
|
|
75
|
-
assert.equal(process.effectiveSlots, 4);
|
|
76
|
-
assert.equal(process.foregroundCap, 3);
|
|
77
|
-
assert.equal(process.reserveSlots, 1);
|
|
78
|
-
assert.equal(process.safetySlots, 1);
|
|
79
|
-
assert.equal(process.offline, false);
|
|
80
|
-
assert.equal(process.foregroundCap + process.reserveSlots, process.effectiveSlots);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
test("effective capacity shrinks with load, and rest is triggered by policy", () => {
|
|
84
|
-
const loaded = state({ load: 0.95, capacityEff: 3, vigilance: 0.3, pLapse: 0.7, cyclesSinceRest: 2 });
|
|
85
|
-
const process = processAttention(1, loaded);
|
|
86
|
-
assert.equal(process.effectiveSlots, 3);
|
|
87
|
-
assert.equal(process.foregroundCap, 2);
|
|
88
|
-
assert.equal(process.offline, true);
|
|
89
|
-
assert.equal(shouldRest(loaded), true);
|
|
90
|
-
assert.equal(recoveryDebtOf(loaded) > 0.5, true);
|
|
91
|
-
|
|
92
|
-
const rested = applyRest(loaded);
|
|
93
|
-
assert.equal(rested.cyclesSinceRest, 0);
|
|
94
|
-
assert.equal(rested.vigilance > loaded.vigilance, true);
|
|
95
|
-
assert.equal(rested.load < loaded.load, true);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
test("offline plans admit no foreground and explain every deferral", () => {
|
|
99
|
-
const process = processAttention(1, state({ vigilance: 0.2, cyclesSinceRest: 9 }));
|
|
100
|
-
const plan = planAttention(process, [candidate(1, 9, 2), candidate(2, 5, 1)]);
|
|
101
|
-
assert.equal(plan.rest, true);
|
|
102
|
-
assert.equal(plan.foreground, (void 0));
|
|
103
|
-
assert.equal(plan.deferred.length, 2);
|
|
104
|
-
assert.equal(
|
|
105
|
-
plan.deferred.every((entry) => entry.reason === "offline"),
|
|
106
|
-
true,
|
|
107
|
-
);
|
|
108
|
-
assert.equal(plan.utilization, 0);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
test("one foreground gets a slice; background uses only the reserve", () => {
|
|
112
|
-
const process = processAttention(1, state());
|
|
113
|
-
const plan = planAttention(process, [candidate(1, 9, 2), candidate(2, 8, 2), candidate(3, 5, 1, false), candidate(4, 4, 2, false)]);
|
|
114
|
-
assert.equal(plan.foreground?.tid, 1);
|
|
115
|
-
assert.equal(plan.foreground?.slots, 2);
|
|
116
|
-
assert.equal(plan.background.length, 1);
|
|
117
|
-
assert.equal(plan.background[0]?.tid, 3);
|
|
118
|
-
assert.equal(plan.background[0]?.slots, 1);
|
|
119
|
-
assert.equal(
|
|
120
|
-
plan.deferred.some((entry) => entry.tid === 2 && entry.reason === "low-priority"),
|
|
121
|
-
true,
|
|
122
|
-
);
|
|
123
|
-
assert.equal(
|
|
124
|
-
plan.deferred.some((entry) => entry.tid === 4 && entry.reason === "budget"),
|
|
125
|
-
true,
|
|
126
|
-
);
|
|
127
|
-
assert.equal(plan.utilization, 3 / 4);
|
|
128
|
-
assert.equal(plan.pressure > 0, true);
|
|
129
|
-
assert.deepEqual(attentionHealth(plan), { utilization: 0.75, pressure: plan.pressure, headroom: 0.25, rest: false });
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
test("floors apply to safety and admitted tasks, never to deferred tasks", () => {
|
|
133
|
-
const process = processAttention(1, state());
|
|
134
|
-
const plan = planAttention(process, [candidate(1, 9, 0, true, { minSlots: 1 }), candidate(2, 8, 2, true), candidate(3, 7, 1, false)]);
|
|
135
|
-
assert.equal(plan.foreground?.slots, 1);
|
|
136
|
-
assert.equal(plan.background[0]?.slots, 1);
|
|
137
|
-
assert.equal(
|
|
138
|
-
plan.deferred.some((entry) => entry.tid === 2),
|
|
139
|
-
true,
|
|
140
|
-
);
|
|
141
|
-
assert.equal(plan.process.safetySlots, 1);
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
test("switch cost raises pressure without silently consuming capacity", () => {
|
|
145
|
-
const process = processAttention(1, state({ dominantRole: "goal" }));
|
|
146
|
-
const plan = planAttention(process, [candidate(1, 9, 2, true, { role: "engineer", switchCost: 2 })]);
|
|
147
|
-
assert.equal(plan.foreground?.switchCost, 2);
|
|
148
|
-
assert.equal(plan.utilization, 2 / 4);
|
|
149
|
-
assert.equal(plan.pressure >= 0.5, true);
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
test("quality-adjusted throughput punishes busy-but-wrong agents", () => {
|
|
153
|
-
const busyWrong = qualityAdjustedThroughput({ successes: 10, attempts: 20, errors: 4, rework: 3, attentionSlots: 4 });
|
|
154
|
-
const slowerClean = qualityAdjustedThroughput({ successes: 8, attempts: 10, errors: 1, rework: 0, attentionSlots: 4 });
|
|
155
|
-
assert.equal(slowerClean > busyWrong, true);
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
test("a policy can be tuned without changing the model", () => {
|
|
159
|
-
const conservative = { ...DefaultAttentionPolicy, maxForegroundUtil: 0.5, reserveRatio: 0.5 };
|
|
160
|
-
const process = processAttention(1, state(), conservative);
|
|
161
|
-
assert.equal(process.foregroundCap, 2);
|
|
162
|
-
assert.equal(process.reserveSlots, 2);
|
|
163
|
-
assert.equal(process.safetySlots, 1);
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
console.log(`\n${passed} passed, ${failed} failed`);
|
|
167
|
-
if (failed > 0) {
|
|
168
|
-
process.exitCode = 1;
|
|
169
|
-
}
|