@opengeni/contracts 5.5.0 → 5.5.2-canary.40656248492001

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 (543) hide show
  1. package/dist/agent-authored-durable-text.d.ts +9 -9
  2. package/dist/agent-config.d.ts +148 -37
  3. package/dist/api-key-presets.d.ts +19 -0
  4. package/dist/app-action-catalog-types.d.ts +32 -0
  5. package/dist/app-action-catalog.gen.d.ts +2 -0
  6. package/dist/app-actions.d.ts +91 -0
  7. package/dist/app-actions.js +10130 -0
  8. package/dist/app-actions.js.map +1 -0
  9. package/dist/app-shot.d.ts +55 -0
  10. package/dist/artifact-catalog.d.ts +33 -0
  11. package/dist/artifacts.d.ts +166 -0
  12. package/dist/atlassian-native-retirement.d.ts +16 -0
  13. package/dist/atlassian-native-retirement.js +30 -0
  14. package/dist/atlassian-native-retirement.js.map +1 -0
  15. package/dist/atlassian.js +48 -23
  16. package/dist/automation-templates.d.ts +434 -0
  17. package/dist/automation-templates.js +31 -0
  18. package/dist/automation-templates.js.map +1 -0
  19. package/dist/billing-subscriptions.d.ts +61 -0
  20. package/dist/bots.d.ts +583 -0
  21. package/dist/bundled-skills.d.ts +58 -2
  22. package/dist/canonical-human-identities.js +3 -1
  23. package/dist/child-lifecycle-notice-protocol.d.ts +45 -0
  24. package/dist/chunk-2QKIEAGY.js +396 -0
  25. package/dist/chunk-2QKIEAGY.js.map +1 -0
  26. package/dist/chunk-2WOWEWXV.js +426 -0
  27. package/dist/chunk-2WOWEWXV.js.map +1 -0
  28. package/dist/chunk-2ZIHHL72.js +153 -0
  29. package/dist/chunk-2ZIHHL72.js.map +1 -0
  30. package/dist/chunk-32U6NKQQ.js +389 -0
  31. package/dist/chunk-32U6NKQQ.js.map +1 -0
  32. package/dist/chunk-4YDDHSO2.js +799 -0
  33. package/dist/chunk-4YDDHSO2.js.map +1 -0
  34. package/dist/chunk-56SNIMDO.js +9 -0
  35. package/dist/chunk-56SNIMDO.js.map +1 -0
  36. package/dist/chunk-5RWB6QVL.js +101 -0
  37. package/dist/chunk-5RWB6QVL.js.map +1 -0
  38. package/dist/chunk-5UGUOT3L.js +243 -0
  39. package/dist/chunk-5UGUOT3L.js.map +1 -0
  40. package/dist/chunk-6LAT33BH.js +130 -0
  41. package/dist/chunk-6LAT33BH.js.map +1 -0
  42. package/dist/chunk-7272KVWZ.js +60 -0
  43. package/dist/chunk-7272KVWZ.js.map +1 -0
  44. package/dist/chunk-72QC2GTL.js +36 -0
  45. package/dist/chunk-72QC2GTL.js.map +1 -0
  46. package/dist/chunk-7EQGGZBY.js +105 -0
  47. package/dist/chunk-7EQGGZBY.js.map +1 -0
  48. package/dist/chunk-A3LXWVYU.js +382 -0
  49. package/dist/chunk-A3LXWVYU.js.map +1 -0
  50. package/dist/chunk-AQYDZUJV.js +34 -0
  51. package/dist/chunk-AQYDZUJV.js.map +1 -0
  52. package/dist/chunk-BHCEVVUP.js +93 -0
  53. package/dist/chunk-BHCEVVUP.js.map +1 -0
  54. package/dist/chunk-BMUTAZX5.js +486 -0
  55. package/dist/chunk-BMUTAZX5.js.map +1 -0
  56. package/dist/chunk-DGG6IBBK.js +150 -0
  57. package/dist/chunk-DGG6IBBK.js.map +1 -0
  58. package/dist/{chunk-YBW5JSA3.js → chunk-FBCTUMHI.js} +123 -102
  59. package/dist/chunk-FBCTUMHI.js.map +1 -0
  60. package/dist/chunk-G2KJTFIC.js +97 -0
  61. package/dist/chunk-G2KJTFIC.js.map +1 -0
  62. package/dist/chunk-G4RKARXZ.js +1167 -0
  63. package/dist/chunk-G4RKARXZ.js.map +1 -0
  64. package/dist/chunk-H6UJJIUM.js +350 -0
  65. package/dist/chunk-H6UJJIUM.js.map +1 -0
  66. package/dist/chunk-JOTHDW4H.js +18 -0
  67. package/dist/chunk-JOTHDW4H.js.map +1 -0
  68. package/dist/chunk-L4GUEP7K.js +56480 -0
  69. package/dist/chunk-L4GUEP7K.js.map +1 -0
  70. package/dist/{chunk-SIOU2K4U.js → chunk-LJH2EYGT.js} +23 -23
  71. package/dist/chunk-MTJKSIGA.js +161 -0
  72. package/dist/chunk-MTJKSIGA.js.map +1 -0
  73. package/dist/chunk-MYHMB6GZ.js +202 -0
  74. package/dist/chunk-MYHMB6GZ.js.map +1 -0
  75. package/dist/chunk-PI5VIKJY.js +660 -0
  76. package/dist/chunk-PI5VIKJY.js.map +1 -0
  77. package/dist/{chunk-RIY7GYQS.js → chunk-PTSROVDG.js} +2 -2
  78. package/dist/chunk-PUIUXIOL.js +189 -0
  79. package/dist/chunk-PUIUXIOL.js.map +1 -0
  80. package/dist/chunk-R6VXJIMB.js +19 -0
  81. package/dist/chunk-R6VXJIMB.js.map +1 -0
  82. package/dist/chunk-RLJUNVAM.js +15 -0
  83. package/dist/chunk-RLJUNVAM.js.map +1 -0
  84. package/dist/chunk-RR6APCBK.js +213 -0
  85. package/dist/chunk-RR6APCBK.js.map +1 -0
  86. package/dist/{chunk-TXTQIYCV.js → chunk-RUQ4I6DO.js} +59 -13
  87. package/dist/chunk-RUQ4I6DO.js.map +1 -0
  88. package/dist/{chunk-WYBDERIY.js → chunk-RWEEUDHD.js} +53 -42
  89. package/dist/chunk-RWEEUDHD.js.map +1 -0
  90. package/dist/chunk-S7MSQQL6.js +158 -0
  91. package/dist/chunk-S7MSQQL6.js.map +1 -0
  92. package/dist/{chunk-5Q54VCCH.js → chunk-SHO4YO4B.js} +20 -36
  93. package/dist/chunk-SHO4YO4B.js.map +1 -0
  94. package/dist/{chunk-HHZSZYYF.js → chunk-T3HSWMA5.js} +20 -4
  95. package/dist/chunk-T3HSWMA5.js.map +1 -0
  96. package/dist/{chunk-YRKRZ6OF.js → chunk-TOOJIBJC.js} +2 -2
  97. package/dist/chunk-UCUOTRS6.js +431 -0
  98. package/dist/chunk-UCUOTRS6.js.map +1 -0
  99. package/dist/chunk-UH4K7GP7.js +424 -0
  100. package/dist/chunk-UH4K7GP7.js.map +1 -0
  101. package/dist/chunk-UIZWGPHV.js +120 -0
  102. package/dist/chunk-UIZWGPHV.js.map +1 -0
  103. package/dist/chunk-VLUKBV6Y.js +1170 -0
  104. package/dist/chunk-VLUKBV6Y.js.map +1 -0
  105. package/dist/chunk-W2QQ5Y6K.js +55 -0
  106. package/dist/chunk-W2QQ5Y6K.js.map +1 -0
  107. package/dist/{chunk-Y3KNXVTD.js → chunk-W3NBPR4E.js} +131 -31
  108. package/dist/chunk-W3NBPR4E.js.map +1 -0
  109. package/dist/{chunk-NRMCVHAU.js → chunk-WMGO4HJU.js} +11 -9
  110. package/dist/chunk-WMGO4HJU.js.map +1 -0
  111. package/dist/{chunk-MYBZRDTY.js → chunk-WQI7VNN4.js} +19 -9
  112. package/dist/chunk-WQI7VNN4.js.map +1 -0
  113. package/dist/{chunk-PX3VCKAU.js → chunk-WVCFSOUZ.js} +1 -1
  114. package/dist/{chunk-PX3VCKAU.js.map → chunk-WVCFSOUZ.js.map} +1 -1
  115. package/dist/chunk-XB6GQLBH.js +76 -0
  116. package/dist/chunk-XB6GQLBH.js.map +1 -0
  117. package/dist/{chunk-D2HKF2EF.js → chunk-XP5M3IKT.js} +2 -2
  118. package/dist/{chunk-O77VSFYZ.js → chunk-ZMPU5BWE.js} +12 -2
  119. package/dist/chunk-ZMPU5BWE.js.map +1 -0
  120. package/dist/{chunk-3SIZGL3O.js → chunk-ZYVEJFNU.js} +22 -18
  121. package/dist/chunk-ZYVEJFNU.js.map +1 -0
  122. package/dist/claude-provider-account-authority.d.ts +18 -0
  123. package/dist/claude-subscription-oauth.d.ts +25 -0
  124. package/dist/claude-subscription-usage.d.ts +95 -1
  125. package/dist/client-error-report.d.ts +154 -8
  126. package/dist/client-error-report.js +157 -2
  127. package/dist/client-error-report.js.map +1 -1
  128. package/dist/code-search.d.ts +1 -1
  129. package/dist/code-search.js.map +1 -1
  130. package/dist/codex-provider-account-authority.js +23 -12
  131. package/dist/codex-provider-account-authority.js.map +1 -1
  132. package/dist/company-profile.d.ts +144 -0
  133. package/dist/connect.d.ts +38 -0
  134. package/dist/connect.js +244 -164
  135. package/dist/connect.js.map +1 -1
  136. package/dist/connection-account-label.d.ts +2 -0
  137. package/dist/connection-account-label.js +34 -0
  138. package/dist/connection-account-label.js.map +1 -0
  139. package/dist/connection-authority.js +49 -24
  140. package/dist/connector-attachments.js +3 -1
  141. package/dist/connector-destinations.js +3 -1
  142. package/dist/connector-tool-permissions.d.ts +68 -4
  143. package/dist/credential-profiles.d.ts +166 -0
  144. package/dist/cua-desktop-tools.d.ts +19 -0
  145. package/dist/define-schema.d.ts +8 -0
  146. package/dist/desktop-app.d.ts +28 -0
  147. package/dist/direct-model-provider.d.ts +38 -0
  148. package/dist/document-artifact-commands.js +2 -2
  149. package/dist/document-artifact-query.js +2 -2
  150. package/dist/editable-artifact-binary.d.ts +7 -0
  151. package/dist/editable-artifact-causal-frontier.js +2 -2
  152. package/dist/editable-artifact-codec-registry.js +7 -7
  153. package/dist/editable-artifact-committed-transaction.js +4 -2
  154. package/dist/editable-artifact-live.js +8 -8
  155. package/dist/editable-artifact-serialized-commit.js +9 -9
  156. package/dist/editable-artifact-versions.d.ts +7 -1
  157. package/dist/editable-artifact-versions.js +1 -1
  158. package/dist/editable-artifacts.js +49 -43
  159. package/dist/event-preview.d.ts +22 -0
  160. package/dist/event-triggers.d.ts +1253 -0
  161. package/dist/event-triggers.js +148 -0
  162. package/dist/event-triggers.js.map +1 -0
  163. package/dist/external-identities.d.ts +34 -0
  164. package/dist/external-identities.js +4 -2
  165. package/dist/feedback.d.ts +181 -0
  166. package/dist/file-access.d.ts +23 -0
  167. package/dist/first-party-tool-authorization.d.ts +852 -0
  168. package/dist/github-repository-contracts.js +64 -43
  169. package/dist/github-repository-contracts.js.map +1 -1
  170. package/dist/google-drive-native-retirement.d.ts +12 -0
  171. package/dist/google-drive-native-retirement.js +20 -0
  172. package/dist/google-drive-native-retirement.js.map +1 -0
  173. package/dist/google-drive.d.ts +1 -1
  174. package/dist/google-drive.js +323 -239
  175. package/dist/google-drive.js.map +1 -1
  176. package/dist/host-mcp-bindings.js +250 -198
  177. package/dist/host-mcp-bindings.js.map +1 -1
  178. package/dist/index.d.ts +29072 -20593
  179. package/dist/index.js +2432 -366
  180. package/dist/inference-residency.d.ts +22 -0
  181. package/dist/insights-usage.d.ts +948 -0
  182. package/dist/insights-usage.js +608 -0
  183. package/dist/insights-usage.js.map +1 -0
  184. package/dist/integration-capability-id.d.ts +8 -0
  185. package/dist/interaction-action-deadline.d.ts +48 -0
  186. package/dist/interaction-driver-diagnostic.d.ts +28 -0
  187. package/dist/interaction.d.ts +2126 -881
  188. package/dist/knowledge-entries.d.ts +38 -0
  189. package/dist/knowledge-preparation.d.ts +4 -0
  190. package/dist/learning-refusal.d.ts +43 -0
  191. package/dist/learning-refusal.js +49 -0
  192. package/dist/learning-refusal.js.map +1 -0
  193. package/dist/managed-auth-session-sets.d.ts +1 -0
  194. package/dist/managed-auth-session-sets.js +207 -146
  195. package/dist/managed-auth-session-sets.js.map +1 -1
  196. package/dist/managed-sign-in-methods.d.ts +96 -0
  197. package/dist/managed-sign-in-methods.js +157 -35
  198. package/dist/managed-sign-in-methods.js.map +1 -1
  199. package/dist/mcp-structured-content.d.ts +25 -0
  200. package/dist/message-time-zone.d.ts +38 -0
  201. package/dist/message-time-zone.js +19 -0
  202. package/dist/message-time-zone.js.map +1 -0
  203. package/dist/modal-native-proof-v2.d.ts +587 -0
  204. package/dist/modal-native-proof-v2.js +39 -0
  205. package/dist/modal-native-proof-v2.js.map +1 -0
  206. package/dist/model-account-choice.d.ts +237 -0
  207. package/dist/model-account-settings.d.ts +422 -0
  208. package/dist/model-availability.d.ts +15 -0
  209. package/dist/model-connection-access.d.ts +13 -0
  210. package/dist/model-context-inspector.d.ts +8 -0
  211. package/dist/model-display.d.ts +43 -0
  212. package/dist/model-display.js +17 -0
  213. package/dist/model-display.js.map +1 -0
  214. package/dist/model-picker-order.js.map +1 -1
  215. package/dist/model-residency.d.ts +304 -0
  216. package/dist/organization-access.d.ts +416 -0
  217. package/dist/organization-access.js +40 -0
  218. package/dist/organization-access.js.map +1 -0
  219. package/dist/organization-integration-policy.d.ts +18 -0
  220. package/dist/organization-membership-lifecycle.d.ts +66 -0
  221. package/dist/organization-model-usage.d.ts +146 -0
  222. package/dist/organization-model-usage.js +87 -0
  223. package/dist/organization-model-usage.js.map +1 -0
  224. package/dist/organization-recovery.js +3 -1
  225. package/dist/organization-usage.d.ts +12 -0
  226. package/dist/passkey-only-account.d.ts +14 -0
  227. package/dist/passkey-only-account.js +13 -0
  228. package/dist/passkey-only-account.js.map +1 -0
  229. package/dist/permissions.d.ts +19 -0
  230. package/dist/personal-github.js +220 -148
  231. package/dist/personal-github.js.map +1 -1
  232. package/dist/personal-integration-setup.d.ts +81 -0
  233. package/dist/personal-integration-setup.js +42 -0
  234. package/dist/personal-integration-setup.js.map +1 -0
  235. package/dist/prepared-mcp-setup.d.ts +54 -0
  236. package/dist/prepared-mcp-setup.js +13 -0
  237. package/dist/prepared-mcp-setup.js.map +1 -0
  238. package/dist/presentation-artifact-commands.js +2 -2
  239. package/dist/presentation-artifact-query.js +2 -2
  240. package/dist/primitives.d.ts +18 -0
  241. package/dist/product-analytics.d.ts +27 -10
  242. package/dist/product-lifecycle-facts.d.ts +26 -3
  243. package/dist/prompt-cache-diagnostics.d.ts +92 -0
  244. package/dist/recordings.d.ts +1371 -0
  245. package/dist/remember.d.ts +98 -2
  246. package/dist/retained-output.d.ts +4 -2
  247. package/dist/sandbox-file-artifacts.d.ts +19 -2
  248. package/dist/sandbox-provider-command.d.ts +5 -44
  249. package/dist/sandbox-recovery.d.ts +139 -8
  250. package/dist/secret-generator.d.ts +44 -0
  251. package/dist/secret-mask-strings.d.ts +32 -0
  252. package/dist/secret-references.d.ts +90 -0
  253. package/dist/secret-resolution.d.ts +143 -0
  254. package/dist/secret-shape-masking.d.ts +52 -0
  255. package/dist/secret-shape-masking.js +19 -0
  256. package/dist/secret-shape-masking.js.map +1 -0
  257. package/dist/secret-totp.d.ts +41 -0
  258. package/dist/secret-use-approval-question.d.ts +11 -0
  259. package/dist/secret-use-approval-question.js +11 -0
  260. package/dist/secret-use-approval-question.js.map +1 -0
  261. package/dist/secret-use-approvals.d.ts +106 -0
  262. package/dist/secret-value-masking.d.ts +299 -0
  263. package/dist/secret-value-masking.js +62 -0
  264. package/dist/secret-value-masking.js.map +1 -0
  265. package/dist/secret-value.d.ts +19 -0
  266. package/dist/session-history-import.d.ts +444 -8
  267. package/dist/session-history.d.ts +111 -0
  268. package/dist/session-history.js +35 -0
  269. package/dist/session-history.js.map +1 -0
  270. package/dist/session-list-entries.d.ts +8 -0
  271. package/dist/session-list-entries.js +61 -0
  272. package/dist/session-list-entries.js.map +1 -0
  273. package/dist/session-mcp-projections.d.ts +13 -1
  274. package/dist/session-mcp-tool-permissions.d.ts +62 -0
  275. package/dist/session-target.d.ts +18 -0
  276. package/dist/session-titles.d.ts +8 -0
  277. package/dist/session-titles.js +5 -1
  278. package/dist/session-usage-limit-refusal.d.ts +34 -0
  279. package/dist/session-usage-limit-refusal.js +15 -0
  280. package/dist/session-usage-limit-refusal.js.map +1 -0
  281. package/dist/session-usage-limits.d.ts +127 -0
  282. package/dist/session-usage-limits.js +43 -0
  283. package/dist/session-usage-limits.js.map +1 -0
  284. package/dist/site-data.d.ts +286 -0
  285. package/dist/site-operations.d.ts +39 -0
  286. package/dist/site-publishing.d.ts +813 -0
  287. package/dist/site-session-http.d.ts +103 -4
  288. package/dist/site-session-http.js +27 -1
  289. package/dist/site-sql.d.ts +425 -0
  290. package/dist/skills.d.ts +38 -0
  291. package/dist/slack-bot-scopes.d.ts +9 -7
  292. package/dist/slack-bot-scopes.js +6 -3
  293. package/dist/slack-rest-mcp.d.ts +36 -0
  294. package/dist/slack-rest-mcp.js +25 -0
  295. package/dist/slack-rest-mcp.js.map +1 -0
  296. package/dist/spreadsheet-artifact-commands.d.ts +14 -1
  297. package/dist/spreadsheet-artifact-commands.js +9 -2
  298. package/dist/spreadsheet-artifact-query.d.ts +13 -6
  299. package/dist/spreadsheet-artifact-query.js +4 -3
  300. package/dist/subscription-account-actions.d.ts +83 -0
  301. package/dist/subscription-account-pools.d.ts +326 -0
  302. package/dist/subscription-personal-authority-v2.d.ts +28 -0
  303. package/dist/subscription-personal-authority-v2.js +13 -0
  304. package/dist/subscription-personal-authority-v2.js.map +1 -0
  305. package/dist/subscription-plans.d.ts +38 -0
  306. package/dist/subscription-usage-pool.d.ts +89 -0
  307. package/dist/tool-action-review.d.ts +141 -0
  308. package/dist/tool-catalog.d.ts +479 -0
  309. package/dist/tool-policy.d.ts +5 -0
  310. package/dist/tool-review-presentation.d.ts +29 -0
  311. package/dist/tool-review-presentation.js +21 -0
  312. package/dist/tool-review-presentation.js.map +1 -0
  313. package/dist/turn-serving-policy.d.ts +223 -0
  314. package/dist/usage-allowances.d.ts +30 -0
  315. package/dist/usage-allowances.js +5 -1
  316. package/dist/values.d.ts +11 -0
  317. package/dist/values.js +19 -0
  318. package/dist/values.js.map +1 -0
  319. package/dist/vault-provider-wire.d.ts +907 -0
  320. package/dist/vault-provider-wire.js +74 -0
  321. package/dist/vault-provider-wire.js.map +1 -0
  322. package/dist/vaults.d.ts +2185 -0
  323. package/dist/video-generation.d.ts +75 -0
  324. package/dist/video-generation.js +8 -1
  325. package/dist/workspace-control-event.d.ts +18 -0
  326. package/dist/workspace-control-event.js +18 -0
  327. package/dist/workspace-control-event.js.map +1 -0
  328. package/dist/workspace-governance-context.d.ts +18 -0
  329. package/dist/workspace-integration-wire.d.ts +1 -1
  330. package/dist/workspace-integration-wire.js +1 -1
  331. package/dist/workspace-integrations.d.ts +212 -12
  332. package/dist/xai-provider-account-authority.js +3 -1
  333. package/package.json +121 -4
  334. package/src/agent-authored-durable-text.ts +14 -11
  335. package/src/agent-config.ts +382 -203
  336. package/src/agent-instruction-changes.ts +94 -74
  337. package/src/agent-learning.ts +94 -66
  338. package/src/agent-topology.ts +58 -52
  339. package/src/api-key-presets.ts +28 -0
  340. package/src/app-action-catalog-types.ts +32 -0
  341. package/src/app-action-catalog.gen.ts +9905 -0
  342. package/src/app-actions.ts +365 -0
  343. package/src/app-shot.ts +176 -0
  344. package/src/artifact-catalog.ts +81 -46
  345. package/src/artifacts.ts +360 -227
  346. package/src/atlassian-native-retirement.ts +33 -0
  347. package/src/atlassian.ts +136 -108
  348. package/src/automation-templates.ts +201 -0
  349. package/src/billing-subscriptions.ts +48 -0
  350. package/src/bots.ts +238 -0
  351. package/src/bundled-skills.ts +79 -22
  352. package/src/canonical-human-identities.ts +65 -62
  353. package/src/child-lifecycle-notice-protocol.gen.json +1310 -0
  354. package/src/child-lifecycle-notice-protocol.ts +224 -0
  355. package/src/claude-provider-account-authority.ts +12 -0
  356. package/src/claude-subscription-oauth.ts +61 -19
  357. package/src/claude-subscription-usage.ts +64 -35
  358. package/src/client-error-report.ts +344 -9
  359. package/src/code-search.ts +1 -1
  360. package/src/codex-provider-account-authority.ts +22 -16
  361. package/src/company-brain-governed-writes.ts +265 -244
  362. package/src/company-brain.ts +165 -154
  363. package/src/company-profile.ts +362 -297
  364. package/src/connect.ts +222 -173
  365. package/src/connection-account-label.ts +45 -0
  366. package/src/connection-authority.ts +172 -152
  367. package/src/connector-attachments.ts +139 -123
  368. package/src/connector-destinations.ts +48 -43
  369. package/src/connector-tool-permissions.ts +104 -46
  370. package/src/credential-profiles.ts +161 -0
  371. package/src/cua-desktop-tools.gen.json +6722 -0
  372. package/src/cua-desktop-tools.linux.gen.json +6798 -0
  373. package/src/cua-desktop-tools.ts +42 -0
  374. package/src/cua-desktop-tools.windows.gen.json +6739 -0
  375. package/src/define-schema.ts +10 -0
  376. package/src/desktop-app.ts +50 -0
  377. package/src/direct-model-provider.ts +112 -0
  378. package/src/editable-artifact-binary.ts +29 -8
  379. package/src/editable-artifact-committed-transaction.ts +19 -18
  380. package/src/editable-artifact-serialized-commit.ts +8 -2
  381. package/src/editable-artifact-versions.ts +7 -1
  382. package/src/event-preview.ts +53 -3
  383. package/src/event-triggers.ts +891 -0
  384. package/src/external-identities.ts +239 -195
  385. package/src/feedback.ts +125 -30
  386. package/src/file-access.ts +26 -0
  387. package/src/first-party-tool-authorization.ts +383 -0
  388. package/src/github-repository-contracts.ts +78 -64
  389. package/src/google-drive-native-retirement.ts +20 -0
  390. package/src/google-drive.ts +286 -234
  391. package/src/governed-learning-activation.ts +159 -137
  392. package/src/governed-learning-evaluator.ts +141 -133
  393. package/src/host-mcp-bindings.ts +244 -221
  394. package/src/image-generation.ts +105 -95
  395. package/src/index.ts +13928 -9899
  396. package/src/inference-residency.ts +36 -0
  397. package/src/insights-usage.ts +774 -0
  398. package/src/integration-capability-id.ts +16 -0
  399. package/src/interaction-action-deadline.ts +143 -0
  400. package/src/interaction-driver-diagnostic.ts +89 -0
  401. package/src/interaction.ts +3527 -2427
  402. package/src/knowledge-entries.ts +386 -299
  403. package/src/knowledge-preparation.ts +49 -41
  404. package/src/knowledge.ts +242 -213
  405. package/src/learning-refusal.ts +90 -0
  406. package/src/managed-auth-session-sets.ts +180 -133
  407. package/src/managed-sign-in-methods.ts +156 -34
  408. package/src/mcp-oauth.ts +58 -46
  409. package/src/mcp-receipts.ts +199 -194
  410. package/src/mcp-structured-content.ts +81 -0
  411. package/src/memory-slack-delivery.ts +172 -142
  412. package/src/message-time-zone.ts +109 -0
  413. package/src/modal-native-proof-v2.ts +430 -0
  414. package/src/model-account-choice.ts +178 -0
  415. package/src/model-account-settings.ts +210 -0
  416. package/src/model-availability.ts +22 -0
  417. package/src/model-connection-access.ts +62 -14
  418. package/src/model-context-inspector.ts +130 -109
  419. package/src/model-display.ts +221 -0
  420. package/src/model-picker-order.ts +1 -1
  421. package/src/model-residency.ts +535 -0
  422. package/src/organization-access.ts +216 -0
  423. package/src/organization-integration-policy.ts +47 -28
  424. package/src/organization-membership-lifecycle.ts +558 -384
  425. package/src/organization-model-usage.ts +82 -0
  426. package/src/organization-recovery.ts +148 -135
  427. package/src/organization-usage.ts +84 -52
  428. package/src/passkey-only-account.ts +29 -0
  429. package/src/permissions.ts +94 -52
  430. package/src/personal-github.ts +211 -171
  431. package/src/personal-integration-setup.ts +150 -0
  432. package/src/preference-registry.ts +319 -263
  433. package/src/prepared-mcp-setup.ts +190 -0
  434. package/src/primitives.ts +22 -0
  435. package/src/product-analytics.ts +40 -15
  436. package/src/product-lifecycle-facts.ts +50 -20
  437. package/src/prompt-cache-diagnostics.ts +212 -0
  438. package/src/recordings.ts +1153 -0
  439. package/src/remember.ts +184 -172
  440. package/src/retained-output.ts +181 -168
  441. package/src/sandbox-file-artifacts.ts +78 -57
  442. package/src/sandbox-provider-command.ts +55 -72
  443. package/src/sandbox-recovery.ts +163 -77
  444. package/src/scoped-knowledge.ts +62 -43
  445. package/src/secret-generator.ts +156 -0
  446. package/src/secret-mask-strings.ts +175 -0
  447. package/src/secret-references.ts +414 -0
  448. package/src/secret-resolution.ts +322 -0
  449. package/src/secret-shape-masking.ts +573 -0
  450. package/src/secret-totp.ts +188 -0
  451. package/src/secret-use-approval-question.ts +22 -0
  452. package/src/secret-use-approvals.ts +219 -0
  453. package/src/secret-value-masking.ts +1283 -0
  454. package/src/secret-value.ts +22 -0
  455. package/src/session-goal-reports.ts +55 -49
  456. package/src/session-history-import.ts +84 -68
  457. package/src/session-history.ts +197 -0
  458. package/src/session-list-entries.ts +106 -0
  459. package/src/session-mcp-projections.ts +21 -3
  460. package/src/session-mcp-tool-permissions.ts +109 -0
  461. package/src/session-message-search.ts +46 -38
  462. package/src/session-target.ts +58 -0
  463. package/src/session-titles.ts +40 -4
  464. package/src/session-topology-primitives.ts +20 -12
  465. package/src/session-usage-limit-refusal.ts +101 -0
  466. package/src/session-usage-limits.ts +169 -0
  467. package/src/signup-attribution.ts +20 -15
  468. package/src/site-data.ts +337 -0
  469. package/src/site-operations.ts +154 -0
  470. package/src/site-publishing.ts +903 -0
  471. package/src/site-session-http.ts +344 -16
  472. package/src/site-sql.ts +1120 -0
  473. package/src/skill-use.ts +18 -17
  474. package/src/skills.ts +105 -50
  475. package/src/slack-bot-scopes.ts +18 -35
  476. package/src/slack-rest-mcp.ts +222 -0
  477. package/src/slack-task-policy.ts +97 -73
  478. package/src/spreadsheet-artifact-commands.ts +74 -13
  479. package/src/spreadsheet-artifact-query.ts +188 -50
  480. package/src/subscription-account-actions.ts +103 -0
  481. package/src/subscription-account-pools.ts +74 -0
  482. package/src/subscription-personal-authority-v2.ts +69 -0
  483. package/src/subscription-plans.ts +51 -0
  484. package/src/subscription-usage-pool.ts +44 -0
  485. package/src/task-notes.ts +70 -68
  486. package/src/tool-action-review.ts +271 -0
  487. package/src/tool-catalog.ts +694 -379
  488. package/src/tool-policy.ts +82 -0
  489. package/src/tool-result-spill.ts +13 -9
  490. package/src/tool-review-presentation.ts +643 -0
  491. package/src/turn-serving-policy.ts +167 -0
  492. package/src/usage-allowances.ts +212 -136
  493. package/src/values.ts +25 -0
  494. package/src/vault-provider-wire.ts +580 -0
  495. package/src/vaults.ts +1296 -0
  496. package/src/video-generation.ts +430 -361
  497. package/src/work-claims.ts +183 -166
  498. package/src/workspace-control-event.ts +134 -0
  499. package/src/workspace-governance-context.ts +63 -0
  500. package/src/workspace-instruction-policies.ts +346 -279
  501. package/src/workspace-integration-wire.ts +10 -0
  502. package/src/workspace-integrations.ts +488 -398
  503. package/src/workspace-learning-administration.ts +58 -44
  504. package/src/workspace-learning-policy.ts +126 -99
  505. package/src/workspace-state.ts +239 -220
  506. package/src/xai-provider-account-authority.ts +23 -17
  507. package/dist/chunk-3SIZGL3O.js.map +0 -1
  508. package/dist/chunk-566IFOVP.js +0 -26133
  509. package/dist/chunk-566IFOVP.js.map +0 -1
  510. package/dist/chunk-5IXYF6XN.js +0 -728
  511. package/dist/chunk-5IXYF6XN.js.map +0 -1
  512. package/dist/chunk-5Q54VCCH.js.map +0 -1
  513. package/dist/chunk-BCS7WHCK.js +0 -139
  514. package/dist/chunk-BCS7WHCK.js.map +0 -1
  515. package/dist/chunk-EK7NDGFR.js +0 -128
  516. package/dist/chunk-EK7NDGFR.js.map +0 -1
  517. package/dist/chunk-GRG7PHWQ.js +0 -25
  518. package/dist/chunk-GRG7PHWQ.js.map +0 -1
  519. package/dist/chunk-HHZSZYYF.js.map +0 -1
  520. package/dist/chunk-ICDZGUX2.js +0 -186
  521. package/dist/chunk-ICDZGUX2.js.map +0 -1
  522. package/dist/chunk-JUFK3T4Q.js +0 -80
  523. package/dist/chunk-JUFK3T4Q.js.map +0 -1
  524. package/dist/chunk-MYBZRDTY.js.map +0 -1
  525. package/dist/chunk-NRMCVHAU.js.map +0 -1
  526. package/dist/chunk-O77VSFYZ.js.map +0 -1
  527. package/dist/chunk-P3HLDT77.js +0 -59
  528. package/dist/chunk-P3HLDT77.js.map +0 -1
  529. package/dist/chunk-TXTQIYCV.js.map +0 -1
  530. package/dist/chunk-WYBDERIY.js.map +0 -1
  531. package/dist/chunk-Y3KNXVTD.js.map +0 -1
  532. package/dist/chunk-YBW5JSA3.js.map +0 -1
  533. package/dist/chunk-YRXAWWCU.js +0 -45
  534. package/dist/chunk-YRXAWWCU.js.map +0 -1
  535. package/dist/chunk-YWMOIZ6A.js +0 -185
  536. package/dist/chunk-YWMOIZ6A.js.map +0 -1
  537. package/dist/site-request-headers.test.d.ts +0 -1
  538. package/dist/transcription-recordings.d.ts +0 -300
  539. package/src/transcription-recordings.ts +0 -169
  540. /package/dist/{chunk-SIOU2K4U.js.map → chunk-LJH2EYGT.js.map} +0 -0
  541. /package/dist/{chunk-RIY7GYQS.js.map → chunk-PTSROVDG.js.map} +0 -0
  542. /package/dist/{chunk-YRKRZ6OF.js.map → chunk-TOOJIBJC.js.map} +0 -0
  543. /package/dist/{chunk-D2HKF2EF.js.map → chunk-XP5M3IKT.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/spreadsheet-artifact-query.ts"],"sourcesContent":["import { spreadsheetSheetId, type EditableArtifactStableId } from \"./spreadsheet-artifact-commands\";\nimport { fnv1a64 } from \"./editable-artifact-binary\";\nimport {\n canonicalSpreadsheetDateFromMilliseconds,\n canonicalSpreadsheetDateMilliseconds,\n} from \"./spreadsheet-artifact-date\";\nimport {\n SPREADSHEET_DEFAULT_ROW_HEIGHT,\n SPREADSHEET_DEFAULT_COLUMN_WIDTH,\n SPREADSHEET_MAX_DIMENSION_PIXELS,\n} from \"./spreadsheet-artifact-commands\";\n\n/** Canonical private kernel query/projection ABI shared by browser and native bindings. */\nexport const SPREADSHEET_ARTIFACT_QUERY_VERSION = 1 as const;\nexport const SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES = 68;\nexport const SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES = 8 * 1024 * 1024;\nexport const SPREADSHEET_ARTIFACT_VIEWPORT_MAX_AREA = 1_048_576;\nexport const SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS = 262_144;\nexport const SPREADSHEET_ARTIFACT_METADATA_MAX_SHEETS = 10_000;\nexport const SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES = 4 * 1024 * 1024;\nexport const SPREADSHEET_ARTIFACT_VIEWPORT_MIN_RESPONSE_BYTES = 92;\nexport const SPREADSHEET_ARTIFACT_METADATA_MIN_RESPONSE_BYTES = 48;\n\nconst QUERY_MAGIC = new TextEncoder().encode(\"OGAKQ001\");\nconst PROJECTION_MAGIC = new TextEncoder().encode(\"OGAKV001\");\nconst QUERY_HEADER_BYTES = 28;\nconst PROJECTION_HEADER_BYTES = 36;\nconst CHECKSUM_BYTES = 8;\nconst VIEWPORT_QUERY_PAYLOAD_BYTES = 32;\nconst VIEWPORT_PROJECTION_PREFIX_BYTES = 48;\nconst METADATA_PROJECTION_PREFIX_BYTES = 4;\nconst GENERATIONS_FLAG = 1;\nconst DIMENSIONS_FLAG = 2;\nconst DIMENSION_KEYS = [\n \"defaultRowHeight\",\n \"defaultColumnWidth\",\n \"rowHeights\",\n \"columnWidths\",\n] as const;\n\n/** Sparse absolute zero-based indices; omitted only in pre-dimension private projections. */\nexport type SpreadsheetArtifactDimensions = Readonly<{\n defaultRowHeight?: number;\n defaultColumnWidth?: number;\n rowHeights?: readonly (readonly [number, number])[];\n columnWidths?: readonly (readonly [number, number])[];\n}>;\nconst UINT32_MAX = 0xffff_ffff;\nconst UINT64_MAX = 0xffff_ffff_ffff_ffffn;\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder(\"utf-8\", { fatal: true });\n\nexport type SpreadsheetArtifactViewportQuery = Readonly<{\n sheetId: EditableArtifactStableId;\n startRow: number;\n startColumn: number;\n rowCount: number;\n columnCount: number;\n maxCells: number;\n /** Entire OGAKV001 envelope, not merely its payload. */\n maxBytes: number;\n}>;\n\nexport type SpreadsheetArtifactMetadataQuery = Readonly<{\n maxSheets: number;\n /** Entire OGAKV001 envelope, not merely its payload. */\n maxBytes: number;\n}>;\n\nexport type SpreadsheetArtifactKernelQuery =\n | Readonly<{ kind: \"viewport\"; query: SpreadsheetArtifactViewportQuery }>\n | Readonly<{\n kind: \"workbook-metadata\";\n query: SpreadsheetArtifactMetadataQuery;\n }>;\n\nexport type SpreadsheetArtifactFormulaError =\n | \"null\"\n | \"divide_by_zero\"\n | \"value\"\n | \"reference\"\n | \"name\"\n | \"number\"\n | \"not_available\"\n | \"spill\"\n | \"calculation\"\n | Readonly<{ custom: string }>;\n\nexport type SpreadsheetArtifactProjectedCellValue =\n | Readonly<{ kind: \"empty\" }>\n | Readonly<{ kind: \"boolean\"; value: boolean }>\n | Readonly<{ kind: \"number\"; value: number }>\n | Readonly<{ kind: \"date\"; value: string }>\n | Readonly<{ kind: \"text\"; value: string }>\n | Readonly<{ kind: \"error\"; value: SpreadsheetArtifactFormulaError }>;\n\nexport type SpreadsheetArtifactProjectedCell = Readonly<{\n /** Absolute zero-based row, reconstructed from the relative wire coordinate. */\n row: number;\n /** Absolute zero-based column, reconstructed from the relative wire coordinate. */\n column: number;\n formula: string | null;\n value: SpreadsheetArtifactProjectedCellValue;\n}>;\n\n/** Complete and non-truncated. A limit breach is an error, never a partial response. */\nexport type SpreadsheetArtifactViewportProjection = SpreadsheetArtifactDimensions &\n Readonly<{\n revision: bigint;\n sheetId: EditableArtifactStableId;\n generationId: EditableArtifactStableId | null;\n startRow: number;\n startColumn: number;\n rowCount: number;\n columnCount: number;\n cells: readonly SpreadsheetArtifactProjectedCell[];\n }>;\n\nexport type SpreadsheetArtifactUsedBounds = Readonly<{\n startRow: number;\n startColumn: number;\n endRow: number;\n endColumn: number;\n}>;\n\nexport type SpreadsheetArtifactSheetMetadata = SpreadsheetArtifactDimensions &\n Readonly<{\n sheetId: EditableArtifactStableId;\n generationId: EditableArtifactStableId | null;\n name: string;\n usedBounds: SpreadsheetArtifactUsedBounds | null;\n }>;\n\n/**\n * Dimensions are carried under the explicit dimensions flag. Hidden state,\n * merges and styles remain unsupported. Pre-dimension private projections\n * carry dimensions=false and round-trip without inventing geometry.\n */\nexport type SpreadsheetArtifactModeledFeatures = Readonly<{\n dimensions: boolean;\n hidden: false;\n merges: false;\n}>;\n\n/** Complete ordered workbook catalog; never a truncated prefix. */\nexport type SpreadsheetArtifactMetadataProjection = Readonly<{\n revision: bigint;\n modeledFeatures: SpreadsheetArtifactModeledFeatures;\n sheets: readonly SpreadsheetArtifactSheetMetadata[];\n}>;\n\nexport type SpreadsheetArtifactKernelProjection =\n | Readonly<{\n kind: \"viewport\";\n projection: SpreadsheetArtifactViewportProjection;\n }>\n | Readonly<{\n kind: \"workbook-metadata\";\n projection: SpreadsheetArtifactMetadataProjection;\n }>;\n\nexport function encodeSpreadsheetViewportKernelQuery(\n input: SpreadsheetArtifactViewportQuery,\n): Uint8Array {\n const query = normalizeViewportQuery(input);\n const payload = new FixedWriter(VIEWPORT_QUERY_PAYLOAD_BYTES);\n payload.stableId(query.sheetId);\n payload.u32(query.startRow);\n payload.u32(query.startColumn);\n payload.u32(query.rowCount);\n payload.u32(query.columnCount);\n return encodeQueryFrame(0, query.maxCells, query.maxBytes, payload.finish());\n}\n\nexport function encodeSpreadsheetMetadataKernelQuery(\n input: SpreadsheetArtifactMetadataQuery,\n): Uint8Array {\n const query = normalizeMetadataQuery(input);\n return encodeQueryFrame(1, query.maxSheets, query.maxBytes, new Uint8Array());\n}\n\nexport function encodeSpreadsheetArtifactKernelQuery(\n input: SpreadsheetArtifactKernelQuery,\n): Uint8Array {\n const envelope = exactRecord(input, \"spreadsheet kernel query\");\n exactKeys(envelope, [\"kind\", \"query\"], \"spreadsheet kernel query\");\n if (envelope.kind === \"viewport\") {\n return encodeSpreadsheetViewportKernelQuery(envelope.query as SpreadsheetArtifactViewportQuery);\n }\n if (envelope.kind === \"workbook-metadata\") {\n return encodeSpreadsheetMetadataKernelQuery(envelope.query as SpreadsheetArtifactMetadataQuery);\n }\n throw queryError(\"unknown spreadsheet kernel query kind\");\n}\n\nexport function decodeSpreadsheetArtifactKernelQuery(\n bytes: Uint8Array,\n): SpreadsheetArtifactKernelQuery {\n const frame = decodeQueryFrame(bytes);\n if (frame.kind === 0) {\n if (frame.payload.byteLength < VIEWPORT_QUERY_PAYLOAD_BYTES) {\n throw queryError(\"spreadsheet viewport query is truncated\");\n }\n if (frame.payload.byteLength > VIEWPORT_QUERY_PAYLOAD_BYTES) {\n throw queryError(\"spreadsheet viewport query contains trailing bytes\");\n }\n const reader = new Reader(frame.payload);\n const query = normalizeViewportQuery({\n sheetId: reader.stableId(\"viewport sheet id\"),\n startRow: reader.u32(),\n startColumn: reader.u32(),\n rowCount: reader.u32(),\n columnCount: reader.u32(),\n maxCells: frame.maxItems,\n maxBytes: frame.maxBytes,\n });\n reader.done(\"spreadsheet viewport query contains trailing bytes\");\n return Object.freeze({ kind: \"viewport\", query });\n }\n if (frame.payload.byteLength !== 0) {\n throw queryError(\"spreadsheet metadata query contains trailing bytes\");\n }\n return Object.freeze({\n kind: \"workbook-metadata\",\n query: normalizeMetadataQuery({\n maxSheets: frame.maxItems,\n maxBytes: frame.maxBytes,\n }),\n });\n}\n\nexport function assertCanonicalSpreadsheetArtifactKernelQueryBytes(bytes: Uint8Array): Uint8Array {\n const canonical = encodeSpreadsheetArtifactKernelQuery(\n decodeSpreadsheetArtifactKernelQuery(bytes),\n );\n if (!equalBytes(bytes, canonical)) throw queryError(\"spreadsheet kernel query is not canonical\");\n return bytes;\n}\n\nexport function encodeSpreadsheetViewportKernelProjection(\n input: SpreadsheetArtifactViewportProjection,\n maximumBytes = SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n): Uint8Array {\n const projection = normalizeViewportProjection(input);\n const maximum = effectiveProjectionMaximum(\n maximumBytes,\n SPREADSHEET_ARTIFACT_VIEWPORT_MIN_RESPONSE_BYTES,\n );\n const payload = new DynamicWriter(maximum - PROJECTION_HEADER_BYTES - CHECKSUM_BYTES);\n payload.stableId(projection.sheetId);\n payload.optionalStableId(projection.generationId);\n payload.u32(projection.startRow);\n payload.u32(projection.startColumn);\n payload.u32(projection.rowCount);\n payload.u32(projection.columnCount);\n const hasDimensions = projection.defaultRowHeight !== undefined;\n if (hasDimensions) writeDimensions(payload, projection);\n for (const cell of projection.cells) {\n payload.u32(cell.row - projection.startRow);\n payload.u32(cell.column - projection.startColumn);\n payload.cell(cell);\n }\n return encodeProjectionFrame(\n 0,\n projection.revision,\n (projection.generationId === null ? 0 : GENERATIONS_FLAG) |\n (hasDimensions ? DIMENSIONS_FLAG : 0),\n projection.cells.length,\n payload.finish(),\n maximum,\n );\n}\n\nexport function encodeSpreadsheetMetadataKernelProjection(\n input: SpreadsheetArtifactMetadataProjection,\n maximumBytes = SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n): Uint8Array {\n const projection = normalizeMetadataProjection(input);\n const maximum = effectiveProjectionMaximum(\n maximumBytes,\n SPREADSHEET_ARTIFACT_METADATA_MIN_RESPONSE_BYTES,\n );\n const payload = new DynamicWriter(maximum - PROJECTION_HEADER_BYTES - CHECKSUM_BYTES);\n payload.u32(projection.modeledFeatures.dimensions ? 1 : 0);\n for (const sheet of projection.sheets) {\n payload.stableId(sheet.sheetId);\n payload.optionalStableId(sheet.generationId);\n payload.string(sheet.name);\n if (sheet.usedBounds === null) {\n payload.u8(0);\n } else {\n payload.u8(1);\n payload.u32(sheet.usedBounds.startRow);\n payload.u32(sheet.usedBounds.startColumn);\n payload.u32(sheet.usedBounds.endRow);\n payload.u32(sheet.usedBounds.endColumn);\n }\n if (projection.modeledFeatures.dimensions) writeDimensions(payload, sheet);\n }\n const generations = projection.sheets.length > 0 && projection.sheets[0]!.generationId !== null;\n return encodeProjectionFrame(\n 1,\n projection.revision,\n (generations ? GENERATIONS_FLAG : 0) |\n (projection.modeledFeatures.dimensions ? DIMENSIONS_FLAG : 0),\n projection.sheets.length,\n payload.finish(),\n maximum,\n );\n}\n\nexport function encodeSpreadsheetArtifactKernelProjection(\n input: SpreadsheetArtifactKernelProjection,\n maximumBytes = SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n): Uint8Array {\n const envelope = exactRecord(input, \"spreadsheet kernel projection\");\n exactKeys(envelope, [\"kind\", \"projection\"], \"spreadsheet kernel projection\");\n if (envelope.kind === \"viewport\") {\n return encodeSpreadsheetViewportKernelProjection(\n envelope.projection as SpreadsheetArtifactViewportProjection,\n maximumBytes,\n );\n }\n if (envelope.kind === \"workbook-metadata\") {\n return encodeSpreadsheetMetadataKernelProjection(\n envelope.projection as SpreadsheetArtifactMetadataProjection,\n maximumBytes,\n );\n }\n throw projectionError(\"unknown spreadsheet kernel projection kind\");\n}\n\nexport function decodeSpreadsheetArtifactKernelProjection(\n bytes: Uint8Array,\n): SpreadsheetArtifactKernelProjection {\n const frame = decodeProjectionFrame(bytes);\n if (frame.kind === 0) {\n return Object.freeze({\n kind: \"viewport\",\n projection: decodeViewportPayload(frame),\n });\n }\n return Object.freeze({\n kind: \"workbook-metadata\",\n projection: decodeMetadataPayload(frame),\n });\n}\n\nexport function decodeSpreadsheetViewportKernelProjection(\n bytes: Uint8Array,\n expected?: SpreadsheetArtifactViewportQuery,\n): SpreadsheetArtifactViewportProjection {\n const decoded = decodeSpreadsheetArtifactKernelProjection(bytes);\n if (decoded.kind !== \"viewport\") throw projectionError(\"expected a viewport projection\");\n if (expected !== undefined) {\n const query = normalizeViewportQuery(expected);\n enforceProjectionEnvelopeLimit(bytes, query.maxBytes);\n if (\n decoded.projection.cells.length >\n Math.min(query.maxCells, SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS)\n ) {\n throw projectionError(\"viewport projection exceeds its requested cell limit\");\n }\n if (\n decoded.projection.sheetId !== query.sheetId ||\n decoded.projection.startRow !== query.startRow ||\n decoded.projection.startColumn !== query.startColumn ||\n decoded.projection.rowCount !== query.rowCount ||\n decoded.projection.columnCount !== query.columnCount\n ) {\n throw projectionError(\"viewport projection does not match its query\");\n }\n }\n return decoded.projection;\n}\n\nexport function decodeSpreadsheetMetadataKernelProjection(\n bytes: Uint8Array,\n expected?: SpreadsheetArtifactMetadataQuery,\n): SpreadsheetArtifactMetadataProjection {\n const decoded = decodeSpreadsheetArtifactKernelProjection(bytes);\n if (decoded.kind !== \"workbook-metadata\") {\n throw projectionError(\"expected a workbook metadata projection\");\n }\n if (expected !== undefined) {\n const query = normalizeMetadataQuery(expected);\n enforceProjectionEnvelopeLimit(bytes, query.maxBytes);\n if (\n decoded.projection.sheets.length >\n Math.min(query.maxSheets, SPREADSHEET_ARTIFACT_METADATA_MAX_SHEETS)\n ) {\n throw projectionError(\"metadata projection exceeds its requested sheet limit\");\n }\n }\n return decoded.projection;\n}\n\nexport function assertCanonicalSpreadsheetArtifactKernelProjectionBytes(\n bytes: Uint8Array,\n): Uint8Array {\n const canonical = encodeSpreadsheetArtifactKernelProjection(\n decodeSpreadsheetArtifactKernelProjection(bytes),\n );\n if (!equalBytes(bytes, canonical)) {\n throw projectionError(\"spreadsheet kernel projection is not canonical\");\n }\n return bytes;\n}\n\ntype ProjectionFrame = Readonly<{\n kind: 0 | 1;\n flags: number;\n revision: bigint;\n itemCount: number;\n payload: Uint8Array;\n}>;\n\nfunction encodeQueryFrame(\n kind: 0 | 1,\n maxItems: number,\n maxBytes: number,\n payload: Uint8Array,\n): Uint8Array {\n const output = new FixedWriter(QUERY_HEADER_BYTES + payload.byteLength + CHECKSUM_BYTES);\n output.bytes(QUERY_MAGIC);\n output.u16(SPREADSHEET_ARTIFACT_QUERY_VERSION);\n output.u16(0);\n output.u8(kind);\n output.bytes(new Uint8Array(3));\n output.u32(maxItems);\n output.u32(maxBytes);\n output.u32(payload.byteLength);\n output.bytes(payload);\n output.u64(fnv1a64(output.view()));\n const bytes = output.finish();\n if (bytes.byteLength > SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES) {\n throw queryError(\"spreadsheet kernel query exceeds its byte limit\");\n }\n return bytes;\n}\n\nfunction decodeQueryFrame(bytes: Uint8Array): Readonly<{\n kind: 0 | 1;\n maxItems: number;\n maxBytes: number;\n payload: Uint8Array;\n}> {\n requireBytes(bytes, \"spreadsheet kernel query\");\n if (bytes.byteLength > SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES) {\n throw queryError(\"spreadsheet kernel query exceeds its byte limit\");\n }\n if (bytes.byteLength < QUERY_HEADER_BYTES + CHECKSUM_BYTES) {\n throw queryError(\"spreadsheet kernel query is truncated\");\n }\n const reader = new Reader(bytes);\n if (!equalBytes(reader.bytes(8), QUERY_MAGIC))\n throw queryError(\"spreadsheet query magic is invalid\");\n const version = reader.u16();\n if (version !== SPREADSHEET_ARTIFACT_QUERY_VERSION) {\n throw queryError(`unsupported spreadsheet query version: ${version}`);\n }\n if (reader.u16() !== 0) throw queryError(\"spreadsheet query reserved flags must be zero\");\n const kindTag = reader.u8();\n if (kindTag > 1) throw queryError(\"spreadsheet query kind is invalid\");\n if (reader.u8() !== 0 || reader.u8() !== 0 || reader.u8() !== 0) {\n throw queryError(\"spreadsheet query reserved bytes must be zero\");\n }\n const maxItems = reader.u32();\n const maxBytes = reader.u32();\n const payloadLength = reader.u32();\n const expected = QUERY_HEADER_BYTES + payloadLength + CHECKSUM_BYTES;\n if (bytes.byteLength < expected) throw queryError(\"spreadsheet kernel query is truncated\");\n if (bytes.byteLength > expected)\n throw queryError(\"spreadsheet kernel query contains trailing bytes\");\n const payload = reader.bytes(payloadLength);\n const checksum = reader.u64();\n reader.done(\"spreadsheet kernel query contains trailing bytes\");\n if (checksum !== fnv1a64(bytes.subarray(0, -CHECKSUM_BYTES))) {\n throw queryError(\"spreadsheet kernel query checksum does not match\");\n }\n return Object.freeze({ kind: kindTag as 0 | 1, maxItems, maxBytes, payload });\n}\n\nfunction encodeProjectionFrame(\n kind: 0 | 1,\n revision: bigint,\n flags: number,\n itemCount: number,\n payload: Uint8Array,\n maximum: number,\n): Uint8Array {\n const output = new FixedWriter(PROJECTION_HEADER_BYTES + payload.byteLength + CHECKSUM_BYTES);\n output.bytes(PROJECTION_MAGIC);\n output.u16(SPREADSHEET_ARTIFACT_QUERY_VERSION);\n output.u16(flags);\n output.u8(kind);\n output.bytes(new Uint8Array(3));\n output.u64(revision);\n output.u32(itemCount);\n output.u64(BigInt(payload.byteLength));\n output.bytes(payload);\n output.u64(fnv1a64(output.view()));\n const bytes = output.finish();\n if (bytes.byteLength > maximum || bytes.byteLength > SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES) {\n throw projectionError(\"spreadsheet kernel projection exceeds its byte limit\");\n }\n return bytes;\n}\n\nfunction decodeProjectionFrame(bytes: Uint8Array): ProjectionFrame {\n requireBytes(bytes, \"spreadsheet kernel projection\");\n if (bytes.byteLength > SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES) {\n throw projectionError(\"spreadsheet kernel projection exceeds its byte limit\");\n }\n if (bytes.byteLength < PROJECTION_HEADER_BYTES + CHECKSUM_BYTES) {\n throw projectionError(\"spreadsheet kernel projection is truncated\");\n }\n const reader = new Reader(bytes);\n if (!equalBytes(reader.bytes(8), PROJECTION_MAGIC)) {\n throw projectionError(\"spreadsheet projection magic is invalid\");\n }\n const version = reader.u16();\n if (version !== SPREADSHEET_ARTIFACT_QUERY_VERSION) {\n throw projectionError(`unsupported spreadsheet projection version: ${version}`);\n }\n const flags = reader.u16();\n if ((flags & ~(GENERATIONS_FLAG | DIMENSIONS_FLAG)) !== 0) {\n throw projectionError(\"spreadsheet projection flags are noncanonical\");\n }\n const kindTag = reader.u8();\n if (kindTag > 1) throw projectionError(\"spreadsheet projection kind is invalid\");\n if (reader.u8() !== 0 || reader.u8() !== 0 || reader.u8() !== 0) {\n throw projectionError(\"spreadsheet projection reserved bytes must be zero\");\n }\n const revision = reader.u64();\n const itemCount = reader.u32();\n const payloadLengthBig = reader.u64();\n if (payloadLengthBig > BigInt(SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES)) {\n throw projectionError(\"spreadsheet projection payload exceeds its byte limit\");\n }\n const payloadLength = Number(payloadLengthBig);\n const expected = PROJECTION_HEADER_BYTES + payloadLength + CHECKSUM_BYTES;\n if (bytes.byteLength < expected)\n throw projectionError(\"spreadsheet kernel projection is truncated\");\n if (bytes.byteLength > expected) {\n throw projectionError(\"spreadsheet kernel projection contains trailing bytes\");\n }\n const payload = reader.bytes(payloadLength);\n const checksum = reader.u64();\n reader.done(\"spreadsheet kernel projection contains trailing bytes\");\n if (checksum !== fnv1a64(bytes.subarray(0, -CHECKSUM_BYTES))) {\n throw projectionError(\"spreadsheet kernel projection checksum does not match\");\n }\n return Object.freeze({\n kind: kindTag as 0 | 1,\n flags,\n revision,\n itemCount,\n payload,\n });\n}\n\nfunction decodeViewportPayload(frame: ProjectionFrame): SpreadsheetArtifactViewportProjection {\n if (frame.itemCount > SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS) {\n throw projectionError(\"viewport projection exceeds its hard cell limit\");\n }\n if (frame.payload.byteLength < VIEWPORT_PROJECTION_PREFIX_BYTES + frame.itemCount * 10) {\n throw projectionError(\"viewport projection payload is truncated\");\n }\n const reader = new Reader(frame.payload);\n const sheetId = reader.stableId(\"viewport sheet id\");\n const generationId = reader.optionalStableId((frame.flags & GENERATIONS_FLAG) !== 0);\n const startRow = reader.u32();\n const startColumn = reader.u32();\n const rowCount = reader.u32();\n const columnCount = reader.u32();\n validateViewportGeometry(startRow, startColumn, rowCount, columnCount);\n const dimensions = (frame.flags & DIMENSIONS_FLAG) !== 0 ? readDimensions(reader) : {};\n validateDimensionExtent(dimensions, startRow, rowCount, startColumn, columnCount);\n const cells: SpreadsheetArtifactProjectedCell[] = [];\n let previousOrdinal = -1;\n for (let index = 0; index < frame.itemCount; index += 1) {\n const relativeRow = reader.u32();\n const relativeColumn = reader.u32();\n if (relativeRow >= rowCount || relativeColumn >= columnCount) {\n throw projectionError(\"viewport cell lies outside its response extent\");\n }\n const ordinal = relativeRow * columnCount + relativeColumn;\n if (!Number.isSafeInteger(ordinal) || ordinal <= previousOrdinal) {\n throw projectionError(\"viewport cells are not unique strict row-major entries\");\n }\n previousOrdinal = ordinal;\n const formula = reader.formula();\n const value = reader.cellValue();\n if (formula === null && value.kind === \"empty\") {\n throw projectionError(\"sparse viewport contains an empty cell\");\n }\n cells.push(\n Object.freeze({\n row: startRow + relativeRow,\n column: startColumn + relativeColumn,\n formula,\n value,\n }),\n );\n }\n reader.done(\"viewport projection payload contains trailing bytes\");\n return Object.freeze({\n revision: frame.revision,\n ...dimensions,\n sheetId,\n generationId,\n startRow,\n startColumn,\n rowCount,\n columnCount,\n cells: Object.freeze(cells),\n });\n}\n\nfunction decodeMetadataPayload(frame: ProjectionFrame): SpreadsheetArtifactMetadataProjection {\n if (frame.itemCount > SPREADSHEET_ARTIFACT_METADATA_MAX_SHEETS) {\n throw projectionError(\"metadata projection exceeds its hard sheet limit\");\n }\n if (frame.payload.byteLength < METADATA_PROJECTION_PREFIX_BYTES + frame.itemCount * 37) {\n throw projectionError(\"metadata projection payload is truncated\");\n }\n const reader = new Reader(frame.payload);\n const features = reader.u32();\n if ((features & ~1) !== 0 || (features === 1) !== ((frame.flags & DIMENSIONS_FLAG) !== 0)) {\n throw projectionError(\"metadata projection contains unknown modeled feature bits\");\n }\n const hasGenerations = (frame.flags & GENERATIONS_FLAG) !== 0;\n if (frame.itemCount === 0 && hasGenerations) {\n throw projectionError(\"empty metadata projection must not set the generations flag\");\n }\n const sheets: SpreadsheetArtifactSheetMetadata[] = [];\n const ids = new Set<string>();\n const names = new Set<string>();\n for (let index = 0; index < frame.itemCount; index += 1) {\n const sheetId = reader.stableId(\"metadata sheet id\");\n if (ids.has(sheetId)) throw projectionError(\"metadata projection contains duplicate sheet ids\");\n ids.add(sheetId);\n const generationId = reader.optionalStableId(hasGenerations);\n const name = validateSheetName(reader.string(), \"metadata sheet name\");\n const foldedName = name.toLowerCase();\n if (names.has(foldedName)) {\n throw projectionError(\"metadata projection contains duplicate case-insensitive sheet names\");\n }\n names.add(foldedName);\n const boundsTag = reader.u8();\n if (boundsTag > 1) throw projectionError(\"metadata used-bounds tag is invalid\");\n let usedBounds: SpreadsheetArtifactUsedBounds | null = null;\n if (boundsTag === 1) {\n const startRow = reader.u32();\n const startColumn = reader.u32();\n const endRow = reader.u32();\n const endColumn = reader.u32();\n if (startRow > endRow || startColumn > endColumn) {\n throw projectionError(\"metadata used bounds are not ordered\");\n }\n usedBounds = Object.freeze({ startRow, startColumn, endRow, endColumn });\n }\n const dimensions = (frame.flags & DIMENSIONS_FLAG) !== 0 ? readDimensions(reader) : {};\n sheets.push(Object.freeze({ sheetId, generationId, name, usedBounds, ...dimensions }));\n }\n reader.done(\"metadata projection payload contains trailing bytes\");\n return Object.freeze({\n revision: frame.revision,\n modeledFeatures: Object.freeze({ dimensions: features === 1, hidden: false, merges: false }),\n sheets: Object.freeze(sheets),\n });\n}\n\nfunction normalizeViewportQuery(input: unknown): SpreadsheetArtifactViewportQuery {\n const query = exactRecord(input, \"spreadsheet viewport query\");\n exactKeys(\n query,\n [\"columnCount\", \"maxBytes\", \"maxCells\", \"rowCount\", \"sheetId\", \"startColumn\", \"startRow\"],\n \"spreadsheet viewport query\",\n );\n const sheetId = spreadsheetSheetId(requireString(query.sheetId, \"viewport sheetId\"));\n const startRow = uint32(query.startRow, \"viewport startRow\");\n const startColumn = uint32(query.startColumn, \"viewport startColumn\");\n const rowCount = positiveUint32(query.rowCount, \"viewport rowCount\");\n const columnCount = positiveUint32(query.columnCount, \"viewport columnCount\");\n validateViewportGeometry(startRow, startColumn, rowCount, columnCount);\n const maxCells = positiveUint32(query.maxCells, \"viewport maxCells\");\n const maxBytes = positiveUint32(query.maxBytes, \"viewport maxBytes\");\n if (maxBytes < SPREADSHEET_ARTIFACT_VIEWPORT_MIN_RESPONSE_BYTES) {\n throw queryError(\"viewport maxBytes cannot fit an empty response\");\n }\n return Object.freeze({\n sheetId,\n startRow,\n startColumn,\n rowCount,\n columnCount,\n maxCells,\n maxBytes,\n });\n}\n\nfunction normalizeMetadataQuery(input: unknown): SpreadsheetArtifactMetadataQuery {\n const query = exactRecord(input, \"spreadsheet metadata query\");\n exactKeys(query, [\"maxBytes\", \"maxSheets\"], \"spreadsheet metadata query\");\n const maxSheets = positiveUint32(query.maxSheets, \"metadata maxSheets\");\n const maxBytes = positiveUint32(query.maxBytes, \"metadata maxBytes\");\n if (maxBytes < SPREADSHEET_ARTIFACT_METADATA_MIN_RESPONSE_BYTES) {\n throw queryError(\"metadata maxBytes cannot fit an empty response\");\n }\n return Object.freeze({ maxSheets, maxBytes });\n}\n\nfunction normalizeViewportProjection(input: unknown): SpreadsheetArtifactViewportProjection {\n const projection = exactRecord(input, \"spreadsheet viewport projection\");\n exactKeys(\n projection,\n [\n \"cells\",\n \"columnCount\",\n \"generationId\",\n \"revision\",\n \"rowCount\",\n \"sheetId\",\n \"startColumn\",\n \"startRow\",\n ...(projection.defaultRowHeight === undefined ? [] : DIMENSION_KEYS),\n ].sort(),\n \"spreadsheet viewport projection\",\n );\n const revision = uint64(projection.revision, \"viewport revision\");\n const sheetId = spreadsheetSheetId(requireString(projection.sheetId, \"viewport sheetId\"));\n const generationId = nullableGenerationId(projection.generationId, \"viewport generationId\");\n const startRow = uint32(projection.startRow, \"viewport startRow\");\n const startColumn = uint32(projection.startColumn, \"viewport startColumn\");\n const rowCount = positiveUint32(projection.rowCount, \"viewport rowCount\");\n const columnCount = positiveUint32(projection.columnCount, \"viewport columnCount\");\n validateViewportGeometry(startRow, startColumn, rowCount, columnCount);\n const dimensions =\n projection.defaultRowHeight === undefined ? {} : normalizeDimensions(projection);\n validateDimensionExtent(dimensions, startRow, rowCount, startColumn, columnCount);\n if (!Array.isArray(projection.cells)) throw projectionError(\"viewport cells must be an array\");\n if (projection.cells.length > SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS) {\n throw projectionError(\"viewport projection exceeds its hard cell limit\");\n }\n const cells: SpreadsheetArtifactProjectedCell[] = [];\n let previousOrdinal = -1;\n for (let index = 0; index < projection.cells.length; index += 1) {\n const cell = normalizeProjectedCell(ownArrayElement(projection.cells, index, \"viewport cells\"));\n if (\n cell.row < startRow ||\n cell.row >= startRow + rowCount ||\n cell.column < startColumn ||\n cell.column >= startColumn + columnCount\n ) {\n throw projectionError(\"viewport cell lies outside its response extent\");\n }\n const ordinal = (cell.row - startRow) * columnCount + (cell.column - startColumn);\n if (!Number.isSafeInteger(ordinal) || ordinal <= previousOrdinal) {\n throw projectionError(\"viewport cells are not unique strict row-major entries\");\n }\n previousOrdinal = ordinal;\n if (cell.formula === null && cell.value.kind === \"empty\") {\n throw projectionError(\"sparse viewport contains an empty cell\");\n }\n cells.push(cell);\n }\n return Object.freeze({\n revision,\n ...dimensions,\n sheetId,\n generationId,\n startRow,\n startColumn,\n rowCount,\n columnCount,\n cells: Object.freeze(cells),\n });\n}\n\nfunction normalizeMetadataProjection(input: unknown): SpreadsheetArtifactMetadataProjection {\n const projection = exactRecord(input, \"spreadsheet metadata projection\");\n exactKeys(\n projection,\n [\"modeledFeatures\", \"revision\", \"sheets\"],\n \"spreadsheet metadata projection\",\n );\n const revision = uint64(projection.revision, \"metadata revision\");\n const features = exactRecord(projection.modeledFeatures, \"metadata modeledFeatures\");\n exactKeys(features, [\"dimensions\", \"hidden\", \"merges\"], \"metadata modeledFeatures\");\n if (\n typeof features.dimensions !== \"boolean\" ||\n features.hidden !== false ||\n features.merges !== false\n ) {\n throw projectionError(\"metadata modeled features are invalid\");\n }\n if (!Array.isArray(projection.sheets)) throw projectionError(\"metadata sheets must be an array\");\n if (projection.sheets.length > SPREADSHEET_ARTIFACT_METADATA_MAX_SHEETS) {\n throw projectionError(\"metadata projection exceeds its hard sheet limit\");\n }\n const ids = new Set<string>();\n const names = new Set<string>();\n const sheets: SpreadsheetArtifactSheetMetadata[] = [];\n let generationPresence: boolean | null = null;\n for (let index = 0; index < projection.sheets.length; index += 1) {\n const value = exactRecord(\n ownArrayElement(projection.sheets, index, \"metadata sheets\"),\n \"metadata sheet\",\n );\n exactKeys(\n value,\n [\n \"generationId\",\n \"name\",\n \"sheetId\",\n \"usedBounds\",\n ...(features.dimensions ? DIMENSION_KEYS : []),\n ].sort(),\n \"metadata sheet\",\n );\n const sheetId = spreadsheetSheetId(requireString(value.sheetId, \"metadata sheetId\"));\n if (ids.has(sheetId)) throw projectionError(\"metadata projection contains duplicate sheet ids\");\n ids.add(sheetId);\n const generationId = nullableGenerationId(value.generationId, \"metadata generationId\");\n const present = generationId !== null;\n if (generationPresence !== null && generationPresence !== present) {\n throw projectionError(\"metadata generations must be uniformly present or absent\");\n }\n generationPresence = present;\n const name = validateSheetName(\n requireString(value.name, \"metadata sheet name\"),\n \"metadata sheet name\",\n );\n const foldedName = name.toLowerCase();\n if (names.has(foldedName)) {\n throw projectionError(\"metadata projection contains duplicate case-insensitive sheet names\");\n }\n names.add(foldedName);\n const usedBounds = value.usedBounds === null ? null : normalizeUsedBounds(value.usedBounds);\n sheets.push(\n Object.freeze({\n sheetId,\n generationId,\n name,\n usedBounds,\n ...(features.dimensions ? normalizeDimensions(value) : {}),\n }),\n );\n }\n return Object.freeze({\n revision,\n modeledFeatures: Object.freeze({\n dimensions: features.dimensions,\n hidden: false,\n merges: false,\n }),\n sheets: Object.freeze(sheets),\n });\n}\n\nfunction normalizeDimensions(input: Record<string, unknown>): SpreadsheetArtifactDimensions {\n if (\n input.defaultRowHeight !== SPREADSHEET_DEFAULT_ROW_HEIGHT ||\n input.defaultColumnWidth !== SPREADSHEET_DEFAULT_COLUMN_WIDTH\n ) {\n throw projectionError(\"dimension defaults are invalid\");\n }\n const normalizeEntries = (\n value: unknown,\n defaultPixels: number,\n ): readonly (readonly [number, number])[] => {\n if (!Array.isArray(value) || value.length > SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES / 8)\n throw projectionError(\"dimension entries exceed limits\");\n let previous = -1;\n const entries: (readonly [number, number])[] = [];\n for (let offset = 0; offset < value.length; offset += 1) {\n const entry = ownArrayElement(value, offset, \"dimension entries\");\n if (!Array.isArray(entry) || entry.length !== 2)\n throw projectionError(\"dimension entry must be an index/pixels pair\");\n const index = uint32(ownArrayElement(entry, 0, \"dimension index\"), `dimension ${offset}`);\n const pixels = positiveUint32(\n ownArrayElement(entry, 1, \"dimension pixels\"),\n \"dimension pixels\",\n );\n if (\n index <= previous ||\n pixels > SPREADSHEET_MAX_DIMENSION_PIXELS ||\n pixels === defaultPixels\n )\n throw projectionError(\"dimensions must be sorted unique non-default entries within bounds\");\n previous = index;\n entries.push(Object.freeze([index, pixels] as const));\n }\n return Object.freeze(entries);\n };\n return Object.freeze({\n defaultRowHeight: SPREADSHEET_DEFAULT_ROW_HEIGHT,\n defaultColumnWidth: SPREADSHEET_DEFAULT_COLUMN_WIDTH,\n rowHeights: normalizeEntries(input.rowHeights, SPREADSHEET_DEFAULT_ROW_HEIGHT),\n columnWidths: normalizeEntries(input.columnWidths, SPREADSHEET_DEFAULT_COLUMN_WIDTH),\n });\n}\n\nfunction writeDimensions(writer: DynamicWriter, dimensions: SpreadsheetArtifactDimensions): void {\n writer.u32(dimensions.defaultRowHeight!);\n writer.u32(dimensions.defaultColumnWidth!);\n for (const entries of [dimensions.rowHeights!, dimensions.columnWidths!]) {\n writer.u32(entries.length);\n for (const [index, pixels] of entries) {\n writer.u32(index);\n writer.u32(pixels);\n }\n }\n}\n\nfunction readDimensions(reader: Reader): SpreadsheetArtifactDimensions {\n const defaultRowHeight = reader.u32();\n const defaultColumnWidth = reader.u32();\n const axes: (readonly [number, number])[][] = [];\n for (let axis = 0; axis < 2; axis += 1) {\n const count = reader.u32();\n if (count > SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES / 8)\n throw projectionError(\"dimension entries exceed limits\");\n const entries: (readonly [number, number])[] = [];\n for (let index = 0; index < count; index += 1) entries.push([reader.u32(), reader.u32()]);\n axes.push(entries);\n }\n return normalizeDimensions({\n defaultRowHeight,\n defaultColumnWidth,\n rowHeights: axes[0],\n columnWidths: axes[1],\n });\n}\n\nfunction validateDimensionExtent(\n dimensions: SpreadsheetArtifactDimensions,\n startRow: number,\n rowCount: number,\n startColumn: number,\n columnCount: number,\n): void {\n if (\n dimensions.rowHeights?.some(([index]) => index < startRow || index - startRow >= rowCount) ||\n dimensions.columnWidths?.some(\n ([index]) => index < startColumn || index - startColumn >= columnCount,\n )\n )\n throw projectionError(\"dimensions lie outside viewport\");\n}\n\nfunction normalizeProjectedCell(input: unknown): SpreadsheetArtifactProjectedCell {\n const cell = exactRecord(input, \"projected cell\");\n exactKeys(cell, [\"column\", \"formula\", \"row\", \"value\"], \"projected cell\");\n const row = uint32(cell.row, \"projected cell row\");\n const column = uint32(cell.column, \"projected cell column\");\n let formula: string | null;\n if (cell.formula === null) {\n formula = null;\n } else {\n formula = requireString(cell.formula, \"projected cell formula\");\n if (formula.length === 0) throw projectionError(\"projected cell formula must not be empty\");\n boundedUtf8(\n formula,\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES,\n \"projected cell formula\",\n );\n }\n return Object.freeze({\n row,\n column,\n formula,\n value: normalizeProjectedValue(cell.value),\n });\n}\n\nfunction normalizeProjectedValue(input: unknown): SpreadsheetArtifactProjectedCellValue {\n const value = exactRecord(input, \"projected cell value\");\n if (value.kind === \"empty\") {\n exactKeys(value, [\"kind\"], \"empty projected cell value\");\n return EMPTY_VALUE;\n }\n if (value.kind === \"boolean\") {\n exactKeys(value, [\"kind\", \"value\"], \"boolean projected cell value\");\n if (typeof value.value !== \"boolean\") throw projectionError(\"boolean cell value is invalid\");\n return Object.freeze({ kind: \"boolean\", value: value.value });\n }\n if (value.kind === \"number\") {\n exactKeys(value, [\"kind\", \"value\"], \"number projected cell value\");\n if (typeof value.value !== \"number\" || !Number.isFinite(value.value)) {\n throw projectionError(\"number cell value must be finite\");\n }\n return Object.freeze({\n kind: \"number\",\n value: value.value === 0 ? 0 : value.value,\n });\n }\n if (value.kind === \"date\") {\n exactKeys(value, [\"kind\", \"value\"], \"date projected cell value\");\n return Object.freeze({\n kind: \"date\",\n value: canonicalDateString(value.value),\n });\n }\n if (value.kind === \"text\") {\n exactKeys(value, [\"kind\", \"value\"], \"text projected cell value\");\n const text = requireString(value.value, \"text cell value\");\n boundedUtf8(text, SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES, \"text cell value\");\n return Object.freeze({ kind: \"text\", value: text });\n }\n if (value.kind === \"error\") {\n exactKeys(value, [\"kind\", \"value\"], \"error projected cell value\");\n return Object.freeze({\n kind: \"error\",\n value: normalizeFormulaError(value.value),\n });\n }\n throw projectionError(\"projected cell value kind is invalid\");\n}\n\nfunction canonicalDateString(input: unknown): string {\n canonicalSpreadsheetDateMilliseconds(input);\n return input as string;\n}\n\nfunction normalizeFormulaError(input: unknown): SpreadsheetArtifactFormulaError {\n if (typeof input === \"string\" && FORMULA_ERROR_TAGS.has(input)) {\n return input as Exclude<SpreadsheetArtifactFormulaError, { custom: string }>;\n }\n const error = exactRecord(input, \"custom formula error\");\n exactKeys(error, [\"custom\"], \"custom formula error\");\n const custom = requireString(error.custom, \"custom formula error\");\n boundedUtf8(custom, SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES, \"custom formula error\");\n return Object.freeze({ custom });\n}\n\nfunction normalizeUsedBounds(input: unknown): SpreadsheetArtifactUsedBounds {\n const bounds = exactRecord(input, \"metadata used bounds\");\n exactKeys(bounds, [\"endColumn\", \"endRow\", \"startColumn\", \"startRow\"], \"metadata used bounds\");\n const startRow = uint32(bounds.startRow, \"used bounds startRow\");\n const startColumn = uint32(bounds.startColumn, \"used bounds startColumn\");\n const endRow = uint32(bounds.endRow, \"used bounds endRow\");\n const endColumn = uint32(bounds.endColumn, \"used bounds endColumn\");\n if (startRow > endRow || startColumn > endColumn) {\n throw projectionError(\"metadata used bounds are not ordered\");\n }\n return Object.freeze({ startRow, startColumn, endRow, endColumn });\n}\n\nfunction validateViewportGeometry(\n startRow: number,\n startColumn: number,\n rowCount: number,\n columnCount: number,\n): void {\n if (rowCount < 1 || columnCount < 1) {\n throw queryError(\"viewport extents must be nonzero\");\n }\n if (rowCount - 1 > UINT32_MAX - startRow || columnCount - 1 > UINT32_MAX - startColumn) {\n throw queryError(\"viewport extent exceeds uint32 coordinates\");\n }\n const area = rowCount * columnCount;\n if (!Number.isSafeInteger(area) || area > SPREADSHEET_ARTIFACT_VIEWPORT_MAX_AREA) {\n throw queryError(\"viewport area exceeds its hard limit\");\n }\n}\n\nfunction validateSheetName(value: string, label: string): string {\n boundedUtf8(value, SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES, label);\n if (\n value.length === 0 ||\n value.trim() !== value ||\n value.length > 31 ||\n /[\\\\/?*[\\]:\\0]/u.test(value)\n ) {\n throw projectionError(`${label} does not match the public spreadsheet model`);\n }\n return value;\n}\n\nfunction nullableGenerationId(value: unknown, label: string): EditableArtifactStableId | null {\n return value === null ? null : spreadsheetSheetId(requireString(value, label));\n}\n\nfunction enforceProjectionEnvelopeLimit(bytes: Uint8Array, requested: number): void {\n if (bytes.byteLength > Math.min(requested, SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES)) {\n throw projectionError(\"spreadsheet projection exceeds its requested byte limit\");\n }\n}\n\nfunction effectiveProjectionMaximum(value: number, minimum: number): number {\n const maximum = positiveUint32(value, \"projection maximumBytes\");\n const effective = Math.min(maximum, SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES);\n if (effective < minimum) throw projectionError(\"projection maximum cannot fit an empty response\");\n return effective;\n}\n\nfunction requireBytes(value: unknown, label: string): asserts value is Uint8Array {\n if (!(value instanceof Uint8Array)) throw new TypeError(`${label} must be a Uint8Array`);\n}\n\nfunction requireString(value: unknown, label: string): string {\n if (typeof value !== \"string\") throw new TypeError(`${label} must be a string`);\n return value;\n}\n\nfunction uint32(value: unknown, label: string): number {\n if (!Number.isInteger(value) || (value as number) < 0 || (value as number) > UINT32_MAX) {\n throw new TypeError(`${label} must be a uint32`);\n }\n return value as number;\n}\n\nfunction positiveUint32(value: unknown, label: string): number {\n const number = uint32(value, label);\n if (number === 0) throw new TypeError(`${label} must be nonzero`);\n return number;\n}\n\nfunction uint64(value: unknown, label: string): bigint {\n if (typeof value !== \"bigint\" || value < 0n || value > UINT64_MAX) {\n throw new TypeError(`${label} must be a uint64 bigint`);\n }\n return value;\n}\n\nfunction exactRecord(value: unknown, label: string): Record<string, unknown> {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value) ||\n Object.getPrototypeOf(value) !== Object.prototype\n ) {\n throw new TypeError(`${label} must be a plain record`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction exactKeys(\n value: Record<string, unknown>,\n expected: readonly string[],\n label: string,\n): void {\n const keys = Reflect.ownKeys(value);\n if (keys.some((key) => typeof key !== \"string\"))\n throw new TypeError(`${label} has symbol fields`);\n const actual = (keys as string[]).sort(compareCodeUnits);\n if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index])) {\n throw new TypeError(`${label} fields must be exactly: ${expected.join(\", \")}`);\n }\n for (const key of actual) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw new TypeError(`${label} fields must be enumerable data properties`);\n }\n }\n}\n\nfunction ownArrayElement(value: readonly unknown[], index: number, label: string): unknown {\n if (!Object.hasOwn(value, index)) throw new TypeError(`${label} must be dense`);\n return value[index];\n}\n\nfunction compareCodeUnits(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\nfunction boundedUtf8(value: string, maximum: number, label: string): Uint8Array {\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = value.charCodeAt(index + 1);\n if (!(next >= 0xdc00 && next <= 0xdfff)) {\n throw new TypeError(`${label} contains an unpaired surrogate`);\n }\n index += 1;\n } else if (code >= 0xdc00 && code <= 0xdfff) {\n throw new TypeError(`${label} contains an unpaired surrogate`);\n }\n }\n const bytes = textEncoder.encode(value);\n if (bytes.byteLength > maximum) throw new RangeError(`${label} exceeds its byte limit`);\n return bytes;\n}\n\nfunction equalBytes(left: Uint8Array, right: Uint8Array): boolean {\n return left.byteLength === right.byteLength && left.every((byte, index) => byte === right[index]);\n}\n\nfunction queryError(message: string): TypeError {\n return new TypeError(message);\n}\n\nfunction projectionError(message: string): TypeError {\n return new TypeError(message);\n}\n\nconst EMPTY_VALUE: SpreadsheetArtifactProjectedCellValue = Object.freeze({\n kind: \"empty\",\n});\n\nconst FORMULA_ERRORS = [\n \"null\",\n \"divide_by_zero\",\n \"value\",\n \"reference\",\n \"name\",\n \"number\",\n \"not_available\",\n \"spill\",\n \"calculation\",\n] as const;\n\nconst FORMULA_ERROR_TAGS = new Set<string>(FORMULA_ERRORS);\n\nclass FixedWriter {\n private readonly buffer: Uint8Array;\n private readonly viewBuffer: DataView;\n private offset = 0;\n\n constructor(length: number) {\n this.buffer = new Uint8Array(length);\n this.viewBuffer = new DataView(this.buffer.buffer);\n }\n\n view(): Uint8Array {\n return this.buffer.subarray(0, this.offset);\n }\n\n finish(): Uint8Array {\n if (this.offset !== this.buffer.byteLength)\n throw new TypeError(\"fixed binary writer is incomplete\");\n return this.buffer;\n }\n\n u8(value: number): void {\n this.reserve(1);\n this.viewBuffer.setUint8(this.offset, value);\n this.offset += 1;\n }\n\n u16(value: number): void {\n this.reserve(2);\n this.viewBuffer.setUint16(this.offset, value, true);\n this.offset += 2;\n }\n\n u32(value: number): void {\n this.reserve(4);\n this.viewBuffer.setUint32(this.offset, value, true);\n this.offset += 4;\n }\n\n u64(value: bigint): void {\n this.reserve(8);\n this.viewBuffer.setBigUint64(this.offset, value, true);\n this.offset += 8;\n }\n\n stableId(value: EditableArtifactStableId): void {\n const id = spreadsheetSheetId(value);\n this.u64(BigInt(`0x${id.slice(16)}`));\n this.u64(BigInt(`0x${id.slice(0, 16)}`));\n }\n\n bytes(value: Uint8Array): void {\n this.reserve(value.byteLength);\n this.buffer.set(value, this.offset);\n this.offset += value.byteLength;\n }\n\n private reserve(length: number): void {\n if (this.offset + length > this.buffer.byteLength)\n throw new RangeError(\"fixed binary writer overflow\");\n }\n}\n\nclass DynamicWriter {\n private buffer: Uint8Array;\n private viewBuffer: DataView;\n private offset = 0;\n\n constructor(private readonly maximum: number) {\n this.buffer = new Uint8Array(Math.min(1_024, maximum));\n this.viewBuffer = new DataView(this.buffer.buffer);\n }\n\n finish(): Uint8Array {\n return this.buffer.slice(0, this.offset);\n }\n\n u8(value: number): void {\n this.reserve(1);\n this.viewBuffer.setUint8(this.offset, value);\n this.offset += 1;\n }\n\n u32(value: number): void {\n this.reserve(4);\n this.viewBuffer.setUint32(this.offset, value, true);\n this.offset += 4;\n }\n\n u64(value: bigint): void {\n this.reserve(8);\n this.viewBuffer.setBigUint64(this.offset, value, true);\n this.offset += 8;\n }\n\n f64(value: number): void {\n this.reserve(8);\n this.viewBuffer.setFloat64(this.offset, value === 0 ? 0 : value, true);\n this.offset += 8;\n }\n\n stableId(value: EditableArtifactStableId): void {\n const id = spreadsheetSheetId(value);\n this.u64(BigInt(`0x${id.slice(16)}`));\n this.u64(BigInt(`0x${id.slice(0, 16)}`));\n }\n\n optionalStableId(value: EditableArtifactStableId | null): void {\n if (value === null) this.bytes(new Uint8Array(16));\n else this.stableId(value);\n }\n\n string(value: string): void {\n const bytes = boundedUtf8(\n value,\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES,\n \"projection string\",\n );\n this.u32(bytes.byteLength);\n this.bytes(bytes);\n }\n\n cell(cell: SpreadsheetArtifactProjectedCell): void {\n if (cell.formula === null) {\n this.u8(0);\n } else {\n this.u8(1);\n this.string(cell.formula);\n }\n const value = cell.value;\n switch (value.kind) {\n case \"empty\":\n this.u8(0);\n break;\n case \"boolean\":\n this.u8(value.value ? 2 : 1);\n break;\n case \"number\":\n this.u8(3);\n this.f64(value.value);\n break;\n case \"date\":\n this.u8(6);\n this.i64(BigInt(Date.parse(value.value)));\n break;\n case \"text\":\n this.u8(4);\n this.string(value.value);\n break;\n case \"error\":\n this.u8(5);\n this.formulaError(value.value);\n break;\n }\n }\n\n private formulaError(error: SpreadsheetArtifactFormulaError): void {\n if (typeof error === \"string\") {\n this.u8(FORMULA_ERRORS.indexOf(error as (typeof FORMULA_ERRORS)[number]));\n } else {\n this.u8(9);\n this.string(error.custom);\n }\n }\n\n private bytes(value: Uint8Array): void {\n this.reserve(value.byteLength);\n this.buffer.set(value, this.offset);\n this.offset += value.byteLength;\n }\n\n private i64(value: bigint): void {\n this.reserve(8);\n this.viewBuffer.setBigInt64(this.offset, value, true);\n this.offset += 8;\n }\n\n private reserve(additional: number): void {\n const required = this.offset + additional;\n if (!Number.isSafeInteger(required) || required > this.maximum) {\n throw projectionError(\"spreadsheet projection exceeds its byte limit\");\n }\n if (required <= this.buffer.byteLength) return;\n let size = Math.max(1, this.buffer.byteLength);\n while (size < required) size = Math.min(this.maximum, size * 2);\n const next = new Uint8Array(size);\n next.set(this.buffer.subarray(0, this.offset));\n this.buffer = next;\n this.viewBuffer = new DataView(next.buffer);\n }\n}\n\nclass Reader {\n private readonly viewBuffer: DataView;\n private offset = 0;\n\n constructor(private readonly input: Uint8Array) {\n this.viewBuffer = new DataView(input.buffer, input.byteOffset, input.byteLength);\n }\n\n u8(): number {\n this.reserve(1);\n return this.input[this.offset++]!;\n }\n\n u16(): number {\n this.reserve(2);\n const value = this.viewBuffer.getUint16(this.offset, true);\n this.offset += 2;\n return value;\n }\n\n u32(): number {\n this.reserve(4);\n const value = this.viewBuffer.getUint32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n u64(): bigint {\n this.reserve(8);\n const value = this.viewBuffer.getBigUint64(this.offset, true);\n this.offset += 8;\n return value;\n }\n\n f64(): number {\n this.reserve(8);\n const value = this.viewBuffer.getFloat64(this.offset, true);\n this.offset += 8;\n if (!Number.isFinite(value) || Object.is(value, -0)) {\n throw projectionError(\"spreadsheet projection number is noncanonical\");\n }\n return value;\n }\n\n stableId(label: string): EditableArtifactStableId {\n const counter = this.u64().toString(16).padStart(16, \"0\");\n const namespace = this.u64().toString(16).padStart(16, \"0\");\n try {\n return spreadsheetSheetId(`${namespace}${counter}`);\n } catch {\n throw projectionError(`${label} is reserved or noncanonical`);\n }\n }\n\n optionalStableId(present: boolean): EditableArtifactStableId | null {\n if (present) return this.stableId(\"projection generation id\");\n const bytes = this.bytes(16);\n if (bytes.some((byte) => byte !== 0)) {\n throw projectionError(\"projection has a generation id without its flag\");\n }\n return null;\n }\n\n string(): string {\n const length = this.u32();\n if (length > SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES) {\n throw projectionError(\"projection string exceeds its byte limit\");\n }\n try {\n return textDecoder.decode(this.bytes(length));\n } catch {\n throw projectionError(\"projection string is not canonical UTF-8\");\n }\n }\n\n formula(): string | null {\n const tag = this.u8();\n if (tag === 0) return null;\n if (tag !== 1) throw projectionError(\"projection formula tag is invalid\");\n const formula = this.string();\n if (formula.length === 0) throw projectionError(\"projection formula must not be empty\");\n return formula;\n }\n\n cellValue(): SpreadsheetArtifactProjectedCellValue {\n switch (this.u8()) {\n case 0:\n return EMPTY_VALUE;\n case 1:\n return Object.freeze({ kind: \"boolean\", value: false });\n case 2:\n return Object.freeze({ kind: \"boolean\", value: true });\n case 3:\n return Object.freeze({ kind: \"number\", value: this.f64() });\n case 4:\n return Object.freeze({ kind: \"text\", value: this.string() });\n case 5:\n return Object.freeze({ kind: \"error\", value: this.formulaError() });\n case 6:\n return Object.freeze({\n kind: \"date\",\n value: canonicalSpreadsheetDateFromMilliseconds(this.i64()),\n });\n default:\n throw projectionError(\"projection cell value tag is invalid\");\n }\n }\n\n done(message: string): void {\n if (this.offset !== this.input.byteLength) throw new TypeError(message);\n }\n\n private i64(): bigint {\n const bytes = this.bytes(8);\n return new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getBigInt64(0, true);\n }\n\n bytes(length: number): Uint8Array {\n this.reserve(length);\n const bytes = this.input.subarray(this.offset, this.offset + length);\n this.offset += length;\n return bytes;\n }\n\n private formulaError(): SpreadsheetArtifactFormulaError {\n const tag = this.u8();\n if (tag <= 8) return FORMULA_ERRORS[tag]!;\n if (tag === 9) return Object.freeze({ custom: this.string() });\n throw projectionError(\"projection formula error tag is invalid\");\n }\n\n private reserve(length: number): void {\n if (\n !Number.isSafeInteger(length) ||\n length < 0 ||\n this.offset + length > this.input.byteLength\n ) {\n throw projectionError(\"spreadsheet projection payload is truncated\");\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAaO,IAAM,qCAAqC;AAC3C,IAAM,uCAAuC;AAC7C,IAAM,4CAA4C,IAAI,OAAO;AAC7D,IAAM,yCAAyC;AAC/C,IAAM,0CAA0C;AAChD,IAAM,2CAA2C;AACjD,IAAM,mDAAmD,IAAI,OAAO;AACpE,IAAM,mDAAmD;AACzD,IAAM,mDAAmD;AAEhE,IAAM,cAAc,IAAI,YAAY,EAAE,OAAO,UAAU;AACvD,IAAM,mBAAmB,IAAI,YAAY,EAAE,OAAO,UAAU;AAC5D,IAAM,qBAAqB;AAC3B,IAAM,0BAA0B;AAChC,IAAM,iBAAiB;AACvB,IAAM,+BAA+B;AACrC,IAAM,mCAAmC;AACzC,IAAM,mCAAmC;AACzC,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AACxB,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASA,IAAM,aAAa;AACnB,IAAM,aAAa;AACnB,IAAM,cAAc,IAAI,YAAY;AACpC,IAAM,cAAc,IAAI,YAAY,SAAS,EAAE,OAAO,KAAK,CAAC;AA+GrD,SAAS,qCACd,OACY;AACZ,QAAM,QAAQ,uBAAuB,KAAK;AAC1C,QAAM,UAAU,IAAI,YAAY,4BAA4B;AAC5D,UAAQ,SAAS,MAAM,OAAO;AAC9B,UAAQ,IAAI,MAAM,QAAQ;AAC1B,UAAQ,IAAI,MAAM,WAAW;AAC7B,UAAQ,IAAI,MAAM,QAAQ;AAC1B,UAAQ,IAAI,MAAM,WAAW;AAC7B,SAAO,iBAAiB,GAAG,MAAM,UAAU,MAAM,UAAU,QAAQ,OAAO,CAAC;AAC7E;AAEO,SAAS,qCACd,OACY;AACZ,QAAM,QAAQ,uBAAuB,KAAK;AAC1C,SAAO,iBAAiB,GAAG,MAAM,WAAW,MAAM,UAAU,IAAI,WAAW,CAAC;AAC9E;AAEO,SAAS,qCACd,OACY;AACZ,QAAM,WAAW,YAAY,OAAO,0BAA0B;AAC9D,YAAU,UAAU,CAAC,QAAQ,OAAO,GAAG,0BAA0B;AACjE,MAAI,SAAS,SAAS,YAAY;AAChC,WAAO,qCAAqC,SAAS,KAAyC;AAAA,EAChG;AACA,MAAI,SAAS,SAAS,qBAAqB;AACzC,WAAO,qCAAqC,SAAS,KAAyC;AAAA,EAChG;AACA,QAAM,WAAW,uCAAuC;AAC1D;AAEO,SAAS,qCACd,OACgC;AAChC,QAAM,QAAQ,iBAAiB,KAAK;AACpC,MAAI,MAAM,SAAS,GAAG;AACpB,QAAI,MAAM,QAAQ,aAAa,8BAA8B;AAC3D,YAAM,WAAW,yCAAyC;AAAA,IAC5D;AACA,QAAI,MAAM,QAAQ,aAAa,8BAA8B;AAC3D,YAAM,WAAW,oDAAoD;AAAA,IACvE;AACA,UAAM,SAAS,IAAI,OAAO,MAAM,OAAO;AACvC,UAAM,QAAQ,uBAAuB;AAAA,MACnC,SAAS,OAAO,SAAS,mBAAmB;AAAA,MAC5C,UAAU,OAAO,IAAI;AAAA,MACrB,aAAa,OAAO,IAAI;AAAA,MACxB,UAAU,OAAO,IAAI;AAAA,MACrB,aAAa,OAAO,IAAI;AAAA,MACxB,UAAU,MAAM;AAAA,MAChB,UAAU,MAAM;AAAA,IAClB,CAAC;AACD,WAAO,KAAK,oDAAoD;AAChE,WAAO,OAAO,OAAO,EAAE,MAAM,YAAY,MAAM,CAAC;AAAA,EAClD;AACA,MAAI,MAAM,QAAQ,eAAe,GAAG;AAClC,UAAM,WAAW,oDAAoD;AAAA,EACvE;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,uBAAuB;AAAA,MAC5B,WAAW,MAAM;AAAA,MACjB,UAAU,MAAM;AAAA,IAClB,CAAC;AAAA,EACH,CAAC;AACH;AAEO,SAAS,mDAAmD,OAA+B;AAChG,QAAM,YAAY;AAAA,IAChB,qCAAqC,KAAK;AAAA,EAC5C;AACA,MAAI,CAAC,WAAW,OAAO,SAAS,EAAG,OAAM,WAAW,2CAA2C;AAC/F,SAAO;AACT;AAEO,SAAS,0CACd,OACA,eAAe,2CACH;AACZ,QAAM,aAAa,4BAA4B,KAAK;AACpD,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU,IAAI,cAAc,UAAU,0BAA0B,cAAc;AACpF,UAAQ,SAAS,WAAW,OAAO;AACnC,UAAQ,iBAAiB,WAAW,YAAY;AAChD,UAAQ,IAAI,WAAW,QAAQ;AAC/B,UAAQ,IAAI,WAAW,WAAW;AAClC,UAAQ,IAAI,WAAW,QAAQ;AAC/B,UAAQ,IAAI,WAAW,WAAW;AAClC,QAAM,gBAAgB,WAAW,qBAAqB;AACtD,MAAI,cAAe,iBAAgB,SAAS,UAAU;AACtD,aAAW,QAAQ,WAAW,OAAO;AACnC,YAAQ,IAAI,KAAK,MAAM,WAAW,QAAQ;AAC1C,YAAQ,IAAI,KAAK,SAAS,WAAW,WAAW;AAChD,YAAQ,KAAK,IAAI;AAAA,EACnB;AACA,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,KACV,WAAW,iBAAiB,OAAO,IAAI,qBACrC,gBAAgB,kBAAkB;AAAA,IACrC,WAAW,MAAM;AAAA,IACjB,QAAQ,OAAO;AAAA,IACf;AAAA,EACF;AACF;AAEO,SAAS,0CACd,OACA,eAAe,2CACH;AACZ,QAAM,aAAa,4BAA4B,KAAK;AACpD,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU,IAAI,cAAc,UAAU,0BAA0B,cAAc;AACpF,UAAQ,IAAI,WAAW,gBAAgB,aAAa,IAAI,CAAC;AACzD,aAAW,SAAS,WAAW,QAAQ;AACrC,YAAQ,SAAS,MAAM,OAAO;AAC9B,YAAQ,iBAAiB,MAAM,YAAY;AAC3C,YAAQ,OAAO,MAAM,IAAI;AACzB,QAAI,MAAM,eAAe,MAAM;AAC7B,cAAQ,GAAG,CAAC;AAAA,IACd,OAAO;AACL,cAAQ,GAAG,CAAC;AACZ,cAAQ,IAAI,MAAM,WAAW,QAAQ;AACrC,cAAQ,IAAI,MAAM,WAAW,WAAW;AACxC,cAAQ,IAAI,MAAM,WAAW,MAAM;AACnC,cAAQ,IAAI,MAAM,WAAW,SAAS;AAAA,IACxC;AACA,QAAI,WAAW,gBAAgB,WAAY,iBAAgB,SAAS,KAAK;AAAA,EAC3E;AACA,QAAM,cAAc,WAAW,OAAO,SAAS,KAAK,WAAW,OAAO,CAAC,EAAG,iBAAiB;AAC3F,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,KACV,cAAc,mBAAmB,MAC/B,WAAW,gBAAgB,aAAa,kBAAkB;AAAA,IAC7D,WAAW,OAAO;AAAA,IAClB,QAAQ,OAAO;AAAA,IACf;AAAA,EACF;AACF;AAEO,SAAS,0CACd,OACA,eAAe,2CACH;AACZ,QAAM,WAAW,YAAY,OAAO,+BAA+B;AACnE,YAAU,UAAU,CAAC,QAAQ,YAAY,GAAG,+BAA+B;AAC3E,MAAI,SAAS,SAAS,YAAY;AAChC,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,SAAS,SAAS,qBAAqB;AACzC,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,4CAA4C;AACpE;AAEO,SAAS,0CACd,OACqC;AACrC,QAAM,QAAQ,sBAAsB,KAAK;AACzC,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO,OAAO,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,YAAY,sBAAsB,KAAK;AAAA,IACzC,CAAC;AAAA,EACH;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,MAAM;AAAA,IACN,YAAY,sBAAsB,KAAK;AAAA,EACzC,CAAC;AACH;AAEO,SAAS,0CACd,OACA,UACuC;AACvC,QAAM,UAAU,0CAA0C,KAAK;AAC/D,MAAI,QAAQ,SAAS,WAAY,OAAM,gBAAgB,gCAAgC;AACvF,MAAI,aAAa,QAAW;AAC1B,UAAM,QAAQ,uBAAuB,QAAQ;AAC7C,mCAA+B,OAAO,MAAM,QAAQ;AACpD,QACE,QAAQ,WAAW,MAAM,SACzB,KAAK,IAAI,MAAM,UAAU,uCAAuC,GAChE;AACA,YAAM,gBAAgB,sDAAsD;AAAA,IAC9E;AACA,QACE,QAAQ,WAAW,YAAY,MAAM,WACrC,QAAQ,WAAW,aAAa,MAAM,YACtC,QAAQ,WAAW,gBAAgB,MAAM,eACzC,QAAQ,WAAW,aAAa,MAAM,YACtC,QAAQ,WAAW,gBAAgB,MAAM,aACzC;AACA,YAAM,gBAAgB,8CAA8C;AAAA,IACtE;AAAA,EACF;AACA,SAAO,QAAQ;AACjB;AAEO,SAAS,0CACd,OACA,UACuC;AACvC,QAAM,UAAU,0CAA0C,KAAK;AAC/D,MAAI,QAAQ,SAAS,qBAAqB;AACxC,UAAM,gBAAgB,yCAAyC;AAAA,EACjE;AACA,MAAI,aAAa,QAAW;AAC1B,UAAM,QAAQ,uBAAuB,QAAQ;AAC7C,mCAA+B,OAAO,MAAM,QAAQ;AACpD,QACE,QAAQ,WAAW,OAAO,SAC1B,KAAK,IAAI,MAAM,WAAW,wCAAwC,GAClE;AACA,YAAM,gBAAgB,uDAAuD;AAAA,IAC/E;AAAA,EACF;AACA,SAAO,QAAQ;AACjB;AAEO,SAAS,wDACd,OACY;AACZ,QAAM,YAAY;AAAA,IAChB,0CAA0C,KAAK;AAAA,EACjD;AACA,MAAI,CAAC,WAAW,OAAO,SAAS,GAAG;AACjC,UAAM,gBAAgB,gDAAgD;AAAA,EACxE;AACA,SAAO;AACT;AAUA,SAAS,iBACP,MACA,UACA,UACA,SACY;AACZ,QAAM,SAAS,IAAI,YAAY,qBAAqB,QAAQ,aAAa,cAAc;AACvF,SAAO,MAAM,WAAW;AACxB,SAAO,IAAI,kCAAkC;AAC7C,SAAO,IAAI,CAAC;AACZ,SAAO,GAAG,IAAI;AACd,SAAO,MAAM,IAAI,WAAW,CAAC,CAAC;AAC9B,SAAO,IAAI,QAAQ;AACnB,SAAO,IAAI,QAAQ;AACnB,SAAO,IAAI,QAAQ,UAAU;AAC7B,SAAO,MAAM,OAAO;AACpB,SAAO,IAAI,QAAQ,OAAO,KAAK,CAAC,CAAC;AACjC,QAAM,QAAQ,OAAO,OAAO;AAC5B,MAAI,MAAM,aAAa,sCAAsC;AAC3D,UAAM,WAAW,iDAAiD;AAAA,EACpE;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAKvB;AACD,eAAa,OAAO,0BAA0B;AAC9C,MAAI,MAAM,aAAa,sCAAsC;AAC3D,UAAM,WAAW,iDAAiD;AAAA,EACpE;AACA,MAAI,MAAM,aAAa,qBAAqB,gBAAgB;AAC1D,UAAM,WAAW,uCAAuC;AAAA,EAC1D;AACA,QAAM,SAAS,IAAI,OAAO,KAAK;AAC/B,MAAI,CAAC,WAAW,OAAO,MAAM,CAAC,GAAG,WAAW;AAC1C,UAAM,WAAW,oCAAoC;AACvD,QAAM,UAAU,OAAO,IAAI;AAC3B,MAAI,YAAY,oCAAoC;AAClD,UAAM,WAAW,0CAA0C,OAAO,EAAE;AAAA,EACtE;AACA,MAAI,OAAO,IAAI,MAAM,EAAG,OAAM,WAAW,+CAA+C;AACxF,QAAM,UAAU,OAAO,GAAG;AAC1B,MAAI,UAAU,EAAG,OAAM,WAAW,mCAAmC;AACrE,MAAI,OAAO,GAAG,MAAM,KAAK,OAAO,GAAG,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG;AAC/D,UAAM,WAAW,+CAA+C;AAAA,EAClE;AACA,QAAM,WAAW,OAAO,IAAI;AAC5B,QAAM,WAAW,OAAO,IAAI;AAC5B,QAAM,gBAAgB,OAAO,IAAI;AACjC,QAAM,WAAW,qBAAqB,gBAAgB;AACtD,MAAI,MAAM,aAAa,SAAU,OAAM,WAAW,uCAAuC;AACzF,MAAI,MAAM,aAAa;AACrB,UAAM,WAAW,kDAAkD;AACrE,QAAM,UAAU,OAAO,MAAM,aAAa;AAC1C,QAAM,WAAW,OAAO,IAAI;AAC5B,SAAO,KAAK,kDAAkD;AAC9D,MAAI,aAAa,QAAQ,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,GAAG;AAC5D,UAAM,WAAW,kDAAkD;AAAA,EACrE;AACA,SAAO,OAAO,OAAO,EAAE,MAAM,SAAkB,UAAU,UAAU,QAAQ,CAAC;AAC9E;AAEA,SAAS,sBACP,MACA,UACA,OACA,WACA,SACA,SACY;AACZ,QAAM,SAAS,IAAI,YAAY,0BAA0B,QAAQ,aAAa,cAAc;AAC5F,SAAO,MAAM,gBAAgB;AAC7B,SAAO,IAAI,kCAAkC;AAC7C,SAAO,IAAI,KAAK;AAChB,SAAO,GAAG,IAAI;AACd,SAAO,MAAM,IAAI,WAAW,CAAC,CAAC;AAC9B,SAAO,IAAI,QAAQ;AACnB,SAAO,IAAI,SAAS;AACpB,SAAO,IAAI,OAAO,QAAQ,UAAU,CAAC;AACrC,SAAO,MAAM,OAAO;AACpB,SAAO,IAAI,QAAQ,OAAO,KAAK,CAAC,CAAC;AACjC,QAAM,QAAQ,OAAO,OAAO;AAC5B,MAAI,MAAM,aAAa,WAAW,MAAM,aAAa,2CAA2C;AAC9F,UAAM,gBAAgB,sDAAsD;AAAA,EAC9E;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,OAAoC;AACjE,eAAa,OAAO,+BAA+B;AACnD,MAAI,MAAM,aAAa,2CAA2C;AAChE,UAAM,gBAAgB,sDAAsD;AAAA,EAC9E;AACA,MAAI,MAAM,aAAa,0BAA0B,gBAAgB;AAC/D,UAAM,gBAAgB,4CAA4C;AAAA,EACpE;AACA,QAAM,SAAS,IAAI,OAAO,KAAK;AAC/B,MAAI,CAAC,WAAW,OAAO,MAAM,CAAC,GAAG,gBAAgB,GAAG;AAClD,UAAM,gBAAgB,yCAAyC;AAAA,EACjE;AACA,QAAM,UAAU,OAAO,IAAI;AAC3B,MAAI,YAAY,oCAAoC;AAClD,UAAM,gBAAgB,+CAA+C,OAAO,EAAE;AAAA,EAChF;AACA,QAAM,QAAQ,OAAO,IAAI;AACzB,OAAK,QAAQ,EAAE,mBAAmB,sBAAsB,GAAG;AACzD,UAAM,gBAAgB,+CAA+C;AAAA,EACvE;AACA,QAAM,UAAU,OAAO,GAAG;AAC1B,MAAI,UAAU,EAAG,OAAM,gBAAgB,wCAAwC;AAC/E,MAAI,OAAO,GAAG,MAAM,KAAK,OAAO,GAAG,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG;AAC/D,UAAM,gBAAgB,oDAAoD;AAAA,EAC5E;AACA,QAAM,WAAW,OAAO,IAAI;AAC5B,QAAM,YAAY,OAAO,IAAI;AAC7B,QAAM,mBAAmB,OAAO,IAAI;AACpC,MAAI,mBAAmB,OAAO,yCAAyC,GAAG;AACxE,UAAM,gBAAgB,uDAAuD;AAAA,EAC/E;AACA,QAAM,gBAAgB,OAAO,gBAAgB;AAC7C,QAAM,WAAW,0BAA0B,gBAAgB;AAC3D,MAAI,MAAM,aAAa;AACrB,UAAM,gBAAgB,4CAA4C;AACpE,MAAI,MAAM,aAAa,UAAU;AAC/B,UAAM,gBAAgB,uDAAuD;AAAA,EAC/E;AACA,QAAM,UAAU,OAAO,MAAM,aAAa;AAC1C,QAAM,WAAW,OAAO,IAAI;AAC5B,SAAO,KAAK,uDAAuD;AACnE,MAAI,aAAa,QAAQ,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,GAAG;AAC5D,UAAM,gBAAgB,uDAAuD;AAAA,EAC/E;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,sBAAsB,OAA+D;AAC5F,MAAI,MAAM,YAAY,yCAAyC;AAC7D,UAAM,gBAAgB,iDAAiD;AAAA,EACzE;AACA,MAAI,MAAM,QAAQ,aAAa,mCAAmC,MAAM,YAAY,IAAI;AACtF,UAAM,gBAAgB,0CAA0C;AAAA,EAClE;AACA,QAAM,SAAS,IAAI,OAAO,MAAM,OAAO;AACvC,QAAM,UAAU,OAAO,SAAS,mBAAmB;AACnD,QAAM,eAAe,OAAO,kBAAkB,MAAM,QAAQ,sBAAsB,CAAC;AACnF,QAAM,WAAW,OAAO,IAAI;AAC5B,QAAM,cAAc,OAAO,IAAI;AAC/B,QAAM,WAAW,OAAO,IAAI;AAC5B,QAAM,cAAc,OAAO,IAAI;AAC/B,2BAAyB,UAAU,aAAa,UAAU,WAAW;AACrE,QAAM,cAAc,MAAM,QAAQ,qBAAqB,IAAI,eAAe,MAAM,IAAI,CAAC;AACrF,0BAAwB,YAAY,UAAU,UAAU,aAAa,WAAW;AAChF,QAAM,QAA4C,CAAC;AACnD,MAAI,kBAAkB;AACtB,WAAS,QAAQ,GAAG,QAAQ,MAAM,WAAW,SAAS,GAAG;AACvD,UAAM,cAAc,OAAO,IAAI;AAC/B,UAAM,iBAAiB,OAAO,IAAI;AAClC,QAAI,eAAe,YAAY,kBAAkB,aAAa;AAC5D,YAAM,gBAAgB,gDAAgD;AAAA,IACxE;AACA,UAAM,UAAU,cAAc,cAAc;AAC5C,QAAI,CAAC,OAAO,cAAc,OAAO,KAAK,WAAW,iBAAiB;AAChE,YAAM,gBAAgB,wDAAwD;AAAA,IAChF;AACA,sBAAkB;AAClB,UAAM,UAAU,OAAO,QAAQ;AAC/B,UAAM,QAAQ,OAAO,UAAU;AAC/B,QAAI,YAAY,QAAQ,MAAM,SAAS,SAAS;AAC9C,YAAM,gBAAgB,wCAAwC;AAAA,IAChE;AACA,UAAM;AAAA,MACJ,OAAO,OAAO;AAAA,QACZ,KAAK,WAAW;AAAA,QAChB,QAAQ,cAAc;AAAA,QACtB;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,KAAK,qDAAqD;AACjE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,OAAO,OAAO,KAAK;AAAA,EAC5B,CAAC;AACH;AAEA,SAAS,sBAAsB,OAA+D;AAC5F,MAAI,MAAM,YAAY,0CAA0C;AAC9D,UAAM,gBAAgB,kDAAkD;AAAA,EAC1E;AACA,MAAI,MAAM,QAAQ,aAAa,mCAAmC,MAAM,YAAY,IAAI;AACtF,UAAM,gBAAgB,0CAA0C;AAAA,EAClE;AACA,QAAM,SAAS,IAAI,OAAO,MAAM,OAAO;AACvC,QAAM,WAAW,OAAO,IAAI;AAC5B,OAAK,WAAW,CAAC,OAAO,KAAM,aAAa,QAAS,MAAM,QAAQ,qBAAqB,IAAI;AACzF,UAAM,gBAAgB,2DAA2D;AAAA,EACnF;AACA,QAAM,kBAAkB,MAAM,QAAQ,sBAAsB;AAC5D,MAAI,MAAM,cAAc,KAAK,gBAAgB;AAC3C,UAAM,gBAAgB,6DAA6D;AAAA,EACrF;AACA,QAAM,SAA6C,CAAC;AACpD,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,QAAQ,oBAAI,IAAY;AAC9B,WAAS,QAAQ,GAAG,QAAQ,MAAM,WAAW,SAAS,GAAG;AACvD,UAAM,UAAU,OAAO,SAAS,mBAAmB;AACnD,QAAI,IAAI,IAAI,OAAO,EAAG,OAAM,gBAAgB,kDAAkD;AAC9F,QAAI,IAAI,OAAO;AACf,UAAM,eAAe,OAAO,iBAAiB,cAAc;AAC3D,UAAM,OAAO,kBAAkB,OAAO,OAAO,GAAG,qBAAqB;AACrE,UAAM,aAAa,KAAK,YAAY;AACpC,QAAI,MAAM,IAAI,UAAU,GAAG;AACzB,YAAM,gBAAgB,qEAAqE;AAAA,IAC7F;AACA,UAAM,IAAI,UAAU;AACpB,UAAM,YAAY,OAAO,GAAG;AAC5B,QAAI,YAAY,EAAG,OAAM,gBAAgB,qCAAqC;AAC9E,QAAI,aAAmD;AACvD,QAAI,cAAc,GAAG;AACnB,YAAM,WAAW,OAAO,IAAI;AAC5B,YAAM,cAAc,OAAO,IAAI;AAC/B,YAAM,SAAS,OAAO,IAAI;AAC1B,YAAM,YAAY,OAAO,IAAI;AAC7B,UAAI,WAAW,UAAU,cAAc,WAAW;AAChD,cAAM,gBAAgB,sCAAsC;AAAA,MAC9D;AACA,mBAAa,OAAO,OAAO,EAAE,UAAU,aAAa,QAAQ,UAAU,CAAC;AAAA,IACzE;AACA,UAAM,cAAc,MAAM,QAAQ,qBAAqB,IAAI,eAAe,MAAM,IAAI,CAAC;AACrF,WAAO,KAAK,OAAO,OAAO,EAAE,SAAS,cAAc,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC;AAAA,EACvF;AACA,SAAO,KAAK,qDAAqD;AACjE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,iBAAiB,OAAO,OAAO,EAAE,YAAY,aAAa,GAAG,QAAQ,OAAO,QAAQ,MAAM,CAAC;AAAA,IAC3F,QAAQ,OAAO,OAAO,MAAM;AAAA,EAC9B,CAAC;AACH;AAEA,SAAS,uBAAuB,OAAkD;AAChF,QAAM,QAAQ,YAAY,OAAO,4BAA4B;AAC7D;AAAA,IACE;AAAA,IACA,CAAC,eAAe,YAAY,YAAY,YAAY,WAAW,eAAe,UAAU;AAAA,IACxF;AAAA,EACF;AACA,QAAM,UAAU,mBAAmB,cAAc,MAAM,SAAS,kBAAkB,CAAC;AACnF,QAAM,WAAW,OAAO,MAAM,UAAU,mBAAmB;AAC3D,QAAM,cAAc,OAAO,MAAM,aAAa,sBAAsB;AACpE,QAAM,WAAW,eAAe,MAAM,UAAU,mBAAmB;AACnE,QAAM,cAAc,eAAe,MAAM,aAAa,sBAAsB;AAC5E,2BAAyB,UAAU,aAAa,UAAU,WAAW;AACrE,QAAM,WAAW,eAAe,MAAM,UAAU,mBAAmB;AACnE,QAAM,WAAW,eAAe,MAAM,UAAU,mBAAmB;AACnE,MAAI,WAAW,kDAAkD;AAC/D,UAAM,WAAW,gDAAgD;AAAA,EACnE;AACA,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,uBAAuB,OAAkD;AAChF,QAAM,QAAQ,YAAY,OAAO,4BAA4B;AAC7D,YAAU,OAAO,CAAC,YAAY,WAAW,GAAG,4BAA4B;AACxE,QAAM,YAAY,eAAe,MAAM,WAAW,oBAAoB;AACtE,QAAM,WAAW,eAAe,MAAM,UAAU,mBAAmB;AACnE,MAAI,WAAW,kDAAkD;AAC/D,UAAM,WAAW,gDAAgD;AAAA,EACnE;AACA,SAAO,OAAO,OAAO,EAAE,WAAW,SAAS,CAAC;AAC9C;AAEA,SAAS,4BAA4B,OAAuD;AAC1F,QAAM,aAAa,YAAY,OAAO,iCAAiC;AACvE;AAAA,IACE;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAI,WAAW,qBAAqB,SAAY,CAAC,IAAI;AAAA,IACvD,EAAE,KAAK;AAAA,IACP;AAAA,EACF;AACA,QAAM,WAAW,OAAO,WAAW,UAAU,mBAAmB;AAChE,QAAM,UAAU,mBAAmB,cAAc,WAAW,SAAS,kBAAkB,CAAC;AACxF,QAAM,eAAe,qBAAqB,WAAW,cAAc,uBAAuB;AAC1F,QAAM,WAAW,OAAO,WAAW,UAAU,mBAAmB;AAChE,QAAM,cAAc,OAAO,WAAW,aAAa,sBAAsB;AACzE,QAAM,WAAW,eAAe,WAAW,UAAU,mBAAmB;AACxE,QAAM,cAAc,eAAe,WAAW,aAAa,sBAAsB;AACjF,2BAAyB,UAAU,aAAa,UAAU,WAAW;AACrE,QAAM,aACJ,WAAW,qBAAqB,SAAY,CAAC,IAAI,oBAAoB,UAAU;AACjF,0BAAwB,YAAY,UAAU,UAAU,aAAa,WAAW;AAChF,MAAI,CAAC,MAAM,QAAQ,WAAW,KAAK,EAAG,OAAM,gBAAgB,iCAAiC;AAC7F,MAAI,WAAW,MAAM,SAAS,yCAAyC;AACrE,UAAM,gBAAgB,iDAAiD;AAAA,EACzE;AACA,QAAM,QAA4C,CAAC;AACnD,MAAI,kBAAkB;AACtB,WAAS,QAAQ,GAAG,QAAQ,WAAW,MAAM,QAAQ,SAAS,GAAG;AAC/D,UAAM,OAAO,uBAAuB,gBAAgB,WAAW,OAAO,OAAO,gBAAgB,CAAC;AAC9F,QACE,KAAK,MAAM,YACX,KAAK,OAAO,WAAW,YACvB,KAAK,SAAS,eACd,KAAK,UAAU,cAAc,aAC7B;AACA,YAAM,gBAAgB,gDAAgD;AAAA,IACxE;AACA,UAAM,WAAW,KAAK,MAAM,YAAY,eAAe,KAAK,SAAS;AACrE,QAAI,CAAC,OAAO,cAAc,OAAO,KAAK,WAAW,iBAAiB;AAChE,YAAM,gBAAgB,wDAAwD;AAAA,IAChF;AACA,sBAAkB;AAClB,QAAI,KAAK,YAAY,QAAQ,KAAK,MAAM,SAAS,SAAS;AACxD,YAAM,gBAAgB,wCAAwC;AAAA,IAChE;AACA,UAAM,KAAK,IAAI;AAAA,EACjB;AACA,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,OAAO,OAAO,KAAK;AAAA,EAC5B,CAAC;AACH;AAEA,SAAS,4BAA4B,OAAuD;AAC1F,QAAM,aAAa,YAAY,OAAO,iCAAiC;AACvE;AAAA,IACE;AAAA,IACA,CAAC,mBAAmB,YAAY,QAAQ;AAAA,IACxC;AAAA,EACF;AACA,QAAM,WAAW,OAAO,WAAW,UAAU,mBAAmB;AAChE,QAAM,WAAW,YAAY,WAAW,iBAAiB,0BAA0B;AACnF,YAAU,UAAU,CAAC,cAAc,UAAU,QAAQ,GAAG,0BAA0B;AAClF,MACE,OAAO,SAAS,eAAe,aAC/B,SAAS,WAAW,SACpB,SAAS,WAAW,OACpB;AACA,UAAM,gBAAgB,uCAAuC;AAAA,EAC/D;AACA,MAAI,CAAC,MAAM,QAAQ,WAAW,MAAM,EAAG,OAAM,gBAAgB,kCAAkC;AAC/F,MAAI,WAAW,OAAO,SAAS,0CAA0C;AACvE,UAAM,gBAAgB,kDAAkD;AAAA,EAC1E;AACA,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,QAAQ,oBAAI,IAAY;AAC9B,QAAM,SAA6C,CAAC;AACpD,MAAI,qBAAqC;AACzC,WAAS,QAAQ,GAAG,QAAQ,WAAW,OAAO,QAAQ,SAAS,GAAG;AAChE,UAAM,QAAQ;AAAA,MACZ,gBAAgB,WAAW,QAAQ,OAAO,iBAAiB;AAAA,MAC3D;AAAA,IACF;AACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAI,SAAS,aAAa,iBAAiB,CAAC;AAAA,MAC9C,EAAE,KAAK;AAAA,MACP;AAAA,IACF;AACA,UAAM,UAAU,mBAAmB,cAAc,MAAM,SAAS,kBAAkB,CAAC;AACnF,QAAI,IAAI,IAAI,OAAO,EAAG,OAAM,gBAAgB,kDAAkD;AAC9F,QAAI,IAAI,OAAO;AACf,UAAM,eAAe,qBAAqB,MAAM,cAAc,uBAAuB;AACrF,UAAM,UAAU,iBAAiB;AACjC,QAAI,uBAAuB,QAAQ,uBAAuB,SAAS;AACjE,YAAM,gBAAgB,0DAA0D;AAAA,IAClF;AACA,yBAAqB;AACrB,UAAM,OAAO;AAAA,MACX,cAAc,MAAM,MAAM,qBAAqB;AAAA,MAC/C;AAAA,IACF;AACA,UAAM,aAAa,KAAK,YAAY;AACpC,QAAI,MAAM,IAAI,UAAU,GAAG;AACzB,YAAM,gBAAgB,qEAAqE;AAAA,IAC7F;AACA,UAAM,IAAI,UAAU;AACpB,UAAM,aAAa,MAAM,eAAe,OAAO,OAAO,oBAAoB,MAAM,UAAU;AAC1F,WAAO;AAAA,MACL,OAAO,OAAO;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAI,SAAS,aAAa,oBAAoB,KAAK,IAAI,CAAC;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,iBAAiB,OAAO,OAAO;AAAA,MAC7B,YAAY,SAAS;AAAA,MACrB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,QAAQ,OAAO,OAAO,MAAM;AAAA,EAC9B,CAAC;AACH;AAEA,SAAS,oBAAoB,OAA+D;AAC1F,MACE,MAAM,qBAAqB,kCAC3B,MAAM,uBAAuB,kCAC7B;AACA,UAAM,gBAAgB,gCAAgC;AAAA,EACxD;AACA,QAAM,mBAAmB,CACvB,OACA,kBAC2C;AAC3C,QAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,4CAA4C;AACtF,YAAM,gBAAgB,iCAAiC;AACzD,QAAI,WAAW;AACf,UAAM,UAAyC,CAAC;AAChD,aAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU,GAAG;AACvD,YAAM,QAAQ,gBAAgB,OAAO,QAAQ,mBAAmB;AAChE,UAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAC5C,cAAM,gBAAgB,8CAA8C;AACtE,YAAM,QAAQ,OAAO,gBAAgB,OAAO,GAAG,iBAAiB,GAAG,aAAa,MAAM,EAAE;AACxF,YAAM,SAAS;AAAA,QACb,gBAAgB,OAAO,GAAG,kBAAkB;AAAA,QAC5C;AAAA,MACF;AACA,UACE,SAAS,YACT,SAAS,oCACT,WAAW;AAEX,cAAM,gBAAgB,oEAAoE;AAC5F,iBAAW;AACX,cAAQ,KAAK,OAAO,OAAO,CAAC,OAAO,MAAM,CAAU,CAAC;AAAA,IACtD;AACA,WAAO,OAAO,OAAO,OAAO;AAAA,EAC9B;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,IACpB,YAAY,iBAAiB,MAAM,YAAY,8BAA8B;AAAA,IAC7E,cAAc,iBAAiB,MAAM,cAAc,gCAAgC;AAAA,EACrF,CAAC;AACH;AAEA,SAAS,gBAAgB,QAAuB,YAAiD;AAC/F,SAAO,IAAI,WAAW,gBAAiB;AACvC,SAAO,IAAI,WAAW,kBAAmB;AACzC,aAAW,WAAW,CAAC,WAAW,YAAa,WAAW,YAAa,GAAG;AACxE,WAAO,IAAI,QAAQ,MAAM;AACzB,eAAW,CAAC,OAAO,MAAM,KAAK,SAAS;AACrC,aAAO,IAAI,KAAK;AAChB,aAAO,IAAI,MAAM;AAAA,IACnB;AAAA,EACF;AACF;AAEA,SAAS,eAAe,QAA+C;AACrE,QAAM,mBAAmB,OAAO,IAAI;AACpC,QAAM,qBAAqB,OAAO,IAAI;AACtC,QAAM,OAAwC,CAAC;AAC/C,WAAS,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG;AACtC,UAAM,QAAQ,OAAO,IAAI;AACzB,QAAI,QAAQ,4CAA4C;AACtD,YAAM,gBAAgB,iCAAiC;AACzD,UAAM,UAAyC,CAAC;AAChD,aAAS,QAAQ,GAAG,QAAQ,OAAO,SAAS,EAAG,SAAQ,KAAK,CAAC,OAAO,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC;AACxF,SAAK,KAAK,OAAO;AAAA,EACnB;AACA,SAAO,oBAAoB;AAAA,IACzB;AAAA,IACA;AAAA,IACA,YAAY,KAAK,CAAC;AAAA,IAClB,cAAc,KAAK,CAAC;AAAA,EACtB,CAAC;AACH;AAEA,SAAS,wBACP,YACA,UACA,UACA,aACA,aACM;AACN,MACE,WAAW,YAAY,KAAK,CAAC,CAAC,KAAK,MAAM,QAAQ,YAAY,QAAQ,YAAY,QAAQ,KACzF,WAAW,cAAc;AAAA,IACvB,CAAC,CAAC,KAAK,MAAM,QAAQ,eAAe,QAAQ,eAAe;AAAA,EAC7D;AAEA,UAAM,gBAAgB,iCAAiC;AAC3D;AAEA,SAAS,uBAAuB,OAAkD;AAChF,QAAM,OAAO,YAAY,OAAO,gBAAgB;AAChD,YAAU,MAAM,CAAC,UAAU,WAAW,OAAO,OAAO,GAAG,gBAAgB;AACvE,QAAM,MAAM,OAAO,KAAK,KAAK,oBAAoB;AACjD,QAAM,SAAS,OAAO,KAAK,QAAQ,uBAAuB;AAC1D,MAAI;AACJ,MAAI,KAAK,YAAY,MAAM;AACzB,cAAU;AAAA,EACZ,OAAO;AACL,cAAU,cAAc,KAAK,SAAS,wBAAwB;AAC9D,QAAI,QAAQ,WAAW,EAAG,OAAM,gBAAgB,0CAA0C;AAC1F;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,wBAAwB,KAAK,KAAK;AAAA,EAC3C,CAAC;AACH;AAEA,SAAS,wBAAwB,OAAuD;AACtF,QAAM,QAAQ,YAAY,OAAO,sBAAsB;AACvD,MAAI,MAAM,SAAS,SAAS;AAC1B,cAAU,OAAO,CAAC,MAAM,GAAG,4BAA4B;AACvD,WAAO;AAAA,EACT;AACA,MAAI,MAAM,SAAS,WAAW;AAC5B,cAAU,OAAO,CAAC,QAAQ,OAAO,GAAG,8BAA8B;AAClE,QAAI,OAAO,MAAM,UAAU,UAAW,OAAM,gBAAgB,+BAA+B;AAC3F,WAAO,OAAO,OAAO,EAAE,MAAM,WAAW,OAAO,MAAM,MAAM,CAAC;AAAA,EAC9D;AACA,MAAI,MAAM,SAAS,UAAU;AAC3B,cAAU,OAAO,CAAC,QAAQ,OAAO,GAAG,6BAA6B;AACjE,QAAI,OAAO,MAAM,UAAU,YAAY,CAAC,OAAO,SAAS,MAAM,KAAK,GAAG;AACpE,YAAM,gBAAgB,kCAAkC;AAAA,IAC1D;AACA,WAAO,OAAO,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,MAAM,UAAU,IAAI,IAAI,MAAM;AAAA,IACvC,CAAC;AAAA,EACH;AACA,MAAI,MAAM,SAAS,QAAQ;AACzB,cAAU,OAAO,CAAC,QAAQ,OAAO,GAAG,2BAA2B;AAC/D,WAAO,OAAO,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,oBAAoB,MAAM,KAAK;AAAA,IACxC,CAAC;AAAA,EACH;AACA,MAAI,MAAM,SAAS,QAAQ;AACzB,cAAU,OAAO,CAAC,QAAQ,OAAO,GAAG,2BAA2B;AAC/D,UAAM,OAAO,cAAc,MAAM,OAAO,iBAAiB;AACzD,gBAAY,MAAM,kDAAkD,iBAAiB;AACrF,WAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EACpD;AACA,MAAI,MAAM,SAAS,SAAS;AAC1B,cAAU,OAAO,CAAC,QAAQ,OAAO,GAAG,4BAA4B;AAChE,WAAO,OAAO,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,sBAAsB,MAAM,KAAK;AAAA,IAC1C,CAAC;AAAA,EACH;AACA,QAAM,gBAAgB,sCAAsC;AAC9D;AAEA,SAAS,oBAAoB,OAAwB;AACnD,uCAAqC,KAAK;AAC1C,SAAO;AACT;AAEA,SAAS,sBAAsB,OAAiD;AAC9E,MAAI,OAAO,UAAU,YAAY,mBAAmB,IAAI,KAAK,GAAG;AAC9D,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,YAAY,OAAO,sBAAsB;AACvD,YAAU,OAAO,CAAC,QAAQ,GAAG,sBAAsB;AACnD,QAAM,SAAS,cAAc,MAAM,QAAQ,sBAAsB;AACjE,cAAY,QAAQ,kDAAkD,sBAAsB;AAC5F,SAAO,OAAO,OAAO,EAAE,OAAO,CAAC;AACjC;AAEA,SAAS,oBAAoB,OAA+C;AAC1E,QAAM,SAAS,YAAY,OAAO,sBAAsB;AACxD,YAAU,QAAQ,CAAC,aAAa,UAAU,eAAe,UAAU,GAAG,sBAAsB;AAC5F,QAAM,WAAW,OAAO,OAAO,UAAU,sBAAsB;AAC/D,QAAM,cAAc,OAAO,OAAO,aAAa,yBAAyB;AACxE,QAAM,SAAS,OAAO,OAAO,QAAQ,oBAAoB;AACzD,QAAM,YAAY,OAAO,OAAO,WAAW,uBAAuB;AAClE,MAAI,WAAW,UAAU,cAAc,WAAW;AAChD,UAAM,gBAAgB,sCAAsC;AAAA,EAC9D;AACA,SAAO,OAAO,OAAO,EAAE,UAAU,aAAa,QAAQ,UAAU,CAAC;AACnE;AAEA,SAAS,yBACP,UACA,aACA,UACA,aACM;AACN,MAAI,WAAW,KAAK,cAAc,GAAG;AACnC,UAAM,WAAW,kCAAkC;AAAA,EACrD;AACA,MAAI,WAAW,IAAI,aAAa,YAAY,cAAc,IAAI,aAAa,aAAa;AACtF,UAAM,WAAW,4CAA4C;AAAA,EAC/D;AACA,QAAM,OAAO,WAAW;AACxB,MAAI,CAAC,OAAO,cAAc,IAAI,KAAK,OAAO,wCAAwC;AAChF,UAAM,WAAW,sCAAsC;AAAA,EACzD;AACF;AAEA,SAAS,kBAAkB,OAAe,OAAuB;AAC/D,cAAY,OAAO,kDAAkD,KAAK;AAC1E,MACE,MAAM,WAAW,KACjB,MAAM,KAAK,MAAM,SACjB,MAAM,SAAS,MACf,iBAAiB,KAAK,KAAK,GAC3B;AACA,UAAM,gBAAgB,GAAG,KAAK,8CAA8C;AAAA,EAC9E;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,OAAgB,OAAgD;AAC5F,SAAO,UAAU,OAAO,OAAO,mBAAmB,cAAc,OAAO,KAAK,CAAC;AAC/E;AAEA,SAAS,+BAA+B,OAAmB,WAAyB;AAClF,MAAI,MAAM,aAAa,KAAK,IAAI,WAAW,yCAAyC,GAAG;AACrF,UAAM,gBAAgB,yDAAyD;AAAA,EACjF;AACF;AAEA,SAAS,2BAA2B,OAAe,SAAyB;AAC1E,QAAM,UAAU,eAAe,OAAO,yBAAyB;AAC/D,QAAM,YAAY,KAAK,IAAI,SAAS,yCAAyC;AAC7E,MAAI,YAAY,QAAS,OAAM,gBAAgB,iDAAiD;AAChG,SAAO;AACT;AAEA,SAAS,aAAa,OAAgB,OAA4C;AAChF,MAAI,EAAE,iBAAiB,YAAa,OAAM,IAAI,UAAU,GAAG,KAAK,uBAAuB;AACzF;AAEA,SAAS,cAAc,OAAgB,OAAuB;AAC5D,MAAI,OAAO,UAAU,SAAU,OAAM,IAAI,UAAU,GAAG,KAAK,mBAAmB;AAC9E,SAAO;AACT;AAEA,SAAS,OAAO,OAAgB,OAAuB;AACrD,MAAI,CAAC,OAAO,UAAU,KAAK,KAAM,QAAmB,KAAM,QAAmB,YAAY;AACvF,UAAM,IAAI,UAAU,GAAG,KAAK,mBAAmB;AAAA,EACjD;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAAgB,OAAuB;AAC7D,QAAM,SAAS,OAAO,OAAO,KAAK;AAClC,MAAI,WAAW,EAAG,OAAM,IAAI,UAAU,GAAG,KAAK,kBAAkB;AAChE,SAAO;AACT;AAEA,SAAS,OAAO,OAAgB,OAAuB;AACrD,MAAI,OAAO,UAAU,YAAY,QAAQ,MAAM,QAAQ,YAAY;AACjE,UAAM,IAAI,UAAU,GAAG,KAAK,0BAA0B;AAAA,EACxD;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAgB,OAAwC;AAC3E,MACE,OAAO,UAAU,YACjB,UAAU,QACV,MAAM,QAAQ,KAAK,KACnB,OAAO,eAAe,KAAK,MAAM,OAAO,WACxC;AACA,UAAM,IAAI,UAAU,GAAG,KAAK,yBAAyB;AAAA,EACvD;AACA,SAAO;AACT;AAEA,SAAS,UACP,OACA,UACA,OACM;AACN,QAAM,OAAO,QAAQ,QAAQ,KAAK;AAClC,MAAI,KAAK,KAAK,CAAC,QAAQ,OAAO,QAAQ,QAAQ;AAC5C,UAAM,IAAI,UAAU,GAAG,KAAK,oBAAoB;AAClD,QAAM,SAAU,KAAkB,KAAK,gBAAgB;AACvD,MAAI,OAAO,WAAW,SAAS,UAAU,OAAO,KAAK,CAAC,KAAK,UAAU,QAAQ,SAAS,KAAK,CAAC,GAAG;AAC7F,UAAM,IAAI,UAAU,GAAG,KAAK,4BAA4B,SAAS,KAAK,IAAI,CAAC,EAAE;AAAA,EAC/E;AACA,aAAW,OAAO,QAAQ;AACxB,UAAM,aAAa,OAAO,yBAAyB,OAAO,GAAG;AAC7D,QAAI,CAAC,cAAc,EAAE,WAAW,eAAe,CAAC,WAAW,YAAY;AACrE,YAAM,IAAI,UAAU,GAAG,KAAK,4CAA4C;AAAA,IAC1E;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,OAA2B,OAAe,OAAwB;AACzF,MAAI,CAAC,OAAO,OAAO,OAAO,KAAK,EAAG,OAAM,IAAI,UAAU,GAAG,KAAK,gBAAgB;AAC9E,SAAO,MAAM,KAAK;AACpB;AAEA,SAAS,iBAAiB,MAAc,OAAuB;AAC7D,SAAO,OAAO,QAAQ,KAAK,OAAO,QAAQ,IAAI;AAChD;AAEA,SAAS,YAAY,OAAe,SAAiB,OAA2B;AAC9E,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,OAAO,MAAM,WAAW,KAAK;AACnC,QAAI,QAAQ,SAAU,QAAQ,OAAQ;AACpC,YAAM,OAAO,MAAM,WAAW,QAAQ,CAAC;AACvC,UAAI,EAAE,QAAQ,SAAU,QAAQ,QAAS;AACvC,cAAM,IAAI,UAAU,GAAG,KAAK,iCAAiC;AAAA,MAC/D;AACA,eAAS;AAAA,IACX,WAAW,QAAQ,SAAU,QAAQ,OAAQ;AAC3C,YAAM,IAAI,UAAU,GAAG,KAAK,iCAAiC;AAAA,IAC/D;AAAA,EACF;AACA,QAAM,QAAQ,YAAY,OAAO,KAAK;AACtC,MAAI,MAAM,aAAa,QAAS,OAAM,IAAI,WAAW,GAAG,KAAK,yBAAyB;AACtF,SAAO;AACT;AAEA,SAAS,WAAW,MAAkB,OAA4B;AAChE,SAAO,KAAK,eAAe,MAAM,cAAc,KAAK,MAAM,CAAC,MAAM,UAAU,SAAS,MAAM,KAAK,CAAC;AAClG;AAEA,SAAS,WAAW,SAA4B;AAC9C,SAAO,IAAI,UAAU,OAAO;AAC9B;AAEA,SAAS,gBAAgB,SAA4B;AACnD,SAAO,IAAI,UAAU,OAAO;AAC9B;AAEA,IAAM,cAAqD,OAAO,OAAO;AAAA,EACvE,MAAM;AACR,CAAC;AAED,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,qBAAqB,IAAI,IAAY,cAAc;AAEzD,IAAM,cAAN,MAAkB;AAAA,EACC;AAAA,EACA;AAAA,EACT,SAAS;AAAA,EAEjB,YAAY,QAAgB;AAC1B,SAAK,SAAS,IAAI,WAAW,MAAM;AACnC,SAAK,aAAa,IAAI,SAAS,KAAK,OAAO,MAAM;AAAA,EACnD;AAAA,EAEA,OAAmB;AACjB,WAAO,KAAK,OAAO,SAAS,GAAG,KAAK,MAAM;AAAA,EAC5C;AAAA,EAEA,SAAqB;AACnB,QAAI,KAAK,WAAW,KAAK,OAAO;AAC9B,YAAM,IAAI,UAAU,mCAAmC;AACzD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,GAAG,OAAqB;AACtB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,SAAS,KAAK,QAAQ,KAAK;AAC3C,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,OAAqB;AACvB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,UAAU,KAAK,QAAQ,OAAO,IAAI;AAClD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,OAAqB;AACvB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,UAAU,KAAK,QAAQ,OAAO,IAAI;AAClD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,OAAqB;AACvB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,aAAa,KAAK,QAAQ,OAAO,IAAI;AACrD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,SAAS,OAAuC;AAC9C,UAAM,KAAK,mBAAmB,KAAK;AACnC,SAAK,IAAI,OAAO,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AACpC,SAAK,IAAI,OAAO,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;AAAA,EACzC;AAAA,EAEA,MAAM,OAAyB;AAC7B,SAAK,QAAQ,MAAM,UAAU;AAC7B,SAAK,OAAO,IAAI,OAAO,KAAK,MAAM;AAClC,SAAK,UAAU,MAAM;AAAA,EACvB;AAAA,EAEQ,QAAQ,QAAsB;AACpC,QAAI,KAAK,SAAS,SAAS,KAAK,OAAO;AACrC,YAAM,IAAI,WAAW,8BAA8B;AAAA,EACvD;AACF;AAEA,IAAM,gBAAN,MAAoB;AAAA,EAKlB,YAA6B,SAAiB;AAAjB;AAC3B,SAAK,SAAS,IAAI,WAAW,KAAK,IAAI,MAAO,OAAO,CAAC;AACrD,SAAK,aAAa,IAAI,SAAS,KAAK,OAAO,MAAM;AAAA,EACnD;AAAA,EAPQ;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EAOjB,SAAqB;AACnB,WAAO,KAAK,OAAO,MAAM,GAAG,KAAK,MAAM;AAAA,EACzC;AAAA,EAEA,GAAG,OAAqB;AACtB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,SAAS,KAAK,QAAQ,KAAK;AAC3C,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,OAAqB;AACvB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,UAAU,KAAK,QAAQ,OAAO,IAAI;AAClD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,OAAqB;AACvB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,aAAa,KAAK,QAAQ,OAAO,IAAI;AACrD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,OAAqB;AACvB,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,WAAW,KAAK,QAAQ,UAAU,IAAI,IAAI,OAAO,IAAI;AACrE,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,SAAS,OAAuC;AAC9C,UAAM,KAAK,mBAAmB,KAAK;AACnC,SAAK,IAAI,OAAO,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AACpC,SAAK,IAAI,OAAO,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;AAAA,EACzC;AAAA,EAEA,iBAAiB,OAA8C;AAC7D,QAAI,UAAU,KAAM,MAAK,MAAM,IAAI,WAAW,EAAE,CAAC;AAAA,QAC5C,MAAK,SAAS,KAAK;AAAA,EAC1B;AAAA,EAEA,OAAO,OAAqB;AAC1B,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,SAAK,IAAI,MAAM,UAAU;AACzB,SAAK,MAAM,KAAK;AAAA,EAClB;AAAA,EAEA,KAAK,MAA8C;AACjD,QAAI,KAAK,YAAY,MAAM;AACzB,WAAK,GAAG,CAAC;AAAA,IACX,OAAO;AACL,WAAK,GAAG,CAAC;AACT,WAAK,OAAO,KAAK,OAAO;AAAA,IAC1B;AACA,UAAM,QAAQ,KAAK;AACnB,YAAQ,MAAM,MAAM;AAAA,MAClB,KAAK;AACH,aAAK,GAAG,CAAC;AACT;AAAA,MACF,KAAK;AACH,aAAK,GAAG,MAAM,QAAQ,IAAI,CAAC;AAC3B;AAAA,MACF,KAAK;AACH,aAAK,GAAG,CAAC;AACT,aAAK,IAAI,MAAM,KAAK;AACpB;AAAA,MACF,KAAK;AACH,aAAK,GAAG,CAAC;AACT,aAAK,IAAI,OAAO,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC;AACxC;AAAA,MACF,KAAK;AACH,aAAK,GAAG,CAAC;AACT,aAAK,OAAO,MAAM,KAAK;AACvB;AAAA,MACF,KAAK;AACH,aAAK,GAAG,CAAC;AACT,aAAK,aAAa,MAAM,KAAK;AAC7B;AAAA,IACJ;AAAA,EACF;AAAA,EAEQ,aAAa,OAA8C;AACjE,QAAI,OAAO,UAAU,UAAU;AAC7B,WAAK,GAAG,eAAe,QAAQ,KAAwC,CAAC;AAAA,IAC1E,OAAO;AACL,WAAK,GAAG,CAAC;AACT,WAAK,OAAO,MAAM,MAAM;AAAA,IAC1B;AAAA,EACF;AAAA,EAEQ,MAAM,OAAyB;AACrC,SAAK,QAAQ,MAAM,UAAU;AAC7B,SAAK,OAAO,IAAI,OAAO,KAAK,MAAM;AAClC,SAAK,UAAU,MAAM;AAAA,EACvB;AAAA,EAEQ,IAAI,OAAqB;AAC/B,SAAK,QAAQ,CAAC;AACd,SAAK,WAAW,YAAY,KAAK,QAAQ,OAAO,IAAI;AACpD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEQ,QAAQ,YAA0B;AACxC,UAAM,WAAW,KAAK,SAAS;AAC/B,QAAI,CAAC,OAAO,cAAc,QAAQ,KAAK,WAAW,KAAK,SAAS;AAC9D,YAAM,gBAAgB,+CAA+C;AAAA,IACvE;AACA,QAAI,YAAY,KAAK,OAAO,WAAY;AACxC,QAAI,OAAO,KAAK,IAAI,GAAG,KAAK,OAAO,UAAU;AAC7C,WAAO,OAAO,SAAU,QAAO,KAAK,IAAI,KAAK,SAAS,OAAO,CAAC;AAC9D,UAAM,OAAO,IAAI,WAAW,IAAI;AAChC,SAAK,IAAI,KAAK,OAAO,SAAS,GAAG,KAAK,MAAM,CAAC;AAC7C,SAAK,SAAS;AACd,SAAK,aAAa,IAAI,SAAS,KAAK,MAAM;AAAA,EAC5C;AACF;AAEA,IAAM,SAAN,MAAa;AAAA,EAIX,YAA6B,OAAmB;AAAnB;AAC3B,SAAK,aAAa,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EACjF;AAAA,EALiB;AAAA,EACT,SAAS;AAAA,EAMjB,KAAa;AACX,SAAK,QAAQ,CAAC;AACd,WAAO,KAAK,MAAM,KAAK,QAAQ;AAAA,EACjC;AAAA,EAEA,MAAc;AACZ,SAAK,QAAQ,CAAC;AACd,UAAM,QAAQ,KAAK,WAAW,UAAU,KAAK,QAAQ,IAAI;AACzD,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,MAAc;AACZ,SAAK,QAAQ,CAAC;AACd,UAAM,QAAQ,KAAK,WAAW,UAAU,KAAK,QAAQ,IAAI;AACzD,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,MAAc;AACZ,SAAK,QAAQ,CAAC;AACd,UAAM,QAAQ,KAAK,WAAW,aAAa,KAAK,QAAQ,IAAI;AAC5D,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,MAAc;AACZ,SAAK,QAAQ,CAAC;AACd,UAAM,QAAQ,KAAK,WAAW,WAAW,KAAK,QAAQ,IAAI;AAC1D,SAAK,UAAU;AACf,QAAI,CAAC,OAAO,SAAS,KAAK,KAAK,OAAO,GAAG,OAAO,EAAE,GAAG;AACnD,YAAM,gBAAgB,+CAA+C;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,OAAyC;AAChD,UAAM,UAAU,KAAK,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AACxD,UAAM,YAAY,KAAK,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AAC1D,QAAI;AACF,aAAO,mBAAmB,GAAG,SAAS,GAAG,OAAO,EAAE;AAAA,IACpD,QAAQ;AACN,YAAM,gBAAgB,GAAG,KAAK,8BAA8B;AAAA,IAC9D;AAAA,EACF;AAAA,EAEA,iBAAiB,SAAmD;AAClE,QAAI,QAAS,QAAO,KAAK,SAAS,0BAA0B;AAC5D,UAAM,QAAQ,KAAK,MAAM,EAAE;AAC3B,QAAI,MAAM,KAAK,CAAC,SAAS,SAAS,CAAC,GAAG;AACpC,YAAM,gBAAgB,iDAAiD;AAAA,IACzE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,SAAiB;AACf,UAAM,SAAS,KAAK,IAAI;AACxB,QAAI,SAAS,kDAAkD;AAC7D,YAAM,gBAAgB,0CAA0C;AAAA,IAClE;AACA,QAAI;AACF,aAAO,YAAY,OAAO,KAAK,MAAM,MAAM,CAAC;AAAA,IAC9C,QAAQ;AACN,YAAM,gBAAgB,0CAA0C;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,UAAyB;AACvB,UAAM,MAAM,KAAK,GAAG;AACpB,QAAI,QAAQ,EAAG,QAAO;AACtB,QAAI,QAAQ,EAAG,OAAM,gBAAgB,mCAAmC;AACxE,UAAM,UAAU,KAAK,OAAO;AAC5B,QAAI,QAAQ,WAAW,EAAG,OAAM,gBAAgB,sCAAsC;AACtF,WAAO;AAAA,EACT;AAAA,EAEA,YAAmD;AACjD,YAAQ,KAAK,GAAG,GAAG;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO,OAAO,OAAO,EAAE,MAAM,WAAW,OAAO,MAAM,CAAC;AAAA,MACxD,KAAK;AACH,eAAO,OAAO,OAAO,EAAE,MAAM,WAAW,OAAO,KAAK,CAAC;AAAA,MACvD,KAAK;AACH,eAAO,OAAO,OAAO,EAAE,MAAM,UAAU,OAAO,KAAK,IAAI,EAAE,CAAC;AAAA,MAC5D,KAAK;AACH,eAAO,OAAO,OAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,OAAO,EAAE,CAAC;AAAA,MAC7D,KAAK;AACH,eAAO,OAAO,OAAO,EAAE,MAAM,SAAS,OAAO,KAAK,aAAa,EAAE,CAAC;AAAA,MACpE,KAAK;AACH,eAAO,OAAO,OAAO;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,yCAAyC,KAAK,IAAI,CAAC;AAAA,QAC5D,CAAC;AAAA,MACH;AACE,cAAM,gBAAgB,sCAAsC;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,KAAK,SAAuB;AAC1B,QAAI,KAAK,WAAW,KAAK,MAAM,WAAY,OAAM,IAAI,UAAU,OAAO;AAAA,EACxE;AAAA,EAEQ,MAAc;AACpB,UAAM,QAAQ,KAAK,MAAM,CAAC;AAC1B,WAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,EAAE,YAAY,GAAG,IAAI;AAAA,EAC3F;AAAA,EAEA,MAAM,QAA4B;AAChC,SAAK,QAAQ,MAAM;AACnB,UAAM,QAAQ,KAAK,MAAM,SAAS,KAAK,QAAQ,KAAK,SAAS,MAAM;AACnE,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEQ,eAAgD;AACtD,UAAM,MAAM,KAAK,GAAG;AACpB,QAAI,OAAO,EAAG,QAAO,eAAe,GAAG;AACvC,QAAI,QAAQ,EAAG,QAAO,OAAO,OAAO,EAAE,QAAQ,KAAK,OAAO,EAAE,CAAC;AAC7D,UAAM,gBAAgB,yCAAyC;AAAA,EACjE;AAAA,EAEQ,QAAQ,QAAsB;AACpC,QACE,CAAC,OAAO,cAAc,MAAM,KAC5B,SAAS,KACT,KAAK,SAAS,SAAS,KAAK,MAAM,YAClC;AACA,YAAM,gBAAgB,6CAA6C;AAAA,IACrE;AAAA,EACF;AACF;","names":[]}
