attention-manifest-protocol 0.4.0 → 0.4.2

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 (627) hide show
  1. package/CHANGELOG.md +250 -226
  2. package/CHANGELOG.zh-CN.md +63 -39
  3. package/README.md +22 -1
  4. package/README.zh-CN.md +22 -1
  5. package/docs/probes/calibration-imported.json +141 -141
  6. package/docs/probes/eval-recorded-replay.json +597 -597
  7. package/docs/probes/eval-replay.json +124 -124
  8. package/docs/probes/eval-summary.json +42 -42
  9. package/docs/probes/runtime-eval.json +4230 -4230
  10. package/lib/attention/attention.d.ts +153 -0
  11. package/lib/attention/attention.js +209 -0
  12. package/lib/attention/budget.d.ts +31 -0
  13. package/lib/attention/budget.js +55 -0
  14. package/lib/attention/cognition.d.ts +230 -0
  15. package/lib/attention/cognition.js +245 -0
  16. package/lib/attention/index.d.ts +8 -0
  17. package/lib/attention/index.js +7 -0
  18. package/lib/attention/interrupts.d.ts +97 -0
  19. package/lib/attention/interrupts.js +151 -0
  20. package/lib/attention/resource.d.ts +167 -0
  21. package/lib/attention/resource.js +148 -0
  22. package/lib/attention/social.d.ts +74 -0
  23. package/lib/attention/social.js +153 -0
  24. package/lib/attention/socialTypes.d.ts +102 -0
  25. package/lib/attention/socialTypes.js +1 -0
  26. package/lib/authz/authz.d.ts +75 -0
  27. package/lib/authz/authz.js +176 -0
  28. package/lib/authz/index.d.ts +1 -0
  29. package/lib/authz/index.js +1 -0
  30. package/lib/bayes/calibration.d.ts +67 -0
  31. package/lib/bayes/calibration.js +114 -0
  32. package/lib/bayes/calibrationRegistry.d.ts +39 -0
  33. package/lib/bayes/calibrationRegistry.js +61 -0
  34. package/lib/bayes/calibrationSelection.d.ts +40 -0
  35. package/lib/bayes/calibrationSelection.js +89 -0
  36. package/lib/bayes/engine.d.ts +163 -0
  37. package/lib/bayes/engine.js +354 -0
  38. package/lib/bayes/index.d.ts +6 -0
  39. package/lib/bayes/index.js +6 -0
  40. package/lib/bayes/reliability.d.ts +27 -0
  41. package/lib/bayes/reliability.js +38 -0
  42. package/lib/bayes/scopedPriors.d.ts +34 -0
  43. package/lib/bayes/scopedPriors.js +70 -0
  44. package/lib/boundary/frame.d.ts +63 -0
  45. package/lib/boundary/frame.js +239 -0
  46. package/lib/boundary/ids.d.ts +8 -0
  47. package/lib/boundary/ids.js +12 -0
  48. package/lib/boundary/index.d.ts +12 -0
  49. package/lib/boundary/index.js +8 -0
  50. package/lib/boundary/refTable.d.ts +49 -0
  51. package/lib/boundary/refTable.js +92 -0
  52. package/lib/boundary/toolCall.d.ts +33 -0
  53. package/lib/boundary/toolCall.js +173 -0
  54. package/lib/concept/concept.d.ts +67 -0
  55. package/lib/concept/concept.js +1 -0
  56. package/lib/concept/conceptBudget.d.ts +56 -0
  57. package/lib/concept/conceptBudget.js +281 -0
  58. package/lib/concept/conceptBudgetTypes.d.ts +74 -0
  59. package/lib/concept/conceptBudgetTypes.js +1 -0
  60. package/lib/concept/index.d.ts +3 -0
  61. package/lib/concept/index.js +3 -0
  62. package/lib/concurrency/idempotency.d.ts +16 -0
  63. package/lib/concurrency/idempotency.js +21 -0
  64. package/lib/concurrency/index.d.ts +5 -0
  65. package/lib/concurrency/index.js +5 -0
  66. package/lib/concurrency/mutex.d.ts +13 -0
  67. package/lib/concurrency/mutex.js +26 -0
  68. package/lib/concurrency/namedLocks.d.ts +7 -0
  69. package/lib/concurrency/namedLocks.js +31 -0
  70. package/lib/concurrency/retry.d.ts +23 -0
  71. package/lib/concurrency/retry.js +38 -0
  72. package/lib/concurrency/worker.d.ts +42 -0
  73. package/lib/concurrency/worker.js +67 -0
  74. package/lib/context/agentContext.d.ts +58 -0
  75. package/lib/context/agentContext.js +197 -0
  76. package/lib/context/ast.d.ts +98 -0
  77. package/lib/context/ast.js +414 -0
  78. package/lib/context/contentStore.d.ts +16 -0
  79. package/lib/context/contentStore.js +61 -0
  80. package/lib/context/context.d.ts +15 -0
  81. package/lib/context/context.js +39 -0
  82. package/lib/context/contextIndex.d.ts +40 -0
  83. package/lib/context/contextIndex.js +64 -0
  84. package/lib/context/document.d.ts +102 -0
  85. package/lib/context/document.js +22 -0
  86. package/lib/context/fileStorePath.d.ts +1 -0
  87. package/lib/context/fileStorePath.js +13 -0
  88. package/lib/context/index.d.ts +22 -0
  89. package/lib/context/index.js +11 -0
  90. package/lib/context/lifecycle.d.ts +91 -0
  91. package/lib/context/lifecycle.js +163 -0
  92. package/lib/context/projections.d.ts +20 -0
  93. package/lib/context/projections.js +127 -0
  94. package/lib/context/workspace.d.ts +111 -0
  95. package/lib/context/workspace.js +318 -0
  96. package/lib/context/workspaceProtocol.d.ts +30 -0
  97. package/lib/context/workspaceProtocol.js +49 -0
  98. package/lib/context/workspaceService.d.ts +63 -0
  99. package/lib/context/workspaceService.js +352 -0
  100. package/lib/cooperation/board.d.ts +47 -0
  101. package/lib/cooperation/board.js +66 -0
  102. package/lib/cooperation/collaboration.d.ts +55 -0
  103. package/lib/cooperation/collaboration.js +1 -0
  104. package/lib/cooperation/index.d.ts +6 -0
  105. package/lib/cooperation/index.js +6 -0
  106. package/lib/cooperation/merge.d.ts +69 -0
  107. package/lib/cooperation/merge.js +109 -0
  108. package/lib/cooperation/metrics.d.ts +39 -0
  109. package/lib/cooperation/metrics.js +17 -0
  110. package/lib/cooperation/session.d.ts +75 -0
  111. package/lib/cooperation/session.js +74 -0
  112. package/lib/cooperation/unified.d.ts +38 -0
  113. package/lib/cooperation/unified.js +40 -0
  114. package/lib/database/adapter/adapters.d.ts +24 -0
  115. package/lib/database/adapter/adapters.js +31 -0
  116. package/lib/database/adapter/index.d.ts +4 -0
  117. package/lib/database/adapter/index.js +4 -0
  118. package/lib/database/adapter/runtimeSink.d.ts +20 -0
  119. package/lib/database/adapter/runtimeSink.js +50 -0
  120. package/lib/database/adapter/sessionStore.d.ts +11 -0
  121. package/lib/database/adapter/sessionStore.js +23 -0
  122. package/lib/database/adapter/turnStore.d.ts +10 -0
  123. package/lib/database/adapter/turnStore.js +15 -0
  124. package/lib/database/entity/agent.d.ts +133 -0
  125. package/lib/database/entity/agent.js +61 -0
  126. package/lib/database/entity/entity.d.ts +715 -0
  127. package/lib/database/entity/entity.js +372 -0
  128. package/lib/database/entity/handle.d.ts +31 -0
  129. package/lib/database/entity/handle.js +53 -0
  130. package/lib/database/entity/index.d.ts +32 -0
  131. package/lib/database/entity/index.js +22 -0
  132. package/lib/database/entity/message.d.ts +27 -0
  133. package/lib/database/entity/message.js +52 -0
  134. package/lib/database/entity/meta.d.ts +11 -0
  135. package/lib/database/entity/meta.js +1 -0
  136. package/lib/database/entity/object.d.ts +23 -0
  137. package/lib/database/entity/object.js +24 -0
  138. package/lib/database/entity/outbox.d.ts +9 -0
  139. package/lib/database/entity/outbox.js +5 -0
  140. package/lib/database/entity/process.d.ts +30 -0
  141. package/lib/database/entity/process.js +40 -0
  142. package/lib/database/entity/registry.d.ts +81 -0
  143. package/lib/database/entity/registry.js +91 -0
  144. package/lib/database/entity/runtimeApproval.d.ts +23 -0
  145. package/lib/database/entity/runtimeApproval.js +5 -0
  146. package/lib/database/entity/runtimeSession.d.ts +7 -0
  147. package/lib/database/entity/runtimeSession.js +5 -0
  148. package/lib/database/entity/runtimeTurn.d.ts +9 -0
  149. package/lib/database/entity/runtimeTurn.js +5 -0
  150. package/lib/database/entity/thread.d.ts +35 -0
  151. package/lib/database/entity/thread.js +55 -0
  152. package/lib/database/entity/window.d.ts +39 -0
  153. package/lib/database/entity/window.js +56 -0
  154. package/lib/database/entity/worker.d.ts +42 -0
  155. package/lib/database/entity/worker.js +58 -0
  156. package/lib/database/index.d.ts +6 -0
  157. package/lib/database/index.js +6 -0
  158. package/lib/database/repository/addressSpaceRepository.d.ts +18 -0
  159. package/lib/database/repository/addressSpaceRepository.js +40 -0
  160. package/lib/database/repository/agentRepository.d.ts +41 -0
  161. package/lib/database/repository/agentRepository.js +398 -0
  162. package/lib/database/repository/base.d.ts +31 -0
  163. package/lib/database/repository/base.js +23 -0
  164. package/lib/database/repository/executionRepository.d.ts +64 -0
  165. package/lib/database/repository/executionRepository.js +379 -0
  166. package/lib/database/repository/handleRepository.d.ts +35 -0
  167. package/lib/database/repository/handleRepository.js +57 -0
  168. package/lib/database/repository/index.d.ts +20 -0
  169. package/lib/database/repository/index.js +17 -0
  170. package/lib/database/repository/messageRepository.d.ts +33 -0
  171. package/lib/database/repository/messageRepository.js +45 -0
  172. package/lib/database/repository/objectRepository.d.ts +43 -0
  173. package/lib/database/repository/objectRepository.js +60 -0
  174. package/lib/database/repository/outboxRepository.d.ts +15 -0
  175. package/lib/database/repository/outboxRepository.js +51 -0
  176. package/lib/database/repository/processRepository.d.ts +31 -0
  177. package/lib/database/repository/processRepository.js +48 -0
  178. package/lib/database/repository/registryRepository.d.ts +72 -0
  179. package/lib/database/repository/registryRepository.js +95 -0
  180. package/lib/database/repository/repository.d.ts +322 -0
  181. package/lib/database/repository/repository.js +332 -0
  182. package/lib/database/repository/runtimeApprovalRepository.d.ts +14 -0
  183. package/lib/database/repository/runtimeApprovalRepository.js +35 -0
  184. package/lib/database/repository/runtimeSessionRepository.d.ts +9 -0
  185. package/lib/database/repository/runtimeSessionRepository.js +21 -0
  186. package/lib/database/repository/runtimeTurnRepository.d.ts +10 -0
  187. package/lib/database/repository/runtimeTurnRepository.js +32 -0
  188. package/lib/database/repository/socialRepository.d.ts +22 -0
  189. package/lib/database/repository/socialRepository.js +155 -0
  190. package/lib/database/repository/threadRepository.d.ts +29 -0
  191. package/lib/database/repository/threadRepository.js +48 -0
  192. package/lib/database/repository/windowRepository.d.ts +46 -0
  193. package/lib/database/repository/windowRepository.js +68 -0
  194. package/lib/database/repository/workerRepository.d.ts +38 -0
  195. package/lib/database/repository/workerRepository.js +61 -0
  196. package/lib/database/service/database.d.ts +55 -0
  197. package/lib/database/service/database.js +77 -0
  198. package/lib/database/service/handleService.d.ts +20 -0
  199. package/lib/database/service/handleService.js +34 -0
  200. package/lib/database/service/index.d.ts +16 -0
  201. package/lib/database/service/index.js +11 -0
  202. package/lib/database/service/messageService.d.ts +26 -0
  203. package/lib/database/service/messageService.js +40 -0
  204. package/lib/database/service/objectService.d.ts +32 -0
  205. package/lib/database/service/objectService.js +31 -0
  206. package/lib/database/service/processService.d.ts +22 -0
  207. package/lib/database/service/processService.js +45 -0
  208. package/lib/database/service/registryServices.d.ts +43 -0
  209. package/lib/database/service/registryServices.js +60 -0
  210. package/lib/database/service/service.d.ts +131 -0
  211. package/lib/database/service/service.js +153 -0
  212. package/lib/database/service/stepService.d.ts +23 -0
  213. package/lib/database/service/stepService.js +35 -0
  214. package/lib/database/service/threadService.d.ts +23 -0
  215. package/lib/database/service/threadService.js +48 -0
  216. package/lib/database/service/windowService.d.ts +15 -0
  217. package/lib/database/service/windowService.js +22 -0
  218. package/lib/database/service/workerService.d.ts +28 -0
  219. package/lib/database/service/workerService.js +34 -0
  220. package/lib/database/sql/index.d.ts +3 -0
  221. package/lib/database/sql/index.js +2 -0
  222. package/lib/database/sql/schema.d.ts +5 -0
  223. package/lib/database/sql/schema.js +416 -0
  224. package/lib/database/sql/sql.d.ts +290 -0
  225. package/lib/database/sql/sql.js +430 -0
  226. package/lib/database/store/database.d.ts +75 -0
  227. package/lib/database/store/database.js +143 -0
  228. package/lib/database/store/index.d.ts +3 -0
  229. package/lib/database/store/index.js +2 -0
  230. package/lib/database/store/store.d.ts +145 -0
  231. package/lib/database/store/store.js +192 -0
  232. package/lib/delegate/index.d.ts +2 -0
  233. package/lib/delegate/index.js +2 -0
  234. package/lib/delegate/team.d.ts +92 -0
  235. package/lib/delegate/team.js +200 -0
  236. package/lib/delegate/teamTypes.d.ts +43 -0
  237. package/lib/delegate/teamTypes.js +1 -0
  238. package/lib/diagnosis/checklist.d.ts +16 -0
  239. package/lib/diagnosis/checklist.js +61 -0
  240. package/lib/diagnosis/context.d.ts +19 -0
  241. package/lib/diagnosis/context.js +79 -0
  242. package/lib/diagnosis/frame.d.ts +34 -0
  243. package/lib/diagnosis/frame.js +230 -0
  244. package/lib/diagnosis/index.d.ts +5 -0
  245. package/lib/diagnosis/index.js +5 -0
  246. package/lib/diagnosis/router.d.ts +22 -0
  247. package/lib/diagnosis/router.js +47 -0
  248. package/lib/diagnosis/types.d.ts +78 -0
  249. package/lib/diagnosis/types.js +2 -0
  250. package/lib/error/agentError.d.ts +9 -0
  251. package/lib/error/agentError.js +13 -0
  252. package/lib/error/ampError.d.ts +14 -0
  253. package/lib/error/ampError.js +19 -0
  254. package/lib/error/authzError.d.ts +10 -0
  255. package/lib/error/authzError.js +11 -0
  256. package/lib/error/boundaryRejection.d.ts +16 -0
  257. package/lib/error/boundaryRejection.js +14 -0
  258. package/lib/error/index.d.ts +7 -0
  259. package/lib/error/index.js +7 -0
  260. package/lib/error/kernelError.d.ts +11 -0
  261. package/lib/error/kernelError.js +12 -0
  262. package/lib/error/mailboxError.d.ts +5 -0
  263. package/lib/error/mailboxError.js +6 -0
  264. package/lib/error/windowError.d.ts +8 -0
  265. package/lib/error/windowError.js +9 -0
  266. package/lib/evaluation/agreement.d.ts +22 -0
  267. package/lib/evaluation/agreement.js +82 -0
  268. package/lib/evaluation/index.d.ts +2 -0
  269. package/lib/evaluation/index.js +2 -0
  270. package/lib/evaluation/labels.d.ts +56 -0
  271. package/lib/evaluation/labels.js +206 -0
  272. package/lib/evidence/evidenceGraph.d.ts +37 -0
  273. package/lib/evidence/evidenceGraph.js +165 -0
  274. package/lib/evidence/index.d.ts +4 -0
  275. package/lib/evidence/index.js +2 -0
  276. package/lib/evidence/revalidation.d.ts +70 -0
  277. package/lib/evidence/revalidation.js +146 -0
  278. package/lib/execution/exec.d.ts +151 -0
  279. package/lib/execution/exec.js +282 -0
  280. package/lib/execution/handles.d.ts +25 -0
  281. package/lib/execution/handles.js +45 -0
  282. package/lib/execution/index.d.ts +3 -0
  283. package/lib/execution/index.js +3 -0
  284. package/lib/execution/pin.d.ts +60 -0
  285. package/lib/execution/pin.js +103 -0
  286. package/lib/frame/frame.d.ts +61 -0
  287. package/lib/frame/frame.js +1 -0
  288. package/lib/frame/index.d.ts +1 -0
  289. package/lib/frame/index.js +1 -0
  290. package/lib/goal/goal.d.ts +19 -0
  291. package/lib/goal/goal.js +21 -0
  292. package/lib/goal/index.d.ts +2 -0
  293. package/lib/goal/index.js +1 -0
  294. package/lib/goal/plan.d.ts +125 -0
  295. package/lib/goal/plan.js +60 -0
  296. package/lib/governance/attentionManifest.d.ts +279 -0
  297. package/lib/governance/attentionManifest.js +467 -0
  298. package/lib/governance/audit.d.ts +123 -0
  299. package/lib/governance/audit.js +263 -0
  300. package/lib/governance/budget.d.ts +219 -0
  301. package/lib/governance/budget.js +424 -0
  302. package/lib/governance/context.d.ts +159 -0
  303. package/lib/governance/context.js +229 -0
  304. package/lib/governance/control.d.ts +65 -0
  305. package/lib/governance/control.js +89 -0
  306. package/lib/governance/cooperation.d.ts +163 -0
  307. package/lib/governance/cooperation.js +350 -0
  308. package/lib/governance/credential.d.ts +117 -0
  309. package/lib/governance/credential.js +229 -0
  310. package/lib/governance/httpServer.d.ts +18 -0
  311. package/lib/governance/httpServer.js +74 -0
  312. package/lib/governance/index.d.ts +32 -0
  313. package/lib/governance/index.js +32 -0
  314. package/lib/governance/legal.d.ts +222 -0
  315. package/lib/governance/legal.js +371 -0
  316. package/lib/governance/matrix.d.ts +170 -0
  317. package/lib/governance/matrix.js +365 -0
  318. package/lib/governance/perspectives.d.ts +98 -0
  319. package/lib/governance/perspectives.js +340 -0
  320. package/lib/governance/signing.d.ts +131 -0
  321. package/lib/governance/signing.js +241 -0
  322. package/lib/governance/store.d.ts +33 -0
  323. package/lib/governance/store.js +89 -0
  324. package/lib/governance/switching.d.ts +183 -0
  325. package/lib/governance/switching.js +257 -0
  326. package/lib/governance/toolPolicy.d.ts +37 -0
  327. package/lib/governance/toolPolicy.js +42 -0
  328. package/lib/governance/transport.d.ts +76 -0
  329. package/lib/governance/transport.js +124 -0
  330. package/lib/governance/types.d.ts +218 -0
  331. package/lib/governance/types.js +72 -0
  332. package/lib/governance/workflow.d.ts +174 -0
  333. package/lib/governance/workflow.js +612 -0
  334. package/lib/index.d.ts +11 -0
  335. package/lib/index.js +11 -0
  336. package/lib/interaction/index.d.ts +1 -0
  337. package/lib/interaction/index.js +1 -0
  338. package/lib/interaction/interaction.d.ts +83 -0
  339. package/lib/interaction/interaction.js +256 -0
  340. package/lib/ipc/index.d.ts +4 -0
  341. package/lib/ipc/index.js +3 -0
  342. package/lib/ipc/mailbox.d.ts +37 -0
  343. package/lib/ipc/mailbox.js +77 -0
  344. package/lib/ipc/memorySocialStore.d.ts +14 -0
  345. package/lib/ipc/memorySocialStore.js +83 -0
  346. package/lib/ipc/social.d.ts +80 -0
  347. package/lib/ipc/social.js +1 -0
  348. package/lib/kernel/index.d.ts +2 -0
  349. package/lib/kernel/index.js +1 -0
  350. package/lib/kernel/scheduler.d.ts +195 -0
  351. package/lib/kernel/scheduler.js +334 -0
  352. package/lib/ledger/checkpoint.d.ts +116 -0
  353. package/lib/ledger/checkpoint.js +223 -0
  354. package/lib/ledger/index.d.ts +4 -0
  355. package/lib/ledger/index.js +4 -0
  356. package/lib/ledger/ledger.d.ts +21 -0
  357. package/lib/ledger/ledger.js +23 -0
  358. package/lib/ledger/persistence.d.ts +46 -0
  359. package/lib/ledger/persistence.js +106 -0
  360. package/lib/ledger/share.d.ts +29 -0
  361. package/lib/ledger/share.js +39 -0
  362. package/lib/lock/index.d.ts +2 -0
  363. package/lib/lock/index.js +1 -0
  364. package/lib/lock/lease.d.ts +23 -0
  365. package/lib/lock/lease.js +42 -0
  366. package/lib/manifest/agentCard.d.ts +35 -0
  367. package/lib/manifest/agentCard.js +38 -0
  368. package/lib/manifest/cardSign.d.ts +25 -0
  369. package/lib/manifest/cardSign.js +70 -0
  370. package/lib/manifest/federation.d.ts +64 -0
  371. package/lib/manifest/federation.js +187 -0
  372. package/lib/manifest/federationTypes.d.ts +51 -0
  373. package/lib/manifest/federationTypes.js +1 -0
  374. package/lib/manifest/index.d.ts +8 -0
  375. package/lib/manifest/index.js +8 -0
  376. package/lib/manifest/keys.d.ts +221 -0
  377. package/lib/manifest/keys.js +484 -0
  378. package/lib/manifest/manifest.d.ts +102 -0
  379. package/lib/manifest/manifest.js +1 -0
  380. package/lib/manifest/sign.d.ts +38 -0
  381. package/lib/manifest/sign.js +90 -0
  382. package/lib/manifest/trust.d.ts +54 -0
  383. package/lib/manifest/trust.js +87 -0
  384. package/lib/mission/index.d.ts +2 -0
  385. package/lib/mission/index.js +1 -0
  386. package/lib/mission/missionQueue.d.ts +19 -0
  387. package/lib/mission/missionQueue.js +62 -0
  388. package/lib/module/index.d.ts +9 -0
  389. package/lib/module/index.js +9 -0
  390. package/lib/module/llm/deepseek.d.ts +43 -0
  391. package/lib/module/llm/deepseek.js +162 -0
  392. package/lib/module/llm/llm.d.ts +64 -0
  393. package/lib/module/llm/llm.js +16 -0
  394. package/lib/module/mcp/client.d.ts +32 -0
  395. package/lib/module/mcp/client.js +84 -0
  396. package/lib/module/mcp/http.d.ts +32 -0
  397. package/lib/module/mcp/http.js +83 -0
  398. package/lib/module/mcp/protocol.d.ts +62 -0
  399. package/lib/module/mcp/protocol.js +20 -0
  400. package/lib/module/mcp/server.d.ts +22 -0
  401. package/lib/module/mcp/server.js +138 -0
  402. package/lib/module/mcp/transport.d.ts +19 -0
  403. package/lib/module/mcp/transport.js +16 -0
  404. package/lib/module/mcp/workspaceServer.d.ts +20 -0
  405. package/lib/module/mcp/workspaceServer.js +90 -0
  406. package/lib/module/sandbox/sandbox.d.ts +24 -0
  407. package/lib/module/sandbox/sandbox.js +5 -0
  408. package/lib/module/tool/mcpExecutor.d.ts +18 -0
  409. package/lib/module/tool/mcpExecutor.js +41 -0
  410. package/lib/module/tool/policy.d.ts +30 -0
  411. package/lib/module/tool/policy.js +23 -0
  412. package/lib/module/tool/redact.d.ts +9 -0
  413. package/lib/module/tool/redact.js +19 -0
  414. package/lib/module/tool/tool.d.ts +26 -0
  415. package/lib/module/tool/tool.js +24 -0
  416. package/lib/module/tool/workspaceExecutor.d.ts +12 -0
  417. package/lib/module/tool/workspaceExecutor.js +25 -0
  418. package/lib/policy/guard.d.ts +115 -0
  419. package/lib/policy/guard.js +154 -0
  420. package/lib/policy/index.d.ts +2 -0
  421. package/lib/policy/index.js +2 -0
  422. package/lib/policy/policy.d.ts +249 -0
  423. package/lib/policy/policy.js +364 -0
  424. package/lib/process/agent.d.ts +295 -0
  425. package/lib/process/agent.js +1 -0
  426. package/lib/process/agentService.d.ts +87 -0
  427. package/lib/process/agentService.js +128 -0
  428. package/lib/process/agentStore.d.ts +35 -0
  429. package/lib/process/agentStore.js +328 -0
  430. package/lib/process/executionStore.d.ts +79 -0
  431. package/lib/process/executionStore.js +71 -0
  432. package/lib/process/index.d.ts +5 -0
  433. package/lib/process/index.js +5 -0
  434. package/lib/process/process.d.ts +120 -0
  435. package/lib/process/process.js +111 -0
  436. package/lib/process/transitions.d.ts +11 -0
  437. package/lib/process/transitions.js +8 -0
  438. package/lib/progress/index.d.ts +2 -0
  439. package/lib/progress/index.js +1 -0
  440. package/lib/progress/progress.d.ts +26 -0
  441. package/lib/progress/progress.js +42 -0
  442. package/lib/protocol/a2a.d.ts +51 -0
  443. package/lib/protocol/a2a.js +79 -0
  444. package/lib/protocol/channel.d.ts +25 -0
  445. package/lib/protocol/channel.js +27 -0
  446. package/lib/protocol/envelope.d.ts +180 -0
  447. package/lib/protocol/envelope.js +495 -0
  448. package/lib/protocol/httpChannel.d.ts +33 -0
  449. package/lib/protocol/httpChannel.js +59 -0
  450. package/lib/protocol/index.d.ts +6 -0
  451. package/lib/protocol/index.js +6 -0
  452. package/lib/protocol/protocol.d.ts +120 -0
  453. package/lib/protocol/protocol.js +1 -0
  454. package/lib/protocol/wire.d.ts +12 -0
  455. package/lib/protocol/wire.js +55 -0
  456. package/lib/receipt/index.d.ts +1 -0
  457. package/lib/receipt/index.js +1 -0
  458. package/lib/receipt/receipt.d.ts +43 -0
  459. package/lib/receipt/receipt.js +1 -0
  460. package/lib/registry/content.d.ts +10 -0
  461. package/lib/registry/content.js +58 -0
  462. package/lib/registry/index.d.ts +4 -0
  463. package/lib/registry/index.js +2 -0
  464. package/lib/registry/registry.d.ts +109 -0
  465. package/lib/registry/registry.js +299 -0
  466. package/lib/runtime/action.d.ts +46 -0
  467. package/lib/runtime/action.js +39 -0
  468. package/lib/runtime/behavior.d.ts +110 -0
  469. package/lib/runtime/behavior.js +179 -0
  470. package/lib/runtime/behaviorTuning.d.ts +59 -0
  471. package/lib/runtime/behaviorTuning.js +95 -0
  472. package/lib/runtime/cognitiveRuntime.d.ts +189 -0
  473. package/lib/runtime/cognitiveRuntime.js +490 -0
  474. package/lib/runtime/escalation.d.ts +22 -0
  475. package/lib/runtime/escalation.js +15 -0
  476. package/lib/runtime/governedTask.d.ts +57 -0
  477. package/lib/runtime/governedTask.js +150 -0
  478. package/lib/runtime/index.d.ts +15 -0
  479. package/lib/runtime/index.js +15 -0
  480. package/lib/runtime/kernelRuntime.d.ts +33 -0
  481. package/lib/runtime/kernelRuntime.js +105 -0
  482. package/lib/runtime/operation.d.ts +30 -0
  483. package/lib/runtime/operation.js +1 -0
  484. package/lib/runtime/replay.d.ts +24 -0
  485. package/lib/runtime/replay.js +38 -0
  486. package/lib/runtime/routing.d.ts +12 -0
  487. package/lib/runtime/routing.js +44 -0
  488. package/lib/runtime/safety.d.ts +15 -0
  489. package/lib/runtime/safety.js +28 -0
  490. package/lib/runtime/session.d.ts +147 -0
  491. package/lib/runtime/session.js +214 -0
  492. package/lib/runtime/sessionStore.d.ts +24 -0
  493. package/lib/runtime/sessionStore.js +20 -0
  494. package/lib/runtime/telemetry.d.ts +24 -0
  495. package/lib/runtime/telemetry.js +33 -0
  496. package/lib/runtime/turnStore.d.ts +16 -0
  497. package/lib/runtime/turnStore.js +15 -0
  498. package/lib/scenario/index.d.ts +1 -0
  499. package/lib/scenario/index.js +1 -0
  500. package/lib/scenario/scenario.d.ts +52 -0
  501. package/lib/scenario/scenario.js +210 -0
  502. package/lib/semantic/canonical.d.ts +6 -0
  503. package/lib/semantic/canonical.js +22 -0
  504. package/lib/semantic/index.d.ts +2 -0
  505. package/lib/semantic/index.js +2 -0
  506. package/lib/semantic/sha256.d.ts +1 -0
  507. package/lib/semantic/sha256.js +66 -0
  508. package/lib/storage/appendLog.d.ts +145 -0
  509. package/lib/storage/appendLog.js +299 -0
  510. package/lib/storage/fileAppendSink.d.ts +7 -0
  511. package/lib/storage/fileAppendSink.js +34 -0
  512. package/lib/storage/index.d.ts +2 -0
  513. package/lib/storage/index.js +2 -0
  514. package/lib/store/bindCache.d.ts +9 -0
  515. package/lib/store/bindCache.js +18 -0
  516. package/lib/store/cache.d.ts +48 -0
  517. package/lib/store/cache.js +162 -0
  518. package/lib/store/context.d.ts +10 -0
  519. package/lib/store/context.js +27 -0
  520. package/lib/store/handleStore.d.ts +9 -0
  521. package/lib/store/handleStore.js +25 -0
  522. package/lib/store/index.d.ts +9 -0
  523. package/lib/store/index.js +8 -0
  524. package/lib/store/messageStore.d.ts +9 -0
  525. package/lib/store/messageStore.js +25 -0
  526. package/lib/store/objectStore.d.ts +9 -0
  527. package/lib/store/objectStore.js +25 -0
  528. package/lib/store/processStore.d.ts +9 -0
  529. package/lib/store/processStore.js +25 -0
  530. package/lib/store/threadStore.d.ts +9 -0
  531. package/lib/store/threadStore.js +25 -0
  532. package/lib/store/windowStore.d.ts +9 -0
  533. package/lib/store/windowStore.js +25 -0
  534. package/lib/structure/abstractSyntaxTree.d.ts +181 -0
  535. package/lib/structure/abstractSyntaxTree.js +400 -0
  536. package/lib/structure/avlTree.d.ts +125 -0
  537. package/lib/structure/avlTree.js +369 -0
  538. package/lib/structure/binarySearchTree.d.ts +125 -0
  539. package/lib/structure/binarySearchTree.js +306 -0
  540. package/lib/structure/binaryTree.d.ts +174 -0
  541. package/lib/structure/binaryTree.js +495 -0
  542. package/lib/structure/bloomFilter.d.ts +126 -0
  543. package/lib/structure/bloomFilter.js +177 -0
  544. package/lib/structure/compare.d.ts +55 -0
  545. package/lib/structure/compare.js +96 -0
  546. package/lib/structure/cuckooFilter.d.ts +149 -0
  547. package/lib/structure/cuckooFilter.js +267 -0
  548. package/lib/structure/deque.d.ts +117 -0
  549. package/lib/structure/deque.js +205 -0
  550. package/lib/structure/filterKey.d.ts +19 -0
  551. package/lib/structure/filterKey.js +28 -0
  552. package/lib/structure/hash.d.ts +129 -0
  553. package/lib/structure/hash.js +241 -0
  554. package/lib/structure/heap.d.ts +152 -0
  555. package/lib/structure/heap.js +227 -0
  556. package/lib/structure/index.d.ts +20 -0
  557. package/lib/structure/index.js +20 -0
  558. package/lib/structure/iterator.d.ts +6 -0
  559. package/lib/structure/iterator.js +16 -0
  560. package/lib/structure/lru.d.ts +235 -0
  561. package/lib/structure/lru.js +524 -0
  562. package/lib/structure/ordered.d.ts +89 -0
  563. package/lib/structure/ordered.js +336 -0
  564. package/lib/structure/priority.d.ts +499 -0
  565. package/lib/structure/priority.js +756 -0
  566. package/lib/structure/queue.d.ts +90 -0
  567. package/lib/structure/queue.js +154 -0
  568. package/lib/structure/redBlackTree.d.ts +142 -0
  569. package/lib/structure/redBlackTree.js +644 -0
  570. package/lib/structure/segmentTree.d.ts +129 -0
  571. package/lib/structure/segmentTree.js +205 -0
  572. package/lib/structure/stack.d.ts +77 -0
  573. package/lib/structure/stack.js +107 -0
  574. package/lib/structure/unordered.d.ts +99 -0
  575. package/lib/structure/unordered.js +341 -0
  576. package/lib/thread/index.d.ts +2 -0
  577. package/lib/thread/index.js +2 -0
  578. package/lib/thread/thread.d.ts +107 -0
  579. package/lib/thread/thread.js +81 -0
  580. package/lib/thread/transitions.d.ts +8 -0
  581. package/lib/thread/transitions.js +9 -0
  582. package/lib/types/common.d.ts +80 -0
  583. package/lib/types/common.js +5 -0
  584. package/lib/types/index.d.ts +23 -0
  585. package/lib/types/index.js +1 -0
  586. package/lib/warrant/epistemic.d.ts +141 -0
  587. package/lib/warrant/epistemic.js +1 -0
  588. package/lib/warrant/index.d.ts +3 -0
  589. package/lib/warrant/index.js +3 -0
  590. package/lib/warrant/inquiry.d.ts +69 -0
  591. package/lib/warrant/inquiry.js +119 -0
  592. package/lib/warrant/warrant.d.ts +46 -0
  593. package/lib/warrant/warrant.js +153 -0
  594. package/lib/window/compaction.d.ts +57 -0
  595. package/lib/window/compaction.js +334 -0
  596. package/lib/window/compactionTypes.d.ts +113 -0
  597. package/lib/window/compactionTypes.js +1 -0
  598. package/lib/window/index.d.ts +7 -0
  599. package/lib/window/index.js +3 -0
  600. package/lib/window/page.d.ts +16 -0
  601. package/lib/window/page.js +2 -0
  602. package/lib/window/window.d.ts +68 -0
  603. package/lib/window/window.js +194 -0
  604. package/package.json +22 -1
  605. package/src/authz/index.ts +1 -0
  606. package/src/concept/index.ts +3 -0
  607. package/src/concurrency/index.ts +5 -0
  608. package/src/cooperation/index.ts +6 -0
  609. package/src/delegate/index.ts +2 -0
  610. package/src/error/index.ts +7 -0
  611. package/src/evaluation/index.ts +2 -0
  612. package/src/execution/index.ts +3 -0
  613. package/src/frame/index.ts +1 -0
  614. package/src/index.ts +11 -0
  615. package/src/ledger/index.ts +4 -0
  616. package/src/manifest/index.ts +8 -0
  617. package/src/policy/index.ts +2 -0
  618. package/src/protocol/index.ts +6 -0
  619. package/src/receipt/index.ts +1 -0
  620. package/src/semantic/index.ts +2 -0
  621. package/src/storage/index.ts +2 -0
  622. package/src/structure/index.ts +20 -0
  623. package/src/thread/index.ts +2 -0
  624. package/src/warrant/index.ts +3 -0
  625. package/src/window/index.ts +7 -4
  626. package/tools/rewrite-declaration-extensions.ts +98 -0
  627. package/tsconfig.build.json +14 -0
