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,407 @@
1
+ /**
2
+ * Hook layer contracts for the agent workspace.
3
+ *
4
+ * A hook is the composition layer between a host/UI and one bound filesystem
5
+ * session. It owns three things that a raw service call does not:
6
+ *
7
+ * - a small observable state machine (`idle`/`loading`/`ready`/`error`) so a
8
+ * caller can render progress without inventing its own flags;
9
+ * - a run journal (`HookRunEntry`) that is persisted through an injected
10
+ * `HookRecorder`, which is how the SQLite `hook_runs` table is fed;
11
+ * - an optional bounded cache keyed by the canonical request, so a read whose
12
+ * request is unchanged can avoid repeating the work.
13
+ *
14
+ * The layer is deliberately read-heavy: every hook except `useWrite` delegates
15
+ * to a read-only session method. `useWrite` is the single mutating hook and it
16
+ * forwards one `WriteRequest` to `FilesystemSession.write`; it never writes on
17
+ * its own and it disables the cache, because replaying a mutation from cache
18
+ * would make "write once" indistinguishable from "do nothing".
19
+ */
20
+ import { Buffer } from "node:buffer";
21
+ import { createHash } from "node:crypto";
22
+ import { isFilesystemError } from "../file/errors.js";
23
+ import { canonical, digestOf } from "../semantic/canonical.js";
24
+ import { isSessionError } from "../session/errors.js";
25
+ import { LRUOrderedMap } from "../structure/lru.js";
26
+ /**
27
+ * Default cache capacity and its hard ceiling. A hook result can be a whole
28
+ * outline, so the default is intentionally small.
29
+ */
30
+ const DefaultCacheEntries = 32;
31
+ const MaxCacheEntries = 256;
32
+ /**
33
+ * Convert an arbitrary request/output into a value `digestOf` can canonicalise.
34
+ *
35
+ * `canonical` rejects `bigint`, `Uint8Array` and `undefined`, all of which
36
+ * occur in filesystem results and write requests. The conversion is for audit
37
+ * only: it must be deterministic, not reversible.
38
+ */
39
+ const digestable = (value) => {
40
+ if (value === null) {
41
+ return null;
42
+ }
43
+ const kind = typeof (value);
44
+ if (kind === "string" || kind === "number" || kind === "boolean") {
45
+ return value;
46
+ }
47
+ if (kind === "bigint") {
48
+ return `${value}`;
49
+ }
50
+ if (value === (void 0)) {
51
+ return null;
52
+ }
53
+ if (value instanceof Uint8Array) {
54
+ return { encoding: "base64", bytes: Buffer.from(value).toString("base64") };
55
+ }
56
+ if (Array.isArray(value)) {
57
+ return value.map((entry) => digestable(entry));
58
+ }
59
+ if (kind === "object") {
60
+ const source = value;
61
+ const target = {};
62
+ const keys = Object.keys(source);
63
+ for (let index = 0; index < keys.length; index += 1) {
64
+ const key = keys[index];
65
+ const entry = source[key];
66
+ if (entry === (void 0)) {
67
+ continue;
68
+ }
69
+ target[key] = digestable(entry);
70
+ }
71
+ return target;
72
+ }
73
+ return "<unsupported>";
74
+ };
75
+ /**
76
+ * Digest of an arbitrary value, falling back to a constant when a caller passes
77
+ * something canonical JSON cannot express. The fallback keeps the run entry
78
+ * well-formed instead of failing the operation it is supposed to audit.
79
+ */
80
+ const safeDigest = (value) => {
81
+ try {
82
+ return digestOf(digestable(value));
83
+ }
84
+ catch {
85
+ return digestOf({ digest: "unavailable" });
86
+ }
87
+ };
88
+ /**
89
+ * SHA-256 of the canonical request, used as the cache key. An uncanonicalisable
90
+ * request yields an empty key, which the runtime treats as "do not cache".
91
+ */
92
+ const cacheKeyOf = (request) => {
93
+ try {
94
+ const text = canonical(digestable(request));
95
+ return createHash("sha256").update(text, "utf8").digest("hex");
96
+ }
97
+ catch {
98
+ return "";
99
+ }
100
+ };
101
+ /**
102
+ * Translate an unknown thrown value into the closed hook error surface.
103
+ */
104
+ const mapHookError = (error) => {
105
+ if (isFilesystemError(error)) {
106
+ return error.code;
107
+ }
108
+ if (isSessionError(error)) {
109
+ if (error.code === "invalid_arguments") {
110
+ return "invalid_arguments";
111
+ }
112
+ if (error.code === "invalid_identity" || error.code === "session_forbidden") {
113
+ return "permission_denied";
114
+ }
115
+ return "session_unavailable";
116
+ }
117
+ if (error instanceof TypeError || error instanceof RangeError) {
118
+ return "invalid_arguments";
119
+ }
120
+ return "internal_error";
121
+ };
122
+ /**
123
+ * Clamp `maxCacheEntries` into a positive bound.
124
+ */
125
+ const cacheCapacity = (value) => {
126
+ if (value === (void 0) || !Number.isSafeInteger(value) || value < 1) {
127
+ return DefaultCacheEntries;
128
+ }
129
+ return Math.min(value, MaxCacheEntries);
130
+ };
131
+ /**
132
+ * Concrete hook runtime. Kept private so the public surface is the `Hook`
133
+ * interface and the `createHook` factory.
134
+ *
135
+ * @typeParam TRequest - Request accepted by `run`.
136
+ * @typeParam TResult - Value produced by a successful run.
137
+ */
138
+ class HookRuntime {
139
+ definition;
140
+ recorder;
141
+ cache;
142
+ listeners = new Set();
143
+ current;
144
+ generation = 0;
145
+ /**
146
+ * Create one runtime from a definition.
147
+ *
148
+ * @param definition - Name, session, executor and options.
149
+ */
150
+ constructor(definition) {
151
+ const options = definition.options ?? {};
152
+ this.definition = definition;
153
+ this.recorder = options.recorder;
154
+ this.cache =
155
+ options.cache === true
156
+ ? new LRUOrderedMap(cacheCapacity(options.maxCacheEntries))
157
+ : (void 0);
158
+ this.current = Object.freeze({ status: "idle", revision: "" });
159
+ }
160
+ /**
161
+ * Current observable state.
162
+ */
163
+ get state() {
164
+ return this.current;
165
+ }
166
+ /**
167
+ * Run one request. The state moves to `loading` synchronously and the
168
+ * executor starts on the next microtask, so a caller that renders after
169
+ * calling `run` can observe the loading state even for a synchronous
170
+ * service method.
171
+ *
172
+ * A newer run (or a `reset`) increments the generation; an older run that
173
+ * finishes later still records and returns its own state but does not
174
+ * overwrite the newer observable state.
175
+ *
176
+ * @param request - Hook request.
177
+ * @returns The state produced by this run.
178
+ */
179
+ async run(request) {
180
+ const started = new Date();
181
+ const generation = this.generation + 1;
182
+ this.generation = generation;
183
+ this.update({ status: "loading", revision: this.current.revision });
184
+ const inputDigest = safeDigest(request);
185
+ const path = this.pathOf(request);
186
+ const cacheKey = this.cache === (void 0) ? "" : cacheKeyOf(request);
187
+ const cached = this.cachedFor(cacheKey);
188
+ await Promise.resolve();
189
+ if (cached !== (void 0)) {
190
+ const next = { status: "ready", value: cached.value, revision: cached.revision };
191
+ if (generation === this.generation) {
192
+ this.update(next);
193
+ }
194
+ this.emit({
195
+ hook: this.definition.name,
196
+ sessionId: this.definition.session.sessionId,
197
+ ...(path === (void 0) ? {} : { path }),
198
+ status: "ready",
199
+ revision: next.revision,
200
+ startedAt: started.toISOString(),
201
+ durationMs: Date.now() - started.getTime(),
202
+ inputDigest,
203
+ outputDigest: safeDigest(cached.value),
204
+ });
205
+ return next;
206
+ }
207
+ try {
208
+ const value = await this.definition.execute(request);
209
+ const revision = this.revisionFor(value);
210
+ const next = { status: "ready", value, revision };
211
+ if (generation === this.generation) {
212
+ if (this.cache !== (void 0) && cacheKey.length > 0) {
213
+ this.cache.set(cacheKey, { value, revision });
214
+ }
215
+ this.update(next);
216
+ }
217
+ this.emit({
218
+ hook: this.definition.name,
219
+ sessionId: this.definition.session.sessionId,
220
+ ...(path === (void 0) ? {} : { path }),
221
+ status: "ready",
222
+ revision,
223
+ startedAt: started.toISOString(),
224
+ durationMs: Date.now() - started.getTime(),
225
+ inputDigest,
226
+ outputDigest: safeDigest(value),
227
+ });
228
+ return next;
229
+ }
230
+ catch (error) {
231
+ const code = mapHookError(error);
232
+ const revision = this.currentRevision();
233
+ const next = { status: "error", error: code, revision };
234
+ if (generation === this.generation) {
235
+ this.update(next);
236
+ }
237
+ this.emit({
238
+ hook: this.definition.name,
239
+ sessionId: this.definition.session.sessionId,
240
+ ...(path === (void 0) ? {} : { path }),
241
+ status: "error",
242
+ error: code,
243
+ revision,
244
+ startedAt: started.toISOString(),
245
+ durationMs: Date.now() - started.getTime(),
246
+ inputDigest,
247
+ outputDigest: "",
248
+ });
249
+ return next;
250
+ }
251
+ }
252
+ /**
253
+ * Subscribe to state changes. The listener is not invoked immediately; it
254
+ * receives every subsequent `loading`, `ready`, `error` and reset state.
255
+ *
256
+ * @param listener - Callback invoked with each new state.
257
+ * @returns Unsubscribe function.
258
+ */
259
+ subscribe(listener) {
260
+ this.listeners.add(listener);
261
+ return () => {
262
+ this.listeners.delete(listener);
263
+ };
264
+ }
265
+ /**
266
+ * Return to `idle` and drop cached values. The last revision is retained so
267
+ * a view that resets does not lose its workspace coordinate. In-flight runs
268
+ * are invalidated so they cannot overwrite the idle state.
269
+ */
270
+ reset() {
271
+ this.generation += 1;
272
+ if (this.cache !== (void 0)) {
273
+ this.cache.clear();
274
+ }
275
+ this.update({ status: "idle", revision: this.current.revision });
276
+ }
277
+ /**
278
+ * Read a cached result only when it was produced at the current workspace
279
+ * revision. The request-only cache key cannot see a file change by itself,
280
+ * so the revision is the freshness check that makes `cache: true` safe for
281
+ * read hooks.
282
+ *
283
+ * @param cacheKey - Canonical request key.
284
+ * @returns Cached result, or `undefined` when absent or stale.
285
+ */
286
+ cachedFor(cacheKey) {
287
+ if (this.cache === (void 0) || cacheKey.length === 0) {
288
+ return (void 0);
289
+ }
290
+ const entry = this.cache.peek(cacheKey);
291
+ if (entry === (void 0)) {
292
+ return (void 0);
293
+ }
294
+ const revision = this.sessionRevision();
295
+ if (revision === (void 0) || revision.length === 0 || entry.revision !== revision) {
296
+ this.cache.delete(cacheKey);
297
+ return (void 0);
298
+ }
299
+ return this.cache.get(cacheKey);
300
+ }
301
+ /**
302
+ * Revision reported by the bound session, or `undefined` when the session
303
+ * cannot answer (revoked, expired, store failure). A cache hit is never
304
+ * trusted without this value.
305
+ *
306
+ * @returns Current workspace revision, or `undefined`.
307
+ */
308
+ sessionRevision() {
309
+ try {
310
+ return this.definition.session.revision();
311
+ }
312
+ catch {
313
+ return (void 0);
314
+ }
315
+ }
316
+ /**
317
+ * Last known revision from the bound session, falling back to the state.
318
+ */
319
+ currentRevision() {
320
+ const revision = this.sessionRevision();
321
+ return revision === (void 0) || revision.length === 0 ? this.current.revision : revision;
322
+ }
323
+ /**
324
+ * Revision reported for a successful value.
325
+ *
326
+ * @param value - Successful hook output.
327
+ * @returns Result revision or the session revision.
328
+ */
329
+ revisionFor(value) {
330
+ const revisionOf = this.definition.revisionOf;
331
+ if (revisionOf === (void 0)) {
332
+ return this.currentRevision();
333
+ }
334
+ try {
335
+ return revisionOf(value);
336
+ }
337
+ catch {
338
+ return this.currentRevision();
339
+ }
340
+ }
341
+ /**
342
+ * Optional request path for the run journal.
343
+ *
344
+ * @param request - Hook request.
345
+ * @returns Path, or `undefined` when the request has none.
346
+ */
347
+ pathOf(request) {
348
+ const pathOf = this.definition.pathOf;
349
+ if (pathOf === (void 0)) {
350
+ return (void 0);
351
+ }
352
+ try {
353
+ return pathOf(request);
354
+ }
355
+ catch {
356
+ return (void 0);
357
+ }
358
+ }
359
+ /**
360
+ * Publish one state to every subscriber. A listener that throws is skipped
361
+ * so one broken view cannot stop the others from updating.
362
+ *
363
+ * @param next - New state.
364
+ */
365
+ update(next) {
366
+ const frozen = Object.freeze(next);
367
+ this.current = frozen;
368
+ const listeners = [...this.listeners];
369
+ for (let index = 0; index < listeners.length; index += 1) {
370
+ try {
371
+ listeners[index](frozen);
372
+ }
373
+ catch {
374
+ continue;
375
+ }
376
+ }
377
+ }
378
+ /**
379
+ * Forward one entry to the recorder; an audit failure is swallowed by
380
+ * contract and never changes the hook result.
381
+ *
382
+ * @param entry - Run entry.
383
+ */
384
+ emit(entry) {
385
+ const recorder = this.recorder;
386
+ if (recorder === (void 0)) {
387
+ return;
388
+ }
389
+ try {
390
+ recorder.record(entry);
391
+ }
392
+ catch {
393
+ return;
394
+ }
395
+ }
396
+ }
397
+ /**
398
+ * Create one observable hook from a definition. This is the shared factory the
399
+ * concrete `use*` hooks are built on.
400
+ *
401
+ * @typeParam TRequest - Request accepted by `run`.
402
+ * @typeParam TResult - Value produced by a successful run.
403
+ * @param definition - Name, session, executor, optional revision/path mapping
404
+ * and options.
405
+ * @returns A hook with state, subscription, reset and bounded caching.
406
+ */
407
+ export const createHook = (definition) => new HookRuntime(definition);
package/lib/index.d.ts CHANGED
@@ -3,7 +3,16 @@
3
3
  * subpaths, for example `attention-manifest-protocol/governance`.
