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.
Files changed (827) hide show
  1. package/CHANGELOG.md +341 -293
  2. package/CHANGELOG.zh-CN.md +41 -8
  3. package/README.md +250 -171
  4. package/README.zh-CN.md +251 -171
  5. package/lib/assignment/assign.d.ts +102 -0
  6. package/lib/assignment/assign.js +556 -0
  7. package/lib/assignment/binding.d.ts +103 -0
  8. package/lib/assignment/binding.js +575 -0
  9. package/lib/assignment/errors.d.ts +14 -0
  10. package/lib/assignment/errors.js +16 -0
  11. package/lib/assignment/guards.d.ts +18 -0
  12. package/lib/assignment/guards.js +28 -0
  13. package/lib/assignment/index.d.ts +10 -0
  14. package/lib/assignment/index.js +10 -0
  15. package/lib/assignment/types.d.ts +169 -0
  16. package/lib/assignment/types.js +1 -0
  17. package/lib/attention/budget.d.ts +1 -1
  18. package/lib/attention/budget.js +31 -9
  19. package/lib/bayes/engine.js +2 -1
  20. package/lib/bayes/reliability.js +25 -10
  21. package/lib/boundary/frame.d.ts +10 -4
  22. package/lib/boundary/frame.js +346 -109
  23. package/lib/boundary/kinds.d.ts +11 -0
  24. package/lib/boundary/kinds.js +33 -0
  25. package/lib/boundary/refTable.d.ts +19 -9
  26. package/lib/boundary/refTable.js +128 -30
  27. package/lib/boundary/toolCall.d.ts +22 -10
  28. package/lib/boundary/toolCall.js +798 -97
  29. package/lib/concept/conceptBudget.js +10 -1
  30. package/lib/concurrency/idempotency.d.ts +4 -3
  31. package/lib/concurrency/idempotency.js +57 -13
  32. package/lib/concurrency/retry.js +18 -3
  33. package/lib/context/agentContext.d.ts +13 -0
  34. package/lib/context/agentContext.js +14 -1
  35. package/lib/context/ast.d.ts +4 -1
  36. package/lib/context/ast.js +13 -3
  37. package/lib/context/contentStore.js +22 -9
  38. package/lib/context/contextBuilder.d.ts +457 -0
  39. package/lib/context/contextBuilder.js +1395 -0
  40. package/lib/context/contextPackage.d.ts +214 -0
  41. package/lib/context/contextPackage.js +191 -0
  42. package/lib/context/index.d.ts +14 -3
  43. package/lib/context/index.js +9 -1
  44. package/lib/context/relevance.d.ts +171 -0
  45. package/lib/context/relevance.js +250 -0
  46. package/lib/context/workspaceDiff.d.ts +105 -0
  47. package/lib/context/workspaceDiff.js +238 -0
  48. package/lib/context/workspaceService.d.ts +236 -1
  49. package/lib/context/workspaceService.js +1501 -73
  50. package/lib/cooperation/collaboration.d.ts +9 -0
  51. package/lib/cooperation/session.d.ts +4 -4
  52. package/lib/cooperation/session.js +3 -3
  53. package/lib/database/adapter/filesystemStore.d.ts +145 -0
  54. package/lib/database/adapter/filesystemStore.js +321 -0
  55. package/lib/database/adapter/index.d.ts +2 -0
  56. package/lib/database/adapter/index.js +2 -0
  57. package/lib/database/adapter/workspaceSessionStore.d.ts +118 -0
  58. package/lib/database/adapter/workspaceSessionStore.js +120 -0
  59. package/lib/database/entity/fileGraph.d.ts +53 -0
  60. package/lib/database/entity/fileGraph.js +15 -0
  61. package/lib/database/entity/fileTree.d.ts +76 -0
  62. package/lib/database/entity/fileTree.js +39 -0
  63. package/lib/database/entity/hook.d.ts +29 -0
  64. package/lib/database/entity/hook.js +18 -0
  65. package/lib/database/entity/index.d.ts +4 -0
  66. package/lib/database/entity/index.js +4 -0
  67. package/lib/database/entity/workspaceSession.d.ts +53 -0
  68. package/lib/database/entity/workspaceSession.js +28 -0
  69. package/lib/database/repository/fileAnnotationRepository.d.ts +75 -0
  70. package/lib/database/repository/fileAnnotationRepository.js +109 -0
  71. package/lib/database/repository/fileGraphRepository.d.ts +188 -0
  72. package/lib/database/repository/fileGraphRepository.js +648 -0
  73. package/lib/database/repository/fileNodeRepository.d.ts +116 -0
  74. package/lib/database/repository/fileNodeRepository.js +263 -0
  75. package/lib/database/repository/fileOutlineRepository.d.ts +40 -0
  76. package/lib/database/repository/fileOutlineRepository.js +104 -0
  77. package/lib/database/repository/fileWriteRepository.d.ts +41 -0
  78. package/lib/database/repository/fileWriteRepository.js +93 -0
  79. package/lib/database/repository/hookRepository.d.ts +67 -0
  80. package/lib/database/repository/hookRepository.js +150 -0
  81. package/lib/database/repository/index.d.ts +7 -0
  82. package/lib/database/repository/index.js +7 -0
  83. package/lib/database/repository/workspaceSessionRepository.d.ts +134 -0
  84. package/lib/database/repository/workspaceSessionRepository.js +327 -0
  85. package/lib/database/service/database.d.ts +14 -0
  86. package/lib/database/service/database.js +21 -0
  87. package/lib/database/sql/schema.js +187 -0
  88. package/lib/database/store/database.js +6 -1
  89. package/lib/delegate/team.d.ts +5 -0
  90. package/lib/delegate/team.js +83 -20
  91. package/lib/discover/classify.d.ts +20 -0
  92. package/lib/discover/classify.js +85 -0
  93. package/lib/discover/host.d.ts +20 -0
  94. package/lib/discover/host.js +89 -0
  95. package/lib/discover/index.d.ts +11 -0
  96. package/lib/discover/index.js +11 -0
  97. package/lib/discover/kinds.d.ts +14 -0
  98. package/lib/discover/kinds.js +23 -0
  99. package/lib/discover/tree.d.ts +7 -0
  100. package/lib/discover/tree.js +432 -0
  101. package/lib/discover/types.d.ts +115 -0
  102. package/lib/discover/types.js +1 -0
  103. package/lib/error/boundaryRejection.d.ts +1 -1
  104. package/lib/evaluation/agreement.js +2 -2
  105. package/lib/execution/handles.js +6 -0
  106. package/lib/execution/pin.js +2 -2
  107. package/lib/file/cfb.d.ts +56 -0
  108. package/lib/file/cfb.js +396 -0
  109. package/lib/file/dependency.d.ts +151 -0
  110. package/lib/file/dependency.js +568 -0
  111. package/lib/file/directory.d.ts +34 -0
  112. package/lib/file/directory.js +141 -0
  113. package/lib/file/errors.d.ts +20 -0
  114. package/lib/file/errors.js +18 -0
  115. package/lib/file/exportGraph.d.ts +31 -0
  116. package/lib/file/exportGraph.js +554 -0
  117. package/lib/file/file.d.ts +40 -0
  118. package/lib/file/file.js +339 -0
  119. package/lib/file/importGraph.d.ts +121 -0
  120. package/lib/file/importGraph.js +1022 -0
  121. package/lib/file/index.d.ts +45 -0
  122. package/lib/file/index.js +30 -0
  123. package/lib/file/metadata.d.ts +66 -0
  124. package/lib/file/metadata.js +470 -0
  125. package/lib/file/path.d.ts +60 -0
  126. package/lib/file/path.js +259 -0
  127. package/lib/file/read.d.ts +168 -0
  128. package/lib/file/read.js +541 -0
  129. package/lib/file/runtime.d.ts +95 -0
  130. package/lib/file/runtime.js +150 -0
  131. package/lib/file/service.d.ts +227 -0
  132. package/lib/file/service.js +663 -0
  133. package/lib/file/syntaxTree.d.ts +7 -0
  134. package/lib/file/syntaxTree.js +38 -0
  135. package/lib/file/time.d.ts +38 -0
  136. package/lib/file/time.js +44 -0
  137. package/lib/file/tree.d.ts +53 -0
  138. package/lib/file/tree.js +417 -0
  139. package/lib/file/types.d.ts +371 -0
  140. package/lib/file/types.js +1 -0
  141. package/lib/file/write.d.ts +159 -0
  142. package/lib/file/write.js +1028 -0
  143. package/lib/file/zip.d.ts +35 -0
  144. package/lib/file/zip.js +349 -0
  145. package/lib/fingerprint/algorithm.d.ts +97 -0
  146. package/lib/fingerprint/algorithm.js +271 -0
  147. package/lib/fingerprint/bytes.d.ts +18 -0
  148. package/lib/fingerprint/bytes.js +31 -0
  149. package/lib/fingerprint/error.d.ts +73 -0
  150. package/lib/fingerprint/error.js +86 -0
  151. package/lib/fingerprint/file.d.ts +71 -0
  152. package/lib/fingerprint/file.js +254 -0
  153. package/lib/fingerprint/index.d.ts +37 -0
  154. package/lib/fingerprint/index.js +12 -0
  155. package/lib/fingerprint/json.d.ts +41 -0
  156. package/lib/fingerprint/json.js +94 -0
  157. package/lib/fingerprint/number.d.ts +32 -0
  158. package/lib/fingerprint/number.js +95 -0
  159. package/lib/fingerprint/policy.d.ts +54 -0
  160. package/lib/fingerprint/policy.js +50 -0
  161. package/lib/fingerprint/preimage.d.ts +84 -0
  162. package/lib/fingerprint/preimage.js +133 -0
  163. package/lib/fingerprint/raw.d.ts +26 -0
  164. package/lib/fingerprint/raw.js +45 -0
  165. package/lib/fingerprint/ref.d.ts +39 -0
  166. package/lib/fingerprint/ref.js +178 -0
  167. package/lib/fingerprint/text.d.ts +42 -0
  168. package/lib/fingerprint/text.js +155 -0
  169. package/lib/fingerprint/tree.d.ts +56 -0
  170. package/lib/fingerprint/tree.js +288 -0
  171. package/lib/fingerprint/verify.d.ts +20 -0
  172. package/lib/fingerprint/verify.js +99 -0
  173. package/lib/global/filesystem.d.ts +43 -0
  174. package/lib/global/filesystem.js +75 -0
  175. package/lib/global/index.d.ts +8 -0
  176. package/lib/global/index.js +8 -0
  177. package/lib/global/service.d.ts +51 -0
  178. package/lib/global/service.js +98 -0
  179. package/lib/governance/transport.js +18 -6
  180. package/lib/hook/ast.d.ts +29 -0
  181. package/lib/hook/ast.js +22 -0
  182. package/lib/hook/code.d.ts +55 -0
  183. package/lib/hook/code.js +47 -0
  184. package/lib/hook/dependency.d.ts +45 -0
  185. package/lib/hook/dependency.js +28 -0
  186. package/lib/hook/diff.d.ts +114 -0
  187. package/lib/hook/diff.js +327 -0
  188. package/lib/hook/exportation.d.ts +31 -0
  189. package/lib/hook/exportation.js +24 -0
  190. package/lib/hook/file.d.ts +44 -0
  191. package/lib/hook/file.js +154 -0
  192. package/lib/hook/importation.d.ts +33 -0
  193. package/lib/hook/importation.js +22 -0
  194. package/lib/hook/index.d.ts +30 -0
  195. package/lib/hook/index.js +23 -0
  196. package/lib/hook/outline.d.ts +35 -0
  197. package/lib/hook/outline.js +27 -0
  198. package/lib/hook/project.d.ts +65 -0
  199. package/lib/hook/project.js +217 -0
  200. package/lib/hook/types.d.ts +114 -0
  201. package/lib/hook/types.js +407 -0
  202. package/lib/index.d.ts +9 -0
  203. package/lib/index.js +9 -0
  204. package/lib/lock/lease.js +28 -3
  205. package/lib/manifest/cardSign.d.ts +1 -1
  206. package/lib/manifest/cardSign.js +37 -7
  207. package/lib/manifest/federation.js +13 -6
  208. package/lib/manifest/trust.d.ts +2 -0
  209. package/lib/manifest/trust.js +27 -6
  210. package/lib/module/index.d.ts +4 -0
  211. package/lib/module/index.js +4 -0
  212. package/lib/module/mcp/client.js +21 -2
  213. package/lib/module/mcp/filesystemServer.d.ts +24 -0
  214. package/lib/module/mcp/filesystemServer.js +102 -0
  215. package/lib/module/mcp/http.js +32 -19
  216. package/lib/module/mcp/workspaceServer.js +20 -3
  217. package/lib/module/tool/filesystemExecutor.d.ts +18 -0
  218. package/lib/module/tool/filesystemExecutor.js +49 -0
  219. package/lib/module/tool/globalExecutor.d.ts +17 -0
  220. package/lib/module/tool/globalExecutor.js +39 -0
  221. package/lib/module/tool/globalFilesystemExecutor.d.ts +18 -0
  222. package/lib/module/tool/globalFilesystemExecutor.js +49 -0
  223. package/lib/module/tool/workspaceExecutor.d.ts +9 -0
  224. package/lib/module/tool/workspaceExecutor.js +16 -3
  225. package/lib/naming/aliases.d.ts +48 -0
  226. package/lib/naming/aliases.js +79 -0
  227. package/lib/naming/catalog.d.ts +117 -0
  228. package/lib/naming/catalog.js +108 -0
  229. package/lib/naming/grammar.d.ts +67 -0
  230. package/lib/naming/grammar.js +212 -0
  231. package/lib/naming/ids.d.ts +157 -0
  232. package/lib/naming/ids.js +119 -0
  233. package/lib/naming/index.d.ts +13 -0
  234. package/lib/naming/index.js +13 -0
  235. package/lib/outline/index.d.ts +9 -0
  236. package/lib/outline/index.js +8 -0
  237. package/lib/outline/office.d.ts +160 -0
  238. package/lib/outline/office.js +2375 -0
  239. package/lib/outline/officeBridge.d.ts +32 -0
  240. package/lib/outline/officeBridge.js +27 -0
  241. package/lib/outline/outline.d.ts +159 -0
  242. package/lib/outline/outline.js +837 -0
  243. package/lib/outline/outlineIndex.d.ts +97 -0
  244. package/lib/outline/outlineIndex.js +325 -0
  245. package/lib/outline/outlineKeywords.d.ts +59 -0
  246. package/lib/outline/outlineKeywords.js +143 -0
  247. package/lib/outline/outlineStrategies.d.ts +414 -0
  248. package/lib/outline/outlineStrategies.js +8324 -0
  249. package/lib/outline/reactOutline.d.ts +37 -0
  250. package/lib/outline/reactOutline.js +1070 -0
  251. package/lib/outline/shellOutline.d.ts +65 -0
  252. package/lib/outline/shellOutline.js +873 -0
  253. package/lib/outline/sqlOutline.d.ts +170 -0
  254. package/lib/outline/sqlOutline.js +1536 -0
  255. package/lib/outline/strategy.d.ts +46 -0
  256. package/lib/outline/strategy.js +1 -0
  257. package/lib/outline/types.d.ts +95 -0
  258. package/lib/outline/types.js +1 -0
  259. package/lib/outline/visualBasicOutline.d.ts +27 -0
  260. package/lib/outline/visualBasicOutline.js +750 -0
  261. package/lib/protocol/filesystem.d.ts +55 -0
  262. package/lib/protocol/filesystem.js +105 -0
  263. package/lib/protocol/global.d.ts +42 -0
  264. package/lib/protocol/global.js +63 -0
  265. package/lib/protocol/globalFilesystem.d.ts +40 -0
  266. package/lib/protocol/globalFilesystem.js +59 -0
  267. package/lib/protocol/index.d.ts +4 -0
  268. package/lib/protocol/index.js +4 -0
  269. package/lib/protocol/protocol.d.ts +4 -0
  270. package/lib/protocol/wire.js +5 -2
  271. package/lib/protocol/workspace.d.ts +305 -0
  272. package/lib/protocol/workspace.js +258 -0
  273. package/lib/receipt/receipt.d.ts +8 -0
  274. package/lib/registry/content.js +9 -3
  275. package/lib/runtime/kernelRuntime.js +9 -1
  276. package/lib/scenario/scenario.js +5 -4
  277. package/lib/semantic/canonical.d.ts +61 -0
  278. package/lib/semantic/canonical.js +135 -8
  279. package/lib/semantic/jsonValue.d.ts +31 -0
  280. package/lib/semantic/jsonValue.js +122 -0
  281. package/lib/semantic/sha256.js +3 -0
  282. package/lib/semantic/time.d.ts +14 -0
  283. package/lib/semantic/time.js +56 -0
  284. package/lib/session/context.d.ts +76 -0
  285. package/lib/session/context.js +419 -0
  286. package/lib/session/errors.d.ts +24 -0
  287. package/lib/session/errors.js +22 -0
  288. package/lib/session/identity.d.ts +24 -0
  289. package/lib/session/identity.js +56 -0
  290. package/lib/session/index.d.ts +14 -0
  291. package/lib/session/index.js +12 -0
  292. package/lib/session/registry.d.ts +130 -0
  293. package/lib/session/registry.js +908 -0
  294. package/lib/session/types.d.ts +227 -0
  295. package/lib/session/types.js +14 -0
  296. package/lib/structure/index.d.ts +1 -0
  297. package/lib/structure/index.js +1 -0
  298. package/lib/structure/trie.d.ts +88 -0
  299. package/lib/structure/trie.js +183 -0
  300. package/lib/syntax/byteIndex.d.ts +44 -0
  301. package/lib/syntax/byteIndex.js +148 -0
  302. package/lib/syntax/charset.d.ts +88 -0
  303. package/lib/syntax/charset.js +276 -0
  304. package/lib/syntax/index.d.ts +6 -0
  305. package/lib/syntax/index.js +5 -0
  306. package/lib/syntax/syntaxRegistry.d.ts +150 -0
  307. package/lib/syntax/syntaxRegistry.js +314 -0
  308. package/lib/syntax/syntaxTree.d.ts +106 -0
  309. package/lib/syntax/syntaxTree.js +668 -0
  310. package/lib/syntax/types.d.ts +15 -0
  311. package/lib/syntax/types.js +1 -0
  312. package/lib/types/common.d.ts +1 -1
  313. package/package.json +72 -193
  314. package/.editorconfig +0 -12
  315. package/.prettierignore +0 -17
  316. 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
  317. package/docs/annotation-campaign-A.csv +0 -54
  318. package/docs/annotation-campaign-B.csv +0 -54
  319. package/docs/annotation-campaign.csv +0 -54
  320. package/docs/eval/annotations-A.jsonl +0 -16
  321. package/docs/eval/annotations.json +0 -122
  322. package/docs/eval/recorded-labels.json +0 -12
  323. package/docs/eval/replay-cases.json +0 -14
  324. package/docs/eval/replay-labels-b.json +0 -14
  325. package/docs/examples/attention-request.json +0 -16
  326. package/docs/examples/checkpoint.json +0 -15
  327. package/docs/examples/claim.json +0 -66
  328. package/docs/examples/collaboration.json +0 -66
  329. package/docs/examples/concept-checkpoint.json +0 -15
  330. package/docs/examples/concept-prune-plan.json +0 -45
  331. package/docs/examples/federation.json +0 -126
  332. package/docs/examples/frame-chain.json +0 -77
  333. package/docs/examples/ledger-snapshot.json +0 -108
  334. package/docs/examples/manifest.json +0 -77
  335. package/docs/examples/message.json +0 -19
  336. package/docs/examples/other-model.json +0 -45
  337. package/docs/examples/plan.json +0 -50
  338. package/docs/examples/prune-plan.json +0 -48
  339. package/docs/examples/receipt.json +0 -22
  340. package/docs/examples/runtime-run.json +0 -573
  341. package/docs/examples/team.json +0 -66
  342. package/docs/examples/verb-note.json +0 -11
  343. package/docs/probes/bayes-scores.json +0 -1452
  344. package/docs/probes/calibration-imported.json +0 -141
  345. package/docs/probes/context-ast-deepseek.json +0 -1577
  346. package/docs/probes/deepseek-probe.json +0 -917
  347. package/docs/probes/eval-recorded-replay.json +0 -597
  348. package/docs/probes/eval-replay.json +0 -124
  349. package/docs/probes/eval-summary.json +0 -42
  350. package/docs/probes/runtime-eval.json +0 -4230
  351. package/docs/schemas/collaboration.schema.json +0 -73
  352. package/docs/schemas/common.schema.json +0 -125
  353. package/docs/schemas/compaction.schema.json +0 -121
  354. package/docs/schemas/concept-compaction.schema.json +0 -73
  355. package/docs/schemas/concept.schema.json +0 -97
  356. package/docs/schemas/epistemic.schema.json +0 -178
  357. package/docs/schemas/federation.schema.json +0 -66
  358. package/docs/schemas/frame.schema.json +0 -86
  359. package/docs/schemas/ledger-snapshot.schema.json +0 -30
  360. package/docs/schemas/manifest.schema.json +0 -169
  361. package/docs/schemas/message.schema.json +0 -41
  362. package/docs/schemas/plan.schema.json +0 -189
  363. package/docs/schemas/receipt.schema.json +0 -45
  364. package/docs/schemas/social.schema.json +0 -153
  365. package/docs/schemas/team.schema.json +0 -56
  366. package/docs/schemas/verb.schema.json +0 -120
  367. package/eslint.config.mts +0 -96
  368. package/index.html +0 -13
  369. package/lib/context/workspaceProtocol.d.ts +0 -30
  370. package/lib/context/workspaceProtocol.js +0 -49
  371. package/prettier.config.mts +0 -37
  372. package/public/favicon.svg +0 -1
  373. package/public/icons.svg +0 -24
  374. package/src/attention/attention.ts +0 -347
  375. package/src/attention/budget.ts +0 -72
  376. package/src/attention/cognition.ts +0 -519
  377. package/src/attention/index.ts +0 -8
  378. package/src/attention/interrupts.ts +0 -228
  379. package/src/attention/resource.ts +0 -316
  380. package/src/attention/social.ts +0 -217
  381. package/src/attention/socialTypes.ts +0 -115
  382. package/src/authz/authz.ts +0 -305
  383. package/src/authz/index.ts +0 -1
  384. package/src/bayes/calibration.ts +0 -204
  385. package/src/bayes/calibrationRegistry.ts +0 -111
  386. package/src/bayes/calibrationSelection.ts +0 -154
  387. package/src/bayes/engine.ts +0 -532
  388. package/src/bayes/index.ts +0 -6
  389. package/src/bayes/reliability.ts +0 -62
  390. package/src/bayes/scopedPriors.ts +0 -88
  391. package/src/boundary/frame.ts +0 -322
  392. package/src/boundary/ids.ts +0 -14
  393. package/src/boundary/index.ts +0 -12
  394. package/src/boundary/refTable.ts +0 -125
  395. package/src/boundary/toolCall.ts +0 -212
  396. package/src/concept/concept.ts +0 -75
  397. package/src/concept/conceptBudget.ts +0 -346
  398. package/src/concept/conceptBudgetTypes.ts +0 -79
  399. package/src/concept/index.ts +0 -3
  400. package/src/concurrency/idempotency.ts +0 -41
  401. package/src/concurrency/index.ts +0 -5
  402. package/src/concurrency/mutex.ts +0 -26
  403. package/src/concurrency/namedLocks.ts +0 -35
  404. package/src/concurrency/retry.ts +0 -50
  405. package/src/concurrency/worker.ts +0 -128
  406. package/src/context/agentContext.ts +0 -308
  407. package/src/context/ast.ts +0 -499
  408. package/src/context/contentStore.ts +0 -75
  409. package/src/context/context.ts +0 -65
  410. package/src/context/contextIndex.ts +0 -85
  411. package/src/context/document.ts +0 -137
  412. package/src/context/fileStorePath.ts +0 -14
  413. package/src/context/index.ts +0 -43
  414. package/src/context/lifecycle.ts +0 -221
  415. package/src/context/projections.ts +0 -151
  416. package/src/context/workspace.ts +0 -422
  417. package/src/context/workspaceProtocol.ts +0 -112
  418. package/src/context/workspaceService.ts +0 -423
  419. package/src/cooperation/board.ts +0 -104
  420. package/src/cooperation/collaboration.ts +0 -60
  421. package/src/cooperation/index.ts +0 -6
  422. package/src/cooperation/merge.ts +0 -190
  423. package/src/cooperation/metrics.ts +0 -57
  424. package/src/cooperation/session.ts +0 -131
  425. package/src/cooperation/unified.ts +0 -56
  426. package/src/counter.ts +0 -9
  427. package/src/database/adapter/adapters.ts +0 -35
  428. package/src/database/adapter/index.ts +0 -4
  429. package/src/database/adapter/runtimeSink.ts +0 -74
  430. package/src/database/adapter/sessionStore.ts +0 -32
  431. package/src/database/adapter/turnStore.ts +0 -23
  432. package/src/database/entity/agent.ts +0 -199
  433. package/src/database/entity/entity.ts +0 -1046
  434. package/src/database/entity/handle.ts +0 -79
  435. package/src/database/entity/index.ts +0 -32
  436. package/src/database/entity/message.ts +0 -74
  437. package/src/database/entity/meta.ts +0 -11
  438. package/src/database/entity/object.ts +0 -42
  439. package/src/database/entity/outbox.ts +0 -15
  440. package/src/database/entity/process.ts +0 -65
  441. package/src/database/entity/registry.ts +0 -155
  442. package/src/database/entity/runtimeApproval.ts +0 -30
  443. package/src/database/entity/runtimeSession.ts +0 -13
  444. package/src/database/entity/runtimeTurn.ts +0 -15
  445. package/src/database/entity/thread.ts +0 -85
  446. package/src/database/entity/window.ts +0 -85
  447. package/src/database/entity/worker.ts +0 -90
  448. package/src/database/index.ts +0 -6
  449. package/src/database/repository/addressSpaceRepository.ts +0 -72
  450. package/src/database/repository/agentRepository.ts +0 -460
  451. package/src/database/repository/base.ts +0 -41
  452. package/src/database/repository/executionRepository.ts +0 -477
  453. package/src/database/repository/handleRepository.ts +0 -64
  454. package/src/database/repository/index.ts +0 -20
  455. package/src/database/repository/messageRepository.ts +0 -52
  456. package/src/database/repository/objectRepository.ts +0 -69
  457. package/src/database/repository/outboxRepository.ts +0 -63
  458. package/src/database/repository/processRepository.ts +0 -58
  459. package/src/database/repository/registryRepository.ts +0 -119
  460. package/src/database/repository/repository.ts +0 -491
  461. package/src/database/repository/runtimeApprovalRepository.ts +0 -44
  462. package/src/database/repository/runtimeSessionRepository.ts +0 -27
  463. package/src/database/repository/runtimeTurnRepository.ts +0 -39
  464. package/src/database/repository/socialRepository.ts +0 -185
  465. package/src/database/repository/threadRepository.ts +0 -57
  466. package/src/database/repository/windowRepository.ts +0 -88
  467. package/src/database/repository/workerRepository.ts +0 -69
  468. package/src/database/service/database.ts +0 -90
  469. package/src/database/service/handleService.ts +0 -48
  470. package/src/database/service/index.ts +0 -16
  471. package/src/database/service/messageService.ts +0 -61
  472. package/src/database/service/objectService.ts +0 -59
  473. package/src/database/service/processService.ts +0 -61
  474. package/src/database/service/registryServices.ts +0 -88
  475. package/src/database/service/service.ts +0 -183
  476. package/src/database/service/stepService.ts +0 -53
  477. package/src/database/service/threadService.ts +0 -65
  478. package/src/database/service/windowService.ts +0 -30
  479. package/src/database/service/workerService.ts +0 -57
  480. package/src/database/sql/index.ts +0 -3
  481. package/src/database/sql/schema.ts +0 -418
  482. package/src/database/sql/sql.ts +0 -543
  483. package/src/database/store/database.ts +0 -210
  484. package/src/database/store/index.ts +0 -3
  485. package/src/database/store/store.ts +0 -266
  486. package/src/delegate/index.ts +0 -2
  487. package/src/delegate/team.ts +0 -268
  488. package/src/delegate/teamTypes.ts +0 -47
  489. package/src/diagnosis/checklist.ts +0 -74
  490. package/src/diagnosis/context.ts +0 -93
  491. package/src/diagnosis/frame.ts +0 -256
  492. package/src/diagnosis/index.ts +0 -5
  493. package/src/diagnosis/router.ts +0 -72
  494. package/src/diagnosis/types.ts +0 -89
  495. package/src/error/agentError.ts +0 -16
  496. package/src/error/ampError.ts +0 -20
  497. package/src/error/authzError.ts +0 -14
  498. package/src/error/boundaryRejection.ts +0 -20
  499. package/src/error/index.ts +0 -7
  500. package/src/error/kernelError.ts +0 -27
  501. package/src/error/mailboxError.ts +0 -9
  502. package/src/error/windowError.ts +0 -12
  503. package/src/evaluation/agreement.ts +0 -96
  504. package/src/evaluation/index.ts +0 -2
  505. package/src/evaluation/labels.ts +0 -241
  506. package/src/evidence/evidenceGraph.ts +0 -205
  507. package/src/evidence/index.ts +0 -4
  508. package/src/evidence/revalidation.ts +0 -191
  509. package/src/execution/exec.ts +0 -408
  510. package/src/execution/handles.ts +0 -65
  511. package/src/execution/index.ts +0 -3
  512. package/src/execution/pin.ts +0 -154
  513. package/src/frame/frame.ts +0 -70
  514. package/src/frame/index.ts +0 -1
  515. package/src/goal/goal.ts +0 -43
  516. package/src/goal/index.ts +0 -2
  517. package/src/goal/plan.ts +0 -196
  518. package/src/governance/attentionManifest.ts +0 -802
  519. package/src/governance/audit.ts +0 -362
  520. package/src/governance/budget.ts +0 -628
  521. package/src/governance/context.ts +0 -356
  522. package/src/governance/control.ts +0 -159
  523. package/src/governance/cooperation.ts +0 -479
  524. package/src/governance/credential.ts +0 -359
  525. package/src/governance/httpServer.ts +0 -99
  526. package/src/governance/index.ts +0 -32
  527. package/src/governance/legal.ts +0 -574
  528. package/src/governance/matrix.ts +0 -460
  529. package/src/governance/perspectives.ts +0 -406
  530. package/src/governance/signing.ts +0 -407
  531. package/src/governance/store.ts +0 -125
  532. package/src/governance/switching.ts +0 -459
  533. package/src/governance/toolPolicy.ts +0 -80
  534. package/src/governance/transport.ts +0 -204
  535. package/src/governance/types.ts +0 -380
  536. package/src/governance/workflow.ts +0 -743
  537. package/src/index.ts +0 -11
  538. package/src/interaction/index.ts +0 -1
  539. package/src/interaction/interaction.ts +0 -391
  540. package/src/ipc/index.ts +0 -4
  541. package/src/ipc/mailbox.ts +0 -132
  542. package/src/ipc/memorySocialStore.ts +0 -93
  543. package/src/ipc/social.ts +0 -93
  544. package/src/kernel/index.ts +0 -14
  545. package/src/kernel/scheduler.ts +0 -498
  546. package/src/ledger/checkpoint.ts +0 -304
  547. package/src/ledger/index.ts +0 -4
  548. package/src/ledger/ledger.ts +0 -31
  549. package/src/ledger/persistence.ts +0 -159
  550. package/src/ledger/share.ts +0 -80
  551. package/src/lock/index.ts +0 -2
  552. package/src/lock/lease.ts +0 -74
  553. package/src/main.ts +0 -199
  554. package/src/manifest/agentCard.ts +0 -72
  555. package/src/manifest/cardSign.ts +0 -87
  556. package/src/manifest/federation.ts +0 -237
  557. package/src/manifest/federationTypes.ts +0 -55
  558. package/src/manifest/index.ts +0 -8
  559. package/src/manifest/keys.ts +0 -643
  560. package/src/manifest/manifest.ts +0 -114
  561. package/src/manifest/sign.ts +0 -134
  562. package/src/manifest/trust.ts +0 -146
  563. package/src/mission/index.ts +0 -2
  564. package/src/mission/missionQueue.ts +0 -75
  565. package/src/module/index.ts +0 -9
  566. package/src/module/llm/deepseek.ts +0 -214
  567. package/src/module/llm/llm.ts +0 -84
  568. package/src/module/mcp/client.ts +0 -110
  569. package/src/module/mcp/http.ts +0 -102
  570. package/src/module/mcp/protocol.ts +0 -77
  571. package/src/module/mcp/server.ts +0 -148
  572. package/src/module/mcp/transport.ts +0 -30
  573. package/src/module/mcp/workspaceServer.ts +0 -111
  574. package/src/module/sandbox/sandbox.ts +0 -29
  575. package/src/module/tool/mcpExecutor.ts +0 -54
  576. package/src/module/tool/policy.ts +0 -52
  577. package/src/module/tool/redact.ts +0 -29
  578. package/src/module/tool/tool.ts +0 -53
  579. package/src/module/tool/workspaceExecutor.ts +0 -35
  580. package/src/policy/guard.ts +0 -240
  581. package/src/policy/index.ts +0 -2
  582. package/src/policy/policy.ts +0 -561
  583. package/src/process/agent.ts +0 -341
  584. package/src/process/agentService.ts +0 -236
  585. package/src/process/agentStore.ts +0 -378
  586. package/src/process/executionStore.ts +0 -151
  587. package/src/process/index.ts +0 -5
  588. package/src/process/process.ts +0 -240
  589. package/src/process/transitions.ts +0 -19
  590. package/src/progress/index.ts +0 -2
  591. package/src/progress/progress.ts +0 -85
  592. package/src/protocol/a2a.ts +0 -120
  593. package/src/protocol/channel.ts +0 -44
  594. package/src/protocol/envelope.ts +0 -655
  595. package/src/protocol/httpChannel.ts +0 -87
  596. package/src/protocol/index.ts +0 -6
  597. package/src/protocol/protocol.ts +0 -138
  598. package/src/protocol/wire.ts +0 -60
  599. package/src/receipt/index.ts +0 -1
  600. package/src/receipt/receipt.ts +0 -47
  601. package/src/registry/content.ts +0 -69
  602. package/src/registry/index.ts +0 -23
  603. package/src/registry/registry.ts +0 -599
  604. package/src/runtime/action.ts +0 -87
  605. package/src/runtime/behavior.ts +0 -330
  606. package/src/runtime/behaviorTuning.ts +0 -163
  607. package/src/runtime/cognitiveRuntime.ts +0 -703
  608. package/src/runtime/escalation.ts +0 -35
  609. package/src/runtime/governedTask.ts +0 -233
  610. package/src/runtime/index.ts +0 -15
  611. package/src/runtime/kernelRuntime.ts +0 -144
  612. package/src/runtime/operation.ts +0 -35
  613. package/src/runtime/replay.ts +0 -71
  614. package/src/runtime/routing.ts +0 -58
  615. package/src/runtime/safety.ts +0 -48
  616. package/src/runtime/session.ts +0 -341
  617. package/src/runtime/sessionStore.ts +0 -43
  618. package/src/runtime/telemetry.ts +0 -55
  619. package/src/runtime/turnStore.ts +0 -30
  620. package/src/scenario/index.ts +0 -1
  621. package/src/scenario/scenario.ts +0 -299
  622. package/src/semantic/canonical.ts +0 -24
  623. package/src/semantic/index.ts +0 -2
  624. package/src/semantic/sha256.ts +0 -82
  625. package/src/storage/appendLog.ts +0 -372
  626. package/src/storage/fileAppendSink.ts +0 -40
  627. package/src/storage/index.ts +0 -2
  628. package/src/store/bindCache.ts +0 -22
  629. package/src/store/cache.ts +0 -191
  630. package/src/store/context.ts +0 -31
  631. package/src/store/handleStore.ts +0 -31
  632. package/src/store/index.ts +0 -9
  633. package/src/store/messageStore.ts +0 -31
  634. package/src/store/objectStore.ts +0 -31
  635. package/src/store/processStore.ts +0 -31
  636. package/src/store/threadStore.ts +0 -31
  637. package/src/store/windowStore.ts +0 -31
  638. package/src/structure/abstractSyntaxTree.ts +0 -493
  639. package/src/structure/avlTree.ts +0 -408
  640. package/src/structure/binarySearchTree.ts +0 -352
  641. package/src/structure/binaryTree.ts +0 -525
  642. package/src/structure/bloomFilter.ts +0 -231
  643. package/src/structure/compare.ts +0 -110
  644. package/src/structure/cuckooFilter.ts +0 -337
  645. package/src/structure/deque.ts +0 -223
  646. package/src/structure/filterKey.ts +0 -36
  647. package/src/structure/hash.ts +0 -279
  648. package/src/structure/heap.ts +0 -268
  649. package/src/structure/index.ts +0 -20
  650. package/src/structure/iterator.ts +0 -22
  651. package/src/structure/lru.ts +0 -619
  652. package/src/structure/ordered.ts +0 -399
  653. package/src/structure/priority.ts +0 -915
  654. package/src/structure/queue.ts +0 -168
  655. package/src/structure/redBlackTree.ts +0 -680
  656. package/src/structure/segmentTree.ts +0 -248
  657. package/src/structure/stack.ts +0 -118
  658. package/src/structure/unordered.ts +0 -407
  659. package/src/style.css +0 -278
  660. package/src/thread/index.ts +0 -2
  661. package/src/thread/thread.ts +0 -176
  662. package/src/thread/transitions.ts +0 -17
  663. package/src/types/common.ts +0 -119
  664. package/src/types/index.ts +0 -23
  665. package/src/warrant/epistemic.ts +0 -154
  666. package/src/warrant/index.ts +0 -3
  667. package/src/warrant/inquiry.ts +0 -166
  668. package/src/warrant/warrant.ts +0 -179
  669. package/src/window/compaction.ts +0 -403
  670. package/src/window/compactionTypes.ts +0 -119
  671. package/src/window/index.ts +0 -7
  672. package/src/window/page.ts +0 -18
  673. package/src/window/window.ts +0 -244
  674. package/tools/_helpers.ts +0 -34
  675. package/tools/a2a-check.ts +0 -110
  676. package/tools/a2a-flow-check.ts +0 -78
  677. package/tools/agent-card-check.ts +0 -76
  678. package/tools/agent-check.ts +0 -236
  679. package/tools/agent-store-check.ts +0 -153
  680. package/tools/agreement-check.ts +0 -27
  681. package/tools/annotation-server-check.ts +0 -48
  682. package/tools/annotation-server.ts +0 -230
  683. package/tools/annotation-status.ts +0 -65
  684. package/tools/approval-access-check.ts +0 -66
  685. package/tools/arch-check.ts +0 -72
  686. package/tools/attention-core-check.ts +0 -48
  687. package/tools/attention-resource-check.ts +0 -169
  688. package/tools/audit-check.ts +0 -207
  689. package/tools/authority-check.ts +0 -124
  690. package/tools/authz-check.ts +0 -138
  691. package/tools/bayes-check.ts +0 -162
  692. package/tools/bayes-probe.ts +0 -154
  693. package/tools/behavior-tuning-check.ts +0 -53
  694. package/tools/board-check.ts +0 -87
  695. package/tools/boundary-check.ts +0 -199
  696. package/tools/bundle-trust-check.ts +0 -96
  697. package/tools/calibrate-imported.ts +0 -108
  698. package/tools/calibration-check.ts +0 -44
  699. package/tools/calibration-registry-check.ts +0 -40
  700. package/tools/calibration-sim.ts +0 -40
  701. package/tools/card-sign-check.ts +0 -71
  702. package/tools/card-trust-check.ts +0 -78
  703. package/tools/channel-check.ts +0 -86
  704. package/tools/checkpoint-check.ts +0 -620
  705. package/tools/cleanup-style-configs.ts +0 -29
  706. package/tools/cognition-check.ts +0 -648
  707. package/tools/cognitive-runtime-check.ts +0 -609
  708. package/tools/collaboration-demo.ts +0 -78
  709. package/tools/compaction-check.ts +0 -266
  710. package/tools/concept-check.ts +0 -260
  711. package/tools/concurrency-check.ts +0 -242
  712. package/tools/conformance-runtime.ts +0 -389
  713. package/tools/conformance.ts +0 -651
  714. package/tools/context-ast-check.ts +0 -90
  715. package/tools/context-ast-deepseek.ts +0 -242
  716. package/tools/context-graph-bench.ts +0 -50
  717. package/tools/context-graph-check.ts +0 -229
  718. package/tools/context-index-check.ts +0 -48
  719. package/tools/context-lifecycle-check.ts +0 -69
  720. package/tools/context-projection-check.ts +0 -73
  721. package/tools/context-scope-check.ts +0 -134
  722. package/tools/context-storage-check.ts +0 -113
  723. package/tools/cooperation-check.ts +0 -517
  724. package/tools/cooperation-http-check.ts +0 -125
  725. package/tools/deepseek-llm-check.ts +0 -147
  726. package/tools/deepseek-probe.ts +0 -494
  727. package/tools/diagnosis-check.ts +0 -109
  728. package/tools/diagnosis-router-check.ts +0 -50
  729. package/tools/document-context-check.ts +0 -237
  730. package/tools/envelope-check.ts +0 -659
  731. package/tools/eslint-rules/index.ts +0 -26
  732. package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
  733. package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
  734. package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
  735. package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
  736. package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
  737. package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
  738. package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
  739. package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
  740. package/tools/eslint-rules/rules/variable-naming.ts +0 -175
  741. package/tools/eval-recorded-replay.ts +0 -215
  742. package/tools/eval-replay.ts +0 -139
  743. package/tools/eval-summary.ts +0 -136
  744. package/tools/evidence-revalidation-check.ts +0 -235
  745. package/tools/exec-check.ts +0 -217
  746. package/tools/federation-check.ts +0 -166
  747. package/tools/federation-demo.ts +0 -45
  748. package/tools/filter-check.ts +0 -243
  749. package/tools/governance-check.ts +0 -680
  750. package/tools/governance-store-check.ts +0 -131
  751. package/tools/governed-task-check.ts +0 -227
  752. package/tools/guard-check.ts +0 -122
  753. package/tools/http-channel-check.ts +0 -125
  754. package/tools/import-campaign.ts +0 -28
  755. package/tools/inquiry-check.ts +0 -126
  756. package/tools/interaction-check.ts +0 -171
  757. package/tools/interrupts-check.ts +0 -173
  758. package/tools/ipc-check.ts +0 -170
  759. package/tools/kernel-async-check.ts +0 -136
  760. package/tools/kernel-check.ts +0 -369
  761. package/tools/kernel-runtime-check.ts +0 -276
  762. package/tools/keys-check.ts +0 -559
  763. package/tools/label-audit.ts +0 -70
  764. package/tools/labels-workflow-check.ts +0 -49
  765. package/tools/linear-structure-check.ts +0 -524
  766. package/tools/live-exec.ts +0 -62
  767. package/tools/live-governance-eval.ts +0 -813
  768. package/tools/live-legacy.ts +0 -50
  769. package/tools/lru-check.ts +0 -182
  770. package/tools/make-annotation-campaign.ts +0 -57
  771. package/tools/mcp-executor-check.ts +0 -33
  772. package/tools/merge-annotations.ts +0 -32
  773. package/tools/merge-check.ts +0 -98
  774. package/tools/metrics-check.ts +0 -84
  775. package/tools/net-probe.ts +0 -107
  776. package/tools/oauth-probe.ts +0 -117
  777. package/tools/outbox-check.ts +0 -50
  778. package/tools/persistence-check.ts +0 -144
  779. package/tools/pin-check.ts +0 -116
  780. package/tools/platform-check.ts +0 -281
  781. package/tools/policy-check.ts +0 -514
  782. package/tools/prettier-plugin/index.mts +0 -84
  783. package/tools/priority-check.ts +0 -627
  784. package/tools/probe-context7.ts +0 -63
  785. package/tools/registry-check.ts +0 -252
  786. package/tools/reliability-check.ts +0 -25
  787. package/tools/retry-check.ts +0 -85
  788. package/tools/rewrite-declaration-extensions.ts +0 -98
  789. package/tools/runtime-check.ts +0 -165
  790. package/tools/runtime-deepseek-check.ts +0 -85
  791. package/tools/runtime-eval.ts +0 -358
  792. package/tools/scenario-check.ts +0 -161
  793. package/tools/scenario-incident.ts +0 -162
  794. package/tools/scoped-priors-check.ts +0 -35
  795. package/tools/scoped-priors-pooling.ts +0 -34
  796. package/tools/segment-ast-check.ts +0 -649
  797. package/tools/session-check.ts +0 -196
  798. package/tools/session-store-check.ts +0 -73
  799. package/tools/share-check.ts +0 -88
  800. package/tools/sign-check.ts +0 -95
  801. package/tools/signing-check.ts +0 -275
  802. package/tools/snapshot-demo.ts +0 -65
  803. package/tools/social-check.ts +0 -146
  804. package/tools/structure-compare-check.ts +0 -95
  805. package/tools/support/documentScanner.ts +0 -577
  806. package/tools/support/texScanner.ts +0 -631
  807. package/tools/support/workspaceScanner.ts +0 -476
  808. package/tools/team-check.ts +0 -163
  809. package/tools/team-demo.ts +0 -36
  810. package/tools/telemetry-check.ts +0 -44
  811. package/tools/tex-context-check.ts +0 -263
  812. package/tools/tool-gate-check.ts +0 -98
  813. package/tools/tree-structure-check.ts +0 -786
  814. package/tools/trust-flow-check.ts +0 -158
  815. package/tools/turn-store-check.ts +0 -57
  816. package/tools/unified-check.ts +0 -83
  817. package/tools/validate.ts +0 -309
  818. package/tools/wire-check.ts +0 -96
  819. package/tools/workspace-agent-check.ts +0 -486
  820. package/tools/workspace-agent-demo.ts +0 -62
  821. package/tools/workspace-agent-server.ts +0 -101
  822. package/tools/workspace-context-check.ts +0 -331
  823. package/tools/workspace-context.ts +0 -131
  824. package/tsconfig.build.json +0 -14
  825. package/tsconfig.json +0 -24
  826. package/tsconfig.tools.json +0 -31
  827. package/viz/context-ast.json +0 -1577
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Per-session JSON context with canonical byte accounting.
3
+ *
4
+ * The context is the only mutable data a session owns that is not a file. It is
5
+ * partitioned by session id so two sessions in one process can never observe
6
+ * each other's entries. Values are canonicalised before they are stored: that
7
+ * proves the value round-trips through strict JSON, gives one definition of
8
+ * "bytes" for quotas, and rejects `bigint`, functions, `undefined`, cycles and
9
+ * unpaired surrogates instead of silently coercing them.
10
+ *
11
+ * Every returned entry is a `structuredClone`, so a caller that mutates a
12
+ * result cannot corrupt the store. Persistence is a separate port: a host that
13
+ * only wants identity persistence can omit it, and a host that supplies it gets
14
+ * synchronous `put`/`delete`/`replace` writes on the same calls that mutate
15
+ * memory. Loading is lazy (`ensure`) because a restored registry may hold many
16
+ * sessions the process never touches.
17
+ */
18
+ import { Buffer } from "node:buffer";
19
+ import { canonical } from "../semantic/canonical.js";
20
+ import { fail } from "./errors.js";
21
+ const DefaultMaxEntries = 256;
22
+ const DefaultMaxBytes = 1024 * 1024;
23
+ const MaxNameLength = 128;
24
+ const ControlCharacters = /[\u0000-\u001f\u007f-\u009f]/;
25
+ const SystemClock = { now: () => new Date() };
26
+ const clone = (value) => structuredClone(value);
27
+ /**
28
+ * A name must be well-formed Unicode. `JSON.stringify` tolerates a lone
29
+ * surrogate by escaping it, but a persistence adapter that binds UTF-8 cannot,
30
+ * so accepting one would make the stored key differ from the key the caller
31
+ * wrote.
32
+ */
33
+ const isWellFormed = (value) => {
34
+ for (let index = 0; index < value.length; index += 1) {
35
+ const unit = value.charCodeAt(index);
36
+ if (unit >= 0xd800 && unit <= 0xdbff) {
37
+ const next = index + 1 < value.length ? value.charCodeAt(index + 1) : 0;
38
+ if (next < 0xdc00 || next > 0xdfff) {
39
+ return false;
40
+ }
41
+ index += 1;
42
+ }
43
+ else if (unit >= 0xdc00 && unit <= 0xdfff) {
44
+ return false;
45
+ }
46
+ }
47
+ return true;
48
+ };
49
+ /**
50
+ * Session ids are opaque handles. They share the text rules but not the
51
+ * 128-code-unit namespace/key ceiling, because the ceiling is a context key
52
+ * contract rather than a session-id contract.
53
+ */
54
+ const sessionIdIsValid = (value) => typeof (value) === "string" && value.length > 0 && value.trim().length > 0 && !ControlCharacters.test(value) && isWellFormed(value);
55
+ const requireSessionId = (value) => (sessionIdIsValid(value) ? value : fail("invalid_arguments"));
56
+ /**
57
+ * Namespace and key share one grammar: non-empty, at most 128 code units, no
58
+ * control characters and well-formed Unicode. The rule stays out of the error
59
+ * message; the code is the entire contract.
60
+ */
61
+ const nameIsValid = (value) => sessionIdIsValid(value) && value.length <= MaxNameLength;
62
+ const requireName = (value) => (nameIsValid(value) ? value : fail("invalid_arguments"));
63
+ const requireLimit = (value, fallback) => {
64
+ if (value === (void 0)) {
65
+ return fallback;
66
+ }
67
+ if (!Number.isSafeInteger(value) || value < 1) {
68
+ return fail("invalid_arguments");
69
+ }
70
+ return value;
71
+ };
72
+ const entryIdentity = (namespace, key) => `${namespace}\u0000${key}`;
73
+ export class SessionContexts {
74
+ persistence;
75
+ clock;
76
+ maxEntries;
77
+ maxBytes;
78
+ sessions = new Map();
79
+ sizes = new Map();
80
+ loaded = new Set();
81
+ constructor(options = {}) {
82
+ this.persistence = options.persistence;
83
+ this.clock = options.clock ?? SystemClock;
84
+ this.maxEntries = requireLimit(options.limits?.maxContextEntries, DefaultMaxEntries);
85
+ this.maxBytes = requireLimit(options.limits?.maxContextBytes, DefaultMaxBytes);
86
+ }
87
+ /**
88
+ * Load one session's persisted entries exactly once. An absent store, a
89
+ * store that has no row for the session and an empty result all mean "this
90
+ * session has no entries yet". A persisted partition that exceeds the
91
+ * current limits is rejected with `context_quota` rather than silently
92
+ * bypassing the quota; `clear` and `remove` still work without loading.
93
+ */
94
+ ensure(sessionId) {
95
+ const id = requireSessionId(sessionId);
96
+ if (this.loaded.has(id)) {
97
+ return;
98
+ }
99
+ const partition = new Map();
100
+ let total = 0;
101
+ const persistence = this.persistence;
102
+ if (persistence !== (void 0)) {
103
+ let loaded;
104
+ try {
105
+ loaded = persistence.load(id);
106
+ }
107
+ catch {
108
+ return fail("store_failure");
109
+ }
110
+ if (loaded === (void 0)) {
111
+ loaded = [];
112
+ }
113
+ if (!Array.isArray(loaded)) {
114
+ return fail("store_failure");
115
+ }
116
+ const stored = loaded;
117
+ const seen = new Set();
118
+ for (let index = 0; index < stored.length; index += 1) {
119
+ const storedEntry = stored[index];
120
+ if (!this.storedEntryIsValid(storedEntry)) {
121
+ return fail("store_failure");
122
+ }
123
+ const entry = clone(storedEntry);
124
+ const identity = entryIdentity(entry.namespace, entry.key);
125
+ if (seen.has(identity)) {
126
+ return fail("store_failure");
127
+ }
128
+ seen.add(identity);
129
+ let bucket = partition.get(entry.namespace);
130
+ if (bucket === (void 0)) {
131
+ bucket = new Map();
132
+ partition.set(entry.namespace, bucket);
133
+ }
134
+ bucket.set(entry.key, entry);
135
+ total += entry.bytes;
136
+ }
137
+ if (stored.length > this.maxEntries || total > this.maxBytes) {
138
+ return fail("context_quota");
139
+ }
140
+ }
141
+ this.sessions.set(id, partition);
142
+ this.sizes.set(id, total);
143
+ this.loaded.add(id);
144
+ }
145
+ /**
146
+ * Return one entry, or `undefined`. A missing session is an empty context,
147
+ * not an error: the registry owns session existence.
148
+ */
149
+ get(sessionId, namespace, key) {
150
+ const id = requireSessionId(sessionId);
151
+ const space = requireName(namespace);
152
+ const entryKey = requireName(key);
153
+ const bucket = this.partitionOf(id).get(space);
154
+ if (bucket === (void 0)) {
155
+ return (void 0);
156
+ }
157
+ const entry = bucket.get(entryKey);
158
+ return entry === (void 0) ? (void 0) : clone(entry);
159
+ }
160
+ /**
161
+ * Canonicalise, quota-check and store one value, returning the stored entry
162
+ * as a detached copy.
163
+ */
164
+ set(sessionId, namespace, key, value, at) {
165
+ const id = requireSessionId(sessionId);
166
+ const space = requireName(namespace);
167
+ const entryKey = requireName(key);
168
+ if (typeof (at) !== "string") {
169
+ return fail("invalid_arguments");
170
+ }
171
+ let updatedAt;
172
+ if (at.length === 0) {
173
+ updatedAt = this.clock.now().toISOString();
174
+ }
175
+ else {
176
+ updatedAt = at;
177
+ }
178
+ let text;
179
+ try {
180
+ text = canonical(value);
181
+ }
182
+ catch {
183
+ return fail("invalid_arguments");
184
+ }
185
+ const normalized = JSON.parse(text);
186
+ const bytes = Buffer.byteLength(text, "utf8");
187
+ const partition = this.partitionOf(id);
188
+ const bucket = partition.get(space);
189
+ const previous = bucket === (void 0) ? (void 0) : bucket.get(entryKey);
190
+ const total = (this.sizes.get(id) ?? 0) - (previous === (void 0) ? 0 : previous.bytes);
191
+ if (previous === (void 0) && this.countOf(id) + 1 > this.maxEntries) {
192
+ return fail("context_quota");
193
+ }
194
+ if (total + bytes > this.maxBytes) {
195
+ return fail("context_quota");
196
+ }
197
+ const entry = { namespace: space, key: entryKey, value: normalized, bytes, updatedAt };
198
+ this.persistPut(id, entry);
199
+ const target = bucket === (void 0) ? new Map() : bucket;
200
+ if (bucket === (void 0)) {
201
+ partition.set(space, target);
202
+ }
203
+ target.set(entryKey, entry);
204
+ this.sizes.set(id, total + bytes);
205
+ return clone(entry);
206
+ }
207
+ /**
208
+ * Remove one entry. Returns `false` when it never existed.
209
+ */
210
+ delete(sessionId, namespace, key) {
211
+ const id = requireSessionId(sessionId);
212
+ const space = requireName(namespace);
213
+ const entryKey = requireName(key);
214
+ const partition = this.partitionOf(id);
215
+ const bucket = partition.get(space);
216
+ if (bucket === (void 0)) {
217
+ return false;
218
+ }
219
+ const entry = bucket.get(entryKey);
220
+ if (entry === (void 0)) {
221
+ return false;
222
+ }
223
+ const persistence = this.persistence;
224
+ if (persistence !== (void 0)) {
225
+ try {
226
+ persistence.delete(id, space, entryKey);
227
+ }
228
+ catch {
229
+ return fail("store_failure");
230
+ }
231
+ }
232
+ bucket.delete(entryKey);
233
+ if (bucket.size === 0) {
234
+ partition.delete(space);
235
+ }
236
+ this.sizes.set(id, Math.max(0, (this.sizes.get(id) ?? 0) - entry.bytes));
237
+ return true;
238
+ }
239
+ /**
240
+ * List entries for one session, optionally narrowed to one namespace.
241
+ * Ordering is deterministic (namespace, then key) so snapshots diff cleanly.
242
+ */
243
+ list(sessionId, namespace) {
244
+ const id = requireSessionId(sessionId);
245
+ const wanted = namespace === (void 0) ? (void 0) : requireName(namespace);
246
+ const partition = this.partitionOf(id);
247
+ const entries = [];
248
+ const namespaces = [...partition.keys()].sort();
249
+ for (let spaceIndex = 0; spaceIndex < namespaces.length; spaceIndex += 1) {
250
+ const space = namespaces[spaceIndex];
251
+ if (wanted !== (void 0) && space !== wanted) {
252
+ continue;
253
+ }
254
+ const bucket = partition.get(space);
255
+ if (bucket === (void 0)) {
256
+ continue;
257
+ }
258
+ const keys = [...bucket.keys()].sort();
259
+ for (let keyIndex = 0; keyIndex < keys.length; keyIndex += 1) {
260
+ const entry = bucket.get(keys[keyIndex]);
261
+ if (entry !== (void 0)) {
262
+ entries.push(clone(entry));
263
+ }
264
+ }
265
+ }
266
+ return entries;
267
+ }
268
+ /**
269
+ * Immutable view of one session's whole context.
270
+ */
271
+ snapshot(sessionId) {
272
+ const id = requireSessionId(sessionId);
273
+ const entries = this.list(id);
274
+ return { sessionId: id, entries, bytes: this.sizes.get(id) ?? 0 };
275
+ }
276
+ /**
277
+ * Canonical UTF-8 bytes charged against one session.
278
+ */
279
+ bytes(sessionId) {
280
+ const id = requireSessionId(sessionId);
281
+ this.ensure(id);
282
+ return this.sizes.get(id) ?? 0;
283
+ }
284
+ /**
285
+ * Drop every entry for one session. The empty state is persisted as a
286
+ * `replace`, which is atomic for an adapter that honours the port. This is
287
+ * deliberately an overwrite rather than a load-then-clear: a corrupt or
288
+ * over-quota persisted partition must still be removable by its host.
289
+ */
290
+ clear(sessionId) {
291
+ const id = requireSessionId(sessionId);
292
+ const persistence = this.persistence;
293
+ if (persistence !== (void 0)) {
294
+ try {
295
+ persistence.replace(id, []);
296
+ }
297
+ catch {
298
+ return fail("store_failure");
299
+ }
300
+ }
301
+ this.sessions.set(id, new Map());
302
+ this.sizes.set(id, 0);
303
+ this.loaded.add(id);
304
+ }
305
+ /**
306
+ * Copy the source context into the target session. Values are deep copies,
307
+ * so the two sessions share no mutable object. The target's previous
308
+ * context, if any, is replaced.
309
+ */
310
+ fork(from, to) {
311
+ const source = requireSessionId(from);
312
+ const target = requireSessionId(to);
313
+ if (source === target) {
314
+ return fail("invalid_arguments");
315
+ }
316
+ const entries = this.list(source);
317
+ let total = 0;
318
+ for (let index = 0; index < entries.length; index += 1) {
319
+ total += entries[index].bytes;
320
+ }
321
+ if (entries.length > this.maxEntries || total > this.maxBytes) {
322
+ return fail("context_quota");
323
+ }
324
+ const persistence = this.persistence;
325
+ if (persistence !== (void 0)) {
326
+ try {
327
+ persistence.replace(target, entries.map((entry) => clone(entry)));
328
+ }
329
+ catch {
330
+ return fail("store_failure");
331
+ }
332
+ }
333
+ const partition = new Map();
334
+ for (let index = 0; index < entries.length; index += 1) {
335
+ const entry = clone(entries[index]);
336
+ let bucket = partition.get(entry.namespace);
337
+ if (bucket === (void 0)) {
338
+ bucket = new Map();
339
+ partition.set(entry.namespace, bucket);
340
+ }
341
+ bucket.set(entry.key, entry);
342
+ }
343
+ this.sessions.set(target, partition);
344
+ this.sizes.set(target, total);
345
+ this.loaded.add(target);
346
+ }
347
+ /**
348
+ * Remove every entry for one session and its persisted partition.
349
+ */
350
+ remove(sessionId) {
351
+ const id = requireSessionId(sessionId);
352
+ const persistence = this.persistence;
353
+ if (persistence !== (void 0)) {
354
+ try {
355
+ persistence.deleteSession(id);
356
+ }
357
+ catch {
358
+ return fail("store_failure");
359
+ }
360
+ }
361
+ this.sessions.delete(id);
362
+ this.sizes.delete(id);
363
+ this.loaded.delete(id);
364
+ }
365
+ partitionOf(sessionId) {
366
+ this.ensure(sessionId);
367
+ const existing = this.sessions.get(sessionId);
368
+ if (existing !== (void 0)) {
369
+ return existing;
370
+ }
371
+ const created = new Map();
372
+ this.sessions.set(sessionId, created);
373
+ this.sizes.set(sessionId, 0);
374
+ return created;
375
+ }
376
+ countOf(sessionId) {
377
+ const partition = this.sessions.get(sessionId);
378
+ if (partition === (void 0)) {
379
+ return 0;
380
+ }
381
+ let count = 0;
382
+ const buckets = [...partition.values()];
383
+ for (let index = 0; index < buckets.length; index += 1) {
384
+ count += buckets[index].size;
385
+ }
386
+ return count;
387
+ }
388
+ storedEntryIsValid(entry) {
389
+ if (entry === null || typeof (entry) !== "object") {
390
+ return false;
391
+ }
392
+ if (!nameIsValid(entry.namespace) || !nameIsValid(entry.key)) {
393
+ return false;
394
+ }
395
+ if (typeof (entry.updatedAt) !== "string" || entry.updatedAt.length === 0 || !Number.isSafeInteger(entry.bytes) || entry.bytes < 0) {
396
+ return false;
397
+ }
398
+ let text;
399
+ try {
400
+ text = canonical(entry.value);
401
+ }
402
+ catch {
403
+ return false;
404
+ }
405
+ return Buffer.byteLength(text, "utf8") === entry.bytes;
406
+ }
407
+ persistPut(sessionId, entry) {
408
+ const persistence = this.persistence;
409
+ if (persistence === (void 0)) {
410
+ return;
411
+ }
412
+ try {
413
+ persistence.put(sessionId, clone(entry));
414
+ }
415
+ catch {
416
+ fail("store_failure");
417
+ }
418
+ }
419
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Closed error taxonomy for the session domain.
3
+ *
4
+ * Messages are the code itself. Root paths, agent ids, context keys and bearer
5
+ * tokens stay out of the error string so a transport can forward it to a model
6
+ * without leaking host layout or credentials.
7
+ */
8
+ import type { SessionErrorCode } from "./types.js";
9
+ /**
10
+ * One classified session failure. The message mirrors {@link code} exactly so
11
+ * an adapter never has to parse English prose and never receives a host path.
12
+ */
13
+ export declare class SessionError extends Error {
14
+ readonly code: SessionErrorCode;
15
+ constructor(code: SessionErrorCode);
16
+ }
17
+ /**
18
+ * Throw one classified failure.
19
+ */
20
+ export declare const fail: (code: SessionErrorCode) => never;
21
+ /**
22
+ * Narrow an unknown thrown value to this domain's error.
23
+ */
24
+ export declare const isSessionError: (error: unknown) => error is SessionError;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * One classified session failure. The message mirrors {@link code} exactly so
3
+ * an adapter never has to parse English prose and never receives a host path.
4
+ */
5
+ export class SessionError extends Error {
6
+ code;
7
+ constructor(code) {
8
+ super(code);
9
+ this.name = "SessionError";
10
+ this.code = code;
11
+ }
12
+ }
13
+ /**
14
+ * Throw one classified failure.
15
+ */
16
+ export const fail = (code) => {
17
+ throw new SessionError(code);
18
+ };
19
+ /**
20
+ * Narrow an unknown thrown value to this domain's error.
21
+ */
22
+ export const isSessionError = (error) => error instanceof SessionError;
@@ -0,0 +1,24 @@
1
+ import type { SessionId } from "./types.js";
2
+ /**
3
+ * Allocate a public session handle: `ses_` plus 32 lowercase hex characters.
4
+ */
5
+ export declare const createSessionId: () => SessionId;
6
+ /**
7
+ * Allocate a 32-byte bearer token encoded as base64url without padding.
8
+ */
9
+ export declare const createSessionToken: () => string;
10
+ /**
11
+ * Hash a token for storage as `sha256:<hex>`.
12
+ *
13
+ * The raw token never reaches the store; callers that persist the hash cannot
14
+ * reconstruct the secret from it.
15
+ */
16
+ export declare const hashSessionToken: (token: string) => string;
17
+ /**
18
+ * Compare a token against a stored `sha256:<hex>` digest in constant time.
19
+ *
20
+ * Both sides are copied into equal-width buffers before `timingSafeEqual`, so a
21
+ * length mismatch performs one comparison and returns `false` instead of
22
+ * throwing. A non-string argument is rejected the same way.
23
+ */
24
+ export declare const verifySessionToken: (token: string, expectedHash: string) => boolean;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Session identity generation and token verification.
3
+ *
4
+ * A session id is a public handle; the bearer token is the secret. Only the
5
+ * token hash is ever stored, and verification uses a constant-time comparison
6
+ * that still runs when the stored hash is missing, truncated or otherwise
7
+ * malformed, so a caller cannot learn the expected length from a throw.
8
+ */
9
+ import { Buffer } from "node:buffer";
10
+ import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
11
+ import { fail } from "./errors.js";
12
+ const SessionIdPrefix = "ses_";
13
+ const SessionIdBytes = 16;
14
+ const TokenBytes = 32;
15
+ const HashPrefix = "sha256:";
16
+ /**
17
+ * Allocate a public session handle: `ses_` plus 32 lowercase hex characters.
18
+ */
19
+ export const createSessionId = () => `${SessionIdPrefix}${randomBytes(SessionIdBytes).toString("hex")}`;
20
+ /**
21
+ * Allocate a 32-byte bearer token encoded as base64url without padding.
22
+ */
23
+ export const createSessionToken = () => randomBytes(TokenBytes).toString("base64url");
24
+ /**
25
+ * Hash a token for storage as `sha256:<hex>`.
26
+ *
27
+ * The raw token never reaches the store; callers that persist the hash cannot
28
+ * reconstruct the secret from it.
29
+ */
30
+ export const hashSessionToken = (token) => {
31
+ if (typeof (token) !== "string") {
32
+ return fail("invalid_arguments");
33
+ }
34
+ return `${HashPrefix}${createHash("sha256").update(token, "utf8").digest("hex")}`;
35
+ };
36
+ /**
37
+ * Compare a token against a stored `sha256:<hex>` digest in constant time.
38
+ *
39
+ * Both sides are copied into equal-width buffers before `timingSafeEqual`, so a
40
+ * length mismatch performs one comparison and returns `false` instead of
41
+ * throwing. A non-string argument is rejected the same way.
42
+ */
43
+ export const verifySessionToken = (token, expectedHash) => {
44
+ if (typeof (token) !== "string" || typeof (expectedHash) !== "string") {
45
+ return false;
46
+ }
47
+ const actual = Buffer.from(hashSessionToken(token), "utf8");
48
+ const expected = Buffer.from(expectedHash, "utf8");
49
+ const width = Math.max(actual.length, expected.length, 1);
50
+ const left = Buffer.alloc(width);
51
+ const right = Buffer.alloc(width);
52
+ actual.copy(left, 0);
53
+ expected.copy(right, 0);
54
+ const equal = timingSafeEqual(left, right);
55
+ return equal && actual.length === expected.length;
56
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Public session entry: identity, lifecycle, context isolation and ports.
3
+ *
4
+ * `src/session` is the data-isolation boundary for one agent's workspace work.
5
+ * It is intentionally separate from `runtime/session.ts`, the cognitive memory
6
+ * of a turn loop, and it never shares mutable state with it.
7
+ */
8
+ export { SessionError, fail, isSessionError } from "./errors.js";
9
+ export { createSessionId, createSessionToken, hashSessionToken, verifySessionToken } from "./identity.js";
10
+ export { SessionContexts } from "./context.js";
11
+ export type { SessionContextOptions } from "./context.js";
12
+ export { SessionRegistry } from "./registry.js";
13
+ export type { SessionRotationStore } from "./registry.js";
14
+ export * from "./types.js";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Public session entry: identity, lifecycle, context isolation and ports.
3
+ *
4
+ * `src/session` is the data-isolation boundary for one agent's workspace work.
5
+ * It is intentionally separate from `runtime/session.ts`, the cognitive memory
6
+ * of a turn loop, and it never shares mutable state with it.
7
+ */
8
+ export { SessionError, fail, isSessionError } from "./errors.js";
9
+ export { createSessionId, createSessionToken, hashSessionToken, verifySessionToken } from "./identity.js";
10
+ export { SessionContexts } from "./context.js";
11
+ export { SessionRegistry } from "./registry.js";
12
+ export * from "./types.js";