@@ -6,11 +6,14 @@ import {
6
6
  } from "./chunk-NVJMJWLL.js";
7
7
  import {
8
8
  editableArtifactCodecFor
9
- } from "./chunk-SIOU2K4U.js";
9
+ } from "./chunk-LJH2EYGT.js";
10
10
  import {
11
11
  DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,
12
12
  DOCUMENT_ARTIFACT_MAX_STRUCTURAL_COUNTER
13
- } from "./chunk-RIY7GYQS.js";
13
+ } from "./chunk-PTSROVDG.js";
14
+ import {
15
+ EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION
16
+ } from "./chunk-WVCFSOUZ.js";
14
17
  import {
15
18
  ArtifactBinaryReader,
16
19
  ArtifactBinaryWriter,
@@ -20,10 +23,7 @@ import {
20
23
  equalBytes,
21
24
  fnv1a64,
22
25
  strictUtf8
23
- } from "./chunk-MYBZRDTY.js";
24
- import {
25
- EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION
26
- } from "./chunk-PX3VCKAU.js";
26
+ } from "./chunk-WQI7VNN4.js";
27
27
 
28
28
  // src/editable-artifact-serialized-commit.ts
29
29
  import { bytesToHex } from "@noble/hashes/utils";
@@ -41,7 +41,9 @@ var DOCUMENT_ID_BYTES = 17;
41
41
  var PRESENTATION_RECEIPT_BYTES = 32;
