@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.
- package/README.md +1017 -26
- package/dist/accounts.d.ts +153 -0
- package/dist/accounts.js +307 -0
- package/dist/accounts.js.map +1 -0
- package/dist/adapters/express.d.ts +31 -0
- package/dist/adapters/express.js +87 -0
- package/dist/adapters/express.js.map +1 -0
- package/dist/adapters/hono.d.ts +16 -0
- package/dist/adapters/hono.js +8 -0
- package/dist/adapters/hono.js.map +1 -0
- package/dist/adapters/next.d.ts +29 -0
- package/dist/adapters/next.js +22 -0
- package/dist/adapters/next.js.map +1 -0
- package/dist/allowance-refusal.d.ts +2 -0
- package/dist/allowance-refusal.js +50 -0
- package/dist/allowance-refusal.js.map +1 -0
- package/dist/artifact-catalog.d.ts +31 -0
- package/dist/artifact-client.d.ts +23 -11
- package/dist/artifacts.d.ts +1 -1
- package/dist/artifacts.js +7 -5
- package/dist/automations-client.d.ts +17 -0
- package/dist/automations.d.ts +3 -0
- package/dist/automations.js +84 -0
- package/dist/automations.js.map +1 -0
- package/dist/browser.d.ts +11 -0
- package/dist/browser.js +47 -0
- package/dist/browser.js.map +1 -0
- package/dist/chat/fold.d.ts +75 -0
- package/dist/chat/handler.d.ts +41 -0
- package/dist/chat/http.d.ts +67 -0
- package/dist/chat/ids.d.ts +34 -0
- package/dist/chat/index.d.ts +9 -0
- package/dist/chat/index.js +1694 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/openai.d.ts +30 -0
- package/dist/chat/opengeni.d.ts +128 -0
- package/dist/chat/types.d.ts +207 -0
- package/dist/chat/vercel.d.ts +49 -0
- package/dist/chats.d.ts +8 -0
- package/dist/{chunk-JDLDDRNE.js → chunk-2UXZUCEZ.js} +291 -34
- package/dist/chunk-2UXZUCEZ.js.map +1 -0
- package/dist/chunk-4SMEOV3P.js +246 -0
- package/dist/chunk-4SMEOV3P.js.map +1 -0
- package/dist/{chunk-JRPFWI6T.js → chunk-AH5D5Q5V.js} +31 -35
- package/dist/chunk-AH5D5Q5V.js.map +1 -0
- package/dist/chunk-APXVSSSY.js +301 -0
- package/dist/chunk-APXVSSSY.js.map +1 -0
- package/dist/chunk-DUVIYER4.js +639 -0
- package/dist/chunk-DUVIYER4.js.map +1 -0
- package/dist/{chunk-PKQ377ED.js → chunk-FG3OO5LM.js} +2686 -611
- package/dist/chunk-FG3OO5LM.js.map +1 -0
- package/dist/chunk-GZYZT22T.js +260 -0
- package/dist/chunk-GZYZT22T.js.map +1 -0
- package/dist/chunk-HMGADJGZ.js +150 -0
- package/dist/chunk-HMGADJGZ.js.map +1 -0
- package/dist/{chunk-YKZME56C.js → chunk-KWADQ227.js} +3 -3
- package/dist/{chunk-YKZME56C.js.map → chunk-KWADQ227.js.map} +1 -1
- package/dist/chunk-LY2K6ELJ.js +126 -0
- package/dist/chunk-LY2K6ELJ.js.map +1 -0
- package/dist/chunk-MOTJYIYL.js +340 -0
- package/dist/chunk-MOTJYIYL.js.map +1 -0
- package/dist/{chunk-ST5DDKJP.js → chunk-NC57YMUO.js} +121 -3
- package/dist/chunk-NC57YMUO.js.map +1 -0
- package/dist/chunk-RWKB6YZG.js +1270 -0
- package/dist/chunk-RWKB6YZG.js.map +1 -0
- package/dist/chunk-U6CV2SXO.js +195 -0
- package/dist/chunk-U6CV2SXO.js.map +1 -0
- package/dist/chunk-UM4ZXXJR.js +9 -0
- package/dist/chunk-UM4ZXXJR.js.map +1 -0
- package/dist/chunk-V6GIY62B.js +229 -0
- package/dist/chunk-V6GIY62B.js.map +1 -0
- package/dist/chunk-WU6GQG25.js +268 -0
- package/dist/chunk-WU6GQG25.js.map +1 -0
- package/dist/{chunk-VWE2QIVO.js → chunk-XNG7YGR3.js} +23 -6
- package/dist/chunk-XNG7YGR3.js.map +1 -0
- package/dist/{chunk-HJ3HHUT5.js → chunk-YIKA2QT4.js} +33 -2
- package/dist/chunk-YIKA2QT4.js.map +1 -0
- package/dist/chunk-ZKPY6YAJ.js +135 -0
- package/dist/chunk-ZKPY6YAJ.js.map +1 -0
- package/dist/client.d.ts +740 -94
- package/dist/codex-realtime-controller.d.ts +3 -0
- package/dist/codex-realtime-controller.js +2 -2
- package/dist/codex-realtime-v3.d.ts +13 -2
- package/dist/company-brain.d.ts +22 -0
- package/dist/company-profile.d.ts +14 -1
- package/dist/core.d.ts +9 -3
- package/dist/core.js +25 -6
- package/dist/deprecation.d.ts +47 -0
- package/dist/document-authority-client.d.ts +51 -0
- package/dist/document-authority.d.ts +2 -0
- package/dist/document-authority.js +12 -0
- package/dist/document-authority.js.map +1 -0
- package/dist/editable-artifacts/browser-session.d.ts +7 -3
- package/dist/editable-artifacts/controller.d.ts +4 -1
- package/dist/editable-artifacts/errors.d.ts +1 -1
- package/dist/editable-artifacts/http-live-transport.d.ts +6 -2
- package/dist/editable-artifacts/index.d.ts +2 -0
- package/dist/editable-artifacts/open-failure.d.ts +9 -0
- package/dist/editable-artifacts/types.d.ts +6 -3
- package/dist/editable-artifacts/worker/kernel-adapter.d.ts +1 -1
- package/dist/editable-artifacts-worker.js +44 -17
- package/dist/editable-artifacts-worker.js.map +1 -1
- package/dist/editable-artifacts.js +240 -121
- package/dist/editable-artifacts.js.map +1 -1
- package/dist/embedding-client.d.ts +129 -0
- package/dist/errors.d.ts +36 -1
- package/dist/feedback.d.ts +23 -0
- package/dist/gateway-realtime-transport.js +1 -1
- package/dist/github-repositories.d.ts +10 -0
- package/dist/github-repositories.js +36 -0
- package/dist/github-repositories.js.map +1 -0
- package/dist/index.d.ts +56 -11
- package/dist/index.js +242 -125
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +84 -1
- package/dist/interaction.js +6 -1
- package/dist/knowledge.d.ts +7 -0
- package/dist/knowledge.js +20 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/message-links.d.ts +68 -0
- package/dist/model-context.d.ts +68 -0
- package/dist/model-display.d.ts +2 -0
- package/dist/model-display.js +15 -0
- package/dist/model-display.js.map +1 -0
- package/dist/model-picker-order.d.ts +1 -0
- package/dist/model-picker-order.js +10 -0
- package/dist/model-picker-order.js.map +1 -0
- package/dist/organization-integration-policy.d.ts +26 -0
- package/dist/organization-integration-policy.js +26 -0
- package/dist/organization-integration-policy.js.map +1 -0
- package/dist/organization-private-session-settings.d.ts +6 -0
- package/dist/organization-private-session-settings.js +22 -0
- package/dist/organization-private-session-settings.js.map +1 -0
- package/dist/organization-user-setup.d.ts +8 -0
- package/dist/organization-user-setup.js +16 -0
- package/dist/organization-user-setup.js.map +1 -0
- package/dist/pr-review-client.d.ts +16 -0
- package/dist/pr-review.d.ts +4 -0
- package/dist/pr-review.js +62 -0
- package/dist/pr-review.js.map +1 -0
- package/dist/preference-registry.d.ts +9 -1
- package/dist/proxy.d.ts +7 -5
- package/dist/realtime.d.ts +3 -1
- package/dist/realtime.js +6 -6
- package/dist/realtime.js.map +1 -1
- package/dist/retained-artifacts.d.ts +5 -1
- package/dist/session-history-import.d.ts +22 -0
- package/dist/session-history-import.js +36 -0
- package/dist/session-history-import.js.map +1 -0
- package/dist/session-list-entries.d.ts +1 -0
- package/dist/session-list-entries.js +7 -0
- package/dist/session-list-entries.js.map +1 -0
- package/dist/session-message-search.d.ts +53 -0
- package/dist/session-proxy-client.d.ts +24 -0
- package/dist/session-proxy.d.ts +245 -0
- package/dist/session-proxy.js +24 -0
- package/dist/session-proxy.js.map +1 -0
- package/dist/session-titles.d.ts +2 -0
- package/dist/site-browser-entry.d.ts +1 -0
- package/dist/site-browser-runtime.gen.d.ts +1 -0
- package/dist/site-document.d.ts +5 -0
- package/dist/site-document.js +20 -0
- package/dist/site-document.js.map +1 -0
- package/dist/site-document.test.d.ts +1 -0
- package/dist/site-http.d.ts +16 -0
- package/dist/site-tool-bridge.d.ts +44 -0
- package/dist/site.d.ts +101 -0
- package/dist/site.js +49 -0
- package/dist/site.js.map +1 -0
- package/dist/skills.d.ts +75 -0
- package/dist/stream.d.ts +2 -0
- package/dist/tenant-workspaces.d.ts +47 -0
- package/dist/tenant-workspaces.js +8 -0
- package/dist/tenant-workspaces.js.map +1 -0
- package/dist/tool-auth.d.ts +87 -0
- package/dist/tool-auth.js +23 -0
- package/dist/tool-auth.js.map +1 -0
- package/dist/tool-display-metadata.d.ts +3 -0
- package/dist/tools-FXBLUWAE.js +12 -0
- package/dist/tools-FXBLUWAE.js.map +1 -0
- package/dist/tools.d.ts +61 -0
- package/dist/types.d.ts +2863 -424
- package/dist/usage-allowances.d.ts +36 -0
- package/dist/usage-allowances.js +80 -0
- package/dist/usage-allowances.js.map +1 -0
- package/dist/workspace-artifacts.d.ts +33 -5
- package/dist/workspace-instruction-policies.d.ts +24 -2
- package/dist/workspace-integrations.d.ts +74 -0
- package/dist/workspace-integrations.js +65 -0
- package/dist/workspace-integrations.js.map +1 -0
- package/dist/workspace-learning.d.ts +124 -0
- package/dist/workspace-state.d.ts +8 -71
- package/package.json +108 -3
- package/src/accounts.ts +443 -0
- package/src/adapters/express.ts +136 -0
- package/src/adapters/hono.ts +18 -0
- package/src/adapters/next.ts +42 -0
- package/src/allowance-refusal.ts +5 -0
- package/src/artifact-catalog.ts +41 -0
- package/src/artifact-client.ts +43 -52
- package/src/artifacts.ts +7 -1
- package/src/automations-client.ts +124 -0
- package/src/automations.ts +15 -0
- package/src/browser.ts +54 -0
- package/src/chat/fold.ts +431 -0
- package/src/chat/handler.ts +240 -0
- package/src/chat/http.ts +257 -0
- package/src/chat/ids.ts +85 -0
- package/src/chat/index.ts +87 -0
- package/src/chat/openai.ts +439 -0
- package/src/chat/opengeni.ts +722 -0
- package/src/chat/types.ts +219 -0
- package/src/chat/vercel.ts +204 -0
- package/src/chats.ts +16 -0
- package/src/client.ts +4084 -515
- package/src/codex-realtime-controller.ts +235 -5
- package/src/codex-realtime-v3.ts +162 -31
- package/src/codex-realtime.ts +1 -1
- package/src/company-brain.ts +59 -0
- package/src/company-profile.ts +17 -1
- package/src/core.ts +23 -1
- package/src/deprecation.ts +149 -0
- package/src/document-authority-client.ts +219 -0
- package/src/document-authority.ts +17 -0
- package/src/editable-artifacts/browser-session.ts +36 -22
- package/src/editable-artifacts/controller.ts +102 -47
- package/src/editable-artifacts/errors.ts +2 -0
- package/src/editable-artifacts/http-live-transport.ts +62 -37
- package/src/editable-artifacts/index.ts +6 -0
- package/src/editable-artifacts/open-failure.ts +79 -0
- package/src/editable-artifacts/storage.ts +31 -40
- package/src/editable-artifacts/types.ts +6 -3
- package/src/editable-artifacts/worker/kernel-adapter.ts +23 -7
- package/src/editable-artifacts/worker/runtime.ts +26 -13
- package/src/editable-artifacts/worker/wire-codec.ts +23 -5
- package/src/embedding-client.ts +519 -0
- package/src/errors.ts +169 -2
- package/src/feedback.ts +20 -0
- package/src/gateway-realtime-transport.ts +3 -3
- package/src/github-repositories.ts +60 -0
- package/src/index.ts +561 -41
- package/src/interaction.ts +276 -4
- package/src/knowledge.ts +72 -0
- package/src/message-links.ts +178 -0
- package/src/model-context.ts +112 -0
- package/src/model-display.ts +10 -0
- package/src/model-picker-order.ts +6 -0
- package/src/organization-integration-policy.ts +54 -0
- package/src/organization-private-session-settings.ts +33 -0
- package/src/organization-user-setup.ts +31 -0
- package/src/pr-review-client.ts +92 -0
- package/src/pr-review.ts +17 -0
- package/src/preference-registry.ts +11 -0
- package/src/proxy.ts +17 -6
- package/src/realtime.ts +1 -0
- package/src/retained-artifacts.ts +101 -0
- package/src/session-history-import.ts +84 -0
- package/src/session-list-entries.ts +1 -0
- package/src/session-message-search.ts +47 -0
- package/src/session-proxy-client.ts +64 -0
- package/src/session-proxy.ts +1473 -0
- package/src/session-titles.ts +10 -0
- package/src/site-browser-entry.ts +6 -0
- package/src/site-browser-runtime.gen.ts +2 -0
- package/src/site-document.test.ts +64 -0
- package/src/site-document.ts +18 -0
- package/src/site-http.ts +162 -0
- package/src/site-tool-bridge.ts +146 -0
- package/src/site.ts +585 -0
- package/src/skills.ts +69 -0
- package/src/sse.ts +8 -2
- package/src/stream.ts +38 -4
- package/src/tenant-workspaces.ts +148 -0
- package/src/tool-auth.ts +301 -0
- package/src/tool-display-metadata.ts +19 -0
- package/src/tools.ts +396 -0
- package/src/types.ts +3346 -501
- package/src/usage-allowances.ts +189 -0
- package/src/workspace-artifacts.ts +40 -6
- package/src/workspace-instruction-policies.ts +26 -1
- package/src/workspace-integrations.ts +402 -0
- package/src/workspace-learning.ts +138 -0
- package/src/workspace-state.ts +8 -82
- package/dist/chunk-GU6JF75T.js +0 -119
- package/dist/chunk-GU6JF75T.js.map +0 -1
- package/dist/chunk-HJ3HHUT5.js.map +0 -1
- package/dist/chunk-JDLDDRNE.js.map +0 -1
- package/dist/chunk-JRPFWI6T.js.map +0 -1
- package/dist/chunk-PKQ377ED.js.map +0 -1
- package/dist/chunk-ST5DDKJP.js.map +0 -1
- 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
|
-
|
|
3
|
-
} from "./chunk-
|
|
2
|
+
OpenGeniDocumentAuthorityClient
|
|
3
|
+
} from "./chunk-HMGADJGZ.js";
|
|
4
4
|
|
|
5
5
|
// src/artifact-client.ts
|
|
6
|
-
var
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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,
|
|
96
|
-
const
|
|
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
|
-
|
|
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
|
|
101
|
+
async createWorkspaceArtifact(workspaceId, request, options = {}) {
|
|
110
102
|
return await this.requestJson(
|
|
111
103
|
"POST",
|
|
112
|
-
`/v1/workspaces/${workspaceId}/published-artifacts
|
|
113
|
-
request
|
|
104
|
+
`/v1/workspaces/${encodeURIComponent(workspaceId)}/published-artifacts`,
|
|
105
|
+
request,
|
|
106
|
+
void 0,
|
|
107
|
+
options
|
|
114
108
|
);
|
|
115
109
|
}
|
|
116
|
-
async
|
|
110
|
+
async publishWorkspaceArtifactVersion(workspaceId, artifactId, request, options = {}) {
|
|
117
111
|
return await this.requestJson(
|
|
118
112
|
"POST",
|
|
119
|
-
`/v1/workspaces/${workspaceId}/published-artifacts/${encodeURIComponent(artifactId)}/
|
|
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
|
-
|
|
122
|
+
OpenGeniClient
|
|
127
123
|
};
|
|
128
|
-
//# sourceMappingURL=chunk-
|
|
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":";;;;;AAyBO,IAAM,iBAAN,cAA6B,gCAAgC;AAAA,EAClE,MAAM,uBACJ,aACA,SACA,UAA0D,CAAC,GACxB;AACnC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC;AAAA,MACjD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,uBACJ,aACA,SACA,UAA0D,CAAC,GACxB;AACnC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC;AAAA,MACjD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,oBACJ,aACA,YACA,SACmC;AACnC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC,uBAAuB,mBAAmB,UAAU,CAAC;AAAA,MACtG;AAAA,MACA,EAAE,WAAW,QAAQ,UAAU;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,6BACJ,aACA,iBACA,SACuC;AACvC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC;AAAA,MACjD;AAAA,MACA,EAAE,iBAAiB,WAAW,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,2BACJ,aACA,YACA,SACA,UAA0D,CAAC,GACX;AAChD,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC,uBAAuB,mBAAmB,UAAU,CAAC;AAAA,MACtG;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,sCACJ,aACA,YACA,SACA,UAA0D,CAAC,GACN;AACrD,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC,uBAAuB,mBAAmB,UAAU,CAAC;AAAA,MACtG;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,mCACJ,aACA,YACA,OACA,SACqD;AACrD,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC,uBAAuB,mBAAmB,UAAU,CAAC,qBAAqB,mBAAmB,KAAK,CAAC;AAAA,MACpJ;AAAA,MACA,EAAE,WAAW,QAAQ,UAAU;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,wCACJ,aACA,YACA,OACA,SACwB;AACxB,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC,uBAAuB,mBAAmB,UAAU,CAAC,qBAAqB,mBAAmB,KAAK,CAAC;AAAA,MACpJ,EAAE,WAAW,QAAQ,UAAU;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA,EAGA,MAAM,sBACJ,aACA,SACA,UAAoC,CAAC,GACH;AAClC,WAAO,KAAK;AAAA,MACV;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,4BACJ,aACA,YACA,kBAC2C;AAC3C,UAAM,UACJ,OAAO,qBAAqB,WACxB,EAAE,WAAW,iBAAiB,IAC7B,oBAAoB,CAAC;AAC5B,UAAM,QAAQ,QAAQ,YAAY,cAAc,mBAAmB,QAAQ,SAAS,CAAC,KAAK;AAC1F,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC,wBAAwB,mBAAmB,UAAU,CAAC,WAAW,KAAK;AAAA,MACvH;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,wBACJ,aACA,SACA,UAAoC,CAAC,GACO;AAC5C,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gCACJ,aACA,YACA,SACA,UAAoC,CAAC,GACO;AAC5C,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kBAAkB,mBAAmB,WAAW,CAAC,wBAAwB,mBAAmB,UAAU,CAAC;AAAA,MACvG;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|