@@ -0,0 +1,70 @@
1
+ import { canonical } from "../semantic/canonical.js";
2
+ const encoder = new TextEncoder();
3
+ function toBase64Url(bytes) {
4
+ const view = new Uint8Array(bytes);
5
+ let binary = "";
6
+ for (const byte of view) {
7
+ binary += String.fromCharCode(byte);
8
+ }
9
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
10
+ }
11
+ function fromBase64Url(text) {
12
+ const padded = text.replace(/-/g, "+").replace(/_/g, "/");
13
+ const pad = padded.length % 4 ? "=".repeat(4 - (padded.length % 4)) : "";
14
+ const binary = atob(padded + pad);
15
+ return Uint8Array.from(binary, (char) => char.charCodeAt(0));
16
+ }
17
+ function payloadOf(card) {
18
+ const { ...rest } = card;
19
+ delete rest.signatures;
20
+ return encoder.encode(canonical(rest));
21
+ }
22
+ function signingInput(protectedHeader, payload) {
23
+ const encoded = toBase64Url(payload);
24
+ return encoder.encode(`${protectedHeader}.${encoded}`);
25
+ }
26
+ export async function signCard(card, key) {
27
+ const protectedHeader = toBase64Url(encoder.encode(JSON.stringify({ alg: "EdDSA", kid: key.kid })));
28
+ const payload = payloadOf(card);
29
+ const signature = await crypto.subtle.sign("Ed25519", key.privateKey, signingInput(protectedHeader, payload));
30
+ return { protected: protectedHeader, signature: toBase64Url(signature) };
31
+ }
32
+ export async function verifyCardSignature(card, signature, publicKey) {
33
+ const reasons = [];
34
+ let header;
35
+ try {
36
+ header = JSON.parse(new TextDecoder().decode(fromBase64Url(signature.protected)));
37
+ }
38
+ catch {
39
+ return { ok: false, reasons: ["protected header is not base64url JSON"] };
40
+ }
41
+ if (header.alg !== "EdDSA") {
42
+ reasons.push(`unsupported alg ${`${header.alg}`}`);
43
+ }
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");
47
+ }
48
+ return { ok: reasons.length === 0, reasons };
49
+ }
50
+ /**
51
+ * Resolves the signing key from a trust registry (which Federation bundles can
52
+ * populate) instead of trusting a key embedded in the card itself.
53
+ */
54
+ export async function verifyCardWithRegistry(card, signature, registry) {
55
+ let header;
56
+ try {
57
+ header = JSON.parse(new TextDecoder().decode(fromBase64Url(signature.protected)));
58
+ }
59
+ catch {
60
+ return { ok: false, reasons: ["protected header is not base64url JSON"] };
61
+ }
62
+ if (!header.kid) {
63
+ return { ok: false, reasons: ["signature carries no kid"] };
64
+ }
65
+ const key = registry.get(header.kid);
66
+ if (!key) {
67
+ return { ok: false, reasons: [`unknown or revoked key: ${header.kid}`] };
68
+ }
69
+ return verifyCardSignature(card, signature, key);
70
+ }
@@ -0,0 +1,64 @@
1
+ import type { Digest, Id, Ref, Timestamp } from "../types/common.js";
2
+ import type { Attestation, ManifestBundle } from "./federationTypes.js";
3
+ import type { Manifest } from "./manifest.js";
4
+ import { KeyRegistry } from "./sign.js";
5
+ import type { KeyPair } from "./sign.js";
6
+ /**
7
+ * Digest covers manifest + keys + revocation + validity window.
8
+ */
9
+ export declare function bundleDigest(bundle: Omit<ManifestBundle, "digest" | "attestations">): Digest;
10
+ export declare function exportBundle(manifest: Manifest, key: KeyPair, options: {
11
+ issued: Timestamp;
12
+ expires: Timestamp;
13
+ revoked?: string[];
14
+ attestations?: Attestation[];
15
+ }): Promise<ManifestBundle>;
16
+ export interface ImportResult {
17
+ ok: boolean;
18
+ reasons: string[];
19
+ manifest?: Manifest;
20
+ /**
21
+ * True only when an endorsement's subject binds to the manifest digest AND
22
+ * its Ed25519 signature verifies against a caller-supplied issuer key.
23
+ * Without `issuerKeys`, no attestation can be endorsed.
24
+ */
25
+ attested: boolean;
26
+ attestations: Id[];
27
+ }
28
+ /**
29
+ * Fails closed. Every check must pass before the manifest is used;
30
+ * the only permitted degradation is "not endorsed", never "less verified".
31
+ *
32
+ * `issuerKeys` is the caller's trust root for third-party attestations. The
33
+ * bundle carries the manifest signer's keys, not the issuer's, so an
34
+ * attestation is never trusted just because it is inside the bundle.
35
+ */
36
+ export declare function importBundle(bundle: ManifestBundle, options: {
37
+ now: Timestamp;
38
+ revoked?: string[];
39
+ issuerKeys?: KeyRegistry;
40
+ }): Promise<ImportResult>;
41
+ /**
42
+ * Imports a bundle's keys into a registry; revoked kids stay revoked.
43
+ */
44
+ export declare function registryFromBundle(bundle: ManifestBundle): Promise<KeyRegistry>;
45
+ export declare function attest(input: {
46
+ id: Id;
47
+ issuer: Ref;
48
+ manifest: Manifest;
49
+ scope: string[];
50
+ issued: Timestamp;
51
+ expires: Timestamp;
52
+ key: KeyPair;
53
+ }): Promise<Attestation>;
54
+ export declare function verifyAttestation(attestation: Attestation, issuerKey: KeyPair): Promise<{
55
+ ok: boolean;
56
+ reasons: string[];
57
+ }>;
58
+ /**
59
+ * Public-key variant so a verifier does not need the issuer's private key.
60
+ */
61
+ export declare function verifyAttestationWithKey(attestation: Attestation, publicKey: CryptoKey): Promise<{
62
+ ok: boolean;
63
+ reasons: string[];
64
+ }>;
@@ -0,0 +1,187 @@
1
+ import { canonical, digestOf } from "../semantic/canonical.js";
2
+ import { KeyRegistry } from "./sign.js";
3
+ import { verifyManifest } from "./sign.js";
4
+ import { checkManifestWindow } from "./keys.js";
5
+ const encoder = new TextEncoder();
6
+ const SKEW_MS = 5 * 60_000;
7
+ function toBase64Url(bytes) {
8
+ const view = new Uint8Array(bytes);
9
+ let binary = "";
10
+ for (const byte of view) {
11
+ binary += String.fromCharCode(byte);
12
+ }
13
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
14
+ }
15
+ function fromBase64Url(text) {
16
+ const padded = text.replace(/-/g, "+").replace(/_/g, "/");
17
+ const pad = padded.length % 4 ? "=".repeat(4 - (padded.length % 4)) : "";
18
+ const binary = atob(padded + pad);
19
+ return Uint8Array.from(binary, (char) => char.charCodeAt(0));
20
+ }
21
+ async function exportKeyMaterial(key) {
22
+ const raw = await crypto.subtle.exportKey("raw", key.publicKey);
23
+ return { kid: key.kid, alg: "ed25519", publicKey: toBase64Url(raw) };
24
+ }
25
+ async function importPublicKey(material) {
26
+ return crypto.subtle.importKey("raw", fromBase64Url(material.publicKey), { name: "Ed25519" }, true, ["verify"]);
27
+ }
28
+ /* ------------------------------- bundle ------------------------------- */
29
+ /**
30
+ * Digest covers manifest + keys + revocation + validity window.
31
+ */
32
+ export function bundleDigest(bundle) {
33
+ return digestOf({
34
+ manifest: bundle.manifest,
35
+ keys: bundle.keys,
36
+ revoked: bundle.revoked ?? [],
37
+ issued: bundle.issued,
38
+ expires: bundle.expires,
39
+ });
40
+ }
41
+ export async function exportBundle(manifest, key, options) {
42
+ const base = {
43
+ amp: "0.1",
44
+ kind: "bundle",
45
+ manifest,
46
+ keys: [await exportKeyMaterial(key)],
47
+ revoked: options.revoked ?? [],
48
+ issued: options.issued,
49
+ expires: options.expires,
50
+ };
51
+ return { ...base, digest: bundleDigest(base), attestations: options.attestations };
52
+ }
53
+ /**
54
+ * Fails closed. Every check must pass before the manifest is used;
55
+ * the only permitted degradation is "not endorsed", never "less verified".
56
+ *
57
+ * `issuerKeys` is the caller's trust root for third-party attestations. The
58
+ * bundle carries the manifest signer's keys, not the issuer's, so an
59
+ * attestation is never trusted just because it is inside the bundle.
60
+ */
61
+ export async function importBundle(bundle, options) {
62
+ const reasons = [];
63
+ const { digest, attestations, ...rest } = bundle;
64
+ if (bundleDigest(rest) !== digest) {
65
+ reasons.push("bundle digest does not cover its content");
66
+ }
67
+ const now = Date.parse(options.now);
68
+ if (!Number.isFinite(now)) {
69
+ reasons.push("now is not a valid timestamp");
70
+ }
71
+ if (Date.parse(bundle.expires) + SKEW_MS < now) {
72
+ reasons.push("bundle expired");
73
+ }
74
+ if (Date.parse(bundle.issued) - SKEW_MS > now) {
75
+ reasons.push("bundle issued in the future");
76
+ }
77
+ const window = checkManifestWindow(bundle.manifest, options.now, SKEW_MS);
78
+ for (const reason of window.reasons) {
79
+ reasons.push(`manifest ${reason}`);
80
+ }
81
+ const signature = bundle.manifest.signatures.find((entry) => entry.role === "self");
82
+ if (!signature) {
83
+ reasons.push("manifest has no self signature");
84
+ }
85
+ const key = signature ? bundle.keys.find((material) => material.kid === signature.kid) : undefined;
86
+ if (signature && !key) {
87
+ reasons.push(`missing key for kid ${signature.kid}`);
88
+ }
89
+ const revoked = new Set([...(bundle.revoked ?? []), ...(options.revoked ?? [])]);
90
+ if (signature && revoked.has(signature.kid)) {
91
+ reasons.push(`key revoked: ${signature.kid}`);
92
+ }
93
+ if (signature && key) {
94
+ try {
95
+ const publicKey = await importPublicKey(key);
96
+ const verification = await verifyManifest(bundle.manifest, publicKey);
97
+ for (const reason of verification.reasons) {
98
+ reasons.push(reason);
99
+ }
100
+ }
101
+ catch {
102
+ reasons.push("public key cannot be imported");
103
+ }
104
+ }
105
+ const endorsed = [];
106
+ for (const attestation of attestations ?? []) {
107
+ if (attestation.subject.digest !== bundle.manifest.digest) {
108
+ continue;
109
+ }
110
+ if (!Number.isFinite(Date.parse(attestation.expires))) {
111
+ continue;
112
+ }
113
+ if (Date.parse(attestation.expires) + SKEW_MS < now) {
114
+ continue;
115
+ }
116
+ if (Date.parse(attestation.issued) - SKEW_MS > now) {
117
+ continue;
118
+ }
119
+ const issuerKid = attestation.signatures[0]?.kid;
120
+ const issuerKey = issuerKid ? options.issuerKeys?.get(issuerKid) : undefined;
121
+ if (!issuerKey) {
122
+ continue;
123
+ }
124
+ const verdict = await verifyAttestationWithKey(attestation, issuerKey);
125
+ if (!verdict.ok) {
126
+ continue;
127
+ }
128
+ endorsed.push(attestation.id);
129
+ }
130
+ return {
131
+ ok: reasons.length === 0,
132
+ reasons,
133
+ manifest: reasons.length === 0 ? bundle.manifest : undefined,
134
+ attested: endorsed.length > 0,
135
+ attestations: endorsed,
136
+ };
137
+ }
138
+ /**
139
+ * Imports a bundle's keys into a registry; revoked kids stay revoked.
140
+ */
141
+ export async function registryFromBundle(bundle) {
142
+ const registry = new KeyRegistry();
143
+ for (const material of bundle.keys) {
144
+ registry.add(material.kid, await importPublicKey(material));
145
+ }
146
+ for (const kid of bundle.revoked ?? []) {
147
+ registry.revoke(kid);
148
+ }
149
+ return registry;
150
+ }
151
+ /* ----------------------------- attestation ---------------------------- */
152
+ export async function attest(input) {
153
+ const body = {
154
+ amp: "0.1",
155
+ kind: "attestation",
156
+ id: input.id,
157
+ issuer: input.issuer,
158
+ subject: {
159
+ kind: "manifest",
160
+ id: input.manifest.agent.id,
161
+ digest: input.manifest.digest,
162
+ },
163
+ scope: input.scope,
164
+ issued: input.issued,
165
+ expires: input.expires,
166
+ };
167
+ const signature = await crypto.subtle.sign("Ed25519", input.key.privateKey, encoder.encode(canonical(body)));
168
+ return {
169
+ ...body,
170
+ signatures: [{ role: "org", alg: "ed25519", kid: input.key.kid, sig: toBase64Url(signature) }],
171
+ };
172
+ }
173
+ export async function verifyAttestation(attestation, issuerKey) {
174
+ return verifyAttestationWithKey(attestation, issuerKey.publicKey);
175
+ }
176
+ /**
177
+ * Public-key variant so a verifier does not need the issuer's private key.
178
+ */
179
+ 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"] };
184
+ }
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
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * AMP v0.1 — Federation Profile: bundles and third-party attestations.
3
+ * Mirrors docs/schemas/federation.schema.json.
4
+ */
5
+ import type { Digest, Id, Ref, Signature, Timestamp } from "../types/common.js";
6
+ import type { Manifest } from "./manifest.js";
7
+ export interface KeyMaterial {
8
+ kid: string;
9
+ alg: "ed25519";
10
+ /**
11
+ * base64url raw public key.
12
+ */
13
+ publicKey: string;
14
+ }
15
+ /**
16
+ * A bundle is a transport shape, not a new trust root: the manifest inside is
17
+ * already signed, and the keys are the minimum needed to check it.
18
+ */
19
+ export interface ManifestBundle {
20
+ amp: "0.1";
21
+ kind: "bundle";
22
+ manifest: Manifest;
23
+ keys: KeyMaterial[];
24
+ /**
25
+ * Keys the issuing domain has revoked; the receiver still merges its own list.
26
+ */
27
+ revoked?: string[];
28
+ issued: Timestamp;
29
+ expires: Timestamp;
30
+ digest: Digest;
31
+ attestations?: Attestation[];
32
+ }
33
+ export interface AttestationSubject {
34
+ kind: "manifest";
35
+ id: Id;
36
+ /**
37
+ * Bound to bytes, not to a name or version.
38
+ */
39
+ digest: Digest;
40
+ }
41
+ export interface Attestation {
42
+ amp: "0.1";
43
+ kind: "attestation";
44
+ id: Id;
45
+ issuer: Ref;
46
+ subject: AttestationSubject;
47
+ scope: string[];
48
+ issued: Timestamp;
49
+ expires: Timestamp;
50
+ signatures: Signature[];
51
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export * from "./agentCard.js";
2
+ export * from "./cardSign.js";
3
+ export * from "./federation.js";
4
+ export * from "./federationTypes.js";
5
+ export * from "./keys.js";
6
+ export * from "./manifest.js";
7
+ export * from "./sign.js";
8
+ export * from "./trust.js";
@@ -0,0 +1,8 @@
1
+ export * from "./agentCard.js";
2
+ export * from "./cardSign.js";
3
+ export * from "./federation.js";
4
+ export * from "./federationTypes.js";
5
+ export * from "./keys.js";
6
+ export * from "./manifest.js";
7
+ export * from "./sign.js";
8
+ export * from "./trust.js";
@@ -0,0 +1,221 @@
1
+ /**
2
+ * AMP v0.1 — key lifecycle: validity windows, rotation, retirement and
3
+ * revocation.
4
+ *
5
+ * This layer is deliberately independent of the envelope and federation
6
+ * formats. It stores public keys and lifecycle metadata only; it never signs
7
+ * or verifies a revocation list. A caller must authenticate a list's
8
+ * `issuer` signature against its own trust root before merging it or acting
9
+ * on its entries.
10
+ */
11
+ import type { Id, Timestamp } from "../types/common.js";
12
+ import type { Manifest } from "./manifest.js";
13
+ /**
14
+ * Lifecycle state: active keys are current, retired keys only verify history.
15
+ */
16
+ export type KeyStatus = "active" | "retired" | "revoked";
17
+ /**
18
+ * A public key plus the lifecycle metadata needed to judge it at a time.
19
+ */
20
+ export interface KeyRecord {
21
+ kid: Id;
22
+ publicKey: CryptoKey;
23
+ status: KeyStatus;
24
+ validFrom: Timestamp;
25
+ validTo?: Timestamp;
26
+ /**
27
+ * Kid this key replaced, when it was introduced by a rotation.
28
+ */
29
+ supersedes?: Id;
30
+ /**
31
+ * Free-form audit note; this module never interprets it.
32
+ */
33
+ note?: string;
34
+ }
35
+ /**
36
+ * One kid revoked by an issuer, at a time and for an optional reason.
37
+ */
38
+ export interface RevocationEntry {
39
+ kid: Id;
40
+ revokedAt: Timestamp;
41
+ reason?: string;
42
+ }
43
+ /**
44
+ * A signed-by-the-caller revocation snapshot. This module only compares and
45
+ * merges the data; it does not verify the `issuer` signature.
46
+ */
47
+ export interface RevocationList {
48
+ issuer: string;
49
+ issued: Timestamp;
50
+ nextUpdate: Timestamp;
51
+ revoked: RevocationEntry[];
52
+ }
53
+ /**
54
+ * Optional clock and skew policy for a `Keyring`.
55
+ */
56
+ export interface KeyringOptions {
57
+ /**
58
+ * Clock used when an operation is not given an explicit timestamp.
59
+ */
60
+ now?: () => Timestamp;
61
+ /**
62
+ * Symmetric tolerance around validity windows, in milliseconds. Defaults
63
+ * to 0 so a key is only usable inside the window its issuer declared.
64
+ */
65
+ clockSkewMs?: number;
66
+ }
67
+ /**
68
+ * Successor key supplied to `Keyring.rotate()`.
69
+ */
70
+ type KeyRotation = {
71
+ kid: Id;
72
+ publicKey: CryptoKey;
73
+ validFrom?: Timestamp;
74
+ overlapMs?: number;
75
+ };
76
+ /**
77
+ * Validity verdict: `ok` plus one human-readable reason per failed check.
78
+ */
79
+ type WindowVerdict = {
80
+ ok: boolean;
81
+ reasons: string[];
82
+ };
83
+ /**
84
+ * In-memory public-key lifecycle store.
85
+ *
86
+ * A record is usable while its status is `active` or `retired` and `at` lies
87
+ * inside its validity window. Revocation is permanent and wins over every
88
+ * window: a historical timestamp cannot resurrect a revoked key. Retired
89
+ * records are retained so signatures made before rotation stay verifiable.
90
+ */
91
+ export declare class Keyring {
92
+ private readonly records;
93
+ private readonly revocationByKid;
94
+ private readonly clock;
95
+ private readonly clockSkewMs;
96
+ constructor(options?: KeyringOptions);
97
+ /**
98
+ * Adds a key record. Throws on a duplicate kid, a malformed timestamp, or
99
+ * a window whose `validTo` is not strictly after `validFrom`.
100
+ *
101
+ * A record supplied already `revoked` is registered as revoked at its
102
+ * `validFrom` (using the note as the reason), so it is never usable. Use
103
+ * `revoke()` to record a later revocation time.
104
+ */
105
+ add(record: KeyRecord): void;
106
+ /**
107
+ * Rotates from `currentKid` to `next`.
108
+ *
109
+ * The current record becomes `retired` and remains available for historical
110
+ * timestamps. It stops being usable after the overlap, which ends at
111
+ * `now + overlapMs` (or at `now` when omitted), capped by the current key's
112
+ * existing `validTo` so rotation never extends a lifetime the issuer
113
+ * already bounded. The successor starts at `next.validFrom` (default now)
114
+ * and records `supersedes: currentKid`.
115
+ *
116
+ * Throws for an unknown, retired or revoked current key, a duplicate next
117
+ * kid, or a negative/non-finite overlap.
118
+ */
119
+ rotate(currentKid: Id, next: KeyRotation): KeyRecord;
120
+ /**
121
+ * Revokes a key permanently, returning `false` when the kid is unknown or
122
+ * was already revoked. The record is kept for audit, and the revocation
123
+ * takes precedence over every validity window and overlap.
124
+ */
125
+ revoke(kid: Id, at?: Timestamp, reason?: string): boolean;
126
+ /**
127
+ * Retires an active key at `at` (default now), returning `false` when the
128
+ * key is unknown, already retired or revoked. The key remains usable for
129
+ * timestamps before `at` but not after it. Retirement never extends an
130
+ * existing `validTo`.
131
+ */
132
+ retire(kid: Id, at?: Timestamp): boolean;
133
+ /**
134
+ * Returns the public key usable at `at` (default now). Revoked keys always
135
+ * return `undefined`; active and retired keys return `undefined` outside
136
+ * their validity window. A non-zero `clockSkewMs` widens both edges.
137
+ */
138
+ get(kid: Id, at?: Timestamp): CryptoKey | undefined;
139
+ /**
140
+ * Returns a copy of the lifecycle record, including retired/revoked history.
141
+ */
142
+ record(kid: Id): KeyRecord | undefined;
143
+ /**
144
+ * Lists active (not retired or revoked) records usable at `at` (default now).
145
+ */
146
+ active(at?: Timestamp): KeyRecord[];
147
+ /**
148
+ * True when the kid was revoked; unknown kids are not revoked.
149
+ */
150
+ isRevoked(kid: Id): boolean;
151
+ /**
152
+ * Explains whether `at` is inside the key's usable window. Missing,
153
+ * revoked, not-yet-valid and expired keys produce `ok: false` with reasons.
154
+ */
155
+ verifyWindow(kid: Id, at: Timestamp): WindowVerdict;
156
+ /**
157
+ * Revocations in deterministic order (earliest first, then kid). Entries
158
+ * are copies; mutating the result does not change the keyring.
159
+ */
160
+ revocations(): ReadonlyArray<RevocationEntry>;
161
+ private contains;
162
+ }
163
+ /**
164
+ * Thrown by `requireFresh()` when a revocation list cannot be trusted as current.
165
+ */
166
+ export declare class RevocationError extends Error {
167
+ /**
168
+ * Machine-readable reasons the list was rejected.
169
+ */
170
+ readonly reasons: string[];
171
+ constructor(message: string, reasons?: string[]);
172
+ }
173
+ /**
174
+ * Shape of the revocation freshness checks.
175
+ */
176
+ type RevocationFreshnessCheck<T> = (list: RevocationList, now: Timestamp, maxStalenessMs: number) => T;
177
+ /**
178
+ * Freshness verdict for a revocation list.
179
+ *
180
+ * Returns `false` for malformed top-level or entry timestamps, a list whose
181
+ * `nextUpdate` precedes `issued`, an `issued` timestamp in the future, or a
182
+ * list older than `nextUpdate + maxStalenessMs`. There is no skew parameter:
183
+ * a verifier should pass a clock reading it is willing to defend.
184
+ */
185
+ export declare const isRevocationFresh: RevocationFreshnessCheck<boolean>;
186
+ /**
187
+ * Returns `list` when fresh; otherwise throws a `RevocationError` with reasons.
188
+ */
189
+ export declare const requireFresh: RevocationFreshnessCheck<RevocationList>;
190
+ /**
191
+ * The manifest window judged by `checkManifestWindow()`.
192
+ */
193
+ type ManifestWindow = Pick<Manifest, "issued" | "expires">;
194
+ /**
195
+ * Shape of `checkManifestWindow()`.
196
+ */
197
+ type ManifestWindowCheck = (manifest: ManifestWindow, now: Timestamp, skewMs?: number) => WindowVerdict;
198
+ /**
199
+ * Checks a manifest's own validity window. `issued` may be up to `skewMs`
200
+ * ahead of `now`, and `expires` up to `skewMs` behind it; the default
201
+ * tolerance is five minutes, matching federation import. Malformed dates and
202
+ * `expires <= issued` are rejected.
203
+ */
204
+ export declare const checkManifestWindow: ManifestWindowCheck;
205
+ /**
206
+ * Shape of `mergeRevocations()`.
207
+ */
208
+ type RevocationMerger = (local: RevocationList, remote: RevocationList) => RevocationList;
209
+ /**
210
+ * Merges two authenticated revocation lists from the same issuer.
211
+ *
212
+ * The union keeps the earliest `revokedAt` per kid, chooses the latest
213
+ * `issued` and `nextUpdate`, and sorts by `revokedAt` then kid, so the result
214
+ * does not depend on argument order or on repeated merges. Different issuers
215
+ * throw: a single list must answer to one signature.
216
+ *
217
+ * This function performs no signature verification. Authenticate both lists
218
+ * (and their issuer) first; never merge untrusted snapshots.
219
+ */
220
+ export declare const mergeRevocations: RevocationMerger;
221
+ export {};