42
42
  var MODALITY_TAG = Object.freeze({ document: 1, presentation: 2 });
43
43
  function encodeEditableArtifactSerializedCommit(input) {
44
- const normalized = normalizeSerializedCommit(input);
44
+ return encodeNormalizedSerializedCommit(normalizeSerializedCommit(input));
45
+ }
46
+ function encodeNormalizedSerializedCommit(normalized) {
45
47
  const payload = new ArtifactBinaryWriter(
46
48
  EDITABLE_ARTIFACT_SERIALIZED_COMMIT_MAX_BYTES - EDITABLE_ARTIFACT_BINARY_HEADER_BYTES - EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES
47
49
  );
@@ -136,7 +138,7 @@ function decodeEditableArtifactSerializedCommit(bytes, durableModality) {
136
138
  intentBytes,
137
139
  nativeReceiptBytes
138
140
  });
139
- const canonical = encodeEditableArtifactSerializedCommit(normalized);
141
+ const canonical = encodeNormalizedSerializedCommit(normalized);
140
142
  if (!equalBytes(bytes, canonical)) {
141
143
  throw new TypeError("serialized commit is not canonically encoded");
142
144
  }
@@ -380,4 +382,4 @@ export {
380
382
  decodeEditableArtifactSerializedCommit,
381
383
  assertCanonicalEditableArtifactSerializedCommit
382
384
  };
