@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
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  SPREADSHEET_ARTIFACT_COMMAND_VERSION
3
- } from "./chunk-PX3VCKAU.js";
3
+ } from "./chunk-WVCFSOUZ.js";
4
+ import {
5
+ fnv1a64
6
+ } from "./chunk-WQI7VNN4.js";
4
7
 
5
8
  // src/spreadsheet-artifact-date.ts
6
9
  var ECMASCRIPT_DATE_MAX_MILLISECONDS = 8640000000000000n;
@@ -24,6 +27,9 @@ var SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS = 4096;
24
27
  var SPREADSHEET_ARTIFACT_COMMAND_MAX_CELLS = 1e6;
25
28
  var SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES = 1 * 1024 * 1024;
26
29
  var SPREADSHEET_ARTIFACT_SHEET_NAME_MAX_UTF16_UNITS = 31;
30
+ var SPREADSHEET_DEFAULT_ROW_HEIGHT = 24;
31
+ var SPREADSHEET_DEFAULT_COLUMN_WIDTH = 96;
32
+ var SPREADSHEET_MAX_DIMENSION_PIXELS = 4096;
27
33
  var MAGIC = new TextEncoder().encode("OGASC002");
28
34
  var HEADER_BYTES = 8 + 2 + 2 + 4 + 8;
29
35
  var CHECKSUM_BYTES = 8;
@@ -32,8 +38,6 @@ var textDecoder = new TextDecoder("utf-8", { fatal: true });
32
38
  var LOWER_HEX_ID = /^[0-9a-f]{32}$/u;
33
39
  var UINT64_HEX_ZERO = "0".repeat(16);
34
40
  var UINT32_MAX = 4294967295;
35
- var FNV_OFFSET = 0xcbf29ce484222325n;
36
- var FNV_PRIME = 0x100000001b3n;
37
41
  function editableArtifactStableId(value) {
38
42
  return genericStableId(value, "stable id");
39
43
  }
@@ -215,12 +219,34 @@ function encodeCommand(writer, value, index, context) {
215
219
  writer.u32(range.end.column);
216
220
  break;
217
221
  }
222
+ case "row.height.set":
223
+ case "column.width.set": {
224
+ const row = command.kind === "row.height.set";
225
+ const coordinate = row ? "row" : "column";
226
+ const size = row ? "height" : "width";
227
+ exactKeys(
228
+ command,
229
+ ["kind", "sheet", coordinate, size].sort(),
230
+ `spreadsheet command ${index}`
231
+ );
232
+ writer.u8(row ? 5 : 6);
233
+ encodeSheetPrecondition(writer, command.sheet, index, context);
234
+ writer.u32(nonnegativeU32(command[coordinate], coordinate));
235
+ writer.u32(
236
+ dimensionPixels(
237
+ command[size],
238
+ row ? SPREADSHEET_DEFAULT_ROW_HEIGHT : SPREADSHEET_DEFAULT_COLUMN_WIDTH
239
+ )
240
+ );
241
+ break;
242
+ }
218
243
  default:
219
244
  throw commandError(index, "unknown command kind");
220
245
  }
221
246
  }
