@opengeni/sdk 0.57.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 (291) hide show
  1. package/README.md +1017 -26
  2. package/dist/accounts.d.ts +153 -0
  3. package/dist/accounts.js +307 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/adapters/express.d.ts +31 -0
  6. package/dist/adapters/express.js +87 -0
  7. package/dist/adapters/express.js.map +1 -0
  8. package/dist/adapters/hono.d.ts +16 -0
  9. package/dist/adapters/hono.js +8 -0
  10. package/dist/adapters/hono.js.map +1 -0
  11. package/dist/adapters/next.d.ts +29 -0
  12. package/dist/adapters/next.js +22 -0
  13. package/dist/adapters/next.js.map +1 -0
  14. package/dist/allowance-refusal.d.ts +2 -0
  15. package/dist/allowance-refusal.js +50 -0
  16. package/dist/allowance-refusal.js.map +1 -0
  17. package/dist/artifact-catalog.d.ts +31 -0
  18. package/dist/artifact-client.d.ts +23 -11
  19. package/dist/artifacts.d.ts +1 -1
  20. package/dist/artifacts.js +7 -5
  21. package/dist/automations-client.d.ts +17 -0
  22. package/dist/automations.d.ts +3 -0
  23. package/dist/automations.js +84 -0
  24. package/dist/automations.js.map +1 -0
  25. package/dist/browser.d.ts +11 -0
  26. package/dist/browser.js +47 -0
  27. package/dist/browser.js.map +1 -0
  28. package/dist/chat/fold.d.ts +75 -0
  29. package/dist/chat/handler.d.ts +41 -0
  30. package/dist/chat/http.d.ts +67 -0
  31. package/dist/chat/ids.d.ts +34 -0
  32. package/dist/chat/index.d.ts +9 -0
  33. package/dist/chat/index.js +1694 -0
  34. package/dist/chat/index.js.map +1 -0
  35. package/dist/chat/openai.d.ts +30 -0
  36. package/dist/chat/opengeni.d.ts +128 -0
  37. package/dist/chat/types.d.ts +207 -0
  38. package/dist/chat/vercel.d.ts +49 -0
  39. package/dist/chats.d.ts +8 -0
  40. package/dist/{chunk-JDLDDRNE.js → chunk-2UXZUCEZ.js} +291 -34
  41. package/dist/chunk-2UXZUCEZ.js.map +1 -0
  42. package/dist/chunk-4SMEOV3P.js +246 -0
  43. package/dist/chunk-4SMEOV3P.js.map +1 -0
  44. package/dist/{chunk-JRPFWI6T.js → chunk-AH5D5Q5V.js} +31 -35
  45. package/dist/chunk-AH5D5Q5V.js.map +1 -0
  46. package/dist/chunk-APXVSSSY.js +301 -0
  47. package/dist/chunk-APXVSSSY.js.map +1 -0
  48. package/dist/chunk-DUVIYER4.js +639 -0
  49. package/dist/chunk-DUVIYER4.js.map +1 -0
  50. package/dist/{chunk-PKQ377ED.js → chunk-FG3OO5LM.js} +2686 -611
  51. package/dist/chunk-FG3OO5LM.js.map +1 -0
  52. package/dist/chunk-GZYZT22T.js +260 -0
  53. package/dist/chunk-GZYZT22T.js.map +1 -0
  54. package/dist/chunk-HMGADJGZ.js +150 -0
  55. package/dist/chunk-HMGADJGZ.js.map +1 -0
  56. package/dist/{chunk-YKZME56C.js → chunk-KWADQ227.js} +3 -3
  57. package/dist/{chunk-YKZME56C.js.map → chunk-KWADQ227.js.map} +1 -1
  58. package/dist/chunk-LY2K6ELJ.js +126 -0
  59. package/dist/chunk-LY2K6ELJ.js.map +1 -0
  60. package/dist/chunk-MOTJYIYL.js +340 -0
  61. package/dist/chunk-MOTJYIYL.js.map +1 -0
  62. package/dist/{chunk-ST5DDKJP.js → chunk-NC57YMUO.js} +121 -3
  63. package/dist/chunk-NC57YMUO.js.map +1 -0
  64. package/dist/chunk-RWKB6YZG.js +1270 -0
  65. package/dist/chunk-RWKB6YZG.js.map +1 -0
  66. package/dist/chunk-U6CV2SXO.js +195 -0
  67. package/dist/chunk-U6CV2SXO.js.map +1 -0
  68. package/dist/chunk-UM4ZXXJR.js +9 -0
  69. package/dist/chunk-UM4ZXXJR.js.map +1 -0
  70. package/dist/chunk-V6GIY62B.js +229 -0
  71. package/dist/chunk-V6GIY62B.js.map +1 -0
  72. package/dist/chunk-WU6GQG25.js +268 -0
  73. package/dist/chunk-WU6GQG25.js.map +1 -0
  74. package/dist/{chunk-VWE2QIVO.js → chunk-XNG7YGR3.js} +23 -6
  75. package/dist/chunk-XNG7YGR3.js.map +1 -0
  76. package/dist/{chunk-HJ3HHUT5.js → chunk-YIKA2QT4.js} +33 -2
  77. package/dist/chunk-YIKA2QT4.js.map +1 -0
  78. package/dist/chunk-ZKPY6YAJ.js +135 -0
  79. package/dist/chunk-ZKPY6YAJ.js.map +1 -0
  80. package/dist/client.d.ts +740 -94
  81. package/dist/codex-realtime-controller.d.ts +3 -0
  82. package/dist/codex-realtime-controller.js +2 -2
  83. package/dist/codex-realtime-v3.d.ts +13 -2
  84. package/dist/company-brain.d.ts +22 -0
  85. package/dist/company-profile.d.ts +14 -1
  86. package/dist/core.d.ts +9 -3
  87. package/dist/core.js +25 -6
  88. package/dist/deprecation.d.ts +47 -0
  89. package/dist/document-authority-client.d.ts +51 -0
  90. package/dist/document-authority.d.ts +2 -0
  91. package/dist/document-authority.js +12 -0
  92. package/dist/document-authority.js.map +1 -0
  93. package/dist/editable-artifacts/browser-session.d.ts +7 -3
  94. package/dist/editable-artifacts/controller.d.ts +4 -1
  95. package/dist/editable-artifacts/errors.d.ts +1 -1
  96. package/dist/editable-artifacts/http-live-transport.d.ts +6 -2
  97. package/dist/editable-artifacts/index.d.ts +2 -0
  98. package/dist/editable-artifacts/open-failure.d.ts +9 -0
  99. package/dist/editable-artifacts/types.d.ts +6 -3
  100. package/dist/editable-artifacts/worker/kernel-adapter.d.ts +1 -1
  101. package/dist/editable-artifacts-worker.js +44 -17
  102. package/dist/editable-artifacts-worker.js.map +1 -1
  103. package/dist/editable-artifacts.js +240 -121
  104. package/dist/editable-artifacts.js.map +1 -1
  105. package/dist/embedding-client.d.ts +129 -0
  106. package/dist/errors.d.ts +36 -1
  107. package/dist/feedback.d.ts +23 -0
  108. package/dist/gateway-realtime-transport.js +1 -1
  109. package/dist/github-repositories.d.ts +10 -0
  110. package/dist/github-repositories.js +36 -0
  111. package/dist/github-repositories.js.map +1 -0
  112. package/dist/index.d.ts +56 -11
  113. package/dist/index.js +242 -125
  114. package/dist/index.js.map +1 -1
  115. package/dist/interaction.d.ts +84 -1
  116. package/dist/interaction.js +6 -1
  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/message-links.d.ts +68 -0
  121. package/dist/model-context.d.ts +68 -0
  122. package/dist/model-display.d.ts +2 -0
  123. package/dist/model-display.js +15 -0
  124. package/dist/model-display.js.map +1 -0
  125. package/dist/model-picker-order.d.ts +1 -0
  126. package/dist/model-picker-order.js +10 -0
  127. package/dist/model-picker-order.js.map +1 -0
  128. package/dist/organization-integration-policy.d.ts +26 -0
  129. package/dist/organization-integration-policy.js +26 -0
  130. package/dist/organization-integration-policy.js.map +1 -0
  131. package/dist/organization-private-session-settings.d.ts +6 -0
  132. package/dist/organization-private-session-settings.js +22 -0
  133. package/dist/organization-private-session-settings.js.map +1 -0
  134. package/dist/organization-user-setup.d.ts +8 -0
  135. package/dist/organization-user-setup.js +16 -0
  136. package/dist/organization-user-setup.js.map +1 -0
  137. package/dist/pr-review-client.d.ts +16 -0
  138. package/dist/pr-review.d.ts +4 -0
  139. package/dist/pr-review.js +62 -0
  140. package/dist/pr-review.js.map +1 -0
  141. package/dist/preference-registry.d.ts +9 -1
  142. package/dist/proxy.d.ts +7 -5
  143. package/dist/realtime.d.ts +3 -1
  144. package/dist/realtime.js +6 -6
  145. package/dist/realtime.js.map +1 -1
  146. package/dist/retained-artifacts.d.ts +5 -1
  147. package/dist/session-history-import.d.ts +22 -0
  148. package/dist/session-history-import.js +36 -0
  149. package/dist/session-history-import.js.map +1 -0
  150. package/dist/session-list-entries.d.ts +1 -0
  151. package/dist/session-list-entries.js +7 -0
  152. package/dist/session-list-entries.js.map +1 -0
  153. package/dist/session-message-search.d.ts +53 -0
  154. package/dist/session-proxy-client.d.ts +24 -0
  155. package/dist/session-proxy.d.ts +245 -0
  156. package/dist/session-proxy.js +24 -0
  157. package/dist/session-proxy.js.map +1 -0
  158. package/dist/session-titles.d.ts +2 -0
  159. package/dist/site-browser-entry.d.ts +1 -0
  160. package/dist/site-browser-runtime.gen.d.ts +1 -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 +16 -0
  166. package/dist/site-tool-bridge.d.ts +44 -0
  167. package/dist/site.d.ts +101 -0
  168. package/dist/site.js +49 -0
  169. package/dist/site.js.map +1 -0
  170. package/dist/skills.d.ts +75 -0
  171. package/dist/stream.d.ts +2 -0
  172. package/dist/tenant-workspaces.d.ts +47 -0
  173. package/dist/tenant-workspaces.js +8 -0
  174. package/dist/tenant-workspaces.js.map +1 -0
  175. package/dist/tool-auth.d.ts +87 -0
  176. package/dist/tool-auth.js +23 -0
  177. package/dist/tool-auth.js.map +1 -0
  178. package/dist/tool-display-metadata.d.ts +3 -0
  179. package/dist/tools-FXBLUWAE.js +12 -0
  180. package/dist/tools-FXBLUWAE.js.map +1 -0
  181. package/dist/tools.d.ts +61 -0
  182. package/dist/types.d.ts +2863 -424
  183. package/dist/usage-allowances.d.ts +36 -0
  184. package/dist/usage-allowances.js +80 -0
  185. package/dist/usage-allowances.js.map +1 -0
  186. package/dist/workspace-artifacts.d.ts +33 -5
  187. package/dist/workspace-instruction-policies.d.ts +24 -2
  188. package/dist/workspace-integrations.d.ts +74 -0
  189. package/dist/workspace-integrations.js +65 -0
  190. package/dist/workspace-integrations.js.map +1 -0
  191. package/dist/workspace-learning.d.ts +124 -0
  192. package/dist/workspace-state.d.ts +8 -71
  193. package/package.json +108 -3
  194. package/src/accounts.ts +443 -0
  195. package/src/adapters/express.ts +136 -0
  196. package/src/adapters/hono.ts +18 -0
  197. package/src/adapters/next.ts +42 -0
  198. package/src/allowance-refusal.ts +5 -0
  199. package/src/artifact-catalog.ts +41 -0
  200. package/src/artifact-client.ts +43 -52
  201. package/src/artifacts.ts +7 -1
  202. package/src/automations-client.ts +124 -0
  203. package/src/automations.ts +15 -0
  204. package/src/browser.ts +54 -0
  205. package/src/chat/fold.ts +431 -0
  206. package/src/chat/handler.ts +240 -0
  207. package/src/chat/http.ts +257 -0
  208. package/src/chat/ids.ts +85 -0
  209. package/src/chat/index.ts +87 -0
  210. package/src/chat/openai.ts +439 -0
  211. package/src/chat/opengeni.ts +722 -0
  212. package/src/chat/types.ts +219 -0
  213. package/src/chat/vercel.ts +204 -0
  214. package/src/chats.ts +16 -0
  215. package/src/client.ts +4084 -515
  216. package/src/codex-realtime-controller.ts +235 -5
  217. package/src/codex-realtime-v3.ts +162 -31
  218. package/src/codex-realtime.ts +1 -1
  219. package/src/company-brain.ts +59 -0
  220. package/src/company-profile.ts +17 -1
  221. package/src/core.ts +23 -1
  222. package/src/deprecation.ts +149 -0
  223. package/src/document-authority-client.ts +219 -0
  224. package/src/document-authority.ts +17 -0
  225. package/src/editable-artifacts/browser-session.ts +36 -22
  226. package/src/editable-artifacts/controller.ts +102 -47
  227. package/src/editable-artifacts/errors.ts +2 -0
  228. package/src/editable-artifacts/http-live-transport.ts +62 -37
  229. package/src/editable-artifacts/index.ts +6 -0
  230. package/src/editable-artifacts/open-failure.ts +79 -0
  231. package/src/editable-artifacts/storage.ts +31 -40
  232. package/src/editable-artifacts/types.ts +6 -3
  233. package/src/editable-artifacts/worker/kernel-adapter.ts +23 -7
  234. package/src/editable-artifacts/worker/runtime.ts +26 -13
  235. package/src/editable-artifacts/worker/wire-codec.ts +23 -5
  236. package/src/embedding-client.ts +519 -0
  237. package/src/errors.ts +169 -2
  238. package/src/feedback.ts +20 -0
  239. package/src/gateway-realtime-transport.ts +3 -3
  240. package/src/github-repositories.ts +60 -0
  241. package/src/index.ts +561 -41
  242. package/src/interaction.ts +276 -4
  243. package/src/knowledge.ts +72 -0
  244. package/src/message-links.ts +178 -0
  245. package/src/model-context.ts +112 -0
  246. package/src/model-display.ts +10 -0
  247. package/src/model-picker-order.ts +6 -0
  248. package/src/organization-integration-policy.ts +54 -0
  249. package/src/organization-private-session-settings.ts +33 -0
  250. package/src/organization-user-setup.ts +31 -0
  251. package/src/pr-review-client.ts +92 -0
  252. package/src/pr-review.ts +17 -0
  253. package/src/preference-registry.ts +11 -0
  254. package/src/proxy.ts +17 -6
  255. package/src/realtime.ts +1 -0
  256. package/src/retained-artifacts.ts +101 -0
  257. package/src/session-history-import.ts +84 -0
  258. package/src/session-list-entries.ts +1 -0
  259. package/src/session-message-search.ts +47 -0
  260. package/src/session-proxy-client.ts +64 -0
  261. package/src/session-proxy.ts +1473 -0
  262. package/src/session-titles.ts +10 -0
  263. package/src/site-browser-entry.ts +6 -0
  264. package/src/site-browser-runtime.gen.ts +2 -0
  265. package/src/site-document.test.ts +64 -0
  266. package/src/site-document.ts +18 -0
  267. package/src/site-http.ts +162 -0
  268. package/src/site-tool-bridge.ts +146 -0
  269. package/src/site.ts +585 -0
  270. package/src/skills.ts +69 -0
  271. package/src/sse.ts +8 -2
  272. package/src/stream.ts +38 -4
  273. package/src/tenant-workspaces.ts +148 -0
  274. package/src/tool-auth.ts +301 -0
  275. package/src/tool-display-metadata.ts +19 -0
  276. package/src/tools.ts +396 -0
  277. package/src/types.ts +3346 -501
  278. package/src/usage-allowances.ts +189 -0
  279. package/src/workspace-artifacts.ts +40 -6
  280. package/src/workspace-instruction-policies.ts +26 -1
  281. package/src/workspace-integrations.ts +402 -0
  282. package/src/workspace-learning.ts +138 -0
  283. package/src/workspace-state.ts +8 -82
  284. package/dist/chunk-GU6JF75T.js +0 -119
  285. package/dist/chunk-GU6JF75T.js.map +0 -1
  286. package/dist/chunk-HJ3HHUT5.js.map +0 -1
  287. package/dist/chunk-JDLDDRNE.js.map +0 -1
  288. package/dist/chunk-JRPFWI6T.js.map +0 -1
  289. package/dist/chunk-PKQ377ED.js.map +0 -1
  290. package/dist/chunk-ST5DDKJP.js.map +0 -1
  291. package/dist/chunk-VWE2QIVO.js.map +0 -1