383
- //# sourceMappingURL=chunk-NRMCVHAU.js.map
385
+ //# sourceMappingURL=chunk-WMGO4HJU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/editable-artifact-serialized-commit.ts"],"sourcesContent":["import { bytesToHex } from \"@noble/hashes/utils\";\n\nimport {\n ArtifactBinaryReader,\n ArtifactBinaryWriter,\n EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES,\n EDITABLE_ARTIFACT_BINARY_HEADER_BYTES,\n decodeCountedEnvelope,\n equalBytes,\n fnv1a64,\n strictUtf8,\n} from \"./editable-artifact-binary\";\nimport {\n DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,\n DOCUMENT_ARTIFACT_MAX_STRUCTURAL_COUNTER,\n} from \"./document-artifact-commands\";\nimport {\n EDITABLE_ARTIFACT_INTENT_MAX_BYTES,\n decodeEditableArtifactMutationIntent,\n encodeEditableArtifactMutationIntent,\n hashEditableArtifactMutationIntentBytes,\n type EditableArtifactMutationIntent,\n} from \"./editable-artifacts\";\nimport { editableArtifactCodecFor } from \"./editable-artifact-codec-registry\";\nimport { EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION } from \"./editable-artifact-versions\";\n\nexport { EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION } from \"./editable-artifact-versions\";\nexport const EDITABLE_ARTIFACT_SERIALIZED_COMMIT_MAX_BYTES = 8 * 1024 * 1024;\nexport const EDITABLE_ARTIFACT_NATIVE_RECEIPT_MAX_BYTES = 512 * 1024;\n\nconst MAGIC = strictUtf8(\"OGAST001\", \"serialized commit magic\");\nconst SHA256_TEXT = /^sha256:[0-9a-f]{64}$/u;\nconst STABLE_ID = /^[0-9a-f]{32}$/u;\nconst DOCUMENT_RECEIPT_MAGIC = \"OGADR001\";\nconst PRESENTATION_RECEIPT_MAGIC = strictUtf8(\"OGAPR001\", \"presentation receipt magic\");\nconst DOCUMENT_RECEIPT_VERSION = 1;\nconst PRESENTATION_RECEIPT_VERSION = 1;\nconst DOCUMENT_CREATED_IDS_PER_COMMAND = 7;\nconst DOCUMENT_ID_BYTES = 17;\nconst PRESENTATION_RECEIPT_BYTES = 32;\nconst MODALITY_TAG = Object.freeze({ document: 1, presentation: 2 } as const);\n\nexport type EditableArtifactSerializedModality = \"document\" | \"presentation\";\n\nexport type EditableArtifactNativeReceiptSummary =\n | Readonly<{\n modality: \"document\";\n revision: number;\n commandCount: number;\n createdIdCount: number;\n }>\n | Readonly<{\n modality: \"presentation\";\n revision: number;\n commandCount: number;\n }>;\n\nexport type EditableArtifactSerializedCommitInput = Readonly<{\n modality: EditableArtifactSerializedModality;\n transactionId: string;\n parentHeadSequence: number;\n resultHeadSequence: number;\n /** Native model revision before applying this non-empty command batch. */\n priorNativeRevision: number;\n priorStateHash: string;\n stateHash: string;\n /** Exact canonical OGATX001 bytes accepted by the server. */\n intentBytes: Uint8Array;\n /** Exact canonical OGADR001 or OGAPR001 bytes returned by the native kernel. */\n nativeReceiptBytes: Uint8Array;\n}>;\n\nexport type EditableArtifactSerializedCommitSummary = Readonly<{\n commitProtocolVersion: typeof EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION;\n modality: EditableArtifactSerializedModality;\n transactionId: string;\n parentHeadSequence: number;\n resultHeadSequence: number;\n priorNativeRevision: number;\n priorStateHash: string;\n stateHash: string;\n requestHash: string;\n /** Canonical client intent nested in this authoritative commit. */\n intent: EditableArtifactMutationIntent;\n intentBytes: Uint8Array;\n nativeReceiptBytes: Uint8Array;\n nativeReceipt: EditableArtifactNativeReceiptSummary;\n}>;\n\n/**\n * Server-only encoder for one authoritative, strictly serialized commit.\n * Client identity remains solely in the exact nested OGATX envelope.\n */\nexport function encodeEditableArtifactSerializedCommit(\n input: EditableArtifactSerializedCommitInput,\n): Uint8Array {\n return encodeNormalizedSerializedCommit(normalizeSerializedCommit(input));\n}\n\n/** Encodes a commit whose fields `normalizeSerializedCommit` already validated. */\nfunction encodeNormalizedSerializedCommit(normalized: NormalizedSerializedCommit): Uint8Array {\n const payload = new ArtifactBinaryWriter(\n EDITABLE_ARTIFACT_SERIALIZED_COMMIT_MAX_BYTES -\n EDITABLE_ARTIFACT_BINARY_HEADER_BYTES -\n EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES,\n );\n payload.stableId(normalized.transactionId, \"serialized transaction id\");\n payload.u64(normalized.parentHeadSequence);\n payload.u64(normalized.resultHeadSequence);\n payload.u64(normalized.priorNativeRevision);\n payload.bytes(hashBytes(normalized.priorStateHash));\n payload.bytes(hashBytes(normalized.stateHash));\n payload.u32(normalized.intentBytes.byteLength);\n payload.u32(normalized.nativeReceiptBytes.byteLength);\n payload.bytes(normalized.intentBytes);\n payload.bytes(normalized.nativeReceiptBytes);\n\n const payloadBytes = payload.finish();\n const output = new ArtifactBinaryWriter(EDITABLE_ARTIFACT_SERIALIZED_COMMIT_MAX_BYTES);\n output.bytes(MAGIC);\n output.u16(EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION);\n output.u16(0);\n output.u32(MODALITY_TAG[normalized.modality]);\n output.u64(payloadBytes.byteLength);\n output.bytes(payloadBytes);\n output.u64(fnv1a64(output.view()));\n return output.finish();\n}\n\n/** Durable modality must be selected before any nested receipt/command decode. */\nexport function decodeEditableArtifactSerializedCommit(\n bytes: Uint8Array,\n durableModality: EditableArtifactSerializedModality,\n): EditableArtifactSerializedCommitSummary {\n assertUnsharedBytes(bytes, \"serialized commit\");\n const modality = serializedModality(durableModality);\n if (bytes.byteLength > EDITABLE_ARTIFACT_SERIALIZED_COMMIT_MAX_BYTES) {\n throw new RangeError(\"serialized commit exceeds its byte limit\");\n }\n if (\n bytes.byteLength <\n EDITABLE_ARTIFACT_BINARY_HEADER_BYTES + EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES\n ) {\n throw new TypeError(\"truncated serialized commit envelope\");\n }\n const header = new ArtifactBinaryReader(bytes);\n if (!equalBytes(header.bytes(8), MAGIC)) {\n throw new TypeError(\"invalid serialized commit magic\");\n }\n if (header.u16() !== EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION) {\n throw new TypeError(\"unsupported serialized commit version\");\n }\n if (header.u16() !== 0) {\n throw new TypeError(\"reserved serialized commit flags must be zero\");\n }\n if (header.u32() !== MODALITY_TAG[modality]) {\n throw new TypeError(\"serialized commit modality disagrees with durable artifact\");\n }\n const payloadLength = header.u64Safe(\"serialized commit payload length\");\n const expectedLength =\n EDITABLE_ARTIFACT_BINARY_HEADER_BYTES + payloadLength + EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES;\n if (bytes.byteLength < expectedLength) {\n throw new TypeError(\"truncated serialized commit payload\");\n }\n if (bytes.byteLength > expectedLength) {\n throw new TypeError(\"serialized commit contains trailing bytes\");\n }\n const payloadBytes = header.bytes(payloadLength);\n const checksum = header.u64BigInt();\n header.done();\n if (\n checksum !==\n fnv1a64(bytes.subarray(0, bytes.byteLength - EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES))\n ) {\n throw new TypeError(\"serialized commit checksum does not match\");\n }\n\n const payload = new ArtifactBinaryReader(payloadBytes);\n const transactionId = payload.stableId(\"serialized transaction id\");\n const parentHeadSequence = payload.u64Safe(\"serialized parent head sequence\");\n const resultHeadSequence = payload.u64Safe(\"serialized result head sequence\");\n const priorNativeRevision = payload.u64Safe(\"serialized prior native revision\");\n const priorStateHash = stateHashText(payload.bytes(32));\n const stateHash = stateHashText(payload.bytes(32));\n const intentLength = payload.count(\n EDITABLE_ARTIFACT_INTENT_MAX_BYTES,\n \"serialized intent bytes\",\n 1,\n );\n const receiptLength = payload.count(\n EDITABLE_ARTIFACT_NATIVE_RECEIPT_MAX_BYTES,\n \"serialized native receipt bytes\",\n 1,\n );\n if (payload.remaining !== intentLength + receiptLength) {\n throw new TypeError(\"serialized commit nested byte lengths are inconsistent\");\n }\n const intentBytes = payload.bytes(intentLength).slice();\n const nativeReceiptBytes = payload.bytes(receiptLength).slice();\n payload.done();\n\n const normalized = normalizeSerializedCommit({\n modality,\n transactionId,\n parentHeadSequence,\n resultHeadSequence,\n priorNativeRevision,\n priorStateHash,\n stateHash,\n intentBytes,\n nativeReceiptBytes,\n });\n // The fields were just normalized; re-encoding them proves canonical bytes\n // without decoding and validating the nested intent and receipt twice.\n const canonical = encodeNormalizedSerializedCommit(normalized);\n if (!equalBytes(bytes, canonical)) {\n throw new TypeError(\"serialized commit is not canonically encoded\");\n }\n return Object.freeze({\n commitProtocolVersion: EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,\n modality,\n transactionId,\n parentHeadSequence,\n resultHeadSequence,\n priorNativeRevision,\n priorStateHash,\n stateHash,\n requestHash: normalized.requestHash,\n intent: normalized.intent,\n intentBytes,\n nativeReceiptBytes,\n nativeReceipt: normalized.nativeReceipt,\n });\n}\n\nexport function assertCanonicalEditableArtifactSerializedCommit(\n bytes: Uint8Array,\n durableModality: EditableArtifactSerializedModality,\n): void {\n decodeEditableArtifactSerializedCommit(bytes, durableModality);\n}\n\ntype NormalizedSerializedCommit = EditableArtifactSerializedCommitInput &\n Readonly<{\n requestHash: string;\n intent: EditableArtifactMutationIntent;\n nativeReceipt: EditableArtifactNativeReceiptSummary;\n }>;\n\nfunction normalizeSerializedCommit(\n input: EditableArtifactSerializedCommitInput,\n): NormalizedSerializedCommit {\n const modality = serializedModality(input.modality);\n const transactionId = canonicalStableId(input.transactionId, \"serialized transaction id\");\n const parentHeadSequence = safeSequence(\n input.parentHeadSequence,\n \"serialized parent head sequence\",\n );\n const resultHeadSequence = safeSequence(\n input.resultHeadSequence,\n \"serialized result head sequence\",\n );\n if (resultHeadSequence !== parentHeadSequence + 1) {\n throw new TypeError(\"serialized commit must advance the durable head exactly once\");\n }\n const priorNativeRevision = safeSequence(\n input.priorNativeRevision,\n \"serialized prior native revision\",\n );\n const priorStateHash = canonicalSha256(input.priorStateHash, \"serialized prior state hash\");\n const stateHash = canonicalSha256(input.stateHash, \"serialized resulting state hash\");\n assertUnsharedBytes(input.intentBytes, \"serialized intent\");\n assertUnsharedBytes(input.nativeReceiptBytes, \"serialized native receipt\");\n if (\n input.intentBytes.byteLength < 1 ||\n input.intentBytes.byteLength > EDITABLE_ARTIFACT_INTENT_MAX_BYTES\n ) {\n throw new RangeError(\"serialized intent bytes exceed their limit\");\n }\n if (\n input.nativeReceiptBytes.byteLength < 1 ||\n input.nativeReceiptBytes.byteLength > EDITABLE_ARTIFACT_NATIVE_RECEIPT_MAX_BYTES\n ) {\n throw new RangeError(\"serialized native receipt bytes exceed their limit\");\n }\n const intentBytes = input.intentBytes.slice();\n const decodedIntent = decodeEditableArtifactMutationIntent(intentBytes);\n if (!equalBytes(intentBytes, encodeEditableArtifactMutationIntent(decodedIntent))) {\n throw new TypeError(\"nested serialized intent is not canonical OGATX001\");\n }\n if (\n decodedIntent.causalBase.length !== 0 ||\n decodedIntent.selectiveUndoOperationIds.length !== 0\n ) {\n throw new TypeError(\"serialized commits cannot carry CRDT causality or selective undo\");\n }\n if (decodedIntent.observedHeadSequence !== parentHeadSequence) {\n throw new TypeError(\"serialized intent observed head does not match its parent\");\n }\n const descriptor = editableArtifactCodecFor({\n durableModality: modality,\n modelSchemaVersion: decodedIntent.modelSchemaVersion,\n commandProtocolVersion: decodedIntent.commandProtocolVersion,\n });\n descriptor.command.assertCanonical(decodedIntent.commandBytes);\n const commandCount = decodedCommandCount(descriptor.command.decode(decodedIntent.commandBytes));\n if (commandCount < 1) {\n throw new TypeError(\"serialized commits require a non-empty command batch\");\n }\n const nativeReceiptBytes = input.nativeReceiptBytes.slice();\n const nativeReceipt = decodeNativeReceipt(modality, nativeReceiptBytes, commandCount);\n if (modality === \"presentation\") {\n if (nativeReceipt.revision !== priorNativeRevision + 1) {\n throw new TypeError(\n \"presentation receipt must advance its prior native revision exactly once\",\n );\n }\n if (stateHash === priorStateHash) {\n throw new TypeError(\"presentation commit must change its canonical state hash\");\n }\n } else if (nativeReceipt.revision === priorNativeRevision) {\n if (stateHash !== priorStateHash) {\n throw new TypeError(\"document no-op receipt cannot change the canonical state hash\");\n }\n } else {\n if (nativeReceipt.revision !== priorNativeRevision + 1) {\n throw new TypeError(\n \"document receipt must preserve or advance its prior native revision once\",\n );\n }\n if (stateHash === priorStateHash) {\n throw new TypeError(\"document revision advance must change the canonical state hash\");\n }\n }\n const requestHash = hashEditableArtifactMutationIntentBytes(intentBytes);\n return Object.freeze({\n modality,\n transactionId,\n parentHeadSequence,\n resultHeadSequence,\n priorNativeRevision,\n priorStateHash,\n stateHash,\n intentBytes,\n nativeReceiptBytes,\n requestHash,\n intent: decodedIntent,\n nativeReceipt,\n });\n}\n\nfunction decodeNativeReceipt(\n modality: EditableArtifactSerializedModality,\n bytes: Uint8Array,\n expectedCommandCount: number,\n): EditableArtifactNativeReceiptSummary {\n return modality === \"document\"\n ? decodeDocumentReceipt(bytes, expectedCommandCount)\n : decodePresentationReceipt(bytes, expectedCommandCount);\n}\n\nfunction decodeDocumentReceipt(\n bytes: Uint8Array,\n expectedCommandCount: number,\n): Extract<EditableArtifactNativeReceiptSummary, { modality: \"document\" }> {\n const envelope = decodeCountedEnvelope(\n bytes,\n DOCUMENT_RECEIPT_MAGIC,\n DOCUMENT_RECEIPT_VERSION,\n EDITABLE_ARTIFACT_NATIVE_RECEIPT_MAX_BYTES,\n DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,\n );\n const payload = new ArtifactBinaryReader(envelope.payload);\n const revision = payload.u64Safe(\"document receipt revision\");\n const commandCount = payload.u32();\n if (commandCount !== envelope.count || commandCount !== expectedCommandCount) {\n throw new TypeError(\"document receipt command count does not match its intent\");\n }\n const maximumCreatedIds = commandCount * DOCUMENT_CREATED_IDS_PER_COMMAND;\n const createdIdCount = payload.count(\n maximumCreatedIds,\n \"document receipt created ids\",\n DOCUMENT_ID_BYTES,\n );\n for (let index = 0; index < createdIdCount; index += 1) {\n const tag = payload.u8();\n if (tag < 1 || tag > 8) {\n throw new TypeError(\"document receipt contains an invalid id kind\");\n }\n payload.u64BigInt();\n const counter = payload.u64BigInt();\n if (counter === 0n || counter > BigInt(DOCUMENT_ARTIFACT_MAX_STRUCTURAL_COUNTER)) {\n throw new TypeError(\"document receipt contains an invalid id counter\");\n }\n }\n payload.done(\"document receipt contains trailing bytes\");\n return Object.freeze({\n modality: \"document\",\n revision,\n commandCount,\n createdIdCount,\n });\n}\n\nfunction decodePresentationReceipt(\n bytes: Uint8Array,\n expectedCommandCount: number,\n): Extract<EditableArtifactNativeReceiptSummary, { modality: \"presentation\" }> {\n if (bytes.byteLength !== PRESENTATION_RECEIPT_BYTES) {\n throw new TypeError(\n bytes.byteLength < PRESENTATION_RECEIPT_BYTES\n ? \"truncated presentation receipt\"\n : \"presentation receipt contains trailing bytes\",\n );\n }\n const reader = new ArtifactBinaryReader(bytes);\n if (!equalBytes(reader.bytes(8), PRESENTATION_RECEIPT_MAGIC)) {\n throw new TypeError(\"invalid presentation receipt magic\");\n }\n if (reader.u16() !== PRESENTATION_RECEIPT_VERSION) {\n throw new TypeError(\"unsupported presentation receipt version\");\n }\n if (reader.u16() !== 0) {\n throw new TypeError(\"reserved presentation receipt flags must be zero\");\n }\n const revision = reader.u64Safe(\"presentation receipt revision\");\n const commandCount = reader.u32();\n if (commandCount !== expectedCommandCount) {\n throw new TypeError(\"presentation receipt command count does not match its intent\");\n }\n const checksum = reader.u64BigInt();\n reader.done();\n if (\n checksum !==\n fnv1a64(bytes.subarray(0, bytes.byteLength - EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES))\n ) {\n throw new TypeError(\"presentation receipt checksum does not match\");\n }\n return Object.freeze({ modality: \"presentation\", revision, commandCount });\n}\n\nfunction decodedCommandCount(value: unknown): number {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"serialized command decoder returned an invalid batch\");\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, \"commands\");\n if (!descriptor || !(\"value\" in descriptor) || !Array.isArray(descriptor.value)) {\n throw new TypeError(\"serialized command decoder returned an invalid batch\");\n }\n return descriptor.value.length;\n}\n\nfunction serializedModality(value: unknown): EditableArtifactSerializedModality {\n if (value !== \"document\" && value !== \"presentation\") {\n throw new TypeError(\"serialized commit modality is invalid\");\n }\n return value;\n}\n\nfunction canonicalStableId(value: unknown, label: string): string {\n if (typeof value !== \"string\" || !STABLE_ID.test(value) || /^0+$/u.test(value)) {\n throw new TypeError(`${label} must be a nonzero lowercase 128-bit hexadecimal id`);\n }\n return value;\n}\n\nfunction canonicalSha256(value: unknown, label: string): string {\n if (typeof value !== \"string\" || !SHA256_TEXT.test(value)) {\n throw new TypeError(`${label} must be canonical sha256 text`);\n }\n return value;\n}\n\nfunction safeSequence(value: unknown, label: string): number {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0) {\n throw new TypeError(`${label} must be a nonnegative safe integer`);\n }\n return value;\n}\n\nfunction hashBytes(value: string): Uint8Array {\n const hex = value.slice(\"sha256:\".length);\n const bytes = new Uint8Array(32);\n for (let index = 0; index < bytes.byteLength; index += 1) {\n bytes[index] = Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16);\n }\n return bytes;\n}\n\nfunction stateHashText(value: Uint8Array): string {\n return `sha256:${bytesToHex(value)}`;\n}\n\nfunction assertUnsharedBytes(value: unknown, label: string): asserts value is Uint8Array {\n if (!(value instanceof Uint8Array)) {\n throw new TypeError(`${label} bytes must be a Uint8Array`);\n }\n if (typeof SharedArrayBuffer !== \"undefined\" && value.buffer instanceof SharedArrayBuffer) {\n throw new TypeError(`${label} bytes must not use shared mutable memory`);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,8 +1,9 @@
1
1
  // src/editable-artifact-binary.ts
