@opengeni/sdk 3.1.2 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/artifacts.js +3 -3
  2. package/dist/browser.js +1 -1
  3. package/dist/chat/index.js +4 -4
  4. package/dist/{chunk-NEM5N6C6.js → chunk-JKG75TTU.js} +35 -1
  5. package/dist/chunk-JKG75TTU.js.map +1 -0
  6. package/dist/{chunk-YDVPI7WT.js → chunk-JP62FZSI.js} +2 -2
  7. package/dist/chunk-KGEABAID.js +71 -0
  8. package/dist/chunk-KGEABAID.js.map +1 -0
  9. package/dist/{chunk-S3D75WSQ.js → chunk-N2I422X4.js} +2 -2
  10. package/dist/{chunk-JXXCTW5W.js → chunk-PBVUAXSU.js} +2 -2
  11. package/dist/{chunk-OAKHWFSV.js → chunk-PDU6EU2M.js} +2 -2
  12. package/dist/{chunk-RJHCBZF7.js → chunk-VT4YM4XQ.js} +8 -68
  13. package/dist/{chunk-RJHCBZF7.js.map → chunk-VT4YM4XQ.js.map} +1 -1
  14. package/dist/core.js +2 -2
  15. package/dist/document-authority.js +2 -2
  16. package/dist/external-vault-receiver.d.ts +203 -0
  17. package/dist/external-vault-receiver.js +564 -0
  18. package/dist/external-vault-receiver.js.map +1 -0
  19. package/dist/index.js +13 -11
  20. package/dist/index.js.map +1 -1
  21. package/dist/site-bridge-host.js +2 -2
  22. package/dist/site-browser-runtime.gen.d.ts +1 -1
  23. package/dist/site-document.js +1 -1
  24. package/dist/site-document.js.map +1 -1
  25. package/dist/site.js +2 -2
  26. package/dist/vault-types.d.ts +91 -3
  27. package/dist/vaults-api.d.ts +9 -1
  28. package/dist/workspace-integrations.js +11 -9
  29. package/package.json +7 -3
  30. package/src/external-vault-receiver.ts +914 -0
  31. package/src/site-browser-runtime.gen.ts +1 -1
  32. package/src/vault-types.ts +88 -2
  33. package/src/vaults-api.ts +51 -0
  34. package/dist/chunk-NEM5N6C6.js.map +0 -1
  35. /package/dist/{chunk-YDVPI7WT.js.map → chunk-JP62FZSI.js.map} +0 -0
  36. /package/dist/{chunk-S3D75WSQ.js.map → chunk-N2I422X4.js.map} +0 -0
  37. /package/dist/{chunk-JXXCTW5W.js.map → chunk-PBVUAXSU.js.map} +0 -0
  38. /package/dist/{chunk-OAKHWFSV.js.map → chunk-PDU6EU2M.js.map} +0 -0
@@ -6,12 +6,44 @@ import type { VaultPolicy } from "./types";
6
6
  export type { VaultPolicy };
7
7
 
8
8
  export type VaultOwnerKind = "user" | "workspace" | "organization" | "task";
9
- export type VaultSource = "opengeni" | "onepassword" | "host";
9
+ export type VaultSource =
10
+ | "opengeni"
11
+ | "onepassword"
12
+ | "host"
13
+ | "external"
14
+ | "protonpass"
15
+ | "keeper"
16
+ | "bitwarden";
10
17
  export type VaultMode = "read_write" | "read_only";
11
18
  export type VaultSyncStatus = "ok" | "syncing" | "error" | "auth_expired" | "rate_limited";
12
19
  export type VaultItemType = "login" | "api_key" | "note" | "file" | "passkey";
13
20
  export type VaultFieldKind = "text" | "concealed" | "totp" | "file";
14
21
 
