@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
@@ -1,358 +1,163 @@
1
+ import { defineSchema } from "./define-schema";
1
2
  import { z } from "zod";
2
- import {
3
- ConnectionKind,
4
- ManagedUserResourceGrantMode,
5
- SessionTenancyVisibility,
6
- UserResourceAuthorityGrant,
7
- UserResourceDelegation,
8
- } from "./index";
3
+ import { ConnectionKind, SessionTenancyVisibility } from "./index";
9
4
 
10
- /** The only generic grant action that authorizes use of a connection. */
11
- export const ConnectionUseAction = z.literal("connection.use");
12
- export type ConnectionUseAction = z.infer<typeof ConnectionUseAction>;
13
-
14
- /**
15
- * Connection authority is either workspace-owned or user-owned. Omission is
16
- * intentionally compatible with the historical workspace connection path.
17
- */
18
- export const ConnectionAuthorityEnvelope = z
19
- .object({
20
- scope: z.enum(["workspace", "user"]).default("workspace"),
21
- userDelegation: UserResourceDelegation.optional(),
22
- })
23
- .strict()
24
- .superRefine((value, context) => {
25
- if (value.scope === "workspace" && value.userDelegation !== undefined) {
26
- context.addIssue({
27
- code: "custom",
28
- path: ["userDelegation"],
29
- message: "workspace connections cannot carry user delegation",
30
- });
31
- return;
32
- }
33
- if (value.scope === "user" && value.userDelegation === undefined) {
34
- context.addIssue({
35
- code: "custom",
36
- path: ["userDelegation"],
37
- message: "user connections require an immutable delegation",
38
- });
39
- return;
40
- }
41
- if (value.userDelegation && value.userDelegation.action !== ConnectionUseAction.value) {
42
- context.addIssue({
43
- code: "custom",
44
- path: ["userDelegation", "action"],
45
- message: "connection delegation must use connection.use",
46
- });
47
- }
48
- });
49
- export type ConnectionAuthorityEnvelope = z.infer<typeof ConnectionAuthorityEnvelope>;
50
-
51
- export const ConnectionAuthorityGrant = UserResourceAuthorityGrant.extend({
52
- action: ConnectionUseAction,
53
- }).strict();
54
- export type ConnectionAuthorityGrant = z.infer<typeof ConnectionAuthorityGrant>;
55
-
56
- /** Owner-only opaque projection; connection identity and owner metadata stay server-side. */
57
- export const ConnectionAuthoritySummary = z
58
- .object({
59
- authorityId: z.string().uuid(),
60
- resourceId: z.string().uuid(),
61
- originWorkspaceId: z.string().uuid().nullable(),
62
- generation: z.number().int().positive(),
63
- status: z.enum(["active", "retained", "revoked"]),
64
- grants: z.array(ConnectionAuthorityGrant),
65
- })
66
- .strict();
67
- export type ConnectionAuthoritySummary = z.infer<typeof ConnectionAuthoritySummary>;
68
-
69
- export const ListConnectionAuthoritiesQuery = z
70
- .object({
71
- scope: z.literal("user"),
72
- cursor: z.string().uuid().optional(),
73
- limit: z.coerce.number().int().min(1).max(100).default(50),
74
- })
75
- .strict();
76
- export const ListConnectionAuthoritiesResponse = z
77
- .object({
78
- scope: z.literal("user"),
79
- authorities: z.array(ConnectionAuthoritySummary),
80
- nextCursor: z.string().uuid().nullable(),
81
- })
82
- .strict();
83
-
84
- export const IssueConnectionUseGrantRequest = z
85
- .object({
86
- scope: z.literal("user"),
87
- mode: ManagedUserResourceGrantMode,
88
- context: SessionTenancyVisibility,
89
- sessionId: z.string().uuid().nullable().optional(),
90
- expectedAuthorityEpoch: z.number().int().positive().nullable().optional(),
91
- workspaceSharedAcknowledged: z.boolean().default(false),
92
- })
93
- .strict()
94
- .superRefine((value, context) => {
95
- if (value.context === "workspace_shared" && !value.workspaceSharedAcknowledged) {
96
- context.addIssue({
97
- code: "custom",
98
- path: ["workspaceSharedAcknowledged"],
99
- message: "workspace_shared requires durable shared-output acknowledgement",
100
- });
101
- }
102
- if (value.mode === "always" && (value.sessionId || value.expectedAuthorityEpoch)) {
103
- context.addIssue({ code: "custom", path: ["sessionId"], message: "always is unbound" });
104
- }
105
- if (value.mode === "session" && (!value.sessionId || !value.expectedAuthorityEpoch)) {
106
- context.addIssue({
107
- code: "custom",
108
- path: ["sessionId"],
109
- message: "session requires a target session and expectedAuthorityEpoch",
110
- });
111
- }
112
- });
113
- export type IssueConnectionUseGrantRequest = z.infer<typeof IssueConnectionUseGrantRequest>;
114
-
115
- export const RevokeConnectionUseGrantQuery = z.object({ scope: z.literal("user") }).strict();
5
+ export const ConnectionAuthoritySelectionSource = /* @__PURE__ */ defineSchema(() =>
6
+ z.enum(["explicit_workspace", "sender"]),
7
+ );
8
+ export type ConnectionAuthoritySelectionSource = z.infer<typeof ConnectionAuthoritySelectionSource>;
116
9
 