4
4
  */
5
5
  export * from "./attention/index.js";
6
+ export * from "./assignment/index.js";
6
7
  export * from "./context/index.js";
8
+ export * from "./discover/index.js";
9
+ export * as file from "./file/index.js";
10
+ export * as filesystem from "./file/index.js";
11
+ export * as syntax from "./syntax/index.js";
12
+ export * as outline from "./outline/index.js";
13
+ export * as global from "./global/index.js";
14
+ export * as hook from "./hook/index.js";
15
+ export * as session from "./session/index.js";
7
16
  export * from "./frame/index.js";
8
17
  export * from "./ledger/index.js";
9
18
  export * from "./manifest/index.js";
package/lib/index.js CHANGED
@@ -3,7 +3,16 @@
3
3
  * subpaths, for example `attention-manifest-protocol/governance`.
4
4
  */
5
5
  export * from "./attention/index.js";
6
+ export * from "./assignment/index.js";
6
7
  export * from "./context/index.js";
8
+ export * from "./discover/index.js";
9
+ export * as file from "./file/index.js";
10
+ export * as filesystem from "./file/index.js";
11
+ export * as syntax from "./syntax/index.js";
12
+ export * as outline from "./outline/index.js";
13
+ export * as global from "./global/index.js";
14
+ export * as hook from "./hook/index.js";
15
+ export * as session from "./session/index.js";
7
16
  export * from "./frame/index.js";
