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
@@ -1,322 +0,0 @@
1
- /**
2
- * Frame boundary: the only place a `Frame` may be constructed.
3
- *
4
- * The reference runtime builds frames from object literals, so a frame can
5
- * currently cite a target that does not exist, omit a reason, or carry an
6
- * unbounded exclusion list. This module turns those into rejections and returns
7
- * the part of the exclusion list that does not fit as `deferred`, so nothing is
8
- * silently dropped.
9
- *
10
- * The frame is not extended with new fields: `frame.schema.json` sets
11
- * `additionalProperties: false`, so aggregates belong to a later capacity layer,
12
- * not to this object.
13
- */
14
- import type { Id, Ref, Timestamp } from "../types/common.ts";
15
- import type { Frame, FrameBudget, FrameMode, Ignored, Impasse, Slot } from "../frame/frame.ts";
16
-
17
- import { digestOf } from "../semantic/canonical.ts";
18
- import { isId } from "./ids.ts";
19
- import { BoundaryRejection } from "../error/boundaryRejection.ts";
20
- import type { RefTable } from "./refTable.ts";
21
-
22
- /**
23
- * Draft accepted by {@link frameFrom}; `digest` is computed here, never supplied.
24
- */
25
- export interface FrameDraft {
26
- id: Id;
27
- agent: Id;
28
- cycle: number;
29
- ts?: Timestamp;
30
- parent?: Ref;
31
- mode: FrameMode;
32
- goal?: Ref;
33
- slots: Slot[];
34
- ignored?: Ignored[];
35
- budget: FrameBudget;
36
- open_questions?: Ref[];
37
- impasse?: Impasse;
38
- note?: string;
39
- }
40
-
41
- export interface FrameBoundaryOptions {
42
- /**
43
- * May lower the schema ceiling of 9, never raise it. Defaults to 9.
44
- */
45
- maxSlots?: number;
46
- /**
47
- * Visible exclusions kept on the frame; the rest is returned as `deferred`. Defaults to 50.
48
- */
49
- maxIgnored?: number;
50
- /**
51
- * Clock for `ts` when the draft omits it. Hosts should pass their ledger clock.
52
- */
53
- now?: () => Timestamp;
54
- }
55
-
56
- export interface FrameBoundaryResult {
57
- frame: Frame;
58
- /**
59
- * Exclusions beyond `maxIgnored`, in input order. Never silently dropped.
60
- */
61
- deferred: Ignored[];
62
- }
63
-
64
- const SchemaMaxSlots: number = 9;
65
- const DefaultMaxIgnored: number = 50;
66
-
67
- const BudgetDimensions: readonly string[] = ["tokens", "ms", "calls", "interrupts", "money"];
68
- const FrameModes: readonly FrameMode[] = ["explore", "exploit", "triage", "reflect", "rest"];
69
- const SlotRoles: readonly Slot["role"][] = ["goal", "question", "evidence", "concept", "process", "tool", "memory", "self", "other", "threat", "artifact"];
70
- const SlotStates: readonly Slot["state"][] = ["active", "released", "evicted", "done"];
71
- const IgnoredReasons: readonly Ignored["reason"][] = ["low_voi", "out_of_scope", "untrusted", "budget", "blocked", "habituated", "deferred"];
72
- const ImpasseStates: readonly Impasse["state"][] = ["TIE", "STUCK", "STALLED", "CONFLICT", "INFEASIBLE", "UNKNOWN", "UNVERIFIED", "DRIFT", "BUDGET"];
73
- const Tiers: readonly NonNullable<Slot["tier"]>[] = ["T0", "T1", "T2", "T3", "T4"];
74
-
75
- type ProblemChecker = (value: unknown, at: string, problems: string[]) => void;
76
-
77
- type RefTableChecker = (value: unknown, refs: RefTable, at: string, problems: string[]) => void;
78
-
79
- type FrameBoundaryBuilder = (draft: FrameDraft, refs: RefTable, options?: FrameBoundaryOptions) => FrameBoundaryResult;
80
-
81
- const isRecord: (value: unknown) => value is Record<string, unknown> = (value: unknown): value is Record<string, unknown> =>
82
- typeof(value) === "object" && value !== null && !Array.isArray(value);
83
-
84
- const checkBudget: ProblemChecker = (value: unknown, at: string, problems: string[]): void => {
85
- if (!isRecord(value)) {
86
- problems.push(`${at} must be an object`);
87
- return;
88
- }
89
- const budgetKeys: string[] = Object.keys(value);
90
- for (let keyIndex: number = 0; keyIndex < budgetKeys.length; keyIndex += 1) {
91
- const key: string = budgetKeys[keyIndex];
92
- const amount: unknown = value[key];
93
- if (!BudgetDimensions.includes(key)) {
94
- problems.push(`${at}.${key} is not a budget dimension`);
95
- continue;
96
- }
97
- if (typeof(amount) !== "number" || !Number.isFinite(amount) || amount < 0) {
98
- problems.push(`${at}.${key} must be a non-negative finite number`);
99
- continue;
100
- }
101
- if (key !== "money" && !Number.isInteger(amount)) {
102
- problems.push(`${at}.${key} must be an integer`);
103
- }
104
- }
105
- };
106
-
107
- const checkRef: RefTableChecker = (value: unknown, refs: RefTable, at: string, problems: string[]): void => {
108
- if (!isRecord(value)) {
109
- problems.push(`${at} must be a Ref object`);
110
- return;
111
- }
112
- if (typeof(value.kind) !== "string" || !isId(value.id)) {
113
- problems.push(`${at} must have a string kind and a valid id`);
114
- return;
115
- }
116
- if (!refs.has(value as unknown as Ref)) {
117
- const problem: string | undefined = refs.check(value as unknown as Ref);
118
- if (problem !== (void 0)) {
119
- problems.push(`${at} ${problem}`);
120
- }
121
- }
122
- };
123
-
124
- const checkSlot: RefTableChecker = (value: unknown, refs: RefTable, at: string, problems: string[]): void => {
125
- if (!isRecord(value)) {
126
- problems.push(`${at} must be an object`);
127
- return;
128
- }
129
- checkRef(value.target, refs, `${at}.target`, problems);
130
- if (typeof(value.role) !== "string" || !SlotRoles.includes(value.role as Slot["role"])) {
131
- problems.push(`${at}.role is not a slot role`);
132
- }
133
- const salience: unknown = value.salience;
134
- if (typeof(salience) !== "number" || salience < 0 || salience > 1) {
135
- problems.push(`${at}.salience must be in [0,1]`);
136
- }
137
- if (typeof(value.why) !== "string" || value.why.trim().length === 0) {
138
- problems.push(`${at}.why is empty`);
139
- }
140
- checkBudget(value.cost, `${at}.cost`, problems);
141
- if (typeof(value.state) !== "string" || !SlotStates.includes(value.state as Slot["state"])) {
142
- problems.push(`${at}.state is not a slot state`);
143
- }
144
- if (value.tier !== (void 0) && (typeof(value.tier) !== "string" || !Tiers.includes(value.tier as NonNullable<Slot["tier"]>))) {
145
- problems.push(`${at}.tier is not a tier`);
146
- }
147
- const voi: unknown = value.voi;
148
- if (voi !== (void 0) && (typeof(voi) !== "number" || voi < 0 || voi > 1)) {
149
- problems.push(`${at}.voi must be in [0,1]`);
150
- }
151
- if (value.budget !== (void 0)) {
152
- checkBudget(value.budget, `${at}.budget`, problems);
153
- }
154
- const ttlTurns: unknown = value.ttl_turns;
155
- if (ttlTurns !== (void 0) && (typeof(ttlTurns) !== "number" || !Number.isInteger(ttlTurns) || ttlTurns < 0)) {
156
- problems.push(`${at}.ttl_turns must be a non-negative integer`);
157
- }
158
- };
159
-
160
- const checkIgnored: RefTableChecker = (value: unknown, refs: RefTable, at: string, problems: string[]): void => {
161
- if (!isRecord(value)) {
162
- problems.push(`${at} must be an object`);
163
- return;
164
- }
165
- checkRef(value.target, refs, `${at}.target`, problems);
166
- if (typeof(value.reason) !== "string" || !IgnoredReasons.includes(value.reason as Ignored["reason"])) {
167
- problems.push(`${at}.reason is not an ignored reason`);
168
- }
169
- if (typeof(value.revisit_if) !== "string" || value.revisit_if.trim().length === 0) {
170
- problems.push(`${at}.revisit_if is empty`);
171
- }
172
- };
173
-
174
- const checkImpasse: ProblemChecker = (value: unknown, at: string, problems: string[]): void => {
175
- if (!isRecord(value)) {
176
- problems.push(`${at} must be an object`);
177
- return;
178
- }
179
- if (typeof(value.state) !== "string" || !ImpasseStates.includes(value.state as Impasse["state"])) {
180
- problems.push(`${at}.state is not an impasse state`);
181
- }
182
- if (value.detail !== (void 0) && typeof(value.detail) !== "string") {
183
- problems.push(`${at}.detail must be a string`);
184
- }
185
- };
186
-
187
- /**
188
- * Validate a draft and return the only frame it permits.
189
- *
190
- * @throws BoundaryRejection `invalid_frame` with every problem found.
191
- */
192
- export const frameFrom: FrameBoundaryBuilder = (draft: FrameDraft, refs: RefTable, options: FrameBoundaryOptions = {}): FrameBoundaryResult => {
193
- const problems: string[] = [];
194
-
195
- if (!isId(draft.id)) {
196
- problems.push("id is not a valid AMP id");
197
- }
198
- if (!isId(draft.agent)) {
199
- problems.push("agent is not a valid AMP id");
200
- }
201
- if (!Number.isSafeInteger(draft.cycle) || draft.cycle < 0) {
202
- problems.push("cycle must be a non-negative integer");
203
- }
204
- if (!FrameModes.includes(draft.mode)) {
205
- problems.push("mode is not a frame mode");
206
- }
207
-
208
- const ts: Timestamp = draft.ts ?? (options.now ? options.now() : new Date().toISOString());
209
- if (typeof(ts) !== "string" || Number.isNaN(Date.parse(ts))) {
210
- problems.push("ts is not a date-time");
211
- }
212
-
213
- const requestedMaxSlots: number = options.maxSlots ?? SchemaMaxSlots;
214
- if (!Number.isInteger(requestedMaxSlots) || requestedMaxSlots < 0 || requestedMaxSlots > SchemaMaxSlots) {
215
- problems.push(`maxSlots must be an integer in [0,${SchemaMaxSlots}]`);
216
- }
217
- const maxSlots: number = Math.min(Math.max(0, requestedMaxSlots), SchemaMaxSlots);
218
-
219
- const requestedMaxIgnored: number = options.maxIgnored ?? DefaultMaxIgnored;
220
- if (!Number.isInteger(requestedMaxIgnored) || requestedMaxIgnored < 0) {
221
- problems.push("maxIgnored must be a non-negative integer");
222
- }
223
- const maxIgnored: number = Math.max(0, requestedMaxIgnored);
224
-
225
- if (!Array.isArray(draft.slots)) {
226
- problems.push("slots must be an array");
227
- } else {
228
- if (draft.slots.length > maxSlots) {
229
- problems.push(`slots has ${draft.slots.length} entries, max is ${maxSlots}`);
230
- }
231
- draft.slots.forEach((slot, index) => checkSlot(slot, refs, `slots[${index}]`, problems));
232
- }
233
-
234
- const declaredIgnored: unknown = draft.ignored;
235
- const ignored: Ignored[] = Array.isArray(declaredIgnored) ? declaredIgnored : [];
236
- if (declaredIgnored !== (void 0) && !Array.isArray(declaredIgnored)) {
237
- problems.push("ignored must be an array");
238
- }
239
- ignored.forEach((item, index) => checkIgnored(item, refs, `ignored[${index}]`, problems));
240
-
241
- const budgetValue: unknown = draft.budget;
242
- if (!isRecord(budgetValue)) {
243
- problems.push("budget must be an object");
244
- } else {
245
- const allocated: unknown = budgetValue.allocated;
246
- const spent: unknown = budgetValue.spent;
247
- checkBudget(allocated, "budget.allocated", problems);
248
- checkBudget(spent, "budget.spent", problems);
249
- if (isRecord(allocated) && isRecord(spent)) {
250
- if (Object.keys(allocated).length === 0) {
251
- problems.push("budget.allocated must set at least one dimension");
252
- }
253
- for (let dimensionIndex: number = 0; dimensionIndex < BudgetDimensions.length; dimensionIndex += 1) {
254
- const key: string = BudgetDimensions[dimensionIndex];
255
- const limit: unknown = allocated[key];
256
- const used: unknown = spent[key];
257
- if (typeof(limit) === "number" && typeof(used) === "number" && used > limit) {
258
- problems.push(`budget.spent.${key} exceeds budget.allocated.${key}`);
259
- }
260
- }
261
- }
262
- }
263
-
264
- if (draft.parent !== (void 0)) {
265
- checkRef(draft.parent, refs, "parent", problems);
266
- }
267
- if (draft.goal !== (void 0)) {
268
- checkRef(draft.goal, refs, "goal", problems);
269
- }
270
- if (draft.open_questions !== (void 0)) {
271
- if (!Array.isArray(draft.open_questions)) {
272
- problems.push("open_questions must be an array");
273
- } else {
274
- draft.open_questions.forEach((ref, index) => checkRef(ref, refs, `open_questions[${index}]`, problems));
275
- }
276
- }
277
- if (draft.impasse !== (void 0)) {
278
- checkImpasse(draft.impasse, "impasse", problems);
279
- }
280
- if (draft.note !== (void 0) && typeof(draft.note) !== "string") {
281
- problems.push("note must be a string");
282
- }
283
-
284
- if (problems.length > 0) {
285
- throw new BoundaryRejection("invalid_frame", problems);
286
- }
287
-
288
- const visible: Ignored[] = ignored.slice(0, maxIgnored);
289
- const deferred: Ignored[] = ignored.slice(maxIgnored);
290
- const body: Omit<Frame, "digest"> = {
291
- amp: "0.1",
292
- kind: "frame",
293
- id: draft.id,
294
- agent: draft.agent,
295
- cycle: draft.cycle,
296
- ts,
297
- mode: draft.mode,
298
- slots: [...draft.slots],
299
- budget: { allocated: { ...draft.budget.allocated }, spent: { ...draft.budget.spent } },
300
- };
301
- if (draft.parent !== (void 0)) {
302
- body.parent = draft.parent;
303
- }
304
- if (draft.goal !== (void 0)) {
305
- body.goal = draft.goal;
306
- }
307
- if (visible.length > 0) {
308
- body.ignored = visible;
309
- }
310
- if (draft.open_questions !== (void 0)) {
311
- body.open_questions = [...draft.open_questions];
312
- }
313
- if (draft.impasse !== (void 0)) {
314
- body.impasse = draft.impasse;
315
- }
316
- if (draft.note !== (void 0)) {
317
- body.note = draft.note;
318
- }
319
-
320
- const frame: Frame = { ...body, digest: digestOf(body) };
321
- return { frame, deferred };
322
- };
@@ -1,14 +0,0 @@
1
- /**
2
- * Identifier grammar from `docs/schemas/common.schema.json#/$defs/id`.
3
- *
4
- * An id that does not match this pattern cannot be referenced by any other AMP
5
- * object, so the boundary rejects it instead of creating an object nothing can
6
- * point at.
7
- */
8
-
9
- /**
10
- * Top-level data, hence PascalCase under the project's naming rule.
11
- */
12
- const IdPattern: RegExp = /^[a-z][a-z0-9._:-]{0,63}$/;
13
-
14
- export const isId: (value: unknown) => value is string = (value: unknown): value is string => typeof(value) === "string" && IdPattern.test(value);
@@ -1,12 +0,0 @@
1
- /**
2
- * Boundary barrel: constructors that reject instead of returning invalid objects.
3
- */
4
- export { BoundaryRejection } from "../error/boundaryRejection.ts";
5
- export type { BoundaryCode } from "../error/boundaryRejection.ts";
6
- export { isId } from "./ids.ts";
7
- export { RefTable } from "./refTable.ts";
8
- export type { RefScope } from "./refTable.ts";
9
- export { frameFrom } from "./frame.ts";
10
- export type { FrameBoundaryOptions, FrameBoundaryResult, FrameDraft } from "./frame.ts";
11
- export { parseToolCall } from "./toolCall.ts";
12
- export type { ParsedToolCall, ToolSchema } from "./toolCall.ts";
@@ -1,125 +0,0 @@
1
- /**
2
- * Reference resolution for the construction boundary.
3
- *
4
- * A `Ref` is only a pointer. Until it is resolved against a scope, nothing
5
- * prevents it from naming an object that does not exist — which is how a frame
6
- * ends up citing a tool, concept or claim that the ledger never held. The table
7
- * makes resolution explicit and gives the scope a name, so "unresolvable" is a
8
- * rejection rather than a silent dangling pointer.
9
- *
10
- * Canonicalisation rules:
11
- * - `tool` and `capability` share one namespace; the `mcp.` prefix is transport
12
- * detail, not identity.
13
- * - `self` resolves to the agent id registered for the scope.
14
- */
15
- import type { Id, Ref, RefKind } from "../types/common.ts";
16
-
17
- import { isId } from "./ids.ts";
18
- import { BoundaryRejection } from "../error/boundaryRejection.ts";
19
-
20
- /**
21
- * Where a reference is expected to resolve.
22
- */
23
- export type RefScope = "run" | "ledger" | "bundle";
24
-
25
- /**
26
- * Kinds that name something outside the ledger. They still need a valid id and
27
- * a kind, but they cannot be required to resolve here: a human, an org or an
28
- * external entity lives in a directory the host owns, not in the run.
29
- */
30
- const DefaultOpaqueKinds: readonly RefKind[] = ["human", "org", "entity", "other"];
31
-
32
- const stripToolPrefix = (id: string): string => (id.startsWith("mcp.") ? id.slice(4) : id);
33
-
34
- const canonicalId = (kind: RefKind, id: string): string => `${kind}:${kind === "tool" ? stripToolPrefix(id) : id}`;
35
-
36
- export class RefTable {
37
- readonly scope: RefScope;
38
- readonly opaqueKinds: ReadonlySet<RefKind>;
39
- private readonly entries: Map<string, unknown>;
40
-
41
- constructor(scope: RefScope, agentId?: string, opaqueKinds: readonly RefKind[] = DefaultOpaqueKinds) {
42
- this.scope = scope;
43
- this.opaqueKinds = new Set<RefKind>(opaqueKinds);
44
- this.entries = new Map<string, unknown>();
45
- if (agentId !== (void 0)) {
46
- this.entries.set(`agent:${agentId}`, { kind: "self", id: agentId });
47
- }
48
- }
49
-
50
- static forScope(scope: RefScope, agentId?: string, opaqueKinds?: readonly RefKind[]): RefTable {
51
- return new RefTable(scope, agentId, opaqueKinds);
52
- }
53
-
54
- /**
55
- * Register an object under its reference key.
56
- *
57
- * @throws BoundaryRejection `invalid_id` when the id cannot be referenced,
58
- * `duplicate_ref` when the same key is registered twice.
59
- */
60
- add(kind: RefKind, id: Id, value: unknown): this {
61
- if (!isId(id)) {
62
- throw new BoundaryRejection("invalid_id", [`${kind}:${id} is not a valid AMP id`]);
63
- }
64
- const key: string = canonicalId(kind, id);
65
- if (this.entries.has(key)) {
66
- throw new BoundaryRejection("duplicate_ref", [`${key} is already registered in scope ${this.scope}`]);
67
- }
68
- this.entries.set(key, value);
69
- return this;
70
- }
71
-
72
- resolve(ref: Ref): unknown | undefined {
73
- if (!isId(ref.id)) {
74
- return (void 0);
75
- }
76
- const direct: unknown = this.entries.get(canonicalId(ref.kind, ref.id));
77
- if (direct !== (void 0)) {
78
- return direct;
79
- }
80
- if (ref.kind === "tool") {
81
- return this.entries.get(`capability:${stripToolPrefix(ref.id)}`);
82
- }
83
- if (ref.kind === "self") {
84
- return this.entries.get(`agent:${ref.id}`);
85
- }
86
- return (void 0);
87
- }
88
-
89
- /**
90
- * Resolve or reject. The message names the scope so a host can tell a
91
- * missing run object from a missing federated object.
92
- */
93
- require(ref: Ref): unknown {
94
- const hit: unknown = this.resolve(ref);
95
- if (hit === (void 0)) {
96
- throw new BoundaryRejection("unresolvable_ref", [`${ref.kind}:${ref.id} is not present in scope ${this.scope}`]);
97
- }
98
- return hit;
99
- }
100
-
101
- has(ref: Ref): boolean {
102
- return this.resolve(ref) !== (void 0);
103
- }
104
-
105
- /**
106
- * Resolution verdict used by `frameFrom`.
107
- *
108
- * Opaque kinds pass on shape alone; every other kind must be present in the
109
- * scope. Returns a problem string instead of throwing so callers can report
110
- * every dangling reference at once.
111
- */
112
- check(ref: Ref): string | undefined {
113
- if (this.opaqueKinds.has(ref.kind)) {
114
- return (void 0);
115
- }
116
- if (this.resolve(ref) !== (void 0)) {
117
- return (void 0);
118
- }
119
- return `${ref.kind}:${ref.id} is not present in scope ${this.scope}`;
120
- }
121
-
122
- get size(): number {
123
- return this.entries.size;
124
- }
125
- }
@@ -1,212 +0,0 @@
1
- /**
2
- * Tool-call boundary: parse arguments before anything touches the world.
3
- *
4
- * The reference executor passes `Record<string, unknown>` straight to a server.
5
- * This module checks the arguments against the tool's `inputSchema` and returns
6
- * a digest of exactly what was accepted, so an approval can bind to the parsed
7
- * call instead of to a mutable object.
8
- *
9
- * The validator implements the subset of JSON Schema that MCP tool definitions
10
- * actually use: `type`, `properties`, `required`, `additionalProperties`,
11
- * `items`, `enum`, `const`, `anyOf`/`oneOf`/`allOf`, length and numeric bounds,
12
- * and `pattern`. Keywords outside that subset are ignored rather than guessed
13
- * at; a schema that needs more should be narrowed before it reaches this layer.
14
- */
15
- import type { Digest } from "../types/common.ts";
16
-
17
- import { canonical, digestOf } from "../semantic/canonical.ts";
18
- import { BoundaryRejection } from "../error/boundaryRejection.ts";
19
-
20
- export interface ToolSchema {
21
- name: string;
22
- inputSchema: unknown;
23
- }
24
-
25
- export interface ParsedToolCall {
26
- tool: string;
27
- args: Record<string, unknown>;
28
- /**
29
- * Digest of the accepted arguments; approvals bind to this value.
30
- */
31
- digest: Digest;
32
- }
33
-
34
- const isRecord: (value: unknown) => value is Record<string, unknown> = (value: unknown): value is Record<string, unknown> =>
35
- typeof(value) === "object" && value !== null && !Array.isArray(value);
36
-
37
- const matchesType: (type: string, value: unknown) => boolean = (type: string, value: unknown): boolean => {
38
- if (type === "null") {
39
- return value === null;
40
- }
41
- if (type === "array") {
42
- return Array.isArray(value);
43
- }
44
- if (type === "object") {
45
- return isRecord(value);
46
- }
47
- if (type === "string") {
48
- return typeof(value) === "string";
49
- }
50
- if (type === "boolean") {
51
- return typeof(value) === "boolean";
52
- }
53
- if (type === "number") {
54
- return typeof(value) === "number" && Number.isFinite(value);
55
- }
56
- if (type === "integer") {
57
- return typeof(value) === "number" && Number.isInteger(value);
58
- }
59
- return true;
60
- };
61
-
62
- type SchemaCheck = (schema: unknown, value: unknown, at: string, depth: number, problems: string[]) => void;
63
-
64
- const checkSchema: SchemaCheck = (schema: unknown, value: unknown, at: string, depth: number, problems: string[]): void => {
65
- if (depth > 32) {
66
- problems.push(`${at}: schema nesting exceeds 32`);
67
- return;
68
- }
69
- if (!isRecord(schema)) {
70
- problems.push(`${at}: schema must be an object`);
71
- return;
72
- }
73
-
74
- if ("const" in schema && canonical(schema.const) !== canonical(value)) {
75
- problems.push(`${at} must equal the const value`);
76
- }
77
- if (Array.isArray(schema.enum) && !schema.enum.some((item) => canonical(item) === canonical(value))) {
78
- problems.push(`${at} is not one of the allowed values`);
79
- }
80
- if (Array.isArray(schema.allOf)) {
81
- schema.allOf.forEach((branch) => checkSchema(branch, value, at, depth + 1, problems));
82
- }
83
- if (Array.isArray(schema.anyOf) && !schema.anyOf.some((branch) => schemaMatches(branch, value, depth + 1))) {
84
- problems.push(`${at} matches none of anyOf`);
85
- }
86
- if (Array.isArray(schema.oneOf)) {
87
- const matched: number = schema.oneOf.filter((branch) => schemaMatches(branch, value, depth + 1)).length;
88
- if (matched !== 1) {
89
- problems.push(`${at} matches ${matched} of oneOf, expected exactly 1`);
90
- }
91
- }
92
-
93
- const declared: unknown = schema.type;
94
- const types: string[] = Array.isArray(declared)
95
- ? declared.filter((item): item is string => typeof(item) === "string")
96
- : typeof(declared) === "string"
97
- ? [declared]
98
- : [];
99
- if (types.length > 0 && !types.some((type) => matchesType(type, value))) {
100
- problems.push(`${at} expected ${types.join("|")}`);
101
- return;
102
- }
103
-
104
- if (Array.isArray(value)) {
105
- if (Array.isArray(schema.items)) {
106
- schema.items.forEach((item, index) => {
107
- if (index < value.length) {
108
- checkSchema(item, value[index], `${at}[${index}]`, depth + 1, problems);
109
- }
110
- });
111
- } else if (schema.items !== (void 0)) {
112
- value.forEach((item, index) => checkSchema(schema.items, item, `${at}[${index}]`, depth + 1, problems));
113
- }
114
- const minItems: unknown = schema.minItems;
115
- const maxItems: unknown = schema.maxItems;
116
- if (typeof(minItems) === "number" && value.length < minItems) {
117
- problems.push(`${at} needs at least ${minItems} items`);
118
- }
119
- if (typeof(maxItems) === "number" && value.length > maxItems) {
120
- problems.push(`${at} allows at most ${maxItems} items`);
121
- }
122
- return;
123
- }
124
-
125
- if (isRecord(value)) {
126
- const required: unknown = schema.required;
127
- if (Array.isArray(required)) {
128
- for (let index: number = 0; index < required.length; index += 1) {
129
- const name: unknown = required[index];
130
- if (typeof(name) === "string" && !(name in value)) {
131
- problems.push(`${at}.${name} is required`);
132
- }
133
- }
134
- }
135
- const properties: unknown = schema.properties;
136
- if (isRecord(properties)) {
137
- const keys: string[] = Object.keys(value);
138
- for (let index: number = 0; index < keys.length; index += 1) {
139
- const key: string = keys[index];
140
- const child: unknown = properties[key];
141
- if (child !== (void 0)) {
142
- checkSchema(child, value[key], `${at}.${key}`, depth + 1, problems);
143
- } else if (schema.additionalProperties === false) {
144
- problems.push(`${at}.${key} is not allowed`);
145
- }
146
- }
147
- } else if (schema.additionalProperties === false && Object.keys(value).length > 0) {
148
- problems.push(`${at} does not allow properties`);
149
- }
150
- return;
151
- }
152
-
153
- if (typeof(value) === "string") {
154
- const minLength: unknown = schema.minLength;
155
- const maxLength: unknown = schema.maxLength;
156
- const pattern: unknown = schema.pattern;
157
- if (typeof(minLength) === "number" && value.length < minLength) {
158
- problems.push(`${at} is shorter than ${minLength}`);
159
- }
160
- if (typeof(maxLength) === "number" && value.length > maxLength) {
161
- problems.push(`${at} is longer than ${maxLength}`);
162
- }
163
- if (typeof(pattern) === "string") {
164
- try {
165
- if (!new RegExp(pattern).test(value)) {
166
- problems.push(`${at} does not match ${pattern}`);
167
- }
168
- } catch {
169
- problems.push(`${at} has an invalid pattern`);
170
- }
171
- }
172
- }
173
-
174
- if (typeof(value) === "number") {
175
- const minimum: unknown = schema.minimum;
176
- const maximum: unknown = schema.maximum;
177
- if (typeof(minimum) === "number" && value < minimum) {
178
- problems.push(`${at} is below ${minimum}`);
179
- }
180
- if (typeof(maximum) === "number" && value > maximum) {
181
- problems.push(`${at} is above ${maximum}`);
182
- }
183
- }
184
- };
185
-
186
- const schemaMatches: (schema: unknown, value: unknown, depth: number) => boolean = (schema: unknown, value: unknown, depth: number): boolean => {
187
- const problems: string[] = [];
188
- checkSchema(schema, value, "$", depth, problems);
189
- return problems.length === 0;
190
- };
191
-
192
- /**
193
- * Parse a tool call's arguments against its declared schema.
194
- *
195
- * @throws BoundaryRejection `invalid_tool_args` with every problem found.
196
- */
197
- export const parseToolCall: (tool: ToolSchema, raw: unknown) => ParsedToolCall = (tool: ToolSchema, raw: unknown): ParsedToolCall => {
198
- const problems: string[] = [];
199
- if (typeof(tool.name) !== "string" || tool.name.length === 0) {
200
- problems.push("tool.name is empty");
201
- }
202
- if (!isRecord(raw)) {
203
- problems.push("arguments must be an object");
204
- } else {
205
- checkSchema(tool.inputSchema, raw, "$", 0, problems);
206
- }
207
- if (problems.length > 0) {
208
- throw new BoundaryRejection("invalid_tool_args", problems);
209
- }
210
- const args: Record<string, unknown> = raw as Record<string, unknown>;
211
- return { tool: tool.name, args, digest: digestOf(args) };
212
- };