@opengeni/sdk 3.3.2 → 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 +7 -2
- package/dist/browser.js +27 -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-JUS2UYRP.js → chunk-NCU5OAN7.js} +27 -2
- package/dist/chunk-NCU5OAN7.js.map +1 -0
- package/dist/{chunk-YXQX7RQT.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-TRNI7KEO.js → chunk-S2NLS3ES.js} +3669 -1281
- 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-QT3KFVDP.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-C2H7HBNP.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-KKRO2VCP.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 +1068 -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 +7 -2
- package/dist/core.js +25 -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 +76 -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 +62 -11
- package/dist/index.js +557 -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/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/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 +2807 -583
- 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 +103 -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 +37 -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 +5697 -1833
- 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 +20 -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 +303 -4
- 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 +603 -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/model-picker-order.ts +6 -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 +3170 -582
- 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-C2H7HBNP.js.map +0 -1
- package/dist/chunk-C4DJPZRU.js +0 -119
- package/dist/chunk-C4DJPZRU.js.map +0 -1
- package/dist/chunk-JUS2UYRP.js.map +0 -1
- package/dist/chunk-KKRO2VCP.js.map +0 -1
- package/dist/chunk-QT3KFVDP.js.map +0 -1
- package/dist/chunk-TRNI7KEO.js.map +0 -1
- package/dist/chunk-VYCTL62C.js.map +0 -1
- package/dist/chunk-YXQX7RQT.js.map +0 -1
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import type { OpenGeniClient } from "./client";
|
|
2
|
+
import type { VaultPolicy } from "./types";
|
|
3
|
+
import type {
|
|
4
|
+
CreateManagedProviderVaultRequest,
|
|
5
|
+
CreateVaultItemRequest,
|
|
6
|
+
CreateVaultRequest,
|
|
7
|
+
DisconnectOnePasswordResponse,
|
|
8
|
+
InstallOnePasswordRequest,
|
|
9
|
+
InstallOnePasswordResponse,
|
|
10
|
+
LinkProviderVaultRequest,
|
|
11
|
+
ListVaultItemsQuery,
|
|
12
|
+
MoveVaultItemRequest,
|
|
13
|
+
OnePasswordConnectionSummary,
|
|
14
|
+
ProviderVaultMeta,
|
|
15
|
+
ReplaceOnePasswordTokenRequest,
|
|
16
|
+
RevealVaultFieldResponse,
|
|
17
|
+
SessionSecretsView,
|
|
18
|
+
UpdateVaultItemRequest,
|
|
19
|
+
UpdateVaultRequest,
|
|
20
|
+
VaultErrorCode,
|
|
21
|
+
VaultFieldVersionMeta,
|
|
22
|
+
VaultItem,
|
|
23
|
+
VaultItemSummary,
|
|
24
|
+
VaultSummary,
|
|
25
|
+
InstallVaultProviderRequest,
|
|
26
|
+
InstallVaultProviderResponse,
|
|
27
|
+
ReplaceVaultProviderCredentialsRequest,
|
|
28
|
+
VaultProviderConnectionSummary,
|
|
29
|
+
ListVaultProviderConnectionsResponse,
|
|
30
|
+
DisconnectVaultProviderResponse,
|
|
31
|
+
} from "./vault-types";
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Vault REST routes over the client's JSON transport. Responses carry metadata
|
|
35
|
+
* only; plaintext comes back only from `revealField`, and callers keep it in
|
|
36
|
+
* memory for as long as they need it, never in a cache.
|
|
37
|
+
*/
|
|
38
|
+
export type VaultClientLike = Pick<OpenGeniClient, "requestJson">;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The client's JSON transport. A client without one still renders (a disabled
|
|
42
|
+
* hook never calls it); each request then fails with a clear error.
|
|
43
|
+
*/
|
|
44
|
+
export function asVaultClient(client: unknown): VaultClientLike {
|
|
45
|
+
if (
|
|
46
|
+
client &&
|
|
47
|
+
typeof client === "object" &&
|
|
48
|
+
"requestJson" in client &&
|
|
49
|
+
typeof (client as { requestJson: unknown }).requestJson === "function"
|
|
50
|
+
) {
|
|
51
|
+
return client as VaultClientLike;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
requestJson: (() =>
|
|
55
|
+
Promise.reject(
|
|
56
|
+
new Error("Vaults need a client with requestJson."),
|
|
57
|
+
)) as VaultClientLike["requestJson"],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const enc = encodeURIComponent;
|
|
62
|
+
|
|
63
|
+
function itemsQuery(query: ListVaultItemsQuery): Record<string, string> {
|
|
64
|
+
const out: Record<string, string> = {};
|
|
65
|
+
if (query.q) out.q = query.q;
|
|
66
|
+
if (query.type) out.type = query.type;
|
|
67
|
+
if (query.includeArchived) out.includeArchived = "true";
|
|
68
|
+
if (query.cursor) out.cursor = query.cursor;
|
|
69
|
+
if (query.limit) out.limit = String(query.limit);
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function vaultsApi(client: VaultClientLike, workspaceId: string) {
|
|
74
|
+
const base = `/v1/workspaces/${enc(workspaceId)}`;
|
|
75
|
+
const vault = (vaultId: string) => `${base}/vaults/${enc(vaultId)}`;
|
|
76
|
+
const item = (vaultId: string, itemId: string) => `${vault(vaultId)}/items/${enc(itemId)}`;
|
|
77
|
+
const field = (vaultId: string, itemId: string, fieldId: string) =>
|
|
78
|
+
`${item(vaultId, itemId)}/fields/${enc(fieldId)}`;
|
|
79
|
+
const json = <T>(
|
|
80
|
+
method: string,
|
|
81
|
+
path: string,
|
|
82
|
+
body?: unknown,
|
|
83
|
+
query?: Record<string, string>,
|
|
84
|
+
signal?: AbortSignal,
|
|
85
|
+
) => client.requestJson<T>(method, path, body, query ?? {}, signal ? { signal } : {});
|
|
86
|
+
return {
|
|
87
|
+
listVaults: async (signal?: AbortSignal) =>
|
|
88
|
+
(await json<{ vaults: VaultSummary[] }>("GET", `${base}/vaults`, undefined, {}, signal))
|
|
89
|
+
.vaults,
|
|
90
|
+
getVault: (vaultId: string, signal?: AbortSignal) =>
|
|
91
|
+
json<VaultSummary>("GET", vault(vaultId), undefined, {}, signal),
|
|
92
|
+
createVault: (request: CreateVaultRequest) =>
|
|
93
|
+
json<VaultSummary>("POST", `${base}/vaults`, request),
|
|
94
|
+
updateVault: (vaultId: string, request: UpdateVaultRequest) =>
|
|
95
|
+
json<VaultSummary>("PATCH", vault(vaultId), request),
|
|
96
|
+
deleteVault: (vaultId: string, confirmName: string) =>
|
|
97
|
+
client.requestJson<void>(
|
|
98
|
+
"DELETE",
|
|
99
|
+
vault(vaultId),
|
|
100
|
+
{ confirmName },
|
|
101
|
+
{},
|
|
102
|
+
{ responseType: "void" },
|
|
103
|
+
),
|
|
104
|
+
syncVault: (vaultId: string) => json<VaultSummary>("POST", `${vault(vaultId)}/sync`, {}),
|
|
105
|
+
listItems: (vaultId: string, query: ListVaultItemsQuery = {}, signal?: AbortSignal) =>
|
|
106
|
+
json<{ items: VaultItemSummary[]; nextCursor: string | null }>(
|
|
107
|
+
"GET",
|
|
108
|
+
`${vault(vaultId)}/items`,
|
|
109
|
+
undefined,
|
|
110
|
+
itemsQuery(query),
|
|
111
|
+
signal,
|
|
112
|
+
),
|
|
113
|
+
getItem: (vaultId: string, itemId: string, signal?: AbortSignal) =>
|
|
114
|
+
json<VaultItem>("GET", item(vaultId, itemId), undefined, {}, signal),
|
|
115
|
+
createItem: (vaultId: string, request: CreateVaultItemRequest) =>
|
|
116
|
+
json<VaultItem>("POST", `${vault(vaultId)}/items`, request),
|
|
117
|
+
updateItem: (vaultId: string, itemId: string, request: UpdateVaultItemRequest) =>
|
|
118
|
+
json<VaultItem>("PATCH", item(vaultId, itemId), request),
|
|
119
|
+
/** Archives; `permanent` deletes an archived item. */
|
|
120
|
+
deleteItem: (vaultId: string, itemId: string, permanent = false) =>
|
|
121
|
+
client.requestJson<void>(
|
|
122
|
+
"DELETE",
|
|
123
|
+
item(vaultId, itemId),
|
|
124
|
+
undefined,
|
|
125
|
+
permanent ? { permanent: "true" } : {},
|
|
126
|
+
{ responseType: "void" },
|
|
127
|
+
),
|
|
128
|
+
restoreItem: (vaultId: string, itemId: string) =>
|
|
129
|
+
json<VaultItem>("POST", `${item(vaultId, itemId)}/restore`, {}),
|
|
130
|
+
moveItem: (vaultId: string, itemId: string, request: MoveVaultItemRequest) =>
|
|
131
|
+
json<VaultItem>("POST", `${item(vaultId, itemId)}/move`, request),
|
|
132
|
+
/** Plaintext. Audited server-side. Never cache the result. */
|
|
133
|
+
revealField: (vaultId: string, itemId: string, fieldId: string, version?: number) =>
|
|
134
|
+
json<RevealVaultFieldResponse>(
|
|
135
|
+
"POST",
|
|
136
|
+
`${field(vaultId, itemId, fieldId)}/reveal`,
|
|
137
|
+
version === undefined ? {} : { version },
|
|
138
|
+
),
|
|
139
|
+
listFieldVersions: async (
|
|
140
|
+
vaultId: string,
|
|
141
|
+
itemId: string,
|
|
142
|
+
fieldId: string,
|
|
143
|
+
signal?: AbortSignal,
|
|
144
|
+
) =>
|
|
145
|
+
(
|
|
146
|
+
await json<{ versions: VaultFieldVersionMeta[] }>(
|
|
147
|
+
"GET",
|
|
148
|
+
`${field(vaultId, itemId, fieldId)}/versions`,
|
|
149
|
+
undefined,
|
|
150
|
+
{},
|
|
151
|
+
signal,
|
|
152
|
+
)
|
|
153
|
+
).versions,
|
|
154
|
+
restoreFieldVersion: (vaultId: string, itemId: string, fieldId: string, version: number) =>
|
|
155
|
+
json<VaultItem>("POST", `${field(vaultId, itemId, fieldId)}/restore`, { version }),
|
|
156
|
+
getSessionSecrets: (sessionId: string, signal?: AbortSignal) =>
|
|
157
|
+
json<SessionSecretsView>(
|
|
158
|
+
"GET",
|
|
159
|
+
`${base}/sessions/${enc(sessionId)}/secrets`,
|
|
160
|
+
undefined,
|
|
161
|
+
{},
|
|
162
|
+
signal,
|
|
163
|
+
),
|
|
164
|
+
setSessionVaultPolicy: (sessionId: string, policy: VaultPolicy) =>
|
|
165
|
+
json<SessionSecretsView>("PUT", `${base}/sessions/${enc(sessionId)}/vault-policy`, {
|
|
166
|
+
policy,
|
|
167
|
+
}),
|
|
168
|
+
installOnePassword: (request: InstallOnePasswordRequest) =>
|
|
169
|
+
json<InstallOnePasswordResponse>("POST", `${base}/connections/1password/install`, request),
|
|
170
|
+
/** The 1Password connections the caller can see. */
|
|
171
|
+
listOnePasswordConnections: async (signal?: AbortSignal) =>
|
|
172
|
+
(
|
|
173
|
+
await json<{ connections: OnePasswordConnectionSummary[] }>(
|
|
174
|
+
"GET",
|
|
175
|
+
`${base}/connections/1password/service-accounts`,
|
|
176
|
+
undefined,
|
|
177
|
+
{},
|
|
178
|
+
signal,
|
|
179
|
+
)
|
|
180
|
+
).connections,
|
|
181
|
+
/** Checks a new service account token and stores it on the same connection. */
|
|
182
|
+
replaceOnePasswordToken: (connectionId: string, request: ReplaceOnePasswordTokenRequest) =>
|
|
183
|
+
json<InstallOnePasswordResponse>(
|
|
184
|
+
"PUT",
|
|
185
|
+
`${base}/connections/${enc(connectionId)}/1password/token`,
|
|
186
|
+
request,
|
|
187
|
+
),
|
|
188
|
+
/** Unlinks the connection's vaults (nothing is deleted in 1Password) and removes its token. */
|
|
189
|
+
disconnectOnePassword: (connectionId: string) =>
|
|
190
|
+
json<DisconnectOnePasswordResponse>(
|
|
191
|
+
"DELETE",
|
|
192
|
+
`${base}/connections/${enc(connectionId)}/1password`,
|
|
193
|
+
),
|
|
194
|
+
listProviderVaults: async (connectionId: string, signal?: AbortSignal) =>
|
|
195
|
+
(
|
|
196
|
+
await json<{ vaults: ProviderVaultMeta[] }>(
|
|
197
|
+
"GET",
|
|
198
|
+
`${base}/connections/${enc(connectionId)}/provider-vaults`,
|
|
199
|
+
undefined,
|
|
200
|
+
{},
|
|
201
|
+
signal,
|
|
202
|
+
)
|
|
203
|
+
).vaults,
|
|
204
|
+
installVaultProvider: (request: InstallVaultProviderRequest) =>
|
|
205
|
+
json<InstallVaultProviderResponse>("POST", `${base}/vault-providers/connections`, request),
|
|
206
|
+
/** Connections plus configured providers, even before the first connection. */
|
|
207
|
+
getVaultProviderCatalog: (signal?: AbortSignal) =>
|
|
208
|
+
json<ListVaultProviderConnectionsResponse>(
|
|
209
|
+
"GET",
|
|
210
|
+
`${base}/vault-providers/connections`,
|
|
211
|
+
undefined,
|
|
212
|
+
{},
|
|
213
|
+
signal,
|
|
214
|
+
),
|
|
215
|
+
listVaultProviderConnections: async (signal?: AbortSignal) =>
|
|
216
|
+
(
|
|
217
|
+
await json<{ connections: VaultProviderConnectionSummary[] }>(
|
|
218
|
+
"GET",
|
|
219
|
+
`${base}/vault-providers/connections`,
|
|
220
|
+
undefined,
|
|
221
|
+
{},
|
|
222
|
+
signal,
|
|
223
|
+
)
|
|
224
|
+
).connections,
|
|
225
|
+
replaceVaultProviderCredentials: (
|
|
226
|
+
connectionId: string,
|
|
227
|
+
request: ReplaceVaultProviderCredentialsRequest,
|
|
228
|
+
) =>
|
|
229
|
+
json<InstallVaultProviderResponse>(
|
|
230
|
+
"PUT",
|
|
231
|
+
`${base}/vault-providers/connections/${enc(connectionId)}/credentials`,
|
|
232
|
+
request,
|
|
233
|
+
),
|
|
234
|
+
disconnectVaultProvider: (connectionId: string) =>
|
|
235
|
+
json<DisconnectVaultProviderResponse>(
|
|
236
|
+
"DELETE",
|
|
237
|
+
`${base}/vault-providers/connections/${enc(connectionId)}`,
|
|
238
|
+
),
|
|
239
|
+
/** Continue verification using the saved credentials, without replaying setup tokens. */
|
|
240
|
+
verifyVaultProviderConnection: (connectionId: string) =>
|
|
241
|
+
json<InstallVaultProviderResponse>(
|
|
242
|
+
"POST",
|
|
243
|
+
`${base}/vault-providers/connections/${enc(connectionId)}/verify`,
|
|
244
|
+
{},
|
|
245
|
+
),
|
|
246
|
+
linkProviderVault: (request: LinkProviderVaultRequest) =>
|
|
247
|
+
json<VaultSummary>("POST", `${base}/vaults/link`, request),
|
|
248
|
+
createManagedProviderVault: (
|
|
249
|
+
connectionId: string,
|
|
250
|
+
request: CreateManagedProviderVaultRequest,
|
|
251
|
+
) =>
|
|
252
|
+
json<VaultSummary>(
|
|
253
|
+
"POST",
|
|
254
|
+
`${base}/connections/${enc(connectionId)}/managed-vaults`,
|
|
255
|
+
request,
|
|
256
|
+
),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export type VaultsApi = ReturnType<typeof vaultsApi>;
|
|
261
|
+
|
|
262
|
+
const VAULT_ERROR_CODES: ReadonlySet<string> = new Set<VaultErrorCode>([
|
|
263
|
+
"vault_not_found",
|
|
264
|
+
"vault_item_not_found",
|
|
265
|
+
"vault_field_not_found",
|
|
266
|
+
"vault_name_conflict",
|
|
267
|
+
"vault_item_name_conflict",
|
|
268
|
+
"vault_limit_reached",
|
|
269
|
+
"vault_read_only",
|
|
270
|
+
"vault_generation_conflict",
|
|
271
|
+
"vault_permission_denied",
|
|
272
|
+
"vault_reveal_requires_human",
|
|
273
|
+
"vault_policy_outside_parent",
|
|
274
|
+
"encryption_key_missing",
|
|
275
|
+
"provider_auth_invalid",
|
|
276
|
+
"provider_auth_expired",
|
|
277
|
+
"provider_rate_limited",
|
|
278
|
+
"provider_unavailable",
|
|
279
|
+
"provider_conflict",
|
|
280
|
+
"provider_locked",
|
|
281
|
+
"provider_inventory_incomplete",
|
|
282
|
+
"provider_outcome_unknown",
|
|
283
|
+
"variable_sets_removed",
|
|
284
|
+
"secret_save_forbidden",
|
|
285
|
+
"invalid_secret_name",
|
|
286
|
+
"secret_value_too_large",
|
|
287
|
+
"human_auth_required",
|
|
288
|
+
"secret_search_cursor_invalid",
|
|
289
|
+
]);
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* The vault error code of a failed call, from either `{error: {code}}` or the
|
|
293
|
+
* vault routes' `{error: "<code>", message}` body. Null for anything else.
|
|
294
|
+
*/
|
|
295
|
+
export function vaultErrorCode(error: unknown): VaultErrorCode | null {
|
|
296
|
+
if (!error || typeof error !== "object") return null;
|
|
297
|
+
const record = error as { code?: unknown; body?: unknown; details?: unknown };
|
|
298
|
+
if (typeof record.code === "string" && VAULT_ERROR_CODES.has(record.code)) {
|
|
299
|
+
return record.code as VaultErrorCode;
|
|
300
|
+
}
|
|
301
|
+
if (typeof record.body === "string" && record.body) {
|
|
302
|
+
try {
|
|
303
|
+
const parsed = JSON.parse(record.body) as { error?: unknown };
|
|
304
|
+
const candidate =
|
|
305
|
+
typeof parsed.error === "string"
|
|
306
|
+
? parsed.error
|
|
307
|
+
: parsed.error && typeof parsed.error === "object"
|
|
308
|
+
? (parsed.error as { code?: unknown }).code
|
|
309
|
+
: undefined;
|
|
310
|
+
if (typeof candidate === "string" && VAULT_ERROR_CODES.has(candidate)) {
|
|
311
|
+
return candidate as VaultErrorCode;
|
|
312
|
+
}
|
|
313
|
+
} catch {
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/** Server-side detail of a vault error (for example `retryAt` on a rate limit). */
|
|
321
|
+
export function vaultErrorDetail(error: unknown, key: string): unknown {
|
|
322
|
+
if (!error || typeof error !== "object") return undefined;
|
|
323
|
+
const record = error as { details?: Record<string, unknown>; body?: unknown };
|
|
324
|
+
if (record.details && key in record.details) return record.details[key];
|
|
325
|
+
if (typeof record.body === "string" && record.body) {
|
|
326
|
+
try {
|
|
327
|
+
const parsed = JSON.parse(record.body) as Record<string, unknown>;
|
|
328
|
+
const nested =
|
|
329
|
+
parsed.error && typeof parsed.error === "object"
|
|
330
|
+
? (parsed.error as Record<string, unknown>)
|
|
331
|
+
: parsed;
|
|
332
|
+
const details = (nested.details ?? parsed.details) as Record<string, unknown> | undefined;
|
|
333
|
+
return details?.[key] ?? nested[key];
|
|
334
|
+
} catch {
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return undefined;
|
|
339
|
+
}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
import type { ToolGatewayIdentity } from "./types";
|
|
2
|
+
|
|
3
|
+
export type WorkspaceArtifactSourceFile = {
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export type WorkspaceArtifactSourceBundle = {
|
|
9
|
+
entrypoint: string;
|
|
10
|
+
files: WorkspaceArtifactSourceFile[];
|
|
11
|
+
};
|
|
12
|
+
|
|
1
13
|
export type WorkspaceArtifactVersion = {
|
|
2
14
|
id: string;
|
|
3
15
|
accountId: string;
|
|
@@ -5,8 +17,11 @@ export type WorkspaceArtifactVersion = {
|
|
|
5
17
|
artifactId: string;
|
|
6
18
|
revision: number;
|
|
7
19
|
contentType: "text/html";
|
|
8
|
-
contentSha256: string;
|
|
20
|
+
contentSha256: string | null;
|
|
9
21
|
sizeBytes: number;
|
|
22
|
+
sourceSha256: string | null;
|
|
23
|
+
sourceSizeBytes: number | null;
|
|
24
|
+
requestedTools: ToolGatewayIdentity[];
|
|
10
25
|
sourceSessionId: string | null;
|
|
11
26
|
sourceTurnId: string | null;
|
|
12
27
|
sourceAttemptId: string | null;
|
|
@@ -15,6 +30,9 @@ export type WorkspaceArtifactVersion = {
|
|
|
15
30
|
createdAt: string;
|
|
16
31
|
};
|
|
17
32
|
|
|
33
|
+
/** Who can see a Site: everyone in the workspace, or only its owner ("Only me"). */
|
|
34
|
+
export type WorkspaceArtifactVisibility = "private" | "workspace";
|
|
35
|
+
|
|
18
36
|
export type WorkspaceArtifact = {
|
|
19
37
|
id: string;
|
|
20
38
|
accountId: string;
|
|
@@ -23,6 +41,10 @@ export type WorkspaceArtifact = {
|
|
|
23
41
|
title: string;
|
|
24
42
|
description: string | null;
|
|
25
43
|
status: "active" | "archived";
|
|
44
|
+
/** Absent from older servers, where every Site is visible to the workspace. */
|
|
45
|
+
visibility?: WorkspaceArtifactVisibility;
|
|
46
|
+
/** The person the Site belongs to; only they can change its audience. */
|
|
47
|
+
ownerSubjectId?: string | null;
|
|
26
48
|
currentVersion: WorkspaceArtifactVersion | null;
|
|
27
49
|
createdBySubjectId: string;
|
|
28
50
|
createdAt: string;
|
|
@@ -34,7 +56,7 @@ export type WorkspaceArtifactEvent = {
|
|
|
34
56
|
accountId: string;
|
|
35
57
|
workspaceId: string;
|
|
36
58
|
artifactId: string;
|
|
37
|
-
type: "published" | "rolled_back";
|
|
59
|
+
type: "published" | "rolled_back" | "archived" | "restored";
|
|
38
60
|
fromVersionId: string | null;
|
|
39
61
|
toVersionId: string;
|
|
40
62
|
sourceSessionId: string | null;
|
|
@@ -46,7 +68,12 @@ export type WorkspaceArtifactEvent = {
|
|
|
46
68
|
createdAt: string;
|
|
47
69
|
};
|
|
48
70
|
|
|
49
|
-
export type WorkspaceArtifactListOptions = {
|
|
71
|
+
export type WorkspaceArtifactListOptions = {
|
|
72
|
+
sourceSessionId?: string;
|
|
73
|
+
limit?: number;
|
|
74
|
+
cursor?: string;
|
|
75
|
+
status?: WorkspaceArtifact["status"];
|
|
76
|
+
};
|
|
50
77
|
export type WorkspaceArtifactListResponse = {
|
|
51
78
|
artifacts: WorkspaceArtifact[];
|
|
52
79
|
nextCursor: string | null;
|
|
@@ -63,8 +90,10 @@ export type WorkspaceArtifactContentResponse = {
|
|
|
63
90
|
artifactId: string;
|
|
64
91
|
versionId: string;
|
|
65
92
|
contentType: "text/html";
|
|
66
|
-
contentSha256: string;
|
|
93
|
+
contentSha256: string | null;
|
|
67
94
|
html: string;
|
|
95
|
+
source: WorkspaceArtifactSourceBundle;
|
|
96
|
+
requestedTools: ToolGatewayIdentity[];
|
|
68
97
|
};
|
|
69
98
|
export type WorkspaceArtifactMutationResponse = {
|
|
70
99
|
artifact: WorkspaceArtifact;
|
|
@@ -76,13 +105,21 @@ export type CreateWorkspaceArtifactRequest = {
|
|
|
76
105
|
slug?: string;
|
|
77
106
|
title: string;
|
|
78
107
|
description?: string | null;
|
|
79
|
-
html
|
|
108
|
+
html?: string;
|
|
109
|
+
uploadId?: string;
|
|
110
|
+
source?: WorkspaceArtifactSourceBundle;
|
|
111
|
+
requestedTools?: ToolGatewayIdentity[];
|
|
112
|
+
/** Who can see the new Site. Omitted: the whole workspace. */
|
|
113
|
+
visibility?: WorkspaceArtifactVisibility;
|
|
80
114
|
idempotencyKey: string;
|
|
81
115
|
};
|
|
82
116
|
export type PublishWorkspaceArtifactVersionRequest = {
|
|
83
117
|
title?: string;
|
|
84
118
|
description?: string | null;
|
|
85
|
-
html
|
|
119
|
+
html?: string;
|
|
120
|
+
uploadId?: string;
|
|
121
|
+
source?: WorkspaceArtifactSourceBundle;
|
|
122
|
+
requestedTools?: ToolGatewayIdentity[];
|
|
86
123
|
expectedCurrentVersionId: string;
|
|
87
124
|
idempotencyKey: string;
|
|
88
125
|
};
|
|
@@ -92,3 +129,15 @@ export type RollbackWorkspaceArtifactRequest = {
|
|
|
92
129
|
reason: string;
|
|
93
130
|
idempotencyKey: string;
|
|
94
131
|
};
|
|
132
|
+
export type SetWorkspaceArtifactStatusRequest = {
|
|
133
|
+
status: "active" | "archived";
|
|
134
|
+
expectedCurrentVersionId: string;
|
|
135
|
+
reason: string;
|
|
136
|
+
idempotencyKey: string;
|
|
137
|
+
};
|
|
138
|
+
export type UpdateWorkspaceArtifactVisibilityRequest = {
|
|
139
|
+
visibility: WorkspaceArtifactVisibility;
|
|
140
|
+
};
|
|
141
|
+
export type UpdateWorkspaceArtifactVisibilityResponse = {
|
|
142
|
+
artifact: WorkspaceArtifact;
|
|
143
|
+
};
|
|
@@ -5,11 +5,12 @@ export type WorkspaceInstructionPolicyScope = "global" | "role";
|
|
|
5
5
|
export type WorkspaceInstructionPolicyProvenanceSource =
|
|
6
6
|
| "human"
|
|
7
7
|
| "onboarding"
|
|
8
|
+
| "agent_learning"
|
|
8
9
|
| "knowledge_proposal"
|
|
9
10
|
| "legacy_import";
|
|
10
11
|
export type WorkspaceInstructionPolicyDraftProvenanceSource = Exclude<
|
|
11
12
|
WorkspaceInstructionPolicyProvenanceSource,
|
|
12
|
-
"legacy_import"
|
|
13
|
+
"legacy_import" | "agent_learning"
|
|
13
14
|
>;
|
|
14
15
|
export type WorkspaceInstructionPolicyActivationType = "activate" | "rollback";
|
|
15
16
|
|