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,9 +1,32 @@
1
1
  import { digestOf } from "../semantic/canonical.js";
2
+ import { deepFreezeJson } from "../semantic/jsonValue.js";
3
+ import { isDateTime } from "../semantic/time.js";
2
4
  import { isId } from "./ids.js";
5
+ import { isRefKind } from "./kinds.js";
3
6
  import { BoundaryRejection } from "../error/boundaryRejection.js";
4
7
  const SchemaMaxSlots = 9;
5
8
  const DefaultMaxIgnored = 50;
6
9
  const BudgetDimensions = ["tokens", "ms", "calls", "interrupts", "money"];
10
+ const FrameProperties = [
11
+ "id",
12
+ "agent",
13
+ "cycle",
14
+ "ts",
15
+ "parent",
16
+ "mode",
17
+ "goal",
18
+ "slots",
19
+ "ignored",
20
+ "budget",
21
+ "open_questions",
22
+ "impasse",
23
+ "note",
24
+ ];
25
+ const SlotProperties = ["target", "role", "tier", "salience", "voi", "cost", "budget", "why", "ttl_turns", "state"];
26
+ const IgnoredProperties = ["target", "reason", "revisit_if"];
27
+ const RefProperties = ["kind", "id", "label"];
28
+ const FrameBudgetProperties = ["allocated", "spent"];
29
+ const ImpasseProperties = ["state", "detail"];
7
30
  const FrameModes = ["explore", "exploit", "triage", "reflect", "rest"];
8
31
  const SlotRoles = ["goal", "question", "evidence", "concept", "process", "tool", "memory", "self", "other", "threat", "artifact"];
9
32
  const SlotStates = ["active", "released", "evicted", "done"];
