attention-manifest-protocol 0.4.2 → 0.4.4

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 (809) 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/eslint.config.mts +0 -96
  352. package/index.html +0 -13
  353. package/prettier.config.mts +0 -37
  354. package/public/favicon.svg +0 -1
  355. package/public/icons.svg +0 -24
  356. package/src/attention/attention.ts +0 -347
  357. package/src/attention/budget.ts +0 -72
  358. package/src/attention/cognition.ts +0 -519
  359. package/src/attention/index.ts +0 -8
  360. package/src/attention/interrupts.ts +0 -228
  361. package/src/attention/resource.ts +0 -316
  362. package/src/attention/social.ts +0 -217
  363. package/src/attention/socialTypes.ts +0 -115
  364. package/src/authz/authz.ts +0 -305
  365. package/src/authz/index.ts +0 -1
  366. package/src/bayes/calibration.ts +0 -204
  367. package/src/bayes/calibrationRegistry.ts +0 -111
  368. package/src/bayes/calibrationSelection.ts +0 -154
  369. package/src/bayes/engine.ts +0 -532
  370. package/src/bayes/index.ts +0 -6
  371. package/src/bayes/reliability.ts +0 -62
  372. package/src/bayes/scopedPriors.ts +0 -88
  373. package/src/boundary/frame.ts +0 -322
  374. package/src/boundary/ids.ts +0 -14
  375. package/src/boundary/index.ts +0 -12
  376. package/src/boundary/refTable.ts +0 -125
  377. package/src/boundary/toolCall.ts +0 -212
  378. package/src/concept/concept.ts +0 -75
  379. package/src/concept/conceptBudget.ts +0 -346
  380. package/src/concept/conceptBudgetTypes.ts +0 -79
  381. package/src/concept/index.ts +0 -3
  382. package/src/concurrency/idempotency.ts +0 -41
  383. package/src/concurrency/index.ts +0 -5
  384. package/src/concurrency/mutex.ts +0 -26
  385. package/src/concurrency/namedLocks.ts +0 -35
  386. package/src/concurrency/retry.ts +0 -50
  387. package/src/concurrency/worker.ts +0 -128
  388. package/src/context/agentContext.ts +0 -308
  389. package/src/context/ast.ts +0 -499
  390. package/src/context/contentStore.ts +0 -75
  391. package/src/context/context.ts +0 -65
  392. package/src/context/contextIndex.ts +0 -85
  393. package/src/context/document.ts +0 -137
  394. package/src/context/fileStorePath.ts +0 -14
  395. package/src/context/index.ts +0 -43
  396. package/src/context/lifecycle.ts +0 -221
  397. package/src/context/projections.ts +0 -151
  398. package/src/context/workspace.ts +0 -422
  399. package/src/context/workspaceProtocol.ts +0 -112
  400. package/src/context/workspaceService.ts +0 -423
  401. package/src/cooperation/board.ts +0 -104
  402. package/src/cooperation/collaboration.ts +0 -60
  403. package/src/cooperation/index.ts +0 -6
  404. package/src/cooperation/merge.ts +0 -190
  405. package/src/cooperation/metrics.ts +0 -57
  406. package/src/cooperation/session.ts +0 -131
  407. package/src/cooperation/unified.ts +0 -56
  408. package/src/counter.ts +0 -9
  409. package/src/database/adapter/adapters.ts +0 -35
  410. package/src/database/adapter/index.ts +0 -4
  411. package/src/database/adapter/runtimeSink.ts +0 -74
  412. package/src/database/adapter/sessionStore.ts +0 -32
  413. package/src/database/adapter/turnStore.ts +0 -23
  414. package/src/database/entity/agent.ts +0 -199
  415. package/src/database/entity/entity.ts +0 -1046
  416. package/src/database/entity/handle.ts +0 -79
  417. package/src/database/entity/index.ts +0 -32
  418. package/src/database/entity/message.ts +0 -74
  419. package/src/database/entity/meta.ts +0 -11
  420. package/src/database/entity/object.ts +0 -42
  421. package/src/database/entity/outbox.ts +0 -15
  422. package/src/database/entity/process.ts +0 -65
  423. package/src/database/entity/registry.ts +0 -155
  424. package/src/database/entity/runtimeApproval.ts +0 -30
  425. package/src/database/entity/runtimeSession.ts +0 -13
  426. package/src/database/entity/runtimeTurn.ts +0 -15
  427. package/src/database/entity/thread.ts +0 -85
  428. package/src/database/entity/window.ts +0 -85
  429. package/src/database/entity/worker.ts +0 -90
  430. package/src/database/index.ts +0 -6
  431. package/src/database/repository/addressSpaceRepository.ts +0 -72
  432. package/src/database/repository/agentRepository.ts +0 -460
  433. package/src/database/repository/base.ts +0 -41
  434. package/src/database/repository/executionRepository.ts +0 -477
  435. package/src/database/repository/handleRepository.ts +0 -64
  436. package/src/database/repository/index.ts +0 -20
  437. package/src/database/repository/messageRepository.ts +0 -52
  438. package/src/database/repository/objectRepository.ts +0 -69
  439. package/src/database/repository/outboxRepository.ts +0 -63
  440. package/src/database/repository/processRepository.ts +0 -58
  441. package/src/database/repository/registryRepository.ts +0 -119
  442. package/src/database/repository/repository.ts +0 -491
  443. package/src/database/repository/runtimeApprovalRepository.ts +0 -44
  444. package/src/database/repository/runtimeSessionRepository.ts +0 -27
  445. package/src/database/repository/runtimeTurnRepository.ts +0 -39
  446. package/src/database/repository/socialRepository.ts +0 -185
  447. package/src/database/repository/threadRepository.ts +0 -57
  448. package/src/database/repository/windowRepository.ts +0 -88
  449. package/src/database/repository/workerRepository.ts +0 -69
  450. package/src/database/service/database.ts +0 -90
  451. package/src/database/service/handleService.ts +0 -48
  452. package/src/database/service/index.ts +0 -16
  453. package/src/database/service/messageService.ts +0 -61
  454. package/src/database/service/objectService.ts +0 -59
  455. package/src/database/service/processService.ts +0 -61
  456. package/src/database/service/registryServices.ts +0 -88
  457. package/src/database/service/service.ts +0 -183
  458. package/src/database/service/stepService.ts +0 -53
  459. package/src/database/service/threadService.ts +0 -65
  460. package/src/database/service/windowService.ts +0 -30
  461. package/src/database/service/workerService.ts +0 -57
  462. package/src/database/sql/index.ts +0 -3
  463. package/src/database/sql/schema.ts +0 -418
  464. package/src/database/sql/sql.ts +0 -543
  465. package/src/database/store/database.ts +0 -210
  466. package/src/database/store/index.ts +0 -3
  467. package/src/database/store/store.ts +0 -266
  468. package/src/delegate/index.ts +0 -2
  469. package/src/delegate/team.ts +0 -268
  470. package/src/delegate/teamTypes.ts +0 -47
  471. package/src/diagnosis/checklist.ts +0 -74
  472. package/src/diagnosis/context.ts +0 -93
  473. package/src/diagnosis/frame.ts +0 -256
  474. package/src/diagnosis/index.ts +0 -5
  475. package/src/diagnosis/router.ts +0 -72
  476. package/src/diagnosis/types.ts +0 -89
  477. package/src/error/agentError.ts +0 -16
  478. package/src/error/ampError.ts +0 -20
  479. package/src/error/authzError.ts +0 -14
  480. package/src/error/boundaryRejection.ts +0 -20
  481. package/src/error/index.ts +0 -7
  482. package/src/error/kernelError.ts +0 -27
  483. package/src/error/mailboxError.ts +0 -9
  484. package/src/error/windowError.ts +0 -12
  485. package/src/evaluation/agreement.ts +0 -96
  486. package/src/evaluation/index.ts +0 -2
  487. package/src/evaluation/labels.ts +0 -241
  488. package/src/evidence/evidenceGraph.ts +0 -205
  489. package/src/evidence/index.ts +0 -4
  490. package/src/evidence/revalidation.ts +0 -191
  491. package/src/execution/exec.ts +0 -408
  492. package/src/execution/handles.ts +0 -65
  493. package/src/execution/index.ts +0 -3
  494. package/src/execution/pin.ts +0 -154
  495. package/src/frame/frame.ts +0 -70
  496. package/src/frame/index.ts +0 -1
  497. package/src/goal/goal.ts +0 -43
  498. package/src/goal/index.ts +0 -2
  499. package/src/goal/plan.ts +0 -196
  500. package/src/governance/attentionManifest.ts +0 -802
  501. package/src/governance/audit.ts +0 -362
  502. package/src/governance/budget.ts +0 -628
  503. package/src/governance/context.ts +0 -356
  504. package/src/governance/control.ts +0 -159
  505. package/src/governance/cooperation.ts +0 -479
  506. package/src/governance/credential.ts +0 -359
  507. package/src/governance/httpServer.ts +0 -99
  508. package/src/governance/index.ts +0 -32
  509. package/src/governance/legal.ts +0 -574
  510. package/src/governance/matrix.ts +0 -460
  511. package/src/governance/perspectives.ts +0 -406
  512. package/src/governance/signing.ts +0 -407
  513. package/src/governance/store.ts +0 -125
  514. package/src/governance/switching.ts +0 -459
  515. package/src/governance/toolPolicy.ts +0 -80
  516. package/src/governance/transport.ts +0 -204
  517. package/src/governance/types.ts +0 -380
  518. package/src/governance/workflow.ts +0 -743
  519. package/src/index.ts +0 -11
  520. package/src/interaction/index.ts +0 -1
  521. package/src/interaction/interaction.ts +0 -391
  522. package/src/ipc/index.ts +0 -4
  523. package/src/ipc/mailbox.ts +0 -132
  524. package/src/ipc/memorySocialStore.ts +0 -93
  525. package/src/ipc/social.ts +0 -93
  526. package/src/kernel/index.ts +0 -14
  527. package/src/kernel/scheduler.ts +0 -498
  528. package/src/ledger/checkpoint.ts +0 -304
  529. package/src/ledger/index.ts +0 -4
  530. package/src/ledger/ledger.ts +0 -31
  531. package/src/ledger/persistence.ts +0 -159
  532. package/src/ledger/share.ts +0 -80
  533. package/src/lock/index.ts +0 -2
  534. package/src/lock/lease.ts +0 -74
  535. package/src/main.ts +0 -199
  536. package/src/manifest/agentCard.ts +0 -72
  537. package/src/manifest/cardSign.ts +0 -87
  538. package/src/manifest/federation.ts +0 -237
  539. package/src/manifest/federationTypes.ts +0 -55
  540. package/src/manifest/index.ts +0 -8
  541. package/src/manifest/keys.ts +0 -643
  542. package/src/manifest/manifest.ts +0 -114
  543. package/src/manifest/sign.ts +0 -134
  544. package/src/manifest/trust.ts +0 -146
  545. package/src/mission/index.ts +0 -2
  546. package/src/mission/missionQueue.ts +0 -75
  547. package/src/module/index.ts +0 -9
  548. package/src/module/llm/deepseek.ts +0 -214
  549. package/src/module/llm/llm.ts +0 -84
  550. package/src/module/mcp/client.ts +0 -110
  551. package/src/module/mcp/http.ts +0 -102
  552. package/src/module/mcp/protocol.ts +0 -77
  553. package/src/module/mcp/server.ts +0 -148
  554. package/src/module/mcp/transport.ts +0 -30
  555. package/src/module/mcp/workspaceServer.ts +0 -111
  556. package/src/module/sandbox/sandbox.ts +0 -29
  557. package/src/module/tool/mcpExecutor.ts +0 -54
  558. package/src/module/tool/policy.ts +0 -52
  559. package/src/module/tool/redact.ts +0 -29
  560. package/src/module/tool/tool.ts +0 -53
  561. package/src/module/tool/workspaceExecutor.ts +0 -35
  562. package/src/policy/guard.ts +0 -240
  563. package/src/policy/index.ts +0 -2
  564. package/src/policy/policy.ts +0 -561
  565. package/src/process/agent.ts +0 -341
  566. package/src/process/agentService.ts +0 -236
  567. package/src/process/agentStore.ts +0 -378
  568. package/src/process/executionStore.ts +0 -151
  569. package/src/process/index.ts +0 -5
  570. package/src/process/process.ts +0 -240
  571. package/src/process/transitions.ts +0 -19
  572. package/src/progress/index.ts +0 -2
  573. package/src/progress/progress.ts +0 -85
  574. package/src/protocol/a2a.ts +0 -120
  575. package/src/protocol/channel.ts +0 -44
  576. package/src/protocol/envelope.ts +0 -655
  577. package/src/protocol/httpChannel.ts +0 -87
  578. package/src/protocol/index.ts +0 -6
  579. package/src/protocol/protocol.ts +0 -138
  580. package/src/protocol/wire.ts +0 -60
  581. package/src/receipt/index.ts +0 -1
  582. package/src/receipt/receipt.ts +0 -47
  583. package/src/registry/content.ts +0 -69
  584. package/src/registry/index.ts +0 -23
  585. package/src/registry/registry.ts +0 -599
  586. package/src/runtime/action.ts +0 -87
  587. package/src/runtime/behavior.ts +0 -330
  588. package/src/runtime/behaviorTuning.ts +0 -163
  589. package/src/runtime/cognitiveRuntime.ts +0 -703
  590. package/src/runtime/escalation.ts +0 -35
  591. package/src/runtime/governedTask.ts +0 -233
  592. package/src/runtime/index.ts +0 -15
  593. package/src/runtime/kernelRuntime.ts +0 -144
  594. package/src/runtime/operation.ts +0 -35
  595. package/src/runtime/replay.ts +0 -71
  596. package/src/runtime/routing.ts +0 -58
  597. package/src/runtime/safety.ts +0 -48
  598. package/src/runtime/session.ts +0 -341
  599. package/src/runtime/sessionStore.ts +0 -43
  600. package/src/runtime/telemetry.ts +0 -55
  601. package/src/runtime/turnStore.ts +0 -30
  602. package/src/scenario/index.ts +0 -1
  603. package/src/scenario/scenario.ts +0 -299
  604. package/src/semantic/canonical.ts +0 -24
  605. package/src/semantic/index.ts +0 -2
  606. package/src/semantic/sha256.ts +0 -82
  607. package/src/storage/appendLog.ts +0 -372
  608. package/src/storage/fileAppendSink.ts +0 -40
  609. package/src/storage/index.ts +0 -2
  610. package/src/store/bindCache.ts +0 -22
  611. package/src/store/cache.ts +0 -191
  612. package/src/store/context.ts +0 -31
  613. package/src/store/handleStore.ts +0 -31
  614. package/src/store/index.ts +0 -9
  615. package/src/store/messageStore.ts +0 -31
  616. package/src/store/objectStore.ts +0 -31
  617. package/src/store/processStore.ts +0 -31
  618. package/src/store/threadStore.ts +0 -31
  619. package/src/store/windowStore.ts +0 -31
  620. package/src/structure/abstractSyntaxTree.ts +0 -493
  621. package/src/structure/avlTree.ts +0 -408
  622. package/src/structure/binarySearchTree.ts +0 -352
  623. package/src/structure/binaryTree.ts +0 -525
  624. package/src/structure/bloomFilter.ts +0 -231
  625. package/src/structure/compare.ts +0 -110
  626. package/src/structure/cuckooFilter.ts +0 -337
  627. package/src/structure/deque.ts +0 -223
  628. package/src/structure/filterKey.ts +0 -36
  629. package/src/structure/hash.ts +0 -279
  630. package/src/structure/heap.ts +0 -268
  631. package/src/structure/index.ts +0 -20
  632. package/src/structure/iterator.ts +0 -22
  633. package/src/structure/lru.ts +0 -619
  634. package/src/structure/ordered.ts +0 -399
  635. package/src/structure/priority.ts +0 -915
  636. package/src/structure/queue.ts +0 -168
  637. package/src/structure/redBlackTree.ts +0 -680
  638. package/src/structure/segmentTree.ts +0 -248
  639. package/src/structure/stack.ts +0 -118
  640. package/src/structure/unordered.ts +0 -407
  641. package/src/style.css +0 -278
  642. package/src/thread/index.ts +0 -2
  643. package/src/thread/thread.ts +0 -176
  644. package/src/thread/transitions.ts +0 -17
  645. package/src/types/common.ts +0 -119
  646. package/src/types/index.ts +0 -23
  647. package/src/warrant/epistemic.ts +0 -154
  648. package/src/warrant/index.ts +0 -3
  649. package/src/warrant/inquiry.ts +0 -166
  650. package/src/warrant/warrant.ts +0 -179
  651. package/src/window/compaction.ts +0 -403
  652. package/src/window/compactionTypes.ts +0 -119
  653. package/src/window/index.ts +0 -7
  654. package/src/window/page.ts +0 -18
  655. package/src/window/window.ts +0 -244
  656. package/tools/_helpers.ts +0 -34
  657. package/tools/a2a-check.ts +0 -110
  658. package/tools/a2a-flow-check.ts +0 -78
  659. package/tools/agent-card-check.ts +0 -76
  660. package/tools/agent-check.ts +0 -236
  661. package/tools/agent-store-check.ts +0 -153
  662. package/tools/agreement-check.ts +0 -27
  663. package/tools/annotation-server-check.ts +0 -48
  664. package/tools/annotation-server.ts +0 -230
  665. package/tools/annotation-status.ts +0 -65
  666. package/tools/approval-access-check.ts +0 -66
  667. package/tools/arch-check.ts +0 -72
  668. package/tools/attention-core-check.ts +0 -48
  669. package/tools/attention-resource-check.ts +0 -169
  670. package/tools/audit-check.ts +0 -207
  671. package/tools/authority-check.ts +0 -124
  672. package/tools/authz-check.ts +0 -138
  673. package/tools/bayes-check.ts +0 -162
  674. package/tools/bayes-probe.ts +0 -154
  675. package/tools/behavior-tuning-check.ts +0 -53
  676. package/tools/board-check.ts +0 -87
  677. package/tools/boundary-check.ts +0 -199
  678. package/tools/bundle-trust-check.ts +0 -96
  679. package/tools/calibrate-imported.ts +0 -108
  680. package/tools/calibration-check.ts +0 -44
  681. package/tools/calibration-registry-check.ts +0 -40
  682. package/tools/calibration-sim.ts +0 -40
  683. package/tools/card-sign-check.ts +0 -71
  684. package/tools/card-trust-check.ts +0 -78
  685. package/tools/channel-check.ts +0 -86
  686. package/tools/checkpoint-check.ts +0 -620
  687. package/tools/cleanup-style-configs.ts +0 -29
  688. package/tools/cognition-check.ts +0 -648
  689. package/tools/cognitive-runtime-check.ts +0 -609
  690. package/tools/collaboration-demo.ts +0 -78
  691. package/tools/compaction-check.ts +0 -266
  692. package/tools/concept-check.ts +0 -260
  693. package/tools/concurrency-check.ts +0 -242
  694. package/tools/conformance-runtime.ts +0 -389
  695. package/tools/conformance.ts +0 -651
  696. package/tools/context-ast-check.ts +0 -90
  697. package/tools/context-ast-deepseek.ts +0 -242
  698. package/tools/context-graph-bench.ts +0 -50
  699. package/tools/context-graph-check.ts +0 -229
  700. package/tools/context-index-check.ts +0 -48
  701. package/tools/context-lifecycle-check.ts +0 -69
  702. package/tools/context-projection-check.ts +0 -73
  703. package/tools/context-scope-check.ts +0 -134
  704. package/tools/context-storage-check.ts +0 -113
  705. package/tools/cooperation-check.ts +0 -517
  706. package/tools/cooperation-http-check.ts +0 -125
  707. package/tools/deepseek-llm-check.ts +0 -147
  708. package/tools/deepseek-probe.ts +0 -494
  709. package/tools/diagnosis-check.ts +0 -109
  710. package/tools/diagnosis-router-check.ts +0 -50
  711. package/tools/document-context-check.ts +0 -237
  712. package/tools/envelope-check.ts +0 -659
  713. package/tools/eslint-rules/index.ts +0 -26
  714. package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
  715. package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
  716. package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
  717. package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
  718. package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
  719. package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
  720. package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
  721. package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
  722. package/tools/eslint-rules/rules/variable-naming.ts +0 -175
  723. package/tools/eval-recorded-replay.ts +0 -215
  724. package/tools/eval-replay.ts +0 -139
  725. package/tools/eval-summary.ts +0 -136
  726. package/tools/evidence-revalidation-check.ts +0 -235
  727. package/tools/exec-check.ts +0 -217
  728. package/tools/federation-check.ts +0 -166
  729. package/tools/federation-demo.ts +0 -45
  730. package/tools/filter-check.ts +0 -243
  731. package/tools/governance-check.ts +0 -680
  732. package/tools/governance-store-check.ts +0 -131
  733. package/tools/governed-task-check.ts +0 -227
  734. package/tools/guard-check.ts +0 -122
  735. package/tools/http-channel-check.ts +0 -125
  736. package/tools/import-campaign.ts +0 -28
  737. package/tools/inquiry-check.ts +0 -126
  738. package/tools/interaction-check.ts +0 -171
  739. package/tools/interrupts-check.ts +0 -173
  740. package/tools/ipc-check.ts +0 -170
  741. package/tools/kernel-async-check.ts +0 -136
  742. package/tools/kernel-check.ts +0 -369
  743. package/tools/kernel-runtime-check.ts +0 -276
  744. package/tools/keys-check.ts +0 -559
  745. package/tools/label-audit.ts +0 -70
  746. package/tools/labels-workflow-check.ts +0 -49
  747. package/tools/linear-structure-check.ts +0 -524
  748. package/tools/live-exec.ts +0 -62
  749. package/tools/live-governance-eval.ts +0 -813
  750. package/tools/live-legacy.ts +0 -50
  751. package/tools/lru-check.ts +0 -182
  752. package/tools/make-annotation-campaign.ts +0 -57
  753. package/tools/mcp-executor-check.ts +0 -33
  754. package/tools/merge-annotations.ts +0 -32
  755. package/tools/merge-check.ts +0 -98
  756. package/tools/metrics-check.ts +0 -84
  757. package/tools/net-probe.ts +0 -107
  758. package/tools/oauth-probe.ts +0 -117
  759. package/tools/outbox-check.ts +0 -50
  760. package/tools/persistence-check.ts +0 -144
  761. package/tools/pin-check.ts +0 -116
  762. package/tools/platform-check.ts +0 -281
  763. package/tools/policy-check.ts +0 -514
  764. package/tools/prettier-plugin/index.mts +0 -84
  765. package/tools/priority-check.ts +0 -627
  766. package/tools/probe-context7.ts +0 -63
  767. package/tools/registry-check.ts +0 -252
  768. package/tools/reliability-check.ts +0 -25
  769. package/tools/retry-check.ts +0 -85
  770. package/tools/rewrite-declaration-extensions.ts +0 -98
  771. package/tools/runtime-check.ts +0 -165
  772. package/tools/runtime-deepseek-check.ts +0 -85
  773. package/tools/runtime-eval.ts +0 -358
  774. package/tools/scenario-check.ts +0 -161
  775. package/tools/scenario-incident.ts +0 -162
  776. package/tools/scoped-priors-check.ts +0 -35
  777. package/tools/scoped-priors-pooling.ts +0 -34
  778. package/tools/segment-ast-check.ts +0 -649
  779. package/tools/session-check.ts +0 -196
  780. package/tools/session-store-check.ts +0 -73
  781. package/tools/share-check.ts +0 -88
  782. package/tools/sign-check.ts +0 -95
  783. package/tools/signing-check.ts +0 -275
  784. package/tools/snapshot-demo.ts +0 -65
  785. package/tools/social-check.ts +0 -146
  786. package/tools/structure-compare-check.ts +0 -95
  787. package/tools/support/documentScanner.ts +0 -577
  788. package/tools/support/texScanner.ts +0 -631
  789. package/tools/support/workspaceScanner.ts +0 -476
  790. package/tools/team-check.ts +0 -163
  791. package/tools/team-demo.ts +0 -36
  792. package/tools/telemetry-check.ts +0 -44
  793. package/tools/tex-context-check.ts +0 -263
  794. package/tools/tool-gate-check.ts +0 -98
  795. package/tools/tree-structure-check.ts +0 -786
  796. package/tools/trust-flow-check.ts +0 -158
  797. package/tools/turn-store-check.ts +0 -57
  798. package/tools/unified-check.ts +0 -83
  799. package/tools/validate.ts +0 -309
  800. package/tools/wire-check.ts +0 -96
  801. package/tools/workspace-agent-check.ts +0 -486
  802. package/tools/workspace-agent-demo.ts +0 -62
  803. package/tools/workspace-agent-server.ts +0 -101
  804. package/tools/workspace-context-check.ts +0 -331
  805. package/tools/workspace-context.ts +0 -131
  806. package/tsconfig.build.json +0 -14
  807. package/tsconfig.json +0 -24
  808. package/tsconfig.tools.json +0 -31
  809. 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";