@opengeni/contracts 0.50.0 → 1.0.0

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 (369) hide show
  1. package/dist/agent-authored-durable-text.d.ts +70 -0
  2. package/dist/agent-config.d.ts +869 -0
  3. package/dist/agent-instruction-changes.d.ts +110 -0
  4. package/dist/agent-learning.d.ts +243 -0
  5. package/dist/agent-topology.d.ts +292 -0
  6. package/dist/allowance-refusal.d.ts +9 -0
  7. package/dist/allowance-refusal.js +50 -0
  8. package/dist/allowance-refusal.js.map +1 -0
  9. package/dist/analytics-consent-report.d.ts +19 -0
  10. package/dist/analytics-consent-report.js +10 -0
  11. package/dist/analytics-consent-report.js.map +1 -0
  12. package/dist/api-key-presets.d.ts +19 -0
  13. package/dist/artifact-catalog.d.ts +161 -0
  14. package/dist/artifacts.d.ts +135 -11
  15. package/dist/atlassian-native-retirement.d.ts +16 -0
  16. package/dist/atlassian-native-retirement.js +30 -0
  17. package/dist/atlassian-native-retirement.js.map +1 -0
  18. package/dist/atlassian.d.ts +2 -0
  19. package/dist/atlassian.js +26 -12
  20. package/dist/browser-storage.d.ts +5 -0
  21. package/dist/browser-storage.js +9 -0
  22. package/dist/browser-storage.js.map +1 -0
  23. package/dist/bundled-skills.d.ts +40 -0
  24. package/dist/chunk-2ACYHZFB.js +292 -0
  25. package/dist/chunk-2ACYHZFB.js.map +1 -0
  26. package/dist/chunk-2VORLN2R.js +353 -0
  27. package/dist/chunk-2VORLN2R.js.map +1 -0
  28. package/dist/{chunk-Y3MLSLB4.js → chunk-3SIZGL3O.js} +42 -30
  29. package/dist/chunk-3SIZGL3O.js.map +1 -0
  30. package/dist/chunk-46KLD2UH.js +186 -0
  31. package/dist/chunk-46KLD2UH.js.map +1 -0
  32. package/dist/chunk-4JGHSSB7.js +11 -0
  33. package/dist/chunk-4JGHSSB7.js.map +1 -0
  34. package/dist/{chunk-M5ZGRVIQ.js → chunk-5IXYF6XN.js} +14 -5
  35. package/dist/chunk-5IXYF6XN.js.map +1 -0
  36. package/dist/chunk-BCS7WHCK.js +139 -0
  37. package/dist/chunk-BCS7WHCK.js.map +1 -0
  38. package/dist/chunk-EK7NDGFR.js +128 -0
  39. package/dist/chunk-EK7NDGFR.js.map +1 -0
  40. package/dist/{chunk-5UDNP7AO.js → chunk-FZ6BXQHL.js} +78 -38
  41. package/dist/chunk-FZ6BXQHL.js.map +1 -0
  42. package/dist/{chunk-CM6BMECR.js → chunk-GRG7PHWQ.js} +2 -1
  43. package/dist/chunk-GRG7PHWQ.js.map +1 -0
  44. package/dist/chunk-KHHZTBP7.js +11 -0
  45. package/dist/chunk-KHHZTBP7.js.map +1 -0
  46. package/dist/chunk-KR2V42UZ.js +187 -0
  47. package/dist/chunk-KR2V42UZ.js.map +1 -0
  48. package/dist/chunk-MZLBPKFE.js +168 -0
  49. package/dist/chunk-MZLBPKFE.js.map +1 -0
  50. package/dist/{chunk-LW7OH6CS.js → chunk-NRMCVHAU.js} +6 -5
  51. package/dist/chunk-NRMCVHAU.js.map +1 -0
  52. package/dist/{chunk-TZ6YEYN4.js → chunk-NVJMJWLL.js} +3 -1
  53. package/dist/chunk-NVJMJWLL.js.map +1 -0
  54. package/dist/chunk-O77VSFYZ.js +70 -0
  55. package/dist/chunk-O77VSFYZ.js.map +1 -0
  56. package/dist/chunk-PX3VCKAU.js +29 -0
  57. package/dist/chunk-PX3VCKAU.js.map +1 -0
  58. package/dist/chunk-QR5D2IQC.js +61 -0
  59. package/dist/chunk-QR5D2IQC.js.map +1 -0
  60. package/dist/chunk-RJ76DRPO.js +117 -0
  61. package/dist/chunk-RJ76DRPO.js.map +1 -0
  62. package/dist/chunk-RKX3NQYS.js +28 -0
  63. package/dist/chunk-RKX3NQYS.js.map +1 -0
  64. package/dist/{chunk-JBCIY7QD.js → chunk-SIOU2K4U.js} +45 -22
  65. package/dist/chunk-SIOU2K4U.js.map +1 -0
  66. package/dist/chunk-TSCDAGET.js +75 -0
  67. package/dist/chunk-TSCDAGET.js.map +1 -0
  68. package/dist/{chunk-LSB7GRLG.js → chunk-TXTQIYCV.js} +15 -11
  69. package/dist/chunk-TXTQIYCV.js.map +1 -0
  70. package/dist/chunk-X7ETVO4P.js +26544 -0
  71. package/dist/chunk-X7ETVO4P.js.map +1 -0
  72. package/dist/{chunk-CADSX6UN.js → chunk-Y3KNXVTD.js} +2 -2
  73. package/dist/chunk-YBW5JSA3.js +251 -0
  74. package/dist/chunk-YBW5JSA3.js.map +1 -0
  75. package/dist/chunk-YRXAWWCU.js +45 -0
  76. package/dist/chunk-YRXAWWCU.js.map +1 -0
  77. package/dist/claude-provider-account-authority.d.ts +18 -0
  78. package/dist/claude-subscription-oauth.d.ts +42 -0
  79. package/dist/claude-subscription-usage.d.ts +159 -0
  80. package/dist/client-error-report.d.ts +109 -0
  81. package/dist/client-error-report.js +87 -0
  82. package/dist/client-error-report.js.map +1 -0
  83. package/dist/code-search.d.ts +52 -0
  84. package/dist/code-search.js +40 -0
  85. package/dist/code-search.js.map +1 -0
  86. package/dist/company-brain-governed-writes.d.ts +475 -0
  87. package/dist/company-brain.d.ts +336 -0
  88. package/dist/company-profile.d.ts +566 -0
  89. package/dist/connect.d.ts +325 -0
  90. package/dist/connect.js +191 -0
  91. package/dist/connect.js.map +1 -0
  92. package/dist/connection-account-label.d.ts +2 -0
  93. package/dist/connection-account-label.js +35 -0
  94. package/dist/connection-account-label.js.map +1 -0
  95. package/dist/connection-authority.d.ts +193 -0
  96. package/dist/connection-authority.js +50 -0
  97. package/dist/connection-authority.js.map +1 -0
  98. package/dist/connector-attachments.d.ts +95 -0
  99. package/dist/connector-attachments.js +51 -0
  100. package/dist/connector-attachments.js.map +1 -0
  101. package/dist/connector-tool-permissions.d.ts +73 -0
  102. package/dist/direct-model-provider.d.ts +36 -0
  103. package/dist/editable-artifact-codec-registry.d.ts +16 -7
  104. package/dist/editable-artifact-codec-registry.js +18 -8
  105. package/dist/editable-artifact-committed-transaction.d.ts +2 -2
  106. package/dist/editable-artifact-committed-transaction.js +2 -2
  107. package/dist/editable-artifact-live.d.ts +11 -12
  108. package/dist/editable-artifact-live.js +110 -45
  109. package/dist/editable-artifact-live.js.map +1 -1
  110. package/dist/editable-artifact-serialized-commit.d.ts +2 -1
  111. package/dist/editable-artifact-serialized-commit.js +8 -7
  112. package/dist/editable-artifact-versions.d.ts +20 -5
  113. package/dist/editable-artifact-versions.js +23 -5
  114. package/dist/editable-artifacts.d.ts +2 -0
  115. package/dist/editable-artifacts.js +47 -35
  116. package/dist/external-identities.d.ts +784 -0
  117. package/dist/external-identities.js +44 -0
  118. package/dist/external-identities.js.map +1 -0
  119. package/dist/feedback.d.ts +51 -0
  120. package/dist/github-repository-contracts.d.ts +36 -0
  121. package/dist/github-repository-contracts.js +59 -0
  122. package/dist/github-repository-contracts.js.map +1 -0
  123. package/dist/github-repository.d.ts +14 -0
  124. package/dist/github-repository.js +36 -0
  125. package/dist/github-repository.js.map +1 -0
  126. package/dist/google-drive.d.ts +90 -1
  127. package/dist/google-drive.js +90 -16
  128. package/dist/google-drive.js.map +1 -1
  129. package/dist/governed-learning-activation.d.ts +154 -0
  130. package/dist/governed-learning-evaluator.d.ts +152 -0
  131. package/dist/host-mcp-bindings.d.ts +326 -0
  132. package/dist/host-mcp-bindings.js +252 -0
  133. package/dist/host-mcp-bindings.js.map +1 -0
  134. package/dist/image-generation.d.ts +1 -0
  135. package/dist/index.d.ts +32396 -11386
  136. package/dist/index.js +2198 -164
  137. package/dist/insights-usage.d.ts +877 -0
  138. package/dist/insights-usage.js +509 -0
  139. package/dist/insights-usage.js.map +1 -0
  140. package/dist/interaction.d.ts +344 -0
  141. package/dist/knowledge-entries.d.ts +982 -0
  142. package/dist/knowledge-preparation.d.ts +237 -0
  143. package/dist/knowledge.d.ts +197 -0
  144. package/dist/managed-auth-session-sets.d.ts +241 -0
  145. package/dist/managed-auth-session-sets.js +191 -0
  146. package/dist/managed-auth-session-sets.js.map +1 -0
  147. package/dist/managed-sign-in-methods.d.ts +56 -0
  148. package/dist/managed-sign-in-methods.js +46 -0
  149. package/dist/managed-sign-in-methods.js.map +1 -0
  150. package/dist/mcp-catalog-limits.d.ts +2 -0
  151. package/dist/mcp-endpoint.d.ts +7 -0
  152. package/dist/mcp-endpoint.js +9 -0
  153. package/dist/mcp-endpoint.js.map +1 -0
  154. package/dist/mcp-oauth.d.ts +71 -0
  155. package/dist/modal-native-proof-v2.d.ts +587 -0
  156. package/dist/modal-native-proof-v2.js +37 -0
  157. package/dist/modal-native-proof-v2.js.map +1 -0
  158. package/dist/model-availability.d.ts +15 -0
  159. package/dist/model-connection-access.d.ts +24 -0
  160. package/dist/model-context-inspector.d.ts +329 -0
  161. package/dist/model-display.d.ts +38 -0
  162. package/dist/model-display.js +134 -0
  163. package/dist/model-display.js.map +1 -0
  164. package/dist/model-picker-order.d.ts +25 -0
  165. package/dist/model-picker-order.js +42 -0
  166. package/dist/model-picker-order.js.map +1 -0
  167. package/dist/organization-access.d.ts +231 -0
  168. package/dist/organization-access.js +34 -0
  169. package/dist/organization-access.js.map +1 -0
  170. package/dist/organization-integration-policy.d.ts +27 -0
  171. package/dist/organization-membership-lifecycle.d.ts +1022 -0
  172. package/dist/organization-model-usage.d.ts +146 -0
  173. package/dist/organization-model-usage.js +67 -0
  174. package/dist/organization-model-usage.js.map +1 -0
  175. package/dist/organization-recovery.d.ts +337 -0
  176. package/dist/organization-recovery.js +37 -0
  177. package/dist/organization-recovery.js.map +1 -0
  178. package/dist/organization-usage.d.ts +138 -0
  179. package/dist/permissions.d.ts +54 -0
  180. package/dist/personal-github.d.ts +320 -0
  181. package/dist/personal-github.js +222 -0
  182. package/dist/personal-github.js.map +1 -0
  183. package/dist/plugin-discovery.d.ts +35 -0
  184. package/dist/plugin-discovery.js +7 -0
  185. package/dist/plugin-discovery.js.map +1 -0
  186. package/dist/preference-registry.d.ts +44 -1
  187. package/dist/product-analytics.d.ts +113 -0
  188. package/dist/product-lifecycle-facts.d.ts +73 -0
  189. package/dist/remember.d.ts +350 -0
  190. package/dist/retained-output.d.ts +8 -0
  191. package/dist/sandbox-file-artifacts.d.ts +57 -0
  192. package/dist/sandbox-provider-command.d.ts +113 -0
  193. package/dist/sandbox-recovery.d.ts +146 -0
  194. package/dist/sandbox-snapshots.d.ts +39 -0
  195. package/dist/session-final-reply.d.ts +6 -0
  196. package/dist/session-final-reply.js +9 -0
  197. package/dist/session-final-reply.js.map +1 -0
  198. package/dist/session-goal-reports.d.ts +21 -0
  199. package/dist/session-history-import.d.ts +947 -0
  200. package/dist/session-list-entries.d.ts +4 -0
  201. package/dist/session-list-entries.js +51 -0
  202. package/dist/session-list-entries.js.map +1 -0
  203. package/dist/session-mcp-projections.d.ts +215 -0
  204. package/dist/session-message-search.d.ts +68 -0
  205. package/dist/session-titles.d.ts +68 -0
  206. package/dist/session-titles.js +25 -0
  207. package/dist/session-titles.js.map +1 -0
  208. package/dist/session-topology-primitives.d.ts +22 -0
  209. package/dist/signup-attribution.d.ts +39 -0
  210. package/dist/site-request-headers.test.d.ts +1 -0
  211. package/dist/site-session-http.d.ts +11 -0
  212. package/dist/site-session-http.js +11 -0
  213. package/dist/site-session-http.js.map +1 -0
  214. package/dist/skill-catalog-context.d.ts +7 -0
  215. package/dist/skill-files.d.ts +12 -0
  216. package/dist/skill-metadata.d.ts +9 -0
  217. package/dist/skill-use.d.ts +61 -0
  218. package/dist/skills.d.ts +185 -0
  219. package/dist/slack-bot-scopes.d.ts +46 -21
  220. package/dist/slack-bot-scopes.js +14 -3
  221. package/dist/slack-rest-mcp.d.ts +31 -0
  222. package/dist/slack-rest-mcp.js +19 -0
  223. package/dist/slack-rest-mcp.js.map +1 -0
  224. package/dist/spreadsheet-artifact-commands.d.ts +2 -3
  225. package/dist/spreadsheet-artifact-commands.js +4 -2
  226. package/dist/spreadsheet-artifact-query.js +3 -2
  227. package/dist/subscription-account-pools.d.ts +292 -0
  228. package/dist/task-notes.d.ts +42 -1
  229. package/dist/tool-catalog.d.ts +286 -0
  230. package/dist/tool-result-spill.d.ts +16 -0
  231. package/dist/usage-allowances.d.ts +285 -0
  232. package/dist/usage-allowances.js +49 -0
  233. package/dist/usage-allowances.js.map +1 -0
  234. package/dist/video-generation.d.ts +3 -0
  235. package/dist/video-generation.js +1 -1
  236. package/dist/work-claims.d.ts +411 -0
  237. package/dist/workspace-instruction-policies.d.ts +94 -0
  238. package/dist/workspace-integration-wire.d.ts +36 -0
  239. package/dist/workspace-integration-wire.js +23 -0
  240. package/dist/workspace-integration-wire.js.map +1 -0
  241. package/dist/workspace-integrations.d.ts +948 -0
  242. package/dist/workspace-learning-administration.d.ts +289 -0
  243. package/dist/workspace-learning-policy.d.ts +1 -1
  244. package/dist/workspace-state.d.ts +85 -416
  245. package/dist/xai-provider-account-authority.d.ts +3 -0
  246. package/dist/xai-provider-account-authority.js +1 -1
  247. package/package.json +134 -1
  248. package/src/agent-authored-durable-text.ts +116 -0
  249. package/src/agent-config.ts +1527 -0
  250. package/src/agent-instruction-changes.ts +98 -0
  251. package/src/agent-learning.ts +161 -0
  252. package/src/agent-topology.ts +69 -0
  253. package/src/allowance-refusal.ts +81 -0
  254. package/src/analytics-consent-report.ts +20 -0
  255. package/src/api-key-presets.ts +25 -0
  256. package/src/artifact-catalog.ts +60 -0
  257. package/src/artifacts.ts +146 -18
  258. package/src/atlassian-native-retirement.ts +33 -0
  259. package/src/browser-storage.ts +10 -0
  260. package/src/bundled-skills.ts +73 -0
  261. package/src/claude-provider-account-authority.ts +12 -0
  262. package/src/claude-subscription-oauth.ts +62 -0
  263. package/src/claude-subscription-usage.ts +59 -0
  264. package/src/client-error-report.ts +184 -0
  265. package/src/code-search.ts +105 -0
  266. package/src/company-brain-governed-writes.ts +356 -0
  267. package/src/company-brain.ts +201 -0
  268. package/src/company-profile.ts +167 -1
  269. package/src/connect.ts +202 -0
  270. package/src/connection-account-label.ts +46 -0
  271. package/src/connection-authority.ts +213 -0
  272. package/src/connector-attachments.ts +327 -0
  273. package/src/connector-tool-permissions.ts +60 -0
  274. package/src/direct-model-provider.ts +98 -0
  275. package/src/editable-artifact-codec-registry.ts +55 -17
  276. package/src/editable-artifact-committed-transaction.ts +44 -31
  277. package/src/editable-artifact-live.ts +123 -57
  278. package/src/editable-artifact-serialized-commit.ts +2 -1
  279. package/src/editable-artifact-versions.ts +26 -5
  280. package/src/editable-artifacts.ts +2 -0
  281. package/src/external-identities.ts +285 -0
  282. package/src/feedback.ts +39 -0
  283. package/src/github-repository-contracts.ts +85 -0
  284. package/src/github-repository.ts +59 -0
  285. package/src/google-drive.ts +76 -4
  286. package/src/governed-learning-activation.ts +191 -0
  287. package/src/governed-learning-evaluator.ts +176 -0
  288. package/src/host-mcp-bindings.ts +298 -0
  289. package/src/image-generation.ts +8 -2
  290. package/src/index.ts +7093 -1466
  291. package/src/insights-usage.ts +679 -0
  292. package/src/interaction.ts +220 -5
  293. package/src/knowledge-entries.ts +375 -0
  294. package/src/knowledge-preparation.ts +50 -0
  295. package/src/knowledge.ts +134 -6
  296. package/src/managed-auth-session-sets.ts +253 -0
  297. package/src/managed-sign-in-methods.ts +37 -0
  298. package/src/mcp-catalog-limits.ts +2 -0
  299. package/src/mcp-endpoint.ts +30 -0
  300. package/src/mcp-oauth.ts +66 -0
  301. package/src/modal-native-proof-v2.ts +398 -0
  302. package/src/model-availability.ts +22 -0
  303. package/src/model-connection-access.ts +17 -0
  304. package/src/model-context-inspector.ts +139 -0
  305. package/src/model-display.ts +195 -0
  306. package/src/model-picker-order.ts +97 -0
  307. package/src/organization-access.ts +176 -0
  308. package/src/organization-integration-policy.ts +54 -0
  309. package/src/organization-membership-lifecycle.ts +559 -0
  310. package/src/organization-model-usage.ts +72 -0
  311. package/src/organization-recovery.ts +186 -0
  312. package/src/organization-usage.ts +79 -0
  313. package/src/permissions.ts +58 -0
  314. package/src/personal-github.ts +267 -0
  315. package/src/plugin-discovery.ts +33 -0
  316. package/src/preference-registry.ts +20 -1
  317. package/src/product-analytics.ts +253 -0
  318. package/src/product-lifecycle-facts.ts +121 -0
  319. package/src/remember.ts +243 -0
  320. package/src/retained-output.ts +20 -3
  321. package/src/sandbox-file-artifacts.ts +73 -0
  322. package/src/sandbox-provider-command.ts +82 -0
  323. package/src/sandbox-recovery.ts +116 -0
  324. package/src/sandbox-snapshots.ts +142 -0
  325. package/src/session-final-reply.ts +16 -0
  326. package/src/session-goal-reports.ts +55 -0
  327. package/src/session-history-import.ts +159 -0
  328. package/src/session-list-entries.ts +91 -0
  329. package/src/session-mcp-projections.ts +273 -0
  330. package/src/session-message-search.ts +54 -0
  331. package/src/session-titles.ts +467 -0
  332. package/src/session-topology-primitives.ts +21 -0
  333. package/src/signup-attribution.ts +81 -0
  334. package/src/site-request-headers.test.ts +28 -0
  335. package/src/site-session-http.ts +63 -0
  336. package/src/skill-catalog-context.ts +50 -0
  337. package/src/skill-files.ts +52 -0
  338. package/src/skill-metadata.ts +40 -0
  339. package/src/skill-use.ts +77 -0
  340. package/src/skills.ts +136 -0
  341. package/src/slack-bot-scopes.ts +106 -42
  342. package/src/slack-rest-mcp.ts +194 -0
  343. package/src/spreadsheet-artifact-commands.ts +12 -13
  344. package/src/subscription-account-pools.ts +44 -0
  345. package/src/task-notes.ts +14 -1
  346. package/src/tool-catalog.ts +155 -0
  347. package/src/tool-result-spill.ts +35 -0
  348. package/src/usage-allowances.ts +187 -0
  349. package/src/work-claims.ts +266 -0
  350. package/src/workspace-instruction-policies.ts +31 -0
  351. package/src/workspace-integration-wire.ts +99 -0
  352. package/src/workspace-integrations.ts +640 -0
  353. package/src/workspace-learning-administration.ts +88 -0
  354. package/src/workspace-learning-policy.ts +4 -3
  355. package/src/workspace-state.ts +16 -126
  356. package/src/xai-provider-account-authority.ts +1 -0
  357. package/dist/chunk-5UDNP7AO.js.map +0 -1
  358. package/dist/chunk-BVGIYW7D.js +0 -11
  359. package/dist/chunk-BVGIYW7D.js.map +0 -1
  360. package/dist/chunk-CM6BMECR.js.map +0 -1
  361. package/dist/chunk-JBCIY7QD.js.map +0 -1
  362. package/dist/chunk-LSB7GRLG.js.map +0 -1
  363. package/dist/chunk-LW7OH6CS.js.map +0 -1
  364. package/dist/chunk-M5ZGRVIQ.js.map +0 -1
  365. package/dist/chunk-Q6A7XT2N.js +0 -16734
  366. package/dist/chunk-Q6A7XT2N.js.map +0 -1
  367. package/dist/chunk-TZ6YEYN4.js.map +0 -1
  368. package/dist/chunk-Y3MLSLB4.js.map +0 -1
  369. /package/dist/{chunk-CADSX6UN.js.map → chunk-Y3KNXVTD.js.map} +0 -0