222
247
  function decodeCommand(reader, index, context) {
223
- switch (reader.u8()) {
248
+ const tag = reader.u8();
249
+ switch (tag) {
224
250
  case 0: {
225
251
  const sheetId = reader.sheetObjectId();
226
252
  const name = decodedSheetName(
@@ -279,10 +305,35 @@ function decodeCommand(reader, index, context) {
279
305
  range: Object.freeze({ start, end })
280
306
  });
281
307
  }
308
+ case 5:
309
+ case 6: {
310
+ const sheet = decodeSheetPrecondition(reader, index, context);
311
+ const coordinate = reader.u32();
312
+ const pixels = reader.u32();
313
+ const defaultPixels = tag === 5 ? SPREADSHEET_DEFAULT_ROW_HEIGHT : SPREADSHEET_DEFAULT_COLUMN_WIDTH;
314
+ if (pixels === defaultPixels || pixels > SPREADSHEET_MAX_DIMENSION_PIXELS) {
315
+ throw commandError(index, "dimension pixels are noncanonical or outside bounds");
316
+ }
317
+ return tag === 5 ? Object.freeze({ kind: "row.height.set", sheet, row: coordinate, height: pixels || null }) : Object.freeze({
318
+ kind: "column.width.set",
319
+ sheet,
320
+ column: coordinate,
321
+ width: pixels || null
322
+ });
323
+ }
282
324
  default:
283
325
  throw commandError(index, "unknown binary command tag");
284
326
  }
285
327
  }
328
+ function dimensionPixels(value, defaultPixels) {
329
+ if (value === null) return 0;
330
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 1 || value > SPREADSHEET_MAX_DIMENSION_PIXELS) {
331
+ throw new RangeError(
332
+ "dimension pixels must be an integer from 1 through 4096, or null to reset"
333
+ );
334
+ }
335
+ return value === defaultPixels ? 0 : value;
336
+ }
286
337
  function encodeSheetPrecondition(writer, value, commandIndex, context) {
287
338
  const input = plainRecord(value, `spreadsheet command ${commandIndex} sheet precondition`);
288
339
  if (input.kind === "generation") {
@@ -477,14 +528,6 @@ function strictUtf8(value, label) {
477
528
  function compareCodeUnits(left, right) {
478
529
  return left < right ? -1 : left > right ? 1 : 0;
479
530
  }
480
- function fnv1a64(bytes) {
481
- let hash = FNV_OFFSET;
482
- for (const byte of bytes) {
483
- hash ^= BigInt(byte);
484
- hash = BigInt.asUintN(64, hash * FNV_PRIME);
485
- }
486
- return hash;
487
- }
488
531
  function equalBytes(left, right) {
489
532
  return left.byteLength === right.byteLength && left.every((value, index) => value === right[index]);
490
533
  }
@@ -774,10 +817,13 @@ export {
774
817
  SPREADSHEET_ARTIFACT_COMMAND_MAX_CELLS,
775
818
  SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES,
776
819
  SPREADSHEET_ARTIFACT_SHEET_NAME_MAX_UTF16_UNITS,
820
+ SPREADSHEET_DEFAULT_ROW_HEIGHT,
821
+ SPREADSHEET_DEFAULT_COLUMN_WIDTH,
822
+ SPREADSHEET_MAX_DIMENSION_PIXELS,
777
823
  editableArtifactStableId,
778
824
  spreadsheetSheetId,
779
825
  encodeSpreadsheetArtifactCommandBatch,
780
826
  decodeSpreadsheetArtifactCommandBatch,
781
827
  assertCanonicalSpreadsheetArtifactCommandBytes
782
828
  };
783
- //# sourceMappingURL=chunk-TXTQIYCV.js.map
829
+ //# sourceMappingURL=chunk-RUQ4I6DO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/spreadsheet-artifact-date.ts","../src/spreadsheet-artifact-commands.ts"],"sourcesContent":["const ECMASCRIPT_DATE_MAX_MILLISECONDS = 8_640_000_000_000_000n;\n\n/** Parses only the exact string form emitted by `Date.prototype.toISOString`. */\nexport function canonicalSpreadsheetDateMilliseconds(value: unknown): number {\n const milliseconds = typeof value === \"string\" ? Date.parse(value) : Number.NaN;\n if (!Number.isFinite(milliseconds) || new Date(milliseconds).toISOString() !== value) {\n throw new TypeError(\"date must be canonical ISO\");\n }\n return milliseconds;\n}\n\n/** Converts a signed wire integer to a canonical ISO instant without lossy coercion. */\nexport function canonicalSpreadsheetDateFromMilliseconds(milliseconds: bigint): string {\n if (\n milliseconds < -ECMASCRIPT_DATE_MAX_MILLISECONDS ||\n milliseconds > ECMASCRIPT_DATE_MAX_MILLISECONDS\n ) {\n throw new RangeError(\"date outside supported range\");\n }\n return new Date(Number(milliseconds)).toISOString();\n}\n","import {\n canonicalSpreadsheetDateFromMilliseconds,\n canonicalSpreadsheetDateMilliseconds,\n} from \"./spreadsheet-artifact-date\";\nimport { SPREADSHEET_ARTIFACT_COMMAND_VERSION } from \"./editable-artifact-versions\";\nimport { fnv1a64 } from \"./editable-artifact-binary\";\n\n/**\n * Canonical, identity-free spreadsheet mutation commands nested inside\n * `OGATX001`. Artifact, actor, transaction, delivery, and causal identity must\n * never be added here: the outer authored-intent envelope is their sole wire\n * authority.\n */\n\nexport { SPREADSHEET_ARTIFACT_COMMAND_VERSION } from \"./editable-artifact-versions\";\nexport const SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES = 4 * 1024 * 1024;\nexport const SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS = 4_096;\nexport const SPREADSHEET_ARTIFACT_COMMAND_MAX_CELLS = 1_000_000;\nexport const SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES = 1 * 1024 * 1024;\nexport const SPREADSHEET_ARTIFACT_SHEET_NAME_MAX_UTF16_UNITS = 31;\nexport const SPREADSHEET_DEFAULT_ROW_HEIGHT = 24;\nexport const SPREADSHEET_DEFAULT_COLUMN_WIDTH = 96;\nexport const SPREADSHEET_MAX_DIMENSION_PIXELS = 4096;\n\nconst MAGIC = new TextEncoder().encode(\"OGASC002\");\nconst HEADER_BYTES = 8 + 2 + 2 + 4 + 8;\nconst CHECKSUM_BYTES = 8;\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder(\"utf-8\", { fatal: true });\nconst LOWER_HEX_ID = /^[0-9a-f]{32}$/u;\nconst UINT64_HEX_ZERO = \"0\".repeat(16);\nconst UINT32_MAX = 0xffff_ffff;\n\ndeclare const stableIdBrand: unique symbol;\n\n/** Fixed-width lowercase hexadecimal 128-bit id. Runtime helpers enforce use. */\nexport type EditableArtifactStableId = string & {\n readonly [stableIdBrand]: \"EditableArtifactStableId\";\n};\n\n/**\n * A concrete sheet generation. The object id follows the offline allocator\n * invariant (both 64-bit halves nonzero); a derived operation id reserves only\n * the all-zero 128-bit value.\n */\nexport type SpreadsheetSheetGeneration = Readonly<{\n kind: \"generation\";\n sheetId: EditableArtifactStableId;\n creationOperationId: EditableArtifactStableId;\n}>;\n\n/**\n * Reference to a sheet created by an earlier command in this same batch.\n * This avoids recursively embedding the creation operation id, which is\n * derived from the hash of the complete outer intent.\n */\nexport type SpreadsheetPriorCreatePrecondition = Readonly<{\n kind: \"created-in-batch\";\n sheetId: EditableArtifactStableId;\n createCommandIndex: number;\n}>;\n\nexport type SpreadsheetSheetPrecondition =\n | SpreadsheetSheetGeneration\n | SpreadsheetPriorCreatePrecondition;\n\nexport type SpreadsheetCellPoint = Readonly<{ row: number; column: number }>;\nexport type SpreadsheetCellRange = Readonly<{\n start: SpreadsheetCellPoint;\n end: SpreadsheetCellPoint;\n}>;\n\nexport type SpreadsheetFormulaError = Readonly<{ error: string }>;\nexport type SpreadsheetDateValue = Readonly<{ date: string }>;\nexport type SpreadsheetCellScalar =\n | null\n | boolean\n | number\n | string\n | SpreadsheetDateValue\n | SpreadsheetFormulaError;\nexport type SpreadsheetFormulaCell = Readonly<{\n formula: string;\n}>;\nexport type SpreadsheetCellInput = SpreadsheetCellScalar | SpreadsheetFormulaCell;\n\nexport type SpreadsheetCreateSheetCommand = Readonly<{\n kind: \"sheet.create\";\n sheetId: EditableArtifactStableId;\n name: string;\n after: SpreadsheetSheetPrecondition | null;\n}>;\n\nexport type SpreadsheetRenameSheetCommand = Readonly<{\n kind: \"sheet.rename\";\n sheet: SpreadsheetSheetPrecondition;\n name: string;\n}>;\n\nexport type SpreadsheetDeleteSheetCommand = Readonly<{\n kind: \"sheet.delete\";\n sheet: SpreadsheetSheetPrecondition;\n}>;\n\n/** Row-major rectangular write; `cells.length === rows * columns`. */\nexport type SpreadsheetSetCellsCommand = Readonly<{\n kind: \"cells.set\";\n sheet: SpreadsheetSheetPrecondition;\n anchor: SpreadsheetCellPoint;\n rows: number;\n columns: number;\n cells: readonly SpreadsheetCellInput[];\n}>;\n\nexport type SpreadsheetClearRangeCommand = Readonly<{\n kind: \"range.clear\";\n sheet: SpreadsheetSheetPrecondition;\n range: SpreadsheetCellRange;\n}>;\n\nexport type SpreadsheetArtifactCommand =\n | SpreadsheetCreateSheetCommand\n | SpreadsheetRenameSheetCommand\n | SpreadsheetDeleteSheetCommand\n | SpreadsheetSetCellsCommand\n | SpreadsheetClearRangeCommand\n | Readonly<{\n kind: \"row.height.set\";\n sheet: SpreadsheetSheetPrecondition;\n row: number;\n height: number | null;\n }>\n | Readonly<{\n kind: \"column.width.set\";\n sheet: SpreadsheetSheetPrecondition;\n column: number;\n width: number | null;\n }>;\n\nexport type SpreadsheetArtifactCommandBatch = Readonly<{\n version: typeof SPREADSHEET_ARTIFACT_COMMAND_VERSION;\n commands: readonly SpreadsheetArtifactCommand[];\n}>;\n\n/** Validates a generic nonzero 128-bit id and returns its nominal type. */\nexport function editableArtifactStableId(value: string): EditableArtifactStableId {\n return genericStableId(value, \"stable id\");\n}\n\n/** Validates a sheet object id with nonzero allocator namespace and counter. */\nexport function spreadsheetSheetId(value: string): EditableArtifactStableId {\n return sheetObjectId(value, \"sheet id\");\n}\n\nexport function encodeSpreadsheetArtifactCommandBatch(\n input: SpreadsheetArtifactCommandBatch,\n): Uint8Array {\n const batch = batchRecord(input);\n const payload = new BinaryWriter(\n SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES - HEADER_BYTES - CHECKSUM_BYTES,\n );\n const context = new CommandContext();\n for (let index = 0; index < batch.commands.length; index += 1) {\n const command = ownArrayElement(batch.commands, index, \"commands\");\n encodeCommand(payload, command, index, context);\n }\n\n const payloadBytes = payload.finish();\n const output = new BinaryWriter(SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES);\n output.bytes(MAGIC);\n output.u16(SPREADSHEET_ARTIFACT_COMMAND_VERSION);\n output.u16(0);\n output.u32(batch.commands.length);\n output.u64(BigInt(payloadBytes.byteLength));\n output.bytes(payloadBytes);\n output.u64(fnv1a64(output.view()));\n return output.finish();\n}\n\nexport function decodeSpreadsheetArtifactCommandBatch(\n bytes: Uint8Array,\n): SpreadsheetArtifactCommandBatch {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError(\"spreadsheet command bytes must be a Uint8Array\");\n }\n if (bytes.byteLength > SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES) {\n throw new RangeError(\"spreadsheet command envelope exceeds its byte limit\");\n }\n if (bytes.byteLength < HEADER_BYTES + CHECKSUM_BYTES) {\n throw new TypeError(\"truncated spreadsheet command envelope\");\n }\n const header = new BinaryReader(bytes);\n if (!equalBytes(header.bytes(MAGIC.byteLength), MAGIC)) {\n throw new TypeError(\"invalid spreadsheet command magic\");\n }\n const version = header.u16();\n if (version !== SPREADSHEET_ARTIFACT_COMMAND_VERSION) {\n throw new TypeError(`unsupported spreadsheet command version: ${version}`);\n }\n if (header.u16() !== 0) {\n throw new TypeError(\"spreadsheet command reserved flags must be zero\");\n }\n const commandCount = header.u32();\n if (commandCount < 1 || commandCount > SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS) {\n throw new RangeError(\"spreadsheet command count is outside its limit\");\n }\n const payloadLength = safeLength(header.u64(), \"spreadsheet command payload\");\n const expectedLength = HEADER_BYTES + payloadLength + CHECKSUM_BYTES;\n if (bytes.byteLength < expectedLength) {\n throw new TypeError(\"truncated spreadsheet command envelope\");\n }\n if (bytes.byteLength > expectedLength) {\n throw new TypeError(\"spreadsheet command envelope contains trailing bytes\");\n }\n const advertisedChecksum = readU64At(bytes, expectedLength - CHECKSUM_BYTES);\n const actualChecksum = fnv1a64(bytes.subarray(0, expectedLength - CHECKSUM_BYTES));\n if (advertisedChecksum !== actualChecksum) {\n throw new TypeError(\"spreadsheet command checksum does not match\");\n }\n\n const payload = new BinaryReader(bytes.subarray(HEADER_BYTES, HEADER_BYTES + payloadLength));\n const context = new CommandContext();\n const commands: SpreadsheetArtifactCommand[] = [];\n for (let index = 0; index < commandCount; index += 1) {\n commands.push(decodeCommand(payload, index, context));\n }\n payload.done(\"spreadsheet command payload contains trailing bytes\");\n return Object.freeze({\n version: SPREADSHEET_ARTIFACT_COMMAND_VERSION,\n commands: Object.freeze(commands),\n });\n}\n\n/** Decodes, re-encodes, and proves byte-for-byte canonicality. */\nexport function assertCanonicalSpreadsheetArtifactCommandBytes(bytes: Uint8Array): Uint8Array {\n const canonical = encodeSpreadsheetArtifactCommandBatch(\n decodeSpreadsheetArtifactCommandBatch(bytes),\n );\n if (!equalBytes(bytes, canonical)) {\n throw new TypeError(\"spreadsheet command envelope is not canonical\");\n }\n return bytes;\n}\n\nclass CommandContext {\n readonly createdByIndex = new Map<number, string>();\n readonly createdSheetIds = new Set<string>();\n totalCells = 0;\n\n registerCreate(index: number, sheetId: string): void {\n if (this.createdSheetIds.has(sheetId)) {\n throw commandError(index, \"sheet id is created more than once in the batch\");\n }\n this.createdByIndex.set(index, sheetId);\n this.createdSheetIds.add(sheetId);\n }\n\n addCells(index: number, rows: number, columns: number): number {\n const count = rows * columns;\n if (!Number.isSafeInteger(count) || count < 1) {\n throw commandError(index, \"cell block dimensions are invalid\");\n }\n const next = this.totalCells + count;\n if (!Number.isSafeInteger(next) || next > SPREADSHEET_ARTIFACT_COMMAND_MAX_CELLS) {\n throw commandError(index, \"cell count exceeds its transaction limit\");\n }\n this.totalCells = next;\n return count;\n }\n}\n\nfunction encodeCommand(\n writer: BinaryWriter,\n value: unknown,\n index: number,\n context: CommandContext,\n): void {\n const command = plainRecord(value, `spreadsheet command ${index}`);\n switch (command.kind) {\n case \"sheet.create\": {\n exactKeys(command, [\"after\", \"kind\", \"name\", \"sheetId\"], `spreadsheet command ${index}`);\n const sheetId = sheetObjectId(command.sheetId, `spreadsheet command ${index} sheetId`);\n const name = sheetName(command.name, index);\n writer.u8(0);\n writer.stableId(sheetId);\n writer.string(name, SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES);\n if (command.after === null) {\n writer.u8(0);\n } else {\n writer.u8(1);\n encodeSheetPrecondition(writer, command.after, index, context);\n }\n context.registerCreate(index, sheetId);\n break;\n }\n case \"sheet.rename\": {\n exactKeys(command, [\"kind\", \"name\", \"sheet\"], `spreadsheet command ${index}`);\n writer.u8(1);\n encodeSheetPrecondition(writer, command.sheet, index, context);\n writer.string(sheetName(command.name, index), SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES);\n break;\n }\n case \"sheet.delete\": {\n exactKeys(command, [\"kind\", \"sheet\"], `spreadsheet command ${index}`);\n writer.u8(2);\n encodeSheetPrecondition(writer, command.sheet, index, context);\n break;\n }\n case \"cells.set\": {\n exactKeys(\n command,\n [\"anchor\", \"cells\", \"columns\", \"kind\", \"rows\", \"sheet\"],\n `spreadsheet command ${index}`,\n );\n const anchor = point(command.anchor, `spreadsheet command ${index} anchor`);\n const rows = positiveU32(command.rows, `spreadsheet command ${index} rows`);\n const columns = positiveU32(command.columns, `spreadsheet command ${index} columns`);\n assertExtent(anchor.row, rows, \"row\", index);\n assertExtent(anchor.column, columns, \"column\", index);\n const count = context.addCells(index, rows, columns);\n if (!Array.isArray(command.cells) || command.cells.length !== count) {\n throw commandError(index, `cells must contain exactly ${count} row-major values`);\n }\n writer.u8(3);\n encodeSheetPrecondition(writer, command.sheet, index, context);\n writer.u32(anchor.row);\n writer.u32(anchor.column);\n writer.u32(rows);\n writer.u32(columns);\n for (let cellIndex = 0; cellIndex < count; cellIndex += 1) {\n writer.cell(\n ownArrayElement(command.cells, cellIndex, `spreadsheet command ${index} cells`),\n );\n }\n break;\n }\n case \"range.clear\": {\n exactKeys(command, [\"kind\", \"range\", \"sheet\"], `spreadsheet command ${index}`);\n const range = cellRange(command.range, index);\n writer.u8(4);\n encodeSheetPrecondition(writer, command.sheet, index, context);\n writer.u32(range.start.row);\n writer.u32(range.start.column);\n writer.u32(range.end.row);\n writer.u32(range.end.column);\n break;\n }\n case \"row.height.set\":\n case \"column.width.set\": {\n const row = command.kind === \"row.height.set\";\n const coordinate = row ? \"row\" : \"column\";\n const size = row ? \"height\" : \"width\";\n exactKeys(\n command,\n [\"kind\", \"sheet\", coordinate, size].sort(),\n `spreadsheet command ${index}`,\n );\n writer.u8(row ? 5 : 6);\n encodeSheetPrecondition(writer, command.sheet, index, context);\n writer.u32(nonnegativeU32(command[coordinate], coordinate));\n writer.u32(\n dimensionPixels(\n command[size],\n row ? SPREADSHEET_DEFAULT_ROW_HEIGHT : SPREADSHEET_DEFAULT_COLUMN_WIDTH,\n ),\n );\n break;\n }\n default:\n throw commandError(index, \"unknown command kind\");\n }\n}\n\nfunction decodeCommand(\n reader: BinaryReader,\n index: number,\n context: CommandContext,\n): SpreadsheetArtifactCommand {\n const tag = reader.u8();\n switch (tag) {\n case 0: {\n const sheetId = reader.sheetObjectId();\n const name = decodedSheetName(\n reader.string(SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES),\n index,\n );\n const afterFlag = reader.u8();\n if (afterFlag > 1) throw commandError(index, \"after presence flag is invalid\");\n const after = afterFlag === 1 ? decodeSheetPrecondition(reader, index, context) : null;\n context.registerCreate(index, sheetId);\n return Object.freeze({ kind: \"sheet.create\", sheetId, name, after });\n }\n case 1:\n return Object.freeze({\n kind: \"sheet.rename\",\n sheet: decodeSheetPrecondition(reader, index, context),\n name: decodedSheetName(reader.string(SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES), index),\n });\n case 2:\n return Object.freeze({\n kind: \"sheet.delete\",\n sheet: decodeSheetPrecondition(reader, index, context),\n });\n case 3: {\n const sheet = decodeSheetPrecondition(reader, index, context);\n const anchor = frozenPoint(reader.u32(), reader.u32());\n const rows = reader.u32();\n const columns = reader.u32();\n if (rows === 0 || columns === 0) {\n throw commandError(index, \"cell block dimensions must be nonzero\");\n }\n assertExtent(anchor.row, rows, \"row\", index);\n assertExtent(anchor.column, columns, \"column\", index);\n const count = context.addCells(index, rows, columns);\n const cells: SpreadsheetCellInput[] = [];\n for (let cellIndex = 0; cellIndex < count; cellIndex += 1) cells.push(reader.cell());\n return Object.freeze({\n kind: \"cells.set\",\n sheet,\n anchor,\n rows,\n columns,\n cells: Object.freeze(cells),\n });\n }\n case 4: {\n const sheet = decodeSheetPrecondition(reader, index, context);\n const start = frozenPoint(reader.u32(), reader.u32());\n const end = frozenPoint(reader.u32(), reader.u32());\n if (start.row > end.row || start.column > end.column) {\n throw commandError(index, \"clear range endpoints are not ordered\");\n }\n return Object.freeze({\n kind: \"range.clear\",\n sheet,\n range: Object.freeze({ start, end }),\n });\n }\n case 5:\n case 6: {\n const sheet = decodeSheetPrecondition(reader, index, context);\n const coordinate = reader.u32();\n const pixels = reader.u32();\n const defaultPixels =\n tag === 5 ? SPREADSHEET_DEFAULT_ROW_HEIGHT : SPREADSHEET_DEFAULT_COLUMN_WIDTH;\n if (pixels === defaultPixels || pixels > SPREADSHEET_MAX_DIMENSION_PIXELS) {\n throw commandError(index, \"dimension pixels are noncanonical or outside bounds\");\n }\n return tag === 5\n ? Object.freeze({ kind: \"row.height.set\", sheet, row: coordinate, height: pixels || null })\n : Object.freeze({\n kind: \"column.width.set\",\n sheet,\n column: coordinate,\n width: pixels || null,\n });\n }\n default:\n throw commandError(index, \"unknown binary command tag\");\n }\n}\n\nfunction dimensionPixels(value: unknown, defaultPixels: number): number {\n if (value === null) return 0;\n if (\n typeof value !== \"number\" ||\n !Number.isInteger(value) ||\n value < 1 ||\n value > SPREADSHEET_MAX_DIMENSION_PIXELS\n ) {\n throw new RangeError(\n \"dimension pixels must be an integer from 1 through 4096, or null to reset\",\n );\n }\n return value === defaultPixels ? 0 : value;\n}\n\nfunction encodeSheetPrecondition(\n writer: BinaryWriter,\n value: unknown,\n commandIndex: number,\n context: CommandContext,\n): void {\n const input = plainRecord(value, `spreadsheet command ${commandIndex} sheet precondition`);\n if (input.kind === \"generation\") {\n exactKeys(\n input,\n [\"creationOperationId\", \"kind\", \"sheetId\"],\n `spreadsheet command ${commandIndex} sheet generation`,\n );\n writer.u8(0);\n writer.stableId(sheetObjectId(input.sheetId, \"sheet generation sheetId\"));\n writer.stableId(genericStableId(input.creationOperationId, \"sheet creation operation id\"));\n return;\n }\n if (input.kind === \"created-in-batch\") {\n exactKeys(\n input,\n [\"createCommandIndex\", \"kind\", \"sheetId\"],\n `spreadsheet command ${commandIndex} prior-create precondition`,\n );\n const sheetId = sheetObjectId(input.sheetId, \"prior-create sheetId\");\n const createCommandIndex = nonnegativeU32(\n input.createCommandIndex,\n \"prior-create command index\",\n );\n assertPriorCreate(context, commandIndex, createCommandIndex, sheetId);\n writer.u8(1);\n writer.stableId(sheetId);\n writer.u32(createCommandIndex);\n return;\n }\n throw commandError(commandIndex, \"unknown sheet precondition kind\");\n}\n\nfunction decodeSheetPrecondition(\n reader: BinaryReader,\n commandIndex: number,\n context: CommandContext,\n): SpreadsheetSheetPrecondition {\n switch (reader.u8()) {\n case 0:\n return Object.freeze({\n kind: \"generation\",\n sheetId: reader.sheetObjectId(),\n creationOperationId: reader.genericStableId(),\n });\n case 1: {\n const sheetId = reader.sheetObjectId();\n const createCommandIndex = reader.u32();\n assertPriorCreate(context, commandIndex, createCommandIndex, sheetId);\n return Object.freeze({\n kind: \"created-in-batch\",\n sheetId,\n createCommandIndex,\n });\n }\n default:\n throw commandError(commandIndex, \"unknown sheet precondition tag\");\n }\n}\n\nfunction assertPriorCreate(\n context: CommandContext,\n commandIndex: number,\n createCommandIndex: number,\n sheetId: string,\n): void {\n if (createCommandIndex >= commandIndex) {\n throw commandError(commandIndex, \"prior-create reference must point to an earlier command\");\n }\n if (context.createdByIndex.get(createCommandIndex) !== sheetId) {\n throw commandError(\n commandIndex,\n \"prior-create reference must match the referenced create command and sheet id\",\n );\n }\n}\n\nfunction batchRecord(input: unknown): SpreadsheetArtifactCommandBatch {\n const batch = plainRecord(input, \"spreadsheet command batch\");\n exactKeys(batch, [\"commands\", \"version\"], \"spreadsheet command batch\");\n if (batch.version !== SPREADSHEET_ARTIFACT_COMMAND_VERSION) {\n throw new TypeError(\"spreadsheet command batch version must be 2\");\n }\n if (!Array.isArray(batch.commands)) throw new TypeError(\"commands must be an array\");\n if (\n batch.commands.length < 1 ||\n batch.commands.length > SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS\n ) {\n throw new RangeError(\"spreadsheet command count is outside its limit\");\n }\n return input as SpreadsheetArtifactCommandBatch;\n}\n\nfunction cellRange(value: unknown, index: number): SpreadsheetCellRange {\n const range = plainRecord(value, `spreadsheet command ${index} range`);\n exactKeys(range, [\"end\", \"start\"], `spreadsheet command ${index} range`);\n const start = point(range.start, `spreadsheet command ${index} range start`);\n const end = point(range.end, `spreadsheet command ${index} range end`);\n if (start.row > end.row || start.column > end.column) {\n throw commandError(index, \"clear range endpoints are not ordered\");\n }\n return { start, end };\n}\n\nfunction point(value: unknown, label: string): SpreadsheetCellPoint {\n const input = plainRecord(value, label);\n exactKeys(input, [\"column\", \"row\"], label);\n return {\n row: nonnegativeU32(input.row, `${label} row`),\n column: nonnegativeU32(input.column, `${label} column`),\n };\n}\n\nfunction frozenPoint(row: number, column: number): SpreadsheetCellPoint {\n return Object.freeze({ row, column });\n}\n\nfunction sheetName(value: unknown, index: number): string {\n if (typeof value !== \"string\") throw commandError(index, \"sheet name must be a string\");\n return decodedSheetName(value, index);\n}\n\nfunction decodedSheetName(value: string, index: number): string {\n const bytes = strictUtf8(value, \"sheet name\");\n const forbidden = /[\\\\/?*[\\]:\\0]/u.test(value);\n if (\n bytes.byteLength === 0 ||\n value.trim() !== value ||\n value.length > SPREADSHEET_ARTIFACT_SHEET_NAME_MAX_UTF16_UNITS ||\n forbidden\n ) {\n throw commandError(index, \"sheet name does not match the public spreadsheet model\");\n }\n return value;\n}\n\nfunction genericStableId(value: unknown, label: string): EditableArtifactStableId {\n if (typeof value !== \"string\" || !LOWER_HEX_ID.test(value) || /^0+$/u.test(value)) {\n throw new TypeError(`${label} must be nonzero fixed-width lowercase hexadecimal text`);\n }\n return value as EditableArtifactStableId;\n}\n\nfunction sheetObjectId(value: unknown, label: string): EditableArtifactStableId {\n const id = genericStableId(value, label);\n if (id.slice(0, 16) === UINT64_HEX_ZERO || id.slice(16) === UINT64_HEX_ZERO) {\n throw new TypeError(`${label} must have a nonzero namespace and counter`);\n }\n return id;\n}\n\nfunction positiveU32(value: unknown, label: string): number {\n const output = nonnegativeU32(value, label);\n if (output === 0) throw new TypeError(`${label} must be positive`);\n return output;\n}\n\nfunction nonnegativeU32(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 assertExtent(start: number, length: number, axis: string, index: number): void {\n if (length - 1 > UINT32_MAX - start) {\n throw commandError(index, `${axis} extent exceeds uint32 coordinates`);\n }\n}\n\nfunction safeLength(value: bigint, label: string): number {\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) throw new RangeError(`${label} length is unsafe`);\n const length = Number(value);\n if (length > SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES - HEADER_BYTES - CHECKSUM_BYTES) {\n throw new RangeError(`${label} exceeds its byte limit`);\n }\n return length;\n}\n\nfunction plainRecord(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} contains unsupported symbol fields`);\n }\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 commandError(index: number, message: string): TypeError {\n return new TypeError(`spreadsheet command ${index}: ${message}`);\n}\n\nfunction strictUtf8(value: string, 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 return textEncoder.encode(value);\n}\n\nfunction compareCodeUnits(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\nfunction equalBytes(left: Uint8Array, right: Uint8Array): boolean {\n return (\n left.byteLength === right.byteLength && left.every((value, index) => value === right[index])\n );\n}\n\nfunction readU64At(bytes: Uint8Array, offset: number): bigint {\n let value = 0n;\n for (let index = 0; index < 8; index += 1) {\n value |= BigInt(bytes[offset + index]!) << BigInt(index * 8);\n }\n return value;\n}\n\nconst STANDARD_ERROR_TAGS = Object.freeze({\n \"#NULL!\": 0,\n \"#DIV/0!\": 1,\n \"#VALUE!\": 2,\n \"#REF!\": 3,\n \"#NAME?\": 4,\n \"#NUM!\": 5,\n \"#N/A\": 6,\n \"#SPILL!\": 7,\n \"#CALC!\": 8,\n} satisfies Record<string, number>);\n\nconst STANDARD_ERRORS = Object.freeze([\n \"#NULL!\",\n \"#DIV/0!\",\n \"#VALUE!\",\n \"#REF!\",\n \"#NAME?\",\n \"#NUM!\",\n \"#N/A\",\n \"#SPILL!\",\n \"#CALC!\",\n] as const);\n\nclass BinaryWriter {\n private buffer: Uint8Array;\n private viewBuffer: DataView;\n private length = 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 view(): Uint8Array {\n return this.buffer.subarray(0, this.length);\n }\n\n finish(): Uint8Array {\n return this.buffer.slice(0, this.length);\n }\n\n u8(value: number): void {\n this.reserve(1);\n this.viewBuffer.setUint8(this.length, value);\n this.length += 1;\n }\n\n u16(value: number): void {\n this.reserve(2);\n this.viewBuffer.setUint16(this.length, value, true);\n this.length += 2;\n }\n\n u32(value: number): void {\n this.reserve(4);\n this.viewBuffer.setUint32(this.length, value, true);\n this.length += 4;\n }\n\n u64(value: bigint): void {\n this.reserve(8);\n this.viewBuffer.setBigUint64(this.length, value, true);\n this.length += 8;\n }\n\n i64(value: bigint): void {\n this.reserve(8);\n this.viewBuffer.setBigInt64(this.length, value, true);\n this.length += 8;\n }\n\n f64(value: number): void {\n this.reserve(8);\n this.viewBuffer.setFloat64(this.length, value === 0 ? 0 : value, true);\n this.length += 8;\n }\n\n stableId(value: EditableArtifactStableId): void {\n // Text is namespace || counter; canonical model bytes are counter LE then\n // namespace LE, matching Rust `StableId::to_le_bytes`.\n this.u64(BigInt(`0x${value.slice(16)}`));\n this.u64(BigInt(`0x${value.slice(0, 16)}`));\n }\n\n string(value: string, maximum: number): void {\n const bytes = strictUtf8(value, \"spreadsheet string\");\n if (bytes.byteLength > maximum)\n throw new RangeError(\"spreadsheet string exceeds its byte limit\");\n this.u32(bytes.byteLength);\n this.bytes(bytes);\n }\n\n cell(value: unknown): void {\n if (isFormulaCell(value)) {\n const cell = plainRecord(value, \"formula cell\");\n exactKeys(cell, [\"formula\"], \"formula cell\");\n if (typeof cell.formula !== \"string\" || cell.formula.length === 0) {\n throw new TypeError(\"formula source must be a nonempty string\");\n }\n this.u8(1);\n this.string(cell.formula, SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES);\n return;\n }\n this.u8(0);\n this.scalar(value);\n }\n\n private scalar(value: unknown): void {\n if (value === null) {\n this.u8(0);\n } else if (value === false) {\n this.u8(1);\n } else if (value === true) {\n this.u8(2);\n } else if (typeof value === \"number\") {\n if (!Number.isFinite(value)) throw new TypeError(\"spreadsheet numbers must be finite\");\n this.u8(3);\n this.f64(value);\n } else if (typeof value === \"string\") {\n this.u8(4);\n this.string(value, SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES);\n } else if (isDateValue(value)) {\n const date = plainRecord(value, \"date cell\");\n exactKeys(date, [\"date\"], \"date cell\");\n this.u8(6);\n this.i64(BigInt(canonicalDateMilliseconds(date.date)));\n } else if (isFormulaError(value)) {\n const error = plainRecord(value, \"formula error\");\n exactKeys(error, [\"error\"], \"formula error\");\n this.u8(5);\n const tag = STANDARD_ERROR_TAGS[error.error as keyof typeof STANDARD_ERROR_TAGS];\n if (tag !== undefined) {\n this.u8(tag);\n } else {\n this.u8(9);\n this.string(error.error as string, SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES);\n }\n } else {\n throw new TypeError(\"spreadsheet cell has an unsupported value shape\");\n }\n }\n\n bytes(value: Uint8Array): void {\n this.reserve(value.byteLength);\n this.buffer.set(value, this.length);\n this.length += value.byteLength;\n }\n\n private reserve(additional: number): void {\n const needed = this.length + additional;\n if (!Number.isSafeInteger(needed) || needed > this.maximum) {\n throw new RangeError(\"spreadsheet command envelope exceeds its byte limit\");\n }\n if (needed <= this.buffer.byteLength) return;\n let size = Math.max(1, this.buffer.byteLength);\n while (size < needed) size = Math.min(this.maximum, size * 2);\n const next = new Uint8Array(size);\n next.set(this.buffer.subarray(0, this.length));\n this.buffer = next;\n this.viewBuffer = new DataView(next.buffer);\n }\n}\n\nclass BinaryReader {\n private offset = 0;\n\n constructor(private readonly input: Uint8Array) {}\n\n u8(): number {\n return this.bytes(1)[0]!;\n }\n\n u16(): number {\n const bytes = this.bytes(2);\n return bytes[0]! | (bytes[1]! << 8);\n }\n\n u32(): number {\n const bytes = this.bytes(4);\n return bytes[0]! + bytes[1]! * 2 ** 8 + bytes[2]! * 2 ** 16 + bytes[3]! * 2 ** 24;\n }\n\n u64(): bigint {\n const bytes = this.bytes(8);\n let value = 0n;\n for (let index = 0; index < 8; index += 1) {\n value |= BigInt(bytes[index]!) << BigInt(index * 8);\n }\n return value;\n }\n\n i64(): bigint {\n const bytes = this.bytes(8);\n return new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getBigInt64(0, true);\n }\n\n f64(): number {\n const bytes = this.bytes(8);\n const value = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getFloat64(\n 0,\n true,\n );\n if (!Number.isFinite(value)) throw new TypeError(\"spreadsheet numbers must be finite\");\n if (Object.is(value, -0)) {\n throw new TypeError(\"spreadsheet numbers must encode zero with a positive sign\");\n }\n return value;\n }\n\n sheetObjectId(): EditableArtifactStableId {\n return sheetObjectId(this.stableIdText(), \"sheet id\");\n }\n\n genericStableId(): EditableArtifactStableId {\n return genericStableId(this.stableIdText(), \"stable id\");\n }\n\n string(maximum: number): string {\n const length = this.u32();\n if (length > maximum) throw new RangeError(\"spreadsheet string exceeds its byte limit\");\n return textDecoder.decode(this.bytes(length));\n }\n\n cell(): SpreadsheetCellInput {\n const formulaTag = this.u8();\n if (formulaTag > 1) throw new TypeError(\"spreadsheet formula presence tag is invalid\");\n if (formulaTag === 1) {\n return Object.freeze({\n formula: this.nonemptyFormula(this.string(SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES)),\n });\n }\n return this.scalar();\n }\n\n done(message: string): void {\n if (this.offset !== this.input.byteLength) throw new TypeError(message);\n }\n\n bytes(length: number): Uint8Array {\n const end = this.offset + length;\n if (!Number.isSafeInteger(length) || length < 0 || end > this.input.byteLength) {\n throw new TypeError(\"truncated spreadsheet command envelope\");\n }\n const result = this.input.subarray(this.offset, end);\n this.offset = end;\n return result;\n }\n\n private stableIdText(): string {\n const counter = this.u64().toString(16).padStart(16, \"0\");\n const namespace = this.u64().toString(16).padStart(16, \"0\");\n return `${namespace}${counter}`;\n }\n\n private nonemptyFormula(value: string): string {\n if (value.length === 0) throw new TypeError(\"formula source must not be empty\");\n return value;\n }\n\n private scalar(): SpreadsheetCellScalar {\n switch (this.u8()) {\n case 0:\n return null;\n case 1:\n return false;\n case 2:\n return true;\n case 3:\n return this.f64();\n case 4:\n return this.string(SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES);\n case 5: {\n const tag = this.u8();\n if (tag <= 8) return Object.freeze({ error: STANDARD_ERRORS[tag]! });\n if (tag === 9) {\n return Object.freeze({\n error: this.string(SPREADSHEET_ARTIFACT_COMMAND_MAX_STRING_BYTES),\n });\n }\n throw new TypeError(\"spreadsheet formula error tag is invalid\");\n }\n case 6:\n return Object.freeze({\n date: canonicalSpreadsheetDateFromMilliseconds(this.i64()),\n });\n default:\n throw new TypeError(\"spreadsheet scalar tag is invalid\");\n }\n }\n}\n\nfunction isFormulaCell(value: unknown): value is SpreadsheetFormulaCell {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.hasOwn(value, \"formula\")\n );\n}\n\nfunction isFormulaError(value: unknown): value is SpreadsheetFormulaError {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.hasOwn(value, \"error\")\n );\n}\n\nfunction isDateValue(value: unknown): value is SpreadsheetDateValue {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.hasOwn(value, \"date\")\n );\n}\n\nfunction canonicalDateMilliseconds(value: unknown): number {\n return canonicalSpreadsheetDateMilliseconds(value);\n}\n"],"mappings":"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","names":[]}
@@ -1,49 +1,60 @@
1
+ import {
2
+ nullableUuid,
3
+ string,
4
+ uuid
5
+ } from "./chunk-AQYDZUJV.js";
6
+ import {
7
+ defineSchema
8
+ } from "./chunk-56SNIMDO.js";
9
+
1
10
  // src/connector-destinations.ts
2
11
  import { z } from "zod";
3
- var ConnectorDocumentDestinationAuthority = z.enum([
4
- "organization",
5
- "workspace",
6
- "personal"
7
- ]);
8
- var ConnectorDocumentDestinationSelection = z.object({
9
- authorityKind: ConnectorDocumentDestinationAuthority,
10
- collectionId: z.string().uuid().nullable().default(null)
11
- });
12
- var ConnectorDocumentDestination = z.object({
13
- authorityKind: ConnectorDocumentDestinationAuthority,
14
- authorityAccountId: z.string().uuid(),
15
- authorityWorkspaceId: z.string().uuid().nullable(),
16
- authoritySubjectId: z.string().trim().min(1).max(1024).nullable(),
17
- collectionId: z.string().uuid().nullable().default(null)
18
- }).superRefine((destination, context) => {
19
- if (destination.authorityKind === "organization") {
20
- if (destination.authorityWorkspaceId !== null || destination.authoritySubjectId !== null) {
12
+ var ConnectorDocumentDestinationAuthority = /* @__PURE__ */ defineSchema(
13
+ () => z.enum(["organization", "workspace", "personal"])
14
+ );
15
+ var ConnectorDocumentDestinationSelection = /* @__PURE__ */ defineSchema(
16
+ () => z.object({
17
+ authorityKind: ConnectorDocumentDestinationAuthority,
18
+ collectionId: nullableUuid.default(null)
19
+ })
20
+ );
21
+ var ConnectorDocumentDestination = /* @__PURE__ */ defineSchema(
22
+ () => z.object({
23
+ authorityKind: ConnectorDocumentDestinationAuthority,
24
+ authorityAccountId: uuid,
25
+ authorityWorkspaceId: nullableUuid,
26
+ authoritySubjectId: string.trim().min(1).max(1024).nullable(),
27
+ collectionId: nullableUuid.default(null)
28
+ }).superRefine((destination, context) => {
29
+ if (destination.authorityKind === "organization") {
30
+ if (destination.authorityWorkspaceId !== null || destination.authoritySubjectId !== null) {
31
+ context.addIssue({
32
+ code: "custom",
33
+ message: "organization connector destinations cannot bind workspace or subject authority"
34
+ });
35
+ }
36
+ return;
37
+ }
38
+ if (destination.authorityWorkspaceId === null) {
21
39
  context.addIssue({
22
40
  code: "custom",
23
- message: "organization connector destinations cannot bind workspace or subject authority"
41
+ message: "workspace and personal connector destinations require workspace authority"
24
42
  });
25
43
  }
26
- return;
27
- }
28
- if (destination.authorityWorkspaceId === null) {
29
- context.addIssue({
30
- code: "custom",
31
- message: "workspace and personal connector destinations require workspace authority"
32
- });
33
- }
34
- if (destination.authorityKind === "workspace" && destination.authoritySubjectId !== null) {
35
- context.addIssue({
36
- code: "custom",
37
- message: "workspace connector destinations cannot bind subject authority"
38
- });
39
- }
40
- if (destination.authorityKind === "personal" && destination.authoritySubjectId === null) {
41
- context.addIssue({
42
- code: "custom",
43
- message: "personal connector destinations require immutable subject authority"
44
- });
45
- }
46
- });
44
+ if (destination.authorityKind === "workspace" && destination.authoritySubjectId !== null) {
45
+ context.addIssue({
46
+ code: "custom",
47
+ message: "workspace connector destinations cannot bind subject authority"
48
+ });
49
+ }
50
+ if (destination.authorityKind === "personal" && destination.authoritySubjectId === null) {
51
+ context.addIssue({
52
+ code: "custom",
53
+ message: "personal connector destinations require immutable subject authority"
54
+ });
55
+ }
56
+ })
57
+ );
47
58
  function bindConnectorDocumentDestination(selection, context) {
48
59
  return ConnectorDocumentDestination.parse({
49
60
  authorityKind: selection.authorityKind,
@@ -86,7 +97,7 @@ function connectorDestinationDocumentAuthority(destination) {
86
97
  };
87
98
  }
88
99
  function connectorDocumentDestinationCollectionId(destination, defaultCollectionId) {
89
- return destination.collectionId ?? z.string().uuid().parse(defaultCollectionId);
100
+ return destination.collectionId ?? uuid.parse(defaultCollectionId);
90
101
  }
91
102
 
92
103
  export {
@@ -99,4 +110,4 @@ export {
99
110
  connectorDestinationDocumentAuthority,
100
111
  connectorDocumentDestinationCollectionId
101
112
  };
102
- //# sourceMappingURL=chunk-WYBDERIY.js.map
113
+ //# sourceMappingURL=chunk-RWEEUDHD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/connector-destinations.ts"],"sourcesContent":["import * as primitives from \"./primitives\";\nimport { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nexport const ConnectorDocumentDestinationAuthority = /* @__PURE__ */ defineSchema(() =>\n z.enum([\"organization\", \"workspace\", \"personal\"]),\n);\nexport type ConnectorDocumentDestinationAuthority = z.infer<\n typeof ConnectorDocumentDestinationAuthority\n>;\n\nexport const ConnectorDocumentDestinationSelection = /* @__PURE__ */ defineSchema(() =>\n z.object({\n authorityKind: ConnectorDocumentDestinationAuthority,\n collectionId: primitives.nullableUuid.default(null),\n }),\n);\nexport type ConnectorDocumentDestinationSelection = z.infer<\n typeof ConnectorDocumentDestinationSelection\n>;\n\nexport const ConnectorDocumentDestination = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n authorityKind: ConnectorDocumentDestinationAuthority,\n authorityAccountId: primitives.uuid,\n authorityWorkspaceId: primitives.nullableUuid,\n authoritySubjectId: primitives.string.trim().min(1).max(1024).nullable(),\n collectionId: primitives.nullableUuid.default(null),\n })\n .superRefine((destination, context) => {\n if (destination.authorityKind === \"organization\") {\n if (destination.authorityWorkspaceId !== null || destination.authoritySubjectId !== null) {\n context.addIssue({\n code: \"custom\",\n message:\n \"organization connector destinations cannot bind workspace or subject authority\",\n });\n }\n return;\n }\n if (destination.authorityWorkspaceId === null) {\n context.addIssue({\n code: \"custom\",\n message: \"workspace and personal connector destinations require workspace authority\",\n });\n }\n if (destination.authorityKind === \"workspace\" && destination.authoritySubjectId !== null) {\n context.addIssue({\n code: \"custom\",\n message: \"workspace connector destinations cannot bind subject authority\",\n });\n }\n if (destination.authorityKind === \"personal\" && destination.authoritySubjectId === null) {\n context.addIssue({\n code: \"custom\",\n message: \"personal connector destinations require immutable subject authority\",\n });\n }\n }),\n);\nexport type ConnectorDocumentDestination = z.infer<typeof ConnectorDocumentDestination>;\n\nexport function bindConnectorDocumentDestination(\n selection: ConnectorDocumentDestinationSelection,\n context: { accountId: string; workspaceId: string; initiatingSubjectId: string },\n): ConnectorDocumentDestination {\n return ConnectorDocumentDestination.parse({\n authorityKind: selection.authorityKind,\n authorityAccountId: context.accountId,\n authorityWorkspaceId: selection.authorityKind === \"organization\" ? null : context.workspaceId,\n authoritySubjectId: selection.authorityKind === \"personal\" ? context.initiatingSubjectId : null,\n collectionId: selection.collectionId,\n });\n}\n\nexport function legacyWorkspaceConnectorDocumentDestination(context: {\n accountId: string;\n workspaceId: string;\n}): ConnectorDocumentDestination {\n return ConnectorDocumentDestination.parse({\n authorityKind: \"workspace\",\n authorityAccountId: context.accountId,\n authorityWorkspaceId: context.workspaceId,\n authoritySubjectId: null,\n collectionId: null,\n });\n}\n\nexport function resolveConnectorDocumentDestination(\n value: unknown,\n context: {\n accountId: string;\n workspaceId: string;\n connectionSubjectId?: string | null | undefined;\n },\n): ConnectorDocumentDestination {\n if (value === undefined || value === null) {\n return legacyWorkspaceConnectorDocumentDestination(context);\n }\n const destination = ConnectorDocumentDestination.parse(value);\n if (destination.authorityAccountId !== context.accountId) {\n throw new Error(\"connector destination organization authority mismatch\");\n }\n if (\n destination.authorityKind !== \"organization\" &&\n destination.authorityWorkspaceId !== context.workspaceId\n ) {\n throw new Error(\"connector destination workspace authority mismatch\");\n }\n if (\n destination.authorityKind === \"personal\" &&\n destination.authoritySubjectId !== context.connectionSubjectId\n ) {\n throw new Error(\"connector destination personal authority mismatch\");\n }\n return destination;\n}\n\nexport function connectorDestinationDocumentAuthority(destination: ConnectorDocumentDestination): {\n authorityKind: ConnectorDocumentDestinationAuthority;\n authorityWorkspaceId: string | null;\n authoritySubjectId: string | null;\n} {\n return {\n authorityKind: destination.authorityKind,\n authorityWorkspaceId: destination.authorityWorkspaceId,\n authoritySubjectId: destination.authoritySubjectId,\n };\n}\n\nexport function connectorDocumentDestinationCollectionId(\n destination: ConnectorDocumentDestination,\n defaultCollectionId: string,\n): string {\n return destination.collectionId ?? primitives.uuid.parse(defaultCollectionId);\n}\n"],"mappings":";;;;;;;;;;AAEA,SAAS,SAAS;AAEX,IAAM,wCAAwD;AAAA,EAAa,MAChF,EAAE,KAAK,CAAC,gBAAgB,aAAa,UAAU,CAAC;AAClD;AAKO,IAAM,wCAAwD;AAAA,EAAa,MAChF,EAAE,OAAO;AAAA,IACP,eAAe;AAAA,IACf,cAAyB,aAAa,QAAQ,IAAI;AAAA,EACpD,CAAC;AACH;AAKO,IAAM,+BAA+C;AAAA,EAAa,MACvE,EACG,OAAO;AAAA,IACN,eAAe;AAAA,IACf,oBAA+B;AAAA,IAC/B,sBAAiC;AAAA,IACjC,oBAA+B,OAAO,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,SAAS;AAAA,IACvE,cAAyB,aAAa,QAAQ,IAAI;AAAA,EACpD,CAAC,EACA,YAAY,CAAC,aAAa,YAAY;AACrC,QAAI,YAAY,kBAAkB,gBAAgB;AAChD,UAAI,YAAY,yBAAyB,QAAQ,YAAY,uBAAuB,MAAM;AACxF,gBAAQ,SAAS;AAAA,UACf,MAAM;AAAA,UACN,SACE;AAAA,QACJ,CAAC;AAAA,MACH;AACA;AAAA,IACF;AACA,QAAI,YAAY,yBAAyB,MAAM;AAC7C,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,QAAI,YAAY,kBAAkB,eAAe,YAAY,uBAAuB,MAAM;AACxF,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA,QAAI,YAAY,kBAAkB,cAAc,YAAY,uBAAuB,MAAM;AACvF,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACL;AAGO,SAAS,iCACd,WACA,SAC8B;AAC9B,SAAO,6BAA6B,MAAM;AAAA,IACxC,eAAe,UAAU;AAAA,IACzB,oBAAoB,QAAQ;AAAA,IAC5B,sBAAsB,UAAU,kBAAkB,iBAAiB,OAAO,QAAQ;AAAA,IAClF,oBAAoB,UAAU,kBAAkB,aAAa,QAAQ,sBAAsB;AAAA,IAC3F,cAAc,UAAU;AAAA,EAC1B,CAAC;AACH;AAEO,SAAS,4CAA4C,SAG3B;AAC/B,SAAO,6BAA6B,MAAM;AAAA,IACxC,eAAe;AAAA,IACf,oBAAoB,QAAQ;AAAA,IAC5B,sBAAsB,QAAQ;AAAA,IAC9B,oBAAoB;AAAA,IACpB,cAAc;AAAA,EAChB,CAAC;AACH;AAEO,SAAS,oCACd,OACA,SAK8B;AAC9B,MAAI,UAAU,UAAa,UAAU,MAAM;AACzC,WAAO,4CAA4C,OAAO;AAAA,EAC5D;AACA,QAAM,cAAc,6BAA6B,MAAM,KAAK;AAC5D,MAAI,YAAY,uBAAuB,QAAQ,WAAW;AACxD,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AACA,MACE,YAAY,kBAAkB,kBAC9B,YAAY,yBAAyB,QAAQ,aAC7C;AACA,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,MACE,YAAY,kBAAkB,cAC9B,YAAY,uBAAuB,QAAQ,qBAC3C;AACA,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,SAAO;AACT;AAEO,SAAS,sCAAsC,aAIpD;AACA,SAAO;AAAA,IACL,eAAe,YAAY;AAAA,IAC3B,sBAAsB,YAAY;AAAA,IAClC,oBAAoB,YAAY;AAAA,EAClC;AACF;AAEO,SAAS,yCACd,aACA,qBACQ;AACR,SAAO,YAAY,gBAA2B,KAAK,MAAM,mBAAmB;AAC9E;","names":[]}
@@ -0,0 +1,158 @@
1
+ import {
2
+ Permission
3
+ } from "./chunk-G2KJTFIC.js";
4
+ import {
5
+ nonnegativeInteger,
6
+ nullableString,
7
+ string,
8
+ uuid
9
+ } from "./chunk-AQYDZUJV.js";
10
+ import {
11
+ defineSchema
12
+ } from "./chunk-56SNIMDO.js";
13
+
14
+ // src/organization-access.ts
15
+ import { z } from "zod";
16
+ var OrganizationAccessPreset = /* @__PURE__ */ defineSchema(
17
+ () => z.enum(["read_only", "full", "custom"])
18
+ );
19
+ var OrganizationWorkspaceScope = /* @__PURE__ */ defineSchema(
20
+ () => z.discriminatedUnion("kind", [
21
+ z.object({ kind: z.literal("all") }).strict(),
22
+ z.object({
23
+ kind: z.literal("selected"),
24
+ workspaceIds: z.array(uuid.transform((id) => id.toLowerCase())).max(500).refine((ids) => new Set(ids).size === ids.length, "Workspace IDs must be unique")
25
+ }).strict()
26
+ ])
27
+ );
28
+ var OrganizationActor = /* @__PURE__ */ defineSchema(
29
+ () => z.enum(["user", "organization"])
30
+ );
31
+ var aliases = {
32
+ "environments:manage": "variable-sets:manage",
33
+ "environments:use": "variable-sets:use"
34
+ };
35
+ var permissionSets;
36
+ function sets() {
37
+ if (permissionSets) return permissionSets;
38
+ const canonical = Permission.options.filter((permission) => !aliases[permission]);
39
+ const observational = canonical.filter(
40
+ (permission) => /:(read|list|view|search)$/.test(permission)
41
+ );
42
+ const secretValue = /* @__PURE__ */ new Set(["secrets:read", "variable-sets:read"]);
43
+ const readOnly = observational.filter((permission) => !secretValue.has(permission));
44
+ permissionSets = { canonical, observational, readOnly };
45
+ return permissionSets;
46
+ }
47
+ function organizationAccessPresetPermissions(preset) {
48
+ return preset === "full" ? [...sets().canonical] : preset === "read_only" ? [...sets().readOnly] : [];
49
+ }
50
+ function isReadOnlyPermissionSet(permissions) {
51
+ return permissions.every(
52
+ (permission) => sets().observational.includes(aliases[permission] ?? permission)
53
+ );
54
+ }
55
+ var OrganizationAccessPolicyInput = /* @__PURE__ */ defineSchema(
56
+ () => z.object({
57
+ preset: OrganizationAccessPreset,
58
+ // Lazy for the same module-order reason as `sets()` above.
59
+ permissions: z.array(z.lazy(() => Permission)),
60
+ workspaceScope: OrganizationWorkspaceScope
61
+ }).strict()
62
+ );
63
+ function normalizeOrganizationAccessPolicy(policy) {
64
+ const parsed = OrganizationAccessPolicyInput.parse(policy);
65
+ const requested = new Set(
66
+ parsed.permissions.map((permission) => aliases[permission] ?? permission)
67
+ );
68
+ if (requested.has("connections:write")) requested.add("connections:personal");
69
+ const { canonical, readOnly } = sets();
70
+ const permissions = canonical.filter((permission) => requested.has(permission));
71
+ const same = (candidate) => candidate.length === permissions.length && candidate.every((permission) => requested.has(permission));
72
+ return {
73
+ preset: same(canonical) ? "full" : same(readOnly) ? "read_only" : "custom",
74
+ permissions,
75
+ workspaceScope: parsed.workspaceScope.kind === "selected" ? { kind: "selected", workspaceIds: [...parsed.workspaceScope.workspaceIds].sort() } : { kind: "all" }
76
+ };
77
+ }
78
+ var OrganizationAccessPolicy = /* @__PURE__ */ defineSchema(
79
+ () => OrganizationAccessPolicyInput.transform(normalizeOrganizationAccessPolicy)
80
+ );
81
+ var UpdateOrganizationMcpConnectionRequest = /* @__PURE__ */ defineSchema(
82
+ () => z.object({ access: OrganizationAccessPolicy }).strict()
83
+ );
84
+ var McpConnectionDecision = /* @__PURE__ */ defineSchema(
85
+ () => z.discriminatedUnion("decision", [
86
+ z.object({ decision: z.literal("deny") }).strict(),
87
+ z.object({
88
+ decision: z.literal("approve"),
89
+ organizationId: uuid,
90
+ access: OrganizationAccessPolicy
91
+ }).strict()
92
+ ])
93
+ );
94
+ var OrganizationServiceAccountRole = /* @__PURE__ */ defineSchema(
95
+ () => z.enum(["admin", "member"])
96
+ );
97
+ var ORGANIZATION_ADMIN_ONLY_PERMISSIONS = [
98
+ "account:admin",
99
+ "members:manage",
100
+ "billing:manage",
101
+ "api_keys:manage",
102
+ "usage_allowances:manage"
103
+ ];
104
+ function serviceAccountAllowsPermission(role, permission) {
105
+ return role === "admin" || !ORGANIZATION_ADMIN_ONLY_PERMISSIONS.includes(permission);
106
+ }
107
+ var OrganizationServiceAccount = /* @__PURE__ */ defineSchema(
108
+ () => z.object({
109
+ id: uuid,
110
+ organizationId: uuid,
111
+ name: z.string().min(1).max(200),
112
+ description: nullableString,
113
+ role: OrganizationServiceAccountRole,
114
+ /** Keys that are not revoked, including expired ones. */
115
+ activeKeyCount: nonnegativeInteger,
116
+ createdAt: string,
117
+ updatedAt: string
118
+ })
119
+ );
120
+ var ListOrganizationServiceAccountsResponse = /* @__PURE__ */ defineSchema(
121
+ () => z.object({
122
+ serviceAccounts: z.array(OrganizationServiceAccount)
123
+ })
124
+ );
125
+ var CreateOrganizationServiceAccountRequest = /* @__PURE__ */ defineSchema(
126
+ () => z.object({
127
+ name: string.trim().min(1).max(200),
128
+ description: string.trim().min(1).max(500).optional(),
129
+ role: OrganizationServiceAccountRole.default("member")
130
+ }).strict()
131
+ );
132
+ var UpdateOrganizationServiceAccountRequest = /* @__PURE__ */ defineSchema(
133
+ () => z.object({
134
+ name: string.trim().min(1).max(200).optional(),
135
+ description: string.trim().min(1).max(500).nullable().optional(),
136
+ role: OrganizationServiceAccountRole.optional()
137
+ }).strict().refine((request) => Object.keys(request).length > 0, "At least one change is required")
138
+ );
139
+
140
+ export {
141
+ OrganizationAccessPreset,
142
+ OrganizationWorkspaceScope,
143
+ OrganizationActor,
144
+ organizationAccessPresetPermissions,
145
+ isReadOnlyPermissionSet,
146
+ normalizeOrganizationAccessPolicy,
147
+ OrganizationAccessPolicy,
148
+ UpdateOrganizationMcpConnectionRequest,
149
+ McpConnectionDecision,
150
+ OrganizationServiceAccountRole,
151
+ ORGANIZATION_ADMIN_ONLY_PERMISSIONS,
152
+ serviceAccountAllowsPermission,
153
+ OrganizationServiceAccount,
154
+ ListOrganizationServiceAccountsResponse,
155
+ CreateOrganizationServiceAccountRequest,
156
+ UpdateOrganizationServiceAccountRequest
157
+ };
158
+ //# sourceMappingURL=chunk-S7MSQQL6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/organization-access.ts"],"sourcesContent":["import * as primitives from \"./primitives\";\nimport { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\nimport { Permission } from \"./permissions\";\n\nexport const OrganizationAccessPreset = /* @__PURE__ */ defineSchema(() =>\n z.enum([\"read_only\", \"full\", \"custom\"]),\n);\nexport type OrganizationAccessPreset = z.infer<typeof OrganizationAccessPreset>;\n\nexport const OrganizationWorkspaceScope = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"all\") }).strict(),\n z\n .object({\n kind: z.literal(\"selected\"),\n workspaceIds: z\n .array(primitives.uuid.transform((id) => id.toLowerCase()))\n .max(500)\n .refine((ids) => new Set(ids).size === ids.length, \"Workspace IDs must be unique\"),\n })\n .strict(),\n ]),\n);\nexport type OrganizationWorkspaceScope = z.infer<typeof OrganizationWorkspaceScope>;\n\nexport const OrganizationActor = /* @__PURE__ */ defineSchema(() =>\n z.enum([\"user\", \"organization\"]),\n);\nexport type OrganizationActor = z.infer<typeof OrganizationActor>;\n\nconst aliases: Partial<Record<Permission, Permission>> = {\n \"environments:manage\": \"variable-sets:manage\",\n \"environments:use\": \"variable-sets:use\",\n};\n// Computed on first use, never at module load: the web build can place\n// `Permission` in a chunk that finishes initializing after this one, and a\n// top-level read of `Permission.options` then crashes the whole app.\nlet permissionSets:\n | { canonical: Permission[]; observational: Permission[]; readOnly: Permission[] }\n | undefined;\nfunction sets() {\n if (permissionSets) return permissionSets;\n const canonical = Permission.options.filter((permission) => !aliases[permission]);\n /** Everything that only observes. Reading secret values observes too. */\n const observational = canonical.filter((permission) =>\n /:(read|list|view|search)$/.test(permission),\n );\n /** Secret values are opt-in: Read only leaves them out, Custom can add them. */\n const secretValue = new Set<Permission>([\"secrets:read\", \"variable-sets:read\"]);\n const readOnly = observational.filter((permission) => !secretValue.has(permission));\n permissionSets = { canonical, observational, readOnly };\n return permissionSets;\n}\n\n/** Custom has no implicit permissions. Presets are expanded only by this helper. */\nexport function organizationAccessPresetPermissions(\n preset: OrganizationAccessPreset,\n): Permission[] {\n return preset === \"full\"\n ? [...sets().canonical]\n : preset === \"read_only\"\n ? [...sets().readOnly]\n : [];\n}\n\n/** True when nothing can be changed, including an empty set and secret-value reads. */\nexport function isReadOnlyPermissionSet(permissions: readonly Permission[]): boolean {\n return permissions.every((permission) =>\n sets().observational.includes(aliases[permission] ?? permission),\n );\n}\n\nconst OrganizationAccessPolicyInput = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n preset: OrganizationAccessPreset,\n // Lazy for the same module-order reason as `sets()` above.\n permissions: z.array(z.lazy(() => Permission)),\n workspaceScope: OrganizationWorkspaceScope,\n })\n .strict(),\n);\n\nexport type OrganizationAccessPolicy = z.infer<typeof OrganizationAccessPolicyInput>;\n\n/** Canonical ordering, alias mapping and labels; never adds an unrequested grant. */\nexport function normalizeOrganizationAccessPolicy(\n policy: OrganizationAccessPolicy,\n): OrganizationAccessPolicy {\n const parsed = OrganizationAccessPolicyInput.parse(policy);\n const requested = new Set(\n parsed.permissions.map((permission) => aliases[permission] ?? permission),\n );\n // `connections:write` includes connecting one's own accounts, so a policy\n // saved before the narrow permission existed keeps its exact meaning.\n if (requested.has(\"connections:write\")) requested.add(\"connections:personal\");\n const { canonical, readOnly } = sets();\n const permissions = canonical.filter((permission) => requested.has(permission));\n const same = (candidate: readonly Permission[]) =>\n candidate.length === permissions.length &&\n candidate.every((permission) => requested.has(permission));\n return {\n preset: same(canonical) ? \"full\" : same(readOnly) ? \"read_only\" : \"custom\",\n permissions,\n workspaceScope:\n parsed.workspaceScope.kind === \"selected\"\n ? { kind: \"selected\", workspaceIds: [...parsed.workspaceScope.workspaceIds].sort() }\n : { kind: \"all\" },\n };\n}\n\nexport const OrganizationAccessPolicy = /* @__PURE__ */ defineSchema(() =>\n OrganizationAccessPolicyInput.transform(normalizeOrganizationAccessPolicy),\n);\n\n/** Change what a connected agent can do. Only the person who connected it can. */\nexport const UpdateOrganizationMcpConnectionRequest = /* @__PURE__ */ defineSchema(() =>\n z.object({ access: OrganizationAccessPolicy }).strict(),\n);\n\n/**\n * The answer to a pending agent sign-in: deny it, or approve it for one\n * organization with the access the agent gets there.\n */\nexport const McpConnectionDecision = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"decision\", [\n z.object({ decision: z.literal(\"deny\") }).strict(),\n z\n .object({\n decision: z.literal(\"approve\"),\n organizationId: primitives.uuid,\n access: OrganizationAccessPolicy,\n })\n .strict(),\n ]),\n);\n\n/* ----------------------------------------------------------------------------\n Service accounts: an organization identity with no person behind it. It\n holds organization API keys; its role caps what those keys can be given.\n Up to admin, never owner.\n -------------------------------------------------------------------------- */\n\nexport const OrganizationServiceAccountRole = /* @__PURE__ */ defineSchema(() =>\n z.enum([\"admin\", \"member\"]),\n);\nexport type OrganizationServiceAccountRole = z.infer<typeof OrganizationServiceAccountRole>;\n\n/** What only an organization administrator can do; a member service account's keys never hold it. */\nexport const ORGANIZATION_ADMIN_ONLY_PERMISSIONS: readonly Permission[] = [\n \"account:admin\",\n \"members:manage\",\n \"billing:manage\",\n \"api_keys:manage\",\n \"usage_allowances:manage\",\n];\n\n/** The permissions a service account's keys may hold, given its role. */\nexport function serviceAccountAllowsPermission(\n role: OrganizationServiceAccountRole,\n permission: Permission,\n): boolean {\n return role === \"admin\" || !ORGANIZATION_ADMIN_ONLY_PERMISSIONS.includes(permission);\n}\n\nexport const OrganizationServiceAccount = /* @__PURE__ */ defineSchema(() =>\n z.object({\n id: primitives.uuid,\n organizationId: primitives.uuid,\n name: z.string().min(1).max(200),\n description: primitives.nullableString,\n role: OrganizationServiceAccountRole,\n /** Keys that are not revoked, including expired ones. */\n activeKeyCount: primitives.nonnegativeInteger,\n createdAt: primitives.string,\n updatedAt: primitives.string,\n }),\n);\nexport type OrganizationServiceAccount = z.infer<typeof OrganizationServiceAccount>;\n\nexport const ListOrganizationServiceAccountsResponse = /* @__PURE__ */ defineSchema(() =>\n z.object({\n serviceAccounts: z.array(OrganizationServiceAccount),\n }),\n);\nexport type ListOrganizationServiceAccountsResponse = z.infer<\n typeof ListOrganizationServiceAccountsResponse\n>;\n\nexport const CreateOrganizationServiceAccountRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n name: primitives.string.trim().min(1).max(200),\n description: primitives.string.trim().min(1).max(500).optional(),\n role: OrganizationServiceAccountRole.default(\"member\"),\n })\n .strict(),\n);\nexport type CreateOrganizationServiceAccountRequest = z.infer<\n typeof CreateOrganizationServiceAccountRequest\n>;\n\nexport const UpdateOrganizationServiceAccountRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n name: primitives.string.trim().min(1).max(200).optional(),\n description: primitives.string.trim().min(1).max(500).nullable().optional(),\n role: OrganizationServiceAccountRole.optional(),\n })\n .strict()\n .refine((request) => Object.keys(request).length > 0, \"At least one change is required\"),\n);\nexport type UpdateOrganizationServiceAccountRequest = z.infer<\n typeof UpdateOrganizationServiceAccountRequest\n>;\n"],"mappings":"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","names":[]}