8
17
  export * from "./ledger/index.js";
9
18
  export * from "./manifest/index.js";
package/lib/lock/lease.js CHANGED
@@ -5,7 +5,25 @@ const toRecord = (row) => ({
5
5
  acquiredAt: row.acquired_at,
6
6
  expiresAt: row.expires_at,
7
7
  });
8
- const expiry = (at, ttlMs) => new Date(Date.parse(at) + ttlMs).toISOString();
8
+ const expiry = (at, ttlMs) => {
9
+ const timestamp = Date.parse(at);
10
+ if (!Number.isFinite(timestamp)) {
11
+ throw new RangeError("at must be a valid timestamp");
12
+ }
13
+ if (!Number.isSafeInteger(ttlMs) || ttlMs <= 0) {
14
+ throw new RangeError("ttlMs must be a positive safe integer");
15
+ }
16
+ const expires = timestamp + ttlMs;
17
+ if (!Number.isFinite(expires) || Math.abs(expires) > 8.64e15) {
18
+ throw new RangeError("lease expiry is outside the supported date range");
19
+ }
20
+ return new Date(expires).toISOString();
21
+ };
22
+ const assertLeaseIdentity = (name, holder) => {
23
+ if (name.trim().length === 0 || holder.trim().length === 0) {
24
+ throw new TypeError("lock name and holder must not be empty");
25
+ }
26
+ };
9
27
  export const getLock = (db, name) => {
10
28
  const row = db.prepare("SELECT * FROM resource_locks WHERE name = ?").get(name);
11
29
  return row === (void 0) ? undefined : toRecord(row);
@@ -15,6 +33,8 @@ export const getLock = (db, name) => {
15
33
  * Returns `undefined` when another holder owns a live lease.
16
34
  */
17
35
  export const acquireLock = (db, name, holder, at, ttlMs = 15_000) => {
36
+ assertLeaseIdentity(name, holder);
37
+ const expiresAt = expiry(at, ttlMs);
18
38
  const result = db
19
39
  .prepare(`INSERT INTO resource_locks (name, holder, fencing, acquired_at, expires_at)
20
40
  VALUES (?, ?, 1, ?, ?)
@@ -24,16 +44,21 @@ export const acquireLock = (db, name, holder, at, ttlMs = 15_000) => {
24
44
  acquired_at = excluded.acquired_at,
25
45
  expires_at = excluded.expires_at
26
46
  WHERE resource_locks.expires_at <= ? OR resource_locks.holder = ?`)
27
- .run(name, holder, at, expiry(at, ttlMs), at, holder);
47
+ .run(name, holder, at, expiresAt, at, holder);
28
48
  if (Number(result.changes) !== 1) {
29
49
  return undefined;
30
50
  }
31
51
  return getLock(db, name);
32
52
  };
33
53
  export const renewLock = (db, name, holder, fencing, at, ttlMs = 15_000) => {
54
+ assertLeaseIdentity(name, holder);
55
+ if (!Number.isSafeInteger(fencing) || fencing <= 0) {
56
+ throw new RangeError("fencing must be a positive safe integer");
57
+ }
58
+ const expiresAt = expiry(at, ttlMs);
34
59
  const result = db
35
60
  .prepare("UPDATE resource_locks SET expires_at = ? WHERE name = ? AND holder = ? AND fencing = ?")
36
- .run(expiry(at, ttlMs), name, holder, fencing);
61
+ .run(expiresAt, name, holder, fencing);
37
62
  return Number(result.changes) === 1;
38
63
  };
39
64
  export const releaseLock = (db, name, holder, fencing) => {
@@ -19,7 +19,7 @@ export declare function verifyCardSignature(card: AgentCard, signature: CardSign
19
19
  * Resolves the signing key from a trust registry (which Federation bundles can
20
20
  * populate) instead of trusting a key embedded in the card itself.
21
21
  */
22
- export declare function verifyCardWithRegistry(card: AgentCard, signature: CardSignature, registry: KeyRegistry): Promise<{
22
+ export declare function verifyCardWithRegistry(card: AgentCard, signature: CardSignature, registry: KeyRegistry, expectedKid?: string): Promise<{
23
23
  ok: boolean;
24
24
  reasons: string[];
25
25
  }>;
@@ -9,6 +9,9 @@ function toBase64Url(bytes) {
9
9
  return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
10
10
  }
11
11
  function fromBase64Url(text) {
12
+ if (!/^[A-Za-z0-9_-]*$/.test(text) || text.length % 4 === 1) {
13
+ throw new Error("invalid base64url");
14
+ }
12
15
  const padded = text.replace(/-/g, "+").replace(/_/g, "/");
13
16
  const pad = padded.length % 4 ? "=".repeat(4 - (padded.length % 4)) : "";
14
17
  const binary = atob(padded + pad);
@@ -30,10 +33,18 @@ export async function signCard(card, key) {
30
33
  return { protected: protectedHeader, signature: toBase64Url(signature) };
31
34
  }
32
35
  export async function verifyCardSignature(card, signature, publicKey) {
36
+ if (typeof signature?.protected !== "string" || typeof signature.signature !== "string") {
37
+ return { ok: false, reasons: ["signature must contain protected and signature strings"] };
38
+ }
33
39
  const reasons = [];
34
40
  let header;
35
41
  try {
36
- header = JSON.parse(new TextDecoder().decode(fromBase64Url(signature.protected)));
42
+ const decoded = new TextDecoder("utf-8", { fatal: true }).decode(fromBase64Url(signature.protected));
43
+ const parsed = JSON.parse(decoded);
44
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
45
+ return { ok: false, reasons: ["protected header must be a JSON object"] };
46
+ }
47
+ header = parsed;
37
48
  }
38
49
  catch {
39
50
  return { ok: false, reasons: ["protected header is not base64url JSON"] };
@@ -41,9 +52,17 @@ export async function verifyCardSignature(card, signature, publicKey) {
41
52
  if (header.alg !== "EdDSA") {
42
53
  reasons.push(`unsupported alg ${`${header.alg}`}`);
43
54
  }
44
- const valid = await crypto.subtle.verify("Ed25519", publicKey, fromBase64Url(signature.signature), signingInput(signature.protected, payloadOf(card)));
45
- if (!valid) {
46
- reasons.push("card signature does not verify");
55
+ if (typeof header.kid !== "string" || header.kid.length === 0) {
56
+ reasons.push("protected header has no kid");
57
+ }
58
+ try {
59
+ const valid = await crypto.subtle.verify("Ed25519", publicKey, fromBase64Url(signature.signature), signingInput(signature.protected, payloadOf(card)));
60
+ if (!valid) {
61
+ reasons.push("card signature does not verify");
62
+ }
63
+ }
64
+ catch {
65
+ reasons.push("card signature is malformed");
47
66
  }
48
67
  return { ok: reasons.length === 0, reasons };
49
68
  }
@@ -51,17 +70,28 @@ export async function verifyCardSignature(card, signature, publicKey) {
51
70
  * Resolves the signing key from a trust registry (which Federation bundles can
52
71
  * populate) instead of trusting a key embedded in the card itself.
53
72
  */
54
- export async function verifyCardWithRegistry(card, signature, registry) {
73
+ export async function verifyCardWithRegistry(card, signature, registry, expectedKid) {
74
+ if (typeof signature?.protected !== "string") {
75
+ return { ok: false, reasons: ["signature must contain a protected header"] };
76
+ }
55
77
  let header;
56
78
  try {
57
- header = JSON.parse(new TextDecoder().decode(fromBase64Url(signature.protected)));
79
+ const decoded = new TextDecoder("utf-8", { fatal: true }).decode(fromBase64Url(signature.protected));
80
+ const parsed = JSON.parse(decoded);
81
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
82
+ return { ok: false, reasons: ["protected header must be a JSON object"] };
83
+ }
84
+ header = parsed;
58
85
  }
59
86
  catch {
60
87
  return { ok: false, reasons: ["protected header is not base64url JSON"] };
61
88
  }
62
- if (!header.kid) {
89
+ if (typeof header.kid !== "string" || header.kid.length === 0) {
63
90
  return { ok: false, reasons: ["signature carries no kid"] };
64
91
  }
92
+ if (expectedKid !== undefined && header.kid !== expectedKid) {
93
+ return { ok: false, reasons: [`card signer ${header.kid} does not match manifest signer ${expectedKid}`] };
94
+ }
65
95
  const key = registry.get(header.kid);
66
96
  if (!key) {
67
97
  return { ok: false, reasons: [`unknown or revoked key: ${header.kid}`] };
@@ -31,6 +31,8 @@ async function importPublicKey(material) {
31
31
  */
32
32
  export function bundleDigest(bundle) {
33
33
  return digestOf({
34
+ amp: bundle.amp,
35
+ kind: bundle.kind,
34
36
  manifest: bundle.manifest,
35
37
  keys: bundle.keys,
36
38
  revoked: bundle.revoked ?? [],
@@ -177,11 +179,16 @@ export async function verifyAttestation(attestation, issuerKey) {
177
179
  * Public-key variant so a verifier does not need the issuer's private key.
178
180
  */
179
181
  export async function verifyAttestationWithKey(attestation, publicKey) {
180
- const { signatures, ...body } = attestation;
181
- const signature = signatures[0];
182
- if (!signature) {
183
- return { ok: false, reasons: ["attestation has no signature"] };
182
+ try {
183
+ const { signatures, ...body } = attestation;
184
+ const signature = signatures[0];
185
+ if (!signature) {
186
+ return { ok: false, reasons: ["attestation has no signature"] };
187
+ }
188
+ const valid = await crypto.subtle.verify("Ed25519", publicKey, fromBase64Url(signature.sig), encoder.encode(canonical(body)));
189
+ return { ok: valid, reasons: valid ? [] : ["attestation signature does not verify"] };
190
+ }
191
+ catch {
192
+ return { ok: false, reasons: ["attestation signature is malformed"] };
184
193
  }
185
- const valid = await crypto.subtle.verify("Ed25519", publicKey, fromBase64Url(signature.sig), encoder.encode(canonical(body)));
186
- return { ok: valid, reasons: valid ? [] : ["attestation signature does not verify"] };
187
194
  }
@@ -21,6 +21,7 @@ interface TrustCardInput {
21
21
  bundle: ManifestBundle;
22
22
  policy: TrustPolicy;
23
23
  issuerKeys?: KeyRegistry;
24
+ revoked?: string[];
24
25
  /**
25
26
  * Verification time. Defaults to the real clock.
26
27
  */
@@ -30,6 +31,7 @@ interface FetchTrustedOptions {
30
31
  bundle: ManifestBundle;
31
32
  policy: TrustPolicy;
32
33
  issuerKeys?: KeyRegistry;
34
+ revoked?: string[];
33
35
  timeoutMs?: number;
34
36
  /**
35
37
  * Verification time. Defaults to the real clock.