@@ -11,229 +34,443 @@ const IgnoredReasons = ["low_voi", "out_of_scope", "untrusted", "budget", "block
11
34
  const ImpasseStates = ["TIE", "STUCK", "STALLED", "CONFLICT", "INFEASIBLE", "UNKNOWN", "UNVERIFIED", "DRIFT", "BUDGET"];
12
35
  const Tiers = ["T0", "T1", "T2", "T3", "T4"];
13
36
  const isRecord = (value) => typeof (value) === "object" && value !== null && !Array.isArray(value);
14
- const checkBudget = (value, at, problems) => {
37
+ /**
38
+ * A host draft must be a plain object (or null-prototype). Class instances,
39
+ * arrays and functions are not drafts, even though they can carry the fields.
40
+ */
41
+ const isPlainRecord = (value) => {
15
42
  if (!isRecord(value)) {
43
+ return false;
44
+ }
45
+ const prototype = Object.getPrototypeOf(value);
46
+ return prototype === null || prototype === Object.prototype;
47
+ };
48
+ const isRefTable = (value) => typeof (value) === "object" && value !== null && typeof (value.check) === "function";
49
+ const reportUnknownProperties = (value, allowed, at, problems) => {
50
+ const keys = Object.keys(value);
51
+ for (let index = 0; index < keys.length; index += 1) {
52
+ const key = keys[index];
53
+ if (!allowed.includes(key)) {
54
+ problems.push(at.length === 0 ? `unknown property "${key}"` : `${at}: unknown property "${key}"`);
55
+ }
56
+ }
57
+ };
58
+ /**
59
+ * Validate a budget-like object and return a fresh copy that only holds the
60
+ * five declared dimensions. `money` alone may be fractional.
61
+ */
62
+ const readBudget = (value, at, problems) => {
63
+ if (!isPlainRecord(value)) {
16
64
  problems.push(`${at} must be an object`);
17
- return;
65
+ return (void 0);
18
66
  }
19
- const budgetKeys = Object.keys(value);
20
- for (let keyIndex = 0; keyIndex < budgetKeys.length; keyIndex += 1) {
21
- const key = budgetKeys[keyIndex];
67
+ const keys = Object.keys(value);
68
+ const budget = {};
69
+ let valid = true;
70
+ for (let index = 0; index < keys.length; index += 1) {
71
+ const key = keys[index];
22
72
  const amount = value[key];
23
73
  if (!BudgetDimensions.includes(key)) {
24
74
  problems.push(`${at}.${key} is not a budget dimension`);
75
+ valid = false;
25
76
  continue;
26
77
  }
27
78
  if (typeof (amount) !== "number" || !Number.isFinite(amount) || amount < 0) {
28
79
  problems.push(`${at}.${key} must be a non-negative finite number`);
80
+ valid = false;
29
81
  continue;
30
82
  }
31
83
  if (key !== "money" && !Number.isInteger(amount)) {
32
84
  problems.push(`${at}.${key} must be an integer`);
85
+ valid = false;
86
+ continue;
33
87
  }
88
+ budget[key] = amount;
34
89
  }
90
+ return valid ? budget : (void 0);
35
91
  };
36
- const checkRef = (value, refs, at, problems) => {
37
- if (!isRecord(value)) {
92
+ /**
93
+ * Validate a reference and return a fresh copy. Opaque kinds pass on shape
94
+ * alone; every other kind must resolve in the supplied scope.
95
+ */
96
+ const readRef = (value, refs, at, problems) => {
97
+ if (!isPlainRecord(value)) {
38
98
  problems.push(`${at} must be a Ref object`);
39
- return;
99
+ return (void 0);
40
100
  }
41
- if (typeof (value.kind) !== "string" || !isId(value.id)) {
42
- problems.push(`${at} must have a string kind and a valid id`);
43
- return;
101
+ reportUnknownProperties(value, RefProperties, at, problems);
102
+ const kind = value.kind;
103
+ const id = value.id;
104
+ const label = value.label;
105
+ let shapeValid = true;
106
+ if (!isRefKind(kind)) {
107
+ problems.push(`${at}.kind is not a ref kind`);
108
+ shapeValid = false;
44
109
  }
45
- if (!refs.has(value)) {
46
- const problem = refs.check(value);
47
- if (problem !== (void 0)) {
48
- problems.push(`${at} ${problem}`);
49
- }
110
+ if (!isId(id)) {
111
+ problems.push(`${at}.id is not a valid AMP id`);
112
+ shapeValid = false;
113
+ }
114
+ if (label !== (void 0) && typeof (label) !== "string") {
115
+ problems.push(`${at}.label must be a string`);
116
+ shapeValid = false;
50
117
  }
118
+ if (!shapeValid) {
119
+ return (void 0);
120
+ }
121
+ const ref = { kind: kind, id: id };
122
+ if (label !== (void 0)) {
123
+ ref.label = label;
124
+ }
125
+ const problem = refs.check(ref);
126
+ if (problem !== (void 0)) {
127
+ problems.push(`${at} ${problem}`);
128
+ }
129
+ return ref;
51
130
  };
52
- const checkSlot = (value, refs, at, problems) => {
53
- if (!isRecord(value)) {
131
+ /**
132
+ * Validate a slot and return a fresh copy with only the schema fields.
133
+ */
134
+ const readSlot = (value, refs, at, problems) => {
135
+ if (!isPlainRecord(value)) {
54
136
  problems.push(`${at} must be an object`);
55
- return;
137
+ return (void 0);
56
138
  }
57
- checkRef(value.target, refs, `${at}.target`, problems);
58
- if (typeof (value.role) !== "string" || !SlotRoles.includes(value.role)) {
139
+ const problemCount = problems.length;
140
+ reportUnknownProperties(value, SlotProperties, at, problems);
141
+ const target = readRef(value.target, refs, `${at}.target`, problems);
142
+ const role = value.role;
143
+ if (typeof (role) !== "string" || !SlotRoles.includes(role)) {
59
144
  problems.push(`${at}.role is not a slot role`);
60
145
  }
146
+ const tier = value.tier;
147
+ if (tier !== (void 0) && (typeof (tier) !== "string" || !Tiers.includes(tier))) {
148
+ problems.push(`${at}.tier is not a tier`);
149
+ }
61
150
  const salience = value.salience;
62
- if (typeof (salience) !== "number" || salience < 0 || salience > 1) {
151
+ if (typeof (salience) !== "number" || !Number.isFinite(salience) || salience < 0 || salience > 1) {
63
152
  problems.push(`${at}.salience must be in [0,1]`);
64
153
  }
65
- if (typeof (value.why) !== "string" || value.why.trim().length === 0) {
154
+ const voi = value.voi;
155
+ if (voi !== (void 0) && (typeof (voi) !== "number" || !Number.isFinite(voi) || voi < 0 || voi > 1)) {
156
+ problems.push(`${at}.voi must be in [0,1]`);
157
+ }
158
+ const cost = readBudget(value.cost, `${at}.cost`, problems);
159
+ const budget = value.budget === (void 0) ? (void 0) : readBudget(value.budget, `${at}.budget`, problems);
160
+ const why = value.why;
161
+ if (typeof (why) !== "string" || why.trim().length === 0) {
66
162
  problems.push(`${at}.why is empty`);
67
163
  }
68
- checkBudget(value.cost, `${at}.cost`, problems);
69
- if (typeof (value.state) !== "string" || !SlotStates.includes(value.state)) {
164
+ const ttlTurns = value.ttl_turns;
165
+ if (ttlTurns !== (void 0) && (typeof (ttlTurns) !== "number" || !Number.isSafeInteger(ttlTurns) || ttlTurns < 0)) {
166
+ problems.push(`${at}.ttl_turns must be a non-negative integer`);
167
+ }
168
+ const state = value.state;
169
+ if (typeof (state) !== "string" || !SlotStates.includes(state)) {
70
170
  problems.push(`${at}.state is not a slot state`);
71
171
  }
72
- if (value.tier !== (void 0) && (typeof (value.tier) !== "string" || !Tiers.includes(value.tier))) {
73
- problems.push(`${at}.tier is not a tier`);
172
+ if (problems.length !== problemCount || target === (void 0) || cost === (void 0)) {
173
+ return (void 0);
74
174
  }
75
- const voi = value.voi;
76
- if (voi !== (void 0) && (typeof (voi) !== "number" || voi < 0 || voi > 1)) {
77
- problems.push(`${at}.voi must be in [0,1]`);
175
+ const slot = {
176
+ target,
177
+ role: role,
178
+ salience: salience,
179
+ cost,
180
+ why: why,
181
+ state: state,
182
+ };
183
+ if (tier !== (void 0)) {
184
+ slot.tier = tier;
78
185
  }
79
- if (value.budget !== (void 0)) {
80
- checkBudget(value.budget, `${at}.budget`, problems);
186
+ if (voi !== (void 0)) {
187
+ slot.voi = voi;
81
188
  }
82
- const ttlTurns = value.ttl_turns;
83
- if (ttlTurns !== (void 0) && (typeof (ttlTurns) !== "number" || !Number.isInteger(ttlTurns) || ttlTurns < 0)) {
84
- problems.push(`${at}.ttl_turns must be a non-negative integer`);
189
+ if (budget !== (void 0)) {
190
+ slot.budget = budget;
191
+ }
192
+ if (ttlTurns !== (void 0)) {
193
+ slot.ttl_turns = ttlTurns;
85
194
  }
195
+ return slot;
86
196
  };
87
- const checkIgnored = (value, refs, at, problems) => {
88
- if (!isRecord(value)) {
197
+ /**
198
+ * Validate a deliberate exclusion and return a fresh copy.
199
+ */
200
+ const readIgnored = (value, refs, at, problems) => {
201
+ if (!isPlainRecord(value)) {
89
202
  problems.push(`${at} must be an object`);
90
- return;
203
+ return (void 0);
91
204
  }
92
- checkRef(value.target, refs, `${at}.target`, problems);
93
- if (typeof (value.reason) !== "string" || !IgnoredReasons.includes(value.reason)) {
205
+ const problemCount = problems.length;
206
+ reportUnknownProperties(value, IgnoredProperties, at, problems);
207
+ const target = readRef(value.target, refs, `${at}.target`, problems);
208
+ const reason = value.reason;
209
+ if (typeof (reason) !== "string" || !IgnoredReasons.includes(reason)) {
94
210
  problems.push(`${at}.reason is not an ignored reason`);
95
211
  }
96
- if (typeof (value.revisit_if) !== "string" || value.revisit_if.trim().length === 0) {
212
+ const revisitIf = value.revisit_if;
213
+ if (typeof (revisitIf) !== "string" || revisitIf.trim().length === 0) {
97
214
  problems.push(`${at}.revisit_if is empty`);
98
215
  }
216
+ if (problems.length !== problemCount || target === (void 0)) {
217
+ return (void 0);
218
+ }
219
+ return { target, reason: reason, revisit_if: revisitIf };
99
220
  };
100
- const checkImpasse = (value, at, problems) => {
101
- if (!isRecord(value)) {
221
+ /**
222
+ * Validate an impasse marker and return a fresh copy.
223
+ */
224
+ const readImpasse = (value, at, problems) => {
225
+ if (!isPlainRecord(value)) {
102
226
  problems.push(`${at} must be an object`);
103
- return;
227
+ return (void 0);
104
228
  }
105
- if (typeof (value.state) !== "string" || !ImpasseStates.includes(value.state)) {
229
+ const problemCount = problems.length;
230
+ reportUnknownProperties(value, ImpasseProperties, at, problems);
231
+ const state = value.state;
232
+ if (typeof (state) !== "string" || !ImpasseStates.includes(state)) {
106
233
  problems.push(`${at}.state is not an impasse state`);
107
234
  }
108
- if (value.detail !== (void 0) && typeof (value.detail) !== "string") {
235
+ const detail = value.detail;
236
+ if (detail !== (void 0) && typeof (detail) !== "string") {
109
237
  problems.push(`${at}.detail must be a string`);
110
238
  }
239
+ if (problems.length !== problemCount) {
240
+ return (void 0);
241
+ }
242
+ const impasse = { state: state };
243
+ if (detail !== (void 0)) {
244
+ impasse.detail = detail;
245
+ }
246
+ return impasse;
111
247
  };
112
248
  /**
113
249
  * Validate a draft and return the only frame it permits.
114
250
  *
115
251
  * @throws BoundaryRejection `invalid_frame` with every problem found.
116
252
  */
117
- export const frameFrom = (draft, refs, options = {}) => {
253
+ const buildFrame = (draft, refs, options = {}) => {
254
+ if (!isPlainRecord(draft)) {
255
+ throw new BoundaryRejection("invalid_frame", ["draft must be an object"]);
256
+ }
257
+ if (!isRefTable(refs)) {
258
+ throw new BoundaryRejection("invalid_frame", ["refs must be a RefTable"]);
259
+ }
260
+ if (!isRecord(options)) {
261
+ throw new BoundaryRejection("invalid_frame", ["options must be an object"]);
262
+ }
118
263
  const problems = [];
119
- if (!isId(draft.id)) {
264
+ const source = draft;
265
+ const optionRecord = options;
266
+ reportUnknownProperties(source, FrameProperties, "", problems);
267
+ const id = source.id;
268
+ if (!isId(id)) {
120
269
  problems.push("id is not a valid AMP id");
121
270
  }
122
- if (!isId(draft.agent)) {
271
+ const agent = source.agent;
272
+ if (!isId(agent)) {
123
273
  problems.push("agent is not a valid AMP id");
124
274
  }
125
- if (!Number.isSafeInteger(draft.cycle) || draft.cycle < 0) {
275
+ const cycle = source.cycle;
276
+ if (typeof (cycle) !== "number" || !Number.isSafeInteger(cycle) || cycle < 0) {
126
277
  problems.push("cycle must be a non-negative integer");
127
278
  }
128
- if (!FrameModes.includes(draft.mode)) {
279
+ const mode = source.mode;
280
+ if (typeof (mode) !== "string" || !FrameModes.includes(mode)) {
129
281
  problems.push("mode is not a frame mode");
130
282
  }
131
- const ts = draft.ts ?? (options.now ? options.now() : new Date().toISOString());
132
- if (typeof (ts) !== "string" || Number.isNaN(Date.parse(ts))) {
133
- problems.push("ts is not a date-time");
283
+ const clock = optionRecord.now;
284
+ let ts;
285
+ if (Object.hasOwn(source, "ts")) {
286
+ ts = source.ts;
287
+ if (typeof (ts) !== "string" || !isDateTime(ts)) {
288
+ problems.push("ts is not a date-time");
289
+ }
134
290
  }
135
- const requestedMaxSlots = options.maxSlots ?? SchemaMaxSlots;
136
- if (!Number.isInteger(requestedMaxSlots) || requestedMaxSlots < 0 || requestedMaxSlots > SchemaMaxSlots) {
137
- problems.push(`maxSlots must be an integer in [0,${SchemaMaxSlots}]`);
291
+ else if (clock === (void 0)) {
292
+ ts = new Date().toISOString();
293
+ if (typeof (ts) !== "string" || !isDateTime(ts)) {
294
+ problems.push("ts is not a date-time");
295
+ }
296
+ }
297
+ else if (typeof (clock) !== "function") {
298
+ ts = (void 0);
299
+ problems.push("now must be a function");
300
+ }
301
+ else {
302
+ try {
303
+ ts = clock();
304
+ }
305
+ catch {
306
+ ts = (void 0);
307
+ }
308
+ if (typeof (ts) !== "string" || !isDateTime(ts)) {
309
+ problems.push("ts is not a date-time");
310
+ }
138
311
  }
139
- const maxSlots = Math.min(Math.max(0, requestedMaxSlots), SchemaMaxSlots);
140
- const requestedMaxIgnored = options.maxIgnored ?? DefaultMaxIgnored;
141
- if (!Number.isInteger(requestedMaxIgnored) || requestedMaxIgnored < 0) {
142
- problems.push("maxIgnored must be a non-negative integer");
312
+ const requestedMaxSlots = optionRecord.maxSlots === (void 0) ? SchemaMaxSlots : optionRecord.maxSlots;
313
+ const maxSlotsValid = typeof (requestedMaxSlots) === "number" && Number.isInteger(requestedMaxSlots) && requestedMaxSlots >= 0 && requestedMaxSlots <= SchemaMaxSlots;
314
+ if (!maxSlotsValid) {
315
+ problems.push(`maxSlots must be an integer in [0,${SchemaMaxSlots}]`);
143
316
  }
144
- const maxIgnored = Math.max(0, requestedMaxIgnored);
145
- if (!Array.isArray(draft.slots)) {
317
+ const maxSlots = maxSlotsValid ? requestedMaxSlots : SchemaMaxSlots;
318
+ const requestedMaxIgnored = optionRecord.maxIgnored === (void 0) ? DefaultMaxIgnored : optionRecord.maxIgnored;
319
+ const maxIgnoredValid = typeof (requestedMaxIgnored) === "number" &&
320
+ Number.isInteger(requestedMaxIgnored) &&
321
+ requestedMaxIgnored >= 0 &&
322
+ requestedMaxIgnored <= DefaultMaxIgnored;
323
+ if (!maxIgnoredValid) {
324
+ problems.push(`maxIgnored must be an integer in [0,${DefaultMaxIgnored}]`);
325
+ }
326
+ const maxIgnored = maxIgnoredValid ? requestedMaxIgnored : DefaultMaxIgnored;
327
+ const rebuiltSlots = [];
328
+ const declaredSlots = source.slots;
329
+ if (!Array.isArray(declaredSlots)) {
146
330
  problems.push("slots must be an array");
147
331
  }
148
332
  else {
149
- if (draft.slots.length > maxSlots) {
150
- problems.push(`slots has ${draft.slots.length} entries, max is ${maxSlots}`);
333
+ if (declaredSlots.length > maxSlots) {
334
+ problems.push(`slots has ${declaredSlots.length} entries, max is ${maxSlots}`);
335
+ }
336
+ for (let index = 0; index < declaredSlots.length; index += 1) {
337
+ const rebuilt = readSlot(declaredSlots[index], refs, `slots[${index}]`, problems);
338
+ if (rebuilt !== (void 0)) {
339
+ rebuiltSlots.push(rebuilt);
340
+ }
151
341
  }
152
- draft.slots.forEach((slot, index) => checkSlot(slot, refs, `slots[${index}]`, problems));
153
342
  }
154
- const declaredIgnored = draft.ignored;
155
- const ignored = Array.isArray(declaredIgnored) ? declaredIgnored : [];
156
- if (declaredIgnored !== (void 0) && !Array.isArray(declaredIgnored)) {
157
- problems.push("ignored must be an array");
343
+ const rebuiltIgnored = [];
344
+ const declaredIgnored = source.ignored;
345
+ if (declaredIgnored !== (void 0)) {
346
+ if (!Array.isArray(declaredIgnored)) {
347
+ problems.push("ignored must be an array");
348
+ }
349
+ else {
350
+ for (let index = 0; index < declaredIgnored.length; index += 1) {
351
+ const rebuilt = readIgnored(declaredIgnored[index], refs, `ignored[${index}]`, problems);
352
+ if (rebuilt !== (void 0)) {
353
+ rebuiltIgnored.push(rebuilt);
354
+ }
355
+ }
356
+ }
158
357
  }
159
- ignored.forEach((item, index) => checkIgnored(item, refs, `ignored[${index}]`, problems));
160
- const budgetValue = draft.budget;
161
- if (!isRecord(budgetValue)) {
358
+ let frameBudget;
359
+ const declaredBudget = source.budget;
360
+ if (!isPlainRecord(declaredBudget)) {
162
361
  problems.push("budget must be an object");
163
362
  }
164
363
  else {
165
- const allocated = budgetValue.allocated;
166
- const spent = budgetValue.spent;
167
- checkBudget(allocated, "budget.allocated", problems);
168
- checkBudget(spent, "budget.spent", problems);
169
- if (isRecord(allocated) && isRecord(spent)) {
364
+ reportUnknownProperties(declaredBudget, FrameBudgetProperties, "budget", problems);
365
+ const allocated = readBudget(declaredBudget.allocated, "budget.allocated", problems);
366
+ const spent = readBudget(declaredBudget.spent, "budget.spent", problems);
367
+ if (allocated !== (void 0) && spent !== (void 0)) {
170
368
  if (Object.keys(allocated).length === 0) {
171
369
  problems.push("budget.allocated must set at least one dimension");
172
370
  }
173
- for (let dimensionIndex = 0; dimensionIndex < BudgetDimensions.length; dimensionIndex += 1) {
174
- const key = BudgetDimensions[dimensionIndex];
371
+ const spentKeys = Object.keys(spent);
372
+ for (let index = 0; index < spentKeys.length; index += 1) {
373
+ const key = spentKeys[index];
374
+ if (!Object.hasOwn(allocated, key)) {
375
+ problems.push(`budget.spent.${key} is not declared in budget.allocated`);
376
+ continue;
377
+ }
175
378
  const limit = allocated[key];
176
379
  const used = spent[key];
177
380
  if (typeof (limit) === "number" && typeof (used) === "number" && used > limit) {
178
381
  problems.push(`budget.spent.${key} exceeds budget.allocated.${key}`);
179
382
  }
180
383
  }
384
+ frameBudget = { allocated, spent };
181
385
  }
182
386
  }
183
- if (draft.parent !== (void 0)) {
184
- checkRef(draft.parent, refs, "parent", problems);
387
+ let parent;
388
+ const declaredParent = source.parent;
389
+ if (declaredParent !== (void 0)) {
390
+ parent = readRef(declaredParent, refs, "parent", problems);
185
391
  }
186
- if (draft.goal !== (void 0)) {
187
- checkRef(draft.goal, refs, "goal", problems);
392
+ let goal;
393
+ const declaredGoal = source.goal;
394
+ if (declaredGoal !== (void 0)) {
395
+ goal = readRef(declaredGoal, refs, "goal", problems);
188
396
  }
189
- if (draft.open_questions !== (void 0)) {
190
- if (!Array.isArray(draft.open_questions)) {
397
+ const rebuiltQuestions = [];
398
+ const declaredQuestions = source.open_questions;
399
+ if (declaredQuestions !== (void 0)) {
400
+ if (!Array.isArray(declaredQuestions)) {
191
401
  problems.push("open_questions must be an array");
192
402
  }
193
403
  else {
194
- draft.open_questions.forEach((ref, index) => checkRef(ref, refs, `open_questions[${index}]`, problems));
404
+ for (let index = 0; index < declaredQuestions.length; index += 1) {
405
+ const rebuilt = readRef(declaredQuestions[index], refs, `open_questions[${index}]`, problems);
406
+ if (rebuilt !== (void 0)) {
407
+ rebuiltQuestions.push(rebuilt);
408
+ }
409
+ }
195
410
  }
196
411
  }
197
- if (draft.impasse !== (void 0)) {
198
- checkImpasse(draft.impasse, "impasse", problems);
412
+ let impasse;
413
+ const declaredImpasse = source.impasse;
414
+ if (declaredImpasse !== (void 0)) {
415
+ impasse = readImpasse(declaredImpasse, "impasse", problems);
199
416
  }
200
- if (draft.note !== (void 0) && typeof (draft.note) !== "string") {
417
+ const declaredNote = source.note;
418
+ if (declaredNote !== (void 0) && typeof (declaredNote) !== "string") {
201
419
  problems.push("note must be a string");
202
420
  }
203
421
  if (problems.length > 0) {
204
422
  throw new BoundaryRejection("invalid_frame", problems);
205
423
  }
206
- const visible = ignored.slice(0, maxIgnored);
207
- const deferred = ignored.slice(maxIgnored);
424
+ const visible = rebuiltIgnored.slice(0, maxIgnored);
425
+ const deferred = rebuiltIgnored.slice(maxIgnored);
208
426
  const body = {
209
427
  amp: "0.1",
210
428
  kind: "frame",
211
- id: draft.id,
212
- agent: draft.agent,
213
- cycle: draft.cycle,
214
- ts,
215
- mode: draft.mode,
216
- slots: [...draft.slots],
217
- budget: { allocated: { ...draft.budget.allocated }, spent: { ...draft.budget.spent } },
429
+ id: id,
430
+ agent: agent,
431
+ cycle: cycle,
432
+ ts: ts,
433
+ mode: mode,
434
+ slots: rebuiltSlots,
435
+ budget: frameBudget,
218
436
  };
219
- if (draft.parent !== (void 0)) {
220
- body.parent = draft.parent;
437
+ if (parent !== (void 0)) {
438
+ body.parent = parent;
221
439
  }
222
- if (draft.goal !== (void 0)) {
223
- body.goal = draft.goal;
440
+ if (goal !== (void 0)) {
441
+ body.goal = goal;
224
442
  }
225
443
  if (visible.length > 0) {
226
444
  body.ignored = visible;
227
445
  }
228
- if (draft.open_questions !== (void 0)) {
229
- body.open_questions = [...draft.open_questions];
446
+ if (declaredQuestions !== (void 0)) {
447
+ body.open_questions = rebuiltQuestions;
230
448
  }
231
- if (draft.impasse !== (void 0)) {
232
- body.impasse = draft.impasse;
449
+ if (impasse !== (void 0)) {
450
+ body.impasse = impasse;
233
451
  }
234
- if (draft.note !== (void 0)) {
235
- body.note = draft.note;
452
+ if (declaredNote !== (void 0)) {
453
+ body.note = declaredNote;
236
454
  }
237
455
  const frame = { ...body, digest: digestOf(body) };
456
+ deepFreezeJson(frame);
457
+ deepFreezeJson(deferred);
238
458
  return { frame, deferred };
239
459
  };
460
+ /**
461
+ * Public entry point. A revoked `Proxy`, a throwing getter or an exotic
462
+ * `refs` object can still throw while the draft is inspected; the boundary
463
+ * contract is that callers only ever see `BoundaryRejection`.
464
+ */
465
+ export const frameFrom = (draft, refs, options = {}) => {
466
+ try {
467
+ return buildFrame(draft, refs, options);
468
+ }
469
+ catch (error) {
470
+ if (error instanceof BoundaryRejection) {
471
+ throw error;
472
+ }
473
+ const reason = error instanceof Error ? error.message : typeof (error);
474
+ throw new BoundaryRejection("invalid_frame", [`draft could not be inspected: ${reason}`]);
475
+ }
476
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Runtime mirror of `RefKind` (`src/types/common.ts` / `common.schema.json`).
3
+ *
4
+ * TypeScript unions disappear at runtime, so a boundary that accepts JSON or
5
+ * JavaScript callers cannot rely on the compiler to keep `kind` inside the
6
+ * closed set. This module is the single runtime list both `RefTable` and
7
+ * `frameFrom` consult.
8
+ */
9
+ import type { RefKind } from "../types/common.js";
10
+ export declare const RefKinds: ReadonlySet<RefKind>;
11
+ export declare const isRefKind: (value: unknown) => value is RefKind;
@@ -0,0 +1,33 @@
1
+ export const RefKinds = new Set([
2
+ "entity",
3
+ "concept",
4
+ "process",
5
+ "thread",
6
+ "question",
7
+ "hypothesis",
8
+ "claim",
9
+ "evidence",
10
+ "goal",
11
+ "plan",
12
+ "task",
13
+ "tool",
14
+ "memory",
15
+ "other",
16
+ "human",
17
+ "agent",
18
+ "event",
19
+ "handle",
20
+ "frame",
21
+ "self",
22
+ "unknown",
23
+ "common-ground",
24
+ "capability",
25
+ "receipt",
26
+ "org",
27
+ "role",
28
+ "duty",
29
+ "assignment",
30
+ "interaction",
31
+ "result-contract",
32
+ ]);
33
+ export const isRefKind = (value) => typeof (value) === "string" && RefKinds.has(value);