@opengeni/sdk 3.3.2-canary.1 → 3.4.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 (295) hide show
  1. package/README.md +1007 -72
  2. package/dist/adapters/express.d.ts +31 -0
  3. package/dist/adapters/express.js +87 -0
  4. package/dist/adapters/express.js.map +1 -0
  5. package/dist/adapters/hono.d.ts +16 -0
  6. package/dist/adapters/hono.js +8 -0
  7. package/dist/adapters/hono.js.map +1 -0
  8. package/dist/adapters/next.d.ts +29 -0
  9. package/dist/adapters/next.js +22 -0
  10. package/dist/adapters/next.js.map +1 -0
  11. package/dist/allowance-refusal.d.ts +2 -0
  12. package/dist/allowance-refusal.js +50 -0
  13. package/dist/allowance-refusal.js.map +1 -0
  14. package/dist/app-links.d.ts +42 -0
  15. package/dist/app-links.js +66 -0
  16. package/dist/app-links.js.map +1 -0
  17. package/dist/artifact-catalog.d.ts +40 -0
  18. package/dist/artifact-client.d.ts +20 -8
  19. package/dist/artifacts.d.ts +1 -1
  20. package/dist/artifacts.js +8 -6
  21. package/dist/automations.js +8 -2
  22. package/dist/automations.js.map +1 -1
  23. package/dist/azure-live-transport.d.ts +32 -0
  24. package/dist/browser.d.ts +6 -2
  25. package/dist/browser.js +25 -5
  26. package/dist/chat/fold.d.ts +75 -0
  27. package/dist/chat/handler.d.ts +41 -0
  28. package/dist/chat/http.d.ts +67 -0
  29. package/dist/chat/ids.d.ts +34 -0
  30. package/dist/chat/index.d.ts +9 -0
  31. package/dist/chat/index.js +1369 -0
  32. package/dist/chat/index.js.map +1 -0
  33. package/dist/chat/openai.d.ts +30 -0
  34. package/dist/chat/opengeni.d.ts +129 -0
  35. package/dist/chat/types.d.ts +207 -0
  36. package/dist/chat/vercel.d.ts +49 -0
  37. package/dist/chats.d.ts +8 -0
  38. package/dist/chunk-4AHR4KGA.js +301 -0
  39. package/dist/chunk-4AHR4KGA.js.map +1 -0
  40. package/dist/chunk-6GYGMLX4.js +332 -0
  41. package/dist/chunk-6GYGMLX4.js.map +1 -0
  42. package/dist/chunk-7EWT3PV6.js +368 -0
  43. package/dist/chunk-7EWT3PV6.js.map +1 -0
  44. package/dist/chunk-FTWVVPR6.js +1665 -0
  45. package/dist/chunk-FTWVVPR6.js.map +1 -0
  46. package/dist/{chunk-VYCTL62C.js → chunk-GZQSWAKD.js} +1 -1
  47. package/dist/chunk-GZQSWAKD.js.map +1 -0
  48. package/dist/chunk-KGEABAID.js +71 -0
  49. package/dist/chunk-KGEABAID.js.map +1 -0
  50. package/dist/{chunk-YKZME56C.js → chunk-KWADQ227.js} +3 -3
  51. package/dist/{chunk-YKZME56C.js.map → chunk-KWADQ227.js.map} +1 -1
  52. package/dist/{chunk-E5BNEG2D.js → chunk-NCU5OAN7.js} +27 -2
  53. package/dist/chunk-NCU5OAN7.js.map +1 -0
  54. package/dist/{chunk-BESZFWMU.js → chunk-OI5YLASH.js} +73 -2
  55. package/dist/chunk-OI5YLASH.js.map +1 -0
  56. package/dist/chunk-OV3POE62.js +359 -0
  57. package/dist/chunk-OV3POE62.js.map +1 -0
  58. package/dist/chunk-P7UWKORG.js +561 -0
  59. package/dist/chunk-P7UWKORG.js.map +1 -0
  60. package/dist/chunk-QGEIL4TR.js +195 -0
  61. package/dist/chunk-QGEIL4TR.js.map +1 -0
  62. package/dist/{chunk-GY6RQPCG.js → chunk-S2NLS3ES.js} +3598 -1278
  63. package/dist/chunk-S2NLS3ES.js.map +1 -0
  64. package/dist/chunk-UM4ZXXJR.js +9 -0
  65. package/dist/chunk-UM4ZXXJR.js.map +1 -0
  66. package/dist/{chunk-TFCLHRZK.js → chunk-UME3X7CP.js} +28 -32
  67. package/dist/chunk-UME3X7CP.js.map +1 -0
  68. package/dist/chunk-VT4YM4XQ.js +210 -0
  69. package/dist/chunk-VT4YM4XQ.js.map +1 -0
  70. package/dist/chunk-WSYYXONG.js +1602 -0
  71. package/dist/chunk-WSYYXONG.js.map +1 -0
  72. package/dist/{chunk-6NEPJ7NC.js → chunk-WVCJRSGJ.js} +119 -14
  73. package/dist/chunk-WVCJRSGJ.js.map +1 -0
  74. package/dist/chunk-X5ITQVXE.js +15 -0
  75. package/dist/chunk-X5ITQVXE.js.map +1 -0
  76. package/dist/chunk-XA7HVIHI.js +126 -0
  77. package/dist/chunk-XA7HVIHI.js.map +1 -0
  78. package/dist/{chunk-QTBAMHEF.js → chunk-YJCHB7R3.js} +60 -12
  79. package/dist/chunk-YJCHB7R3.js.map +1 -0
  80. package/dist/chunk-YKIHNLWD.js +153 -0
  81. package/dist/chunk-YKIHNLWD.js.map +1 -0
  82. package/dist/chunk-ZDUBPV33.js +277 -0
  83. package/dist/chunk-ZDUBPV33.js.map +1 -0
  84. package/dist/client.d.ts +1056 -118
  85. package/dist/codex-realtime-controller.d.ts +13 -0
  86. package/dist/codex-realtime-controller.js +4 -2
  87. package/dist/codex-realtime-v3-wire.d.ts +3 -2
  88. package/dist/codex-realtime.d.ts +5 -1
  89. package/dist/company-brain.d.ts +1 -11
  90. package/dist/core.d.ts +6 -2
  91. package/dist/core.js +23 -6
  92. package/dist/deprecation.d.ts +47 -0
  93. package/dist/document-authority-client.d.ts +24 -2
  94. package/dist/document-authority.js +7 -5
  95. package/dist/editable-artifacts/index.d.ts +1 -1
  96. package/dist/editable-artifacts/types.d.ts +12 -2
  97. package/dist/editable-artifacts.js +19 -3
  98. package/dist/editable-artifacts.js.map +1 -1
  99. package/dist/embedding-client.d.ts +129 -0
  100. package/dist/errors.d.ts +64 -1
  101. package/dist/external-vault-receiver.d.ts +203 -0
  102. package/dist/external-vault-receiver.js +564 -0
  103. package/dist/external-vault-receiver.js.map +1 -0
  104. package/dist/feedback.d.ts +23 -0
  105. package/dist/gateway-realtime-transport.js +1 -1
  106. package/dist/github-repositories.d.ts +10 -0
  107. package/dist/github-repositories.js +36 -0
  108. package/dist/github-repositories.js.map +1 -0
  109. package/dist/index.d.ts +61 -11
  110. package/dist/index.js +555 -338
  111. package/dist/index.js.map +1 -1
  112. package/dist/insights-usage.d.ts +33 -0
  113. package/dist/insights-usage.js +7 -0
  114. package/dist/insights-usage.js.map +1 -0
  115. package/dist/interaction.d.ts +165 -71
  116. package/dist/interaction.js +2 -2
  117. package/dist/knowledge.d.ts +7 -0
  118. package/dist/knowledge.js +20 -0
  119. package/dist/knowledge.js.map +1 -0
  120. package/dist/known-tools.d.ts +4 -0
  121. package/dist/message-links.d.ts +68 -0
  122. package/dist/model-context.d.ts +68 -0
  123. package/dist/model-display.d.ts +2 -0
  124. package/dist/model-display.js +17 -0
  125. package/dist/model-display.js.map +1 -0
  126. package/dist/organization-integration-policy.d.ts +26 -0
  127. package/dist/organization-integration-policy.js +26 -0
  128. package/dist/organization-integration-policy.js.map +1 -0
  129. package/dist/pr-review-client.d.ts +1 -1
  130. package/dist/pr-review.d.ts +1 -1
  131. package/dist/pr-review.js.map +1 -1
  132. package/dist/preference-registry.d.ts +1 -1
  133. package/dist/prepared-mcp-setup.d.ts +5 -0
  134. package/dist/proxy.d.ts +13 -11
  135. package/dist/realtime.d.ts +1 -1
  136. package/dist/realtime.js +253 -7
  137. package/dist/realtime.js.map +1 -1
  138. package/dist/session-history-import.d.ts +22 -0
  139. package/dist/session-history-import.js +36 -0
  140. package/dist/session-history-import.js.map +1 -0
  141. package/dist/session-list-entries.d.ts +1 -0
  142. package/dist/session-list-entries.js +7 -0
  143. package/dist/session-list-entries.js.map +1 -0
  144. package/dist/session-message-search.d.ts +53 -0
  145. package/dist/session-proxy-client.d.ts +28 -0
  146. package/dist/session-proxy.d.ts +334 -0
  147. package/dist/session-proxy.js +24 -0
  148. package/dist/session-proxy.js.map +1 -0
  149. package/dist/session-titles.d.ts +2 -28
  150. package/dist/session-usage-limits.d.ts +10 -0
  151. package/dist/session-usage-limits.js +43 -0
  152. package/dist/session-usage-limits.js.map +1 -0
  153. package/dist/shared-catalog-loader.d.ts +34 -0
  154. package/dist/site-ai.d.ts +35 -0
  155. package/dist/site-bridge-host.d.ts +112 -0
  156. package/dist/site-bridge-host.js +286 -0
  157. package/dist/site-bridge-host.js.map +1 -0
  158. package/dist/site-browser-entry.d.ts +1 -0
  159. package/dist/site-browser-runtime.gen.d.ts +1 -0
  160. package/dist/site-data.d.ts +178 -0
  161. package/dist/site-document.d.ts +5 -0
  162. package/dist/site-document.js +20 -0
  163. package/dist/site-document.js.map +1 -0
  164. package/dist/site-document.test.d.ts +1 -0
  165. package/dist/site-http.d.ts +17 -0
  166. package/dist/site-sql.d.ts +31 -0
  167. package/dist/site-tool-bridge.d.ts +57 -0
  168. package/dist/site.d.ts +186 -0
  169. package/dist/site.js +63 -0
  170. package/dist/site.js.map +1 -0
  171. package/dist/skills.d.ts +75 -0
  172. package/dist/sse.d.ts +1 -1
  173. package/dist/stream.d.ts +2 -0
  174. package/dist/tenant-workspaces.d.ts +47 -0
  175. package/dist/tenant-workspaces.js +8 -0
  176. package/dist/tenant-workspaces.js.map +1 -0
  177. package/dist/tool-auth.d.ts +87 -0
  178. package/dist/tool-auth.js +23 -0
  179. package/dist/tool-auth.js.map +1 -0
  180. package/dist/tool-display-metadata.d.ts +3 -0
  181. package/dist/tools-37DCTCNZ.js +12 -0
  182. package/dist/tools-37DCTCNZ.js.map +1 -0
  183. package/dist/tools.d.ts +81 -0
  184. package/dist/transcription.d.ts +1 -1
  185. package/dist/types.d.ts +2785 -592
  186. package/dist/usage-allowances.d.ts +36 -0
  187. package/dist/usage-allowances.js +80 -0
  188. package/dist/usage-allowances.js.map +1 -0
  189. package/dist/vault-types.d.ts +324 -0
  190. package/dist/vaults-api.d.ts +65 -0
  191. package/dist/workspace-artifacts.d.ts +47 -5
  192. package/dist/workspace-instruction-policies.d.ts +2 -2
  193. package/dist/workspace-integrations.d.ts +74 -0
  194. package/dist/workspace-integrations.js +67 -0
  195. package/dist/workspace-integrations.js.map +1 -0
  196. package/dist/workspace-state.d.ts +8 -71
  197. package/package.json +99 -5
  198. package/src/adapters/express.ts +136 -0
  199. package/src/adapters/hono.ts +18 -0
  200. package/src/adapters/next.ts +42 -0
  201. package/src/allowance-refusal.ts +5 -0
  202. package/src/app-links.ts +117 -0
  203. package/src/artifact-catalog.ts +51 -0
  204. package/src/artifact-client.ts +40 -49
  205. package/src/artifacts.ts +1 -0
  206. package/src/automations-client.ts +8 -2
  207. package/src/azure-live-transport.ts +286 -0
  208. package/src/browser.ts +35 -0
  209. package/src/chat/fold.ts +431 -0
  210. package/src/chat/handler.ts +240 -0
  211. package/src/chat/http.ts +257 -0
  212. package/src/chat/ids.ts +85 -0
  213. package/src/chat/index.ts +88 -0
  214. package/src/chat/openai.ts +439 -0
  215. package/src/chat/opengeni.ts +737 -0
  216. package/src/chat/types.ts +219 -0
  217. package/src/chat/vercel.ts +204 -0
  218. package/src/chats.ts +16 -0
  219. package/src/client.ts +5595 -1847
  220. package/src/codex-realtime-controller.ts +163 -8
  221. package/src/codex-realtime-v3-wire.ts +4 -3
  222. package/src/codex-realtime-v3.ts +12 -3
  223. package/src/codex-realtime.ts +11 -3
  224. package/src/company-brain.ts +0 -40
  225. package/src/core.ts +18 -0
  226. package/src/deprecation.ts +149 -0
  227. package/src/document-authority-client.ts +104 -1
  228. package/src/editable-artifacts/controller.ts +36 -2
  229. package/src/editable-artifacts/index.ts +1 -0
  230. package/src/editable-artifacts/types.ts +29 -16
  231. package/src/embedding-client.ts +519 -0
  232. package/src/errors.ts +281 -5
  233. package/src/external-vault-receiver.ts +914 -0
  234. package/src/feedback.ts +20 -0
  235. package/src/gateway-realtime-transport.ts +3 -3
  236. package/src/github-repositories.ts +60 -0
  237. package/src/index.ts +592 -65
  238. package/src/insights-usage.ts +64 -0
  239. package/src/interaction.ts +315 -93
  240. package/src/knowledge.ts +72 -0
  241. package/src/known-tools.ts +279 -0
  242. package/src/message-links.ts +178 -0
  243. package/src/model-context.ts +113 -0
  244. package/src/model-display.ts +11 -0
  245. package/src/organization-integration-policy.ts +54 -0
  246. package/src/pr-review-client.ts +1 -1
  247. package/src/pr-review.ts +1 -1
  248. package/src/preference-registry.ts +2 -0
  249. package/src/prepared-mcp-setup.ts +123 -0
  250. package/src/proxy.ts +23 -12
  251. package/src/realtime.ts +15 -6
  252. package/src/session-history-import.ts +84 -0
  253. package/src/session-list-entries.ts +1 -0
  254. package/src/session-message-search.ts +47 -0
  255. package/src/session-proxy-client.ts +68 -0
  256. package/src/session-proxy.ts +2098 -0
  257. package/src/session-titles.ts +8 -82
  258. package/src/session-usage-limits.ts +71 -0
  259. package/src/shared-catalog-loader.ts +169 -0
  260. package/src/site-ai.ts +284 -0
  261. package/src/site-bridge-host.ts +422 -0
  262. package/src/site-browser-entry.ts +6 -0
  263. package/src/site-browser-runtime.gen.ts +2 -0
  264. package/src/site-data.ts +372 -0
  265. package/src/site-document.test.ts +64 -0
  266. package/src/site-document.ts +18 -0
  267. package/src/site-http.ts +171 -0
  268. package/src/site-sql.ts +153 -0
  269. package/src/site-tool-bridge.ts +401 -0
  270. package/src/site.ts +878 -0
  271. package/src/skills.ts +69 -0
  272. package/src/sse.ts +9 -3
  273. package/src/stream.ts +33 -10
  274. package/src/tenant-workspaces.ts +148 -0
  275. package/src/tool-auth.ts +301 -0
  276. package/src/tool-display-metadata.ts +27 -0
  277. package/src/tools.ts +452 -0
  278. package/src/transcription.ts +3 -0
  279. package/src/types.ts +3142 -594
  280. package/src/usage-allowances.ts +189 -0
  281. package/src/vault-types.ts +379 -0
  282. package/src/vaults-api.ts +339 -0
  283. package/src/workspace-artifacts.ts +55 -6
  284. package/src/workspace-instruction-policies.ts +2 -1
  285. package/src/workspace-integrations.ts +402 -0
  286. package/src/workspace-state.ts +8 -82
  287. package/dist/chunk-6NEPJ7NC.js.map +0 -1
  288. package/dist/chunk-BESZFWMU.js.map +0 -1
  289. package/dist/chunk-E5BNEG2D.js.map +0 -1
  290. package/dist/chunk-GY6RQPCG.js.map +0 -1
  291. package/dist/chunk-OO5LPTO7.js +0 -132
  292. package/dist/chunk-OO5LPTO7.js.map +0 -1
  293. package/dist/chunk-QTBAMHEF.js.map +0 -1
  294. package/dist/chunk-TFCLHRZK.js.map +0 -1
  295. package/dist/chunk-VYCTL62C.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ // src/chats.ts
