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