117
- export const ConnectionUseGrantMutationResponse = z
118
- .object({
119
- scope: z.literal("user"),
120
- grant: ConnectionAuthorityGrant,
121
- })
122
- .strict();
123
- export type ConnectionUseGrantMutationResponse = z.infer<typeof ConnectionUseGrantMutationResponse>;
10
+ export const ConnectionUseSelectionSource = /* @__PURE__ */ defineSchema(() =>
11
+ z
12
+ .string()
13
+ .min(1)
14
+ .max(128)
15
+ .regex(/^[a-z0-9](?:[a-z0-9._:-]*[a-z0-9])?$/u),
16
+ );
17
+ export type ConnectionUseSelectionSource = z.infer<typeof ConnectionUseSelectionSource>;
124
18
 
125
- export const ConnectionUseGrantRevocationResponse = z
126
- .object({
127
- scope: z.literal("user"),
128
- grant: z
19
+ const AcceptedConnectionWork = /* @__PURE__ */ defineSchema(() =>
20
+ z.discriminatedUnion("kind", [
21
+ z
129
22
  .object({
130
- grantId: z.string().uuid(),
131
- generation: z.number().int().positive(),
132
- status: z.literal("revoked"),
133
- revokedAt: z.string().datetime(),
23
+ kind: z.literal("turn"),
24
+ turnId: z.string().uuid(),
134
25
  })
135
26
  .strict(),
136
- })
137
- .strict();
138
- export type ConnectionUseGrantRevocationResponse = z.infer<
139
- typeof ConnectionUseGrantRevocationResponse
140
- >;
141
-
142
- export const ConnectionAuthoritySelectionSource = z.enum([
143
- "explicit_workspace",
144
- "legacy_workspace_omission",
145
- "legacy_user_compatibility",
146
- "user_delegation",
147
- ]);
148
- export type ConnectionAuthoritySelectionSource = z.infer<typeof ConnectionAuthoritySelectionSource>;
149
-
150
- export const ConnectionUseSelectionSource = z
151
- .string()
152
- .min(1)
153
- .max(128)
154
- .regex(/^[a-z0-9](?:[a-z0-9._:-]*[a-z0-9])?$/u);
155
- export type ConnectionUseSelectionSource = z.infer<typeof ConnectionUseSelectionSource>;
156
-
157
- const AcceptedConnectionWork = z.discriminatedUnion("kind", [
158
- z
159
- .object({
160
- kind: z.literal("turn"),
161
- turnId: z.string().uuid(),
162
- })
163
- .strict(),
164
- z
165
- .object({
166
- kind: z.literal("scheduled_task"),
167
- taskId: z.string().uuid(),
168
- taskAuthorityRevision: z.number().int().positive(),
169
- runId: z.string().uuid(),
170
- })
171
- .strict(),
172
- ]);
27
+ z
28
+ .object({
29
+ kind: z.literal("scheduled_task"),
30
+ taskId: z.string().uuid(),
31
+ taskAuthorityRevision: z.number().int().positive(),
32
+ runId: z.string().uuid(),
33
+ })
34
+ .strict(),
35
+ ]),
36
+ );
173
37
 