2
+ function chatDefaults(chats) {
3
+ return chats === "shared" ? { visibility: "workspace", agentAccess: "workspace", memoryScope: "workspace" } : { visibility: "private", agentAccess: "session", memoryScope: "user" };
4
+ }
5
+
6
+ export {
7
+ chatDefaults
8
+ };
9
+ //# sourceMappingURL=chunk-UM4ZXXJR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/chats.ts"],"sourcesContent":["import type { CreateSessionRequest } from \"./types\";\n\n/**\n * Private chats use personal Knowledge and session-only agent reach; shared chats\n * use workspace Knowledge and reach. Isolated adds a separate workspace per user.\n */\nexport type Chats = \"private\" | \"shared\" | \"isolated\";\n\n/** SDK defaults only: the API still authorizes visibility, agent reach and Knowledge separately. */\nexport function chatDefaults(\n chats: Chats,\n): Required<Pick<CreateSessionRequest, \"visibility\" | \"agentAccess\" | \"memoryScope\">> {\n return chats === \"shared\"\n ? { visibility: \"workspace\", agentAccess: \"workspace\", memoryScope: \"workspace\" }\n : { visibility: \"private\", agentAccess: \"session\", memoryScope: \"user\" };\n}\n"],"mappings":";AASO,SAAS,aACd,OACoF;AACpF,SAAO,UAAU,WACb,EAAE,YAAY,aAAa,aAAa,aAAa,aAAa,YAAY,IAC9E,EAAE,YAAY,WAAW,aAAa,WAAW,aAAa,OAAO;AAC3E;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenGeniDocumentAuthorityClient
3
- } from "./chunk-BESZFWMU.js";
3
+ } from "./chunk-OI5YLASH.js";
4
4
 
