@vibesdotdev/integrations 0.0.0-stage → 1.0.0-rc.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.
- package/LICENSE +18 -0
- package/README.md +100 -2
- package/dist/ai/ai.cloud.plugin.d.ts +5 -0
- package/dist/ai/ai.cloud.plugin.d.ts.map +1 -0
- package/dist/ai/ai.cloud.plugin.js +67 -0
- package/dist/ai/ai.cloud.plugin.js.map +1 -0
- package/dist/ai/ai.plugin.d.ts +5 -0
- package/dist/ai/ai.plugin.d.ts.map +1 -0
- package/dist/ai/ai.plugin.js +97 -0
- package/dist/ai/ai.plugin.js.map +1 -0
- package/dist/base/base.plugin.d.ts +10 -0
- package/dist/base/base.plugin.d.ts.map +1 -0
- package/dist/base/base.plugin.js +23 -0
- package/dist/base/base.plugin.js.map +1 -0
- package/dist/base/index.d.ts +13 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +15 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/resolver.d.ts +13 -0
- package/dist/base/resolver.d.ts.map +1 -0
- package/dist/base/resolver.js +30 -0
- package/dist/base/resolver.js.map +1 -0
- package/dist/base/schemas.d.ts +167 -0
- package/dist/base/schemas.d.ts.map +1 -0
- package/dist/base/schemas.js +48 -0
- package/dist/base/schemas.js.map +1 -0
- package/dist/catalog/index.d.ts +6 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +6 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/catalog/integration-catalog.capability.d.ts +14 -0
- package/dist/catalog/integration-catalog.capability.d.ts.map +1 -0
- package/dist/catalog/integration-catalog.capability.js +23 -0
- package/dist/catalog/integration-catalog.capability.js.map +1 -0
- package/dist/catalog/integration-catalog.descriptor.d.ts +6 -0
- package/dist/catalog/integration-catalog.descriptor.d.ts.map +1 -0
- package/dist/catalog/integration-catalog.descriptor.js +11 -0
- package/dist/catalog/integration-catalog.descriptor.js.map +1 -0
- package/dist/catalog/integration-catalog.exposure.d.ts +62 -0
- package/dist/catalog/integration-catalog.exposure.d.ts.map +1 -0
- package/dist/catalog/integration-catalog.exposure.js +101 -0
- package/dist/catalog/integration-catalog.exposure.js.map +1 -0
- package/dist/catalog/integration-catalog.http.d.ts +9 -0
- package/dist/catalog/integration-catalog.http.d.ts.map +1 -0
- package/dist/catalog/integration-catalog.http.js +58 -0
- package/dist/catalog/integration-catalog.http.js.map +1 -0
- package/dist/catalog/integration-catalog.kind.d.ts +36 -0
- package/dist/catalog/integration-catalog.kind.d.ts.map +1 -0
- package/dist/catalog/integration-catalog.kind.js +14 -0
- package/dist/catalog/integration-catalog.kind.js.map +1 -0
- package/dist/catalog/queries.d.ts +6 -0
- package/dist/catalog/queries.d.ts.map +1 -0
- package/dist/catalog/queries.js +29 -0
- package/dist/catalog/queries.js.map +1 -0
- package/dist/client/helper.d.ts +5 -0
- package/dist/client/helper.d.ts.map +1 -0
- package/dist/client/helper.js +6 -0
- package/dist/client/helper.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/integrations.runtime-client.browser.d.ts +10 -0
- package/dist/client/integrations.runtime-client.browser.d.ts.map +1 -0
- package/dist/client/integrations.runtime-client.browser.js +13 -0
- package/dist/client/integrations.runtime-client.browser.js.map +1 -0
- package/dist/client/integrations.runtime-client.d.ts +25 -0
- package/dist/client/integrations.runtime-client.d.ts.map +1 -0
- package/dist/client/integrations.runtime-client.descriptor.d.ts +4 -0
- package/dist/client/integrations.runtime-client.descriptor.d.ts.map +1 -0
- package/dist/client/integrations.runtime-client.descriptor.js +13 -0
- package/dist/client/integrations.runtime-client.descriptor.js.map +1 -0
- package/dist/client/integrations.runtime-client.js +41 -0
- package/dist/client/integrations.runtime-client.js.map +1 -0
- package/dist/docs/integrations.docs.descriptor.d.ts +4 -0
- package/dist/docs/integrations.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/integrations.docs.descriptor.js +43 -0
- package/dist/docs/integrations.docs.descriptor.js.map +1 -0
- package/dist/docs/integrations.providers.docs.descriptor.d.ts +4 -0
- package/dist/docs/integrations.providers.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/integrations.providers.docs.descriptor.js +32 -0
- package/dist/docs/integrations.providers.docs.descriptor.js.map +1 -0
- package/dist/http/fetch-with-retry.d.ts +27 -0
- package/dist/http/fetch-with-retry.d.ts.map +1 -0
- package/dist/http/fetch-with-retry.js +76 -0
- package/dist/http/fetch-with-retry.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations.browser.plugin.d.ts +11 -0
- package/dist/integrations.browser.plugin.d.ts.map +1 -0
- package/dist/integrations.browser.plugin.js +26 -0
- package/dist/integrations.browser.plugin.js.map +1 -0
- package/dist/integrations.consumer.plugin.d.ts +3 -0
- package/dist/integrations.consumer.plugin.d.ts.map +1 -0
- package/dist/integrations.consumer.plugin.js +12 -0
- package/dist/integrations.consumer.plugin.js.map +1 -0
- package/dist/integrations.plugin.d.ts +10 -0
- package/dist/integrations.plugin.d.ts.map +1 -0
- package/dist/integrations.plugin.js +67 -0
- package/dist/integrations.plugin.js.map +1 -0
- package/dist/kinds/integration-store.context.descriptor.d.ts +31 -0
- package/dist/kinds/integration-store.context.descriptor.d.ts.map +1 -0
- package/dist/kinds/integration-store.context.descriptor.js +8 -0
- package/dist/kinds/integration-store.context.descriptor.js.map +1 -0
- package/dist/kinds/integration.kind.d.ts +74 -0
- package/dist/kinds/integration.kind.d.ts.map +1 -0
- package/dist/kinds/integration.kind.js +542 -0
- package/dist/kinds/integration.kind.js.map +1 -0
- package/dist/kinds/integration.store.d.ts +30 -0
- package/dist/kinds/integration.store.d.ts.map +1 -0
- package/dist/kinds/integration.store.js +295 -0
- package/dist/kinds/integration.store.js.map +1 -0
- package/dist/schemas/boundary.d.ts +7 -0
- package/dist/schemas/boundary.d.ts.map +1 -0
- package/dist/schemas/boundary.js +16 -0
- package/dist/schemas/boundary.js.map +1 -0
- package/dist/schemas/catalog.d.ts +135 -0
- package/dist/schemas/catalog.d.ts.map +1 -0
- package/dist/schemas/catalog.js +13 -0
- package/dist/schemas/catalog.js.map +1 -0
- package/dist/schemas/credential-resolution.d.ts +35 -0
- package/dist/schemas/credential-resolution.d.ts.map +1 -0
- package/dist/schemas/credential-resolution.js +14 -0
- package/dist/schemas/credential-resolution.js.map +1 -0
- package/dist/schemas/http-retry.d.ts +9 -0
- package/dist/schemas/http-retry.d.ts.map +1 -0
- package/dist/schemas/http-retry.js +8 -0
- package/dist/schemas/http-retry.js.map +1 -0
- package/dist/schemas/integration-connection.d.ts +79 -0
- package/dist/schemas/integration-connection.d.ts.map +1 -0
- package/dist/schemas/integration-connection.js +55 -0
- package/dist/schemas/integration-connection.js.map +1 -0
- package/dist/schemas/integration-descriptor.d.ts +358 -0
- package/dist/schemas/integration-descriptor.d.ts.map +1 -0
- package/dist/schemas/integration-descriptor.js +153 -0
- package/dist/schemas/integration-descriptor.js.map +1 -0
- package/dist/schemas/oauth-state.d.ts +30 -0
- package/dist/schemas/oauth-state.d.ts.map +1 -0
- package/dist/schemas/oauth-state.js +26 -0
- package/dist/schemas/oauth-state.js.map +1 -0
- package/dist/schemas/settings.d.ts +9 -0
- package/dist/schemas/settings.d.ts.map +1 -0
- package/dist/schemas/settings.js +8 -0
- package/dist/schemas/settings.js.map +1 -0
- package/dist/schemas/store.d.ts +68 -0
- package/dist/schemas/store.d.ts.map +1 -0
- package/dist/schemas/store.js +31 -0
- package/dist/schemas/store.js.map +1 -0
- package/dist/server/defaults/system-defaults.kind.d.ts +8 -0
- package/dist/server/defaults/system-defaults.kind.d.ts.map +1 -0
- package/dist/server/defaults/system-defaults.kind.js +13 -0
- package/dist/server/defaults/system-defaults.kind.js.map +1 -0
- package/dist/server/integration-oauth.d.ts +44 -0
- package/dist/server/integration-oauth.d.ts.map +1 -0
- package/dist/server/integration-oauth.js +56 -0
- package/dist/server/integration-oauth.js.map +1 -0
- package/dist/server/integration-secrets.d.ts +11 -0
- package/dist/server/integration-secrets.d.ts.map +1 -0
- package/dist/server/integration-secrets.js +98 -0
- package/dist/server/integration-secrets.js.map +1 -0
- package/dist/server/oauth-state.d.ts +74 -0
- package/dist/server/oauth-state.d.ts.map +1 -0
- package/dist/server/oauth-state.js +208 -0
- package/dist/server/oauth-state.js.map +1 -0
- package/dist/server/schemas/integration-oauth.d.ts +32 -0
- package/dist/server/schemas/integration-oauth.d.ts.map +1 -0
- package/dist/server/schemas/integration-oauth.js +20 -0
- package/dist/server/schemas/integration-oauth.js.map +1 -0
- package/dist/server/schemas/integration-secrets.d.ts +165 -0
- package/dist/server/schemas/integration-secrets.d.ts.map +1 -0
- package/dist/server/schemas/integration-secrets.js +72 -0
- package/dist/server/schemas/integration-secrets.js.map +1 -0
- package/dist/server/schemas/system-defaults.d.ts +124 -0
- package/dist/server/schemas/system-defaults.d.ts.map +1 -0
- package/dist/server/schemas/system-defaults.js +48 -0
- package/dist/server/schemas/system-defaults.js.map +1 -0
- package/dist/server/system-defaults.d.ts +20 -0
- package/dist/server/system-defaults.d.ts.map +1 -0
- package/dist/server/system-defaults.js +58 -0
- package/dist/server/system-defaults.js.map +1 -0
- package/dist/settings/context.d.ts +11 -0
- package/dist/settings/context.d.ts.map +1 -0
- package/dist/settings/context.js +19 -0
- package/dist/settings/context.js.map +1 -0
- package/dist/settings/system-settings-reader.context.descriptor.d.ts +43 -0
- package/dist/settings/system-settings-reader.context.descriptor.d.ts.map +1 -0
- package/dist/settings/system-settings-reader.context.descriptor.js +23 -0
- package/dist/settings/system-settings-reader.context.descriptor.js.map +1 -0
- package/dist/status/integration-connect.availability.d.ts +16 -0
- package/dist/status/integration-connect.availability.d.ts.map +1 -0
- package/dist/status/integration-connect.availability.js +14 -0
- package/dist/status/integration-connect.availability.js.map +1 -0
- package/dist/status/integration-connection-status.d.ts +18 -0
- package/dist/status/integration-connection-status.d.ts.map +1 -0
- package/dist/status/integration-connection-status.js +17 -0
- package/dist/status/integration-connection-status.js.map +1 -0
- package/dist/status/integration-connection.capability.d.ts +19 -0
- package/dist/status/integration-connection.capability.d.ts.map +1 -0
- package/dist/status/integration-connection.capability.js +15 -0
- package/dist/status/integration-connection.capability.js.map +1 -0
- package/dist/status/integration-connection.kind.d.ts +55 -0
- package/dist/status/integration-connection.kind.d.ts.map +1 -0
- package/dist/status/integration-connection.kind.js +31 -0
- package/dist/status/integration-connection.kind.js.map +1 -0
- package/dist/status/integration-connection.queries.d.ts +25 -0
- package/dist/status/integration-connection.queries.d.ts.map +1 -0
- package/dist/status/integration-connection.queries.js +65 -0
- package/dist/status/integration-connection.queries.js.map +1 -0
- package/dist/svelte/components/IntegrationsCatalog.svelte +201 -0
- package/dist/svelte/components/IntegrationsCatalog.svelte.d.ts +5 -0
- package/dist/svelte/components/IntegrationsCatalog.svelte.d.ts.map +1 -0
- package/dist/svelte/components/IntegrationsLoader.svelte +46 -0
- package/dist/svelte/components/IntegrationsLoader.svelte.d.ts +12 -0
- package/dist/svelte/components/IntegrationsLoader.svelte.d.ts.map +1 -0
- package/dist/svelte/connect-action.d.ts +20 -0
- package/dist/svelte/connect-action.d.ts.map +1 -0
- package/dist/svelte/connect-action.js +40 -0
- package/dist/svelte/docs/integrations-svelte.catalog.docs.descriptor.d.ts +4 -0
- package/dist/svelte/docs/integrations-svelte.catalog.docs.descriptor.d.ts.map +1 -0
- package/dist/svelte/docs/integrations-svelte.catalog.docs.descriptor.js +30 -0
- package/dist/svelte/index.d.ts +12 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +7 -0
- package/dist/svelte/integrations-svelte.plugin.d.ts +10 -0
- package/dist/svelte/integrations-svelte.plugin.d.ts.map +1 -0
- package/dist/svelte/integrations-svelte.plugin.js +16 -0
- package/dist/svelte/loaders.d.ts +17 -0
- package/dist/svelte/loaders.d.ts.map +1 -0
- package/dist/svelte/loaders.js +17 -0
- package/dist/svelte/runtime.d.ts +12 -0
- package/dist/svelte/runtime.d.ts.map +1 -0
- package/dist/svelte/runtime.js +11 -0
- package/dist/svelte/state.svelte.d.ts +30 -0
- package/dist/svelte/state.svelte.d.ts.map +1 -0
- package/dist/svelte/state.svelte.js +133 -0
- package/dist/svelte/styles.css +2 -0
- package/dist/svelte/types.d.ts +13 -0
- package/dist/svelte/types.d.ts.map +1 -0
- package/dist/svelte/types.js +1 -0
- package/package.json +223 -4
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
3
|
+
import { CredentialReferenceSchema } from '@vibesdotdev/kernel/credentials';
|
|
4
|
+
import { JsonValueSchema } from '@vibesdotdev/kernel/schemas/json';
|
|
5
|
+
import { IntegrationConnectionMetadataSchema } from "./integration-connection.js";
|
|
6
|
+
import { managedSecretScopeSchema, CredentialCandidatesSchema, OAuthClientAuthenticationSchema, OAuthTokenBodyEncodingSchema, OAuthTokenRequestHeadersSchema, OAuthAuthorizationCodeTokenResponseSchema } from '@vibesdotdev/secrets/schemas';
|
|
7
|
+
export const IntegrationConfigValueSchema = JsonValueSchema;
|
|
8
|
+
export const IntegrationConfigSchema = z.record(z.string(), IntegrationConfigValueSchema);
|
|
9
|
+
export const IntegrationOperationInputSchema = IntegrationConfigValueSchema.optional();
|
|
10
|
+
export const IntegrationCredentialKeySchema = z.string().trim().min(1).max(128);
|
|
11
|
+
export const IntegrationCredentialReferenceCandidatesSchema = CredentialCandidatesSchema;
|
|
12
|
+
export const IntegrationCredentialSourceSchema = z.object({
|
|
13
|
+
key: IntegrationCredentialKeySchema,
|
|
14
|
+
source: z.enum(['secret', 'setting']),
|
|
15
|
+
/** Runtime-owned credential reference; settings must contain this shape too. */
|
|
16
|
+
reference: CredentialReferenceSchema.optional(),
|
|
17
|
+
providerType: z.string().optional(),
|
|
18
|
+
/** A selected scope marks a tenant-managed credential; no scope is a host reference. */
|
|
19
|
+
scope: managedSecretScopeSchema.optional(),
|
|
20
|
+
scopeId: z.string().trim().min(1).optional(),
|
|
21
|
+
settingKey: z.string().optional(),
|
|
22
|
+
required: z.boolean().default(false)
|
|
23
|
+
}).superRefine((source, context) => {
|
|
24
|
+
if (source.source === 'setting' && !source.settingKey) {
|
|
25
|
+
context.addIssue({ code: 'custom', path: ['settingKey'], message: 'A credential setting key is required.' });
|
|
26
|
+
}
|
|
27
|
+
if (source.source === 'secret' && source.settingKey) {
|
|
28
|
+
context.addIssue({ code: 'custom', path: ['settingKey'], message: 'A direct secret source cannot select a setting.' });
|
|
29
|
+
}
|
|
30
|
+
if (source.scope !== undefined && source.scope !== 'org' && !source.scopeId) {
|
|
31
|
+
context.addIssue({ code: 'custom', path: ['scopeId'], message: 'A non-organization credential scope requires a scope id.' });
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* OAuth 2.0 endpoint metadata. When present, the runtime's generic
|
|
36
|
+
* `/api/integrations/[id]/connect` + `/[id]/callback` routes can drive the
|
|
37
|
+
* authorization-code flow without provider-specific wiring. Per-provider
|
|
38
|
+
* quirks (e.g. QuickBooks `realmId`, Microsoft `tenant`) are forwarded
|
|
39
|
+
* through `IntegrationOAuthCompletion.params` and handled by the
|
|
40
|
+
* implementation override of `completeAuthorization`.
|
|
41
|
+
*/
|
|
42
|
+
export const IntegrationOAuthMetadataSchema = z.object({
|
|
43
|
+
authorizationEndpoint: z.url(),
|
|
44
|
+
tokenEndpoint: z.url(),
|
|
45
|
+
scopes: z.array(z.string()).default([]),
|
|
46
|
+
authorizationParams: z.record(z.string(), z.string()).superRefine((params, context) => {
|
|
47
|
+
for (const key of Object.keys(params)) {
|
|
48
|
+
if (['clientid', 'clientsecret', 'redirecturi', 'responsetype', 'state'].includes(key.replaceAll('_', '').toLowerCase()))
|
|
49
|
+
context.addIssue({ code: 'custom', path: [key], message: 'OAuth control and secret fields belong to the owner.' });
|
|
50
|
+
}
|
|
51
|
+
}).optional(),
|
|
52
|
+
configFromCallback: z.array(z.string().refine(key => !['clientsecret', 'accesstoken', 'refreshtoken', 'code', 'state'].includes(key.replaceAll('_', '').toLowerCase()), 'Credentials and OAuth control data cannot become configuration.')).default([]),
|
|
53
|
+
clientAuthentication: OAuthClientAuthenticationSchema.default('basic'),
|
|
54
|
+
bodyEncoding: OAuthTokenBodyEncodingSchema.default('form'),
|
|
55
|
+
headers: OAuthTokenRequestHeadersSchema.default({}),
|
|
56
|
+
scopeIdCallbackParam: z.string().optional()
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Declarative operation registry on an integration descriptor. Each
|
|
60
|
+
* operation is a named verb (e.g. `'sync'`, `'invalidate-cache'`) that the
|
|
61
|
+
* provider implementation handles via `invokeOperation(id, args)`. The
|
|
62
|
+
* runtime exposes operations through generic
|
|
63
|
+
* `POST /api/integrations/[id]/operations/[opId]` routes, so apps never
|
|
64
|
+
* need provider-specific endpoints.
|
|
65
|
+
*/
|
|
66
|
+
export const IntegrationOperationSchema = z.object({
|
|
67
|
+
id: z.string().min(1),
|
|
68
|
+
name: z.string().min(1),
|
|
69
|
+
description: z.string().optional(),
|
|
70
|
+
requiresOrg: z.boolean().default(true)
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Functional category of an integration provider. Filters the catalog by
|
|
74
|
+
* the *kind of work* a provider does (email delivery vs accounting sync vs
|
|
75
|
+
* vcs hosting), independent of the vendor identity. Higher-level features
|
|
76
|
+
* (e.g. `packages/email`) query `integration/provider` by category to
|
|
77
|
+
* discover all eligible vendors at dispatch time.
|
|
78
|
+
*
|
|
79
|
+
* The enum is closed on purpose — vendors can't typo a category, and
|
|
80
|
+
* higher-level features can pattern-match exhaustively. Grow it as new
|
|
81
|
+
* categories appear in the codebase; passthrough strings are not allowed.
|
|
82
|
+
*/
|
|
83
|
+
export const IntegrationCategorySchema = z.enum([
|
|
84
|
+
'accounting',
|
|
85
|
+
'vcs',
|
|
86
|
+
'issue-tracker',
|
|
87
|
+
'productivity',
|
|
88
|
+
'ocr',
|
|
89
|
+
'email',
|
|
90
|
+
'messaging',
|
|
91
|
+
'sms',
|
|
92
|
+
'push',
|
|
93
|
+
'storage',
|
|
94
|
+
'analytics',
|
|
95
|
+
'observability',
|
|
96
|
+
'crm',
|
|
97
|
+
'calendar',
|
|
98
|
+
'webhook',
|
|
99
|
+
'other'
|
|
100
|
+
]);
|
|
101
|
+
export const IntegrationProviderDescriptorSchema = RuntimeDescriptorSchema.extend({
|
|
102
|
+
kind: z.literal('integration/provider'),
|
|
103
|
+
requiredContext: RuntimeDescriptorSchema.shape.requiredContext.default(['integration/store']),
|
|
104
|
+
optionalContext: RuntimeDescriptorSchema.shape.optionalContext.default(['system/settings-reader']),
|
|
105
|
+
provider: z.string().default('custom'),
|
|
106
|
+
category: IntegrationCategorySchema.default('other'),
|
|
107
|
+
priority: z.number().int().default(0),
|
|
108
|
+
baseUrl: z.url().optional(),
|
|
109
|
+
config: IntegrationConfigSchema.default({}),
|
|
110
|
+
/** Host-credential destinations/configuration stay declared by the provider. */
|
|
111
|
+
protectedConfigKeys: z.array(z.string().min(1)).default([]),
|
|
112
|
+
/** Host declarations never read or select tenant account configuration. */
|
|
113
|
+
configurationSource: z.enum(['account', 'host']).optional(),
|
|
114
|
+
configSettingKey: z.string().optional(),
|
|
115
|
+
credentials: z.array(IntegrationCredentialSourceSchema).default([]),
|
|
116
|
+
oauth: IntegrationOAuthMetadataSchema.optional(),
|
|
117
|
+
operations: z.array(IntegrationOperationSchema).default([]),
|
|
118
|
+
/**
|
|
119
|
+
* Declared authentication/connection behavior. Absent means undeclared —
|
|
120
|
+
* never inferred from the id, category or credential shape. A provider
|
|
121
|
+
* that wants connect/check behavior declares it here (or supplies an
|
|
122
|
+
* `integration/connection` capability); host-reference credentials alone
|
|
123
|
+
* do not make a provider tenant-connectable.
|
|
124
|
+
*/
|
|
125
|
+
connection: IntegrationConnectionMetadataSchema.optional()
|
|
126
|
+
});
|
|
127
|
+
export const IntegrationOAuthStartSchema = z.object({
|
|
128
|
+
redirectUri: z.url(), state: z.string().min(1), scopes: z.array(z.string()).optional()
|
|
129
|
+
});
|
|
130
|
+
export const IntegrationOAuthAuthorizationSchema = z.object({ authorizationUrl: z.url() });
|
|
131
|
+
export const IntegrationOAuthCompletionSchema = z.object({
|
|
132
|
+
code: z.string().min(1), redirectUri: z.url(), params: z.record(z.string(), z.string()).optional()
|
|
133
|
+
});
|
|
134
|
+
export const IntegrationProviderResolvedConfigurationSchema = z.object({
|
|
135
|
+
config: IntegrationConfigSchema,
|
|
136
|
+
credentials: z.record(z.string(), z.string()).default({}),
|
|
137
|
+
credentialReferences: z.record(z.string(), CredentialCandidatesSchema).default({})
|
|
138
|
+
});
|
|
139
|
+
export const IntegrationConnectionSelectorSchema = z.object({ connectionId: z.string().trim().min(1) });
|
|
140
|
+
export const IntegrationConnectionActorSchema = z.object({
|
|
141
|
+
userId: z.string().min(1), organizationId: z.string().optional()
|
|
142
|
+
});
|
|
143
|
+
export const IntegrationCredentialWriteMetadataSchema = z.object({
|
|
144
|
+
expiresAt: z.iso.datetime({ offset: true }).optional(),
|
|
145
|
+
tags: z.record(z.string(), z.string()).optional()
|
|
146
|
+
});
|
|
147
|
+
export const IntegrationCredentialWriteRequestSchema = z.object({
|
|
148
|
+
key: IntegrationCredentialKeySchema,
|
|
149
|
+
value: z.string().min(1),
|
|
150
|
+
metadata: IntegrationCredentialWriteMetadataSchema.optional()
|
|
151
|
+
}).strict();
|
|
152
|
+
export const IntegrationOAuthTokensSchema = OAuthAuthorizationCodeTokenResponseSchema;
|
|
153
|
+
//# sourceMappingURL=integration-descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-descriptor.js","sourceRoot":"","sources":["../../src/schemas/integration-descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
export declare const OauthStateOptionsSchema: z.ZodObject<{
|
|
3
|
+
callbackPath: z.ZodDefault<z.ZodString>;
|
|
4
|
+
ttlSeconds: z.ZodDefault<z.ZodNumber>;
|
|
5
|
+
secure: z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export type OauthStateOptions = z.input<typeof OauthStateOptionsSchema>;
|
|
8
|
+
export declare const SignedOauthStatePayloadSchema: z.ZodObject<{
|
|
9
|
+
v: z.ZodLiteral<1>;
|
|
10
|
+
nonce: z.ZodString;
|
|
11
|
+
iat: z.ZodNumber;
|
|
12
|
+
orgId: z.ZodString;
|
|
13
|
+
returnTo: z.ZodOptional<z.ZodString>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export type SignedOauthStatePayload = z.infer<typeof SignedOauthStatePayloadSchema>;
|
|
16
|
+
export declare const IssueSignedOauthStateSchema: z.ZodObject<{
|
|
17
|
+
orgId: z.ZodString;
|
|
18
|
+
returnTo: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
19
|
+
secret: z.ZodString;
|
|
20
|
+
now: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export type IssueSignedOauthStateInput = z.infer<typeof IssueSignedOauthStateSchema>;
|
|
23
|
+
export declare const ReadSignedOauthStateSchema: z.ZodObject<{
|
|
24
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
25
|
+
secret: z.ZodString;
|
|
26
|
+
now: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
ttlMs: z.ZodDefault<z.ZodNumber>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export type ReadSignedOauthStateInput = z.input<typeof ReadSignedOauthStateSchema>;
|
|
30
|
+
//# sourceMappingURL=oauth-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-state.d.ts","sourceRoot":"","sources":["../../src/schemas/oauth-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,eAAO,MAAM,uBAAuB;;;;iBAIlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,eAAO,MAAM,6BAA6B;;;;;;iBAMxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,eAAO,MAAM,2BAA2B;;;;;iBAKtC,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AACrF,eAAO,MAAM,0BAA0B;;;;;iBAKrC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
export const OauthStateOptionsSchema = z.object({
|
|
3
|
+
callbackPath: z.string().startsWith('/').default('/api/integrations/'),
|
|
4
|
+
ttlSeconds: z.number().int().positive().default(600),
|
|
5
|
+
secure: z.boolean().default(true)
|
|
6
|
+
});
|
|
7
|
+
export const SignedOauthStatePayloadSchema = z.object({
|
|
8
|
+
v: z.literal(1),
|
|
9
|
+
nonce: z.string().min(1),
|
|
10
|
+
iat: z.number().int().nonnegative(),
|
|
11
|
+
orgId: z.string().min(1),
|
|
12
|
+
returnTo: z.string().optional()
|
|
13
|
+
});
|
|
14
|
+
export const IssueSignedOauthStateSchema = z.object({
|
|
15
|
+
orgId: z.string().min(1),
|
|
16
|
+
returnTo: z.string().nullable().optional(),
|
|
17
|
+
secret: z.string().min(1),
|
|
18
|
+
now: z.number().int().nonnegative().optional()
|
|
19
|
+
});
|
|
20
|
+
export const ReadSignedOauthStateSchema = z.object({
|
|
21
|
+
state: z.string().nullish(),
|
|
22
|
+
secret: z.string().min(1),
|
|
23
|
+
now: z.number().int().nonnegative().optional(),
|
|
24
|
+
ttlMs: z.number().int().positive().default(600000)
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=oauth-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-state.js","sourceRoot":"","sources":["../../src/schemas/oauth-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACtE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CAClD,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { type IntegrationConfigValue } from './integration-descriptor.ts';
|
|
3
|
+
export declare const IntegrationSettingsSchema: z.ZodRecord<z.ZodString, z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
4
|
+
export declare const SystemSettingsReaderSchema: z.ZodObject<{
|
|
5
|
+
get: z.ZodCustom<(key: string) => IntegrationConfigValue | undefined | Promise<IntegrationConfigValue | undefined>, (key: string) => IntegrationConfigValue | undefined | Promise<IntegrationConfigValue | undefined>>;
|
|
6
|
+
getAll: z.ZodOptional<z.ZodCustom<() => Record<string, IntegrationConfigValue> | Promise<Record<string, IntegrationConfigValue>>, () => Record<string, IntegrationConfigValue> | Promise<Record<string, IntegrationConfigValue>>>>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type SystemSettingsReader = z.infer<typeof SystemSettingsReaderSchema>;
|
|
9
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/schemas/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAExG,eAAO,MAAM,yBAAyB,2QAAqD,CAAC;AAC5F,eAAO,MAAM,0BAA0B;2BAClB,MAAM,KAAK,sBAAsB,GAAG,SAAS,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,QAA3F,MAAM,KAAK,sBAAsB,GAAG,SAAS,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;4CAGxF,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,QAAxF,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;iBAG9G,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { IntegrationConfigValueSchema } from "./integration-descriptor.js";
|
|
3
|
+
export const IntegrationSettingsSchema = z.record(z.string(), IntegrationConfigValueSchema);
|
|
4
|
+
export const SystemSettingsReaderSchema = z.object({
|
|
5
|
+
get: z.custom((value) => value instanceof Function),
|
|
6
|
+
getAll: z.custom((value) => value instanceof Function).optional()
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/schemas/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAA+B,MAAM,6BAA6B,CAAC;AAExG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,GAAG,EAAE,CAAC,CAAC,MAAM,CACZ,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CACpC;IACD,MAAM,EAAE,CAAC,CAAC,MAAM,CACf,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CACpC,CAAC,QAAQ,EAAE;CACZ,CAAC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import type { QueryBuilderDatabase } from '@vibesdotdev/storage';
|
|
3
|
+
import type { CredentialReference } from '@vibesdotdev/kernel/credentials';
|
|
4
|
+
import { type IntegrationConfigValue } from './integration-descriptor.ts';
|
|
5
|
+
/** Derive the database dialect from storage's native query builders. */
|
|
6
|
+
type SelectBuilder = ReturnType<QueryBuilderDatabase['select']>;
|
|
7
|
+
type SelectedFields = NonNullable<Parameters<QueryBuilderDatabase['select']>[0]>;
|
|
8
|
+
type Column = Extract<SelectedFields[string], {
|
|
9
|
+
table: object;
|
|
10
|
+
name: string;
|
|
11
|
+
}>;
|
|
12
|
+
type Table = Parameters<QueryBuilderDatabase['insert']>[0];
|
|
13
|
+
type Where = Parameters<ReturnType<SelectBuilder['from']>['where']>[0];
|
|
14
|
+
export type IntegrationStoreCondition = Extract<Where, {
|
|
15
|
+
getSQL: object;
|
|
16
|
+
}> | undefined;
|
|
17
|
+
export type IntegrationStoreDbOps = {
|
|
18
|
+
eq: (column: Column, value: IntegrationConfigValue | Date | Column) => IntegrationStoreCondition;
|
|
19
|
+
and: (...conditions: IntegrationStoreCondition[]) => IntegrationStoreCondition;
|
|
20
|
+
desc: (column: Column) => NonNullable<IntegrationStoreCondition>;
|
|
21
|
+
};
|
|
22
|
+
export type IntegrationStoreTable<Keys extends string = string> = Table & Record<Keys, Column>;
|
|
23
|
+
/**
|
|
24
|
+
* Integration-owned configuration and service-to-secret selection metadata.
|
|
25
|
+
* Secret values and secret records belong to @vibesdotdev/secrets.
|
|
26
|
+
*/
|
|
27
|
+
export type IntegrationStoreTables = {
|
|
28
|
+
integrationServices: IntegrationStoreTable<'id' | 'integrationId' | 'enabled' | 'scope' | 'scopeId' | 'config' | 'featureId' | 'serviceKey' | 'updatedAt'>;
|
|
29
|
+
resourceSecrets: IntegrationStoreTable<'id' | 'resourceType' | 'resourceId' | 'secretId'>;
|
|
30
|
+
};
|
|
31
|
+
export declare const IntegrationServiceRowSchema: z.ZodObject<{
|
|
32
|
+
id: z.ZodString;
|
|
33
|
+
config: z.ZodRecord<z.ZodString, z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export declare const IntegrationSecretIdSchema: z.ZodObject<{
|
|
36
|
+
secretId: z.ZodString;
|
|
37
|
+
}, z.core.$strip>;
|
|
38
|
+
export declare const IntegrationSecretJoinSchema: z.ZodObject<{
|
|
39
|
+
secretId: z.ZodString;
|
|
40
|
+
joinId: z.ZodString;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
/** Scope selectors for persisted data are always complete and tenant-specific. */
|
|
43
|
+
export declare const IntegrationStoreScopeSchema: z.ZodObject<{
|
|
44
|
+
scope: z.ZodEnum<{
|
|
45
|
+
user: "user";
|
|
46
|
+
platform: "platform";
|
|
47
|
+
project: "project";
|
|
48
|
+
org: "org";
|
|
49
|
+
}>;
|
|
50
|
+
scopeId: z.ZodString;
|
|
51
|
+
}, z.core.$strict>;
|
|
52
|
+
export type IntegrationStoreScope = z.infer<typeof IntegrationStoreScopeSchema>;
|
|
53
|
+
export declare const IntegrationStoreIdSchema: z.ZodString;
|
|
54
|
+
export declare const IntegrationStoreAdapterSchema: z.ZodObject<{
|
|
55
|
+
loadConfig: z.ZodCustom<(descriptorId: string, scope: IntegrationStoreScope) => Promise<import("./integration-descriptor.ts").IntegrationConfig | undefined>, (descriptorId: string, scope: IntegrationStoreScope) => Promise<import("./integration-descriptor.ts").IntegrationConfig | undefined>>;
|
|
56
|
+
loadCredential: z.ZodCustom<(descriptorId: string, source: import("./integration-descriptor.ts").IntegrationCredentialSource) => Promise<CredentialReference | undefined>, (descriptorId: string, source: import("./integration-descriptor.ts").IntegrationCredentialSource) => Promise<CredentialReference | undefined>>;
|
|
57
|
+
writeConfig: z.ZodCustom<(descriptorId: string, scope: IntegrationStoreScope, patch: import("./integration-descriptor.ts").IntegrationConfig) => Promise<void>, (descriptorId: string, scope: IntegrationStoreScope, patch: import("./integration-descriptor.ts").IntegrationConfig) => Promise<void>>;
|
|
58
|
+
writeCredential: z.ZodCustom<(descriptorId: string, source: import("./integration-descriptor.ts").IntegrationCredentialSource, value: string, metadata?: import("./integration-descriptor.ts").IntegrationCredentialWriteMetadata) => Promise<void>, (descriptorId: string, source: import("./integration-descriptor.ts").IntegrationCredentialSource, value: string, metadata?: import("./integration-descriptor.ts").IntegrationCredentialWriteMetadata) => Promise<void>>;
|
|
59
|
+
deleteCredential: z.ZodCustom<(descriptorId: string, source: import("./integration-descriptor.ts").IntegrationCredentialSource) => Promise<boolean>, (descriptorId: string, source: import("./integration-descriptor.ts").IntegrationCredentialSource) => Promise<boolean>>;
|
|
60
|
+
loadConnection: z.ZodOptional<z.ZodCustom<(descriptor: import("./integration-descriptor.ts").IntegrationProviderDescriptor, selector: Readonly<import("./integration-descriptor.ts").IntegrationConnectionSelector>, actor: Readonly<import("./integration-descriptor.ts").IntegrationConnectionActor>) => Promise<import("./integration-descriptor.ts").IntegrationResolvedConfigurationInput>, (descriptor: import("./integration-descriptor.ts").IntegrationProviderDescriptor, selector: Readonly<import("./integration-descriptor.ts").IntegrationConnectionSelector>, actor: Readonly<import("./integration-descriptor.ts").IntegrationConnectionActor>) => Promise<import("./integration-descriptor.ts").IntegrationResolvedConfigurationInput>>>;
|
|
61
|
+
loadConnectionReferences: z.ZodOptional<z.ZodCustom<(descriptor: import("./integration-descriptor.ts").IntegrationProviderDescriptor, selector: Readonly<import("./integration-descriptor.ts").IntegrationConnectionSelector>, actor: Readonly<import("./integration-descriptor.ts").IntegrationConnectionActor>) => Promise<import("./integration-descriptor.ts").IntegrationResolvedConfigurationInput>, (descriptor: import("./integration-descriptor.ts").IntegrationProviderDescriptor, selector: Readonly<import("./integration-descriptor.ts").IntegrationConnectionSelector>, actor: Readonly<import("./integration-descriptor.ts").IntegrationConnectionActor>) => Promise<import("./integration-descriptor.ts").IntegrationResolvedConfigurationInput>>>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
export type IntegrationStoreAdapter = z.infer<typeof IntegrationStoreAdapterSchema>;
|
|
64
|
+
export declare const IntegrationConfigRowSchema: z.ZodObject<{
|
|
65
|
+
config: z.ZodRecord<z.ZodString, z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/schemas/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { managedSecretScopeSchema } from '@vibesdotdev/secrets/schemas';
|
|
3
|
+
import { IntegrationConfigValueSchema } from "./integration-descriptor.js";
|
|
4
|
+
export const IntegrationServiceRowSchema = z.object({
|
|
5
|
+
id: z.string().min(1),
|
|
6
|
+
config: z.record(z.string(), IntegrationConfigValueSchema)
|
|
7
|
+
});
|
|
8
|
+
export const IntegrationSecretIdSchema = z.object({ secretId: z.string().min(1) });
|
|
9
|
+
export const IntegrationSecretJoinSchema = IntegrationSecretIdSchema.extend({
|
|
10
|
+
joinId: z.string().min(1)
|
|
11
|
+
});
|
|
12
|
+
/** Scope selectors for persisted data are always complete and tenant-specific. */
|
|
13
|
+
export const IntegrationStoreScopeSchema = z.object({
|
|
14
|
+
scope: managedSecretScopeSchema,
|
|
15
|
+
scopeId: z.string().trim().min(1)
|
|
16
|
+
}).strict();
|
|
17
|
+
export const IntegrationStoreIdSchema = z.string().min(1);
|
|
18
|
+
export const IntegrationStoreAdapterSchema = z.object({
|
|
19
|
+
loadConfig: z.custom((value) => value instanceof Function),
|
|
20
|
+
loadCredential: z.custom((value) => value instanceof Function),
|
|
21
|
+
writeConfig: z.custom((value) => value instanceof Function),
|
|
22
|
+
writeCredential: z.custom((value) => value instanceof Function),
|
|
23
|
+
deleteCredential: z.custom((value) => value instanceof Function),
|
|
24
|
+
loadConnection: z.custom((value) => value instanceof Function).optional(),
|
|
25
|
+
/** Explicit reference delivery never calls a legacy value-returning loader. */
|
|
26
|
+
loadConnectionReferences: z.custom((value) => value instanceof Function).optional()
|
|
27
|
+
});
|
|
28
|
+
export const IntegrationConfigRowSchema = z.object({
|
|
29
|
+
config: z.record(z.string(), IntegrationConfigValueSchema)
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/schemas/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAA+B,MAAM,6BAA6B,CAAC;AA4BxG,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,wBAAwB;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,CAGlB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,CAGtB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,CAGnB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CAAC;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,CAOvB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CAAC;IACvC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAGxB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,CAMtB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CAAC,CAAC,QAAQ,EAAE;IAClD,+EAA+E;IAC/E,wBAAwB,EAAE,CAAC,CAAC,MAAM,CAMhC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,QAAQ,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC;CAC1D,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { INTEGRATION_PROVIDER_DEFAULTS_ID, INTEGRATION_PROVIDER_DEFAULTS_KIND, IntegrationProviderDefaultsDescriptorSchema, type IntegrationProviderDefaultsDescriptor } from '../schemas/system-defaults.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Kind for host-composed provider service defaults. Descriptors of this kind
|
|
4
|
+
* declare which provider services a deployment seeds and cleans; the generic
|
|
5
|
+
* core registers the kind and ships no vendor selection itself.
|
|
6
|
+
*/
|
|
7
|
+
export declare const integrationProviderDefaultsKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<unknown>;
|
|
8
|
+
//# sourceMappingURL=system-defaults.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-defaults.kind.d.ts","sourceRoot":"","sources":["../../../src/server/defaults/system-defaults.kind.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,gCAAgC,EAChC,kCAAkC,EAClC,2CAA2C,EAC3C,KAAK,qCAAqC,EAC1C,MAAM,+BAA+B,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,oEAG1C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory';
|
|
2
|
+
import { INTEGRATION_PROVIDER_DEFAULTS_KIND, IntegrationProviderDefaultsDescriptorSchema } from "../schemas/system-defaults.js";
|
|
3
|
+
export { INTEGRATION_PROVIDER_DEFAULTS_ID, INTEGRATION_PROVIDER_DEFAULTS_KIND, IntegrationProviderDefaultsDescriptorSchema } from "../schemas/system-defaults.js";
|
|
4
|
+
/**
|
|
5
|
+
* Kind for host-composed provider service defaults. Descriptors of this kind
|
|
6
|
+
* declare which provider services a deployment seeds and cleans; the generic
|
|
7
|
+
* core registers the kind and ships no vendor selection itself.
|
|
8
|
+
*/
|
|
9
|
+
export const integrationProviderDefaultsKind = createRuntimeKind({
|
|
10
|
+
id: INTEGRATION_PROVIDER_DEFAULTS_KIND,
|
|
11
|
+
descriptorSchema: IntegrationProviderDefaultsDescriptorSchema
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=system-defaults.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-defaults.kind.js","sourceRoot":"","sources":["../../../src/server/defaults/system-defaults.kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACN,kCAAkC,EAClC,2CAA2C,EAC3C,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACN,gCAAgC,EAChC,kCAAkC,EAClC,2CAA2C,EAE3C,MAAM,+BAA+B,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,CAAC;IAChE,EAAE,EAAE,kCAAkC;IACtC,gBAAgB,EAAE,2CAA2C;CAC7D,CAAC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth credential use, owned by the credential owners.
|
|
3
|
+
*
|
|
4
|
+
* A connect flow needs credential operations a provider must not do itself:
|
|
5
|
+
* resolve the host-managed client credentials, and exchange a code or a stored
|
|
6
|
+
* refresh token for tokens. Both belong to Secrets, which resolves references and
|
|
7
|
+
* composes the authenticated request. What core adds is the integration-shaped
|
|
8
|
+
* composition — the credential candidates a descriptor declares, and the
|
|
9
|
+
* authorization URL whose client id Secrets fills in.
|
|
10
|
+
*
|
|
11
|
+
* Client credentials remain inside Secrets. A connect flow receives newly issued
|
|
12
|
+
* tokens for its credential store through {@link exchangeIntegrationAuthorizationCode}.
|
|
13
|
+
*/
|
|
14
|
+
import type { RuntimeRef } from '@vibesdotdev/kernel';
|
|
15
|
+
import type { CredentialPresence, CredentialPresenceInputInput, OAuthAuthorizationCodeExchangeInputInput, OAuthRefreshTokenExchangeInputInput } from '@vibesdotdev/secrets/schemas';
|
|
16
|
+
import { type IntegrationOAuthTokens } from '../schemas/integration-descriptor.ts';
|
|
17
|
+
import { type IntegrationClientIdResolution } from './schemas/integration-oauth.ts';
|
|
18
|
+
/** The placeholder a browser-visible authorization URL carries for the client id. */
|
|
19
|
+
export declare const INTEGRATION_OAUTH_CLIENT_ID_PLACEHOLDER = "{clientId}";
|
|
20
|
+
/**
|
|
21
|
+
* Whether a credential a reference names is set, answered by the Secrets owner.
|
|
22
|
+
* The answer is presence only; a confirmed absence is `NOT_FOUND`
|
|
23
|
+
* `credential-not-set` and every other store refusal propagates unchanged.
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkIntegrationCredentialPresence(runtime: RuntimeRef, input: CredentialPresenceInputInput): Promise<CredentialPresence>;
|
|
26
|
+
/**
|
|
27
|
+
* Exchange an authorization code for tokens through the Secrets owner. The client
|
|
28
|
+
* credentials travel as ordered reference candidates, so neither value enters the
|
|
29
|
+
* calling provider, and the answer is the provider's token payload.
|
|
30
|
+
*/
|
|
31
|
+
export declare function exchangeIntegrationAuthorizationCode(runtime: RuntimeRef, input: OAuthAuthorizationCodeExchangeInputInput): Promise<IntegrationOAuthTokens>;
|
|
32
|
+
/**
|
|
33
|
+
* Exchange a stored refresh token for a fresh access token through the Secrets
|
|
34
|
+
* owner. The refresh token travels as a reference candidate list.
|
|
35
|
+
*/
|
|
36
|
+
export declare function exchangeIntegrationRefreshToken(runtime: RuntimeRef, input: OAuthRefreshTokenExchangeInputInput): Promise<IntegrationOAuthTokens>;
|
|
37
|
+
/**
|
|
38
|
+
* Turn a descriptor's authorization URL template into the URL a browser follows,
|
|
39
|
+
* with the public client identifier resolved inside Secrets. The value never
|
|
40
|
+
* enters provider code; the client secret is not part of this URL. A template
|
|
41
|
+
* without the named placeholder is returned unchanged.
|
|
42
|
+
*/
|
|
43
|
+
export declare function applyIntegrationClientId(runtime: RuntimeRef, input: IntegrationClientIdResolution): Promise<string>;
|
|
44
|
+
//# sourceMappingURL=integration-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-oauth.d.ts","sourceRoot":"","sources":["../../src/server/integration-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,KAAK,EACX,kBAAkB,EAClB,4BAA4B,EAC5B,wCAAwC,EACxC,mCAAmC,EACnC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACjH,OAAO,EAEN,KAAK,6BAA6B,EAClC,MAAM,gCAAgC,CAAC;AAGxC,qFAAqF;AACrF,eAAO,MAAM,uCAAuC,eAAe,CAAC;AASpE;;;;GAIG;AACH,wBAAsB,kCAAkC,CACvD,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,4BAA4B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;;;GAIG;AACH,wBAAsB,oCAAoC,CACzD,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,wCAAwC,GAC7C,OAAO,CAAC,sBAAsB,CAAC,CAGjC;AAED;;;GAGG;AACH,wBAAsB,+BAA+B,CACpD,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,mCAAmC,GACxC,OAAO,CAAC,sBAAsB,CAAC,CAGjC;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,6BAA6B,GAClC,OAAO,CAAC,MAAM,CAAC,CAYjB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { IntegrationOAuthTokensSchema } from "../schemas/integration-descriptor.js";
|
|
2
|
+
import { IntegrationClientIdResolutionSchema } from "./schemas/integration-oauth.js";
|
|
3
|
+
import { parseIntegrationBoundary } from "../schemas/boundary.js";
|
|
4
|
+
/** The placeholder a browser-visible authorization URL carries for the client id. */
|
|
5
|
+
export const INTEGRATION_OAUTH_CLIENT_ID_PLACEHOLDER = '{clientId}';
|
|
6
|
+
async function secretsClient(runtime) {
|
|
7
|
+
return runtime
|
|
8
|
+
.query('runtime/client')
|
|
9
|
+
.withId('secrets')
|
|
10
|
+
.resolve();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Whether a credential a reference names is set, answered by the Secrets owner.
|
|
14
|
+
* The answer is presence only; a confirmed absence is `NOT_FOUND`
|
|
15
|
+
* `credential-not-set` and every other store refusal propagates unchanged.
|
|
16
|
+
*/
|
|
17
|
+
export async function checkIntegrationCredentialPresence(runtime, input) {
|
|
18
|
+
return (await secretsClient(runtime)).checkCredentialPresence(input);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Exchange an authorization code for tokens through the Secrets owner. The client
|
|
22
|
+
* credentials travel as ordered reference candidates, so neither value enters the
|
|
23
|
+
* calling provider, and the answer is the provider's token payload.
|
|
24
|
+
*/
|
|
25
|
+
export async function exchangeIntegrationAuthorizationCode(runtime, input) {
|
|
26
|
+
const tokens = await (await secretsClient(runtime)).exchangeOAuthAuthorizationCode(input);
|
|
27
|
+
return parseIntegrationBoundary(IntegrationOAuthTokensSchema, tokens);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Exchange a stored refresh token for a fresh access token through the Secrets
|
|
31
|
+
* owner. The refresh token travels as a reference candidate list.
|
|
32
|
+
*/
|
|
33
|
+
export async function exchangeIntegrationRefreshToken(runtime, input) {
|
|
34
|
+
const tokens = await (await secretsClient(runtime)).exchangeOAuthRefreshToken(input);
|
|
35
|
+
return parseIntegrationBoundary(IntegrationOAuthTokensSchema, tokens);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Turn a descriptor's authorization URL template into the URL a browser follows,
|
|
39
|
+
* with the public client identifier resolved inside Secrets. The value never
|
|
40
|
+
* enters provider code; the client secret is not part of this URL. A template
|
|
41
|
+
* without the named placeholder is returned unchanged.
|
|
42
|
+
*/
|
|
43
|
+
export async function applyIntegrationClientId(runtime, input) {
|
|
44
|
+
const parsed = parseIntegrationBoundary(IntegrationClientIdResolutionSchema, input);
|
|
45
|
+
const url = new URL(parsed.authorizationUrl);
|
|
46
|
+
if (url.searchParams.get('client_id') !== INTEGRATION_OAUTH_CLIENT_ID_PLACEHOLDER) {
|
|
47
|
+
return parsed.authorizationUrl;
|
|
48
|
+
}
|
|
49
|
+
return (await secretsClient(runtime)).resolveOAuthAuthorizationUrl({
|
|
50
|
+
authorizationUrl: parsed.authorizationUrl,
|
|
51
|
+
placeholder: INTEGRATION_OAUTH_CLIENT_ID_PLACEHOLDER,
|
|
52
|
+
parameter: 'client_id',
|
|
53
|
+
clientId: parsed.clientId
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=integration-oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-oauth.js","sourceRoot":"","sources":["../../src/server/integration-oauth.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,4BAA4B,EAA+B,MAAM,sCAAsC,CAAC;AACjH,OAAO,EACN,mCAAmC,EAEnC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,qFAAqF;AACrF,MAAM,CAAC,MAAM,uCAAuC,GAAG,YAAY,CAAC;AAEpE,KAAK,UAAU,aAAa,CAAC,OAAmB;IAC/C,OAAO,OAAO;SACZ,KAAK,CAAmC,gBAAgB,CAAC;SACzD,MAAM,CAAC,SAAS,CAAC;SACjB,OAAO,EAAE,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACvD,OAAmB,EACnB,KAAmC;IAEnC,OAAO,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACzD,OAAmB,EACnB,KAA+C;IAE/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAC1F,OAAO,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACpD,OAAmB,EACnB,KAA0C;IAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACrF,OAAO,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,OAAmB,EACnB,KAAoC;IAEpC,MAAM,MAAM,GAAG,wBAAwB,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,uCAAuC,EAAE,CAAC;QACnF,OAAO,MAAM,CAAC,gBAAgB,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;QAClE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,WAAW,EAAE,uCAAuC;QACpD,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KACzB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type RuntimeRef } from '@vibesdotdev/kernel';
|
|
2
|
+
import { type AuthenticatedRequestInputInput, type CredentialPayloadSignatureInput } from '@vibesdotdev/secrets/schemas';
|
|
3
|
+
import { type AttachIntegrationSecretOptions, type IntegrationSecretReference, type ListIntegrationServiceSecretsOptions, type ResolveIntegrationSecretOptions } from './schemas/integration-secrets.ts';
|
|
4
|
+
export type { AttachIntegrationSecretOptions, IntegrationSecretClient, IntegrationSecretReference, ListIntegrationServiceSecretsOptions, ResolveIntegrationSecretOptions } from './schemas/integration-secrets.ts';
|
|
5
|
+
export declare function attachSecretToIntegrationService(options: AttachIntegrationSecretOptions): Promise<void>;
|
|
6
|
+
export declare function listIntegrationServiceSecrets(options: ListIntegrationServiceSecretsOptions): Promise<IntegrationSecretReference[]>;
|
|
7
|
+
export declare function resolveIntegrationServiceSecret(options: ResolveIntegrationSecretOptions): Promise<string | undefined>;
|
|
8
|
+
export declare function sendIntegrationAuthenticatedRequest(runtime: RuntimeRef, input: AuthenticatedRequestInputInput): Promise<Response>;
|
|
9
|
+
/** Forward credential use to Secrets without reading or returning signing key material. */
|
|
10
|
+
export declare function signIntegrationPayload(runtime: RuntimeRef, input: CredentialPayloadSignatureInput): Promise<string | undefined>;
|
|
11
|
+
//# sourceMappingURL=integration-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-secrets.d.ts","sourceRoot":"","sources":["../../src/server/integration-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAsB,KAAK,8BAA8B,EAAE,KAAK,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAE7I,OAAO,EAKN,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAC/B,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EACpC,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACX,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,oCAAoC,EACpC,+BAA+B,EAC/B,MAAM,kCAAkC,CAAC;AAgB1C,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7G;AAED,wBAAsB,6BAA6B,CAClD,OAAO,EAAE,oCAAoC,GAC3C,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAuBvC;AAED,wBAAsB,+BAA+B,CACpD,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoC7B;AAED,wBAAsB,mCAAmC,CACxD,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,8BAA8B,GACnC,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED,2FAA2F;AAC3F,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAErI"}
|