174
38
  /**
175
39
  * Internal, credential-free authority frozen when work is accepted. Personal
176
40
  * owner identity is retained only for live authorization and usage/audit
177
41
  * attribution; it is never part of the public delegation envelope.
178
42
  */
179
- export const ConnectionUseAuthoritySnapshot = z
180
- .object({
181
- organizationId: z.string().uuid(),
182
- originWorkspaceId: z.string().uuid(),
183
- targetWorkspaceId: z.string().uuid(),
184
- targetSessionId: z.string().uuid(),
185
- targetSessionVisibility: SessionTenancyVisibility,
186
- targetSessionAuthorityEpoch: z.number().int().positive(),
187
- acceptedWork: AcceptedConnectionWork,
188
- connectionId: z.string().uuid(),
189
- connectionGeneration: z.number().int().positive(),
190
- connectionStatus: z.literal("active"),
191
- providerDomain: z.string().min(1).max(2048),
192
- connectionKind: ConnectionKind,
193
- scope: z.enum(["workspace", "user", "legacy_user"]),
194
- ownerSubjectId: z.string().min(1).max(512).nullable(),
195
- ownerOrganizationMembershipId: z.string().uuid().nullable(),
196
- ownerMembershipAuthorizationRevision: z.number().int().positive().nullable().default(null),
197
- authoritySource: ConnectionAuthoritySelectionSource,
198
- selectionSources: z.array(ConnectionUseSelectionSource).min(1).max(128),
199
- userDelegation: UserResourceDelegation.nullable(),
200
- })
201
- .strict()
202
- .superRefine((value, context) => {
203
- const ownedBySubject = value.scope !== "workspace";
204
- const delegated = value.scope === "user";
205
- if (ownedBySubject !== (value.ownerSubjectId !== null)) {
206
- context.addIssue({
207
- code: "custom",
208
- path: ["ownerSubjectId"],
209
- message: "personal connections retain an owner subject",
210
- });
211
- }
212
- if (delegated !== (value.ownerOrganizationMembershipId !== null)) {
213
- context.addIssue({
214
- code: "custom",
215
- path: ["ownerOrganizationMembershipId"],
216
- message: "only user connections retain an owner membership",
217
- });
218
- }
219
- if (delegated !== (value.ownerMembershipAuthorizationRevision !== null)) {
220
- context.addIssue({
221
- code: "custom",
222
- path: ["ownerMembershipAuthorizationRevision"],
223
- message: "only user connections retain an owner membership revision",
224
- });
225
- }
226
- if (delegated !== (value.userDelegation !== null)) {
227
- context.addIssue({
228
- code: "custom",
229
- path: ["userDelegation"],
230
- message: "only user connections retain a delegation",
231
- });
232
- }
233
- if (delegated && value.authoritySource !== "user_delegation") {
234
- context.addIssue({
235
- code: "custom",
236
- path: ["authoritySource"],
237
- message: "user connections require user_delegation provenance",
238
- });
239
- }
240
- if (!delegated && value.authoritySource === "user_delegation") {
241
- context.addIssue({
242
- code: "custom",
243
- path: ["authoritySource"],
244
- message: "non-delegated connections cannot claim user delegation provenance",
245
- });
246
- }
247
- if (value.scope === "legacy_user" && value.authoritySource !== "legacy_user_compatibility") {
248
- context.addIssue({
249
- code: "custom",
250
- path: ["authoritySource"],
251
- message: "legacy user connections require explicit compatibility provenance",
252
- });
253
- }
254
- if (value.scope === "workspace" && value.authoritySource === "legacy_user_compatibility") {
255
- context.addIssue({
256
- code: "custom",
257
- path: ["authoritySource"],
258
- message: "workspace connections cannot claim legacy user provenance",
259
- });
260
- }
261
- if (!delegated && value.originWorkspaceId !== value.targetWorkspaceId) {
262
- context.addIssue({
263
- code: "custom",
264
- path: ["originWorkspaceId"],
265
- message: "workspace connections must be owned by the target workspace",
266
- });
267
- }
268
- const delegation = value.userDelegation;
269
- if (!delegation) return;
270
- const exactFacts: Array<[boolean, (string | number)[], string]> = [
271
- [
272
- delegation.organizationId === value.organizationId,
273
- ["userDelegation", "organizationId"],
274
- "delegation organization mismatch",
275
- ],
276
- [
277
- delegation.workspaceId === value.targetWorkspaceId,
278
- ["userDelegation", "workspaceId"],
279
- "delegation target workspace mismatch",
280
- ],
281
- [
282
- delegation.action === ConnectionUseAction.value,
283
- ["userDelegation", "action"],
284
- "delegation action mismatch",
285
- ],
286
- [
287
- delegation.context === value.targetSessionVisibility,
288
- ["userDelegation", "context"],
289
- "delegation visibility mismatch",
290
- ],
291
- ];
292
- for (const [matches, path, message] of exactFacts) {
293
- if (!matches) context.addIssue({ code: "custom", path, message });
294
- }
295
- if (delegation.sessionId !== null && delegation.sessionId !== value.targetSessionId) {
296
- context.addIssue({
297
- code: "custom",
298
- path: ["userDelegation", "sessionId"],
299
- message: "delegation session mismatch",
300
- });
301
- }
302
- if (
303
- delegation.authorityEpoch !== null &&
304
- delegation.authorityEpoch !== value.targetSessionAuthorityEpoch
305
- ) {
306
- context.addIssue({
307
- code: "custom",
308
- path: ["userDelegation", "authorityEpoch"],
309
- message: "delegation authority epoch mismatch",
310
- });
311
- }
312
- });
43
+ export const ConnectionUseAuthoritySnapshot = /* @__PURE__ */ defineSchema(() =>
44
+ z
45
+ .object({
46
+ organizationId: z.string().uuid(),
47
+ originWorkspaceId: z.string().uuid(),
48
+ targetWorkspaceId: z.string().uuid(),
49
+ targetSessionId: z.string().uuid(),
50
+ targetSessionVisibility: SessionTenancyVisibility,
51
+ targetSessionAuthorityEpoch: z.number().int().positive(),
52
+ acceptedWork: AcceptedConnectionWork,
53
+ connectionId: z.string().uuid(),
54
+ connectionGeneration: z.number().int().positive(),
55
+ connectionStatus: z.literal("active"),
56
+ providerDomain: z.string().min(1).max(2048),
57
+ connectionKind: ConnectionKind,
58
+ scope: z.enum(["workspace", "user"]),
59
+ ownerSubjectId: z.string().min(1).max(512).nullable(),
60
+ ownerOrganizationMembershipId: z.string().uuid().nullable(),
61
+ ownerMembershipAuthorizationRevision: z.number().int().positive().nullable().default(null),
62
+ authoritySource: ConnectionAuthoritySelectionSource,
63
+ selectionSources: z.array(ConnectionUseSelectionSource).min(1).max(128),
64
+ userDelegation: z.null(),
65
+ })
66
+ .strict()
67
+ .superRefine((value, context) => {
68
+ const ownedBySubject = value.scope !== "workspace";
69
+ const delegated = value.scope === "user";
70
+ if (ownedBySubject !== (value.ownerSubjectId !== null)) {
71
+ context.addIssue({
72
+ code: "custom",
73
+ path: ["ownerSubjectId"],
74
+ message: "personal connections retain an owner subject",
75
+ });
76
+ }
77
+ if (delegated !== (value.ownerOrganizationMembershipId !== null)) {
78
+ context.addIssue({
79
+ code: "custom",
80
+ path: ["ownerOrganizationMembershipId"],
81
+ message: "only user connections retain an owner membership",
82
+ });
83
+ }
84
+ if (delegated !== (value.ownerMembershipAuthorizationRevision !== null)) {
85
+ context.addIssue({
86
+ code: "custom",
87
+ path: ["ownerMembershipAuthorizationRevision"],
88
+ message: "only user connections retain an owner membership revision",
89
+ });
90
+ }
91
+ if (delegated && value.authoritySource !== "sender") {
92
+ context.addIssue({
93
+ code: "custom",
94
+ path: ["authoritySource"],
95
+ message: "user connections require authenticated sender provenance",
96
+ });
97
+ }
98
+ if (!delegated && value.authoritySource === "sender") {
99
+ context.addIssue({
100
+ code: "custom",
101
+ path: ["authoritySource"],
102
+ message: "workspace connections cannot claim sender provenance",
103
+ });
104
+ }
105
+ if (!delegated && value.originWorkspaceId !== value.targetWorkspaceId) {
106
+ context.addIssue({
107
+ code: "custom",
108
+ path: ["originWorkspaceId"],
109
+ message: "workspace connections must be owned by the target workspace",
110
+ });
111
+ }
112
+ }),
113
+ );
313
114
  export type ConnectionUseAuthoritySnapshot = z.infer<typeof ConnectionUseAuthoritySnapshot>;