2
2
  var TEXT_ENCODER = new TextEncoder();
3
3
  var TEXT_DECODER = new TextDecoder("utf-8", { fatal: true });
4
- var FNV_OFFSET = 0xcbf29ce484222325n;
5
- var FNV_PRIME = 0x100000001b3n;
4
+ var FNV_OFFSET_LOW = 2216829733;
5
+ var FNV_OFFSET_HIGH = 3421674724;
6
+ var FNV_PRIME_LOW = 435;
6
7
  var SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER);
7
8
  var STABLE_ID = /^[0-9a-f]{32}$/u;
8
9
  var EDITABLE_ARTIFACT_BINARY_HEADER_BYTES = 24;
@@ -67,13 +68,21 @@ function canonicalNumber(value, label) {
67
68
  }
68
69
  return value;
69
70
  }
71
+ function fnv1a64Limbs(bytes, end = bytes.byteLength) {
72
+ let low = FNV_OFFSET_LOW | 0;
73
+ let high = FNV_OFFSET_HIGH | 0;
74
+ for (let index = 0; index < end; index += 1) {
75
+ low ^= bytes[index];
76
+ const lowHalf = (low & 65535) * FNV_PRIME_LOW;
77
+ const highHalf = (low >>> 16) * FNV_PRIME_LOW + (lowHalf >>> 16);
78
+ high = Math.imul(high, FNV_PRIME_LOW) + (highHalf >>> 16) + (low << 8) | 0;
79
+ low = highHalf << 16 | lowHalf & 65535;
80
+ }
81
+ return [low >>> 0, high >>> 0];
82
+ }
70
83
  function fnv1a64(bytes) {
71
- let hash = FNV_OFFSET;
72
- for (const byte of bytes) {
73
- hash ^= BigInt(byte);
74
- hash = BigInt.asUintN(64, hash * FNV_PRIME);
75
- }
76
- return hash;
84
+ const [low, high] = fnv1a64Limbs(bytes);
85
+ return BigInt(high) << 32n | BigInt(low);
77
86
  }
