@opengeni/contracts 3.1.0-canary.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/dist/agent-authored-durable-text.d.ts +9 -9
  2. package/dist/agent-config.d.ts +971 -0
  3. package/dist/agent-instruction-changes.d.ts +110 -0
  4. package/dist/agent-learning.d.ts +243 -0
  5. package/dist/allowance-refusal.d.ts +9 -0
  6. package/dist/allowance-refusal.js +50 -0
  7. package/dist/allowance-refusal.js.map +1 -0
  8. package/dist/analytics-consent-report.d.ts +19 -0
  9. package/dist/analytics-consent-report.js +10 -0
  10. package/dist/analytics-consent-report.js.map +1 -0
  11. package/dist/api-key-presets.d.ts +19 -0
  12. package/dist/artifact-catalog.d.ts +188 -0
  13. package/dist/artifacts.d.ts +86 -0
  14. package/dist/atlassian-native-retirement.d.ts +16 -0
  15. package/dist/atlassian-native-retirement.js +30 -0
  16. package/dist/atlassian-native-retirement.js.map +1 -0
  17. package/dist/atlassian.d.ts +1 -0
  18. package/dist/atlassian.js +34 -19
  19. package/dist/browser-storage.d.ts +5 -0
  20. package/dist/browser-storage.js +9 -0
  21. package/dist/browser-storage.js.map +1 -0
  22. package/dist/bundled-skills.d.ts +24 -1
  23. package/dist/canonical-human-identities.js +2 -1
  24. package/dist/chunk-2ZIHHL72.js +153 -0
  25. package/dist/chunk-2ZIHHL72.js.map +1 -0
  26. package/dist/{chunk-5LYFSZ7O.js → chunk-352X6ENP.js} +31 -31
  27. package/dist/chunk-4JGHSSB7.js +11 -0
  28. package/dist/chunk-4JGHSSB7.js.map +1 -0
  29. package/dist/chunk-4QO6GJUX.js +85 -0
  30. package/dist/chunk-4QO6GJUX.js.map +1 -0
  31. package/dist/chunk-4VDMHLLL.js +49 -0
  32. package/dist/chunk-4VDMHLLL.js.map +1 -0
  33. package/dist/chunk-56SNIMDO.js +9 -0
  34. package/dist/chunk-56SNIMDO.js.map +1 -0
  35. package/dist/chunk-6C2HKFTU.js +207 -0
  36. package/dist/chunk-6C2HKFTU.js.map +1 -0
  37. package/dist/chunk-6IXO76Z6.js +72 -0
  38. package/dist/chunk-6IXO76Z6.js.map +1 -0
  39. package/dist/chunk-7272KVWZ.js +60 -0
  40. package/dist/chunk-7272KVWZ.js.map +1 -0
  41. package/dist/{chunk-7ABONTXE.js → chunk-E3GGUBHS.js} +49 -5
  42. package/dist/chunk-E3GGUBHS.js.map +1 -0
  43. package/dist/chunk-EFZYKUE2.js +767 -0
  44. package/dist/chunk-EFZYKUE2.js.map +1 -0
  45. package/dist/chunk-EKWNTOG3.js +154 -0
  46. package/dist/chunk-EKWNTOG3.js.map +1 -0
  47. package/dist/chunk-HABQ7ADB.js +234 -0
  48. package/dist/chunk-HABQ7ADB.js.map +1 -0
  49. package/dist/chunk-HRRU4QPI.js +91 -0
  50. package/dist/chunk-HRRU4QPI.js.map +1 -0
  51. package/dist/{chunk-3SIZGL3O.js → chunk-IK36LXKC.js} +18 -2
  52. package/dist/chunk-IK36LXKC.js.map +1 -0
  53. package/dist/{chunk-TXTQIYCV.js → chunk-ILJ72KPO.js} +56 -3
  54. package/dist/chunk-ILJ72KPO.js.map +1 -0
  55. package/dist/chunk-J4HQ3UKY.js +93 -0
  56. package/dist/chunk-J4HQ3UKY.js.map +1 -0
  57. package/dist/chunk-KHHZTBP7.js +11 -0
  58. package/dist/chunk-KHHZTBP7.js.map +1 -0
  59. package/dist/{chunk-WYBDERIY.js → chunk-LZ2LAHIX.js} +47 -41
  60. package/dist/chunk-LZ2LAHIX.js.map +1 -0
  61. package/dist/chunk-NDZHPTCL.js +400 -0
  62. package/dist/chunk-NDZHPTCL.js.map +1 -0
  63. package/dist/chunk-OF6OKOBF.js +54793 -0
  64. package/dist/chunk-OF6OKOBF.js.map +1 -0
  65. package/dist/chunk-OL23ARTF.js +94 -0
  66. package/dist/chunk-OL23ARTF.js.map +1 -0
  67. package/dist/chunk-PUIUXIOL.js +189 -0
  68. package/dist/chunk-PUIUXIOL.js.map +1 -0
  69. package/dist/{chunk-WBYTNVIW.js → chunk-RKX3NQYS.js} +1 -1
  70. package/dist/{chunk-Y3KNXVTD.js → chunk-RMWXDZEO.js} +128 -21
  71. package/dist/chunk-RMWXDZEO.js.map +1 -0
  72. package/dist/{chunk-MRWYRAS5.js → chunk-SHO4YO4B.js} +27 -35
  73. package/dist/chunk-SHO4YO4B.js.map +1 -0
  74. package/dist/chunk-SWRN2DJ3.js +153 -0
  75. package/dist/chunk-SWRN2DJ3.js.map +1 -0
  76. package/dist/chunk-TCXCRBPF.js +267 -0
  77. package/dist/chunk-TCXCRBPF.js.map +1 -0
  78. package/dist/chunk-TLU3UEMD.js +324 -0
  79. package/dist/chunk-TLU3UEMD.js.map +1 -0
  80. package/dist/chunk-TSWWZMUS.js +186 -0
  81. package/dist/chunk-TSWWZMUS.js.map +1 -0
  82. package/dist/{chunk-PX3VCKAU.js → chunk-WVCFSOUZ.js} +1 -1
  83. package/dist/{chunk-PX3VCKAU.js.map → chunk-WVCFSOUZ.js.map} +1 -1
  84. package/dist/chunk-XDLAGX66.js +127 -0
  85. package/dist/chunk-XDLAGX66.js.map +1 -0
  86. package/dist/chunk-YKZ4WU4P.js +33 -0
  87. package/dist/chunk-YKZ4WU4P.js.map +1 -0
  88. package/dist/{chunk-O5LEQHDM.js → chunk-Z7WEVGCL.js} +3 -3
  89. package/dist/{chunk-YBW5JSA3.js → chunk-ZDCRWCGZ.js} +119 -101
  90. package/dist/chunk-ZDCRWCGZ.js.map +1 -0
  91. package/dist/claude-provider-account-authority.d.ts +18 -0
  92. package/dist/claude-subscription-oauth.d.ts +42 -0
  93. package/dist/claude-subscription-usage.d.ts +159 -0
  94. package/dist/client-error-report.d.ts +158 -0
  95. package/dist/client-error-report.js +164 -0
  96. package/dist/client-error-report.js.map +1 -0
  97. package/dist/code-search.d.ts +52 -0
  98. package/dist/code-search.js +40 -0
  99. package/dist/code-search.js.map +1 -0
  100. package/dist/codex-provider-account-authority.js +20 -12
  101. package/dist/codex-provider-account-authority.js.map +1 -1
  102. package/dist/company-brain.d.ts +19 -81
  103. package/dist/company-profile.d.ts +144 -6
  104. package/dist/connect.d.ts +37 -0
  105. package/dist/connect.js +216 -159
  106. package/dist/connect.js.map +1 -1
  107. package/dist/connection-account-label.d.ts +2 -0
  108. package/dist/connection-account-label.js +35 -0
  109. package/dist/connection-account-label.js.map +1 -0
  110. package/dist/connection-authority.d.ts +9 -317
  111. package/dist/connection-authority.js +37 -42
  112. package/dist/connector-attachments.js +2 -1
  113. package/dist/connector-destinations.js +2 -1
  114. package/dist/connector-tool-permissions.d.ts +137 -0
  115. package/dist/cua-desktop-tools.d.ts +17 -0
  116. package/dist/define-schema.d.ts +8 -0
  117. package/dist/direct-model-provider.d.ts +36 -0
  118. package/dist/editable-artifact-codec-registry.js +5 -5
  119. package/dist/editable-artifact-committed-transaction.js +3 -2
  120. package/dist/editable-artifact-live.js +5 -5
  121. package/dist/editable-artifact-serialized-commit.js +6 -6
  122. package/dist/editable-artifact-versions.d.ts +7 -1
  123. package/dist/editable-artifact-versions.js +1 -1
  124. package/dist/editable-artifacts.js +62 -56
  125. package/dist/event-preview.d.ts +22 -0
  126. package/dist/external-identities.d.ts +174 -0
  127. package/dist/external-identities.js +15 -4
  128. package/dist/first-party-tool-authorization.d.ts +815 -0
  129. package/dist/github-repository-contracts.js +60 -43
  130. package/dist/github-repository-contracts.js.map +1 -1
  131. package/dist/google-drive.d.ts +2 -1
  132. package/dist/google-drive.js +305 -238
  133. package/dist/google-drive.js.map +1 -1
  134. package/dist/host-mcp-bindings.d.ts +39 -10
  135. package/dist/host-mcp-bindings.js +256 -171
  136. package/dist/host-mcp-bindings.js.map +1 -1
  137. package/dist/image-generation.d.ts +1 -0
  138. package/dist/index.d.ts +15715 -3850
  139. package/dist/index.js +2088 -289
  140. package/dist/insights-usage.d.ts +877 -0
  141. package/dist/insights-usage.js +559 -0
  142. package/dist/insights-usage.js.map +1 -0
  143. package/dist/interaction.d.ts +1176 -829
  144. package/dist/knowledge-entries.d.ts +984 -0
  145. package/dist/knowledge-preparation.d.ts +239 -0
  146. package/dist/managed-auth-session-sets.d.ts +7 -0
  147. package/dist/managed-auth-session-sets.js +198 -132
  148. package/dist/managed-auth-session-sets.js.map +1 -1
  149. package/dist/managed-sign-in-methods.d.ts +56 -0
  150. package/dist/managed-sign-in-methods.js +64 -0
  151. package/dist/managed-sign-in-methods.js.map +1 -0
  152. package/dist/mcp-catalog-limits.d.ts +2 -0
  153. package/dist/mcp-endpoint.js +9 -0
  154. package/dist/mcp-endpoint.js.map +1 -0
  155. package/dist/mcp-oauth.d.ts +2 -2
  156. package/dist/mcp-structured-content.d.ts +25 -0
  157. package/dist/modal-native-proof-v2.d.ts +587 -0
  158. package/dist/modal-native-proof-v2.js +38 -0
  159. package/dist/modal-native-proof-v2.js.map +1 -0
  160. package/dist/model-account-choice.d.ts +235 -0
  161. package/dist/model-account-settings.d.ts +422 -0
  162. package/dist/model-availability.d.ts +15 -0
  163. package/dist/model-connection-access.d.ts +13 -0
  164. package/dist/model-context-inspector.d.ts +98 -0
  165. package/dist/model-display.d.ts +43 -0
  166. package/dist/model-display.js +17 -0
  167. package/dist/model-display.js.map +1 -0
  168. package/dist/model-picker-order.d.ts +3 -1
  169. package/dist/model-picker-order.js +3 -0
  170. package/dist/model-picker-order.js.map +1 -1
  171. package/dist/organization-access.d.ts +412 -0
  172. package/dist/organization-access.js +39 -0
  173. package/dist/organization-access.js.map +1 -0
  174. package/dist/organization-integration-policy.d.ts +27 -0
  175. package/dist/organization-membership-lifecycle.d.ts +38 -0
  176. package/dist/organization-model-usage.d.ts +146 -0
  177. package/dist/organization-model-usage.js +78 -0
  178. package/dist/organization-model-usage.js.map +1 -0
  179. package/dist/organization-recovery.js +2 -1
  180. package/dist/organization-usage.d.ts +138 -0
  181. package/dist/permissions.d.ts +18 -0
  182. package/dist/personal-github.d.ts +1 -0
  183. package/dist/personal-github.js +199 -144
  184. package/dist/personal-github.js.map +1 -1
  185. package/dist/plugin-discovery.js +1 -1
  186. package/dist/prepared-mcp-setup.d.ts +54 -0
  187. package/dist/prepared-mcp-setup.js +12 -0
  188. package/dist/prepared-mcp-setup.js.map +1 -0
  189. package/dist/product-analytics.d.ts +116 -0
  190. package/dist/product-lifecycle-facts.d.ts +73 -0
  191. package/dist/remember.d.ts +98 -6
  192. package/dist/retained-output.d.ts +8 -0
  193. package/dist/sandbox-file-artifacts.d.ts +1 -0
  194. package/dist/sandbox-provider-command.d.ts +91 -1
  195. package/dist/sandbox-recovery.d.ts +146 -0
  196. package/dist/secret-generator.d.ts +44 -0
  197. package/dist/secret-references.d.ts +90 -0
  198. package/dist/secret-resolution.d.ts +111 -0
  199. package/dist/secret-totp.d.ts +41 -0
  200. package/dist/session-final-reply.d.ts +6 -0
  201. package/dist/session-final-reply.js +9 -0
  202. package/dist/session-final-reply.js.map +1 -0
  203. package/dist/session-goal-reports.d.ts +21 -0
  204. package/dist/session-history-import.d.ts +1272 -0
  205. package/dist/session-list-entries.d.ts +4 -0
  206. package/dist/session-list-entries.js +56 -0
  207. package/dist/session-list-entries.js.map +1 -0
  208. package/dist/session-mcp-projections.d.ts +6 -0
  209. package/dist/session-mcp-tool-permissions.d.ts +62 -0
  210. package/dist/session-message-search.d.ts +68 -0
  211. package/dist/session-target.d.ts +18 -0
  212. package/dist/session-titles.d.ts +8 -0
  213. package/dist/session-titles.js +5 -1
  214. package/dist/session-usage-limit-refusal.d.ts +34 -0
  215. package/dist/session-usage-limit-refusal.js +15 -0
  216. package/dist/session-usage-limit-refusal.js.map +1 -0
  217. package/dist/session-usage-limits.d.ts +127 -0
  218. package/dist/session-usage-limits.js +41 -0
  219. package/dist/session-usage-limits.js.map +1 -0
  220. package/dist/signup-attribution.d.ts +39 -0
  221. package/dist/site-data.d.ts +286 -0
  222. package/dist/site-operations.d.ts +39 -0
  223. package/dist/site-publishing.d.ts +778 -0
  224. package/dist/site-session-http.d.ts +89 -4
  225. package/dist/site-session-http.js +25 -1
  226. package/dist/site-sql.d.ts +421 -0
  227. package/dist/skill-catalog-context.d.ts +7 -0
  228. package/dist/skill-files.d.ts +1 -1
  229. package/dist/skill-use.d.ts +61 -0
  230. package/dist/skills.d.ts +15 -0
  231. package/dist/slack-bot-scopes.d.ts +17 -12
  232. package/dist/slack-bot-scopes.js +10 -3
  233. package/dist/slack-rest-mcp.d.ts +36 -0
  234. package/dist/slack-rest-mcp.js +25 -0
  235. package/dist/slack-rest-mcp.js.map +1 -0
  236. package/dist/spreadsheet-artifact-commands.d.ts +14 -1
  237. package/dist/spreadsheet-artifact-commands.js +8 -2
  238. package/dist/spreadsheet-artifact-query.d.ts +13 -6
  239. package/dist/spreadsheet-artifact-query.js +3 -3
  240. package/dist/subscription-account-actions.d.ts +64 -0
  241. package/dist/subscription-account-pools.d.ts +292 -0
  242. package/dist/subscription-personal-authority-v2.d.ts +28 -0
  243. package/dist/subscription-personal-authority-v2.js +12 -0
  244. package/dist/subscription-personal-authority-v2.js.map +1 -0
  245. package/dist/tool-action-review.d.ts +132 -0
  246. package/dist/tool-catalog.d.ts +408 -0
  247. package/dist/tool-policy.d.ts +5 -0
  248. package/dist/tool-review-presentation.d.ts +12 -0
  249. package/dist/tool-review-presentation.js +17 -0
  250. package/dist/tool-review-presentation.js.map +1 -0
  251. package/dist/transcription-recordings.d.ts +21 -0
  252. package/dist/turn-serving-policy.d.ts +221 -0
  253. package/dist/usage-allowances.d.ts +314 -0
  254. package/dist/usage-allowances.js +52 -0
  255. package/dist/usage-allowances.js.map +1 -0
  256. package/dist/vaults.d.ts +1286 -0
  257. package/dist/video-generation.d.ts +3 -0
  258. package/dist/video-generation.js +2 -1
  259. package/dist/workspace-instruction-policies.d.ts +13 -0
  260. package/dist/workspace-integration-wire.d.ts +36 -0
  261. package/dist/workspace-integration-wire.js +23 -0
  262. package/dist/workspace-integration-wire.js.map +1 -0
  263. package/dist/workspace-integrations.d.ts +1028 -0
  264. package/dist/workspace-state.d.ts +85 -416
  265. package/dist/xai-provider-account-authority.js +2 -1
  266. package/package.json +98 -2
  267. package/src/agent-authored-durable-text.ts +14 -11
  268. package/src/agent-config.ts +1698 -0
  269. package/src/agent-instruction-changes.ts +115 -0
  270. package/src/agent-learning.ts +188 -0
  271. package/src/agent-topology.ts +57 -52
  272. package/src/allowance-refusal.ts +81 -0
  273. package/src/analytics-consent-report.ts +20 -0
  274. package/src/api-key-presets.ts +28 -0
  275. package/src/artifact-catalog.ts +82 -0
  276. package/src/artifacts.ts +299 -227
  277. package/src/atlassian-native-retirement.ts +33 -0
  278. package/src/atlassian.ts +135 -108
  279. package/src/browser-storage.ts +10 -0
  280. package/src/bundled-skills.ts +60 -17
  281. package/src/canonical-human-identities.ts +60 -58
  282. package/src/claude-provider-account-authority.ts +12 -0
  283. package/src/claude-subscription-oauth.ts +73 -0
  284. package/src/claude-subscription-usage.ts +68 -0
  285. package/src/client-error-report.ts +343 -0
  286. package/src/code-search.ts +105 -0
  287. package/src/codex-provider-account-authority.ts +21 -16
  288. package/src/company-brain-governed-writes.ts +255 -233
  289. package/src/company-brain.ts +164 -153
  290. package/src/company-profile.ts +365 -292
  291. package/src/connect.ts +212 -173
  292. package/src/connection-account-label.ts +46 -0
  293. package/src/connection-authority.ts +183 -364
  294. package/src/connector-attachments.ts +137 -122
  295. package/src/connector-destinations.ts +46 -42
  296. package/src/connector-tool-permissions.ts +117 -0
  297. package/src/cua-desktop-tools.gen.json +6512 -0
  298. package/src/cua-desktop-tools.linux.gen.json +6600 -0
  299. package/src/cua-desktop-tools.ts +36 -0
  300. package/src/cua-desktop-tools.windows.gen.json +6353 -0
  301. package/src/define-schema.ts +10 -0
  302. package/src/direct-model-provider.ts +108 -0
  303. package/src/editable-artifact-committed-transaction.ts +17 -0
  304. package/src/editable-artifact-versions.ts +7 -1
  305. package/src/event-preview.ts +53 -3
  306. package/src/external-identities.ts +262 -145
  307. package/src/feedback.ts +43 -30
  308. package/src/first-party-tool-authorization.ts +356 -0
  309. package/src/github-repository-contracts.ts +78 -64
  310. package/src/google-drive.ts +285 -234
  311. package/src/governed-learning-activation.ts +152 -131
  312. package/src/governed-learning-evaluator.ts +140 -133
  313. package/src/host-mcp-bindings.ts +292 -198
  314. package/src/image-generation.ts +104 -95
  315. package/src/index.ts +13354 -8654
  316. package/src/insights-usage.ts +727 -0
  317. package/src/interaction.ts +3070 -2326
  318. package/src/knowledge-entries.ts +428 -0
  319. package/src/knowledge-preparation.ts +57 -0
  320. package/src/knowledge.ts +246 -213
  321. package/src/managed-auth-session-sets.ts +220 -144
  322. package/src/managed-sign-in-methods.ts +52 -0
  323. package/src/mcp-catalog-limits.ts +2 -0
  324. package/src/mcp-oauth.ts +43 -34
  325. package/src/mcp-receipts.ts +192 -192
  326. package/src/mcp-structured-content.ts +81 -0
  327. package/src/memory-slack-delivery.ts +171 -142
  328. package/src/modal-native-proof-v2.ts +429 -0
  329. package/src/model-account-choice.ts +177 -0
  330. package/src/model-account-settings.ts +210 -0
  331. package/src/model-availability.ts +22 -0
  332. package/src/model-connection-access.ts +61 -14
  333. package/src/model-context-inspector.ts +133 -99
  334. package/src/model-display.ts +221 -0
  335. package/src/model-picker-order.ts +12 -1
  336. package/src/organization-access.ts +217 -0
  337. package/src/organization-integration-policy.ts +63 -0
  338. package/src/organization-membership-lifecycle.ts +528 -382
  339. package/src/organization-model-usage.ts +81 -0
  340. package/src/organization-recovery.ts +147 -135
  341. package/src/organization-usage.ts +94 -0
  342. package/src/permissions.ts +88 -52
  343. package/src/personal-github.ts +210 -171
  344. package/src/preference-registry.ts +314 -258
  345. package/src/prepared-mcp-setup.ts +189 -0
  346. package/src/product-analytics.ts +261 -0
  347. package/src/product-lifecycle-facts.ts +122 -0
  348. package/src/remember.ts +181 -167
  349. package/src/retained-output.ts +194 -165
  350. package/src/sandbox-file-artifacts.ts +60 -47
  351. package/src/sandbox-provider-command.ts +88 -20
  352. package/src/sandbox-recovery.ts +129 -0
  353. package/src/scoped-knowledge.ts +61 -43
  354. package/src/secret-generator.ts +155 -0
  355. package/src/secret-references.ts +414 -0
  356. package/src/secret-resolution.ts +274 -0
  357. package/src/secret-totp.ts +188 -0
  358. package/src/session-final-reply.ts +16 -0
  359. package/src/session-goal-reports.ts +64 -0
  360. package/src/session-history-import.ts +177 -0
  361. package/src/session-list-entries.ts +96 -0
  362. package/src/session-mcp-projections.ts +11 -0
  363. package/src/session-mcp-tool-permissions.ts +108 -0
  364. package/src/session-message-search.ts +61 -0
  365. package/src/session-target.ts +57 -0
  366. package/src/session-titles.ts +80 -10
  367. package/src/session-topology-primitives.ts +19 -12
  368. package/src/session-usage-limit-refusal.ts +101 -0
  369. package/src/session-usage-limits.ts +171 -0
  370. package/src/signup-attribution.ts +86 -0
  371. package/src/site-data.ts +339 -0
  372. package/src/site-operations.ts +154 -0
  373. package/src/site-publishing.ts +876 -0
  374. package/src/site-session-http.ts +294 -16
  375. package/src/site-sql.ts +1123 -0
  376. package/src/skill-catalog-context.ts +50 -0
  377. package/src/skill-files.ts +3 -3
  378. package/src/skill-use.ts +80 -0
  379. package/src/skills.ts +82 -54
  380. package/src/slack-bot-scopes.ts +31 -39
  381. package/src/slack-rest-mcp.ts +222 -0
  382. package/src/slack-task-policy.ts +96 -73
  383. package/src/spreadsheet-artifact-commands.ts +73 -2
  384. package/src/spreadsheet-artifact-query.ts +187 -39
  385. package/src/subscription-account-actions.ts +84 -0
  386. package/src/subscription-account-pools.ts +53 -0
  387. package/src/subscription-personal-authority-v2.ts +66 -0
  388. package/src/task-notes.ts +55 -51
  389. package/src/tool-action-review.ts +258 -0
  390. package/src/tool-catalog.ts +609 -372
  391. package/src/tool-policy.ts +82 -0
  392. package/src/tool-result-spill.ts +12 -9
  393. package/src/tool-review-presentation.ts +385 -0
  394. package/src/transcription-recordings.ts +145 -131
  395. package/src/turn-serving-policy.ts +166 -0
  396. package/src/usage-allowances.ts +248 -0
  397. package/src/vaults.ts +850 -0
  398. package/src/video-generation.ts +385 -360
  399. package/src/work-claims.ts +173 -149
  400. package/src/workspace-instruction-policies.ts +349 -275
  401. package/src/workspace-integration-wire.ts +101 -0
  402. package/src/workspace-integrations.ts +724 -0
  403. package/src/workspace-learning-administration.ts +57 -44
  404. package/src/workspace-learning-policy.ts +127 -96
  405. package/src/workspace-state.ts +253 -333
  406. package/src/xai-provider-account-authority.ts +22 -17
  407. package/dist/chunk-3SIZGL3O.js.map +0 -1
  408. package/dist/chunk-7ABONTXE.js.map +0 -1
  409. package/dist/chunk-BCS7WHCK.js +0 -139
  410. package/dist/chunk-BCS7WHCK.js.map +0 -1
  411. package/dist/chunk-GRG7PHWQ.js +0 -25
  412. package/dist/chunk-GRG7PHWQ.js.map +0 -1
  413. package/dist/chunk-JUFK3T4Q.js +0 -80
  414. package/dist/chunk-JUFK3T4Q.js.map +0 -1
  415. package/dist/chunk-M5ZGRVIQ.js +0 -719
  416. package/dist/chunk-M5ZGRVIQ.js.map +0 -1
  417. package/dist/chunk-MRWYRAS5.js.map +0 -1
  418. package/dist/chunk-OSBYTE3O.js +0 -348
  419. package/dist/chunk-OSBYTE3O.js.map +0 -1
  420. package/dist/chunk-P3HLDT77.js +0 -59
  421. package/dist/chunk-P3HLDT77.js.map +0 -1
  422. package/dist/chunk-TEMFILR7.js +0 -143
  423. package/dist/chunk-TEMFILR7.js.map +0 -1
  424. package/dist/chunk-TXTQIYCV.js.map +0 -1
  425. package/dist/chunk-UR2GFYIE.js +0 -22598
  426. package/dist/chunk-UR2GFYIE.js.map +0 -1
  427. package/dist/chunk-WYBDERIY.js.map +0 -1
  428. package/dist/chunk-Y3KNXVTD.js.map +0 -1
  429. package/dist/chunk-YBW5JSA3.js.map +0 -1
  430. package/dist/chunk-YRXAWWCU.js +0 -45
  431. package/dist/chunk-YRXAWWCU.js.map +0 -1
  432. /package/dist/{chunk-5LYFSZ7O.js.map → chunk-352X6ENP.js.map} +0 -0
  433. /package/dist/{chunk-WBYTNVIW.js.map → chunk-RKX3NQYS.js.map} +0 -0
  434. /package/dist/{chunk-O5LEQHDM.js.map → chunk-Z7WEVGCL.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/site-operations.ts","../src/site-session-http.ts"],"sourcesContent":["// Zod-free on purpose: browser bundles (the Site runtime, the console Site\n// bridge and the gateway shell) import this module, and must not pull in zod.\n\n// ---------------------------------------------------------------------------\n// Site operation allowlist\n// ---------------------------------------------------------------------------\n\n/**\n * Every HTTP operation Site code may perform through a host, as an explicit\n * allowlist (method + exact path shape) rather than a URL prefix. Paths are\n * the suffix after `/v1/workspaces/site-host` that the in-Site SDK client\n * uses; `/v1/config/client` is the one path outside that prefix.\n *\n * The console host forwards an allowed operation to the ordinary workspace\n * route with Site provenance. The gateway forwards it to `/_og/api<suffix>`\n * and the API serves it at `/v1/site-runtime<suffix>`. `agent: true` marks\n * operations that start or message an agent; every such route records which\n * Site (and version) originated it.\n */\nexport type SiteOperationMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\nexport type SiteOperation = {\n id: string;\n method: SiteOperationMethod;\n /** Anchored pattern on the site-host suffix (`\"\"` is the workspace itself). */\n pattern: RegExp;\n agent?: true;\n stream?: true;\n};\n\nconst ID = \"[A-Za-z0-9_-]{1,128}\";\nconst DATA = \"/published-artifacts/current/(?:data|files)(?:/[A-Za-z0-9._~:@!$&'()*+,;=-]+)*\";\n\nexport const SITE_OPERATIONS: readonly SiteOperation[] = Object.freeze([\n { id: \"config.client\", method: \"GET\", pattern: /^\\/v1\\/config\\/client$/u },\n { id: \"workspace.get\", method: \"GET\", pattern: /^$/u },\n { id: \"site.config\", method: \"GET\", pattern: /^\\/site\\/config$/u },\n { id: \"models.list\", method: \"GET\", pattern: /^\\/model-catalog$/u },\n { id: \"sessions.list\", method: \"GET\", pattern: /^\\/sessions$/u },\n { id: \"sessions.create\", method: \"POST\", pattern: /^\\/sessions$/u, agent: true },\n { id: \"sessions.get\", method: \"GET\", pattern: new RegExp(`^/sessions/${ID}$`, \"u\") },\n { id: \"sessions.events\", method: \"GET\", pattern: new RegExp(`^/sessions/${ID}/events$`, \"u\") },\n {\n id: \"sessions.stream\",\n method: \"GET\",\n pattern: new RegExp(`^/sessions/${ID}/events/stream$`, \"u\"),\n stream: true,\n },\n {\n id: \"sessions.send\",\n method: \"POST\",\n pattern: new RegExp(`^/sessions/${ID}/events$`, \"u\"),\n agent: true,\n },\n {\n id: \"sessions.steer\",\n method: \"POST\",\n pattern: new RegExp(`^/sessions/${ID}/steer$`, \"u\"),\n agent: true,\n },\n {\n id: \"sessions.control\",\n method: \"POST\",\n pattern: new RegExp(`^/sessions/${ID}/control$`, \"u\"),\n agent: true,\n },\n { id: \"sessions.queue\", method: \"GET\", pattern: new RegExp(`^/sessions/${ID}/queue$`, \"u\") },\n // SessionConversation's documented queue edit/delete/steer/move.\n {\n id: \"sessions.queue.item\",\n method: \"POST\",\n pattern: new RegExp(`^/sessions/${ID}/queue/${ID}/(?:move|edit|steer|delete)$`, \"u\"),\n agent: true,\n },\n // SessionConversation's durable composer draft and its Send.\n {\n id: \"sessions.composerDraft.get\",\n method: \"GET\",\n pattern: new RegExp(`^/sessions/${ID}/composer-draft$`, \"u\"),\n },\n {\n id: \"sessions.composerDraft.put\",\n method: \"PUT\",\n pattern: new RegExp(`^/sessions/${ID}/composer-draft$`, \"u\"),\n },\n {\n id: \"sessions.composerDraft.submit\",\n method: \"POST\",\n pattern: new RegExp(`^/sessions/${ID}/composer-draft/submit$`, \"u\"),\n agent: true,\n },\n {\n id: \"sessions.humanInput\",\n method: \"GET\",\n pattern: new RegExp(`^/sessions/${ID}/human-input-requests$`, \"u\"),\n },\n // SessionConversation's human-input form reads the one open request.\n {\n id: \"sessions.humanInput.get\",\n method: \"GET\",\n pattern: new RegExp(`^/sessions/${ID}/human-input-requests/${ID}$`, \"u\"),\n },\n { id: \"data.read\", method: \"GET\", pattern: new RegExp(`^${DATA}$`, \"u\") },\n { id: \"data.write\", method: \"POST\", pattern: new RegExp(`^${DATA}$`, \"u\") },\n { id: \"data.put\", method: \"PUT\", pattern: new RegExp(`^${DATA}$`, \"u\") },\n { id: \"data.patch\", method: \"PATCH\", pattern: new RegExp(`^${DATA}$`, \"u\") },\n { id: \"data.delete\", method: \"DELETE\", pattern: new RegExp(`^${DATA}$`, \"u\") },\n // Site SQL (PR B): run one named query the owner defined; never raw SQL.\n {\n id: \"sql.run\",\n method: \"POST\",\n pattern: /^\\/published-artifacts\\/current\\/sql\\/queries\\/[A-Za-z][A-Za-z0-9_-]{0,63}$/u,\n },\n { id: \"site.report\", method: \"POST\", pattern: /^\\/site\\/reports$/u },\n] satisfies SiteOperation[]);\n\n/**\n * Tool bridge methods (MessagePort, not HTTP). The gateway serves them at\n * POST /_og/api/tools/<method>; the console uses its tool gateway client.\n */\nexport const SITE_TOOL_METHODS = Object.freeze([\n \"catalog\",\n \"declarations\",\n \"call\",\n \"resolve\",\n \"invoke\",\n] as const);\nexport type SiteToolMethod = (typeof SITE_TOOL_METHODS)[number];\n\nconst SITE_HOST_PREFIX = \"/v1/workspaces/site-host\";\n\n/**\n * Match a Site-originated request against the allowlist. `path` is the\n * pathname the in-Site SDK used (`/v1/workspaces/site-host/...` or\n * `/v1/config/client`), without query. Returns the operation and the\n * site-host suffix, or null when the operation is not allowed. Refuses\n * encoded separators, dot segments and control characters.\n */\nexport function matchSiteOperation(\n method: string,\n path: string,\n): { operation: SiteOperation; suffix: string } | null {\n if (/[%\\\\#\\u0000-\\u0020\\u007f]/u.test(path)) return null;\n if (path.split(\"/\").some((part) => part === \".\" || part === \"..\")) return null;\n const upper = method.toUpperCase();\n let suffix: string;\n if (path === \"/v1/config/client\") suffix = path;\n else if (path === SITE_HOST_PREFIX) suffix = \"\";\n else if (path.startsWith(`${SITE_HOST_PREFIX}/`)) suffix = path.slice(SITE_HOST_PREFIX.length);\n else return null;\n const operation = SITE_OPERATIONS.find(\n (candidate) => candidate.method === upper && candidate.pattern.test(suffix),\n );\n return operation ? { operation, suffix } : null;\n}\n","import { matchSiteOperation, type SiteOperation } from \"./site-operations\";\n\nconst SITE_WORKSPACE_PREFIX = \"/v1/workspaces/site-host\";\n/** Site Data and Site SQL routes under any published Site: `<prefix>/published-artifacts/<id>/data|files|sql`. */\nconst SITE_DATA_PATH =\n /^\\/v1\\/workspaces\\/site-host\\/published-artifacts\\/([^/]+)\\/(?:data|files|sql)(?:\\/|$)/u;\n/** The list filter a frame without a published Site gets: it names no Site, so lists nothing. */\nexport const SITE_NO_ORIGIN_ID = \"00000000-0000-0000-0000-000000000000\";\n\n/**\n * The header a host sets on every request it forwards from a Site frame. The\n * value names the host: `1` for the console bridge, `preview` for a Codemode\n * local preview. The API treats a request carrying it (or the pinned Site id)\n * as Site code: only `SITE_OPERATIONS`, only the frame's own sessions.\n */\nexport const SITE_FRAME_HEADER = \"x-opengeni-site-frame\";\n/** SITE_FRAME_HEADER value a Codemode local preview sets. */\nexport const SITE_PREVIEW_FRAME = \"preview\";\n/**\n * A random id the host mints per mounted frame. A frame without a published\n * Site (inline HTML, previews) records it on the sessions it starts and may\n * reach only those sessions afterwards.\n */\nexport const SITE_FRAME_ID_HEADER = \"x-opengeni-site-frame-id\";\n/** The published Site (artifact id) a host pinned the frame to. */\nexport const SITE_ID_HEADER = \"x-opengeni-site-id\";\n/** The exact Site version the pinned frame runs. */\nexport const SITE_VERSION_HEADER = \"x-opengeni-site-version\";\n\n/** A Site/Codemode SDK request named a route outside the proxied surface. */\nexport class SiteSessionPathError extends Error {\n readonly code = \"site_session_path_unsupported\";\n\n constructor() {\n super(\"Unsupported Site session API path\");\n this.name = \"SiteSessionPathError\";\n }\n}\n\n/** The host serves no Site Data: it is not bound to a published Site (inline HTML, previews). */\nexport class SiteDataUnsupportedError extends Error {\n readonly code = \"site_data_unsupported\";\n\n constructor() {\n super(\"This Site host does not provide Site Data\");\n this.name = \"SiteDataUnsupportedError\";\n }\n}\n\nfunction unsafePathname(pathname: string): boolean {\n return (\n /[%\\\\#\\u0000-\\u0020\\u007f]/u.test(pathname) ||\n pathname.split(\"/\").some((part) => part === \".\" || part === \"..\")\n );\n}\n\nfunction hostWorkspacePath(path: string, workspaceId: string): string {\n return path.replace(\"/workspaces/site-host\", `/workspaces/${encodeURIComponent(workspaceId)}`);\n}\n\n/** Site Data: a Site reaches only its own data, as `current`, through a host bound to a published Site. */\nfunction siteDataPath(path: string, rewritten: string, workspaceId: string, siteId?: string) {\n // Inside the Site the alias stays unresolved; the host resolves it.\n if (workspaceId === \"site-host\") return path;\n // Only a host bound to a published Site serves its data.\n if (!siteId) throw new SiteDataUnsupportedError();\n return rewritten.replace(\n \"/published-artifacts/current/\",\n `/published-artifacts/${encodeURIComponent(siteId)}/`,\n );\n}\n\n/**\n * Route a request from Site code (the in-Site SDK, the console bridge, a\n * Codemode preview) to the host workspace. This is the `SITE_OPERATIONS`\n * allowlist: anything else is refused with SiteSessionPathError before any\n * request is made. Ordinary API handlers still authorize every allowed\n * operation with the viewer's own authority, and the API independently\n * refuses frame requests outside the allowlist or to another Site's sessions.\n *\n * `workspaceId` `site-host` checks a path inside the Site without rewriting\n * it. A session list must name `originSiteId=current`; the host binds it to\n * its pinned Site, or to no Site at all when the frame has none.\n */\nexport function siteSessionPath(\n path: string,\n workspaceId: string,\n method = \"GET\",\n siteId?: string,\n): string {\n const pathname = path.split(\"?\")[0]!;\n const match = matchSiteOperation(method, pathname);\n if (!match) throw new SiteSessionPathError();\n const rewritten = hostWorkspacePath(path, workspaceId);\n if (SITE_DATA_PATH.test(pathname)) return siteDataPath(path, rewritten, workspaceId, siteId);\n if (match.operation.id !== \"sessions.list\") return rewritten;\n // A Site lists only its own conversations. Never widen a Site list to the workspace.\n const url = new URL(rewritten, \"http://site.invalid\");\n const origins = url.searchParams.getAll(\"originSiteId\");\n if (origins.length !== 1 || origins[0] !== \"current\") throw new SiteSessionPathError();\n if (workspaceId === \"site-host\") return path;\n url.searchParams.set(\"originSiteId\", siteId ?? SITE_NO_ORIGIN_ID);\n return url.pathname + url.search;\n}\n\n/**\n * Route an agent's own SDK request through the Codemode SDK proxy to its\n * workspace. Unlike `siteSessionPath` this is a URL prefix boundary, not an\n * operation allowlist: the proxy signs a short-lived credential bounded by\n * the agent's own permission ceiling and ordinary handlers authorize every\n * operation. Site Data is not served here (an agent uses its tools).\n * Requests a Codemode preview forwards from Site code carry the frame marker\n * and use `siteSessionPath` instead.\n */\nexport function siteHostWorkspacePath(path: string, workspaceId: string): string {\n const pathname = path.split(\"?\")[0]!;\n const workspace =\n pathname === SITE_WORKSPACE_PREFIX || pathname.startsWith(`${SITE_WORKSPACE_PREFIX}/`);\n if ((!workspace && pathname !== \"/v1/config/client\") || unsafePathname(pathname))\n throw new SiteSessionPathError();\n const rewritten = hostWorkspacePath(path, workspaceId);\n const data = SITE_DATA_PATH.exec(pathname);\n if (data) {\n if (data[1] !== \"current\") throw new SiteSessionPathError();\n return siteDataPath(path, rewritten, workspaceId);\n }\n const url = new URL(rewritten, \"http://site.invalid\");\n if (url.searchParams.get(\"originSiteId\") === \"current\" && workspaceId !== \"site-host\") {\n url.searchParams.set(\"originSiteId\", SITE_NO_ORIGIN_ID);\n return url.pathname + url.search;\n }\n return rewritten;\n}\n\n/** The Site identity a host attached to a request, from its host-set headers. */\nexport type SiteFrameHeaders = {\n /** The pinned published Site id, or null for a frame without one. */\n siteId: string | null;\n versionId: string | null;\n /** The host's frame marker value (`1`, `preview`), or null when only the Site id was set. */\n marker: string | null;\n frameId: string | null;\n};\n\n/** Read the host-set frame headers. Null when the request did not come from a Site frame. */\nexport function siteFrameFromHeaders(\n header: (name: string) => string | null | undefined,\n): SiteFrameHeaders | null {\n const value = (name: string) => header(name) ?? null;\n const marker = value(SITE_FRAME_HEADER);\n const siteId = value(SITE_ID_HEADER);\n const versionId = value(SITE_VERSION_HEADER);\n const frameId = value(SITE_FRAME_ID_HEADER);\n if (marker === null && siteId === null && versionId === null && frameId === null) return null;\n return { siteId: siteId || null, versionId: versionId || null, marker, frameId: frameId || null };\n}\n\n/**\n * Match a request that reached a workspace route from a Site frame against\n * `SITE_OPERATIONS`. `pathname` is the raw request path\n * (`/v1/workspaces/<id>/...` or `/v1/config/client`). The frame's own pinned\n * Site id maps back to `current`; any other Site id does not match.\n */\nexport function siteFrameOperation(\n method: string,\n pathname: string,\n workspaceId: string,\n frameSiteId: string | null,\n): { operation: SiteOperation; suffix: string; sessionId: string | null } | null {\n if (unsafePathname(pathname)) return null;\n let sitePath = pathname;\n if (pathname !== \"/v1/config/client\") {\n const prefix = `/v1/workspaces/${workspaceId}`;\n if (pathname !== prefix && !pathname.startsWith(`${prefix}/`)) return null;\n sitePath = `${SITE_WORKSPACE_PREFIX}${pathname.slice(prefix.length)}`;\n const data = /^\\/v1\\/workspaces\\/site-host\\/published-artifacts\\/([^/]+)\\//u.exec(sitePath);\n if (data) {\n if (!frameSiteId || data[1] !== frameSiteId) return null;\n sitePath = sitePath.replace(\n `/published-artifacts/${frameSiteId}/`,\n \"/published-artifacts/current/\",\n );\n }\n }\n const match = matchSiteOperation(method, sitePath);\n if (!match) return null;\n const session = /^\\/sessions\\/([^/]+)(?:\\/|$)/u.exec(match.suffix);\n return { ...match, sessionId: session ? session[1]! : null };\n}\n\n/** Preserve SDK request semantics while the host supplies identity and transport headers. */\nexport function siteRequestHeaders(input: HeadersInit): Headers {\n const headers = new Headers(input);\n const connectionHeaders = (headers.get(\"connection\") ?? \"\")\n .split(\",\")\n .map((value) => value.trim().toLowerCase());\n for (const name of [...headers.keys()]) {\n if (\n connectionHeaders.includes(name) ||\n /^(authorization|proxy-authorization|cookie|cookie2|host|origin|referer|connection|keep-alive|proxy-connection|te|trailer|transfer-encoding|upgrade|content-length|accept-encoding|forwarded|x-api-key)$/i.test(\n name,\n ) ||\n /^(sec-|x-forwarded-|x-opengeni-(access-key|external-actor|site-|managed-actor))/i.test(name)\n )\n headers.delete(name);\n }\n return headers;\n}\n\n// ---------------------------------------------------------------------------\n// What a Site frame may put in a request body\n// ---------------------------------------------------------------------------\n\n/** Message fields a Site page may set: the text and how the model answers it. */\nconst SITE_FRAME_MESSAGE_FIELDS = [\n \"text\",\n \"annotations\",\n \"model\",\n \"reasoningEffort\",\n \"latencyMode\",\n \"controlEtag\",\n \"expectedDraftRevision\",\n] as const;\n\n/**\n * Body fields a Site frame may send per operation. Anything else with a\n * value (resources, personal resource attachments, MCP credential updates,\n * connection accounts, model context, approval decisions, human-input\n * answers) is the person's to give in the console, never a Site page's.\n */\nconst SITE_FRAME_BODY_FIELDS: Readonly<Record<string, readonly string[]>> = Object.freeze({\n \"sessions.send\": [\"type\", \"payload\", \"clientEventId\"],\n \"sessions.steer\": [...SITE_FRAME_MESSAGE_FIELDS, \"clientEventId\"],\n \"sessions.control\": [\"action\", \"reason\", \"clientEventId\", \"expectedControlEtag\"],\n \"sessions.composerDraft.put\": [\n \"text\",\n \"annotations\",\n \"resources\",\n \"model\",\n \"reasoningEffort\",\n \"latencyMode\",\n \"expectedRevision\",\n ],\n \"sessions.composerDraft.submit\": [\n ...SITE_FRAME_MESSAGE_FIELDS,\n \"resources\",\n \"connectionAccounts\",\n \"clientEventId\",\n \"delivery\",\n ],\n \"sessions.queue.move\": [\"clientEventId\", \"expectedQueueVersion\", \"beforeTurnId\"],\n \"sessions.queue.edit\": [\n \"clientEventId\",\n \"expectedTurnVersion\",\n \"expectedDraftRevision\",\n \"replaceDraft\",\n ],\n \"sessions.queue.steer\": [\"clientEventId\", \"expectedTurnVersion\", \"controlEtag\"],\n \"sessions.queue.delete\": [\"clientEventId\", \"expectedTurnVersion\", \"reason\"],\n});\n\n/** Fields allowed above only while empty: a draft carries no resources or accounts. */\nconst SITE_FRAME_EMPTY_ONLY_FIELDS = new Set([\"resources\", \"connectionAccounts\"]);\n\n/**\n * Session create fields a Site frame may send. The API starts the session\n * with a minimal Site profile: no tools, servers, connections, permissions,\n * vaults, sandbox or environment choice, resources, Skills, agent overrides,\n * hidden model context, learning overrides, goals, channels, visibility,\n * usage limits or nesting. Metadata keeps only keys outside `_opengeni`.\n */\nexport const SITE_FRAME_SESSION_CREATE_FIELDS: readonly string[] = Object.freeze([\n \"initialMessage\",\n \"requestedSessionId\",\n \"idempotencyKey\",\n \"clientEventId\",\n \"model\",\n \"reasoningEffort\",\n \"latencyMode\",\n \"startMode\",\n \"metadata\",\n]);\n\nfunction bodyRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\n/** Absent, null, an empty list or an empty object asks for nothing. */\nfunction emptyBodyValue(value: unknown): boolean {\n if (value === undefined || value === null) return true;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") return Object.keys(value).length === 0;\n return false;\n}\n\nfunction refusedField(\n body: Record<string, unknown>,\n allowed: readonly string[],\n prefix = \"\",\n): string | null {\n for (const [name, value] of Object.entries(body)) {\n if (emptyBodyValue(value)) continue;\n if (!allowed.includes(name) || SITE_FRAME_EMPTY_ONLY_FIELDS.has(name))\n return `${prefix}${name}`;\n }\n return null;\n}\n\n/**\n * The first body field a Site frame may not send for this operation (for\n * example `payload.resources` or `type`), or null when the body is allowed.\n * `suffix` is the operation's site-host suffix (from `siteFrameOperation` or\n * `matchSiteOperation`). A body that is not a JSON object is left to the\n * route, which refuses it. Only `user.message` events are allowed:\n * approvals and answers to questions happen in the console.\n */\nexport function siteFrameBodyRefusal(\n operationId: string,\n suffix: string,\n body: unknown,\n): string | null {\n const record = bodyRecord(body);\n if (!record) return null;\n if (operationId === \"sessions.create\")\n return refusedField(record, SITE_FRAME_SESSION_CREATE_FIELDS);\n const action =\n operationId === \"sessions.queue.item\"\n ? /\\/queue\\/[^/]+\\/(move|edit|steer|delete)$/u.exec(suffix)?.[1]\n : undefined;\n const key = action ? `sessions.queue.${action}` : operationId;\n const allowed = SITE_FRAME_BODY_FIELDS[key];\n if (!allowed) return null;\n const refused = refusedField(record, allowed);\n if (refused) return refused;\n if (operationId !== \"sessions.send\") return null;\n if (record.type !== \"user.message\") return \"type\";\n const payload = bodyRecord(record.payload);\n return payload ? refusedField(payload, SITE_FRAME_MESSAGE_FIELDS, \"payload.\") : null;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,186 @@
1
+ import {
2
+ defineSchema
3
+ } from "./chunk-56SNIMDO.js";
4
+
5
+ // src/usage-allowances.ts
6
+ import { z } from "zod";
7
+ var AllowanceCredits = /* @__PURE__ */ defineSchema(
8
+ () => z.number().int().nonnegative().safe()
9
+ );
10
+ var Version = /* @__PURE__ */ defineSchema(() => z.number().int().nonnegative().safe());
11
+ var Timestamp = /* @__PURE__ */ defineSchema(() => z.string().datetime({ offset: true }));
12
+ var OperationId = /* @__PURE__ */ defineSchema(
13
+ () => z.string().min(1).max(256).refine(
14
+ (value) => value.trim().length > 0 && !value.includes("\0") && !/[\uD800-\uDFFF]/u.test(value) && new TextEncoder().encode(value).byteLength <= 256
15
+ )
16
+ );
17
+ var SubjectId = /* @__PURE__ */ defineSchema(
18
+ () => z.string().min(1).max(1024).refine((value) => !value.includes("\0"))
19
+ );
20
+ var MemberAllowanceRule = /* @__PURE__ */ defineSchema(
21
+ () => z.union([
22
+ z.object({ share: z.number().finite().nonnegative() }).strict(),
23
+ z.object({ credits: AllowanceCredits }).strict(),
24
+ z.null()
25
+ ])
26
+ );
27
+ var MemberAllowanceDefault = /* @__PURE__ */ defineSchema(
28
+ () => z.union([
29
+ z.enum(["none", "equal_share"]),
30
+ z.object({ share: z.number().finite().nonnegative() }).strict(),
31
+ z.object({ credits: AllowanceCredits }).strict()
32
+ ])
33
+ );
34
+ var Thresholds = /* @__PURE__ */ defineSchema(
35
+ () => z.array(z.number().finite().positive().max(1)).max(16)
36
+ );
37
+ var UnbilledUsageMetering = /* @__PURE__ */ defineSchema(
38
+ () => z.enum(["ignore", "list_price"])
39
+ );
40
+ var WorkspaceAllowanceConfig = /* @__PURE__ */ defineSchema(
41
+ () => z.object({
42
+ includedCredits: AllowanceCredits,
43
+ period: z.enum(["monthly", "none"]),
44
+ anchorDay: z.number().int().min(1).max(31).optional(),
45
+ memberDefault: MemberAllowanceDefault.optional(),
46
+ thresholds: z.object({ workspace: Thresholds.optional(), member: Thresholds.optional() }).strict().optional(),
47
+ unbilledUsage: UnbilledUsageMetering.optional()
48
+ }).strict()
49
+ );
50
+ var WorkspaceAllowance = /* @__PURE__ */ defineSchema(
51
+ () => WorkspaceAllowanceConfig.extend({ version: Version.min(1) })
52
+ );
53
+ var WorkspaceAllowanceState = /* @__PURE__ */ defineSchema(
54
+ () => z.object({ version: Version, config: WorkspaceAllowance.nullable() }).strict().refine((state) => state.config === null || state.config.version === state.version, {
55
+ message: "Allowance configuration and lifecycle versions must match",
56
+ path: ["config", "version"]
57
+ })
58
+ );
59
+ var SetWorkspaceAllowanceRequest = /* @__PURE__ */ defineSchema(
60
+ () => WorkspaceAllowanceConfig.extend({
61
+ expectedVersion: Version
62
+ })
63
+ );
64
+ var ClearWorkspaceAllowanceRequest = /* @__PURE__ */ defineSchema(
65
+ () => z.object({ expectedVersion: Version.min(1), operationId: OperationId.optional() }).strict()
66
+ );
67
+ var ClearWorkspaceAllowanceResponse = /* @__PURE__ */ defineSchema(
68
+ () => z.object({ version: Version.min(1) }).strict()
69
+ );
70
+ var GrantWorkspaceCreditsRequest = /* @__PURE__ */ defineSchema(
71
+ () => z.object({
72
+ operationId: OperationId,
73
+ credits: AllowanceCredits.positive(),
74
+ expiresAt: Timestamp.nullable().optional()
75
+ }).strict()
76
+ );
77
+ var WorkspaceCreditGrant = /* @__PURE__ */ defineSchema(
78
+ () => GrantWorkspaceCreditsRequest.extend({
79
+ remaining: AllowanceCredits,
80
+ expiresAt: Timestamp.nullable()
81
+ })
82
+ );
83
+ var SetMemberAllowanceRequest = /* @__PURE__ */ defineSchema(
84
+ () => z.object({
85
+ rule: MemberAllowanceRule,
86
+ expectedVersion: Version
87
+ }).strict()
88
+ );
89
+ var MemberAllowance = /* @__PURE__ */ defineSchema(
90
+ () => z.object({
91
+ subjectId: SubjectId,
92
+ rule: MemberAllowanceRule,
93
+ version: Version
94
+ }).strict()
95
+ );
96
+ var UsageAllowancePeriod = /* @__PURE__ */ defineSchema(
97
+ () => z.union([z.literal("current"), z.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/)])
98
+ );
99
+ var GetUsageRequest = /* @__PURE__ */ defineSchema(
100
+ () => z.object({
101
+ period: UsageAllowancePeriod.optional(),
102
+ limit: z.number().int().min(1).max(200).optional(),
103
+ cursor: z.string().min(1).max(2048).optional()
104
+ }).strict()
105
+ );
106
+ var GetMyUsageRequest = /* @__PURE__ */ defineSchema(
107
+ () => GetUsageRequest.pick({ period: true })
108
+ );
109
+ var UsageAllowanceStatus = /* @__PURE__ */ defineSchema(
110
+ () => z.enum(["ok", "warning", "exhausted"])
111
+ );
112
+ var UsageAllowanceWindow = /* @__PURE__ */ defineSchema(
113
+ () => z.object({
114
+ start: Timestamp.nullable(),
115
+ end: Timestamp.nullable()
116
+ }).strict()
117
+ );
118
+ var Usage = /* @__PURE__ */ defineSchema(
119
+ () => z.object({
120
+ limit: AllowanceCredits.nullable(),
121
+ used: AllowanceCredits,
122
+ remaining: z.number().int().safe().nullable(),
123
+ /** Display this ratio rather than raw USD micros in human-facing products. */
124
+ fraction: z.number().finite().nonnegative().nullable(),
125
+ status: UsageAllowanceStatus,
126
+ resetsAt: Timestamp.nullable()
127
+ })
128
+ );
129
+ var WorkspaceAllowanceUsage = /* @__PURE__ */ defineSchema(
130
+ () => Usage.extend({
131
+ includedCredits: AllowanceCredits,
132
+ grantsRemaining: AllowanceCredits
133
+ }).strict()
134
+ );
135
+ var MemberAllowanceUsage = /* @__PURE__ */ defineSchema(
136
+ () => Usage.extend({
137
+ subjectId: SubjectId,
138
+ externalIdentity: z.object({ source: z.string(), externalId: z.string() }).strict().nullable(),
139
+ rule: MemberAllowanceRule,
140
+ version: Version
141
+ }).strict()
142
+ );
143
+ var WorkspaceUsageResponse = /* @__PURE__ */ defineSchema(
144
+ () => z.object({
145
+ period: UsageAllowanceWindow,
146
+ workspace: WorkspaceAllowanceUsage,
147
+ members: z.array(MemberAllowanceUsage),
148
+ nextCursor: z.string().nullable()
149
+ }).strict()
150
+ );
151
+ var AllowanceExhaustedRefusal = /* @__PURE__ */ defineSchema(
152
+ () => z.object({
153
+ code: z.literal("allowance_exhausted"),
154
+ scope: z.enum(["workspace", "member"]),
155
+ resetsAt: Timestamp.nullable(),
156
+ subjectId: SubjectId.optional(),
157
+ message: z.string()
158
+ }).strict()
159
+ );
160
+
161
+ export {
162
+ AllowanceCredits,
163
+ MemberAllowanceRule,
164
+ MemberAllowanceDefault,
165
+ UnbilledUsageMetering,
166
+ WorkspaceAllowanceConfig,
167
+ WorkspaceAllowance,
168
+ WorkspaceAllowanceState,
169
+ SetWorkspaceAllowanceRequest,
170
+ ClearWorkspaceAllowanceRequest,
171
+ ClearWorkspaceAllowanceResponse,
172
+ GrantWorkspaceCreditsRequest,
173
+ WorkspaceCreditGrant,
174
+ SetMemberAllowanceRequest,
175
+ MemberAllowance,
176
+ UsageAllowancePeriod,
177
+ GetUsageRequest,
178
+ GetMyUsageRequest,
179
+ UsageAllowanceStatus,
180
+ UsageAllowanceWindow,
181
+ WorkspaceAllowanceUsage,
182
+ MemberAllowanceUsage,
183
+ WorkspaceUsageResponse,
184
+ AllowanceExhaustedRefusal
185
+ };
186
+ //# sourceMappingURL=chunk-TSWWZMUS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/usage-allowances.ts"],"sourcesContent":["import { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\n/** Credit amounts are integer USD micros (1 USD = 1,000,000), never floating-point dollars. */\nexport const AllowanceCredits = /* @__PURE__ */ defineSchema(() =>\n z.number().int().nonnegative().safe(),\n);\nconst Version = /* @__PURE__ */ defineSchema(() => z.number().int().nonnegative().safe());\nconst Timestamp = /* @__PURE__ */ defineSchema(() => z.string().datetime({ offset: true }));\nconst OperationId = /* @__PURE__ */ defineSchema(() =>\n z\n .string()\n .min(1)\n .max(256)\n .refine(\n (value) =>\n value.trim().length > 0 &&\n !value.includes(\"\\0\") &&\n !/[\\uD800-\\uDFFF]/u.test(value) &&\n new TextEncoder().encode(value).byteLength <= 256,\n ),\n);\nconst SubjectId = /* @__PURE__ */ defineSchema(() =>\n z\n .string()\n .min(1)\n .max(1024)\n .refine((value) => !value.includes(\"\\0\")),\n);\n\n/**\n * A share scales with the current workspace pool, including unexpired grants.\n * Shares may exceed 1 and their sum may exceed 1: they are ceilings, not reserved\n * allocations. Concurrent/in-flight calls can overshoot a ceiling; enforcement\n * happens before the next call, after actual usage is settled.\n * null removes the override and uses the workspace's memberDefault.\n */\nexport const MemberAllowanceRule = /* @__PURE__ */ defineSchema(() =>\n z.union([\n z.object({ share: z.number().finite().nonnegative() }).strict(),\n z.object({ credits: AllowanceCredits }).strict(),\n z.null(),\n ]),\n);\nexport type MemberAllowanceRule = z.infer<typeof MemberAllowanceRule>;\n\nexport const MemberAllowanceDefault = /* @__PURE__ */ defineSchema(() =>\n z.union([\n z.enum([\"none\", \"equal_share\"]),\n z.object({ share: z.number().finite().nonnegative() }).strict(),\n z.object({ credits: AllowanceCredits }).strict(),\n ]),\n);\nexport type MemberAllowanceDefault = z.infer<typeof MemberAllowanceDefault>;\n\nconst Thresholds = /* @__PURE__ */ defineSchema(() =>\n z.array(z.number().finite().positive().max(1)).max(16),\n);\n/**\n * How model calls that spend no Opengeni credits count: subscription\n * connections, workspace-owned keys and deployments without credit billing.\n * \"ignore\" (the default) keeps the allowance credit-only. \"list_price\" counts\n * each such call at its configured list-price estimate in USD micros and\n * admits those turns against the allowance; calls without a list price are\n * not counted.\n */\nexport const UnbilledUsageMetering = /* @__PURE__ */ defineSchema(() =>\n z.enum([\"ignore\", \"list_price\"]),\n);\nexport type UnbilledUsageMetering = z.infer<typeof UnbilledUsageMetering>;\n/** Omitted threshold lists default to [0.8, 1]. Monthly boundaries are UTC. */\nexport const WorkspaceAllowanceConfig = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n includedCredits: AllowanceCredits,\n period: z.enum([\"monthly\", \"none\"]),\n anchorDay: z.number().int().min(1).max(31).optional(),\n memberDefault: MemberAllowanceDefault.optional(),\n thresholds: z\n .object({ workspace: Thresholds.optional(), member: Thresholds.optional() })\n .strict()\n .optional(),\n unbilledUsage: UnbilledUsageMetering.optional(),\n })\n .strict(),\n);\nexport type WorkspaceAllowanceConfig = z.infer<typeof WorkspaceAllowanceConfig>;\n\nexport const WorkspaceAllowance = /* @__PURE__ */ defineSchema(() =>\n WorkspaceAllowanceConfig.extend({ version: Version.min(1) }),\n);\nexport type WorkspaceAllowance = z.infer<typeof WorkspaceAllowance>;\n/**\n * Lifecycle version survives clear. version=0 means never configured; a null\n * config with a positive version is cleared. Use this version for recreation.\n * The existing nullable configuration read remains unchanged.\n */\nexport const WorkspaceAllowanceState = /* @__PURE__ */ defineSchema(() =>\n z\n .object({ version: Version, config: WorkspaceAllowance.nullable() })\n .strict()\n .refine((state) => state.config === null || state.config.version === state.version, {\n message: \"Allowance configuration and lifecycle versions must match\",\n path: [\"config\", \"version\"],\n }),\n);\nexport type WorkspaceAllowanceState = z.infer<typeof WorkspaceAllowanceState>;\nexport const SetWorkspaceAllowanceRequest = /* @__PURE__ */ defineSchema(() =>\n WorkspaceAllowanceConfig.extend({\n expectedVersion: Version,\n }),\n);\nexport type SetWorkspaceAllowanceRequest = z.infer<typeof SetWorkspaceAllowanceRequest>;\n/** Reuse operationId and the exact expectedVersion to recover a lost clear\n * receipt. A later lifecycle change conflicts; read the state before deciding\n * on a new mutation, never guess a version or change it for a retry. */\nexport const ClearWorkspaceAllowanceRequest = /* @__PURE__ */ defineSchema(() =>\n z.object({ expectedVersion: Version.min(1), operationId: OperationId.optional() }).strict(),\n);\nexport type ClearWorkspaceAllowanceRequest = z.infer<typeof ClearWorkspaceAllowanceRequest>;\nexport const ClearWorkspaceAllowanceResponse = /* @__PURE__ */ defineSchema(() =>\n z.object({ version: Version.min(1) }).strict(),\n);\nexport type ClearWorkspaceAllowanceResponse = z.infer<typeof ClearWorkspaceAllowanceResponse>;\n\n/** Reuse the operationId and exact request to recover an uncertain grant response. */\nexport const GrantWorkspaceCreditsRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n operationId: OperationId,\n credits: AllowanceCredits.positive(),\n expiresAt: Timestamp.nullable().optional(),\n })\n .strict(),\n);\nexport type GrantWorkspaceCreditsRequest = z.infer<typeof GrantWorkspaceCreditsRequest>;\nexport const WorkspaceCreditGrant = /* @__PURE__ */ defineSchema(() =>\n GrantWorkspaceCreditsRequest.extend({\n remaining: AllowanceCredits,\n expiresAt: Timestamp.nullable(),\n }),\n);\nexport type WorkspaceCreditGrant = z.infer<typeof WorkspaceCreditGrant>;\n\nexport const SetMemberAllowanceRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n rule: MemberAllowanceRule,\n expectedVersion: Version,\n })\n .strict(),\n);\nexport type SetMemberAllowanceRequest = z.infer<typeof SetMemberAllowanceRequest>;\nexport const MemberAllowance = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n subjectId: SubjectId,\n rule: MemberAllowanceRule,\n version: Version,\n })\n .strict(),\n);\nexport type MemberAllowance = z.infer<typeof MemberAllowance>;\n\nexport const UsageAllowancePeriod = /* @__PURE__ */ defineSchema(() =>\n z.union([z.literal(\"current\"), z.string().regex(/^\\d{4}-(0[1-9]|1[0-2])$/)]),\n);\nexport type UsageAllowancePeriod = z.infer<typeof UsageAllowancePeriod>;\nexport const GetUsageRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n period: UsageAllowancePeriod.optional(),\n limit: z.number().int().min(1).max(200).optional(),\n cursor: z.string().min(1).max(2048).optional(),\n })\n .strict(),\n);\nexport type GetUsageRequest = z.infer<typeof GetUsageRequest>;\nexport const GetMyUsageRequest = /* @__PURE__ */ defineSchema(() =>\n GetUsageRequest.pick({ period: true }),\n);\nexport type GetMyUsageRequest = z.infer<typeof GetMyUsageRequest>;\n\nexport const UsageAllowanceStatus = /* @__PURE__ */ defineSchema(() =>\n z.enum([\"ok\", \"warning\", \"exhausted\"]),\n);\nexport type UsageAllowanceStatus = z.infer<typeof UsageAllowanceStatus>;\nexport const UsageAllowanceWindow = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n start: Timestamp.nullable(),\n end: Timestamp.nullable(),\n })\n .strict(),\n);\nexport type UsageAllowanceWindow = z.infer<typeof UsageAllowanceWindow>;\nconst Usage = /* @__PURE__ */ defineSchema(() =>\n z.object({\n limit: AllowanceCredits.nullable(),\n used: AllowanceCredits,\n remaining: z.number().int().safe().nullable(),\n /** Display this ratio rather than raw USD micros in human-facing products. */\n fraction: z.number().finite().nonnegative().nullable(),\n status: UsageAllowanceStatus,\n resetsAt: Timestamp.nullable(),\n }),\n);\nexport const WorkspaceAllowanceUsage = /* @__PURE__ */ defineSchema(() =>\n Usage.extend({\n includedCredits: AllowanceCredits,\n grantsRemaining: AllowanceCredits,\n }).strict(),\n);\nexport type WorkspaceAllowanceUsage = z.infer<typeof WorkspaceAllowanceUsage>;\nexport const MemberAllowanceUsage = /* @__PURE__ */ defineSchema(() =>\n Usage.extend({\n subjectId: SubjectId,\n externalIdentity: z.object({ source: z.string(), externalId: z.string() }).strict().nullable(),\n rule: MemberAllowanceRule,\n version: Version,\n }).strict(),\n);\nexport type MemberAllowanceUsage = z.infer<typeof MemberAllowanceUsage>;\n/** /usage/me returns only the authenticated subject's member row, never the roster. */\nexport const WorkspaceUsageResponse = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n period: UsageAllowanceWindow,\n workspace: WorkspaceAllowanceUsage,\n members: z.array(MemberAllowanceUsage),\n nextCursor: z.string().nullable(),\n })\n .strict(),\n);\nexport type WorkspaceUsageResponse = z.infer<typeof WorkspaceUsageResponse>;\n\nexport const AllowanceExhaustedRefusal = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n code: z.literal(\"allowance_exhausted\"),\n scope: z.enum([\"workspace\", \"member\"]),\n resetsAt: Timestamp.nullable(),\n subjectId: SubjectId.optional(),\n message: z.string(),\n })\n .strict(),\n);\nexport type AllowanceExhaustedRefusal = z.infer<typeof AllowanceExhaustedRefusal>;\n"],"mappings":"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","names":[]}
@@ -26,4 +26,4 @@ export {
26
26
  EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,
27
27
  EDITABLE_ARTIFACT_LIVE_WIRE_VERSION
28
28
  };