314
115
 
315
- export const ConnectionUseDenialReason = z.enum([
316
- "tenant_mismatch",
317
- "workspace_access_inactive",
318
- "session_inactive",
319
- "session_identity_changed",
320
- "session_visibility_changed",
321
- "session_authority_epoch_changed",
322
- "accepted_attempt_authority_required",
323
- "accepted_snapshot_digest_changed",
324
- "connection_missing",
325
- "connection_identity_changed",
326
- "connection_generation_changed",
327
- "connection_status_inactive",
328
- "connection_owner_changed",
329
- "owner_membership_inactive",
330
- "authority_missing",
331
- "authority_identity_changed",
332
- "authority_generation_changed",
333
- "authority_status_inactive",
334
- "grant_missing",
335
- "grant_identity_changed",
336
- "grant_generation_changed",
337
- "grant_status_inactive",
338
- "grant_expired",
339
- "grant_already_consumed",
340
- ]);
116
+ export const ConnectionUseDenialReason = /* @__PURE__ */ defineSchema(() =>
117
+ z.enum([
118
+ "tenant_mismatch",
119
+ "workspace_access_inactive",
120
+ "session_inactive",
121
+ "session_identity_changed",
122
+ "session_visibility_changed",
123
+ "session_authority_epoch_changed",
124
+ "accepted_attempt_authority_required",
125
+ "accepted_snapshot_digest_changed",
126
+ "connection_missing",
127
+ "connection_identity_changed",
128
+ "connection_generation_changed",
129
+ "connection_status_inactive",
130
+ "connection_owner_changed",
131
+ "owner_membership_inactive",
132
+ "authority_missing",
133
+ "authority_identity_changed",
134
+ "authority_generation_changed",
135
+ "authority_status_inactive",
136
+ "grant_missing",
137
+ "grant_identity_changed",
138
+ "grant_generation_changed",
139
+ "grant_status_inactive",
140
+ "grant_expired",
141
+ "grant_already_consumed",
142
+ ]),
143
+ );
341
144
  export type ConnectionUseDenialReason = z.infer<typeof ConnectionUseDenialReason>;