@@ -0,0 +1,253 @@
1
+ import { z } from "zod";
2
+
3
+ export const MANAGED_AUTH_SESSION_SET_MAX_SLOTS = 8 as const;
4
+ export const MANAGED_AUTH_TRANSACTION_TTL_SECONDS = 600 as const;
5
+ export const MANAGED_AUTH_RETURN_INTENT_MAX_BYTES = 2_048 as const;
6
+ export const MANAGED_AUTH_SESSION_SET_API_CONTRACT_HEADER = "x-opengeni-api-contract" as const;
7
+ export const MANAGED_AUTH_SESSION_SET_API_CONTRACT_REVISION =
8
+ "2026-08-personal-only-organization-setup-v1" as const;
9
+
10
+ export const ManagedAuthSessionSetMode = z.enum(["legacy", "dual", "broker"]);
11
+ export type ManagedAuthSessionSetMode = z.infer<typeof ManagedAuthSessionSetMode>;
12
+
13
+ export const ManagedAuthLoginSlotState = z.enum(["active", "reauth_required"]);
14
+ export type ManagedAuthLoginSlotState = z.infer<typeof ManagedAuthLoginSlotState>;
15
+
16
+ export const ManagedAuthVerifiedClaim = z.object({
17
+ kind: z.literal("email"),
18
+ value: z.string().email().max(320),
19
+ });
20
+ export type ManagedAuthVerifiedClaim = z.infer<typeof ManagedAuthVerifiedClaim>;
21
+
22
+ /** Secret-free, browser-safe summary. Provider session ids and tokens never enter this shape. */
23
+ export const ManagedAuthLoginSlot = z.object({
24
+ id: z.string().uuid(),
25
+ displayName: z.string().min(1).max(256),
26
+ verifiedClaim: ManagedAuthVerifiedClaim,
27
+ state: ManagedAuthLoginSlotState,
28
+ });
29
+ export type ManagedAuthLoginSlot = z.infer<typeof ManagedAuthLoginSlot>;
30
+
31
+ export const ManagedAuthSessionSetState = z.enum(["ready", "actor_change_required"]);
32
+ export type ManagedAuthSessionSetState = z.infer<typeof ManagedAuthSessionSetState>;
33
+
34
+ export const ManagedAuthSessionSetProjection = z.object({
35
+ mode: ManagedAuthSessionSetMode,
36
+ generation: z.string().regex(/^[1-9][0-9]*$/),
37
+ actorEpoch: z.string().regex(/^[1-9][0-9]*$/),
38
+ csrfToken: z.string().min(32).max(512),
39
+ selectedSlotId: z.string().uuid().nullable(),
40
+ state: ManagedAuthSessionSetState,
41
+ slots: z.array(ManagedAuthLoginSlot).max(MANAGED_AUTH_SESSION_SET_MAX_SLOTS),
42
+ });
43
+ export type ManagedAuthSessionSetProjection = z.infer<typeof ManagedAuthSessionSetProjection>;
44
+
45
+ export const ManagedAuthOperationIdentity = z.object({
46
+ operationId: z.string().uuid(),
47
+ expectedGeneration: z.string().regex(/^[1-9][0-9]*$/),
48
+ });
49
+ export type ManagedAuthOperationIdentity = z.infer<typeof ManagedAuthOperationIdentity>;
50
+
51
+ export const BootstrapManagedAuthSessionSetRequest = ManagedAuthOperationIdentity;
52
+ export type BootstrapManagedAuthSessionSetRequest = z.infer<
53
+ typeof BootstrapManagedAuthSessionSetRequest
54
+ >;
55
+
56
+ export const ManagedAuthReturnIntent = z
57
+ .string()
58
+ .min(1)
59
+ .superRefine((value, context) => {
60
+ if (new TextEncoder().encode(value).byteLength > MANAGED_AUTH_RETURN_INTENT_MAX_BYTES) {
61
+ context.addIssue({ code: "custom", message: "return intent exceeds its UTF-8 byte limit" });
62
+ }
63
+ if (
64
+ !value.startsWith("/") ||
65
+ value.startsWith("//") ||
66
+ value.includes("?") ||
67
+ value.includes("#") ||
68
+ /[\u0000-\u001f\u007f\\]/.test(value)
69
+ ) {
70
+ context.addIssue({
71
+ code: "custom",
72
+ message: "return intent must be a safe same-origin path",
73
+ });
74
+ return;
75
+ }
76
+ try {
77
+ const parsed = new URL(value, "https://opengeni.invalid");
78
+ const uuid = "[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}";
79
+ const supportedPath = new RegExp(
80
+ `^/(?:sessions/${uuid}|workspaces/${uuid}(?:/sessions(?:/${uuid})?)?)$`,
81
+ "i",
82
+ );
83
+ if (
84
+ parsed.origin !== "https://opengeni.invalid" ||
85
+ parsed.username ||
86
+ parsed.password ||
87
+ parsed.search ||
88
+ parsed.hash ||
89
+ !supportedPath.test(value) ||
90
+ parsed.pathname !== value
91
+ ) {
92
+ context.addIssue({
93
+ code: "custom",
94
+ message: "return intent contains unsafe authority data",
95
+ });
96
+ }
97
+ } catch {
98
+ context.addIssue({
99
+ code: "custom",
100
+ message: "return intent is not a valid same-origin path",
101
+ });
102
+ }
103
+ });
104
+
105
+ export const BeginManagedAuthLoginTransactionRequest = ManagedAuthOperationIdentity.extend({
106
+ kind: z.enum(["add", "reauth"]),
107
+ slotId: z.string().uuid().optional(),
108
+ returnIntent: ManagedAuthReturnIntent.optional(),
109
+ }).superRefine((value, context) => {
110
+ if ((value.kind === "reauth") !== Boolean(value.slotId)) {
111
+ context.addIssue({
112
+ code: "custom",
113
+ path: ["slotId"],
114
+ message: "reauth requires exactly one slot id and add forbids one",
115
+ });
116
+ }
117
+ });
118
+ export type BeginManagedAuthLoginTransactionRequest = z.infer<
119
+ typeof BeginManagedAuthLoginTransactionRequest
120
+ >;
121
+
122
+ export const ManagedAuthLoginTransaction = z.object({
123
+ id: z.string().uuid(),
124
+ kind: z.enum(["add", "reauth"]),
125
+ expiresAt: z.string().datetime(),
126
+ returnIntentId: z.string().uuid().nullable(),
127
+ });
128
+ export type ManagedAuthLoginTransaction = z.infer<typeof ManagedAuthLoginTransaction>;
129
+
130
+ export const ManagedAuthSocialProvider = z.enum(["google", "github"]);
131
+ export type ManagedAuthSocialProvider = z.infer<typeof ManagedAuthSocialProvider>;
132
+
133
+ /**
134
+ * Mirrors `SignupAttribution` from `./signup-attribution` (a contract test pins
135
+ * them together). Declared here, not imported, so the browser session-set
136
+ * client does not pull the attribution module into a new shared web chunk.
137
+ */
138
+ const SocialStartAttributionValue = z
139
+ .string()
140
+ .trim()
141
+ .min(1)
142
+ .max(100)
143
+ .regex(/^[A-Za-z0-9._~+-]+$/);
144
+ const SocialStartAttribution = z
145
+ .object({
146
+ utmSource: SocialStartAttributionValue.optional(),
147
+ utmMedium: SocialStartAttributionValue.optional(),
148
+ utmCampaign: SocialStartAttributionValue.optional(),
149
+ utmContent: SocialStartAttributionValue.optional(),
150
+ ref: SocialStartAttributionValue.optional(),
151
+ })
152
+ .strict();
153
+
154
+ export const StartManagedAuthSocialTransactionRequest = ManagedAuthOperationIdentity.extend({
155
+ transactionId: z.string().uuid(),
156
+ provider: ManagedAuthSocialProvider,
157
+ /**
158
+ * Optional untrusted first-touch campaign tokens, used only by the
159
+ * content-free sign-up acquisition counter when this start creates a new
160
+ * account. Invalid attribution is dropped rather than failing the sign-in.
161
+ */
162
+ attribution: SocialStartAttribution.optional().catch(undefined),
163
+ });
164
+ export type StartManagedAuthSocialTransactionRequest = z.infer<
165
+ typeof StartManagedAuthSocialTransactionRequest
166
+ >;
167
+
168
+ export const StartManagedAuthSocialTransactionResponse = z.object({
169
+ url: z.string().url().max(4_096),
170
+ });
171
+ export type StartManagedAuthSocialTransactionResponse = z.infer<
172
+ typeof StartManagedAuthSocialTransactionResponse
173
+ >;
174
+
175
+ export const CompleteManagedAuthEmailPasswordTransactionRequest =
176
+ ManagedAuthOperationIdentity.extend({
177
+ transactionId: z.string().uuid(),
178
+ email: z.string().email().max(320),
179
+ password: z.string().min(1).max(1_024),
180
+ });
181
+ export type CompleteManagedAuthEmailPasswordTransactionRequest = z.infer<
182
+ typeof CompleteManagedAuthEmailPasswordTransactionRequest
183
+ >;
184
+
185
+ export const CompleteManagedAuthLoginTransactionResponse = z.object({
186
+ projection: ManagedAuthSessionSetProjection,
187
+ returnIntent: ManagedAuthReturnIntent.nullable(),
188
+ });
189
+ export type CompleteManagedAuthLoginTransactionResponse = z.infer<
190
+ typeof CompleteManagedAuthLoginTransactionResponse
191
+ >;
192
+
193
+ export const CancelManagedAuthLoginTransactionRequest = ManagedAuthOperationIdentity.extend({
194
+ transactionId: z.string().uuid(),
195
+ });
196
+ export type CancelManagedAuthLoginTransactionRequest = z.infer<
197
+ typeof CancelManagedAuthLoginTransactionRequest
198
+ >;
199
+
200
+ export const SelectManagedAuthLoginSlotRequest = ManagedAuthOperationIdentity.extend({
201
+ slotId: z.string().uuid(),
202
+ });
203
+ export type SelectManagedAuthLoginSlotRequest = z.infer<typeof SelectManagedAuthLoginSlotRequest>;
204
+
205
+ export const LogoutManagedAuthLoginSlotRequest = ManagedAuthOperationIdentity.extend({
206
+ slotId: z.string().uuid(),
207
+ replacementSlotId: z.string().uuid().nullable(),
208
+ });
209
+ export type LogoutManagedAuthLoginSlotRequest = z.infer<typeof LogoutManagedAuthLoginSlotRequest>;
210
+
211
+ export const LogoutManagedAuthSessionSetRequest = ManagedAuthOperationIdentity;
212
+ export type LogoutManagedAuthSessionSetRequest = z.infer<typeof LogoutManagedAuthSessionSetRequest>;
213
+
214
+ export const ManagedAuthLogoutAllReceipt = z.object({
215
+ generation: z.string().regex(/^[1-9][0-9]*$/),
216
+ actorEpoch: z.string().regex(/^[1-9][0-9]*$/),
217
+ state: z.literal("logged_out"),
218
+ });
219
+ export type ManagedAuthLogoutAllReceipt = z.infer<typeof ManagedAuthLogoutAllReceipt>;
220
+
221
+ export const ResolveManagedAuthDeepLinkRequest = z.object({
222
+ path: ManagedAuthReturnIntent,
223
+ });
224
+ export type ResolveManagedAuthDeepLinkRequest = z.infer<typeof ResolveManagedAuthDeepLinkRequest>;
225
+
226
+ export const ManagedAuthDeepLinkResolution = z.discriminatedUnion("kind", [
227
+ z.object({ kind: z.literal("current") }),
228
+ z.object({ kind: z.literal("switch_required"), slot: ManagedAuthLoginSlot }),
229
+ z.object({ kind: z.literal("unavailable") }),
230
+ ]);
231
+ export type ManagedAuthDeepLinkResolution = z.infer<typeof ManagedAuthDeepLinkResolution>;
232
+
233
+ export const ManagedAuthSessionSetErrorCode = z.enum([
234
+ "actor_change_required",
235
+ "actor_mutation_in_flight",
236
+ "api_contract_changed",
237
+ "browser_session_set_required",
238
+ "browser_session_set_unavailable",
239
+ "generation_conflict",
240
+ "invalid_browser_session_set_request",
241
+ "invalid_transaction",
242
+ "managed_authentication_required",
243
+ "managed_authentication_unavailable",
244
+ "operation_outcome_unknown",
245
+ "operation_reused",
246
+ "origin_rejected",
247
+ "login_transaction_rate_limited",
248
+ "provider_route_blocked",
249
+ "slot_limit_reached",
250
+ "slot_already_exists",
251
+ "slot_unavailable",
252
+ ]);
253
+ export type ManagedAuthSessionSetErrorCode = z.infer<typeof ManagedAuthSessionSetErrorCode>;
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+
3
+ export const ManagedSignInProvider = z.enum(["google", "github"]);
4
+ export const ManagedSignInMethods = z.object({
5
+ identityId: z.string().uuid(),
6
+ email: z.string().email(),
7
+ emailVerified: z.boolean(),
8
+ identityRevision: z.number().int().positive(),
9
+ freshAuthenticationRequired: z.boolean(),
10
+ methods: z.array(
11
+ z.object({
12
+ provider: z.enum(["credential", "google", "github"]),
13
+ connected: z.boolean(),
14
+ available: z.boolean(),
15
+ canDisconnect: z.boolean(),
16
+ implicitRelinkingSuppressed: z.boolean(),
17
+ }),
18
+ ),
19
+ });
20
+ export type ManagedSignInMethods = z.infer<typeof ManagedSignInMethods>;
21
+ export const ManagedSignInMutation = z.object({
22
+ expectedIdentityId: z.string().uuid(),
23
+ operationId: z.string().uuid(),
24
+ expectedIdentityRevision: z.number().int().positive(),
25
+ });
26
+ export const ManagedSignInProviderMutation = ManagedSignInMutation.extend({
27
+ provider: ManagedSignInProvider,
28
+ }).strict();
29
+ export const ManagedSignInPasswordMutation = ManagedSignInMutation.extend({
30
+ newPassword: z.string().min(8).max(128),
31
+ currentPassword: z.string().min(1).max(1024).optional(),
32
+ }).strict();
33
+ export const ManagedSignInMutationResponse = z.object({
34
+ reauthenticationRequired: z.literal(true),
35
+ notification: z.enum(["sent", "failed", "outcome_unknown"]),
36
+ });
37
+ export const ManagedSignInConnectResponse = z.object({ url: z.string().url() });
@@ -0,0 +1,2 @@
1
+ /** Shared discovery and explicit permission-selection count allowance. */
2
+ export const MCP_MAX_CATALOG_TOOL_ENTRIES = 4_096;
@@ -0,0 +1,30 @@
1
+ /** Exact endpoint identity: normalize URL syntax, preserve paths and query parameters. */
2
+ export function mcpEndpointIdentity(value: string | null | undefined): string | null {
3
+ if (!value) return null;
4
+ try {
5
+ const url = new URL(value);
6
+ if (!["https:", "http:"].includes(url.protocol) || url.username || url.password) return null;
7
+ url.hash = "";
8
+ return url.href;
9
+ } catch {
10
+ return null;
11
+ }
12
+ }
13
+
14
+ export function pluginMcpUnavailableReason(server: {
15
+ endpoint: string | null;
16
+ transport?: string;
17
+ requiresConfiguration?: boolean;
18
+ }): string | null {
19
+ if (server.transport === "stdio" || !server.endpoint) return "Requires a local runtime";
20
+ if (
21
+ server.transport &&
22
+ !["http", "streamable-http", "streamable_http"].includes(server.transport)
23
+ )
24
+ return "Unsupported transport: " + server.transport;
25
+ if (server.requiresConfiguration || server.endpoint.includes("{"))
26
+ return "Requires custom connection configuration";
27
+ const endpoint = mcpEndpointIdentity(server.endpoint);
28
+ if (!endpoint?.startsWith("https://")) return "Requires a valid HTTPS endpoint";
29
+ return null;
30
+ }
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+
3
+ export const MCP_OAUTH_SCOPE = "mcp:access" as const;
4
+ export const MCP_OAUTH_ACCESS_TOKEN_TTL_SECONDS = 15 * 60;
5
+ export const MCP_OAUTH_REFRESH_TOKEN_TTL_SECONDS = 30 * 24 * 60 * 60;
6
+ export const MCP_OAUTH_AUTHORIZATION_CODE_TTL_SECONDS = 5 * 60;
7
+ export const MCP_OAUTH_CONSENT_TTL_SECONDS = 10 * 60;
8
+
9
+ const RedirectUri = z.string().url().max(2_048);
10
+
11
+ export const McpOAuthClientRegistrationRequest = z.object({
12
+ redirect_uris: z.array(RedirectUri).min(1).max(16),
13
+ client_name: z.string().trim().min(1).max(200).optional(),
14
+ application_type: z.enum(["native", "web"]).optional(),
15
+ token_endpoint_auth_method: z.literal("none").default("none"),
16
+ scope: z.literal(MCP_OAUTH_SCOPE).optional(),
17
+ grant_types: z
18
+ .array(z.enum(["authorization_code", "refresh_token"]))
19
+ .min(1)
20
+ .max(2)
21
+ .refine((grantTypes) => grantTypes.includes("authorization_code"), {
22
+ message: "authorization_code grant is required",
23
+ })
24
+ .default(["authorization_code", "refresh_token"]),
25
+ response_types: z.array(z.literal("code")).min(1).max(1).default(["code"]),
26
+ });
27
+ export type McpOAuthClientRegistrationRequest = z.infer<typeof McpOAuthClientRegistrationRequest>;
28
+
29
+ export const McpOAuthClientRegistrationResponse = McpOAuthClientRegistrationRequest.extend({
30
+ client_id: z.string().min(1).max(256),
31
+ client_id_issued_at: z.number().int().nonnegative(),
32
+ });
33
+ export type McpOAuthClientRegistrationResponse = z.infer<typeof McpOAuthClientRegistrationResponse>;
34
+
35
+ export const McpOAuthTokenResponse = z.object({
36
+ access_token: z.string().min(1),
37
+ token_type: z.literal("Bearer"),
38
+ expires_in: z.number().int().positive(),
39
+ refresh_token: z.string().min(1).optional(),
40
+ scope: z.literal(MCP_OAUTH_SCOPE),
41
+ });
42
+ export type McpOAuthTokenResponse = z.infer<typeof McpOAuthTokenResponse>;
43
+
44
+ export const McpOAuthProtectedResourceMetadata = z.object({
45
+ resource: z.string().url(),
46
+ authorization_servers: z.array(z.string().url()).min(1).max(1),
47
+ scopes_supported: z.array(z.literal(MCP_OAUTH_SCOPE)).length(1),
48
+ bearer_methods_supported: z.array(z.literal("header")).length(1),
49
+ });
50
+ export type McpOAuthProtectedResourceMetadata = z.infer<typeof McpOAuthProtectedResourceMetadata>;
51
+
52
+ export const McpOAuthAuthorizationServerMetadata = z.object({
53
+ issuer: z.string().url(),
54
+ authorization_endpoint: z.string().url(),
55
+ token_endpoint: z.string().url(),
56
+ registration_endpoint: z.string().url(),
57
+ response_types_supported: z.array(z.literal("code")).length(1),
58
+ grant_types_supported: z.array(z.enum(["authorization_code", "refresh_token"])).length(2),
59
+ code_challenge_methods_supported: z.array(z.literal("S256")).length(1),
60
+ token_endpoint_auth_methods_supported: z.array(z.literal("none")).length(1),
61
+ scopes_supported: z.array(z.literal(MCP_OAUTH_SCOPE)).length(1),
62
+ authorization_response_iss_parameter_supported: z.literal(true),
63
+ });
64
+ export type McpOAuthAuthorizationServerMetadata = z.infer<
65
+ typeof McpOAuthAuthorizationServerMetadata
66
+ >;