@@ -0,0 +1,246 @@
1
+ import {
2
+ OpenGeniApiError
3
+ } from "./chunk-V6GIY62B.js";
4
+
5
+ // src/tools.ts
6
+ var OpenGeniToolCallError = class extends Error {
7
+ constructor(result) {
8
+ const structured = result.structuredContent;
9
+ super(
10
+ typeof structured?.error?.message === "string" ? structured.error.message : "Opengeni tool call failed"
11
+ );
12
+ this.result = result;
13
+ this.name = "OpenGeniToolCallError";
14
+ this.code = typeof structured?.error?.code === "string" ? structured.error.code : "tool_error";
15
+ this.retryable = structured?.error?.retryable === true;
16
+ this.outcomeUnknown = structured?.error?.outcomeUnknown === true;
17
+ }
18
+ code;
19
+ retryable;
20
+ outcomeUnknown;
21
+ };
22
+ var OpenGeniToolReapprovalRequiredError = class extends Error {
23
+ constructor(operationId, previousCatalogDigest, catalogDigest, identity) {
24
+ super(
25
+ "The workspace tool catalog changed after approval. Request a new approval for the refreshed tool identity and retry with the same operation ID."
26
+ );
27
+ this.operationId = operationId;
28
+ this.previousCatalogDigest = previousCatalogDigest;
29
+ this.catalogDigest = catalogDigest;
30
+ this.identity = identity;
31
+ this.name = "OpenGeniToolReapprovalRequiredError";
32
+ }
33
+ code = "tool_reapproval_required";
34
+ retryable = false;
35
+ };
36
+ var OpenGeniToolsClient = class {
37
+ constructor(transport) {
38
+ this.transport = transport;
39
+ }
40
+ forWorkspace(workspaceId) {
41
+ const normalizedWorkspaceId = requiredId(workspaceId, "workspaceId");
42
+ let catalogSnapshot = null;
43
+ const approvalBindings = /* @__PURE__ */ new Map();
44
+ const catalog = async (options = {}) => {
45
+ if (catalogSnapshot && !options.refresh) return catalogSnapshot;
46
+ const next = await this.transport.requestJson(
47
+ "GET",
48
+ `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/catalog`,
49
+ void 0,
50
+ {},
51
+ options.signal ? { signal: options.signal } : {}
52
+ );
53
+ catalogSnapshot = next;
54
+ return next;
55
+ };
56
+ const callResolvedIdentity = async (resolveIdentity, argumentsValue, options) => {
57
+ if (options.approvalToken && !options.operationId) {
58
+ throw new TypeError("operationId is required when using an approval token");
59
+ }
60
+ const operationId = options.operationId ?? crypto.randomUUID();
61
+ const initial = await catalog({
62
+ ...options.refreshCatalog === void 0 ? {} : { refresh: options.refreshCatalog },
63
+ ...options.signal ? { signal: options.signal } : {}
64
+ });
65
+ const invoke = async (current) => {
66
+ const identity = resolveIdentity(current);
67
+ const approvalBinding = options.approvalToken ? approvalBindings.get(options.approvalToken) : void 0;
68
+ if (approvalBinding && (approvalBinding.operationId !== operationId || approvalBinding.catalogDigest !== current.digest || !sameToolIdentity(approvalBinding.identity, identity))) {
69
+ throw new OpenGeniToolReapprovalRequiredError(
70
+ operationId,
71
+ approvalBinding.catalogDigest,
72
+ current.digest,
73
+ identity
74
+ );
75
+ }
76
+ const request = {
77
+ operationId,
78
+ catalogDigest: current.digest,
79
+ identity,
80
+ arguments: argumentsValue,
81
+ ...options.approvalToken ? { approvalToken: options.approvalToken } : {}
82
+ };
83
+ let response;
84
+ try {
85
+ response = await this.transport.requestJson(
86
+ "POST",
87
+ `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/calls`,
88
+ request,
89
+ {},
90
+ options.signal ? { signal: options.signal } : {}
91
+ );
92
+ } catch (error) {
93
+ if (isCatalogStaleApiError(error)) catalogSnapshot = null;
94
+ else if (options.approvalToken) approvalBindings.delete(options.approvalToken);
95
+ throw error;
96
+ }
97
+ if (options.approvalToken) approvalBindings.delete(options.approvalToken);
98
+ if (response.catalogDigest !== current.digest) {
99
+ catalogSnapshot = null;
100
+ }
101
+ if (response.result.isError) throw new OpenGeniToolCallError(response.result);
102
+ const entry = findCatalogEntry(current, identity);
103
+ return entry?.outputSchema && response.result.structuredContent !== void 0 ? response.result.structuredContent : response.result;
104
+ };
105
+ try {
106
+ return await invoke(initial);
107
+ } catch (error) {
108
+ if (!isCatalogStaleApiError(error)) throw error;
109
+ }
110
+ const refreshed = await catalog({
111
+ refresh: true,
112
+ ...options.signal ? { signal: options.signal } : {}
113
+ });
114
+ const refreshedIdentity = resolveIdentity(refreshed);
115
+ if (options.approvalToken && refreshed.digest !== initial.digest) {
116
+ throw new OpenGeniToolReapprovalRequiredError(
117
+ operationId,
118
+ initial.digest,
119
+ refreshed.digest,
120
+ refreshedIdentity
121
+ );
122
+ }
123
+ return await invoke(refreshed);
124
+ };
125
+ const callIdentity = async (identity, argumentsValue = {}, options = {}) => await callResolvedIdentity(
126
+ (current) => requireCatalogIdentity(current, identity),
127
+ argumentsValue,
128
+ options
129
+ );
130
+ const approveIdentity = async (identity, argumentsValue = {}, options = {}) => {
131
+ const operationId = options.operationId ?? crypto.randomUUID();
132
+ const approve = async (current) => {
133
+ const request = {
134
+ operationId,
135
+ catalogDigest: current.digest,
136
+ identity: requireCatalogIdentity(current, identity),
137
+ arguments: argumentsValue
138
+ };
139
+ try {
140
+ const response = await this.transport.requestJson(
141
+ "POST",
142
+ `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/approvals`,
143
+ request,
144
+ {},
145
+ options.signal ? { signal: options.signal } : {}
146
+ );
147
+ approvalBindings.set(response.approvalToken, {
148
+ operationId: response.operationId,
149
+ catalogDigest: response.catalogDigest,
150
+ identity: response.identity
151
+ });
152
+ return response;
153
+ } catch (error) {
154
+ if (isCatalogStaleApiError(error)) catalogSnapshot = null;
155
+ throw error;
156
+ }
157
+ };
158
+ const initial = await catalog(options.signal ? { signal: options.signal } : {});
159
+ try {
160
+ return await approve(initial);
161
+ } catch (error) {
162
+ if (!isCatalogStaleApiError(error)) throw error;
163
+ }
164
+ const refreshed = await catalog({
165
+ refresh: true,
166
+ ...options.signal ? { signal: options.signal } : {}
167
+ });
168
+ return await approve(refreshed);
169
+ };
170
+ const invokePath = async (path, argumentsValue = {}, options = {}) => {
171
+ return await callResolvedIdentity(
172
+ (current) => requireCatalogPath(current, path).identity,
173
+ argumentsValue,
174
+ options
175
+ );
176
+ };
177
+ const node = (path) => new Proxy(
178
+ async (argumentsValue = {}, options = {}) => await invokePath(path, argumentsValue, options),
179
+ {
180
+ get: (_target, property) => {
181
+ if (property === "then") return void 0;
182
+ if (typeof property !== "string") return void 0;
183
+ return node([...path, property]);
184
+ }
185
+ }
186
+ );
187
+ return new Proxy(/* @__PURE__ */ Object.create(null), {
188
+ get: (_target, property) => {
189
+ if (property === "then") return void 0;
190
+ if (property === "$catalog") return catalog;
191
+ if (property === "$call") return callIdentity;
192
+ if (property === "$approve") return approveIdentity;
193
+ if (property === "$declarations") {
194
+ return async (options = {}) => await this.transport.requestJson(
195
+ "GET",
196
+ `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/declarations`,
197
+ void 0,
198
+ {},
199
+ options.signal ? { signal: options.signal } : {}
200
+ );
201
+ }
202
+ if (typeof property !== "string") return void 0;
203
+ return node([property]);
204
+ }
205
+ });
206
+ }
207
+ };
208
+ function findCatalogEntry(catalog, identity) {
209
+ return catalog.entries.find(
210
+ (entry) => entry.identity.serverId === identity.serverId && entry.identity.toolName === identity.toolName
211
+ );
212
+ }
213
+ function sameToolIdentity(left, right) {
214
+ return left.serverId === right.serverId && left.toolName === right.toolName;
215
+ }
216
+ function requireCatalogIdentity(catalog, identity) {
217
+ const entry = findCatalogEntry(catalog, identity);
218
+ if (!entry) {
219
+ throw new Error(
220
+ `Tool is not present in the workspace catalog: ${identity.serverId}/${identity.toolName}`
221
+ );
222
+ }
223
+ return entry.identity;
224
+ }
225
+ function requireCatalogPath(catalog, path) {
226
+ const entry = catalog.entries.find(
227
+ (candidate) => candidate.codemodePath.length === path.length && candidate.codemodePath.every((segment, index) => segment === path[index])
228
+ );
229
+ if (!entry) throw new Error(`Tool is not present in the workspace catalog: ${path.join(".")}`);
230
+ return entry;
231
+ }
232
+ function isCatalogStaleApiError(error) {
233
+ return error instanceof OpenGeniApiError && error.status === 409 && error.details?.code === "catalog_stale" || typeof error === "object" && error !== null && "code" in error && error.code === "catalog_stale";
234
+ }
235
+ function requiredId(value, label) {
236
+ const normalized = value.trim();
237
+ if (!normalized) throw new TypeError(`${label} is required`);
238
+ return normalized;
239
+ }
240
+
241
+ export {
242
+ OpenGeniToolCallError,
243
+ OpenGeniToolReapprovalRequiredError,
244
+ OpenGeniToolsClient
245
+ };
246
+ //# sourceMappingURL=chunk-4SMEOV3P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools.ts"],"sourcesContent":["import type {\n ToolGatewayCallRequest,\n ToolGatewayCallResponse,\n ToolGatewayApprovalRequest,\n ToolGatewayApprovalResponse,\n ToolGatewayCatalog,\n ToolGatewayCatalogEntry,\n ToolGatewayDeclarationsResponse,\n ToolGatewayIdentity,\n ToolGatewayResult,\n} from \"./types\";\nimport { OpenGeniApiError } from \"./errors\";\n\nexport type OpenGeniToolCallOptions = {\n operationId?: string;\n signal?: AbortSignal;\n refreshCatalog?: boolean;\n /** Server-issued, single-use capability returned by `$approve`. */\n approvalToken?: string;\n};\n\nexport type OpenGeniToolFunction<\n TArguments extends Record<string, unknown> = Record<string, unknown>,\n TResult = unknown,\n> = (argumentsValue?: TArguments, options?: OpenGeniToolCallOptions) => Promise<TResult>;\n\nexport interface OpenGeniDynamicToolNamespace {\n readonly [key: string]: OpenGeniDynamicToolNode;\n}\n\nexport type OpenGeniDynamicToolNode = OpenGeniDynamicToolNamespace & OpenGeniToolFunction;\n\n/** Declaration-generation target for one exact workspace catalog. */\nexport interface OpenGeniGeneratedTools {}\n\nexport type OpenGeniWorkspaceTools<\n TCatalog extends Pick<\n ToolGatewayCatalog,\n \"version\" | \"generation\" | \"digest\" | \"createdAt\" | \"entries\"\n > = ToolGatewayCatalog,\n> = OpenGeniGeneratedTools &\n OpenGeniDynamicToolNamespace & {\n readonly $catalog: (options?: { refresh?: boolean; signal?: AbortSignal }) => Promise<TCatalog>;\n readonly $call: (\n identity: ToolGatewayIdentity,\n argumentsValue?: Record<string, unknown>,\n options?: OpenGeniToolCallOptions,\n ) => Promise<unknown>;\n readonly $approve: (\n identity: ToolGatewayIdentity,\n argumentsValue?: Record<string, unknown>,\n options?: {\n operationId?: string;\n signal?: AbortSignal;\n },\n ) => Promise<ToolGatewayApprovalResponse>;\n readonly $declarations: (options?: {\n signal?: AbortSignal;\n }) => Promise<ToolGatewayDeclarationsResponse>;\n };\n\nexport interface OpenGeniToolTransport {\n requestJson<T>(\n method: string,\n path: string,\n body?: unknown,\n query?: Record<string, string>,\n options?: { signal?: AbortSignal; timeoutMs?: number },\n ): Promise<T>;\n}\n\nexport interface OpenGeniToolsFacade {\n forWorkspace(workspaceId: string): OpenGeniWorkspaceTools;\n}\n\nexport class OpenGeniToolCallError extends Error {\n readonly code: string;\n readonly retryable: boolean;\n readonly outcomeUnknown: boolean;\n\n constructor(readonly result: ToolGatewayResult) {\n const structured = result.structuredContent as\n | {\n error?: {\n code?: unknown;\n message?: unknown;\n retryable?: unknown;\n outcomeUnknown?: unknown;\n };\n }\n | undefined;\n super(\n typeof structured?.error?.message === \"string\"\n ? structured.error.message\n : \"Opengeni tool call failed\",\n );\n this.name = \"OpenGeniToolCallError\";\n this.code = typeof structured?.error?.code === \"string\" ? structured.error.code : \"tool_error\";\n this.retryable = structured?.error?.retryable === true;\n this.outcomeUnknown = structured?.error?.outcomeUnknown === true;\n }\n}\n\n/** A catalog refresh invalidated the single-use approval capability for this call. */\nexport class OpenGeniToolReapprovalRequiredError extends Error {\n readonly code = \"tool_reapproval_required\" as const;\n readonly retryable = false;\n\n constructor(\n readonly operationId: string,\n readonly previousCatalogDigest: string,\n readonly catalogDigest: string,\n readonly identity: ToolGatewayIdentity,\n ) {\n super(\n \"The workspace tool catalog changed after approval. Request a new approval for the refreshed tool identity and retry with the same operation ID.\",\n );\n this.name = \"OpenGeniToolReapprovalRequiredError\";\n }\n}\n\nexport class OpenGeniToolsClient implements OpenGeniToolsFacade {\n constructor(private readonly transport: OpenGeniToolTransport) {}\n\n forWorkspace(workspaceId: string): OpenGeniWorkspaceTools {\n const normalizedWorkspaceId = requiredId(workspaceId, \"workspaceId\");\n let catalogSnapshot: ToolGatewayCatalog | null = null;\n const approvalBindings = new Map<\n string,\n {\n operationId: string;\n catalogDigest: string;\n identity: ToolGatewayIdentity;\n }\n >();\n const catalog = async (\n options: { refresh?: boolean; signal?: AbortSignal } = {},\n ): Promise<ToolGatewayCatalog> => {\n if (catalogSnapshot && !options.refresh) return catalogSnapshot;\n const next = await this.transport.requestJson<ToolGatewayCatalog>(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/catalog`,\n undefined,\n {},\n options.signal ? { signal: options.signal } : {},\n );\n catalogSnapshot = next;\n return next;\n };\n const callResolvedIdentity = async (\n resolveIdentity: (current: ToolGatewayCatalog) => ToolGatewayIdentity,\n argumentsValue: Record<string, unknown>,\n options: OpenGeniToolCallOptions,\n ): Promise<unknown> => {\n if (options.approvalToken && !options.operationId) {\n throw new TypeError(\"operationId is required when using an approval token\");\n }\n const operationId = options.operationId ?? crypto.randomUUID();\n const initial = await catalog({\n ...(options.refreshCatalog === undefined ? {} : { refresh: options.refreshCatalog }),\n ...(options.signal ? { signal: options.signal } : {}),\n });\n const invoke = async (current: ToolGatewayCatalog): Promise<unknown> => {\n const identity = resolveIdentity(current);\n const approvalBinding = options.approvalToken\n ? approvalBindings.get(options.approvalToken)\n : undefined;\n if (\n approvalBinding &&\n (approvalBinding.operationId !== operationId ||\n approvalBinding.catalogDigest !== current.digest ||\n !sameToolIdentity(approvalBinding.identity, identity))\n ) {\n throw new OpenGeniToolReapprovalRequiredError(\n operationId,\n approvalBinding.catalogDigest,\n current.digest,\n identity,\n );\n }\n const request: ToolGatewayCallRequest = {\n operationId,\n catalogDigest: current.digest,\n identity,\n arguments: argumentsValue,\n ...(options.approvalToken ? { approvalToken: options.approvalToken } : {}),\n };\n let response: ToolGatewayCallResponse;\n try {\n response = await this.transport.requestJson<ToolGatewayCallResponse>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/calls`,\n request,\n {},\n options.signal ? { signal: options.signal } : {},\n );\n } catch (error) {\n if (isCatalogStaleApiError(error)) catalogSnapshot = null;\n else if (options.approvalToken) approvalBindings.delete(options.approvalToken);\n throw error;\n }\n if (options.approvalToken) approvalBindings.delete(options.approvalToken);\n if (response.catalogDigest !== current.digest) {\n catalogSnapshot = null;\n }\n if (response.result.isError) throw new OpenGeniToolCallError(response.result);\n const entry = findCatalogEntry(current, identity);\n return entry?.outputSchema && response.result.structuredContent !== undefined\n ? response.result.structuredContent\n : response.result;\n };\n try {\n return await invoke(initial);\n } catch (error) {\n if (!isCatalogStaleApiError(error)) throw error;\n }\n const refreshed = await catalog({\n refresh: true,\n ...(options.signal ? { signal: options.signal } : {}),\n });\n const refreshedIdentity = resolveIdentity(refreshed);\n if (options.approvalToken && refreshed.digest !== initial.digest) {\n throw new OpenGeniToolReapprovalRequiredError(\n operationId,\n initial.digest,\n refreshed.digest,\n refreshedIdentity,\n );\n }\n return await invoke(refreshed);\n };\n const callIdentity = async (\n identity: ToolGatewayIdentity,\n argumentsValue: Record<string, unknown> = {},\n options: OpenGeniToolCallOptions = {},\n ): Promise<unknown> =>\n await callResolvedIdentity(\n (current) => requireCatalogIdentity(current, identity),\n argumentsValue,\n options,\n );\n const approveIdentity = async (\n identity: ToolGatewayIdentity,\n argumentsValue: Record<string, unknown> = {},\n options: {\n operationId?: string;\n signal?: AbortSignal;\n } = {},\n ): Promise<ToolGatewayApprovalResponse> => {\n const operationId = options.operationId ?? crypto.randomUUID();\n const approve = async (current: ToolGatewayCatalog): Promise<ToolGatewayApprovalResponse> => {\n const request: ToolGatewayApprovalRequest = {\n operationId,\n catalogDigest: current.digest,\n identity: requireCatalogIdentity(current, identity),\n arguments: argumentsValue,\n };\n try {\n const response = await this.transport.requestJson<ToolGatewayApprovalResponse>(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/approvals`,\n request,\n {},\n options.signal ? { signal: options.signal } : {},\n );\n approvalBindings.set(response.approvalToken, {\n operationId: response.operationId,\n catalogDigest: response.catalogDigest,\n identity: response.identity,\n });\n return response;\n } catch (error) {\n if (isCatalogStaleApiError(error)) catalogSnapshot = null;\n throw error;\n }\n };\n const initial = await catalog(options.signal ? { signal: options.signal } : {});\n try {\n return await approve(initial);\n } catch (error) {\n if (!isCatalogStaleApiError(error)) throw error;\n }\n const refreshed = await catalog({\n refresh: true,\n ...(options.signal ? { signal: options.signal } : {}),\n });\n return await approve(refreshed);\n };\n const invokePath = async (\n path: readonly string[],\n argumentsValue: Record<string, unknown> = {},\n options: OpenGeniToolCallOptions = {},\n ): Promise<unknown> => {\n return await callResolvedIdentity(\n (current) => requireCatalogPath(current, path).identity,\n argumentsValue,\n options,\n );\n };\n const node = (path: readonly string[]): OpenGeniDynamicToolNode =>\n new Proxy(\n (async (argumentsValue = {}, options = {}) =>\n await invokePath(path, argumentsValue, options)) as OpenGeniDynamicToolNode,\n {\n get: (_target, property) => {\n // Dynamic namespaces must never become accidental Promise-like\n // values when passed through await/Promise.resolve.\n if (property === \"then\") return undefined;\n if (typeof property !== \"string\") return undefined;\n return node([...path, property]);\n },\n },\n );\n return new Proxy(Object.create(null) as OpenGeniWorkspaceTools, {\n get: (_target, property) => {\n if (property === \"then\") return undefined;\n if (property === \"$catalog\") return catalog;\n if (property === \"$call\") return callIdentity;\n if (property === \"$approve\") return approveIdentity;\n if (property === \"$declarations\") {\n return async (options: { signal?: AbortSignal } = {}) =>\n await this.transport.requestJson<ToolGatewayDeclarationsResponse>(\n \"GET\",\n `/v1/workspaces/${encodeURIComponent(normalizedWorkspaceId)}/tools/declarations`,\n undefined,\n {},\n options.signal ? { signal: options.signal } : {},\n );\n }\n if (typeof property !== \"string\") return undefined;\n return node([property]);\n },\n });\n }\n}\n\nfunction findCatalogEntry(\n catalog: ToolGatewayCatalog,\n identity: ToolGatewayIdentity,\n): ToolGatewayCatalogEntry | undefined {\n return catalog.entries.find(\n (entry) =>\n entry.identity.serverId === identity.serverId &&\n entry.identity.toolName === identity.toolName,\n );\n}\n\nfunction sameToolIdentity(left: ToolGatewayIdentity, right: ToolGatewayIdentity): boolean {\n return left.serverId === right.serverId && left.toolName === right.toolName;\n}\n\nfunction requireCatalogIdentity(\n catalog: ToolGatewayCatalog,\n identity: ToolGatewayIdentity,\n): ToolGatewayIdentity {\n const entry = findCatalogEntry(catalog, identity);\n if (!entry) {\n throw new Error(\n `Tool is not present in the workspace catalog: ${identity.serverId}/${identity.toolName}`,\n );\n }\n return entry.identity;\n}\n\nfunction requireCatalogPath(\n catalog: ToolGatewayCatalog,\n path: readonly string[],\n): ToolGatewayCatalogEntry {\n const entry = catalog.entries.find(\n (candidate) =>\n candidate.codemodePath.length === path.length &&\n candidate.codemodePath.every((segment, index) => segment === path[index]),\n );\n if (!entry) throw new Error(`Tool is not present in the workspace catalog: ${path.join(\".\")}`);\n return entry;\n}\n\nfunction isCatalogStaleApiError(\n error: unknown,\n): error is OpenGeniApiError | { code: \"catalog_stale\" } {\n return (\n (error instanceof OpenGeniApiError &&\n error.status === 409 &&\n error.details?.code === \"catalog_stale\") ||\n (typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n error.code === \"catalog_stale\")\n );\n}\n\nfunction requiredId(value: string, label: string): string {\n const normalized = value.trim();\n if (!normalized) throw new TypeError(`${label} is required`);\n return normalized;\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
- OpenGeniClient
3
- } from "./chunk-PKQ377ED.js";
2
+ OpenGeniDocumentAuthorityClient
3
+ } from "./chunk-HMGADJGZ.js";
4
4
 
5
5
  // src/artifact-client.ts
6
- var OpenGeniClient2 = class extends OpenGeniClient {
6
+ var OpenGeniClient = class extends OpenGeniDocumentAuthorityClient {
7
7
  async createEditableArtifact(workspaceId, request, options = {}) {
8
8
  return await this.requestJson(
9
9
  "POST",
@@ -76,53 +76,49 @@ var OpenGeniClient2 = class extends OpenGeniClient {
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
  };
124
120
 
125
121
  export {
126
- OpenGeniClient2 as OpenGeniClient
122
+ OpenGeniClient
127
123
  };
128
- //# sourceMappingURL=chunk-JRPFWI6T.js.map
124
+ //# sourceMappingURL=chunk-AH5D5Q5V.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":[]}