342
145
 
343
- const ConnectionUseAttributionFields = z
344
- .object({
345
- organizationId: z.string().uuid(),
346
- workspaceId: z.string().uuid(),
347
- sessionId: z.string().uuid(),
348
- connectionId: z.string().uuid(),
349
- connectionGeneration: z.number().int().positive(),
350
- scope: z.enum(["workspace", "user", "legacy_user"]),
351
- ownerSubjectId: z.string().min(1).max(512).nullable(),
352
- authorityId: z.string().uuid().nullable(),
353
- grantId: z.string().uuid().nullable(),
354
- })
355
- .strict();
146
+ const ConnectionUseAttributionFields = /* @__PURE__ */ defineSchema(() =>
147
+ z
148
+ .object({
149
+ organizationId: z.string().uuid(),
150
+ workspaceId: z.string().uuid(),
151
+ sessionId: z.string().uuid(),
152
+ connectionId: z.string().uuid(),
153
+ connectionGeneration: z.number().int().positive(),
154
+ scope: z.enum(["workspace", "user", "legacy_user"]),
155
+ ownerSubjectId: z.string().min(1).max(512).nullable(),
156
+ authorityId: z.string().uuid().nullable(),
157
+ grantId: z.string().uuid().nullable(),
158
+ })
159
+ .strict(),
160
+ );
356
161
 