78
87
  function equalBytes(left, right) {
79
88
  return left.byteLength === right.byteLength && left.every((byte, index) => byte === right[index]);
@@ -330,6 +339,7 @@ export {
330
339
  EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES,
331
340
  strictUtf8,
332
341
  positiveSafeInteger,
342
+ fnv1a64Limbs,
333
343
  fnv1a64,
334
344
  equalBytes,
335
345
  ArtifactBinaryWriter,
@@ -337,4 +347,4 @@ export {
337
347
  encodeCountedEnvelope,
338
348
  decodeCountedEnvelope
339
349
  };
340
- //# sourceMappingURL=chunk-MYBZRDTY.js.map
350
+ //# sourceMappingURL=chunk-WQI7VNN4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/editable-artifact-binary.ts"],"sourcesContent":["const TEXT_ENCODER = new TextEncoder();\nconst TEXT_DECODER = new TextDecoder(\"utf-8\", { fatal: true });\nconst FNV_OFFSET_LOW = 0x8422_2325;\nconst FNV_OFFSET_HIGH = 0xcbf2_9ce4;\n// The 64-bit FNV prime is 2^40 + 0x1b3: multiply the low limb by 0x1b3 and\n// carry `low << 40` into the high limb as `low * 2^8`.\nconst FNV_PRIME_LOW = 0x01b3;\nconst SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER);\nconst STABLE_ID = /^[0-9a-f]{32}$/u;\n\nexport const EDITABLE_ARTIFACT_BINARY_HEADER_BYTES = 24;\nexport const EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES = 8;\n\nexport function strictUtf8(value: string, label: string): Uint8Array {\n if (typeof value !== \"string\") throw new TypeError(`${label} must be a string`);\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = value.charCodeAt(index + 1);\n if (next < 0xdc00 || next > 0xdfff) {\n throw new TypeError(`${label} contains an unpaired surrogate`);\n }\n index += 1;\n } else if (code >= 0xdc00 && code <= 0xdfff) {\n throw new TypeError(`${label} contains an unpaired surrogate`);\n }\n }\n return TEXT_ENCODER.encode(value);\n}\n\nexport function decodeUtf8(bytes: Uint8Array, label: string): string {\n try {\n return TEXT_DECODER.decode(bytes);\n } catch {\n throw new TypeError(`${label} is not valid UTF-8`);\n }\n}\n\nexport function canonicalStableId(value: string, label: string): string {\n if (!STABLE_ID.test(value)) {\n throw new TypeError(`${label} must be a lowercase 128-bit hexadecimal id`);\n }\n return value;\n}\n\nexport function allocatedStableId(value: string, label: string): string {\n canonicalStableId(value, label);\n if (value.slice(0, 16) === \"0000000000000000\" || value.slice(16) === \"0000000000000000\") {\n throw new TypeError(`${label} must have nonzero namespace and counter`);\n }\n return value;\n}\n\nexport function positiveSafeInteger(value: number, label: string): number {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new TypeError(`${label} must be a positive safe integer`);\n }\n return value;\n}\n\nexport function nonnegativeSafeInteger(value: number, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new TypeError(`${label} must be a nonnegative safe integer`);\n }\n return value;\n}\n\nexport function boundedU32(value: number, label: string, maximum = 0xffff_ffff): number {\n if (!Number.isInteger(value) || value < 0 || value > maximum) {\n throw new RangeError(`${label} is outside its unsigned 32-bit bound`);\n }\n return value;\n}\n\nexport function canonicalNumber(value: number, label: string): number {\n if (!Number.isFinite(value) || Object.is(value, -0)) {\n throw new TypeError(`${label} must be finite and must not be negative zero`);\n }\n return value;\n}\n\n/**\n * FNV-1a-64 over `bytes[0, end)` using 32-bit integer limbs, with the low\n * limb's product split into 16-bit halves so every step stays in int32\n * arithmetic. Bit-identical to the BigInt definition without allocating a\n * BigInt per byte (which made checksumming stored history a dominant CPU cost).\n */\nexport function fnv1a64Limbs(\n bytes: Uint8Array,\n end: number = bytes.byteLength,\n): readonly [low: number, high: number] {\n let low = FNV_OFFSET_LOW | 0;\n let high = FNV_OFFSET_HIGH | 0;\n for (let index = 0; index < end; index += 1) {\n low ^= bytes[index]!;\n const lowHalf = (low & 0xffff) * FNV_PRIME_LOW;\n const highHalf = (low >>> 16) * FNV_PRIME_LOW + (lowHalf >>> 16);\n high = (Math.imul(high, FNV_PRIME_LOW) + (highHalf >>> 16) + (low << 8)) | 0;\n low = (highHalf << 16) | (lowHalf & 0xffff);\n }\n return [low >>> 0, high >>> 0];\n}\n\nexport function fnv1a64(bytes: Uint8Array): bigint {\n const [low, high] = fnv1a64Limbs(bytes);\n return (BigInt(high) << 32n) | BigInt(low);\n}\n\nexport function equalBytes(left: Uint8Array, right: Uint8Array): boolean {\n return left.byteLength === right.byteLength && left.every((byte, index) => byte === right[index]);\n}\n\nexport class ArtifactBinaryWriter {\n readonly #maximum: number;\n #bytes: Uint8Array;\n #view: DataView;\n #length = 0;\n\n constructor(maximum: number) {\n this.#maximum = nonnegativeSafeInteger(maximum, \"binary writer maximum\");\n this.#bytes = new Uint8Array(Math.min(Math.max(maximum, 32), 1024));\n this.#view = new DataView(this.#bytes.buffer);\n }\n\n get length(): number {\n return this.#length;\n }\n\n view(): Uint8Array {\n return this.#bytes.subarray(0, this.#length);\n }\n\n finish(): Uint8Array {\n return this.#bytes.slice(0, this.#length);\n }\n\n #reserve(additional: number): void {\n const next = this.#length + additional;\n if (!Number.isSafeInteger(next) || next > this.#maximum) {\n throw new RangeError(\"editable artifact binary payload exceeds its byte limit\");\n }\n if (next <= this.#bytes.byteLength) return;\n let capacity = this.#bytes.byteLength;\n while (capacity < next) capacity = Math.min(this.#maximum, Math.max(next, capacity * 2));\n const grown = new Uint8Array(capacity);\n grown.set(this.#bytes.subarray(0, this.#length));\n this.#bytes = grown;\n this.#view = new DataView(grown.buffer);\n }\n\n bytes(value: Uint8Array): void {\n this.#reserve(value.byteLength);\n this.#bytes.set(value, this.#length);\n this.#length += value.byteLength;\n }\n\n u8(value: number): void {\n boundedU32(value, \"u8\", 0xff);\n this.#reserve(1);\n this.#view.setUint8(this.#length, value);\n this.#length += 1;\n }\n\n bool(value: boolean): void {\n if (typeof value !== \"boolean\") throw new TypeError(\"boolean value is invalid\");\n this.u8(value ? 1 : 0);\n }\n\n u16(value: number): void {\n boundedU32(value, \"u16\", 0xffff);\n this.#reserve(2);\n this.#view.setUint16(this.#length, value, true);\n this.#length += 2;\n }\n\n u32(value: number): void {\n boundedU32(value, \"u32\");\n this.#reserve(4);\n this.#view.setUint32(this.#length, value, true);\n this.#length += 4;\n }\n\n i32(value: number): void {\n if (!Number.isInteger(value) || value < -0x8000_0000 || value > 0x7fff_ffff) {\n throw new RangeError(\"i32 value is outside its bound\");\n }\n this.#reserve(4);\n this.#view.setInt32(this.#length, value, true);\n this.#length += 4;\n }\n\n u64(value: bigint | number): void {\n const encoded =\n typeof value === \"number\" ? BigInt(nonnegativeSafeInteger(value, \"u64\")) : value;\n if (encoded < 0n || encoded > 0xffff_ffff_ffff_ffffn)\n throw new RangeError(\"u64 value is outside its bound\");\n this.#reserve(8);\n this.#view.setBigUint64(this.#length, encoded, true);\n this.#length += 8;\n }\n\n i64(value: bigint | number): void {\n const encoded =\n typeof value === \"number\"\n ? BigInt(\n Number.isSafeInteger(value)\n ? value\n : (() => {\n throw new TypeError(\"i64 number must be safe\");\n })(),\n )\n : value;\n if (encoded < -0x8000_0000_0000_0000n || encoded > 0x7fff_ffff_ffff_ffffn) {\n throw new RangeError(\"i64 value is outside its bound\");\n }\n this.#reserve(8);\n this.#view.setBigInt64(this.#length, encoded, true);\n this.#length += 8;\n }\n\n f64(value: number, label = \"number\"): void {\n canonicalNumber(value, label);\n this.#reserve(8);\n this.#view.setFloat64(this.#length, value, true);\n this.#length += 8;\n }\n\n count(value: number, maximum: number, label: string): void {\n if (!Number.isInteger(value) || value < 0 || value > maximum) {\n throw new RangeError(`${label} exceeds its collection bound`);\n }\n this.u32(value);\n }\n\n string(value: string, maximum: number, label: string): void {\n const bytes = strictUtf8(value, label);\n if (bytes.byteLength > maximum) throw new RangeError(`${label} exceeds its byte limit`);\n this.u32(bytes.byteLength);\n this.bytes(bytes);\n }\n\n stableId(value: string, label: string, requireAllocated = false): void {\n (requireAllocated ? allocatedStableId : canonicalStableId)(value, label);\n this.u64(BigInt(`0x${value.slice(16)}`));\n this.u64(BigInt(`0x${value.slice(0, 16)}`));\n }\n}\n\nexport class ArtifactBinaryReader {\n readonly #bytes: Uint8Array;\n readonly #view: DataView;\n #offset = 0;\n\n constructor(bytes: Uint8Array) {\n if (!(bytes instanceof Uint8Array)) throw new TypeError(\"binary input must be a Uint8Array\");\n this.#bytes = bytes;\n this.#view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n }\n\n get remaining(): number {\n return this.#bytes.byteLength - this.#offset;\n }\n\n done(message = \"editable artifact binary payload contains trailing bytes\"): void {\n if (this.remaining !== 0) throw new TypeError(message);\n }\n\n bytes(length: number): Uint8Array {\n if (!Number.isSafeInteger(length) || length < 0 || length > this.remaining) {\n throw new TypeError(\"truncated editable artifact binary payload\");\n }\n const value = this.#bytes.subarray(this.#offset, this.#offset + length);\n this.#offset += length;\n return value;\n }\n\n u8(): number {\n return this.bytes(1)[0]!;\n }\n\n bool(label = \"boolean\"): boolean {\n const value = this.u8();\n if (value > 1) throw new TypeError(`invalid ${label}`);\n return value === 1;\n }\n\n u16(): number {\n const offset = this.#offset;\n this.bytes(2);\n return this.#view.getUint16(offset, true);\n }\n\n u32(): number {\n const offset = this.#offset;\n this.bytes(4);\n return this.#view.getUint32(offset, true);\n }\n\n i32(): number {\n const offset = this.#offset;\n this.bytes(4);\n return this.#view.getInt32(offset, true);\n }\n\n u64BigInt(): bigint {\n const offset = this.#offset;\n this.bytes(8);\n return this.#view.getBigUint64(offset, true);\n }\n\n u64Safe(label: string): number {\n const value = this.u64BigInt();\n if (value > SAFE_INTEGER) throw new RangeError(`${label} exceeds the JavaScript-safe bound`);\n return Number(value);\n }\n\n i64BigInt(): bigint {\n const offset = this.#offset;\n this.bytes(8);\n return this.#view.getBigInt64(offset, true);\n }\n\n i64Safe(label: string): number {\n const value = this.i64BigInt();\n if (value < -SAFE_INTEGER || value > SAFE_INTEGER)\n throw new RangeError(`${label} exceeds the JavaScript-safe bound`);\n return Number(value);\n }\n\n f64(label: string): number {\n const offset = this.#offset;\n this.bytes(8);\n return canonicalNumber(this.#view.getFloat64(offset, true), label);\n }\n\n count(maximum: number, label: string, minimumBytes = 0): number {\n const value = this.u32();\n if (value > maximum) throw new RangeError(`${label} exceeds its collection bound`);\n if (minimumBytes > 0 && value > Math.floor(this.remaining / minimumBytes)) {\n throw new TypeError(\"truncated editable artifact binary payload\");\n }\n return value;\n }\n\n string(maximum: number, label: string): string {\n const length = this.count(maximum, label, 1);\n return decodeUtf8(this.bytes(length), label);\n }\n\n stableId(label: string, requireAllocated = false): string {\n const counter = this.u64BigInt().toString(16).padStart(16, \"0\");\n const namespace = this.u64BigInt().toString(16).padStart(16, \"0\");\n const value = `${namespace}${counter}`;\n return (requireAllocated ? allocatedStableId : canonicalStableId)(value, label);\n }\n}\n\nexport function encodeCountedEnvelope(\n magic: string,\n version: number,\n count: number,\n payload: Uint8Array,\n maximum: number,\n): Uint8Array {\n if (strictUtf8(magic, \"envelope magic\").byteLength !== 8)\n throw new TypeError(\"envelope magic must be eight bytes\");\n const output = new ArtifactBinaryWriter(maximum);\n output.bytes(strictUtf8(magic, \"envelope magic\"));\n output.u16(version);\n output.u16(0);\n output.u32(count);\n output.u64(BigInt(payload.byteLength));\n output.bytes(payload);\n output.u64(fnv1a64(output.view()));\n return output.finish();\n}\n\nexport function decodeCountedEnvelope(\n bytes: Uint8Array,\n magic: string,\n version: number,\n maximum: number,\n maxCount: number,\n): { count: number; payload: Uint8Array } {\n if (!(bytes instanceof Uint8Array)) throw new TypeError(\"envelope bytes must be a Uint8Array\");\n if (bytes.byteLength > maximum)\n throw new RangeError(\"editable artifact envelope exceeds its byte limit\");\n if (\n bytes.byteLength <\n EDITABLE_ARTIFACT_BINARY_HEADER_BYTES + EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES\n ) {\n throw new TypeError(\"truncated editable artifact envelope\");\n }\n const reader = new ArtifactBinaryReader(bytes);\n if (!equalBytes(reader.bytes(8), strictUtf8(magic, \"envelope magic\")))\n throw new TypeError(\"invalid editable artifact envelope magic\");\n const actualVersion = reader.u16();\n if (actualVersion !== version)\n throw new TypeError(`unsupported editable artifact envelope version: ${actualVersion}`);\n if (reader.u16() !== 0)\n throw new TypeError(\"reserved editable artifact envelope flags must be zero\");\n const count = reader.u32();\n if (count > maxCount) throw new RangeError(\"editable artifact envelope count exceeds its limit\");\n const payloadLength = reader.u64Safe(\"editable artifact payload length\");\n const expected =\n EDITABLE_ARTIFACT_BINARY_HEADER_BYTES + payloadLength + EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES;\n if (bytes.byteLength < expected) throw new TypeError(\"truncated editable artifact envelope\");\n if (bytes.byteLength > expected)\n throw new TypeError(\"editable artifact envelope contains trailing bytes\");\n const payload = reader.bytes(payloadLength);\n const checksum = reader.u64BigInt();\n reader.done();\n if (checksum !== fnv1a64(bytes.subarray(0, -EDITABLE_ARTIFACT_BINARY_CHECKSUM_BYTES))) {\n throw new TypeError(\"editable artifact envelope checksum does not match\");\n }\n return { count, payload };\n}\n"],"mappings":";AAAA,IAAM,eAAe,IAAI,YAAY;AACrC,IAAM,eAAe,IAAI,YAAY,SAAS,EAAE,OAAO,KAAK,CAAC;AAC7D,IAAM,iBAAiB;AACvB,IAAM,kBAAkB;AAGxB,IAAM,gBAAgB;AACtB,IAAM,eAAe,OAAO,OAAO,gBAAgB;AACnD,IAAM,YAAY;AAEX,IAAM,wCAAwC;AAC9C,IAAM,0CAA0C;AAEhD,SAAS,WAAW,OAAe,OAA2B;AACnE,MAAI,OAAO,UAAU,SAAU,OAAM,IAAI,UAAU,GAAG,KAAK,mBAAmB;AAC9E,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,OAAO,MAAM,WAAW,KAAK;AACnC,QAAI,QAAQ,SAAU,QAAQ,OAAQ;AACpC,YAAM,OAAO,MAAM,WAAW,QAAQ,CAAC;AACvC,UAAI,OAAO,SAAU,OAAO,OAAQ;AAClC,cAAM,IAAI,UAAU,GAAG,KAAK,iCAAiC;AAAA,MAC/D;AACA,eAAS;AAAA,IACX,WAAW,QAAQ,SAAU,QAAQ,OAAQ;AAC3C,YAAM,IAAI,UAAU,GAAG,KAAK,iCAAiC;AAAA,IAC/D;AAAA,EACF;AACA,SAAO,aAAa,OAAO,KAAK;AAClC;AAEO,SAAS,WAAW,OAAmB,OAAuB;AACnE,MAAI;AACF,WAAO,aAAa,OAAO,KAAK;AAAA,EAClC,QAAQ;AACN,UAAM,IAAI,UAAU,GAAG,KAAK,qBAAqB;AAAA,EACnD;AACF;AAEO,SAAS,kBAAkB,OAAe,OAAuB;AACtE,MAAI,CAAC,UAAU,KAAK,KAAK,GAAG;AAC1B,UAAM,IAAI,UAAU,GAAG,KAAK,6CAA6C;AAAA,EAC3E;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAe,OAAuB;AACtE,oBAAkB,OAAO,KAAK;AAC9B,MAAI,MAAM,MAAM,GAAG,EAAE,MAAM,sBAAsB,MAAM,MAAM,EAAE,MAAM,oBAAoB;AACvF,UAAM,IAAI,UAAU,GAAG,KAAK,0CAA0C;AAAA,EACxE;AACA,SAAO;AACT;AAEO,SAAS,oBAAoB,OAAe,OAAuB;AACxE,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,SAAS,GAAG;AAC9C,UAAM,IAAI,UAAU,GAAG,KAAK,kCAAkC;AAAA,EAChE;AACA,SAAO;AACT;AAEO,SAAS,uBAAuB,OAAe,OAAuB;AAC3E,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAC7C,UAAM,IAAI,UAAU,GAAG,KAAK,qCAAqC;AAAA,EACnE;AACA,SAAO;AACT;AAEO,SAAS,WAAW,OAAe,OAAe,UAAU,YAAqB;AACtF,MAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,KAAK,QAAQ,SAAS;AAC5D,UAAM,IAAI,WAAW,GAAG,KAAK,uCAAuC;AAAA,EACtE;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,OAAe,OAAuB;AACpE,MAAI,CAAC,OAAO,SAAS,KAAK,KAAK,OAAO,GAAG,OAAO,EAAE,GAAG;AACnD,UAAM,IAAI,UAAU,GAAG,KAAK,+CAA+C;AAAA,EAC7E;AACA,SAAO;AACT;AAQO,SAAS,aACd,OACA,MAAc,MAAM,YACkB;AACtC,MAAI,MAAM,iBAAiB;AAC3B,MAAI,OAAO,kBAAkB;AAC7B,WAAS,QAAQ,GAAG,QAAQ,KAAK,SAAS,GAAG;AAC3C,WAAO,MAAM,KAAK;AAClB,UAAM,WAAW,MAAM,SAAU;AACjC,UAAM,YAAY,QAAQ,MAAM,iBAAiB,YAAY;AAC7D,WAAQ,KAAK,KAAK,MAAM,aAAa,KAAK,aAAa,OAAO,OAAO,KAAM;AAC3E,UAAO,YAAY,KAAO,UAAU;AAAA,EACtC;AACA,SAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC/B;AAEO,SAAS,QAAQ,OAA2B;AACjD,QAAM,CAAC,KAAK,IAAI,IAAI,aAAa,KAAK;AACtC,SAAQ,OAAO,IAAI,KAAK,MAAO,OAAO,GAAG;AAC3C;AAEO,SAAS,WAAW,MAAkB,OAA4B;AACvE,SAAO,KAAK,eAAe,MAAM,cAAc,KAAK,MAAM,CAAC,MAAM,UAAU,SAAS,MAAM,KAAK,CAAC;AAClG;AAEO,IAAM,uBAAN,MAA2B;AAAA,EACvB;AAAA,EACT;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EAEV,YAAY,SAAiB;AAC3B,SAAK,WAAW,uBAAuB,SAAS,uBAAuB;AACvE,SAAK,SAAS,IAAI,WAAW,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE,GAAG,IAAI,CAAC;AAClE,SAAK,QAAQ,IAAI,SAAS,KAAK,OAAO,MAAM;AAAA,EAC9C;AAAA,EAEA,IAAI,SAAiB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,OAAmB;AACjB,WAAO,KAAK,OAAO,SAAS,GAAG,KAAK,OAAO;AAAA,EAC7C;AAAA,EAEA,SAAqB;AACnB,WAAO,KAAK,OAAO,MAAM,GAAG,KAAK,OAAO;AAAA,EAC1C;AAAA,EAEA,SAAS,YAA0B;AACjC,UAAM,OAAO,KAAK,UAAU;AAC5B,QAAI,CAAC,OAAO,cAAc,IAAI,KAAK,OAAO,KAAK,UAAU;AACvD,YAAM,IAAI,WAAW,yDAAyD;AAAA,IAChF;AACA,QAAI,QAAQ,KAAK,OAAO,WAAY;AACpC,QAAI,WAAW,KAAK,OAAO;AAC3B,WAAO,WAAW,KAAM,YAAW,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI,MAAM,WAAW,CAAC,CAAC;AACvF,UAAM,QAAQ,IAAI,WAAW,QAAQ;AACrC,UAAM,IAAI,KAAK,OAAO,SAAS,GAAG,KAAK,OAAO,CAAC;AAC/C,SAAK,SAAS;AACd,SAAK,QAAQ,IAAI,SAAS,MAAM,MAAM;AAAA,EACxC;AAAA,EAEA,MAAM,OAAyB;AAC7B,SAAK,SAAS,MAAM,UAAU;AAC9B,SAAK,OAAO,IAAI,OAAO,KAAK,OAAO;AACnC,SAAK,WAAW,MAAM;AAAA,EACxB;AAAA,EAEA,GAAG,OAAqB;AACtB,eAAW,OAAO,MAAM,GAAI;AAC5B,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,SAAS,KAAK,SAAS,KAAK;AACvC,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,KAAK,OAAsB;AACzB,QAAI,OAAO,UAAU,UAAW,OAAM,IAAI,UAAU,0BAA0B;AAC9E,SAAK,GAAG,QAAQ,IAAI,CAAC;AAAA,EACvB;AAAA,EAEA,IAAI,OAAqB;AACvB,eAAW,OAAO,OAAO,KAAM;AAC/B,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,UAAU,KAAK,SAAS,OAAO,IAAI;AAC9C,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAAqB;AACvB,eAAW,OAAO,KAAK;AACvB,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,UAAU,KAAK,SAAS,OAAO,IAAI;AAC9C,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAAqB;AACvB,QAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,eAAgB,QAAQ,YAAa;AAC3E,YAAM,IAAI,WAAW,gCAAgC;AAAA,IACvD;AACA,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,SAAS,KAAK,SAAS,OAAO,IAAI;AAC7C,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAA8B;AAChC,UAAM,UACJ,OAAO,UAAU,WAAW,OAAO,uBAAuB,OAAO,KAAK,CAAC,IAAI;AAC7E,QAAI,UAAU,MAAM,UAAU;AAC5B,YAAM,IAAI,WAAW,gCAAgC;AACvD,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,aAAa,KAAK,SAAS,SAAS,IAAI;AACnD,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAA8B;AAChC,UAAM,UACJ,OAAO,UAAU,WACb;AAAA,MACE,OAAO,cAAc,KAAK,IACtB,SACC,MAAM;AACL,cAAM,IAAI,UAAU,yBAAyB;AAAA,MAC/C,GAAG;AAAA,IACT,IACA;AACN,QAAI,UAAU,CAAC,uBAA0B,UAAU,qBAAwB;AACzE,YAAM,IAAI,WAAW,gCAAgC;AAAA,IACvD;AACA,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,YAAY,KAAK,SAAS,SAAS,IAAI;AAClD,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAAe,QAAQ,UAAgB;AACzC,oBAAgB,OAAO,KAAK;AAC5B,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,WAAW,KAAK,SAAS,OAAO,IAAI;AAC/C,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAM,OAAe,SAAiB,OAAqB;AACzD,QAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,KAAK,QAAQ,SAAS;AAC5D,YAAM,IAAI,WAAW,GAAG,KAAK,+BAA+B;AAAA,IAC9D;AACA,SAAK,IAAI,KAAK;AAAA,EAChB;AAAA,EAEA,OAAO,OAAe,SAAiB,OAAqB;AAC1D,UAAM,QAAQ,WAAW,OAAO,KAAK;AACrC,QAAI,MAAM,aAAa,QAAS,OAAM,IAAI,WAAW,GAAG,KAAK,yBAAyB;AACtF,SAAK,IAAI,MAAM,UAAU;AACzB,SAAK,MAAM,KAAK;AAAA,EAClB;AAAA,EAEA,SAAS,OAAe,OAAe,mBAAmB,OAAa;AACrE,KAAC,mBAAmB,oBAAoB,mBAAmB,OAAO,KAAK;AACvE,SAAK,IAAI,OAAO,KAAK,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC;AACvC,SAAK,IAAI,OAAO,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;AAAA,EAC5C;AACF;AAEO,IAAM,uBAAN,MAA2B;AAAA,EACvB;AAAA,EACA;AAAA,EACT,UAAU;AAAA,EAEV,YAAY,OAAmB;AAC7B,QAAI,EAAE,iBAAiB,YAAa,OAAM,IAAI,UAAU,mCAAmC;AAC3F,SAAK,SAAS;AACd,SAAK,QAAQ,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EAC5E;AAAA,EAEA,IAAI,YAAoB;AACtB,WAAO,KAAK,OAAO,aAAa,KAAK;AAAA,EACvC;AAAA,EAEA,KAAK,UAAU,4DAAkE;AAC/E,QAAI,KAAK,cAAc,EAAG,OAAM,IAAI,UAAU,OAAO;AAAA,EACvD;AAAA,EAEA,MAAM,QAA4B;AAChC,QAAI,CAAC,OAAO,cAAc,MAAM,KAAK,SAAS,KAAK,SAAS,KAAK,WAAW;AAC1E,YAAM,IAAI,UAAU,4CAA4C;AAAA,IAClE;AACA,UAAM,QAAQ,KAAK,OAAO,SAAS,KAAK,SAAS,KAAK,UAAU,MAAM;AACtE,SAAK,WAAW;AAChB,WAAO;AAAA,EACT;AAAA,EAEA,KAAa;AACX,WAAO,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,EACxB;AAAA,EAEA,KAAK,QAAQ,WAAoB;AAC/B,UAAM,QAAQ,KAAK,GAAG;AACtB,QAAI,QAAQ,EAAG,OAAM,IAAI,UAAU,WAAW,KAAK,EAAE;AACrD,WAAO,UAAU;AAAA,EACnB;AAAA,EAEA,MAAc;AACZ,UAAM,SAAS,KAAK;AACpB,SAAK,MAAM,CAAC;AACZ,WAAO,KAAK,MAAM,UAAU,QAAQ,IAAI;AAAA,EAC1C;AAAA,EAEA,MAAc;AACZ,UAAM,SAAS,KAAK;AACpB,SAAK,MAAM,CAAC;AACZ,WAAO,KAAK,MAAM,UAAU,QAAQ,IAAI;AAAA,EAC1C;AAAA,EAEA,MAAc;AACZ,UAAM,SAAS,KAAK;AACpB,SAAK,MAAM,CAAC;AACZ,WAAO,KAAK,MAAM,SAAS,QAAQ,IAAI;AAAA,EACzC;AAAA,EAEA,YAAoB;AAClB,UAAM,SAAS,KAAK;AACpB,SAAK,MAAM,CAAC;AACZ,WAAO,KAAK,MAAM,aAAa,QAAQ,IAAI;AAAA,EAC7C;AAAA,EAEA,QAAQ,OAAuB;AAC7B,UAAM,QAAQ,KAAK,UAAU;AAC7B,QAAI,QAAQ,aAAc,OAAM,IAAI,WAAW,GAAG,KAAK,oCAAoC;AAC3F,WAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EAEA,YAAoB;AAClB,UAAM,SAAS,KAAK;AACpB,SAAK,MAAM,CAAC;AACZ,WAAO,KAAK,MAAM,YAAY,QAAQ,IAAI;AAAA,EAC5C;AAAA,EAEA,QAAQ,OAAuB;AAC7B,UAAM,QAAQ,KAAK,UAAU;AAC7B,QAAI,QAAQ,CAAC,gBAAgB,QAAQ;AACnC,YAAM,IAAI,WAAW,GAAG,KAAK,oCAAoC;AACnE,WAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EAEA,IAAI,OAAuB;AACzB,UAAM,SAAS,KAAK;AACpB,SAAK,MAAM,CAAC;AACZ,WAAO,gBAAgB,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAAA,EACnE;AAAA,EAEA,MAAM,SAAiB,OAAe,eAAe,GAAW;AAC9D,UAAM,QAAQ,KAAK,IAAI;AACvB,QAAI,QAAQ,QAAS,OAAM,IAAI,WAAW,GAAG,KAAK,+BAA+B;AACjF,QAAI,eAAe,KAAK,QAAQ,KAAK,MAAM,KAAK,YAAY,YAAY,GAAG;AACzE,YAAM,IAAI,UAAU,4CAA4C;AAAA,IAClE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,SAAiB,OAAuB;AAC7C,UAAM,SAAS,KAAK,MAAM,SAAS,OAAO,CAAC;AAC3C,WAAO,WAAW,KAAK,MAAM,MAAM,GAAG,KAAK;AAAA,EAC7C;AAAA,EAEA,SAAS,OAAe,mBAAmB,OAAe;AACxD,UAAM,UAAU,KAAK,UAAU,EAAE,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AAC9D,UAAM,YAAY,KAAK,UAAU,EAAE,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AAChE,UAAM,QAAQ,GAAG,SAAS,GAAG,OAAO;AACpC,YAAQ,mBAAmB,oBAAoB,mBAAmB,OAAO,KAAK;AAAA,EAChF;AACF;AAEO,SAAS,sBACd,OACA,SACA,OACA,SACA,SACY;AACZ,MAAI,WAAW,OAAO,gBAAgB,EAAE,eAAe;AACrD,UAAM,IAAI,UAAU,oCAAoC;AAC1D,QAAM,SAAS,IAAI,qBAAqB,OAAO;AAC/C,SAAO,MAAM,WAAW,OAAO,gBAAgB,CAAC;AAChD,SAAO,IAAI,OAAO;AAClB,SAAO,IAAI,CAAC;AACZ,SAAO,IAAI,KAAK;AAChB,SAAO,IAAI,OAAO,QAAQ,UAAU,CAAC;AACrC,SAAO,MAAM,OAAO;AACpB,SAAO,IAAI,QAAQ,OAAO,KAAK,CAAC,CAAC;AACjC,SAAO,OAAO,OAAO;AACvB;AAEO,SAAS,sBACd,OACA,OACA,SACA,SACA,UACwC;AACxC,MAAI,EAAE,iBAAiB,YAAa,OAAM,IAAI,UAAU,qCAAqC;AAC7F,MAAI,MAAM,aAAa;AACrB,UAAM,IAAI,WAAW,mDAAmD;AAC1E,MACE,MAAM,aACN,wCAAwC,yCACxC;AACA,UAAM,IAAI,UAAU,sCAAsC;AAAA,EAC5D;AACA,QAAM,SAAS,IAAI,qBAAqB,KAAK;AAC7C,MAAI,CAAC,WAAW,OAAO,MAAM,CAAC,GAAG,WAAW,OAAO,gBAAgB,CAAC;AAClE,UAAM,IAAI,UAAU,0CAA0C;AAChE,QAAM,gBAAgB,OAAO,IAAI;AACjC,MAAI,kBAAkB;AACpB,UAAM,IAAI,UAAU,mDAAmD,aAAa,EAAE;AACxF,MAAI,OAAO,IAAI,MAAM;AACnB,UAAM,IAAI,UAAU,wDAAwD;AAC9E,QAAM,QAAQ,OAAO,IAAI;AACzB,MAAI,QAAQ,SAAU,OAAM,IAAI,WAAW,oDAAoD;AAC/F,QAAM,gBAAgB,OAAO,QAAQ,kCAAkC;AACvE,QAAM,WACJ,wCAAwC,gBAAgB;AAC1D,MAAI,MAAM,aAAa,SAAU,OAAM,IAAI,UAAU,sCAAsC;AAC3F,MAAI,MAAM,aAAa;AACrB,UAAM,IAAI,UAAU,oDAAoD;AAC1E,QAAM,UAAU,OAAO,MAAM,aAAa;AAC1C,QAAM,WAAW,OAAO,UAAU;AAClC,SAAO,KAAK;AACZ,MAAI,aAAa,QAAQ,MAAM,SAAS,GAAG,CAAC,uCAAuC,CAAC,GAAG;AACrF,UAAM,IAAI,UAAU,oDAAoD;AAAA,EAC1E;AACA,SAAO,EAAE,OAAO,QAAQ;AAC1B;","names":[]}
@@ -26,4 +26,4 @@ export {
26
26
  EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,
27
27
  EDITABLE_ARTIFACT_LIVE_WIRE_VERSION
28
28
  };
29
- //# sourceMappingURL=chunk-PX3VCKAU.js.map
29
+ //# sourceMappingURL=chunk-WVCFSOUZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/editable-artifact-versions.ts"],"sourcesContent":["/** Modality-specific durable semantic/schema versions. */\nexport const SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION = 2 as const;\nexport const DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\n\n/** Direct kernel workbook snapshot version (OGARTK02), never the durable CRDT snapshot. */\nexport const SPREADSHEET_KERNEL_SNAPSHOT_VERSION = 2 as const;\n\n/** Modality-specific canonical snapshot versions. */\nexport const DOCUMENT_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\n\n/** Canonical internal spreadsheet kernel command-envelope version. */\nexport const SPREADSHEET_KERNEL_COMMAND_VERSION = 2 as const;\n\n/** Canonical public, identity-free spreadsheet command-envelope version. */\nexport const SPREADSHEET_ARTIFACT_COMMAND_VERSION = 2 as const;\n\n/** Canonical durable spreadsheet collaboration-snapshot version. */\nexport const SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION = 2 as const;\n\n/** Canonical committed spreadsheet transaction protocol version. */\nexport const COMMITTED_TRANSACTION_PROTOCOL_VERSION = 2 as const;\n\n/** Canonical document/presentation serialized-commit protocol version. */\nexport const EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION = 1 as const;\n\n/** Canonical editable-artifact live transport protocol version. */\nexport const EDITABLE_ARTIFACT_LIVE_WIRE_VERSION = 2 as const;\n"],"mappings":";AACO,IAAM,4CAA4C;AAClD,IAAM,yCAAyC;AAC/C,IAAM,6CAA6C;AAGnD,IAAM,sCAAsC;AAG5C,IAAM,qCAAqC;AAC3C,IAAM,yCAAyC;AAG/C,IAAM,qCAAqC;AAG3C,IAAM,uCAAuC;AAG7C,IAAM,6CAA6C;AAGnD,IAAM,yCAAyC;AAG/C,IAAM,8CAA8C;AAGpD,IAAM,sCAAsC;","names":[]}
1
+ {"version":3,"sources":["../src/editable-artifact-versions.ts"],"sourcesContent":["/**\n * Modality-specific durable semantic/schema versions.\n * Spreadsheet dimensions are an additive current-schema extension: existing\n * command/operation tags and dimension-free snapshot bytes stay unchanged.\n * Direct snapshots and private projections advertise their explicit extension\n * flags; old executables reject new tags/flags, never silently discard them.\n */\nexport const SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION = 2 as const;\nexport const DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\n\n/** Direct kernel workbook snapshot version (OGARTK02), never the durable CRDT snapshot. */\nexport const SPREADSHEET_KERNEL_SNAPSHOT_VERSION = 2 as const;\n\n/** Modality-specific canonical snapshot versions. */\nexport const DOCUMENT_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\n\n/** Canonical internal spreadsheet kernel command-envelope version. */\nexport const SPREADSHEET_KERNEL_COMMAND_VERSION = 2 as const;\n\n/** Canonical public, identity-free spreadsheet command-envelope version. */\nexport const SPREADSHEET_ARTIFACT_COMMAND_VERSION = 2 as const;\n\n/** Canonical durable spreadsheet collaboration-snapshot version. */\nexport const SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION = 2 as const;\n\n/** Canonical committed spreadsheet transaction protocol version. */\nexport const COMMITTED_TRANSACTION_PROTOCOL_VERSION = 2 as const;\n\n/** Canonical document/presentation serialized-commit protocol version. */\nexport const EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION = 1 as const;\n\n/** Canonical editable-artifact live transport protocol version. */\nexport const EDITABLE_ARTIFACT_LIVE_WIRE_VERSION = 2 as const;\n"],"mappings":";AAOO,IAAM,4CAA4C;AAClD,IAAM,yCAAyC;AAC/C,IAAM,6CAA6C;AAGnD,IAAM,sCAAsC;AAG5C,IAAM,qCAAqC;AAC3C,IAAM,yCAAyC;AAG/C,IAAM,qCAAqC;AAG3C,IAAM,uCAAuC;AAG7C,IAAM,6CAA6C;AAGnD,IAAM,yCAAyC;AAG/C,IAAM,8CAA8C;AAGpD,IAAM,sCAAsC;","names":[]}
@@ -0,0 +1,76 @@
1
+ // src/message-time-zone.ts
2
+ var MESSAGE_TIME_ZONE_MAX_CHARS = 64;
3
+ var MESSAGE_TIME_ZONE_METADATA_KEY = "messageTimeZone";
4
+ var MESSAGE_TIME_ZONE_PATTERN = /^[A-Za-z][A-Za-z0-9_+-]*(?:\/[A-Za-z0-9_+-]+){0,2}$/;
5
+ var UTC_EQUIVALENT_TIME_ZONE = /^(?:Etc\/)?(?:UTC|UCT|Universal|Zulu|Greenwich|GMT(?:[+-]?0)?)$/i;
6
+ var formats = /* @__PURE__ */ new Map();
7
+ function wallClockFormat(timeZone) {
8
+ const cached = formats.get(timeZone);
9
+ if (cached) return cached;
10
+ let format;
11
+ try {
12
+ format = new Intl.DateTimeFormat("en-US", {
13
+ timeZone,
14
+ year: "numeric",
15
+ month: "2-digit",
16
+ day: "2-digit",
17
+ hour: "2-digit",
18
+ minute: "2-digit",
19
+ hourCycle: "h23"
20
+ });
21
+ } catch {
22
+ return void 0;
23
+ }
24
+ if (formats.size >= 512) formats.clear();
25
+ formats.set(timeZone, format);
26
+ return format;
27
+ }
28
+ function namesRealZone(value) {
29
+ return value.length > 0 && value.length <= MESSAGE_TIME_ZONE_MAX_CHARS && MESSAGE_TIME_ZONE_PATTERN.test(value) && !UTC_EQUIVALENT_TIME_ZONE.test(value);
30
+ }
31
+ function normalizeMessageTimeZone(value) {
32
+ if (typeof value !== "string" || !namesRealZone(value)) return void 0;
33
+ const resolved = wallClockFormat(value)?.resolvedOptions().timeZone;
34
+ return resolved && namesRealZone(resolved) ? resolved : void 0;
35
+ }
36
+ function messageTimeZoneFromTurnMetadata(metadata) {
37
+ if (typeof metadata !== "object" || metadata === null || Array.isArray(metadata)) {
38
+ return void 0;
39
+ }
40
+ const value = metadata[MESSAGE_TIME_ZONE_METADATA_KEY];
41
+ return normalizeMessageTimeZone(value) !== void 0 ? value : void 0;
42
+ }
43
+ function currentMessageTimeZone() {
44
+ try {
45
+ return normalizeMessageTimeZone(new Intl.DateTimeFormat().resolvedOptions().timeZone);
46
+ } catch {
47
+ return void 0;
48
+ }
49
+ }
50
+ function messageTimeZoneWallClock(date, timeZone) {
51
+ if (normalizeMessageTimeZone(timeZone) === void 0) return void 0;
52
+ const format = wallClockFormat(timeZone);
53
+ if (!format) return void 0;
54
+ const parts = {};
55
+ for (const part of format.formatToParts(date)) parts[part.type] = part.value;
56
+ const clock = {
57
+ year: Number(parts.year),
58
+ month: Number(parts.month),
59
+ day: Number(parts.day),
60
+ // Some engines spell midnight as 24 even with a 23-hour cycle.
61
+ hour: Number(parts.hour) % 24,
62
+ minute: Number(parts.minute)
63
+ };
64
+ return Object.values(clock).every(Number.isInteger) ? clock : void 0;
65
+ }
66
+
67
+ export {
68
+ MESSAGE_TIME_ZONE_MAX_CHARS,
69
+ MESSAGE_TIME_ZONE_METADATA_KEY,
70
+ MESSAGE_TIME_ZONE_PATTERN,
71
+ normalizeMessageTimeZone,
72
+ messageTimeZoneFromTurnMetadata,
73
+ currentMessageTimeZone,
74
+ messageTimeZoneWallClock
75
+ };
76
+ //# sourceMappingURL=chunk-XB6GQLBH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/message-time-zone.ts"],"sourcesContent":["/**\n * The IANA time zone a person's client reports when they send a message, so\n * the model can see the message's local time. Dependency-free so browser\n * packages can import it without the schema bundle.\n */\n\n/** Longest accepted time zone name. Real IANA names are at most about 32 characters. */\nexport const MESSAGE_TIME_ZONE_MAX_CHARS = 64;\n\n/**\n * Turn metadata key for the sender's IANA time zone, frozen when the message is\n * accepted. Claim renders the message's local time from it exactly once.\n */\nexport const MESSAGE_TIME_ZONE_METADATA_KEY = \"messageTimeZone\" as const;\n\n/**\n * IANA names such as `Europe/Oslo`, `America/Argentina/Buenos_Aires`,\n * `Etc/GMT+5` or `EST5EDT`. Numeric offsets (`+01:00`) are not zone names.\n */\nexport const MESSAGE_TIME_ZONE_PATTERN = /^[A-Za-z][A-Za-z0-9_+-]*(?:\\/[A-Za-z0-9_+-]+){0,2}$/;\n\n// Zones that are plain UTC add nothing to the UTC time already shown.\nconst UTC_EQUIVALENT_TIME_ZONE = /^(?:Etc\\/)?(?:UTC|UCT|Universal|Zulu|Greenwich|GMT(?:[+-]?0)?)$/i;\n\nconst formats = new Map<string, Intl.DateTimeFormat>();\n\nfunction wallClockFormat(timeZone: string): Intl.DateTimeFormat | undefined {\n const cached = formats.get(timeZone);\n if (cached) return cached;\n let format: Intl.DateTimeFormat;\n try {\n format = new Intl.DateTimeFormat(\"en-US\", {\n timeZone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hourCycle: \"h23\",\n });\n } catch {\n return undefined;\n }\n if (formats.size >= 512) formats.clear();\n formats.set(timeZone, format);\n return format;\n}\n\nfunction namesRealZone(value: string): boolean {\n return (\n value.length > 0 &&\n value.length <= MESSAGE_TIME_ZONE_MAX_CHARS &&\n MESSAGE_TIME_ZONE_PATTERN.test(value) &&\n !UTC_EQUIVALENT_TIME_ZONE.test(value)\n );\n}\n\n/**\n * The canonical name of a sender's time zone, or undefined when the value is\n * not an IANA zone name this runtime can resolve, or is just UTC. Accepting\n * surfaces store the returned name; clients use it to drop invalid values.\n */\nexport function normalizeMessageTimeZone(value: unknown): string | undefined {\n if (typeof value !== \"string\" || !namesRealZone(value)) return undefined;\n const resolved = wallClockFormat(value)?.resolvedOptions().timeZone;\n return resolved && namesRealZone(resolved) ? resolved : undefined;\n}\n\n/** The sender's time zone frozen in one accepted turn's metadata, when it holds a usable one. */\nexport function messageTimeZoneFromTurnMetadata(metadata: unknown): string | undefined {\n if (typeof metadata !== \"object\" || metadata === null || Array.isArray(metadata)) {\n return undefined;\n }\n const value = (metadata as Record<string, unknown>)[MESSAGE_TIME_ZONE_METADATA_KEY];\n return normalizeMessageTimeZone(value) !== undefined ? (value as string) : undefined;\n}\n\n/** The time zone this runtime's own clock uses, when it is a usable IANA zone. */\nexport function currentMessageTimeZone(): string | undefined {\n try {\n return normalizeMessageTimeZone(new Intl.DateTimeFormat().resolvedOptions().timeZone);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Calendar date and minute of `date` on a wall clock in `timeZone` (seconds\n * are truncated, as in UTC rendering). Undefined for an unusable zone.\n */\nexport function messageTimeZoneWallClock(\n date: Date,\n timeZone: string,\n): { year: number; month: number; day: number; hour: number; minute: number } | undefined {\n if (normalizeMessageTimeZone(timeZone) === undefined) return undefined;\n const format = wallClockFormat(timeZone);\n if (!format) return undefined;\n const parts: Partial<Record<Intl.DateTimeFormatPartTypes, string>> = {};\n for (const part of format.formatToParts(date)) parts[part.type] = part.value;\n const clock = {\n year: Number(parts.year),\n month: Number(parts.month),\n day: Number(parts.day),\n // Some engines spell midnight as 24 even with a 23-hour cycle.\n hour: Number(parts.hour) % 24,\n minute: Number(parts.minute),\n };\n return Object.values(clock).every(Number.isInteger) ? clock : undefined;\n}\n"],"mappings":";AAOO,IAAM,8BAA8B;AAMpC,IAAM,iCAAiC;AAMvC,IAAM,4BAA4B;AAGzC,IAAM,2BAA2B;AAEjC,IAAM,UAAU,oBAAI,IAAiC;AAErD,SAAS,gBAAgB,UAAmD;AAC1E,QAAM,SAAS,QAAQ,IAAI,QAAQ;AACnC,MAAI,OAAQ,QAAO;AACnB,MAAI;AACJ,MAAI;AACF,aAAS,IAAI,KAAK,eAAe,SAAS;AAAA,MACxC;AAAA,MACA,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,WAAW;AAAA,IACb,CAAC;AAAA,EACH,QAAQ;AACN,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,QAAQ,IAAK,SAAQ,MAAM;AACvC,UAAQ,IAAI,UAAU,MAAM;AAC5B,SAAO;AACT;AAEA,SAAS,cAAc,OAAwB;AAC7C,SACE,MAAM,SAAS,KACf,MAAM,UAAU,+BAChB,0BAA0B,KAAK,KAAK,KACpC,CAAC,yBAAyB,KAAK,KAAK;AAExC;AAOO,SAAS,yBAAyB,OAAoC;AAC3E,MAAI,OAAO,UAAU,YAAY,CAAC,cAAc,KAAK,EAAG,QAAO;AAC/D,QAAM,WAAW,gBAAgB,KAAK,GAAG,gBAAgB,EAAE;AAC3D,SAAO,YAAY,cAAc,QAAQ,IAAI,WAAW;AAC1D;AAGO,SAAS,gCAAgC,UAAuC;AACrF,MAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,MAAM,QAAQ,QAAQ,GAAG;AAChF,WAAO;AAAA,EACT;AACA,QAAM,QAAS,SAAqC,8BAA8B;AAClF,SAAO,yBAAyB,KAAK,MAAM,SAAa,QAAmB;AAC7E;AAGO,SAAS,yBAA6C;AAC3D,MAAI;AACF,WAAO,yBAAyB,IAAI,KAAK,eAAe,EAAE,gBAAgB,EAAE,QAAQ;AAAA,EACtF,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAMO,SAAS,yBACd,MACA,UACwF;AACxF,MAAI,yBAAyB,QAAQ,MAAM,OAAW,QAAO;AAC7D,QAAM,SAAS,gBAAgB,QAAQ;AACvC,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,QAA+D,CAAC;AACtE,aAAW,QAAQ,OAAO,cAAc,IAAI,EAAG,OAAM,KAAK,IAAI,IAAI,KAAK;AACvE,QAAM,QAAQ;AAAA,IACZ,MAAM,OAAO,MAAM,IAAI;AAAA,IACvB,OAAO,OAAO,MAAM,KAAK;AAAA,IACzB,KAAK,OAAO,MAAM,GAAG;AAAA;AAAA,IAErB,MAAM,OAAO,MAAM,IAAI,IAAI;AAAA,IAC3B,QAAQ,OAAO,MAAM,MAAM;AAAA,EAC7B;AACA,SAAO,OAAO,OAAO,KAAK,EAAE,MAAM,OAAO,SAAS,IAAI,QAAQ;AAChE;","names":[]}
@@ -6,7 +6,7 @@ import {
6
6
  equalBytes,
7
7
  fnv1a64,
8
8
  strictUtf8
9
- } from "./chunk-MYBZRDTY.js";
9
+ } from "./chunk-WQI7VNN4.js";
10
10
 
11
11
  // src/presentation-artifact-commands.ts
12
12
  var PRESENTATION_ARTIFACT_COMMAND_VERSION = 1;
@@ -1457,4 +1457,4 @@ export {
1457
1457
  decodePresentationArtifactQueryResponse,
1458
1458
  assertCanonicalPresentationArtifactQueryResponseBytes
1459
1459
  };
1460
- //# sourceMappingURL=chunk-D2HKF2EF.js.map
1460
+ //# sourceMappingURL=chunk-XP5M3IKT.js.map
@@ -6,9 +6,19 @@ var WORKSPACE_WEBHOOK_EVENT_TYPES = [
6
6
  "session.status.changed",
7
7
  "session.requiresAction",
8
8
  "session.humanInput.requested",
9
+ "session.notification.posted",
10
+ "session.notification.withdrawn",
9
11
  "usage.threshold_reached",
10
12
  "usage.exhausted",
11
- "usage.period_reset"
13
+ "usage.period_reset",
14
+ "recording.started",
15
+ "recording.finished",
16
+ "recording.transcript.ready",
17
+ "recording.transcript.failed",
18
+ "recording.transcript.current_changed",
19
+ "recording.speakers.updated",
20
+ "recording.notes.updated",
21
+ "recording.deleted"
12
22
  ];
13
23
  var OPENGENI_WEBHOOK_TEST_EVENT_TYPE = "webhook.test";
14
24
  var OPENGENI_TEST_REQUEST_NIL_ID = "00000000-0000-0000-0000-000000000000";
@@ -67,4 +77,4 @@ export {
67
77
  signOpenGeniPayload,
68
78
  verifyOpenGeniSignature
69
79
  };
70
- //# sourceMappingURL=chunk-O77VSFYZ.js.map
80
+ //# sourceMappingURL=chunk-ZMPU5BWE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/workspace-integration-wire.ts"],"sourcesContent":["/**\n * Dependency-free wire constants and the OpenGeni-Signature scheme shared by\n * workspace webhooks and credential providers. Kept free of zod so browser and\n * React Native bundles can verify signatures without the schema runtime.\n */\n\nexport const WORKSPACE_WEBHOOK_EVENT_TYPES = [\n \"turn.completed\",\n \"turn.failed\",\n \"turn.cancelled\",\n \"session.status.changed\",\n \"session.requiresAction\",\n \"session.humanInput.requested\",\n \"session.notification.posted\",\n \"session.notification.withdrawn\",\n \"usage.threshold_reached\",\n \"usage.exhausted\",\n \"usage.period_reset\",\n \"recording.started\",\n \"recording.finished\",\n \"recording.transcript.ready\",\n \"recording.transcript.failed\",\n \"recording.transcript.current_changed\",\n \"recording.speakers.updated\",\n \"recording.notes.updated\",\n \"recording.deleted\",\n] as const;\n\n/**\n * Sent only when an administrator presses \"Send test event\". It is never a\n * subscribable type: every endpoint can receive it, and a receiver that does\n * not care acknowledges it with any 2xx.\n */\nexport const OPENGENI_WEBHOOK_TEST_EVENT_TYPE = \"webhook.test\";\n\n/**\n * The session, turn and attempt ids of a credential-provider test request\n * (`purpose: \"test\"`). A test is not a run, so no real ids exist.\n */\nexport const OPENGENI_TEST_REQUEST_NIL_ID = \"00000000-0000-0000-0000-000000000000\";\n\nexport const OPENGENI_SIGNATURE_HEADER = \"OpenGeni-Signature\";\nexport const OPENGENI_EVENT_ID_HEADER = \"OpenGeni-Event-Id\";\nexport const OPENGENI_DELIVERY_ID_HEADER = \"OpenGeni-Delivery-Id\";\nexport const OPENGENI_SIGNATURE_TOLERANCE_SECONDS = 300;\n\nconst encoder = new TextEncoder();\n\nasync function hmacSha256Hex(secret: string, message: string): Promise<string> {\n const key = await crypto.subtle.importKey(\n \"raw\",\n encoder.encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const signature = new Uint8Array(await crypto.subtle.sign(\"HMAC\", key, encoder.encode(message)));\n return Array.from(signature, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nfunction constantTimeEqualHex(left: string, right: string): boolean {\n if (left.length !== right.length) return false;\n let difference = 0;\n for (let index = 0; index < left.length; index += 1) {\n difference |= left.charCodeAt(index) ^ right.charCodeAt(index);\n }\n return difference === 0;\n}\n\n/**\n * `OpenGeni-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256(secret, \"<t>.<body>\")>`.\n * The timestamp is signed so a captured request cannot be replayed later.\n */\nexport async function signOpenGeniPayload(\n secret: string,\n body: string,\n timestampSeconds = Math.floor(Date.now() / 1000),\n): Promise<string> {\n return `t=${timestampSeconds},v1=${await hmacSha256Hex(secret, `${timestampSeconds}.${body}`)}`;\n}\n\nexport type VerifyOpenGeniSignatureInput = {\n secret: string;\n /** The exact raw request body, before JSON parsing. */\n body: string;\n /** The `OpenGeni-Signature` header value. */\n signature: string | null | undefined;\n toleranceSeconds?: number;\n nowSeconds?: number;\n};\n\nexport async function verifyOpenGeniSignature(\n input: VerifyOpenGeniSignatureInput,\n): Promise<boolean> {\n if (!input.signature) return false;\n let timestamp: number | null = null;\n const candidates: string[] = [];\n for (const part of input.signature.split(\",\")) {\n const [key, value] = part.trim().split(\"=\", 2);\n if (key === \"t\" && value && /^\\d{1,12}$/.test(value)) timestamp = Number(value);\n if (key === \"v1\" && value && /^[0-9a-f]{64}$/.test(value)) candidates.push(value);\n }\n if (timestamp === null || candidates.length === 0) return false;\n const now = input.nowSeconds ?? Math.floor(Date.now() / 1000);\n const tolerance = input.toleranceSeconds ?? OPENGENI_SIGNATURE_TOLERANCE_SECONDS;\n if (Math.abs(now - timestamp) > tolerance) return false;\n const expected = await hmacSha256Hex(input.secret, `${timestamp}.${input.body}`);\n return candidates.some((candidate) => constantTimeEqualHex(candidate, expected));\n}\n"],"mappings":";AAMO,IAAM,gCAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,IAAM,mCAAmC;AAMzC,IAAM,+BAA+B;AAErC,IAAM,4BAA4B;AAClC,IAAM,2BAA2B;AACjC,IAAM,8BAA8B;AACpC,IAAM,uCAAuC;AAEpD,IAAM,UAAU,IAAI,YAAY;AAEhC,eAAe,cAAc,QAAgB,SAAkC;AAC7E,QAAM,MAAM,MAAM,OAAO,OAAO;AAAA,IAC9B;AAAA,IACA,QAAQ,OAAO,MAAM;AAAA,IACrB,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,IAChC;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AACA,QAAM,YAAY,IAAI,WAAW,MAAM,OAAO,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAO,OAAO,CAAC,CAAC;AAC/F,SAAO,MAAM,KAAK,WAAW,CAAC,SAAS,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AACpF;AAEA,SAAS,qBAAqB,MAAc,OAAwB;AAClE,MAAI,KAAK,WAAW,MAAM,OAAQ,QAAO;AACzC,MAAI,aAAa;AACjB,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,kBAAc,KAAK,WAAW,KAAK,IAAI,MAAM,WAAW,KAAK;AAAA,EAC/D;AACA,SAAO,eAAe;AACxB;AAMA,eAAsB,oBACpB,QACA,MACA,mBAAmB,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,GAC9B;AACjB,SAAO,KAAK,gBAAgB,OAAO,MAAM,cAAc,QAAQ,GAAG,gBAAgB,IAAI,IAAI,EAAE,CAAC;AAC/F;AAYA,eAAsB,wBACpB,OACkB;AAClB,MAAI,CAAC,MAAM,UAAW,QAAO;AAC7B,MAAI,YAA2B;AAC/B,QAAM,aAAuB,CAAC;AAC9B,aAAW,QAAQ,MAAM,UAAU,MAAM,GAAG,GAAG;AAC7C,UAAM,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AAC7C,QAAI,QAAQ,OAAO,SAAS,aAAa,KAAK,KAAK,EAAG,aAAY,OAAO,KAAK;AAC9E,QAAI,QAAQ,QAAQ,SAAS,iBAAiB,KAAK,KAAK,EAAG,YAAW,KAAK,KAAK;AAAA,EAClF;AACA,MAAI,cAAc,QAAQ,WAAW,WAAW,EAAG,QAAO;AAC1D,QAAM,MAAM,MAAM,cAAc,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAC5D,QAAM,YAAY,MAAM,oBAAoB;AAC5C,MAAI,KAAK,IAAI,MAAM,SAAS,IAAI,UAAW,QAAO;AAClD,QAAM,WAAW,MAAM,cAAc,MAAM,QAAQ,GAAG,SAAS,IAAI,MAAM,IAAI,EAAE;AAC/E,SAAO,WAAW,KAAK,CAAC,cAAc,qBAAqB,WAAW,QAAQ,CAAC;AACjF;","names":[]}