22
+ export type VaultProviderOperations = {
23
+ createItemTypes: VaultItemType[];
24
+ updateItem: boolean;
25
+ removeField: boolean;
26
+ archiveItem: boolean;
27
+ archiveKind: "archive" | "trash" | "none";
28
+ deleteItem: false;
29
+ restoreItem: boolean;
30
+ readFiles: boolean;
31
+ writeFiles: boolean;
32
+ createTotp: boolean;
33
+ updateTotp: boolean;
34
+ createVault: boolean;
35
+ restoreFieldHistory: boolean;
36
+ };
37
+
38
+ export type VaultProviderFreshness = {
39
+ state: "current" | "stale" | "refreshing" | "unavailable";
40
+ lastCheckedAt: string | null;
41
+ sourceSyncedAt: string | null;
42
+ source: "live" | "cache" | "unknown";
43
+ errorCode: string | null;
44
+ retryAt: string | null;
45
+ };
46
+
15
47
  export type VaultAvailability = {
16
48
  /** null = every workspace in the organization. */
17
49
  allowedWorkspaceIds: string[] | null;
@@ -34,6 +66,8 @@ export type VaultSummary = {
34
66
  lastSyncedAt: string | null;
35
67
  rateLimitedUntil: string | null;
36
68
  providerConnectionId: string | null;
69
+ providerOperations?: VaultProviderOperations | undefined;
70
+ freshness?: VaultProviderFreshness | undefined;
37
71
  availability: VaultAvailability | null;
38
72
  isDefault: boolean;
39
73
  itemCount: number;
@@ -215,6 +249,8 @@ export type ProviderVaultMeta = {
215
249
  name: string;
216
250
  itemCount: number | null;
217
251
  linkedVaultId: string | null;
252
+ writeAccess?: "read_only" | "read_write" | "unknown" | undefined;
253
+ operations?: VaultProviderOperations | undefined;
218
254
  };
219
255
 
220
256
  export type InstallOnePasswordResponse = {
@@ -252,7 +288,7 @@ export type DisconnectOnePasswordResponse = {
252
288
  };
253
289
 
254
290
  export type LinkProviderVaultRequest = {
255
- provider: "onepassword" | "host";
291
+ provider: Exclude<VaultSource, "opengeni">;
256
292
  connectionId?: string | undefined;
257
293
  externalVaultId: string;
258
294
  ownerKind: "user" | "workspace" | "organization";
@@ -285,9 +321,59 @@ export type VaultErrorCode =
285
321
  | "provider_rate_limited"
286
322
  | "provider_unavailable"
287
323
  | "provider_conflict"
324
+ | "provider_locked"
325
+ | "provider_inventory_incomplete"
326
+ | "provider_outcome_unknown"
288
327
  | "variable_sets_removed"
289
328
  | "secret_save_forbidden"
290
329
  | "invalid_secret_name"
291
330
  | "secret_value_too_large"
292
331
  | "human_auth_required"
293
332
  | "secret_search_cursor_invalid";
333
+
334
+ export type ExternalVaultProviderKind = "external" | "protonpass" | "keeper" | "bitwarden";
335
+ export type VaultProviderCredentials =
336
+ | { provider: "external"; endpoint: string; signingSecret: string }
337
+ | { provider: "bitwarden"; endpoint: string; signingSecret: string }
338
+ | { provider: "protonpass"; token: string }
339
+ | { provider: "keeper"; oneTimeToken: string; hostname?: string | undefined };
340
+ export type InstallVaultProviderRequest = {
341
+ credentials: VaultProviderCredentials;
342
+ ownership: "user" | "workspace" | "organization";
343
+ label?: string | undefined;
344
+ };
345
+ export type ReplaceVaultProviderCredentialsRequest = { credentials: VaultProviderCredentials };
346
+ export type VaultProviderConnectionSummary = {
347
+ id: string;
348
+ provider: "onepassword" | ExternalVaultProviderKind;
349
+ ownership: "user" | "workspace" | "organization";
350
+ accountName: string | null;
351
+ label: string | null;
352
+ verifiedAt: string;
353
+ createdAt: string;
354
+ createdBySubjectId: string | null;
355
+ canManage: boolean;
356
+ operations: VaultProviderOperations;
357
+ planTier?: OnePasswordPlanTier | undefined;
358
+ available: boolean;
359
+ verificationStatus?: "ready" | "pending" | undefined;
360
+ };
361
+ export type ListVaultProviderConnectionsResponse = {
362
+ connections: VaultProviderConnectionSummary[];
363
+ providers?: VaultProviderAvailability[] | undefined;
364
+ };
365
+ export type VaultProviderAvailability = {
366
+ provider: VaultProviderConnectionSummary["provider"];
367
+ available: boolean;
368
+ reason: "not_enabled" | null;
369
+ };
370
+ export type InstallVaultProviderResponse = {
371
+ connectionId: string;
372
+ accountName: string | null;
373
+ provider: ExternalVaultProviderKind;
374
+ operations: VaultProviderOperations;
375
+ vaults: ProviderVaultMeta[];
376
+ discoveryPending?: boolean | undefined;
377
+ errorCode?: string | undefined;
378
+ };
379
+ export type DisconnectVaultProviderResponse = { unlinkedVaultIds: string[] };
package/src/vaults-api.ts CHANGED
@@ -22,6 +22,12 @@ import type {
22
22
  VaultItem,
23
23
  VaultItemSummary,
24
24
  VaultSummary,
25
+ InstallVaultProviderRequest,
26
+ InstallVaultProviderResponse,
27
+ ReplaceVaultProviderCredentialsRequest,
28
+ VaultProviderConnectionSummary,
29
+ ListVaultProviderConnectionsResponse,
30
+ DisconnectVaultProviderResponse,
25
31
  } from "./vault-types";
26
32
 
27
33
  /**
@@ -195,6 +201,48 @@ export function vaultsApi(client: VaultClientLike, workspaceId: string) {
195
201
  signal,
196
202
  )
197
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
+ ),
198
246
  linkProviderVault: (request: LinkProviderVaultRequest) =>
199
247
  json<VaultSummary>("POST", `${base}/vaults/link`, request),
200
248
  createManagedProviderVault: (
@@ -229,6 +277,9 @@ const VAULT_ERROR_CODES: ReadonlySet<string> = new Set<VaultErrorCode>([
229
277
  "provider_rate_limited",
230
278
  "provider_unavailable",
231
279
  "provider_conflict",
280
+ "provider_locked",
281
+ "provider_inventory_incomplete",
282
+ "provider_outcome_unknown",
232
283
  "variable_sets_removed",
233
284
  "secret_save_forbidden",
234
285
  "invalid_secret_name",