357
162
  function refineConnectionUseAttribution(
358
163
  value: z.infer<typeof ConnectionUseAttributionFields>,
@@ -370,44 +175,58 @@ function refineConnectionUseAttribution(
370
175
  });
371
176
  }
372
177
  }
373
- const delegated = value.scope === "user";
374
- for (const field of ["authorityId", "grantId"] as const) {
375
- if (delegated !== (value[field] !== null)) {
178
+ const owned = value.scope === "user";
179
+ for (const field of ["authorityId"] as const) {
180
+ if (owned !== (value[field] !== null)) {
376
181
  context.addIssue({
377
182
  code: "custom",
378
183
  path: [field],
379
- message: delegated
380
- ? `delegated personal attribution requires ${field}`
381
- : `non-delegated attribution cannot carry ${field}`,
184
+ message: owned
185
+ ? `personal attribution requires ${field}`
186
+ : `non-personal attribution cannot carry ${field}`,
382
187
  });
383
188
  }
384
189
  }
190
+ if (!owned && value.grantId !== null) {
191
+ context.addIssue({
192
+ code: "custom",
193
+ path: ["grantId"],
194
+ message: "only historical personal attribution can carry a grant",
195
+ });
196
+ }
385
197
  }
386
198
 
387
199
  /** Metadata-only attribution emitted after pre-use authorization. */
388
- export const ConnectionUseAttribution = ConnectionUseAttributionFields.superRefine(
389
- refineConnectionUseAttribution,
200
+ export const ConnectionUseAttribution = /* @__PURE__ */ defineSchema(() =>
201
+ ConnectionUseAttributionFields.extend({
202
+ scope: z.enum(["workspace", "user"]),
203
+ grantId: z.null(),
204
+ }).superRefine(refineConnectionUseAttribution),
390
205
  );
391
206
  export type ConnectionUseAttribution = z.infer<typeof ConnectionUseAttribution>;
392
207
 
393
- export const ConnectionUseAuditFact = ConnectionUseAttributionFields.extend({
394
- outcome: z.enum(["authorized", "denied"]),
395
- denialReason: ConnectionUseDenialReason.nullable(),
396
- occurredAt: z.string().datetime({ offset: true }),
397
- }).superRefine((value, context) => {
398
- refineConnectionUseAttribution(value, context);
399
- if ((value.outcome === "denied") !== (value.denialReason !== null)) {
400
- context.addIssue({
401
- code: "custom",
402
- path: ["denialReason"],
403
- message: "only denied connection use carries a denial reason",
404
- });
405
- }
406
- });
208
+ export const ConnectionUseAuditFact = /* @__PURE__ */ defineSchema(() =>
209
+ ConnectionUseAttributionFields.extend({
210
+ outcome: z.enum(["authorized", "denied"]),
211
+ denialReason: ConnectionUseDenialReason.nullable(),
212
+ occurredAt: z.string().datetime({ offset: true }),
213
+ }).superRefine((value, context) => {
214
+ refineConnectionUseAttribution(value, context);
215
+ if ((value.outcome === "denied") !== (value.denialReason !== null)) {
216
+ context.addIssue({
217
+ code: "custom",
218
+ path: ["denialReason"],
219
+ message: "only denied connection use carries a denial reason",
220
+ });
221
+ }
222
+ }),
223
+ );
407
224
  export type ConnectionUseAuditFact = z.infer<typeof ConnectionUseAuditFact>;
408
225
 
409
- export const ConnectionUseAuthorizationResult = z.discriminatedUnion("status", [
410
- z.object({ status: z.literal("authorized"), attribution: ConnectionUseAttribution }).strict(),
411
- z.object({ status: z.literal("denied"), reason: ConnectionUseDenialReason }).strict(),
412
- ]);
226
+ export const ConnectionUseAuthorizationResult = /* @__PURE__ */ defineSchema(() =>
227
+ z.discriminatedUnion("status", [
228
+ z.object({ status: z.literal("authorized"), attribution: ConnectionUseAttribution }).strict(),
229
+ z.object({ status: z.literal("denied"), reason: ConnectionUseDenialReason }).strict(),
230
+ ]),
231
+ );
413
232
  export type ConnectionUseAuthorizationResult = z.infer<typeof ConnectionUseAuthorizationResult>;