29
- //# sourceMappingURL=chunk-PX3VCKAU.js.map
29
+ //# sourceMappingURL=chunk-WVCFSOUZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/editable-artifact-versions.ts"],"sourcesContent":["/** Modality-specific durable semantic/schema versions. */\nexport const SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION = 2 as const;\nexport const DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\n\n/** Direct kernel workbook snapshot version (OGARTK02), never the durable CRDT snapshot. */\nexport const SPREADSHEET_KERNEL_SNAPSHOT_VERSION = 2 as const;\n\n/** Modality-specific canonical snapshot versions. */\nexport const DOCUMENT_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\n\n/** Canonical internal spreadsheet kernel command-envelope version. */\nexport const SPREADSHEET_KERNEL_COMMAND_VERSION = 2 as const;\n\n/** Canonical public, identity-free spreadsheet command-envelope version. */\nexport const SPREADSHEET_ARTIFACT_COMMAND_VERSION = 2 as const;\n\n/** Canonical durable spreadsheet collaboration-snapshot version. */\nexport const SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION = 2 as const;\n\n/** Canonical committed spreadsheet transaction protocol version. */\nexport const COMMITTED_TRANSACTION_PROTOCOL_VERSION = 2 as const;\n\n/** Canonical document/presentation serialized-commit protocol version. */\nexport const EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION = 1 as const;\n\n/** Canonical editable-artifact live transport protocol version. */\nexport const EDITABLE_ARTIFACT_LIVE_WIRE_VERSION = 2 as const;\n"],"mappings":";AACO,IAAM,4CAA4C;AAClD,IAAM,yCAAyC;AAC/C,IAAM,6CAA6C;AAGnD,IAAM,sCAAsC;AAG5C,IAAM,qCAAqC;AAC3C,IAAM,yCAAyC;AAG/C,IAAM,qCAAqC;AAG3C,IAAM,uCAAuC;AAG7C,IAAM,6CAA6C;AAGnD,IAAM,yCAAyC;AAG/C,IAAM,8CAA8C;AAGpD,IAAM,sCAAsC;","names":[]}
1
+ {"version":3,"sources":["../src/editable-artifact-versions.ts"],"sourcesContent":["/**\n * Modality-specific durable semantic/schema versions.\n * Spreadsheet dimensions are an additive current-schema extension: existing\n * command/operation tags and dimension-free snapshot bytes stay unchanged.\n * Direct snapshots and private projections advertise their explicit extension\n * flags; old executables reject new tags/flags, never silently discard them.\n */\nexport const SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION = 2 as const;\nexport const DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION = 1 as const;\n\n/** Direct kernel workbook snapshot version (OGARTK02), never the durable CRDT snapshot. */\nexport const SPREADSHEET_KERNEL_SNAPSHOT_VERSION = 2 as const;\n\n/** Modality-specific canonical snapshot versions. */\nexport const DOCUMENT_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\nexport const PRESENTATION_ARTIFACT_SNAPSHOT_VERSION = 1 as const;\n\n/** Canonical internal spreadsheet kernel command-envelope version. */\nexport const SPREADSHEET_KERNEL_COMMAND_VERSION = 2 as const;\n\n/** Canonical public, identity-free spreadsheet command-envelope version. */\nexport const SPREADSHEET_ARTIFACT_COMMAND_VERSION = 2 as const;\n\n/** Canonical durable spreadsheet collaboration-snapshot version. */\nexport const SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION = 2 as const;\n\n/** Canonical committed spreadsheet transaction protocol version. */\nexport const COMMITTED_TRANSACTION_PROTOCOL_VERSION = 2 as const;\n\n/** Canonical document/presentation serialized-commit protocol version. */\nexport const EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION = 1 as const;\n\n/** Canonical editable-artifact live transport protocol version. */\nexport const EDITABLE_ARTIFACT_LIVE_WIRE_VERSION = 2 as const;\n"],"mappings":";AAOO,IAAM,4CAA4C;AAClD,IAAM,yCAAyC;AAC/C,IAAM,6CAA6C;AAGnD,IAAM,sCAAsC;AAG5C,IAAM,qCAAqC;AAC3C,IAAM,yCAAyC;AAG/C,IAAM,qCAAqC;AAG3C,IAAM,uCAAuC;AAG7C,IAAM,6CAA6C;AAGnD,IAAM,yCAAyC;AAG/C,IAAM,8CAA8C;AAGpD,IAAM,sCAAsC;","names":[]}
@@ -0,0 +1,127 @@
1
+ import {
2
+ defineSchema
3
+ } from "./chunk-56SNIMDO.js";
4
+
5
+ // src/prepared-mcp-setup.ts
6
+ import { z } from "zod";
7
+ var fieldId = /* @__PURE__ */ defineSchema(
8
+ () => z.string().regex(/^[A-Za-z][A-Za-z0-9_]{0,63}$/)
9
+ );
10
+ var headerName = /* @__PURE__ */ defineSchema(
11
+ () => z.string().min(1).max(256).regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/)
12
+ );
13
+ var headerPart = /* @__PURE__ */ defineSchema(
14
+ () => z.string().max(16384).regex(/^[^\r\n\0]*$/)
15
+ );
16
+ var PreparedMcpSetup = /* @__PURE__ */ defineSchema(
17
+ () => z.object({
18
+ name: z.string().trim().min(1).max(256),
19
+ endpointUrl: z.string().url().max(2048).refine((value) => {
20
+ try {
21
+ const url = new URL(value);
22
+ return url.protocol === "https:" && !url.username && !url.password && !url.search && !url.hash;
23
+ } catch {
24
+ return false;
25
+ }
26
+ }, "Use an HTTPS endpoint without credentials, query parameters, or a fragment"),
27
+ headers: z.array(
28
+ z.union([
29
+ z.object({ name: headerName, value: headerPart.min(1) }).strict(),
30
+ z.object({
31
+ name: headerName,
32
+ secret: fieldId,
33
+ prefix: headerPart.optional(),
34
+ suffix: headerPart.optional()
35
+ }).strict()
36
+ ])
37
+ ).min(1).max(32),
38
+ secretFields: z.array(z.object({ id: fieldId, label: z.string().trim().min(1).max(256) }).strict()).max(32)
39
+ }).strict().superRefine((value, context) => {
40
+ const names = value.headers.map((header) => header.name.toLowerCase());
41
+ const ids = value.secretFields.map((field) => field.id);
42
+ if (new Set(names).size !== names.length)
43
+ context.addIssue({
44
+ code: "custom",
45
+ path: ["headers"],
46
+ message: "Header names must be unique"
47
+ });
48
+ if (new Set(ids).size !== ids.length)
49
+ context.addIssue({
50
+ code: "custom",
51
+ path: ["secretFields"],
52
+ message: "Secret field IDs must be unique"
53
+ });
54
+ const used = new Set(
55
+ value.headers.flatMap((header) => "secret" in header ? [header.secret] : [])
56
+ );
57
+ if (used.size !== ids.length || ids.some((id) => !used.has(id)))
58
+ context.addIssue({
59
+ code: "custom",
60
+ path: ["secretFields"],
61
+ message: "Declare exactly the secret fields used by the headers"
62
+ });
63
+ for (const [index, header] of value.headers.entries()) {
64
+ if ("value" in header && ["authorization", "proxy-authorization", "cookie", "x-api-key", "api-key"].includes(
65
+ header.name.toLowerCase()
66
+ ))
67
+ context.addIssue({
68
+ code: "custom",
69
+ path: ["headers", index],
70
+ message: "Credential headers must reference a protected secret field"
71
+ });
72
+ }
73
+ })
74
+ );
75
+ var CustomMcpSetupRequest = /* @__PURE__ */ defineSchema(
76
+ () => z.object({
77
+ kind: z.literal("mcp"),
78
+ name: z.string().trim().min(1).max(256),
79
+ endpointUrl: z.string().url().max(2048).refine((value) => {
80
+ try {
81
+ const url = new URL(value);
82
+ return url.protocol === "https:" && !url.username && !url.password && !url.hash && !url.search;
83
+ } catch {
84
+ return false;
85
+ }
86
+ }),
87
+ rationale: z.string().trim().min(1).max(2e3),
88
+ ownership: z.enum(["personal", "workspace"]).optional(),
89
+ mcpSetup: PreparedMcpSetup.optional()
90
+ }).strict().superRefine((value, context) => {
91
+ if (Boolean(value.ownership) !== Boolean(value.mcpSetup))
92
+ context.addIssue({ code: "custom", message: "Prepared setup requires explicit ownership" });
93
+ if (value.mcpSetup && (value.name !== value.mcpSetup.name || value.endpointUrl !== value.mcpSetup.endpointUrl))
94
+ context.addIssue({
95
+ code: "custom",
96
+ message: "Prepared setup must match the displayed server"
97
+ });
98
+ })
99
+ );
100
+ function preparedMcpHeaders(configuration, values) {
101
+ const setup = PreparedMcpSetup.parse(configuration);
102
+ const supplied = Object.keys(values);
103
+ if (supplied.length !== setup.secretFields.length || setup.secretFields.some((field) => !Object.hasOwn(values, field.id)) || supplied.some((key) => {
104
+ const value = values[key];
105
+ return typeof value !== "string" || value.length === 0 || value.length > 16384 || /[\r\n\0]/.test(value);
106
+ }))
107
+ throw new Error("Supply exactly the requested secret fields");
108
+ const headers = {};
109
+ for (const header of setup.headers) {
110
+ const value = "value" in header ? header.value : `${header.prefix ?? ""}${values[header.secret]}${header.suffix ?? ""}`;
111
+ if (value.length > 16384) throw new Error("Prepared credential header is too long");
112
+ Object.defineProperty(headers, header.name, {
113
+ value,
114
+ enumerable: true,
115
+ configurable: true,
116
+ writable: true
117
+ });
118
+ }
119
+ return headers;
120
+ }
121
+
122
+ export {
123
+ PreparedMcpSetup,
124
+ CustomMcpSetupRequest,
125
+ preparedMcpHeaders
126
+ };
127
+ //# sourceMappingURL=chunk-XDLAGX66.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/prepared-mcp-setup.ts"],"sourcesContent":["import { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nconst fieldId = /* @__PURE__ */ defineSchema(() =>\n z.string().regex(/^[A-Za-z][A-Za-z0-9_]{0,63}$/),\n);\nconst headerName = /* @__PURE__ */ defineSchema(() =>\n z\n .string()\n .min(1)\n .max(256)\n .regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/),\n);\nconst headerPart = /* @__PURE__ */ defineSchema(() =>\n z\n .string()\n .max(16_384)\n .regex(/^[^\\r\\n\\0]*$/),\n);\n\n/** Configuration is safe to retain; secret values enter only the protected\n * Connect credential request, never this model-visible setup description. */\nexport const PreparedMcpSetup = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n name: z.string().trim().min(1).max(256),\n endpointUrl: z\n .string()\n .url()\n .max(2048)\n .refine((value) => {\n try {\n const url = new URL(value);\n return (\n url.protocol === \"https:\" &&\n !url.username &&\n !url.password &&\n !url.search &&\n !url.hash\n );\n } catch {\n return false;\n }\n }, \"Use an HTTPS endpoint without credentials, query parameters, or a fragment\"),\n headers: z\n .array(\n z.union([\n z.object({ name: headerName, value: headerPart.min(1) }).strict(),\n z\n .object({\n name: headerName,\n secret: fieldId,\n prefix: headerPart.optional(),\n suffix: headerPart.optional(),\n })\n .strict(),\n ]),\n )\n .min(1)\n .max(32),\n secretFields: z\n .array(z.object({ id: fieldId, label: z.string().trim().min(1).max(256) }).strict())\n .max(32),\n })\n .strict()\n .superRefine((value, context) => {\n const names = value.headers.map((header) => header.name.toLowerCase());\n const ids = value.secretFields.map((field) => field.id);\n if (new Set(names).size !== names.length)\n context.addIssue({\n code: \"custom\",\n path: [\"headers\"],\n message: \"Header names must be unique\",\n });\n if (new Set(ids).size !== ids.length)\n context.addIssue({\n code: \"custom\",\n path: [\"secretFields\"],\n message: \"Secret field IDs must be unique\",\n });\n const used = new Set(\n value.headers.flatMap((header) => (\"secret\" in header ? [header.secret] : [])),\n );\n if (used.size !== ids.length || ids.some((id) => !used.has(id)))\n context.addIssue({\n code: \"custom\",\n path: [\"secretFields\"],\n message: \"Declare exactly the secret fields used by the headers\",\n });\n for (const [index, header] of value.headers.entries()) {\n if (\n \"value\" in header &&\n [\"authorization\", \"proxy-authorization\", \"cookie\", \"x-api-key\", \"api-key\"].includes(\n header.name.toLowerCase(),\n )\n )\n context.addIssue({\n code: \"custom\",\n path: [\"headers\", index],\n message: \"Credential headers must reference a protected secret field\",\n });\n }\n }),\n);\nexport type PreparedMcpSetup = z.infer<typeof PreparedMcpSetup>;\n\n/** A missing-key proposal retains configuration only. Ownership is explicit\n * and the displayed identity must equal the destination actually configured. */\nexport const CustomMcpSetupRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n kind: z.literal(\"mcp\"),\n name: z.string().trim().min(1).max(256),\n endpointUrl: z\n .string()\n .url()\n .max(2048)\n .refine((value) => {\n try {\n const url = new URL(value);\n return (\n url.protocol === \"https:\" &&\n !url.username &&\n !url.password &&\n !url.hash &&\n !url.search\n );\n } catch {\n return false;\n }\n }),\n rationale: z.string().trim().min(1).max(2000),\n ownership: z.enum([\"personal\", \"workspace\"]).optional(),\n mcpSetup: PreparedMcpSetup.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (Boolean(value.ownership) !== Boolean(value.mcpSetup))\n context.addIssue({ code: \"custom\", message: \"Prepared setup requires explicit ownership\" });\n if (\n value.mcpSetup &&\n (value.name !== value.mcpSetup.name || value.endpointUrl !== value.mcpSetup.endpointUrl)\n )\n context.addIssue({\n code: \"custom\",\n message: \"Prepared setup must match the displayed server\",\n });\n }),\n);\nexport type CustomMcpSetupRequest = z.infer<typeof CustomMcpSetupRequest>;\n\n/** Values are intentionally accepted separately. Errors name neither supplied\n * values nor undeclared input keys, which may themselves contain credentials. */\nexport function preparedMcpHeaders(\n configuration: PreparedMcpSetup,\n values: Readonly<Record<string, string>>,\n): Record<string, string> {\n const setup = PreparedMcpSetup.parse(configuration);\n const supplied = Object.keys(values);\n if (\n supplied.length !== setup.secretFields.length ||\n setup.secretFields.some((field) => !Object.hasOwn(values, field.id)) ||\n supplied.some((key) => {\n const value = values[key];\n return (\n typeof value !== \"string\" ||\n value.length === 0 ||\n value.length > 16_384 ||\n /[\\r\\n\\0]/.test(value)\n );\n })\n )\n throw new Error(\"Supply exactly the requested secret fields\");\n const headers: Record<string, string> = {};\n for (const header of setup.headers) {\n const value =\n \"value\" in header\n ? header.value\n : `${header.prefix ?? \"\"}${values[header.secret]}${header.suffix ?? \"\"}`;\n if (value.length > 16_384) throw new Error(\"Prepared credential header is too long\");\n Object.defineProperty(headers, header.name, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n return headers;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,33 @@
1
+ import {
2
+ defineSchema
3
+ } from "./chunk-56SNIMDO.js";
4
+
5
+ // src/xai-provider-account-authority.ts
6
+ import { z } from "zod";
7
+ var PositiveSafeInteger = /* @__PURE__ */ defineSchema(
8
+ () => z.number().int().positive().max(Number.MAX_SAFE_INTEGER)
9
+ );
10
+ var XaiProviderAccountAuthoritySnapshotV1 = /* @__PURE__ */ defineSchema(
11
+ () => z.discriminatedUnion("scope", [
12
+ z.object({ version: z.literal(1), scope: z.literal("organization") }).strict(),
13
+ z.object({
14
+ version: z.literal(1),
15
+ scope: z.literal("workspace")
16
+ }).strict(),
17
+ z.object({
18
+ version: z.literal(1),
19
+ scope: z.literal("user"),
20
+ authorityGeneration: PositiveSafeInteger
21
+ }).strict()
22
+ ])
23
+ );
24
+ var WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {
25
+ version: 1,
26
+ scope: "workspace"
27
+ };
28
+
29
+ export {
30
+ XaiProviderAccountAuthoritySnapshotV1,
31
+ WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1
32
+ };
33
+ //# sourceMappingURL=chunk-YKZ4WU4P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/xai-provider-account-authority.ts"],"sourcesContent":["import { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nconst PositiveSafeInteger = /* @__PURE__ */ defineSchema(() =>\n z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n);\n\n/**\n * Opaque authority frozen at an xAI provider-account acceptance boundary.\n *\n * This snapshot deliberately carries no organization, membership, credential,\n * provider-account, subject, label, quota, token, or plan identity. User scope\n * becomes executable only after exact live database revalidation against the\n * separately stored causal subject and xAI subscription authority row.\n */\nexport const XaiProviderAccountAuthoritySnapshotV1 = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"scope\", [\n z.object({ version: z.literal(1), scope: z.literal(\"organization\") }).strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"workspace\"),\n })\n .strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"user\"),\n authorityGeneration: PositiveSafeInteger,\n })\n .strict(),\n ]),\n);\n\nexport type XaiProviderAccountAuthoritySnapshotV1 = z.infer<\n typeof XaiProviderAccountAuthoritySnapshotV1\n>;\n\n/** Explicit compatibility value for workspace-default accepted work. */\nexport const WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {\n version: 1,\n scope: \"workspace\",\n} as const satisfies XaiProviderAccountAuthoritySnapshotV1;\n"],"mappings":";;;;;AACA,SAAS,SAAS;AAElB,IAAM,sBAAsC;AAAA,EAAa,MACvD,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,OAAO,gBAAgB;AACzD;AAUO,IAAM,wCAAwD;AAAA,EAAa,MAChF,EAAE,mBAAmB,SAAS;AAAA,IAC5B,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO;AAAA,IAC7E,EACG,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,CAAC;AAAA,MACpB,OAAO,EAAE,QAAQ,WAAW;AAAA,IAC9B,CAAC,EACA,OAAO;AAAA,IACV,EACG,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,CAAC;AAAA,MACpB,OAAO,EAAE,QAAQ,MAAM;AAAA,MACvB,qBAAqB;AAAA,IACvB,CAAC,EACA,OAAO;AAAA,EACZ,CAAC;AACH;AAOO,IAAM,uDAAuD;AAAA,EAClE,SAAS;AAAA,EACT,OAAO;AACT;","names":[]}
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-NVJMJWLL.js";
7
7
  import {
8
8
  editableArtifactCodecFor
9
- } from "./chunk-5LYFSZ7O.js";
9
+ } from "./chunk-352X6ENP.js";
10
10
  import {
11
11
  DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,
12
12
  DOCUMENT_ARTIFACT_MAX_STRUCTURAL_COUNTER
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-MYBZRDTY.js";
24
24
  import {
25
25
  EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION
26
- } from "./chunk-PX3VCKAU.js";
26
+ } from "./chunk-WVCFSOUZ.js";
27
27
 
28
28
  // src/editable-artifact-serialized-commit.ts
29
29
  import { bytesToHex } from "@noble/hashes/utils";
@@ -380,4 +380,4 @@ export {
380
380
  decodeEditableArtifactSerializedCommit,
381
381
  assertCanonicalEditableArtifactSerializedCommit
382
382
  };
383
- //# sourceMappingURL=chunk-O5LEQHDM.js.map
383
+ //# sourceMappingURL=chunk-Z7WEVGCL.js.map