@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,429 @@
1
+ import { defineSchema } from "./define-schema";
2
+ import { z } from "zod";
3
+ import { ModalRouterProviderCommand } from "./sandbox-provider-command";
4
+
5
+ /** Secret-free descriptions for the NEW native proof protocol. Parsing any
6
+ * value below establishes correlation ONLY. It does not authenticate a host,
7
+ * native response, grant, election, capture, Start, or semantic continuation.
8
+ * Frozen reservation/journal v1 values are never adopted into this protocol. */
9
+ export const MODAL_NATIVE_PROOF_PROTOCOL_VERSION = 2 as const;
10
+ export const MODAL_NATIVE_FRESH_COMPILER_FINGERPRINT =
11
+ "db6d33c8a1142e5ffe3d1a130d8b9f9d819e46832ad0417d41d5606b7fe25ab1" as const;
12
+
13
+ const uuid = /* @__PURE__ */ defineSchema(() =>
14
+ z.string().regex(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/u),
15
+ );
16
+ // Fresh readiness must round-trip through the retained original-command schema.
17
+ // Reuse its exact UUID domain; do not widen it or change the frozen compiler.
18
+ const commandExecId = /* @__PURE__ */ defineSchema(() =>
19
+ uuid.pipe(ModalRouterProviderCommand.shape.execId),
20
+ );
21
+ const positive = /* @__PURE__ */ defineSchema(() => z.number().int().positive().safe());
22
+ const nonnegative = /* @__PURE__ */ defineSchema(() => z.number().int().nonnegative().safe());
23
+ const digest = /* @__PURE__ */ defineSchema(() => z.string().regex(/^[a-f0-9]{64}$/u));
24
+ const empty = /* @__PURE__ */ defineSchema(() => z.object({}).strict());
25
+ const noItems = /* @__PURE__ */ defineSchema(() => z.tuple([]));
26
+ const entrypoint = /* @__PURE__ */ defineSchema(() =>
27
+ z.tuple([z.literal("sleep"), z.literal("infinity")]),
28
+ );
29
+ const sourceSha = "bb830ded1925e1d927d1fc221b2329d961f9a57eafdd9a85bf13fb7cfc982599";
30
+
31
+ /** This entire profile is declared BEFORE even namespace lookup. It is a
32
+ * reviewed literal, not caller-selected defaults or an arbitrary self-hash. */
33
+ export const ModalNativeFreshNormalizationV1 = /* @__PURE__ */ defineSchema(() =>
34
+ z
35
+ .object({
36
+ recipeId: z.literal("modal-native-fresh-v1"),
37
+ recipeRevision: z.literal(1),
38
+ schema: z.literal("modal.client.ModalClient/SandboxCreate"),
39
+ encoding: z.literal("modal-create-json-v1"),
40
+ sdkVersion: z.literal("0.9.0"),
41
+ sdkSourceSha256: z.literal(sourceSha),
42
+ entrypoint,
43
+ createWorkdir: z.literal("/tmp"),
44
+ env: empty,
45
+ mounts: noItems,
46
+ restore: z.null(),
47
+ idleTimeout: z.literal("unset"),
48
+ gpu: z.literal("unset"),
49
+ gpuProto: z
50
+ .object({ type: z.literal(0), count: z.literal(0), gpuType: z.literal("") })
51
+ .strict(),
52
+ cpuLimit: z.literal("unset"),
53
+ memoryLimit: z.literal("unset"),
54
+ pty: z.literal("unset"),
55
+ regions: z.literal("unset"),
56
+ proxy: z.literal("unset"),
57
+ readinessProbe: z.literal("unset"),
58
+ environmentVariables: z.literal("unset"),
59
+ network: z
60
+ .object({
61
+ access: z.literal("OPEN"),
62
+ outboundCidrs: noItems,
63
+ outboundDomains: noItems,
64
+ inboundCidrs: noItems,
65
+ i6pn: z.literal(false),
66
+ })
67
+ .strict(),
68
+ volumes: noItems,
69
+ cloudBucketMounts: noItems,
70
+ secrets: noItems,
71
+ ports: noItems,
72
+ cloud: z.literal(""),
73
+ verbose: z.literal(false),
74
+ includeOidcIdentityToken: z.literal(false),
75
+ experimentalOptions: empty,
76
+ experimentalOptionsV2: empty,
77
+ customDomain: z.literal(""),
78
+ })
79
+ .strict(),
80
+ );
81
+ export type ModalNativeFreshNormalizationV1 = z.infer<typeof ModalNativeFreshNormalizationV1>;
82
+
83
+ function freezeLiteral<T>(value: T): T {
84
+ if (value !== null && typeof value === "object") {
85
+ for (const child of Object.values(value)) freezeLiteral(child);
86
+ Object.freeze(value);
87
+ }
88
+ return value;
89
+ }
90
+
91
+ /** Public, credential-free recipe data. The host must normatively select this
92
+ * literal before I/O; possessing a copy supplies no issuance provenance. */
93
+ export const MODAL_NATIVE_FRESH_NORMALIZATION_V1 = freezeLiteral(
94
+ ModalNativeFreshNormalizationV1.parse({
95
+ recipeId: "modal-native-fresh-v1",
96
+ recipeRevision: 1,
97
+ schema: "modal.client.ModalClient/SandboxCreate",
98
+ encoding: "modal-create-json-v1",
99
+ sdkVersion: "0.9.0",
100
+ sdkSourceSha256: sourceSha,
101
+ entrypoint: ["sleep", "infinity"],
102
+ createWorkdir: "/tmp",
103
+ env: {},
104
+ mounts: [],
105
+ restore: null,
106
+ idleTimeout: "unset",
107
+ gpu: "unset",
108
+ gpuProto: { type: 0, count: 0, gpuType: "" },
109
+ cpuLimit: "unset",
110
+ memoryLimit: "unset",
111
+ pty: "unset",
112
+ regions: "unset",
113
+ proxy: "unset",
114
+ readinessProbe: "unset",
115
+ environmentVariables: "unset",
116
+ network: {
117
+ access: "OPEN",
118
+ outboundCidrs: [],
119
+ outboundDomains: [],
120
+ inboundCidrs: [],
121
+ i6pn: false,
122
+ },
123
+ volumes: [],
124
+ cloudBucketMounts: [],
125
+ secrets: [],
126
+ ports: [],
127
+ cloud: "",
128
+ verbose: false,
129
+ includeOidcIdentityToken: false,
130
+ experimentalOptions: {},
131
+ experimentalOptionsV2: {},
132
+ customDomain: "",
133
+ }),
134
+ );
135
+
136
+ export const ModalNativePreparationRecipeV2 = /* @__PURE__ */ defineSchema(() =>
137
+ z
138
+ .object({
139
+ version: z.literal(1),
140
+ recipeId: z.literal("modal-native-fresh-v1"),
141
+ recipeRevision: z.literal(1),
142
+ createWorkdir: z.literal("/tmp"),
143
+ entrypoint,
144
+ normalization: ModalNativeFreshNormalizationV1,
145
+ compilerFingerprint: z.literal(MODAL_NATIVE_FRESH_COMPILER_FINGERPRINT),
146
+ })
147
+ .strict(),
148
+ );
149
+ export type ModalNativePreparationRecipeV2 = z.infer<typeof ModalNativePreparationRecipeV2>;
150
+
151
+ export const MODAL_NATIVE_PREPARATION_RECIPE_V2 = freezeLiteral(
152
+ ModalNativePreparationRecipeV2.parse({
153
+ version: 1,
154
+ recipeId: "modal-native-fresh-v1",
155
+ recipeRevision: 1,
156
+ createWorkdir: "/tmp",
157
+ entrypoint: ["sleep", "infinity"],
158
+ normalization: MODAL_NATIVE_FRESH_NORMALIZATION_V1,
159
+ compilerFingerprint: MODAL_NATIVE_FRESH_COMPILER_FINGERPRINT,
160
+ }),
161
+ );
162
+
163
+ /** Exactly the old reservation vocabulary, NOT an extension to its keys. */
164
+ export const ModalNativeFreshBlueprintV1 = /* @__PURE__ */ defineSchema(() =>
165
+ z
166
+ .object({
167
+ version: z.literal(1),
168
+ adapterId: z.literal("modal-native-fresh-creator-reservation-v1"),
169
+ create: z
170
+ .object({
171
+ operationId: uuid,
172
+ appId: z.string().regex(/^ap-[A-Za-z0-9_-]{1,200}$/u),
173
+ imageId: z.string().regex(/^im-[A-Za-z0-9_-]{1,200}$/u),
174
+ cpu: z
175
+ .number()
176
+ .positive()
177
+ .max(128)
178
+ .refine(
179
+ (v) =>
180
+ Number.isSafeInteger(Math.trunc(v * 1000)) &&
181
+ Math.trunc(v * 1000) >= 1 &&
182
+ Math.trunc(v * 1000) / 1000 === v,
183
+ ),
184
+ memoryMiB: z.number().int().min(128).max(1048576).safe(),
185
+ timeoutSeconds: z.number().int().min(1).max(86400).safe(),
186
+ env: empty,
187
+ mounts: noItems,
188
+ })
189
+ .strict(),
190
+ restore: z.null(),
191
+ readiness: z
192
+ .object({
193
+ operationId: uuid,
194
+ execId: commandExecId,
195
+ commandArgs: z.tuple([z.literal("/bin/true")]),
196
+ workdir: z.literal("/tmp"),
197
+ env: empty,
198
+ })
199
+ .strict(),
200
+ publishOperationId: uuid,
201
+ cleanup: z
202
+ .object({ operationId: uuid, requires: z.literal("physical-terminal-proof") })
203
+ .strict(),
204
+ })
205
+ .strict(),
206
+ );
207
+ export type ModalNativeFreshBlueprintV1 = z.infer<typeof ModalNativeFreshBlueprintV1>;
208
+
209
+ /** Full pre-election identity. routeEpoch is NOT the physical lease epoch;
210
+ * creatorId is NOT an elected owner or a replacement accepted attempt. */
211
+ export const ModalNativeOriginalScopeV2 = /* @__PURE__ */ defineSchema(() =>
212
+ z
213
+ .object({
214
+ version: z.literal(2),
215
+ declarationId: uuid,
216
+ planId: uuid,
217
+ creatorId: uuid,
218
+ accountId: uuid,
219
+ workspaceId: uuid,
220
+ sessionId: uuid,
221
+ turnId: uuid,
222
+ attemptId: uuid,
223
+ executionGeneration: positive,
224
+ triggerEventId: uuid,
225
+ sandboxGroupId: uuid,
226
+ routeKind: z.literal("home"),
227
+ routeTargetId: z.null(),
228
+ routeEpoch: nonnegative,
229
+ })
230
+ .strict()
231
+ .refine((v) => v.creatorId !== v.attemptId && v.creatorId !== v.planId, {
232
+ message: "A declared creator is distinct from the accepted attempt and plan",
233
+ }),
234
+ );
235
+ export type ModalNativeOriginalScopeV2 = z.infer<typeof ModalNativeOriginalScopeV2>;
236
+
237
+ /** References must resolve through the complete protected scope/config join.
238
+ * They are neither credentials nor canonical/native authentication receipts. */
239
+ export const ModalNativeConfigurationCaptureRefV2 = /* @__PURE__ */ defineSchema(() =>
240
+ z.object({ id: uuid, revision: positive }).strict(),
241
+ );
242
+ export type ModalNativeConfigurationCaptureRefV2 = z.infer<
243
+ typeof ModalNativeConfigurationCaptureRefV2
244
+ >;
245
+ export const ModalNativeProofGrantRefV2 = /* @__PURE__ */ defineSchema(() =>
246
+ z.object({ id: uuid, epoch: positive }).strict(),
247
+ );
248
+ export type ModalNativeProofGrantRefV2 = z.infer<typeof ModalNativeProofGrantRefV2>;
249
+ export const ModalNativeReservedLeaseRefV2 = /* @__PURE__ */ defineSchema(() =>
250
+ z.object({ id: uuid, epoch: nonnegative }).strict(),
251
+ );
252
+ export type ModalNativeReservedLeaseRefV2 = z.infer<typeof ModalNativeReservedLeaseRefV2>;
253
+
254
+ export const ModalNativePreparationDeclarationV2 = /* @__PURE__ */ defineSchema(() =>
255
+ z
256
+ .object({
257
+ version: z.literal(2),
258
+ scope: ModalNativeOriginalScopeV2,
259
+ blueprint: ModalNativeFreshBlueprintV1,
260
+ preparationRecipe: ModalNativePreparationRecipeV2,
261
+ configurationCaptureRef: ModalNativeConfigurationCaptureRefV2,
262
+ proofGrantRef: ModalNativeProofGrantRefV2,
263
+ providerRecoveryCount: z.union([
264
+ z.literal(0),
265
+ z.literal(1),
266
+ z.literal(2),
267
+ z.literal(3),
268
+ z.literal(4),
269
+ z.literal(5),
270
+ ]),
271
+ namespaceState: z.literal("unbound"),
272
+ })
273
+ .strict()
274
+ .superRefine((v, ctx) => {
275
+ const ids = [
276
+ v.scope.planId,
277
+ v.scope.creatorId,
278
+ v.blueprint.create.operationId,
279
+ v.blueprint.readiness.operationId,
280
+ v.blueprint.readiness.execId,
281
+ v.blueprint.publishOperationId,
282
+ v.blueprint.cleanup.operationId,
283
+ ];
284
+ if (new Set(ids).size !== 7)
285
+ ctx.addIssue({
286
+ code: "custom",
287
+ message: "All seven supplied operation identities must be distinct",
288
+ });
289
+ }),
290
+ );
291
+ export type ModalNativePreparationDeclarationV2 = z.infer<
292
+ typeof ModalNativePreparationDeclarationV2
293
+ >;
294
+
295
+ const safeEndpoint = /* @__PURE__ */ defineSchema(() =>
296
+ z
297
+ .string()
298
+ .url()
299
+ .max(1024)
300
+ .refine(
301
+ (v) => {
302
+ try {
303
+ const url = new URL(v);
304
+ return (
305
+ url.protocol === "https:" && !url.username && !url.password && !url.search && !url.hash
306
+ );
307
+ } catch {
308
+ return false;
309
+ }
310
+ },
311
+ { message: "Only a credential-free captured HTTPS endpoint is supported" },
312
+ ),
313
+ );
314
+
315
+ /** Separate bind-once append, linked to the SAME captured configuration and
316
+ * claim. This deliberately has no invented immutable provider-principal ID.
317
+ * Only a trusted native issuer + authenticated host ingress can attest it. */
318
+ export const ModalNativeNamespaceEvidenceV2 = /* @__PURE__ */ defineSchema(() =>
319
+ z
320
+ .object({
321
+ version: z.literal(2),
322
+ scope: ModalNativeOriginalScopeV2,
323
+ configurationCaptureRef: ModalNativeConfigurationCaptureRefV2,
324
+ proofGrantRef: ModalNativeProofGrantRefV2,
325
+ claimId: uuid,
326
+ nonce: uuid,
327
+ claimRevision: positive,
328
+ recordRevision: positive,
329
+ captureId: uuid,
330
+ purpose: z.literal("original-namespace-read"),
331
+ reservation: ModalNativeReservedLeaseRefV2,
332
+ source: z.literal("modal-client-workspace-name-lookup-v1"),
333
+ responseField: z.enum(["workspaceName", "username"]),
334
+ binding: z
335
+ .object({
336
+ version: z.literal(1),
337
+ serverUrl: safeEndpoint,
338
+ workspaceName: z.string().min(1).max(200),
339
+ environment: z.string().max(200),
340
+ })
341
+ .strict(),
342
+ })
343
+ .strict(),
344
+ );
345
+ export type ModalNativeNamespaceEvidenceV2 = z.infer<typeof ModalNativeNamespaceEvidenceV2>;
346
+
347
+ const claimFields = {
348
+ version: z.literal(2),
349
+ scope: ModalNativeOriginalScopeV2,
350
+ configurationCaptureRef: ModalNativeConfigurationCaptureRefV2,
351
+ proofGrantRef: ModalNativeProofGrantRefV2,
352
+ claimId: uuid,
353
+ nonce: uuid,
354
+ claimRevision: positive,
355
+ recordRevision: positive,
356
+ captureId: uuid,
357
+ expiresAt: z.string().datetime(),
358
+ };
359
+
360
+ /** Scheduling custody ONLY. No lease/task grant is fabricated to authorize
361
+ * this prerequisite lookup. A reserved lease supplies exclusion, not effects. */
362
+ export const ModalNativeNamespaceReadClaimV2 = /* @__PURE__ */ defineSchema(() =>
363
+ z
364
+ .object({
365
+ ...claimFields,
366
+ purpose: z.literal("original-namespace-read"),
367
+ reservation: ModalNativeReservedLeaseRefV2,
368
+ })
369
+ .strict(),
370
+ );
371
+ export type ModalNativeNamespaceReadClaimV2 = z.infer<typeof ModalNativeNamespaceReadClaimV2>;
372
+
373
+ /** Exact original router command and authoritative prior cursors; no retarget,
374
+ * new TaskGet adoption, legacy locator, PTY, Start, stdin or process-cancel API. */
375
+ export const ModalNativeOriginalCommandReadClaimV2 = /* @__PURE__ */ defineSchema(() =>
376
+ z
377
+ .object({
378
+ ...claimFields,
379
+ purpose: z.literal("original-readiness-read"),
380
+ reservation: ModalNativeReservedLeaseRefV2,
381
+ physicalOwnerGeneration: positive,
382
+ operationId: uuid,
383
+ providerBindingKey: z.string().min(1).max(1024),
384
+ command: ModalRouterProviderCommand.refine((v) => v.pty !== true),
385
+ })
386
+ .strict(),
387
+ );
388
+ export type ModalNativeOriginalCommandReadClaimV2 = z.infer<
389
+ typeof ModalNativeOriginalCommandReadClaimV2
390
+ >;
391
+
392
+ /** Preserve the actual runtime descriptor's encoding/fingerprint domain. This
393
+ * is passive protobuf PREFLIGHT, not the RPC's transmitted bytes or permission. */
394
+ export const ModalNativePreparedStartDescriptionV1 = /* @__PURE__ */ defineSchema(() =>
395
+ z
396
+ .object({
397
+ taskId: z.string().min(1).max(200),
398
+ execId: commandExecId,
399
+ descriptorProtocol: z.literal("modal-prepared-start-descriptor"),
400
+ descriptorVersion: z.literal(1),
401
+ readinessRecipe: z.literal("modal-exec-readiness-bin-true-v1"),
402
+ readinessRecipeVersion: z.literal(1),
403
+ startMessage: z.literal("Start"),
404
+ rpcMethod: z.literal("/modal.task_command_router.TaskCommandRouter/TaskExecStart"),
405
+ encoderVersion: z.literal("protobufjs@7.6.5"),
406
+ preflight: z
407
+ .object({
408
+ encoding: z.literal("modal-start-protobuf-preflight-v1"),
409
+ sha256: digest,
410
+ byteLength: positive.max(1024 * 1024),
411
+ encoderFingerprint: z.string().regex(/^sha256:[a-f0-9]{64}$/u),
412
+ })
413
+ .strict(),
414
+ })
415
+ .strict(),
416
+ );
417
+ export type ModalNativePreparedStartDescriptionV1 = z.infer<
418
+ typeof ModalNativePreparedStartDescriptionV1
419
+ >;
420
+
421
+ /** Host/native acquisition objects are intentionally NOT constructed here.
422
+ * Raw DTOs, copied refs and any schema-success result cannot mint those objects.
423
+ * Capture needs issuer-authenticated OWN bytes, the exact original claim and a
424
+ * durable capture key; unknown ACK reconciles that same key/acquisition. */
425
+ export type ModalNativeProofCaptureStatusV2 =
426
+ | { status: "committed"; captureId: string; receiptId: string; recordRevision: number }
427
+ | { status: "absent_fenced"; captureId: string }
428
+ | { status: "conflict"; captureId: string }
429
+ | { status: "unresolved"; captureId: string };
@@ -0,0 +1,177 @@
1
+ import { defineSchema } from "./define-schema";
2
+ import { z } from "zod";
3
+ import { LatencyMode, ReasoningEffort } from "./index";
4
+
5
+ /**
6
+ * A person's explicit model-account choice for a session and their own
7
+ * personal preferences (contract SUB-SEL-02, SUB-SEL-04, SUB-ELIG-05,
8
+ * SUB-OWN-05, D-24, D-27 and D-28), for every provider on the shared
9
+ * subscription core.
10
+ *
11
+ * The picker lists the shared accounts of the workspace's pool and the
12
+ * caller's own personal accounts (never another person's). A personal
13
+ * account can be chosen only by its owner, in their private session or
14
+ * Personal workspace, or for their own newly accepted sends in a shared
15
+ * session, while personal accounts are allowed there. Choosing never widens
16
+ * already accepted work; the database enforces the same authority boundary.
17
+ */
18
+ const ProviderId = /* @__PURE__ */ defineSchema(() => z.string().regex(/^[a-z][a-z0-9_]{1,31}$/));
19
+
20
+ /** Why a listed account cannot be chosen for this session. */
21
+ export const ModelAccountChoiceRefusal = /* @__PURE__ */ defineSchema(() =>
22
+ z.enum([
23
+ "inactive",
24
+ "personal_not_allowed",
25
+ "personal_not_owner_work",
26
+ /** The session has no owner (for example a scheduled run started with an API key). */
27
+ "session_has_no_owner",
28
+ ]),
29
+ );
30
+ export type ModelAccountChoiceRefusal = z.infer<typeof ModelAccountChoiceRefusal>;
31
+
32
+ /**
33
+ * Stored observation only, not a live check or a promise of available capacity.
34
+ * Source/time describe the snapshot, not each retained window. Windows can be
35
+ * partial, unknown or stale; a past reset does not prove replenishment.
36
+ */
37
+ export const ModelAccountUsageSnapshot = /* @__PURE__ */ defineSchema(() =>
38
+ z.object({
39
+ observedAt: z.string().datetime().nullable(),
40
+ source: z.enum(["usage_endpoint", "response_headers", "refusal"]).nullable(),
41
+ windows: z.array(
42
+ z.object({
43
+ id: z.string(),
44
+ /** Null means unknown; values over 100 can represent overage. */
45
+ usedPercent: z.number().finite().nonnegative().nullable(),
46
+ resetsAt: z.string().datetime().nullable(),
47
+ status: z.enum(["ok", "warning", "exhausted", "unknown"]),
48
+ }),
49
+ ),
50
+ exhaustedUntil: z.string().datetime().nullable(),
51
+ exhaustedKind: z.enum(["quota", "rate_limit"]).nullable(),
52
+ }),
53
+ );
54
+ export type ModelAccountUsageSnapshot = z.infer<typeof ModelAccountUsageSnapshot>;
55
+
56
+ export const ModelAccountChoiceOption = /* @__PURE__ */ defineSchema(() =>
57
+ z.object({
58
+ provider: ProviderId,
59
+ connectionId: z.string().uuid(),
60
+ label: z.string().nullable(),
61
+ accountEmail: z.string().nullable(),
62
+ planType: z.string().nullable(),
63
+ status: z.string(),
64
+ /** The caller's own personal account. */
65
+ personal: z.boolean(),
66
+ /** The workspace pool a shared account belongs to, or `personal`. */
67
+ source: z.enum(["workspace", "organization", "personal"]),
68
+ /** Models the account may serve (null: every model the provider offers). */
69
+ allowedModelIds: z.array(z.string()).nullable(),
70
+ choosable: z.boolean(),
71
+ refusal: ModelAccountChoiceRefusal.nullable(),
72
+ /** Omitted on older servers; null when this visible account has no decodable snapshot. */
73
+ usage: ModelAccountUsageSnapshot.nullable().optional(),
74
+ }),
75
+ );
76
+ export type ModelAccountChoiceOption = z.infer<typeof ModelAccountChoiceOption>;
77
+
78
+ /** A session's binding for one provider: its explicit choice or its automatic placement. */
79
+ const SessionModelAccountBinding = /* @__PURE__ */ defineSchema(() =>
80
+ z.object({
81
+ provider: ProviderId,
82
+ connectionId: z.string().uuid().nullable(),
83
+ choice: z.enum(["explicit", "automatic"]),
84
+ }),
85
+ );
86
+
87
+ /** Last lease-backed selection, not a queued choice or an unplaced proposal. */
88
+ export const SessionModelAccountServing = /* @__PURE__ */ defineSchema(() =>
89
+ z.object({
90
+ turnId: z.string().uuid(),
91
+ provider: ProviderId,
92
+ connectionId: z.string().uuid().nullable(),
93
+ modelId: z.string().min(1),
94
+ preferredModelId: z.string().min(1),
95
+ reasoningEffort: z.lazy(() => ReasoningEffort),
96
+ latencyMode: z.lazy(() => LatencyMode),
97
+ }),
98
+ );
99
+ export type SessionModelAccountServing = z.infer<typeof SessionModelAccountServing>;
100
+
101
+ export const SessionModelAccountChoiceResponse = /* @__PURE__ */ defineSchema(() =>
102
+ z.object({
103
+ /**
104
+ * The session's current account when it has bindings for one provider
105
+ * only: `explicit` after a person's choice, else the account automatic
106
+ * placement last used. Null when it has none, or bindings for several
107
+ * providers (see `bindings`). `connectionId` is null when the caller may
108
+ * not see that account.
109
+ */
110
+ binding: SessionModelAccountBinding.nullable(),
111
+ /** One binding per provider: a session keeps each provider's choice separately. */
112
+ bindings: z.array(SessionModelAccountBinding),
113
+ /** Omitted by older servers. Account identity is withheld under the same visibility rule. */
114
+ serving: SessionModelAccountServing.nullable().optional(),
115
+ accounts: z.array(ModelAccountChoiceOption),
116
+ personal: z.object({
117
+ /** Personal accounts are allowed in this workspace (effective setting). */
118
+ connectionsAllowed: z.boolean(),
119
+ /** Personal fallback is allowed in this workspace (effective setting). */
120
+ fallbackAllowed: z.boolean(),
121
+ /** The caller's own personal-fallback opt-in. */
122
+ fallbackOptIn: z.boolean(),
123
+ }),
124
+ }),
125
+ );
126
+ export type SessionModelAccountChoiceResponse = z.infer<typeof SessionModelAccountChoiceResponse>;
127
+
128
+ /**
129
+ * A connection makes it the session's choice for that connection's provider;
130
+ * other providers' choices stay. `connectionId: null` returns the session to
131
+ * automatic account selection: only `provider`'s choice when given, else
132
+ * every provider's.
133
+ */
134
+ export const SetSessionModelAccountChoiceRequest = /* @__PURE__ */ defineSchema(() =>
135
+ z
136
+ .object({ connectionId: z.string().uuid().nullable(), provider: ProviderId.optional() })
137
+ .strict(),
138
+ );
139
+ export type SetSessionModelAccountChoiceRequest = z.infer<
140
+ typeof SetSessionModelAccountChoiceRequest
141
+ >;
142
+
143
+ export const SetSessionModelAccountChoiceResponse = /* @__PURE__ */ defineSchema(() =>
144
+ z.object({
145
+ changed: z.boolean(),
146
+ /** A waiting turn re-places now; otherwise the choice applies from the next turn. */
147
+ appliedTo: z.enum(["waiting_turn", "next_turn"]),
148
+ provider: ProviderId.nullable(),
149
+ connectionId: z.string().uuid().nullable(),
150
+ choice: z.enum(["explicit", "automatic"]),
151
+ }),
152
+ );
153
+ export type SetSessionModelAccountChoiceResponse = z.infer<
154
+ typeof SetSessionModelAccountChoiceResponse
155
+ >;
156
+
157
+ export const ModelAccountPreferences = /* @__PURE__ */ defineSchema(() =>
158
+ z.object({
159
+ /** Use my personal accounts when every shared account is exhausted, where allowed. */
160
+ personalFallbackOptIn: z.boolean(),
161
+ /** 0 before any preference was saved; pass it back as `expectedVersion`. */
162
+ version: z.number().int().nonnegative(),
163
+ }),
164
+ );
165
+ export type ModelAccountPreferences = z.infer<typeof ModelAccountPreferences>;
166
+
167
+ export const UpdateModelAccountPreferencesRequest = /* @__PURE__ */ defineSchema(() =>
168
+ z
169
+ .object({
170
+ personalFallbackOptIn: z.boolean(),
171
+ expectedVersion: z.number().int().nonnegative().optional(),
172
+ })
173
+ .strict(),
174
+ );
175
+ export type UpdateModelAccountPreferencesRequest = z.infer<
176
+ typeof UpdateModelAccountPreferencesRequest
177
+ >;