5
5
  // src/artifact-client.ts
6
6
  var OpenGeniClient = class extends OpenGeniDocumentAuthorityClient {
@@ -76,48 +76,44 @@ var OpenGeniClient = class extends OpenGeniDocumentAuthorityClient {
76
76
  options
77
77
  );
78
78
  }
79
- async listWorkspaceArtifacts(workspaceId, options = {}) {
80
- const query = new URLSearchParams();
81
- if (options.limit !== void 0) query.set("limit", String(options.limit));
82
- if (options.cursor) query.set("cursor", options.cursor);
83
- const suffix = query.size > 0 ? `?${query.toString()}` : "";
84
- return await this.requestJson(
85
- "GET",
86
- `/v1/workspaces/${workspaceId}/published-artifacts${suffix}`
87
- );
88
- }
89
- async getWorkspaceArtifact(workspaceId, artifactId) {
90
- return await this.requestJson(
91
- "GET",
92
- `/v1/workspaces/${workspaceId}/published-artifacts/${encodeURIComponent(artifactId)}`
79
+ /** Exact Site-version gateway call. Keep this client on the authenticated host;
80
+ * the API enforces live viewer access and the version's declared tool allowlist. */
81
+ async callWorkspaceSiteTool(workspaceId, request, options = {}) {
82
+ return this.requestJson(
83
+ "POST",
84
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/tools/calls`,
85
+ request,
86
+ void 0,
87
+ options
93
88
  );
94
89
  }
95
- async getWorkspaceArtifactContent(workspaceId, artifactId, versionId) {
96
- const query = versionId ? `?versionId=${encodeURIComponent(versionId)}` : "";
90
+ async getWorkspaceArtifactContent(workspaceId, artifactId, versionOrOptions) {
91
+ const options = typeof versionOrOptions === "string" ? { versionId: versionOrOptions } : versionOrOptions ?? {};
92
+ const query = options.versionId ? `?versionId=${encodeURIComponent(options.versionId)}` : "";
97
93
  return await this.requestJson(
98
94
  "GET",
99
- `/v1/workspaces/${workspaceId}/published-artifacts/${encodeURIComponent(artifactId)}/content${query}`
100
- );
101
- }
102
- async createWorkspaceArtifact(workspaceId, request) {
103
- return await this.requestJson(
104
- "POST",
105
- `/v1/workspaces/${workspaceId}/published-artifacts`,
106
- request
95
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/published-artifacts/${encodeURIComponent(artifactId)}/content${query}`,
96
+ void 0,
97
+ void 0,
98
+ options
107
99
  );
108
100
  }
109
- async publishWorkspaceArtifactVersion(workspaceId, artifactId, request) {
101
+ async createWorkspaceArtifact(workspaceId, request, options = {}) {
110
102
  return await this.requestJson(
111
103
  "POST",
112
- `/v1/workspaces/${workspaceId}/published-artifacts/${encodeURIComponent(artifactId)}/versions`,
113
- request
104
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/published-artifacts`,
105
+ request,
106
+ void 0,
107
+ options
114
108
  );
115
109
  }
116
- async rollbackWorkspaceArtifact(workspaceId, artifactId, request) {
110
+ async publishWorkspaceArtifactVersion(workspaceId, artifactId, request, options = {}) {
117
111
  return await this.requestJson(
118
112
  "POST",
119
- `/v1/workspaces/${workspaceId}/published-artifacts/${encodeURIComponent(artifactId)}/rollback`,
120
- request
113
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/published-artifacts/${encodeURIComponent(artifactId)}/versions`,
114
+ request,
115
+ void 0,
116
+ options
121
117
  );
122
118
  }
123
119
  };
@@ -125,4 +121,4 @@ var OpenGeniClient = class extends OpenGeniDocumentAuthorityClient {
125
121
  export {
126
122
  OpenGeniClient
127
123
  };
128
- //# sourceMappingURL=chunk-TFCLHRZK.js.map
124
+ //# sourceMappingURL=chunk-UME3X7CP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/artifact-client.ts"],"sourcesContent":["import { OpenGeniDocumentAuthorityClient } from \"./document-authority-client\";\nimport type { FetchResponse } from \"./client\";\nimport type { SiteToolCallRequest } from \"./site-tool-bridge\";\nimport type { ToolGatewayCallResponse } from \"./types\";\nimport type {\n CreateWorkspaceArtifactRequest,\n PublishWorkspaceArtifactVersionRequest,\n WorkspaceArtifactContentResponse,\n WorkspaceArtifactMutationResponse,\n} from \"./workspace-artifacts\";\nimport type {\n CreateEditableArtifactMaterializationRequest,\n CreateEditableArtifactResourceRequest,\n EditableArtifactListResource,\n EditableArtifactMaterializationJobResource,\n EditableArtifactPinnedVersionResource,\n EditableArtifactResource,\n ImportEditableArtifactResourceRequest,\n ListSessionEditableArtifactResourcesOptions,\n PinEditableArtifactVersionRequest,\n ReadEditableArtifactMaterializationOptions,\n ReadEditableArtifactResourceOptions,\n} from \"./editable-artifact-resources\";\n\n/** Public SDK client. Optional operator and artifact operations stay out of the console core. */\nexport class OpenGeniClient extends OpenGeniDocumentAuthorityClient {\n async createEditableArtifact(\n workspaceId: string,\n request: CreateEditableArtifactResourceRequest,\n options: Readonly<{ signal?: AbortSignal | undefined }> = {},\n ): Promise<EditableArtifactResource> {\n return await this.requestJson<EditableArtifactResource>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts`,\n request,\n {},\n options,\n );\n }\n\n async importEditableArtifact(\n workspaceId: string,\n request: ImportEditableArtifactResourceRequest,\n options: Readonly<{ signal?: AbortSignal | undefined }> = {},\n ): Promise<EditableArtifactResource> {\n return await this.requestJson<EditableArtifactResource>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/imports`,\n request,\n {},\n options,\n );\n }\n\n async getEditableArtifact(\n workspaceId: string,\n artifactId: string,\n options: ReadEditableArtifactResourceOptions,\n ): Promise<EditableArtifactResource> {\n return await this.requestJson<EditableArtifactResource>(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/${encodeURIComponent(artifactId)}`,\n undefined,\n { replicaId: options.replicaId },\n options,\n );\n }\n\n async listSessionEditableArtifacts(\n workspaceId: string,\n sourceSessionId: string,\n options: ListSessionEditableArtifactResourcesOptions,\n ): Promise<EditableArtifactListResource> {\n return await this.requestJson<EditableArtifactListResource>(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts`,\n undefined,\n { sourceSessionId, replicaId: options.replicaId },\n options,\n );\n }\n\n async pinEditableArtifactVersion(\n workspaceId: string,\n artifactId: string,\n request: PinEditableArtifactVersionRequest,\n options: Readonly<{ signal?: AbortSignal | undefined }> = {},\n ): Promise<EditableArtifactPinnedVersionResource> {\n return await this.requestJson<EditableArtifactPinnedVersionResource>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/${encodeURIComponent(artifactId)}/versions`,\n request,\n {},\n options,\n );\n }\n\n async createEditableArtifactMaterialization(\n workspaceId: string,\n artifactId: string,\n request: CreateEditableArtifactMaterializationRequest,\n options: Readonly<{ signal?: AbortSignal | undefined }> = {},\n ): Promise<EditableArtifactMaterializationJobResource> {\n return await this.requestJson<EditableArtifactMaterializationJobResource>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/${encodeURIComponent(artifactId)}/materializations`,\n request,\n {},\n options,\n );\n }\n\n async getEditableArtifactMaterialization(\n workspaceId: string,\n artifactId: string,\n jobId: string,\n options: ReadEditableArtifactMaterializationOptions,\n ): Promise<EditableArtifactMaterializationJobResource> {\n return await this.requestJson<EditableArtifactMaterializationJobResource>(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/${encodeURIComponent(artifactId)}/materializations/${encodeURIComponent(jobId)}`,\n undefined,\n { replicaId: options.replicaId },\n options,\n );\n }\n\n /** The caller owns the returned bounded response stream. */\n async downloadEditableArtifactMaterialization(\n workspaceId: string,\n artifactId: string,\n jobId: string,\n options: ReadEditableArtifactMaterializationOptions,\n ): Promise<FetchResponse> {\n return await this.requestResponse(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/${encodeURIComponent(artifactId)}/materializations/${encodeURIComponent(jobId)}/download`,\n { replicaId: options.replicaId },\n options,\n );\n }\n /** Exact Site-version gateway call. Keep this client on the authenticated host;\n * the API enforces live viewer access and the version's declared tool allowlist. */\n async callWorkspaceSiteTool(\n workspaceId: string,\n request: SiteToolCallRequest,\n options: { signal?: AbortSignal } = {},\n ): Promise<ToolGatewayCallResponse> {\n return this.requestJson<ToolGatewayCallResponse>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/tools/calls`,\n request,\n undefined,\n options,\n );\n }\n\n async getWorkspaceArtifactContent(\n workspaceId: string,\n artifactId: string,\n versionOrOptions?: string | { versionId?: string; signal?: AbortSignal },\n ): Promise<WorkspaceArtifactContentResponse> {\n const options =\n typeof versionOrOptions === \"string\"\n ? { versionId: versionOrOptions }\n : (versionOrOptions ?? {});\n const query = options.versionId ? `?versionId=${encodeURIComponent(options.versionId)}` : \"\";\n return await this.requestJson<WorkspaceArtifactContentResponse>(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/published-artifacts/${encodeURIComponent(artifactId)}/content${query}`,\n undefined,\n undefined,\n options,\n );\n }\n\n async createWorkspaceArtifact(\n workspaceId: string,\n request: CreateWorkspaceArtifactRequest,\n options: { signal?: AbortSignal } = {},\n ): Promise<WorkspaceArtifactMutationResponse> {\n return await this.requestJson<WorkspaceArtifactMutationResponse>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/published-artifacts`,\n request,\n undefined,\n options,\n );\n }\n\n async publishWorkspaceArtifactVersion(\n workspaceId: string,\n artifactId: string,\n request: PublishWorkspaceArtifactVersionRequest,\n options: { signal?: AbortSignal } = {},\n ): Promise<WorkspaceArtifactMutationResponse> {\n return await this.requestJson<WorkspaceArtifactMutationResponse>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/published-artifacts/${encodeURIComponent(artifactId)}/versions`,\n request,\n undefined,\n options,\n );\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,210 @@
1
+ import {
2
+ OPENGENI_DELIVERY_ID_HEADER,
3
+ OPENGENI_EVENT_ID_HEADER,
4
+ OPENGENI_SIGNATURE_HEADER,
5
+ OPENGENI_WEBHOOK_TEST_EVENT_TYPE,
6
+ verifyOpenGeniSignature
7
+ } from "./chunk-KGEABAID.js";
8
+
9
+ // src/workspace-integrations.ts
10
+ var OpenGeniSignatureError = class extends Error {
11
+ constructor() {
12
+ super("Opengeni signature verification failed");
13
+ this.name = "OpenGeniSignatureError";
14
+ }
15
+ };
16
+ function header(headers, name) {
17
+ if (headers instanceof Headers) return headers.get(name);
18
+ const wanted = name.toLowerCase();
19
+ for (const [key, value] of Object.entries(headers)) {
20
+ if (key.toLowerCase() === wanted) {
21
+ return Array.isArray(value) ? value[0] ?? null : value ?? null;
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ async function verifiedObject(input) {
27
+ const valid = await verifyOpenGeniSignature({
28
+ secret: input.secret,
29
+ body: input.body,
30
+ signature: header(input.headers, OPENGENI_SIGNATURE_HEADER),
31
+ ...input.toleranceSeconds !== void 0 ? { toleranceSeconds: input.toleranceSeconds } : {}
32
+ });
33
+ if (!valid) throw new OpenGeniSignatureError();
34
+ const parsed = JSON.parse(input.body);
35
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
36
+ throw new OpenGeniSignatureError();
37
+ }
38
+ return parsed;
39
+ }
40
+ async function verifyWebhookEvent(input) {
41
+ const event = await verifiedObject(input);
42
+ const usageEvent = typeof event.type === "string" && event.type.startsWith("usage.");
43
+ const lane = event.lane === void 0 ? "workspace" : event.lane;
44
+ if (typeof event.id !== "string" || typeof event.type !== "string" || typeof event.workspaceId !== "string" || lane !== "workspace" && lane !== "organization" || usageEvent && lane !== "workspace" || !(typeof event.sessionId === "string" || (event.sessionId === null || event.sessionId === void 0) && [
45
+ "usage.threshold_reached",
46
+ "usage.exhausted",
47
+ "usage.period_reset",
48
+ OPENGENI_WEBHOOK_TEST_EVENT_TYPE
49
+ ].includes(event.type))) {
50
+ throw new OpenGeniSignatureError();
51
+ }
52
+ return {
53
+ event: { ...event, lane },
54
+ deliveryId: header(input.headers, OPENGENI_DELIVERY_ID_HEADER)
55
+ };
56
+ }
57
+ async function verifyCredentialProviderRequest(input) {
58
+ const parsed = await verifiedObject(input);
59
+ if (parsed.type !== "credentials.request" || typeof parsed.workspaceId !== "string") {
60
+ throw new OpenGeniSignatureError();
61
+ }
62
+ return parsed;
63
+ }
64
+ var OPENGENI_WEBHOOK_HEADERS = {
65
+ signature: OPENGENI_SIGNATURE_HEADER,
66
+ eventId: OPENGENI_EVENT_ID_HEADER,
67
+ deliveryId: OPENGENI_DELIVERY_ID_HEADER
68
+ };
69
+ async function getOrganizationCredentialProvider(client, organizationId) {
70
+ return client.requestJson(
71
+ "GET",
72
+ `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider`
73
+ );
74
+ }
75
+ async function putOrganizationCredentialProvider(client, organizationId, request) {
76
+ return client.requestJson(
77
+ "PUT",
78
+ `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider`,
79
+ request
80
+ );
81
+ }
82
+ async function deleteOrganizationCredentialProvider(client, organizationId) {
83
+ await client.requestJson(
84
+ "DELETE",
85
+ `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider`,
86
+ void 0,
87
+ {},
88
+ { responseType: "void" }
89
+ );
90
+ }
91
+ async function listOrganizationWebhooks(client, organizationId) {
92
+ return client.requestJson(
93
+ "GET",
94
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks`
95
+ );
96
+ }
97
+ async function createOrganizationWebhook(client, organizationId, request) {
98
+ return client.requestJson(
99
+ "POST",
100
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks`,
101
+ request
102
+ );
103
+ }
104
+ async function getOrganizationWebhook(client, organizationId, webhookId) {
105
+ return client.requestJson(
106
+ "GET",
107
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}`
108
+ );
109
+ }
110
+ async function updateOrganizationWebhook(client, organizationId, webhookId, request) {
111
+ return client.requestJson(
112
+ "PATCH",
113
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}`,
114
+ request
115
+ );
116
+ }
117
+ async function deleteOrganizationWebhook(client, organizationId, webhookId) {
118
+ await client.requestJson(
119
+ "DELETE",
120
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}`,
121
+ void 0,
122
+ {},
123
+ { responseType: "void" }
124
+ );
125
+ }
126
+ async function listOrganizationWebhookDeliveries(client, organizationId, webhookId, options = {}) {
127
+ return client.requestJson(
128
+ "GET",
129
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}/deliveries`,
130
+ void 0,
131
+ options.limit !== void 0 ? { limit: String(options.limit) } : {}
132
+ );
133
+ }
134
+ async function redeliverOrganizationWebhookDelivery(client, organizationId, webhookId, deliveryId) {
135
+ return client.requestJson(
136
+ "POST",
137
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}/deliveries/${encodeURIComponent(deliveryId)}/redeliver`
138
+ );
139
+ }
140
+ async function getWorkspaceWebhook(client, workspaceId, webhookId) {
141
+ return client.requestJson("GET", `/v1/workspaces/${workspaceId}/webhooks/${webhookId}`);
142
+ }
143
+ async function rotateWorkspaceCredentialProviderSecret(client, workspaceId) {
144
+ return client.requestJson(
145
+ "POST",
146
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/credential-provider/rotate-secret`
147
+ );
148
+ }
149
+ async function rotateOrganizationCredentialProviderSecret(client, organizationId) {
150
+ return client.requestJson(
151
+ "POST",
152
+ `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider/rotate-secret`
153
+ );
154
+ }
155
+ async function rotateOrganizationWebhookSecret(client, organizationId, webhookId) {
156
+ return client.requestJson(
157
+ "POST",
158
+ `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}/rotate-secret`
159
+ );
160
+ }
161
+ async function rotateWorkspaceWebhookSecret(client, workspaceId, webhookId) {
162
+ return client.requestJson(
163
+ "POST",
164
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks/${encodeURIComponent(webhookId)}/rotate-secret`
165
+ );
166
+ }
167
+ async function testWorkspaceWebhook(client, workspaceId, webhookId) {
168
+ return client.requestJson(
169
+ "POST",
170
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks/${encodeURIComponent(webhookId)}/test`
171
+ );
172
+ }
173
+ async function testWorkspaceCredentialProvider(client, workspaceId) {
174
+ return client.requestJson(
175
+ "POST",
176
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/credential-provider/test`
177
+ );
178
+ }
179
+ async function getWorkspaceInheritedIntegrations(client, workspaceId) {
180
+ return client.requestJson(
181
+ "GET",
182
+ `/v1/workspaces/${encodeURIComponent(workspaceId)}/inherited-integrations`
183
+ );
184
+ }
185
+
186
+ export {
187
+ OpenGeniSignatureError,
188
+ verifyWebhookEvent,
189
+ verifyCredentialProviderRequest,
190
+ OPENGENI_WEBHOOK_HEADERS,
191
+ getOrganizationCredentialProvider,
192
+ putOrganizationCredentialProvider,
193
+ deleteOrganizationCredentialProvider,
194
+ listOrganizationWebhooks,
195
+ createOrganizationWebhook,
196
+ getOrganizationWebhook,
197
+ updateOrganizationWebhook,
198
+ deleteOrganizationWebhook,
199
+ listOrganizationWebhookDeliveries,
200
+ redeliverOrganizationWebhookDelivery,
201
+ getWorkspaceWebhook,
202
+ rotateWorkspaceCredentialProviderSecret,
203
+ rotateOrganizationCredentialProviderSecret,
204
+ rotateOrganizationWebhookSecret,
205
+ rotateWorkspaceWebhookSecret,
206
+ testWorkspaceWebhook,
207
+ testWorkspaceCredentialProvider,
208
+ getWorkspaceInheritedIntegrations
209
+ };
210
+ //# sourceMappingURL=chunk-VT4YM4XQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/workspace-integrations.ts"],"sourcesContent":["import {\n OPENGENI_DELIVERY_ID_HEADER,\n OPENGENI_EVENT_ID_HEADER,\n OPENGENI_SIGNATURE_HEADER,\n OPENGENI_WEBHOOK_TEST_EVENT_TYPE,\n verifyOpenGeniSignature,\n} from \"@opengeni/contracts/workspace-integration-wire\";\nimport type { CredentialProviderRequest, WorkspaceWebhookEvent } from \"@opengeni/contracts\";\nimport type { OpenGeniClient } from \"./client\";\nimport type {\n CreateOrganizationWebhookRequest,\n CreateOrganizationWebhookResponse,\n GetOrganizationCredentialProviderResponse,\n ListOrganizationWebhookDeliveriesResponse,\n ListOrganizationWebhooksResponse,\n OrganizationWebhook,\n OrganizationWebhookDelivery,\n PutOrganizationCredentialProviderRequest,\n PutOrganizationCredentialProviderResponse,\n RotateWorkspaceCredentialProviderSecretResponse,\n RotateOrganizationCredentialProviderSecretResponse,\n RotateWorkspaceWebhookSecretResponse,\n RotateOrganizationWebhookSecretResponse,\n TestWorkspaceCredentialProviderResponse,\n TestWorkspaceWebhookResponse,\n UpdateOrganizationWebhookRequest,\n WorkspaceInheritedIntegrationsResponse,\n WorkspaceWebhook,\n} from \"@opengeni/contracts\";\n\nexport type {\n CreateOrganizationWebhookRequest,\n CreateOrganizationWebhookResponse,\n CreateWorkspaceWebhookRequest,\n CreateWorkspaceWebhookResponse,\n CredentialProviderRequest,\n CredentialProviderInitiatorContext,\n CredentialProviderResponse,\n CredentialProviderMcpHeaders,\n CredentialProviderMcpMaterial,\n GetOrganizationCredentialProviderResponse,\n GetWorkspaceCredentialProviderResponse,\n InitiatingHuman,\n IntegrationEndpointTestResult,\n IntegrationWorkspaceFilter,\n ListOrganizationWebhookDeliveriesResponse,\n ListOrganizationWebhooksResponse,\n ListWorkspaceWebhookDeliveriesResponse,\n ListWorkspaceWebhooksResponse,\n PutWorkspaceCredentialProviderRequest,\n PutWorkspaceCredentialProviderResponse,\n PutOrganizationCredentialProviderRequest,\n PutOrganizationCredentialProviderResponse,\n RotateWorkspaceCredentialProviderSecretResponse,\n RotateOrganizationCredentialProviderSecretResponse,\n RotateWorkspaceWebhookSecretResponse,\n RotateOrganizationWebhookSecretResponse,\n TestWorkspaceCredentialProviderResponse,\n TestWorkspaceWebhookResponse,\n OrganizationCredentialProvider,\n OrganizationWebhook,\n OrganizationWebhookDelivery,\n UpdateOrganizationWebhookRequest,\n UpdateWorkspaceWebhookRequest,\n WorkspaceCredentialProvider,\n WorkspaceInheritedIntegrationsResponse,\n WorkspaceTestWebhookEvent,\n WorkspaceWebhook,\n WorkspaceWebhookDelivery,\n WorkspaceWebhookEvent,\n WorkspaceWebhookEventType,\n SessionWorkspaceWebhookEvent,\n WorkspaceUsageWebhookEvent,\n} from \"@opengeni/contracts\";\nexport {\n OPENGENI_DELIVERY_ID_HEADER,\n OPENGENI_EVENT_ID_HEADER,\n OPENGENI_SIGNATURE_HEADER,\n OPENGENI_TEST_REQUEST_NIL_ID,\n OPENGENI_WEBHOOK_TEST_EVENT_TYPE,\n WORKSPACE_WEBHOOK_EVENT_TYPES,\n signOpenGeniPayload,\n verifyOpenGeniSignature,\n} from \"@opengeni/contracts/workspace-integration-wire\";\n\nexport type WorkspaceSandboxImages = { images: string[]; selected: string | null };\n\nexport class OpenGeniSignatureError extends Error {\n constructor() {\n super(\"Opengeni signature verification failed\");\n this.name = \"OpenGeniSignatureError\";\n }\n}\n\ntype SignedRequest = {\n /** The exact raw request body. Parse it only after verification. */\n body: string;\n headers: Headers | Record<string, string | string[] | undefined>;\n secret: string;\n toleranceSeconds?: number;\n};\n\nfunction header(headers: SignedRequest[\"headers\"], name: string): string | null {\n if (headers instanceof Headers) return headers.get(name);\n const wanted = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === wanted) {\n return Array.isArray(value) ? (value[0] ?? null) : (value ?? null);\n }\n }\n return null;\n}\n\nasync function verifiedObject(input: SignedRequest): Promise<Record<string, unknown>> {\n const valid = await verifyOpenGeniSignature({\n secret: input.secret,\n body: input.body,\n signature: header(input.headers, OPENGENI_SIGNATURE_HEADER),\n ...(input.toleranceSeconds !== undefined ? { toleranceSeconds: input.toleranceSeconds } : {}),\n });\n if (!valid) throw new OpenGeniSignatureError();\n const parsed: unknown = JSON.parse(input.body);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new OpenGeniSignatureError();\n }\n return parsed as Record<string, unknown>;\n}\n\n/**\n * Verify and parse one webhook delivery. Delivery is at least once: dedupe on\n * `event.id` (also sent as the `OpenGeni-Event-Id` header). A `webhook.test`\n * event (from \"Send test event\") names no session: acknowledge it with 2xx.\n */\nexport async function verifyWebhookEvent(input: SignedRequest): Promise<{\n event: WorkspaceWebhookEvent;\n deliveryId: string | null;\n}> {\n const event = await verifiedObject(input);\n const usageEvent = typeof event.type === \"string\" && event.type.startsWith(\"usage.\");\n const lane = event.lane === undefined ? \"workspace\" : event.lane;\n if (\n typeof event.id !== \"string\" ||\n typeof event.type !== \"string\" ||\n typeof event.workspaceId !== \"string\" ||\n (lane !== \"workspace\" && lane !== \"organization\") ||\n (usageEvent && lane !== \"workspace\") ||\n !(\n typeof event.sessionId === \"string\" ||\n ((event.sessionId === null || event.sessionId === undefined) &&\n [\n \"usage.threshold_reached\",\n \"usage.exhausted\",\n \"usage.period_reset\",\n OPENGENI_WEBHOOK_TEST_EVENT_TYPE,\n ].includes(event.type))\n )\n ) {\n throw new OpenGeniSignatureError();\n }\n return {\n event: { ...event, lane } as WorkspaceWebhookEvent,\n deliveryId: header(input.headers, OPENGENI_DELIVERY_ID_HEADER),\n };\n}\n\n/**\n * Verify the exact bytes and parse a provider request, including its frozen\n * initiatorContext when sent by an upgraded worker. Provenance grants no access.\n */\nexport async function verifyCredentialProviderRequest(\n input: SignedRequest,\n): Promise<CredentialProviderRequest> {\n const parsed = await verifiedObject(input);\n if (parsed.type !== \"credentials.request\" || typeof parsed.workspaceId !== \"string\") {\n throw new OpenGeniSignatureError();\n }\n return parsed as CredentialProviderRequest;\n}\n\n/** Identity header names, for receivers that log or dedupe. */\nexport const OPENGENI_WEBHOOK_HEADERS = {\n signature: OPENGENI_SIGNATURE_HEADER,\n eventId: OPENGENI_EVENT_ID_HEADER,\n deliveryId: OPENGENI_DELIVERY_ID_HEADER,\n} as const;\n\n/** Server-side integration administration is opt-in, outside the eager browser client. */\nexport async function getOrganizationCredentialProvider(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n): Promise<GetOrganizationCredentialProviderResponse> {\n return client.requestJson(\n \"GET\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider`,\n );\n}\n\n/** Replace configuration; explicit filter required. Store the first returned signing secret. */\nexport async function putOrganizationCredentialProvider(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n request: PutOrganizationCredentialProviderRequest,\n): Promise<PutOrganizationCredentialProviderResponse> {\n return client.requestJson(\n \"PUT\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider`,\n request,\n );\n}\n\nexport async function deleteOrganizationCredentialProvider(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n): Promise<void> {\n await client.requestJson<void>(\n \"DELETE\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider`,\n undefined,\n {},\n { responseType: \"void\" },\n );\n}\n\nexport async function listOrganizationWebhooks(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n): Promise<ListOrganizationWebhooksResponse> {\n return client.requestJson(\n \"GET\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks`,\n );\n}\n\n/** Create a webhook and return its signing secret once. */\nexport async function createOrganizationWebhook(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n request: CreateOrganizationWebhookRequest,\n): Promise<CreateOrganizationWebhookResponse> {\n return client.requestJson(\n \"POST\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks`,\n request,\n );\n}\n\nexport async function getOrganizationWebhook(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n webhookId: string,\n): Promise<OrganizationWebhook> {\n return client.requestJson(\n \"GET\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}`,\n );\n}\n\nexport async function updateOrganizationWebhook(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n webhookId: string,\n request: UpdateOrganizationWebhookRequest,\n): Promise<OrganizationWebhook> {\n return client.requestJson(\n \"PATCH\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}`,\n request,\n );\n}\n\nexport async function deleteOrganizationWebhook(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n webhookId: string,\n): Promise<void> {\n await client.requestJson<void>(\n \"DELETE\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}`,\n undefined,\n {},\n { responseType: \"void\" },\n );\n}\n\nexport async function listOrganizationWebhookDeliveries(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n webhookId: string,\n options: { limit?: number } = {},\n): Promise<ListOrganizationWebhookDeliveriesResponse> {\n return client.requestJson(\n \"GET\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}/deliveries`,\n undefined,\n options.limit !== undefined ? { limit: String(options.limit) } : {},\n );\n}\n\n/** Requeue a settled delivery with a fresh attempt budget. */\nexport async function redeliverOrganizationWebhookDelivery(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n webhookId: string,\n deliveryId: string,\n): Promise<OrganizationWebhookDelivery> {\n return client.requestJson(\n \"POST\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}/deliveries/${encodeURIComponent(deliveryId)}/redeliver`,\n );\n}\n\nexport async function getWorkspaceWebhook(\n client: Pick<OpenGeniClient, \"requestJson\">,\n workspaceId: string,\n webhookId: string,\n): Promise<WorkspaceWebhook> {\n return client.requestJson(\"GET\", `/v1/workspaces/${workspaceId}/webhooks/${webhookId}`);\n}\n\n/** Rotate immediately. Store the new secret; the old signing secret stops working. */\nexport async function rotateWorkspaceCredentialProviderSecret(\n client: Pick<OpenGeniClient, \"requestJson\">,\n workspaceId: string,\n): Promise<RotateWorkspaceCredentialProviderSecretResponse> {\n return client.requestJson(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/credential-provider/rotate-secret`,\n );\n}\n\nexport async function rotateOrganizationCredentialProviderSecret(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n): Promise<RotateOrganizationCredentialProviderSecretResponse> {\n return client.requestJson(\n \"POST\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/credential-provider/rotate-secret`,\n );\n}\n\nexport async function rotateOrganizationWebhookSecret(\n client: Pick<OpenGeniClient, \"requestJson\">,\n organizationId: string,\n webhookId: string,\n): Promise<RotateOrganizationWebhookSecretResponse> {\n return client.requestJson(\n \"POST\",\n `/v1/organizations/${encodeURIComponent(organizationId)}/webhooks/${encodeURIComponent(webhookId)}/rotate-secret`,\n );\n}\n\nexport async function rotateWorkspaceWebhookSecret(\n client: Pick<OpenGeniClient, \"requestJson\">,\n workspaceId: string,\n webhookId: string,\n): Promise<RotateWorkspaceWebhookSecretResponse> {\n return client.requestJson(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks/${encodeURIComponent(webhookId)}/rotate-secret`,\n );\n}\n\n/**\n * Send one signed `webhook.test` event to a workspace webhook now and return\n * what the endpoint answered. Nothing is queued or retried.\n */\nexport async function testWorkspaceWebhook(\n client: Pick<OpenGeniClient, \"requestJson\">,\n workspaceId: string,\n webhookId: string,\n): Promise<TestWorkspaceWebhookResponse> {\n return client.requestJson(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks/${encodeURIComponent(webhookId)}/test`,\n );\n}\n\n/**\n * Send one signed `purpose: \"test\"` request to the credential provider this\n * workspace's runs use (its own, else the organization's). Only the names of\n * returned credentials come back, never their values.\n */\nexport async function testWorkspaceCredentialProvider(\n client: Pick<OpenGeniClient, \"requestJson\">,\n workspaceId: string,\n): Promise<TestWorkspaceCredentialProviderResponse> {\n return client.requestJson(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/credential-provider/test`,\n );\n}\n\n/** Organization registrations that reach this workspace. Workspace administrators only. */\nexport async function getWorkspaceInheritedIntegrations(\n client: Pick<OpenGeniClient, \"requestJson\">,\n workspaceId: string,\n): Promise<WorkspaceInheritedIntegrationsResponse> {\n return client.requestJson(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/inherited-integrations`,\n );\n}\n"],"mappings":"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","names":[]}