@wildo-ai/external-connectors-models 1.1.10 → 1.1.12
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/dist/esm/companion-exports.js.map +1 -1
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts +140 -0
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons.external-connectors-models.schemas.js +203 -0
- package/dist/esm/core/commons.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/oauth2.enums.d.ts.map +1 -1
- package/dist/esm/core/oauth2.enums.js.map +1 -1
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/operations.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts +4 -2
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.js +10 -4
- package/dist/esm/core/security.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts +9 -42
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js +31 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts +64 -3
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.js +23 -2
- package/dist/esm/protocols/billing.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.d.ts +150 -0
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.js +182 -0
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts +41 -9
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js +40 -14
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/electronic-signature.external-connectors-models.schemas.d.ts +157 -0
- package/dist/esm/protocols/electronic-signature.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/electronic-signature.external-connectors-models.schemas.js +134 -0
- package/dist/esm/protocols/electronic-signature.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts +85 -0
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.js +46 -2
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/email.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/email.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/email.standard-interface.schemas.js +4 -0
- package/dist/esm/protocols/email.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts +86 -10
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js +146 -7
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/file-storage.standard-interface.d.ts +14 -1
- package/dist/esm/protocols/file-storage.standard-interface.d.ts.map +1 -1
- package/dist/esm/protocols/file-storage.standard-interface.js +6 -0
- package/dist/esm/protocols/file-storage.standard-interface.js.map +1 -1
- package/dist/esm/protocols/frontend.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/graphql-operations.external-connectors-models.schemas.d.ts +254 -0
- package/dist/esm/protocols/graphql-operations.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/graphql-operations.external-connectors-models.schemas.js +480 -0
- package/dist/esm/protocols/graphql-operations.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts +7 -2
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts +482 -7
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.js +348 -0
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/image.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts +165 -8
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js +243 -20
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/oauth2-provider-assurance.definitions.js.map +1 -1
- package/dist/esm/protocols/oauth2-provider-assurance.schemas.js.map +1 -1
- package/dist/esm/protocols/oauth2.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/provider-configuration-authoring.external-connectors-models.schemas.d.ts +52 -0
- package/dist/esm/protocols/provider-configuration-authoring.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/provider-configuration-authoring.external-connectors-models.schemas.js +132 -0
- package/dist/esm/protocols/provider-configuration-authoring.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/provider-connection-parameters.external-connectors-models.d.ts +111 -0
- package/dist/esm/protocols/provider-connection-parameters.external-connectors-models.d.ts.map +1 -0
- package/dist/esm/protocols/provider-connection-parameters.external-connectors-models.js +203 -0
- package/dist/esm/protocols/provider-connection-parameters.external-connectors-models.js.map +1 -0
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts +6 -0
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts.map +1 -1
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js +13 -7
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js.map +1 -1
- package/dist/esm/protocols/provider-vendor-registration.external-connectors-models.d.ts +50 -0
- package/dist/esm/protocols/provider-vendor-registration.external-connectors-models.d.ts.map +1 -0
- package/dist/esm/protocols/provider-vendor-registration.external-connectors-models.js +30 -0
- package/dist/esm/protocols/provider-vendor-registration.external-connectors-models.js.map +1 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts +1165 -11
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js +1217 -9
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/service-account-token.external-connectors-models.schemas.d.ts +73 -0
- package/dist/esm/protocols/service-account-token.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/service-account-token.external-connectors-models.schemas.js +82 -0
- package/dist/esm/protocols/service-account-token.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/sms.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.d.ts +79 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.js +93 -0
- package/dist/esm/protocols/sms.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.d.ts +133 -0
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.d.ts.map +1 -0
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.js +61 -0
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/dist/esm/.native.tsbuildinfo +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-exports.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"companion-exports.js","sourceRoot":"","sources":["../../src/companion-exports.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Dedicated companion entrypoint for external-connector model contracts.\n *\n * The explicit subpath keeps companion/tooling imports consistent across the\n * engine package family.\n */\nexport * from './index';\n"]}
|
|
@@ -65,6 +65,24 @@ export declare enum ExternalProvider_ExchangeProtocol_Kind {
|
|
|
65
65
|
* provider capability token could ever fill it.
|
|
66
66
|
*/
|
|
67
67
|
DOCUMENT_EXTRACTION_PROVIDER = "document_extraction_provider",
|
|
68
|
+
/**
|
|
69
|
+
* Text → a classifier's verdict about it (#2292): first, whether third-party content entering an agent's prompt
|
|
70
|
+
* carries a prompt-injection attack. Serves an agent's declared content guardrails.
|
|
71
|
+
*
|
|
72
|
+
* Its own kind for the reason `EMBEDDINGS_PROVIDER` records above, and it fills its own
|
|
73
|
+
* `EngineCapability.AI_CONTENT_SAFETY` slot so an application chooses the vendor that screens its model's input
|
|
74
|
+
* independently of the vendor that answers it.
|
|
75
|
+
*/
|
|
76
|
+
CONTENT_SAFETY_PROVIDER = "content_safety_provider",
|
|
77
|
+
/**
|
|
78
|
+
* A deliverable → its signers' own electronic signatures, applied by a trust-service vendor (#2293). The provider
|
|
79
|
+
* declares pure functions over a conversation of requests; the engine owns transport, keys and deadlines, and never
|
|
80
|
+
* trusts the vendor's word that a request is signed.
|
|
81
|
+
*
|
|
82
|
+
* Its own kind and its own `EngineCapability.ELECTRONIC_SIGNATURE` slot: which vendor signs a client's engagement
|
|
83
|
+
* letter is a legal and procurement decision unrelated to every other provider's.
|
|
84
|
+
*/
|
|
85
|
+
ELECTRONIC_SIGNATURE_PROVIDER = "electronic_signature_provider",
|
|
68
86
|
/** Reserved — audio generation (TTS / music). Serves the AUDIO modality. Not yet implemented. */
|
|
69
87
|
AUDIO_PROVIDER = "audio_provider",
|
|
70
88
|
/** Reserved — video generation. Serves the VIDEO modality. Not yet implemented. */
|
|
@@ -102,6 +120,8 @@ export declare const ProviderProtocolRuntimeKind: Readonly<{
|
|
|
102
120
|
readonly IMAGE: ExternalProvider_ExchangeProtocol_Kind.IMAGE_PROVIDER;
|
|
103
121
|
readonly EMBEDDINGS: ExternalProvider_ExchangeProtocol_Kind.EMBEDDINGS_PROVIDER;
|
|
104
122
|
readonly DOCUMENT_EXTRACTION: ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER;
|
|
123
|
+
readonly CONTENT_SAFETY: ExternalProvider_ExchangeProtocol_Kind.CONTENT_SAFETY_PROVIDER;
|
|
124
|
+
readonly ELECTRONIC_SIGNATURE: ExternalProvider_ExchangeProtocol_Kind.ELECTRONIC_SIGNATURE_PROVIDER;
|
|
105
125
|
readonly AGENT_CLIENT_PROTOCOL: ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL;
|
|
106
126
|
readonly EMAIL: ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER;
|
|
107
127
|
readonly EMAIL_INBOUND: ExternalProvider_ExchangeProtocol_Kind.EMAIL_INBOUND_PROVIDER;
|
|
@@ -160,6 +180,111 @@ export declare const ExternalProvider_ExchangeProtocol_Configuration_BaseSchema:
|
|
|
160
180
|
}, z.core.$strip>>;
|
|
161
181
|
}, z.core.$strip>;
|
|
162
182
|
export type ExternalProvider_ExchangeProtocol_Configuration_Base = z.infer<typeof ExternalProvider_ExchangeProtocol_Configuration_BaseSchema>;
|
|
183
|
+
/**
|
|
184
|
+
* The keys of a `providerConfigurations.<providerRef>.<protocol>` bag that belong to the PROVIDER MODULE, never to the
|
|
185
|
+
* application (#2995). Each is projected by the backend registry from the module's own runtime contract, and each
|
|
186
|
+
* decides where a request goes and how its credential travels:
|
|
187
|
+
*
|
|
188
|
+
* - `runtimeContract` — the contract itself: the base URL or host slot, the API-key header, the operations.
|
|
189
|
+
* - `endpoints` — the webhook endpoints a `WEBHOOK_ORIGINATOR` contract declares (route keys, signature handling).
|
|
190
|
+
*
|
|
191
|
+
* An application cannot author either. The registry used to deep-merge an authored `runtimeContract` over the module's,
|
|
192
|
+
* so one configuration line (`runtimeContract: { baseUrl: 'http://anywhere' }`) sent the provider's key to any URL, over
|
|
193
|
+
* plain http, in any environment, around the host-held slot and its bare-DNS rule (#992 F3). The comments said the module
|
|
194
|
+
* owned the contract; nothing held it. Now three schemas refuse these keys when the configuration is parsed
|
|
195
|
+
* (`defineSaaSConfig`, the per-environment overlay, the backend's application configuration), and the registry refuses
|
|
196
|
+
* them again before it merges, so a configuration hydrated from anywhere else is refused too.
|
|
197
|
+
*
|
|
198
|
+
* The way to point a provider at a local double is the environment-gated loopback host of a host-held slot (#2991),
|
|
199
|
+
* which a deployment outside development and test refuses.
|
|
200
|
+
*
|
|
201
|
+
* Import path: `@wildo-ai/external-connectors-models`.
|
|
202
|
+
*/
|
|
203
|
+
export declare enum ExternalProvider_ModuleOwnedConfigurationKey {
|
|
204
|
+
RUNTIME_CONTRACT = "runtimeContract",
|
|
205
|
+
ENDPOINTS = "endpoints"
|
|
206
|
+
}
|
|
207
|
+
/** One authored key a provider module owns: where it was written, so the refusal can name it. */
|
|
208
|
+
export interface ExternalProvider_ModuleOwnedConfigurationKeyFinding {
|
|
209
|
+
readonly providerRef: string;
|
|
210
|
+
/** The second-level key of the bag: a protocol kind, or a key the module reads itself (`registration`). */
|
|
211
|
+
readonly protocolKey: string;
|
|
212
|
+
readonly key: ExternalProvider_ModuleOwnedConfigurationKey;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Every module-owned key written anywhere in a `providerConfigurations` value. Total over the
|
|
216
|
+
* {@link ExternalProvider_ModuleOwnedConfigurationKey} vocabulary, and over every bag, a protocol bag or not: no bag can
|
|
217
|
+
* legitimately carry these names, and a bag the registry does not merge today is one a later reader might.
|
|
218
|
+
* Anything that is not a record of records (a malformed value) yields nothing here; the schema reports that itself.
|
|
219
|
+
*/
|
|
220
|
+
export declare function findModuleOwnedProviderConfigurationKeys(providerConfigurations: unknown): ExternalProvider_ModuleOwnedConfigurationKeyFinding[];
|
|
221
|
+
/** The one sentence every door refuses a module-owned key with, so an operator greps one wording. */
|
|
222
|
+
export declare function describeModuleOwnedProviderConfigurationKey(finding: ExternalProvider_ModuleOwnedConfigurationKeyFinding): string;
|
|
223
|
+
/**
|
|
224
|
+
* Report every module-owned key as an issue on `ctx`, at its path. The refinement each `providerConfigurations` schema
|
|
225
|
+
* applies, so the three refuse the same keys with the same words.
|
|
226
|
+
*
|
|
227
|
+
* assurance-control: WILDO.SECRETS.CREDENTIAL_SCOPING — a configuration cannot author where a provider's credential is sent (#2995).
|
|
228
|
+
*/
|
|
229
|
+
export declare function refuseModuleOwnedProviderConfigurationKeys(providerConfigurations: unknown, ctx: z.RefinementCtx): void;
|
|
230
|
+
/**
|
|
231
|
+
* The fields of a `providerConfigurations.<providerRef>.<protocol>` bag that NAME a credential (#3022). Each decides
|
|
232
|
+
* which secret a vendor or a coding agent receives, so each is held to a rule that leaves that choice to the provider
|
|
233
|
+
* module and the framework rather than to the configuration:
|
|
234
|
+
*
|
|
235
|
+
* | field | the rule | closed by |
|
|
236
|
+
* |---|---|---|
|
|
237
|
+
* | `authConfig.secretRef` | names only a slot the module's `secretsContract` declares, by its variable or its slug | #3002 |
|
|
238
|
+
* | an execution profile's `secretEnvVarName` | names only a variable the module declares (never a slug: it is the variable the agent reads) | #3002 |
|
|
239
|
+
* | an execution profile's `inheritedEnvironmentVariables` | names anything EXCEPT a secret the framework declares | #3018 |
|
|
240
|
+
*
|
|
241
|
+
* The vocabulary is the one named source for the doors that check these fields: the backend registry, on every read and
|
|
242
|
+
* in its startup walk, and the CLI's environment door. Each reads the fields through
|
|
243
|
+
* {@link readProviderConfigurationCredentialFields} and branches on the member, so a field added here gets a reader (a
|
|
244
|
+
* compile error until it does) and then reaches every door's exhaustive switch, where it is a compile error again until
|
|
245
|
+
* the door decides its rule. Before this vocabulary the three fields were string paths written out at each door.
|
|
246
|
+
*
|
|
247
|
+
* Where the credential then GOES is the other half of the property, and it is not a configuration field at all: the
|
|
248
|
+
* module owns its destination ({@link ExternalProvider_ModuleOwnedConfigurationKey}, #2995).
|
|
249
|
+
*
|
|
250
|
+
* Import path: `@wildo-ai/external-connectors-models`.
|
|
251
|
+
*/
|
|
252
|
+
export declare enum ProviderConfigurationCredentialField {
|
|
253
|
+
/** `authConfig.secretRef`: the slot a protocol's key or client secret is read from, and sent to the vendor. */
|
|
254
|
+
AUTH_SECRET_REF = "auth_secret_ref",
|
|
255
|
+
/**
|
|
256
|
+
* `executionProfiles.<profile>.secretEnvVarName`, on the agent-client-protocol bag only: the one variable read from the
|
|
257
|
+
* spawning process and set in the coding agent's environment.
|
|
258
|
+
*/
|
|
259
|
+
EXECUTION_PROFILE_SECRET_ENV_VAR_NAME = "execution_profile_secret_env_var_name",
|
|
260
|
+
/**
|
|
261
|
+
* `executionProfiles.<profile>.inheritedEnvironmentVariables`, on the agent-client-protocol bag only: the host's own
|
|
262
|
+
* variables (the agent's login, its tool paths) copied into the coding agent's environment.
|
|
263
|
+
*/
|
|
264
|
+
EXECUTION_PROFILE_INHERITED_ENVIRONMENT = "execution_profile_inherited_environment"
|
|
265
|
+
}
|
|
266
|
+
/** One credential-naming field as authored, unchecked: the door that reads it decides whether it is admitted. */
|
|
267
|
+
export interface ProviderConfigurationCredentialFieldReading {
|
|
268
|
+
readonly field: ProviderConfigurationCredentialField;
|
|
269
|
+
/** Where it sits inside the protocol bag (`authConfig.secretRef`, `executionProfiles.mine.secretEnvVarName`), for a refusal to name. */
|
|
270
|
+
readonly path: string;
|
|
271
|
+
/** The execution profile it was read from, for the two profile fields. */
|
|
272
|
+
readonly executionProfileRef?: string;
|
|
273
|
+
/** The authored value. Never `undefined`: a field that is not written yields no reading. */
|
|
274
|
+
readonly value: unknown;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Whether a protocol key of a `providerConfigurations.<providerRef>` value holds the agent-client-protocol bag: the
|
|
278
|
+
* protocol's wire value, or its member name. The backend reads the configuration under the wire value only, but a
|
|
279
|
+
* credential-naming field is checked under either key, so a bag authored under the member name is refused by every door
|
|
280
|
+
* rather than by the CLI alone.
|
|
281
|
+
*/
|
|
282
|
+
export declare function isAgentClientProtocolConfigurationKey(protocolKey: string): boolean;
|
|
283
|
+
/**
|
|
284
|
+
* Every credential-naming field written in one protocol bag of a provider configuration, in vocabulary order. Total over
|
|
285
|
+
* {@link ProviderConfigurationCredentialField}. A bag that is not a record yields nothing; its schema reports that itself.
|
|
286
|
+
*/
|
|
287
|
+
export declare function readProviderConfigurationCredentialFields(protocolKey: string, bag: unknown): ProviderConfigurationCredentialFieldReading[];
|
|
163
288
|
export declare enum ExternalProvider_IO_Direction {
|
|
164
289
|
INBOUND = "inbound",
|
|
165
290
|
OUTBOUND = "outbound",
|
|
@@ -170,4 +295,19 @@ export declare enum ExternalProvider_IO_InteractionPattern {
|
|
|
170
295
|
EVENT_BASED = "event_based",
|
|
171
296
|
STREAMING = "stream"
|
|
172
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* An address a vendor registration asks a person to TYPE at the vendor, as opposed to one the registration file already
|
|
300
|
+
* carries (#2713). A provider module's `vendorRegistration` names each one it needs beside its steps, so a screen can
|
|
301
|
+
* show it as a value to copy, labelled from its own words, rather than leave it inside a sentence.
|
|
302
|
+
*
|
|
303
|
+
* Add a member when a provider's registration names another such address. A Slack app's request URLs are not one: the
|
|
304
|
+
* manifest file carries them, and nobody types them.
|
|
305
|
+
*/
|
|
306
|
+
export declare enum ProviderVendorRegistrationAddressKind {
|
|
307
|
+
/**
|
|
308
|
+
* Where the vendor delivers a bot's messages: the Azure Bot's "Messaging endpoint", the route the engine mounts for the
|
|
309
|
+
* provider's inbound endpoint. Every bot of one application, its own or an organization's, is registered with the same one.
|
|
310
|
+
*/
|
|
311
|
+
MESSAGING_ENDPOINT = "messaging_endpoint"
|
|
312
|
+
}
|
|
173
313
|
//# sourceMappingURL=commons.external-connectors-models.schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commons.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../src/core/commons.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,sCAAsC;IAEhD,QAAQ,aAAa;IACrB,kBAAkB,uBAAuB;IAIzC,YAAY,iBAAiB;IAC7B;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,0BAA0B;IAE/C,8EAA8E;IAC9E,cAAc,mBAAmB;IACjC;;;;;;;;;;OAUG;IACH,mBAAmB,wBAAwB;IAC3C;;;;;;;;;;;;;OAaG;IACH,4BAA4B,iCAAiC;IAC7D,iGAAiG;IACjG,cAAc,mBAAmB;IACjC,mFAAmF;IACnF,cAAc,mBAAmB;IAGjC,cAAc,mBAAmB;IACjC;;;;;;;OAOG;IACH,sBAAsB,2BAA2B;IAGjD,UAAU,eAAe;IAIzB,gBAAgB,qBAAqB;IAGrC,YAAY,iBAAiB;IAG7B,YAAY,iBAAiB;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"commons.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../src/core/commons.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,sCAAsC;IAEhD,QAAQ,aAAa;IACrB,kBAAkB,uBAAuB;IAIzC,YAAY,iBAAiB;IAC7B;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,0BAA0B;IAE/C,8EAA8E;IAC9E,cAAc,mBAAmB;IACjC;;;;;;;;;;OAUG;IACH,mBAAmB,wBAAwB;IAC3C;;;;;;;;;;;;;OAaG;IACH,4BAA4B,iCAAiC;IAC7D;;;;;;;OAOG;IACH,uBAAuB,4BAA4B;IACnD;;;;;;;OAOG;IACH,6BAA6B,kCAAkC;IAC/D,iGAAiG;IACjG,cAAc,mBAAmB;IACjC,mFAAmF;IACnF,cAAc,mBAAmB;IAGjC,cAAc,mBAAmB;IACjC;;;;;;;OAOG;IACH,sBAAsB,2BAA2B;IAGjD,UAAU,eAAe;IAIzB,gBAAgB,qBAAqB;IAGrC,YAAY,iBAAiB;IAG7B,YAAY,iBAAiB;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAe7B,CAAC;AACZ,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAC;AAEjF,oBAAY,uBAAuB;IACjC,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;CAC1B;AAGD,oBAAY,cAAc;IACxB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0DAA0D;;;;;;;;;;;;;;;;iBAIrE,CAAC;AAEH,MAAM,MAAM,oDAAoD,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0DAA0D,CAAC,CAAC;AAE9I;;;;;;;;;;;;;;;;;;;GAmBG;AACH,oBAAY,4CAA4C;IACtD,gBAAgB,oBAAoB;IACpC,SAAS,cAAc;CACxB;AAED,iGAAiG;AACjG,MAAM,WAAW,mDAAmD;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2GAA2G;IAC3G,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,4CAA4C,CAAC;CAC5D;AAID;;;;;GAKG;AACH,wBAAgB,wCAAwC,CAAC,sBAAsB,EAAE,OAAO,GAAG,mDAAmD,EAAE,CAa/I;AAED,qGAAqG;AACrG,wBAAgB,2CAA2C,CAAC,OAAO,EAAE,mDAAmD,GAAG,MAAM,CAIhI;AAED;;;;;GAKG;AACH,wBAAgB,0CAA0C,CAAC,sBAAsB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,GAAG,IAAI,CAQtH;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,oBAAY,oCAAoC;IAC9C,+GAA+G;IAC/G,eAAe,oBAAoB;IACnC;;;OAGG;IACH,qCAAqC,0CAA0C;IAC/E;;;OAGG;IACH,uCAAuC,4CAA4C;CACpF;AAED,iHAAiH;AACjH,MAAM,WAAW,2CAA2C;IAC1D,QAAQ,CAAC,KAAK,EAAE,oCAAoC,CAAC;IACrD,wIAAwI;IACxI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAKD;;;;;GAKG;AACH,wBAAgB,qCAAqC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAElF;AAuCD;;;GAGG;AACH,wBAAgB,yCAAyC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,2CAA2C,EAAE,CAG1I;AAWD,oBAAY,6BAA6B;IACvC,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;CAChC;AAED,oBAAY,sCAAsC;IAChD,gBAAgB,qBAAqB;IACrC,WAAW,gBAAgB;IAC3B,SAAS,WAAW;CACrB;AAGD;;;;;;;GAOG;AACH,oBAAY,qCAAqC;IAC/C;;;OAGG;IACH,kBAAkB,uBAAuB;CAC1C"}
|
|
@@ -71,6 +71,24 @@ export var ExternalProvider_ExchangeProtocol_Kind;
|
|
|
71
71
|
* provider capability token could ever fill it.
|
|
72
72
|
*/
|
|
73
73
|
ExternalProvider_ExchangeProtocol_Kind["DOCUMENT_EXTRACTION_PROVIDER"] = "document_extraction_provider";
|
|
74
|
+
/**
|
|
75
|
+
* Text → a classifier's verdict about it (#2292): first, whether third-party content entering an agent's prompt
|
|
76
|
+
* carries a prompt-injection attack. Serves an agent's declared content guardrails.
|
|
77
|
+
*
|
|
78
|
+
* Its own kind for the reason `EMBEDDINGS_PROVIDER` records above, and it fills its own
|
|
79
|
+
* `EngineCapability.AI_CONTENT_SAFETY` slot so an application chooses the vendor that screens its model's input
|
|
80
|
+
* independently of the vendor that answers it.
|
|
81
|
+
*/
|
|
82
|
+
ExternalProvider_ExchangeProtocol_Kind["CONTENT_SAFETY_PROVIDER"] = "content_safety_provider";
|
|
83
|
+
/**
|
|
84
|
+
* A deliverable → its signers' own electronic signatures, applied by a trust-service vendor (#2293). The provider
|
|
85
|
+
* declares pure functions over a conversation of requests; the engine owns transport, keys and deadlines, and never
|
|
86
|
+
* trusts the vendor's word that a request is signed.
|
|
87
|
+
*
|
|
88
|
+
* Its own kind and its own `EngineCapability.ELECTRONIC_SIGNATURE` slot: which vendor signs a client's engagement
|
|
89
|
+
* letter is a legal and procurement decision unrelated to every other provider's.
|
|
90
|
+
*/
|
|
91
|
+
ExternalProvider_ExchangeProtocol_Kind["ELECTRONIC_SIGNATURE_PROVIDER"] = "electronic_signature_provider";
|
|
74
92
|
/** Reserved — audio generation (TTS / music). Serves the AUDIO modality. Not yet implemented. */
|
|
75
93
|
ExternalProvider_ExchangeProtocol_Kind["AUDIO_PROVIDER"] = "audio_provider";
|
|
76
94
|
/** Reserved — video generation. Serves the VIDEO modality. Not yet implemented. */
|
|
@@ -114,6 +132,8 @@ export const ProviderProtocolRuntimeKind = Object.freeze({
|
|
|
114
132
|
IMAGE: ExternalProvider_ExchangeProtocol_Kind.IMAGE_PROVIDER,
|
|
115
133
|
EMBEDDINGS: ExternalProvider_ExchangeProtocol_Kind.EMBEDDINGS_PROVIDER,
|
|
116
134
|
DOCUMENT_EXTRACTION: ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER,
|
|
135
|
+
CONTENT_SAFETY: ExternalProvider_ExchangeProtocol_Kind.CONTENT_SAFETY_PROVIDER,
|
|
136
|
+
ELECTRONIC_SIGNATURE: ExternalProvider_ExchangeProtocol_Kind.ELECTRONIC_SIGNATURE_PROVIDER,
|
|
117
137
|
AGENT_CLIENT_PROTOCOL: ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL,
|
|
118
138
|
EMAIL: ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER,
|
|
119
139
|
EMAIL_INBOUND: ExternalProvider_ExchangeProtocol_Kind.EMAIL_INBOUND_PROVIDER,
|
|
@@ -160,6 +180,173 @@ export const ExternalProvider_ExchangeProtocol_Configuration_BaseSchema = z.obje
|
|
|
160
180
|
authConfig: ExternalProvider_Auth_ConfigurationSchema.optional(),
|
|
161
181
|
rateLimitConfig: ExternalProvider_RateLimitConfigurationSchema.optional(),
|
|
162
182
|
});
|
|
183
|
+
/**
|
|
184
|
+
* The keys of a `providerConfigurations.<providerRef>.<protocol>` bag that belong to the PROVIDER MODULE, never to the
|
|
185
|
+
* application (#2995). Each is projected by the backend registry from the module's own runtime contract, and each
|
|
186
|
+
* decides where a request goes and how its credential travels:
|
|
187
|
+
*
|
|
188
|
+
* - `runtimeContract` — the contract itself: the base URL or host slot, the API-key header, the operations.
|
|
189
|
+
* - `endpoints` — the webhook endpoints a `WEBHOOK_ORIGINATOR` contract declares (route keys, signature handling).
|
|
190
|
+
*
|
|
191
|
+
* An application cannot author either. The registry used to deep-merge an authored `runtimeContract` over the module's,
|
|
192
|
+
* so one configuration line (`runtimeContract: { baseUrl: 'http://anywhere' }`) sent the provider's key to any URL, over
|
|
193
|
+
* plain http, in any environment, around the host-held slot and its bare-DNS rule (#992 F3). The comments said the module
|
|
194
|
+
* owned the contract; nothing held it. Now three schemas refuse these keys when the configuration is parsed
|
|
195
|
+
* (`defineSaaSConfig`, the per-environment overlay, the backend's application configuration), and the registry refuses
|
|
196
|
+
* them again before it merges, so a configuration hydrated from anywhere else is refused too.
|
|
197
|
+
*
|
|
198
|
+
* The way to point a provider at a local double is the environment-gated loopback host of a host-held slot (#2991),
|
|
199
|
+
* which a deployment outside development and test refuses.
|
|
200
|
+
*
|
|
201
|
+
* Import path: `@wildo-ai/external-connectors-models`.
|
|
202
|
+
*/
|
|
203
|
+
export var ExternalProvider_ModuleOwnedConfigurationKey;
|
|
204
|
+
(function (ExternalProvider_ModuleOwnedConfigurationKey) {
|
|
205
|
+
ExternalProvider_ModuleOwnedConfigurationKey["RUNTIME_CONTRACT"] = "runtimeContract";
|
|
206
|
+
ExternalProvider_ModuleOwnedConfigurationKey["ENDPOINTS"] = "endpoints";
|
|
207
|
+
})(ExternalProvider_ModuleOwnedConfigurationKey || (ExternalProvider_ModuleOwnedConfigurationKey = {}));
|
|
208
|
+
const MODULE_OWNED_CONFIGURATION_KEYS = Object.values(ExternalProvider_ModuleOwnedConfigurationKey);
|
|
209
|
+
/**
|
|
210
|
+
* Every module-owned key written anywhere in a `providerConfigurations` value. Total over the
|
|
211
|
+
* {@link ExternalProvider_ModuleOwnedConfigurationKey} vocabulary, and over every bag, a protocol bag or not: no bag can
|
|
212
|
+
* legitimately carry these names, and a bag the registry does not merge today is one a later reader might.
|
|
213
|
+
* Anything that is not a record of records (a malformed value) yields nothing here; the schema reports that itself.
|
|
214
|
+
*/
|
|
215
|
+
export function findModuleOwnedProviderConfigurationKeys(providerConfigurations) {
|
|
216
|
+
const findings = [];
|
|
217
|
+
if (!isPlainRecord(providerConfigurations))
|
|
218
|
+
return findings;
|
|
219
|
+
for (const [providerRef, protocols] of Object.entries(providerConfigurations)) {
|
|
220
|
+
if (!isPlainRecord(protocols))
|
|
221
|
+
continue;
|
|
222
|
+
for (const [protocolKey, bag] of Object.entries(protocols)) {
|
|
223
|
+
if (!isPlainRecord(bag))
|
|
224
|
+
continue;
|
|
225
|
+
for (const key of MODULE_OWNED_CONFIGURATION_KEYS) {
|
|
226
|
+
if (Object.prototype.hasOwnProperty.call(bag, key))
|
|
227
|
+
findings.push({ providerRef, protocolKey, key });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return findings;
|
|
232
|
+
}
|
|
233
|
+
/** The one sentence every door refuses a module-owned key with, so an operator greps one wording. */
|
|
234
|
+
export function describeModuleOwnedProviderConfigurationKey(finding) {
|
|
235
|
+
return `providerConfigurations.${finding.providerRef}.${finding.protocolKey}.${finding.key} is refused: the provider module owns `
|
|
236
|
+
+ `'${finding.key}' (where its requests go and how its credential travels), and a configuration cannot rewrite it. Remove the key. `
|
|
237
|
+
+ 'To reach a local double of the vendor, set the provider\'s host slot to a loopback host:port in a development or test environment.';
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Report every module-owned key as an issue on `ctx`, at its path. The refinement each `providerConfigurations` schema
|
|
241
|
+
* applies, so the three refuse the same keys with the same words.
|
|
242
|
+
*
|
|
243
|
+
* assurance-control: WILDO.SECRETS.CREDENTIAL_SCOPING — a configuration cannot author where a provider's credential is sent (#2995).
|
|
244
|
+
*/
|
|
245
|
+
export function refuseModuleOwnedProviderConfigurationKeys(providerConfigurations, ctx) {
|
|
246
|
+
for (const finding of findModuleOwnedProviderConfigurationKeys(providerConfigurations)) {
|
|
247
|
+
ctx.addIssue({
|
|
248
|
+
code: "custom",
|
|
249
|
+
path: [finding.providerRef, finding.protocolKey, finding.key],
|
|
250
|
+
message: describeModuleOwnedProviderConfigurationKey(finding),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* The fields of a `providerConfigurations.<providerRef>.<protocol>` bag that NAME a credential (#3022). Each decides
|
|
256
|
+
* which secret a vendor or a coding agent receives, so each is held to a rule that leaves that choice to the provider
|
|
257
|
+
* module and the framework rather than to the configuration:
|
|
258
|
+
*
|
|
259
|
+
* | field | the rule | closed by |
|
|
260
|
+
* |---|---|---|
|
|
261
|
+
* | `authConfig.secretRef` | names only a slot the module's `secretsContract` declares, by its variable or its slug | #3002 |
|
|
262
|
+
* | an execution profile's `secretEnvVarName` | names only a variable the module declares (never a slug: it is the variable the agent reads) | #3002 |
|
|
263
|
+
* | an execution profile's `inheritedEnvironmentVariables` | names anything EXCEPT a secret the framework declares | #3018 |
|
|
264
|
+
*
|
|
265
|
+
* The vocabulary is the one named source for the doors that check these fields: the backend registry, on every read and
|
|
266
|
+
* in its startup walk, and the CLI's environment door. Each reads the fields through
|
|
267
|
+
* {@link readProviderConfigurationCredentialFields} and branches on the member, so a field added here gets a reader (a
|
|
268
|
+
* compile error until it does) and then reaches every door's exhaustive switch, where it is a compile error again until
|
|
269
|
+
* the door decides its rule. Before this vocabulary the three fields were string paths written out at each door.
|
|
270
|
+
*
|
|
271
|
+
* Where the credential then GOES is the other half of the property, and it is not a configuration field at all: the
|
|
272
|
+
* module owns its destination ({@link ExternalProvider_ModuleOwnedConfigurationKey}, #2995).
|
|
273
|
+
*
|
|
274
|
+
* Import path: `@wildo-ai/external-connectors-models`.
|
|
275
|
+
*/
|
|
276
|
+
export var ProviderConfigurationCredentialField;
|
|
277
|
+
(function (ProviderConfigurationCredentialField) {
|
|
278
|
+
/** `authConfig.secretRef`: the slot a protocol's key or client secret is read from, and sent to the vendor. */
|
|
279
|
+
ProviderConfigurationCredentialField["AUTH_SECRET_REF"] = "auth_secret_ref";
|
|
280
|
+
/**
|
|
281
|
+
* `executionProfiles.<profile>.secretEnvVarName`, on the agent-client-protocol bag only: the one variable read from the
|
|
282
|
+
* spawning process and set in the coding agent's environment.
|
|
283
|
+
*/
|
|
284
|
+
ProviderConfigurationCredentialField["EXECUTION_PROFILE_SECRET_ENV_VAR_NAME"] = "execution_profile_secret_env_var_name";
|
|
285
|
+
/**
|
|
286
|
+
* `executionProfiles.<profile>.inheritedEnvironmentVariables`, on the agent-client-protocol bag only: the host's own
|
|
287
|
+
* variables (the agent's login, its tool paths) copied into the coding agent's environment.
|
|
288
|
+
*/
|
|
289
|
+
ProviderConfigurationCredentialField["EXECUTION_PROFILE_INHERITED_ENVIRONMENT"] = "execution_profile_inherited_environment";
|
|
290
|
+
})(ProviderConfigurationCredentialField || (ProviderConfigurationCredentialField = {}));
|
|
291
|
+
const AGENT_CLIENT_PROTOCOL_MEMBER_NAME = Object.keys(ExternalProvider_ExchangeProtocol_Kind)
|
|
292
|
+
.find((member) => ExternalProvider_ExchangeProtocol_Kind[member] === ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL);
|
|
293
|
+
/**
|
|
294
|
+
* Whether a protocol key of a `providerConfigurations.<providerRef>` value holds the agent-client-protocol bag: the
|
|
295
|
+
* protocol's wire value, or its member name. The backend reads the configuration under the wire value only, but a
|
|
296
|
+
* credential-naming field is checked under either key, so a bag authored under the member name is refused by every door
|
|
297
|
+
* rather than by the CLI alone.
|
|
298
|
+
*/
|
|
299
|
+
export function isAgentClientProtocolConfigurationKey(protocolKey) {
|
|
300
|
+
return protocolKey === ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL || protocolKey === AGENT_CLIENT_PROTOCOL_MEMBER_NAME;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* The authored execution profiles of an agent-client-protocol bag; nothing for any other bag.
|
|
304
|
+
*
|
|
305
|
+
* Read from ANY object, an array included, and each profile that is any object, never only from plain records: the doors
|
|
306
|
+
* iterated `Object.entries` before this vocabulary, and the registry's merge turns an array into `{ '0': profile }`, which
|
|
307
|
+
* an agent or a default profile can select. Reading plain records only would leave such a profile's `secretEnvVarName`
|
|
308
|
+
* unchecked while dispatch still injects it (#3022 review F1). What is not an object carries no field to read.
|
|
309
|
+
*/
|
|
310
|
+
function authoredExecutionProfiles(protocolKey, bag) {
|
|
311
|
+
if (!isAgentClientProtocolConfigurationKey(protocolKey) || !isObject(bag.executionProfiles))
|
|
312
|
+
return [];
|
|
313
|
+
return Object.entries(bag.executionProfiles).filter((entry) => isObject(entry[1]));
|
|
314
|
+
}
|
|
315
|
+
/** One reader per field, so a member added to the vocabulary without one is a compile error. */
|
|
316
|
+
const PROVIDER_CONFIGURATION_CREDENTIAL_FIELD_READERS = {
|
|
317
|
+
[ProviderConfigurationCredentialField.AUTH_SECRET_REF]: (_protocolKey, bag) => {
|
|
318
|
+
const value = isObject(bag.authConfig) ? bag.authConfig.secretRef : undefined;
|
|
319
|
+
return value === undefined ? [] : [{ field: ProviderConfigurationCredentialField.AUTH_SECRET_REF, path: "authConfig.secretRef", value }];
|
|
320
|
+
},
|
|
321
|
+
[ProviderConfigurationCredentialField.EXECUTION_PROFILE_SECRET_ENV_VAR_NAME]: (protocolKey, bag) => authoredExecutionProfiles(protocolKey, bag).flatMap(([executionProfileRef, profile]) => profile.secretEnvVarName === undefined ? [] : [{
|
|
322
|
+
field: ProviderConfigurationCredentialField.EXECUTION_PROFILE_SECRET_ENV_VAR_NAME,
|
|
323
|
+
path: `executionProfiles.${executionProfileRef}.secretEnvVarName`,
|
|
324
|
+
executionProfileRef,
|
|
325
|
+
value: profile.secretEnvVarName,
|
|
326
|
+
}]),
|
|
327
|
+
[ProviderConfigurationCredentialField.EXECUTION_PROFILE_INHERITED_ENVIRONMENT]: (protocolKey, bag) => authoredExecutionProfiles(protocolKey, bag).flatMap(([executionProfileRef, profile]) => profile.inheritedEnvironmentVariables === undefined ? [] : [{
|
|
328
|
+
field: ProviderConfigurationCredentialField.EXECUTION_PROFILE_INHERITED_ENVIRONMENT,
|
|
329
|
+
path: `executionProfiles.${executionProfileRef}.inheritedEnvironmentVariables`,
|
|
330
|
+
executionProfileRef,
|
|
331
|
+
value: profile.inheritedEnvironmentVariables,
|
|
332
|
+
}]),
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* Every credential-naming field written in one protocol bag of a provider configuration, in vocabulary order. Total over
|
|
336
|
+
* {@link ProviderConfigurationCredentialField}. A bag that is not a record yields nothing; its schema reports that itself.
|
|
337
|
+
*/
|
|
338
|
+
export function readProviderConfigurationCredentialFields(protocolKey, bag) {
|
|
339
|
+
if (!isPlainRecord(bag))
|
|
340
|
+
return [];
|
|
341
|
+
return Object.values(ProviderConfigurationCredentialField).flatMap((field) => PROVIDER_CONFIGURATION_CREDENTIAL_FIELD_READERS[field](protocolKey, bag));
|
|
342
|
+
}
|
|
343
|
+
function isPlainRecord(value) {
|
|
344
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
345
|
+
}
|
|
346
|
+
/** Any object, an array included: the shape a credential-naming field is read from, so no authored object escapes it. */
|
|
347
|
+
function isObject(value) {
|
|
348
|
+
return typeof value === "object" && value !== null;
|
|
349
|
+
}
|
|
163
350
|
export var ExternalProvider_IO_Direction;
|
|
164
351
|
(function (ExternalProvider_IO_Direction) {
|
|
165
352
|
ExternalProvider_IO_Direction["INBOUND"] = "inbound";
|
|
@@ -172,4 +359,20 @@ export var ExternalProvider_IO_InteractionPattern;
|
|
|
172
359
|
ExternalProvider_IO_InteractionPattern["EVENT_BASED"] = "event_based";
|
|
173
360
|
ExternalProvider_IO_InteractionPattern["STREAMING"] = "stream";
|
|
174
361
|
})(ExternalProvider_IO_InteractionPattern || (ExternalProvider_IO_InteractionPattern = {}));
|
|
362
|
+
/**
|
|
363
|
+
* An address a vendor registration asks a person to TYPE at the vendor, as opposed to one the registration file already
|
|
364
|
+
* carries (#2713). A provider module's `vendorRegistration` names each one it needs beside its steps, so a screen can
|
|
365
|
+
* show it as a value to copy, labelled from its own words, rather than leave it inside a sentence.
|
|
366
|
+
*
|
|
367
|
+
* Add a member when a provider's registration names another such address. A Slack app's request URLs are not one: the
|
|
368
|
+
* manifest file carries them, and nobody types them.
|
|
369
|
+
*/
|
|
370
|
+
export var ProviderVendorRegistrationAddressKind;
|
|
371
|
+
(function (ProviderVendorRegistrationAddressKind) {
|
|
372
|
+
/**
|
|
373
|
+
* Where the vendor delivers a bot's messages: the Azure Bot's "Messaging endpoint", the route the engine mounts for the
|
|
374
|
+
* provider's inbound endpoint. Every bot of one application, its own or an organization's, is registered with the same one.
|
|
375
|
+
*/
|
|
376
|
+
ProviderVendorRegistrationAddressKind["MESSAGING_ENDPOINT"] = "messaging_endpoint";
|
|
377
|
+
})(ProviderVendorRegistrationAddressKind || (ProviderVendorRegistrationAddressKind = {}));
|
|
175
378
|
//# sourceMappingURL=commons.external-connectors-models.schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commons.external-connectors-models.schemas.js","sourceRoot":"","sources":["../../../../src/core/commons.external-connectors-models.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport { ExternalProvider_Auth_ConfigurationSchema, ExternalProvider_RateLimitConfigurationSchema } from \"./security.external-connectors-models.schemas\";\n\n\n/**\n * The ONE protocol vocabulary a provider can speak. Every other list is derived from or pinned\n * to this enum: the backend runtime-contract discriminants (`ProviderProtocolRuntimeKind`, a\n * subset of these members) and the application-authoring keys (`BUILTIN_PROVIDER_PROTOCOL` in\n * `@wildo-ai/saas-models`, its key set pinned by a drift test because that package must not\n * import this one into browser bundles).\n *\n * RETIRED 2026-09-05 (#327): `MCP_CONNECTOR`, `A2A_CONNECTOR`, `GIT_PROVIDER`, `GRPC`,\n * `SSO_SAML`. Each had an authored profile/configuration module in this package and NOTHING\n * that read it — no runtime-contract arm, no provider module declaring it, no consumer of any\n * export outside the module itself (measured with a positive control). Wildo's own MCP server,\n * A2A plane and SAML SSO are engine-implemented surfaces, not provider-declared protocols, and\n * none of them referenced these members. A retired member is refused at CONFIG time by\n * `ProviderProtocolSelectorSchema`, naming the value. Re-admit one only together with a\n * runtime-contract arm and a provider module that declares it.\n */\nexport enum ExternalProvider_ExchangeProtocol_Kind {\n // WEB\n REST_API = \"rest_api\",\n WEBHOOK_ORIGINATOR = \"webhook_originator\",\n // SOAP ?\n \n // AI\n LLM_PROVIDER = \"llm_provider\",\n /**\n * Zed's Agent Client Protocol — a JSON-RPC session between Wildo (the client)\n * and a CODING AGENT subprocess that reads and writes a workspace, runs\n * commands, and calls back for permission.\n *\n * Its own protocol kind rather than a mode of `CLI_RUNTIME`, for the reason\n * `EMBEDDINGS_PROVIDER` records above and one more that is specific to it: a\n * coding agent is not a one-shot text call wearing a subprocess. Every\n * capability the previous CLI transport lacked — token and cost accounting, a\n * permission channel, cancellation, resumption, live progress — was missing\n * because the one-shot shape has nowhere to put it, not because nobody had\n * implemented it yet.\n *\n * NOT to be confused with the IBM/BeeAI \"Agent Communication Protocol\", which\n * shares the acronym and is agent-to-agent — that space is `A2A_CONNECTOR`.\n */\n AGENT_CLIENT_PROTOCOL = \"agent_client_protocol\",\n // AI — multimodal generation (artifact-modality axis)\n /** Text-to-image generation (wired: gpt-image). Serves the IMAGE modality. */\n IMAGE_PROVIDER = \"image_provider\",\n /**\n * Text → vector embeddings (wired: OpenAI `text-embedding-3-*`). Serves the RAG derived-data\n * tier (corpus embedding via the `rag:embedding-drain` worker; query-time embedding in\n * retrieval). Deliberately its OWN protocol kind rather than a sixth `LLMProvider_OperationKey`\n * (RAG plan DL2): an unmapped LLM operation key fails SILENTLY across six consumer surfaces\n * (registry semantic-operation map, output normalization, executor dispatch, capability slot,\n * usage completeness, observability sink), whereas a new protocol kind fails COMPILATION at\n * every `runtimeContract.kind` switch — the `IMAGE_PROVIDER` precedent. It also gets its own\n * `EngineCapability.AI_EMBEDDINGS` slot so an application can select its embeddings provider\n * independently of its chat provider.\n */\n EMBEDDINGS_PROVIDER = \"embeddings_provider\",\n /**\n * Document bytes → text (wired: Mistral `mistral-ocr-latest`). Serves the file-side text\n * provider that `FileTextExtractionBackendService` owns, whose largest consumer is\n * `.ragSource()` corpus ingestion.\n *\n * Its own kind for the reason `EMBEDDINGS_PROVIDER` records above, and it fills its own\n * `EngineCapability.AI_DOCUMENT_EXTRACTION` slot so an application selects its OCR provider\n * independently of chat and embeddings — three unrelated procurement decisions.\n *\n * NOT to be confused with PDF *generation* (templates → bytes), which is the `pdfTemplates`\n * surface and is semantically the opposite direction. It has no provider slot: the\n * `EngineCapability.DOCUMENT_GENERATION` this paragraph used to name was withdrawn because no\n * provider capability token could ever fill it.\n */\n DOCUMENT_EXTRACTION_PROVIDER = \"document_extraction_provider\",\n /** Reserved — audio generation (TTS / music). Serves the AUDIO modality. Not yet implemented. */\n AUDIO_PROVIDER = \"audio_provider\",\n /** Reserved — video generation. Serves the VIDEO modality. Not yet implemented. */\n VIDEO_PROVIDER = \"video_provider\",\n \n // INFRA\n EMAIL_PROVIDER = \"email_provider\",\n /**\n * RECEIVING email (#1630): the provider hosts a receiving domain, announces each message through a\n * `WEBHOOK_ORIGINATOR` endpoint whose `capability` is `EMAIL_INBOUND`, and serves the message on\n * request through `StandardInboundEmail_Interface`. Its own kind rather than a mode of\n * `EMAIL_PROVIDER` because sending and receiving are separate procurement decisions and share no\n * operation: a sending contract composes a request, a receiving one parses a notification and\n * fetches a message.\n */\n EMAIL_INBOUND_PROVIDER = \"email_inbound_provider\",\n \n // AUTH\n SSO_OAUTH2 = \"sso_oauth2\",\n // OPENID_CONNECT ?\n\n // BILLING\n BILLING_PROVIDER = \"billing_provider\",\n\n // SMS (Phase G2)\n SMS_PROVIDER = \"sms_provider\",\n\n // FRONTEND\n FRONTEND_SDK = \"frontend_sdk\",\n}\n\n/**\n * The BACKEND runtime-contract discriminants — the subset of `ExternalProvider_ExchangeProtocol_Kind`\n * a `BackendProviderModule` can execute. Its VALUES are the enum members themselves (one spelling per\n * member since 2026-09-05, #327), so a runtime contract's `kind` IS the exchange kind and no\n * protocol→kind map exists anywhere; `BackendProtocolBinding.protocol` (the authoring KEY) and\n * `runtimeContract.kind` are checked for agreement at composition. A member absent here has no\n * backend arm: `FRONTEND_SDK` is declared by browser-side modules only, `AUDIO_PROVIDER` /\n * `VIDEO_PROVIDER` are reserved.\n *\n * A frozen const rather than a second enum because provider modules are an extension boundary and\n * the union discriminant must stay the enum member type. Import from\n * `@wildo-ai/external-connectors-models`; the private backend package consumes it, never defines it.\n */\nexport const ProviderProtocolRuntimeKind = Object.freeze({\n LLM: ExternalProvider_ExchangeProtocol_Kind.LLM_PROVIDER,\n IMAGE: ExternalProvider_ExchangeProtocol_Kind.IMAGE_PROVIDER,\n EMBEDDINGS: ExternalProvider_ExchangeProtocol_Kind.EMBEDDINGS_PROVIDER,\n DOCUMENT_EXTRACTION: ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER,\n AGENT_CLIENT_PROTOCOL: ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL,\n EMAIL: ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER,\n EMAIL_INBOUND: ExternalProvider_ExchangeProtocol_Kind.EMAIL_INBOUND_PROVIDER,\n OAUTH2_SSO: ExternalProvider_ExchangeProtocol_Kind.SSO_OAUTH2,\n BILLING: ExternalProvider_ExchangeProtocol_Kind.BILLING_PROVIDER,\n WEBHOOK_ORIGINATOR: ExternalProvider_ExchangeProtocol_Kind.WEBHOOK_ORIGINATOR,\n SMS: ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n REST: ExternalProvider_ExchangeProtocol_Kind.REST_API,\n} as const);\nexport type ProviderProtocolRuntimeKind =\n (typeof ProviderProtocolRuntimeKind)[keyof typeof ProviderProtocolRuntimeKind];\n\nexport enum APPLICATION_ENVIRONMENT {\n DEVELOPMENT = \"development\",\n STAGING = \"staging\",\n PRODUCTION = \"production\",\n}\n\n\nexport enum API_HttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PUT = \"PUT\",\n PATCH = \"PATCH\",\n DELETE = \"DELETE\",\n HEAD = \"HEAD\",\n OPTIONS = \"OPTIONS\",\n}\n\n/**\n * Shared protocol configuration fields — the ONE survivor of the per-protocol profile /\n * configuration / status triple (#965), and the reason it stays is a reader, not a legacy.\n *\n * `authConfig` is read on a resolved provider configuration by the OAuth2 connection resolver\n * (`clientId`, `secretRef`) and by the registry's default-over-custom merge, and `enabled` is what\n * a provider configuration parses at the boundary (`AgentClientProtocol_ConfigurationSchema`,\n * `OAuth2Provider_ConfigurationSchema` extend this; the LLM and webhook configurations intersect\n * with the inferred type). It is optional because execution-oriented protocols can own their own\n * auth/runtime policy contract.\n *\n * What is gone: the profile base (a provider's transport facts now live on its runtime contract,\n * `ProviderProtocolRuntimeContract`, which the registry projects) and the status base (nothing\n * ever recorded a per-protocol status). Both had no reader outside the declarations that extended\n * them.\n */\nexport const ExternalProvider_ExchangeProtocol_Configuration_BaseSchema = z.object({\n enabled: z.boolean(),\n authConfig: ExternalProvider_Auth_ConfigurationSchema.optional(),\n rateLimitConfig: ExternalProvider_RateLimitConfigurationSchema.optional(),\n});\n\nexport type ExternalProvider_ExchangeProtocol_Configuration_Base = z.infer<typeof ExternalProvider_ExchangeProtocol_Configuration_BaseSchema>;\n\nexport enum ExternalProvider_IO_Direction {\n INBOUND = \"inbound\",\n OUTBOUND = \"outbound\",\n BIDIRECTIONAL = \"bidirectional\",\n}\n\nexport enum ExternalProvider_IO_InteractionPattern {\n REQUEST_RESPONSE = \"request_response\",\n EVENT_BASED = \"event_based\",\n STREAMING = \"stream\",\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"commons.external-connectors-models.schemas.js","sourceRoot":"","sources":["../../../src/core/commons.external-connectors-models.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport { ExternalProvider_Auth_ConfigurationSchema, ExternalProvider_RateLimitConfigurationSchema } from \"./security.external-connectors-models.schemas\";\n\n\n/**\n * The ONE protocol vocabulary a provider can speak. Every other list is derived from or pinned\n * to this enum: the backend runtime-contract discriminants (`ProviderProtocolRuntimeKind`, a\n * subset of these members) and the application-authoring keys (`BUILTIN_PROVIDER_PROTOCOL` in\n * `@wildo-ai/saas-models`, its key set pinned by a drift test because that package must not\n * import this one into browser bundles).\n *\n * RETIRED 2026-09-05 (#327): `MCP_CONNECTOR`, `A2A_CONNECTOR`, `GIT_PROVIDER`, `GRPC`,\n * `SSO_SAML`. Each had an authored profile/configuration module in this package and NOTHING\n * that read it — no runtime-contract arm, no provider module declaring it, no consumer of any\n * export outside the module itself (measured with a positive control). Wildo's own MCP server,\n * A2A plane and SAML SSO are engine-implemented surfaces, not provider-declared protocols, and\n * none of them referenced these members. A retired member is refused at CONFIG time by\n * `ProviderProtocolSelectorSchema`, naming the value. Re-admit one only together with a\n * runtime-contract arm and a provider module that declares it.\n */\nexport enum ExternalProvider_ExchangeProtocol_Kind {\n // WEB\n REST_API = \"rest_api\",\n WEBHOOK_ORIGINATOR = \"webhook_originator\",\n // SOAP ?\n \n // AI\n LLM_PROVIDER = \"llm_provider\",\n /**\n * Zed's Agent Client Protocol — a JSON-RPC session between Wildo (the client)\n * and a CODING AGENT subprocess that reads and writes a workspace, runs\n * commands, and calls back for permission.\n *\n * Its own protocol kind rather than a mode of `CLI_RUNTIME`, for the reason\n * `EMBEDDINGS_PROVIDER` records above and one more that is specific to it: a\n * coding agent is not a one-shot text call wearing a subprocess. Every\n * capability the previous CLI transport lacked — token and cost accounting, a\n * permission channel, cancellation, resumption, live progress — was missing\n * because the one-shot shape has nowhere to put it, not because nobody had\n * implemented it yet.\n *\n * NOT to be confused with the IBM/BeeAI \"Agent Communication Protocol\", which\n * shares the acronym and is agent-to-agent — that space is `A2A_CONNECTOR`.\n */\n AGENT_CLIENT_PROTOCOL = \"agent_client_protocol\",\n // AI — multimodal generation (artifact-modality axis)\n /** Text-to-image generation (wired: gpt-image). Serves the IMAGE modality. */\n IMAGE_PROVIDER = \"image_provider\",\n /**\n * Text → vector embeddings (wired: OpenAI `text-embedding-3-*`). Serves the RAG derived-data\n * tier (corpus embedding via the `rag:embedding-drain` worker; query-time embedding in\n * retrieval). Deliberately its OWN protocol kind rather than a sixth `LLMProvider_OperationKey`\n * (RAG plan DL2): an unmapped LLM operation key fails SILENTLY across six consumer surfaces\n * (registry semantic-operation map, output normalization, executor dispatch, capability slot,\n * usage completeness, observability sink), whereas a new protocol kind fails COMPILATION at\n * every `runtimeContract.kind` switch — the `IMAGE_PROVIDER` precedent. It also gets its own\n * `EngineCapability.AI_EMBEDDINGS` slot so an application can select its embeddings provider\n * independently of its chat provider.\n */\n EMBEDDINGS_PROVIDER = \"embeddings_provider\",\n /**\n * Document bytes → text (wired: Mistral `mistral-ocr-latest`). Serves the file-side text\n * provider that `FileTextExtractionBackendService` owns, whose largest consumer is\n * `.ragSource()` corpus ingestion.\n *\n * Its own kind for the reason `EMBEDDINGS_PROVIDER` records above, and it fills its own\n * `EngineCapability.AI_DOCUMENT_EXTRACTION` slot so an application selects its OCR provider\n * independently of chat and embeddings — three unrelated procurement decisions.\n *\n * NOT to be confused with PDF *generation* (templates → bytes), which is the `pdfTemplates`\n * surface and is semantically the opposite direction. It has no provider slot: the\n * `EngineCapability.DOCUMENT_GENERATION` this paragraph used to name was withdrawn because no\n * provider capability token could ever fill it.\n */\n DOCUMENT_EXTRACTION_PROVIDER = \"document_extraction_provider\",\n /**\n * Text → a classifier's verdict about it (#2292): first, whether third-party content entering an agent's prompt\n * carries a prompt-injection attack. Serves an agent's declared content guardrails.\n *\n * Its own kind for the reason `EMBEDDINGS_PROVIDER` records above, and it fills its own\n * `EngineCapability.AI_CONTENT_SAFETY` slot so an application chooses the vendor that screens its model's input\n * independently of the vendor that answers it.\n */\n CONTENT_SAFETY_PROVIDER = \"content_safety_provider\",\n /**\n * A deliverable → its signers' own electronic signatures, applied by a trust-service vendor (#2293). The provider\n * declares pure functions over a conversation of requests; the engine owns transport, keys and deadlines, and never\n * trusts the vendor's word that a request is signed.\n *\n * Its own kind and its own `EngineCapability.ELECTRONIC_SIGNATURE` slot: which vendor signs a client's engagement\n * letter is a legal and procurement decision unrelated to every other provider's.\n */\n ELECTRONIC_SIGNATURE_PROVIDER = \"electronic_signature_provider\",\n /** Reserved — audio generation (TTS / music). Serves the AUDIO modality. Not yet implemented. */\n AUDIO_PROVIDER = \"audio_provider\",\n /** Reserved — video generation. Serves the VIDEO modality. Not yet implemented. */\n VIDEO_PROVIDER = \"video_provider\",\n \n // INFRA\n EMAIL_PROVIDER = \"email_provider\",\n /**\n * RECEIVING email (#1630): the provider hosts a receiving domain, announces each message through a\n * `WEBHOOK_ORIGINATOR` endpoint whose `capability` is `EMAIL_INBOUND`, and serves the message on\n * request through `StandardInboundEmail_Interface`. Its own kind rather than a mode of\n * `EMAIL_PROVIDER` because sending and receiving are separate procurement decisions and share no\n * operation: a sending contract composes a request, a receiving one parses a notification and\n * fetches a message.\n */\n EMAIL_INBOUND_PROVIDER = \"email_inbound_provider\",\n \n // AUTH\n SSO_OAUTH2 = \"sso_oauth2\",\n // OPENID_CONNECT ?\n\n // BILLING\n BILLING_PROVIDER = \"billing_provider\",\n\n // SMS (Phase G2)\n SMS_PROVIDER = \"sms_provider\",\n\n // FRONTEND\n FRONTEND_SDK = \"frontend_sdk\",\n}\n\n/**\n * The BACKEND runtime-contract discriminants — the subset of `ExternalProvider_ExchangeProtocol_Kind`\n * a `BackendProviderModule` can execute. Its VALUES are the enum members themselves (one spelling per\n * member since 2026-09-05, #327), so a runtime contract's `kind` IS the exchange kind and no\n * protocol→kind map exists anywhere; `BackendProtocolBinding.protocol` (the authoring KEY) and\n * `runtimeContract.kind` are checked for agreement at composition. A member absent here has no\n * backend arm: `FRONTEND_SDK` is declared by browser-side modules only, `AUDIO_PROVIDER` /\n * `VIDEO_PROVIDER` are reserved.\n *\n * A frozen const rather than a second enum because provider modules are an extension boundary and\n * the union discriminant must stay the enum member type. Import from\n * `@wildo-ai/external-connectors-models`; the private backend package consumes it, never defines it.\n */\nexport const ProviderProtocolRuntimeKind = Object.freeze({\n LLM: ExternalProvider_ExchangeProtocol_Kind.LLM_PROVIDER,\n IMAGE: ExternalProvider_ExchangeProtocol_Kind.IMAGE_PROVIDER,\n EMBEDDINGS: ExternalProvider_ExchangeProtocol_Kind.EMBEDDINGS_PROVIDER,\n DOCUMENT_EXTRACTION: ExternalProvider_ExchangeProtocol_Kind.DOCUMENT_EXTRACTION_PROVIDER,\n CONTENT_SAFETY: ExternalProvider_ExchangeProtocol_Kind.CONTENT_SAFETY_PROVIDER,\n ELECTRONIC_SIGNATURE: ExternalProvider_ExchangeProtocol_Kind.ELECTRONIC_SIGNATURE_PROVIDER,\n AGENT_CLIENT_PROTOCOL: ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL,\n EMAIL: ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER,\n EMAIL_INBOUND: ExternalProvider_ExchangeProtocol_Kind.EMAIL_INBOUND_PROVIDER,\n OAUTH2_SSO: ExternalProvider_ExchangeProtocol_Kind.SSO_OAUTH2,\n BILLING: ExternalProvider_ExchangeProtocol_Kind.BILLING_PROVIDER,\n WEBHOOK_ORIGINATOR: ExternalProvider_ExchangeProtocol_Kind.WEBHOOK_ORIGINATOR,\n SMS: ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n REST: ExternalProvider_ExchangeProtocol_Kind.REST_API,\n} as const);\nexport type ProviderProtocolRuntimeKind =\n (typeof ProviderProtocolRuntimeKind)[keyof typeof ProviderProtocolRuntimeKind];\n\nexport enum APPLICATION_ENVIRONMENT {\n DEVELOPMENT = \"development\",\n STAGING = \"staging\",\n PRODUCTION = \"production\",\n}\n\n\nexport enum API_HttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PUT = \"PUT\",\n PATCH = \"PATCH\",\n DELETE = \"DELETE\",\n HEAD = \"HEAD\",\n OPTIONS = \"OPTIONS\",\n}\n\n/**\n * Shared protocol configuration fields — the ONE survivor of the per-protocol profile /\n * configuration / status triple (#965), and the reason it stays is a reader, not a legacy.\n *\n * `authConfig` is read on a resolved provider configuration by the OAuth2 connection resolver\n * (`clientId`, `secretRef`) and by the registry's default-over-custom merge, and `enabled` is what\n * a provider configuration parses at the boundary (`AgentClientProtocol_ConfigurationSchema`,\n * `OAuth2Provider_ConfigurationSchema` extend this; the LLM and webhook configurations intersect\n * with the inferred type). It is optional because execution-oriented protocols can own their own\n * auth/runtime policy contract.\n *\n * What is gone: the profile base (a provider's transport facts now live on its runtime contract,\n * `ProviderProtocolRuntimeContract`, which the registry projects) and the status base (nothing\n * ever recorded a per-protocol status). Both had no reader outside the declarations that extended\n * them.\n */\nexport const ExternalProvider_ExchangeProtocol_Configuration_BaseSchema = z.object({\n enabled: z.boolean(),\n authConfig: ExternalProvider_Auth_ConfigurationSchema.optional(),\n rateLimitConfig: ExternalProvider_RateLimitConfigurationSchema.optional(),\n});\n\nexport type ExternalProvider_ExchangeProtocol_Configuration_Base = z.infer<typeof ExternalProvider_ExchangeProtocol_Configuration_BaseSchema>;\n\n/**\n * The keys of a `providerConfigurations.<providerRef>.<protocol>` bag that belong to the PROVIDER MODULE, never to the\n * application (#2995). Each is projected by the backend registry from the module's own runtime contract, and each\n * decides where a request goes and how its credential travels:\n *\n * - `runtimeContract` — the contract itself: the base URL or host slot, the API-key header, the operations.\n * - `endpoints` — the webhook endpoints a `WEBHOOK_ORIGINATOR` contract declares (route keys, signature handling).\n *\n * An application cannot author either. The registry used to deep-merge an authored `runtimeContract` over the module's,\n * so one configuration line (`runtimeContract: { baseUrl: 'http://anywhere' }`) sent the provider's key to any URL, over\n * plain http, in any environment, around the host-held slot and its bare-DNS rule (#992 F3). The comments said the module\n * owned the contract; nothing held it. Now three schemas refuse these keys when the configuration is parsed\n * (`defineSaaSConfig`, the per-environment overlay, the backend's application configuration), and the registry refuses\n * them again before it merges, so a configuration hydrated from anywhere else is refused too.\n *\n * The way to point a provider at a local double is the environment-gated loopback host of a host-held slot (#2991),\n * which a deployment outside development and test refuses.\n *\n * Import path: `@wildo-ai/external-connectors-models`.\n */\nexport enum ExternalProvider_ModuleOwnedConfigurationKey {\n RUNTIME_CONTRACT = \"runtimeContract\",\n ENDPOINTS = \"endpoints\",\n}\n\n/** One authored key a provider module owns: where it was written, so the refusal can name it. */\nexport interface ExternalProvider_ModuleOwnedConfigurationKeyFinding {\n readonly providerRef: string;\n /** The second-level key of the bag: a protocol kind, or a key the module reads itself (`registration`). */\n readonly protocolKey: string;\n readonly key: ExternalProvider_ModuleOwnedConfigurationKey;\n}\n\nconst MODULE_OWNED_CONFIGURATION_KEYS: readonly ExternalProvider_ModuleOwnedConfigurationKey[] = Object.values(ExternalProvider_ModuleOwnedConfigurationKey);\n\n/**\n * Every module-owned key written anywhere in a `providerConfigurations` value. Total over the\n * {@link ExternalProvider_ModuleOwnedConfigurationKey} vocabulary, and over every bag, a protocol bag or not: no bag can\n * legitimately carry these names, and a bag the registry does not merge today is one a later reader might.\n * Anything that is not a record of records (a malformed value) yields nothing here; the schema reports that itself.\n */\nexport function findModuleOwnedProviderConfigurationKeys(providerConfigurations: unknown): ExternalProvider_ModuleOwnedConfigurationKeyFinding[] {\n const findings: ExternalProvider_ModuleOwnedConfigurationKeyFinding[] = [];\n if (!isPlainRecord(providerConfigurations)) return findings;\n for (const [providerRef, protocols] of Object.entries(providerConfigurations)) {\n if (!isPlainRecord(protocols)) continue;\n for (const [protocolKey, bag] of Object.entries(protocols)) {\n if (!isPlainRecord(bag)) continue;\n for (const key of MODULE_OWNED_CONFIGURATION_KEYS) {\n if (Object.prototype.hasOwnProperty.call(bag, key)) findings.push({ providerRef, protocolKey, key });\n }\n }\n }\n return findings;\n}\n\n/** The one sentence every door refuses a module-owned key with, so an operator greps one wording. */\nexport function describeModuleOwnedProviderConfigurationKey(finding: ExternalProvider_ModuleOwnedConfigurationKeyFinding): string {\n return `providerConfigurations.${finding.providerRef}.${finding.protocolKey}.${finding.key} is refused: the provider module owns `\n + `'${finding.key}' (where its requests go and how its credential travels), and a configuration cannot rewrite it. Remove the key. `\n + 'To reach a local double of the vendor, set the provider\\'s host slot to a loopback host:port in a development or test environment.';\n}\n\n/**\n * Report every module-owned key as an issue on `ctx`, at its path. The refinement each `providerConfigurations` schema\n * applies, so the three refuse the same keys with the same words.\n *\n * assurance-control: WILDO.SECRETS.CREDENTIAL_SCOPING — a configuration cannot author where a provider's credential is sent (#2995).\n */\nexport function refuseModuleOwnedProviderConfigurationKeys(providerConfigurations: unknown, ctx: z.RefinementCtx): void {\n for (const finding of findModuleOwnedProviderConfigurationKeys(providerConfigurations)) {\n ctx.addIssue({\n code: \"custom\",\n path: [finding.providerRef, finding.protocolKey, finding.key],\n message: describeModuleOwnedProviderConfigurationKey(finding),\n });\n }\n}\n\n/**\n * The fields of a `providerConfigurations.<providerRef>.<protocol>` bag that NAME a credential (#3022). Each decides\n * which secret a vendor or a coding agent receives, so each is held to a rule that leaves that choice to the provider\n * module and the framework rather than to the configuration:\n *\n * | field | the rule | closed by |\n * |---|---|---|\n * | `authConfig.secretRef` | names only a slot the module's `secretsContract` declares, by its variable or its slug | #3002 |\n * | an execution profile's `secretEnvVarName` | names only a variable the module declares (never a slug: it is the variable the agent reads) | #3002 |\n * | an execution profile's `inheritedEnvironmentVariables` | names anything EXCEPT a secret the framework declares | #3018 |\n *\n * The vocabulary is the one named source for the doors that check these fields: the backend registry, on every read and\n * in its startup walk, and the CLI's environment door. Each reads the fields through\n * {@link readProviderConfigurationCredentialFields} and branches on the member, so a field added here gets a reader (a\n * compile error until it does) and then reaches every door's exhaustive switch, where it is a compile error again until\n * the door decides its rule. Before this vocabulary the three fields were string paths written out at each door.\n *\n * Where the credential then GOES is the other half of the property, and it is not a configuration field at all: the\n * module owns its destination ({@link ExternalProvider_ModuleOwnedConfigurationKey}, #2995).\n *\n * Import path: `@wildo-ai/external-connectors-models`.\n */\nexport enum ProviderConfigurationCredentialField {\n /** `authConfig.secretRef`: the slot a protocol's key or client secret is read from, and sent to the vendor. */\n AUTH_SECRET_REF = \"auth_secret_ref\",\n /**\n * `executionProfiles.<profile>.secretEnvVarName`, on the agent-client-protocol bag only: the one variable read from the\n * spawning process and set in the coding agent's environment.\n */\n EXECUTION_PROFILE_SECRET_ENV_VAR_NAME = \"execution_profile_secret_env_var_name\",\n /**\n * `executionProfiles.<profile>.inheritedEnvironmentVariables`, on the agent-client-protocol bag only: the host's own\n * variables (the agent's login, its tool paths) copied into the coding agent's environment.\n */\n EXECUTION_PROFILE_INHERITED_ENVIRONMENT = \"execution_profile_inherited_environment\",\n}\n\n/** One credential-naming field as authored, unchecked: the door that reads it decides whether it is admitted. */\nexport interface ProviderConfigurationCredentialFieldReading {\n readonly field: ProviderConfigurationCredentialField;\n /** Where it sits inside the protocol bag (`authConfig.secretRef`, `executionProfiles.mine.secretEnvVarName`), for a refusal to name. */\n readonly path: string;\n /** The execution profile it was read from, for the two profile fields. */\n readonly executionProfileRef?: string;\n /** The authored value. Never `undefined`: a field that is not written yields no reading. */\n readonly value: unknown;\n}\n\nconst AGENT_CLIENT_PROTOCOL_MEMBER_NAME = (Object.keys(ExternalProvider_ExchangeProtocol_Kind) as Array<keyof typeof ExternalProvider_ExchangeProtocol_Kind>)\n .find((member) => ExternalProvider_ExchangeProtocol_Kind[member] === ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL);\n\n/**\n * Whether a protocol key of a `providerConfigurations.<providerRef>` value holds the agent-client-protocol bag: the\n * protocol's wire value, or its member name. The backend reads the configuration under the wire value only, but a\n * credential-naming field is checked under either key, so a bag authored under the member name is refused by every door\n * rather than by the CLI alone.\n */\nexport function isAgentClientProtocolConfigurationKey(protocolKey: string): boolean {\n return protocolKey === ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL || protocolKey === AGENT_CLIENT_PROTOCOL_MEMBER_NAME;\n}\n\n/**\n * The authored execution profiles of an agent-client-protocol bag; nothing for any other bag.\n *\n * Read from ANY object, an array included, and each profile that is any object, never only from plain records: the doors\n * iterated `Object.entries` before this vocabulary, and the registry's merge turns an array into `{ '0': profile }`, which\n * an agent or a default profile can select. Reading plain records only would leave such a profile's `secretEnvVarName`\n * unchecked while dispatch still injects it (#3022 review F1). What is not an object carries no field to read.\n */\nfunction authoredExecutionProfiles(protocolKey: string, bag: Record<string, unknown>): Array<[string, Record<string, unknown>]> {\n if (!isAgentClientProtocolConfigurationKey(protocolKey) || !isObject(bag.executionProfiles)) return [];\n return Object.entries(bag.executionProfiles).filter((entry): entry is [string, Record<string, unknown>] => isObject(entry[1]));\n}\n\n/** One reader per field, so a member added to the vocabulary without one is a compile error. */\nconst PROVIDER_CONFIGURATION_CREDENTIAL_FIELD_READERS: {\n readonly [Field in ProviderConfigurationCredentialField]: (protocolKey: string, bag: Record<string, unknown>) => ProviderConfigurationCredentialFieldReading[];\n} = {\n [ProviderConfigurationCredentialField.AUTH_SECRET_REF]: (_protocolKey, bag) => {\n const value = isObject(bag.authConfig) ? (bag.authConfig as Record<string, unknown>).secretRef : undefined;\n return value === undefined ? [] : [{ field: ProviderConfigurationCredentialField.AUTH_SECRET_REF, path: \"authConfig.secretRef\", value }];\n },\n [ProviderConfigurationCredentialField.EXECUTION_PROFILE_SECRET_ENV_VAR_NAME]: (protocolKey, bag) =>\n authoredExecutionProfiles(protocolKey, bag).flatMap(([executionProfileRef, profile]) => profile.secretEnvVarName === undefined ? [] : [{\n field: ProviderConfigurationCredentialField.EXECUTION_PROFILE_SECRET_ENV_VAR_NAME,\n path: `executionProfiles.${executionProfileRef}.secretEnvVarName`,\n executionProfileRef,\n value: profile.secretEnvVarName,\n }]),\n [ProviderConfigurationCredentialField.EXECUTION_PROFILE_INHERITED_ENVIRONMENT]: (protocolKey, bag) =>\n authoredExecutionProfiles(protocolKey, bag).flatMap(([executionProfileRef, profile]) => profile.inheritedEnvironmentVariables === undefined ? [] : [{\n field: ProviderConfigurationCredentialField.EXECUTION_PROFILE_INHERITED_ENVIRONMENT,\n path: `executionProfiles.${executionProfileRef}.inheritedEnvironmentVariables`,\n executionProfileRef,\n value: profile.inheritedEnvironmentVariables,\n }]),\n};\n\n/**\n * Every credential-naming field written in one protocol bag of a provider configuration, in vocabulary order. Total over\n * {@link ProviderConfigurationCredentialField}. A bag that is not a record yields nothing; its schema reports that itself.\n */\nexport function readProviderConfigurationCredentialFields(protocolKey: string, bag: unknown): ProviderConfigurationCredentialFieldReading[] {\n if (!isPlainRecord(bag)) return [];\n return Object.values(ProviderConfigurationCredentialField).flatMap((field) => PROVIDER_CONFIGURATION_CREDENTIAL_FIELD_READERS[field](protocolKey, bag));\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** Any object, an array included: the shape a credential-naming field is read from, so no authored object escapes it. */\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport enum ExternalProvider_IO_Direction {\n INBOUND = \"inbound\",\n OUTBOUND = \"outbound\",\n BIDIRECTIONAL = \"bidirectional\",\n}\n\nexport enum ExternalProvider_IO_InteractionPattern {\n REQUEST_RESPONSE = \"request_response\",\n EVENT_BASED = \"event_based\",\n STREAMING = \"stream\",\n}\n\n\n/**\n * An address a vendor registration asks a person to TYPE at the vendor, as opposed to one the registration file already\n * carries (#2713). A provider module's `vendorRegistration` names each one it needs beside its steps, so a screen can\n * show it as a value to copy, labelled from its own words, rather than leave it inside a sentence.\n *\n * Add a member when a provider's registration names another such address. A Slack app's request URLs are not one: the\n * manifest file carries them, and nobody types them.\n */\nexport enum ProviderVendorRegistrationAddressKind {\n /**\n * Where the vendor delivers a bot's messages: the Azure Bot's \"Messaging endpoint\", the route the engine mounts for the\n * provider's inbound endpoint. Every bot of one application, its own or an organization's, is registered with the same one.\n */\n MESSAGING_ENDPOINT = \"messaging_endpoint\",\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.enums.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"oauth2.enums.d.ts","sourceRoot":"","sources":["../../../src/core/oauth2.enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;GAGG;AACH,oBAAY,gBAAgB;IAC1B,iGAAiG;IACjG,kBAAkB,uBAAuB;IAEzC,6FAA6F;IAC7F,kBAAkB,uBAAuB;IAEzC,0EAA0E;IAC1E,aAAa,kBAAkB;IAE/B,oEAAoE;IACpE,QAAQ,aAAa;IAErB,uEAAuE;IACvE,QAAQ,aAAa;IAErB,4EAA4E;IAC5E,WAAW,iDAAiD;IAE5D,6DAA6D;IAC7D,UAAU,gDAAgD;CAC3D;AAED;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;CAC5C;AAED;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,oBAAY,+BAA+B;IACzC,wDAAwD;IACxD,mBAAmB,wBAAwB;IAE3C,kCAAkC;IAClC,kBAAkB,uBAAuB;IAEzC,qDAAqD;IACrD,iBAAiB,sBAAsB;IAEvC,qDAAqD;IACrD,eAAe,oBAAoB;IAEnC,yCAAyC;IACzC,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,mCAAmC;IACnC,IAAI,SAAS;IAEb,yCAAyC;IACzC,KAAK,UAAU;IAEf,sDAAsD;IACtD,OAAO,YAAY;IAEnB,mCAAmC;IACnC,cAAc,mBAAmB;CAClC;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,+CAA+C;IAC/C,MAAM,WAAW;IAEjB,+CAA+C;IAC/C,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,6DAA6D;IAC7D,UAAU,eAAe;IAEzB,+DAA+D;IAC/D,QAAQ,aAAa;IAErB,mCAAmC;IACnC,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,oCAAoC;IACpC,MAAM,WAAW;IACjB,mCAAmC;IACnC,KAAK,UAAU;IACf,mCAAmC;IACnC,KAAK,UAAU;IACf,yCAAyC;IACzC,aAAa,kBAAkB;IAC/B,+BAA+B;IAC/B,WAAW,gBAAgB;CAC5B;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,8BAA8B;IAC9B,MAAM,WAAW;IACjB,yBAAyB;IACzB,KAAK,UAAU;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.enums.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"oauth2.enums.js","sourceRoot":"","sources":["../../../src/core/oauth2.enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,gBAqBX;AArBD,WAAY,gBAAgB;IAC1B,iGAAiG;IACjG,6DAAyC,CAAA;IAEzC,6FAA6F;IAC7F,6DAAyC,CAAA;IAEzC,0EAA0E;IAC1E,mDAA+B,CAAA;IAE/B,oEAAoE;IACpE,yCAAqB,CAAA;IAErB,uEAAuE;IACvE,yCAAqB,CAAA;IAErB,4EAA4E;IAC5E,gFAA4D,CAAA;IAE5D,6DAA6D;IAC7D,8EAA0D,CAAA;AAC5D,CAAC,EArBW,gBAAgB,KAAhB,gBAAgB,QAqB3B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,sCAAe,CAAA;IACf,4CAAqB,CAAA;IACrB,sDAA+B,CAAA;IAC/B,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;IACjC,kEAA2C,CAAA;AAC7C,CAAC,EARW,mBAAmB,KAAnB,mBAAmB,QAQ9B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,mCAAa,CAAA;AACf,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,+BAeX;AAfD,WAAY,+BAA+B;IACzC,wDAAwD;IACxD,8EAA2C,CAAA;IAE3C,kCAAkC;IAClC,4EAAyC,CAAA;IAEzC,qDAAqD;IACrD,0EAAuC,CAAA;IAEvC,qDAAqD;IACrD,sEAAmC,CAAA;IAEnC,yCAAyC;IACzC,gDAAa,CAAA;AACf,CAAC,EAfW,+BAA+B,KAA/B,+BAA+B,QAe1C;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,mCAAmC;IACnC,8BAAa,CAAA;IAEb,yCAAyC;IACzC,gCAAe,CAAA;IAEf,sDAAsD;IACtD,oCAAmB,CAAA;IAEnB,mCAAmC;IACnC,kDAAiC,CAAA;AACnC,CAAC,EAZW,aAAa,KAAb,aAAa,QAYxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,+CAA+C;IAC/C,sCAAiB,CAAA;IAEjB,+CAA+C;IAC/C,wCAAmB,CAAA;AACrB,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACxB,6DAA6D;IAC7D,2CAAyB,CAAA;IAEzB,+DAA+D;IAC/D,uCAAqB,CAAA;IAErB,mCAAmC;IACnC,mCAAiB,CAAA;AACnB,CAAC,EATW,cAAc,KAAd,cAAc,QASzB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,kBAWX;AAXD,WAAY,kBAAkB;IAC5B,oCAAoC;IACpC,uCAAiB,CAAA;IACjB,mCAAmC;IACnC,qCAAe,CAAA;IACf,mCAAmC;IACnC,qCAAe,CAAA;IACf,yCAAyC;IACzC,qDAA+B,CAAA;IAC/B,+BAA+B;IAC/B,iDAA2B,CAAA;AAC7B,CAAC,EAXW,kBAAkB,KAAlB,kBAAkB,QAW7B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,8BAA8B;IAC9B,yCAAiB,CAAA;IACjB,yBAAyB;IACzB,uCAAe,CAAA;AACjB,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B","sourcesContent":["/**\n * OAuth2 Enums - Shared OAuth2 type definitions\n * \n * These enums are extracted to avoid circular dependencies between\n * security schemas and oauth2 protocol schemas.\n * \n * Based on:\n * - RFC 6749: The OAuth 2.0 Authorization Framework\n * - RFC 7636: Proof Key for Code Exchange (PKCE)\n * - OpenID Connect Core 1.0\n */\n\n/**\n * OAuth2 Grant Types as defined in RFC 6749\n * @see https://datatracker.ietf.org/doc/html/rfc6749#section-4\n */\nexport enum OAuth2_GrantType {\n /** Authorization Code Grant (RFC 6749 §4.1) - For server-side apps with secure client secrets */\n AUTHORIZATION_CODE = 'authorization_code',\n \n /** Client Credentials Grant (RFC 6749 §4.4) - For machine-to-machine / S2S authentication */\n CLIENT_CREDENTIALS = 'client_credentials',\n \n /** Refresh Token Grant (RFC 6749 §6) - For obtaining new access tokens */\n REFRESH_TOKEN = 'refresh_token',\n \n /** Implicit Grant (RFC 6749 §4.2) - DEPRECATED, use PKCE instead */\n IMPLICIT = 'implicit',\n \n /** Resource Owner Password Credentials (RFC 6749 §4.3) - DEPRECATED */\n PASSWORD = 'password',\n \n /** Device Authorization Grant (RFC 8628) - For input-constrained devices */\n DEVICE_CODE = 'urn:ietf:params:oauth:grant-type:device_code',\n \n /** JWT Bearer Assertion (RFC 7523) - For service accounts */\n JWT_BEARER = 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n}\n\n/**\n * OAuth2 Response Types for Authorization Endpoint\n */\nexport enum OAuth2_ResponseType {\n CODE = 'code',\n TOKEN = 'token',\n ID_TOKEN = 'id_token',\n CODE_ID_TOKEN = 'code id_token',\n CODE_TOKEN = 'code token',\n ID_TOKEN_TOKEN = 'id_token token',\n CODE_ID_TOKEN_TOKEN = 'code id_token token',\n}\n\n/**\n * PKCE Code Challenge Methods (RFC 7636)\n */\nexport enum OAuth2_PKCE_Method {\n PLAIN = 'plain',\n S256 = 'S256',\n}\n\n/**\n * Token Endpoint Authentication Methods\n * How credentials are sent to the token endpoint\n */\nexport enum OAuth2_TokenEndpoint_AuthMethod {\n /** Credentials in Authorization header as Basic auth */\n CLIENT_SECRET_BASIC = 'client_secret_basic',\n \n /** Credentials in request body */\n CLIENT_SECRET_POST = 'client_secret_post',\n \n /** JWT assertion signed with client secret (HMAC) */\n CLIENT_SECRET_JWT = 'client_secret_jwt',\n \n /** JWT assertion signed with private key (RSA/EC) */\n PRIVATE_KEY_JWT = 'private_key_jwt',\n \n /** No authentication (public clients) */\n NONE = 'none',\n}\n\n/**\n * OpenID Connect Prompt Values\n * Controls how the authorization server prompts the user\n */\nexport enum OAuth2_Prompt {\n /** No prompt - silent auth only */\n NONE = 'none',\n \n /** Force login even if session exists */\n LOGIN = 'login',\n \n /** Require user consent even if previously granted */\n CONSENT = 'consent',\n \n /** Prompt for account selection */\n SELECT_ACCOUNT = 'select_account',\n}\n\n/**\n * Access Type - whether to request refresh tokens\n */\nexport enum OAuth2_AccessType {\n /** Only access token, no refresh capability */\n ONLINE = 'online',\n \n /** Request refresh token for offline access */\n OFFLINE = 'offline',\n}\n\n/**\n * OAuth2 Provider Purpose - what the OAuth2 is used for\n */\nexport enum OAuth2_Purpose {\n /** API access only - for making API calls to the provider */\n API_ACCESS = 'api_access',\n \n /** User SSO - for authenticating users into our application */\n USER_SSO = 'user_sso',\n \n /** Both API access and user SSO */\n HYBRID = 'hybrid',\n}\n\n/**\n * OAuth2 Token Format - How to format the token for API calls\n */\nexport enum OAuth2_TokenFormat {\n /** Authorization: Bearer <token> */\n BEARER = 'bearer',\n /** Authorization: token <token> */\n TOKEN = 'token',\n /** Authorization: OAuth <token> */\n OAUTH = 'oauth',\n /** Custom header specified separately */\n CUSTOM_HEADER = 'custom_header',\n /** Token in query parameter */\n QUERY_PARAM = 'query_param',\n}\n\n/**\n * OAuth2 Token Location - Where to send the access token\n */\nexport enum OAuth2_TokenLocation {\n /** In Authorization header */\n HEADER = 'header',\n /** As query parameter */\n QUERY = 'query',\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-classification.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"operation-classification.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../src/core/operation-classification.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,oBAAY,gCAAgC;IAC1C,IAAI,SAAS;IACb,KAAK,UAAU;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-classification.external-connectors-models.schemas.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"operation-classification.external-connectors-models.schemas.js","sourceRoot":"","sources":["../../../src/core/operation-classification.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,gCAGX;AAHD,WAAY,gCAAgC;IAC1C,iDAAa,CAAA;IACb,mDAAe,CAAA;AACjB,CAAC,EAHW,gCAAgC,KAAhC,gCAAgC,QAG3C","sourcesContent":["/**\n * Whether an external operation READS from or WRITES to the third-party system.\n *\n * Kept as its own tiny vocabulary because every operation catalogue needs it regardless of where\n * the catalogue came from: a caller decides retry-safety, an audit decides severity, and a UI\n * decides whether to confirm. Neutral by construction — it names the operation's effect, never a\n * source catalogue's spelling of it.\n */\nexport enum ExternalOperation_Classification {\n READ = \"READ\",\n WRITE = \"WRITE\",\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.external-connectors-models.schemas.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"operations.external-connectors-models.schemas.js","sourceRoot":"","sources":["../../../src/core/operations.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;oEAEoE;AAEpE,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9D,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\n/** ──────────────────────────────────────────────────────────────\n * Internal Schemas (concrete, for method access)\n * ────────────────────────────────────────────────────────────── */\n\nexport const ExternalProvider_OperationContextSchema = z.object({\n callTimestamp: z.iso.datetime(),\n callDuration: z.number().optional(),\n errorReason: z.string().optional(),\n});\nexport type ExternalProvider_OperationContext = z.infer<typeof ExternalProvider_OperationContextSchema>;\n\nexport type ExternalProvider_OperationDefinition_Base = {\n /** \n * Unique operation identifier\n * Format: {provider}-{domain}-{action} e.g., \"stripe-customers-create\"\n */\n operationKey: string,\n \n /** Provider reference (e.g., \"google\", \"slack\", \"stripe\") */\n providerRef: string,\n \n /** \n * Domains this operation belongs to (can span multiple domains)\n * e.g., [\"customers\"] or [\"sheets\", \"drive\"] for cross-domain operations\n * Empty/undefined for providers without explicit domains\n */\n domains?: string[],\n \n /** \n * Capabilities/features this operation uses\n * e.g., [\"storage\", \"file-upload\"] for a file creation operation\n */\n features?: string[],\n \n /** Human-readable name */\n displayName?: string,\n \n /** Operation description */\n description?: string,\n \n /** Input schema (Zod) */\n inputSchema: z.ZodSchema<any>,\n \n /** Output schema (Zod) */\n outputSchema: z.ZodSchema<any>,\n \n /** Operation-specific metadata */\n metadata?: Record<string, any>,\n \n /** \n * OAuth2 scopes required specifically for this operation\n * System unions all required scopes from selected operations at auth time\n */\n requiredScopes?: string[],\n}\n"]}
|
|
@@ -145,10 +145,10 @@ export declare const ExternalProvider_AuthProfile_Schema: z.ZodDiscriminatedUnio
|
|
|
145
145
|
extraAuthParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
146
146
|
extraTokenParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
147
147
|
tokenFormat: z.ZodDefault<z.ZodEnum<{
|
|
148
|
-
bearer: "bearer";
|
|
149
|
-
custom: "custom";
|
|
150
148
|
token: "token";
|
|
149
|
+
bearer: "bearer";
|
|
151
150
|
oauth: "oauth";
|
|
151
|
+
custom: "custom";
|
|
152
152
|
}>>;
|
|
153
153
|
customTokenPrefix: z.ZodOptional<z.ZodString>;
|
|
154
154
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -292,6 +292,7 @@ export declare enum ExternalProvider_Connection_DelegationMode {
|
|
|
292
292
|
/** The call acts for a named user, whose authorization is what makes it permissible. */
|
|
293
293
|
USER = "user"
|
|
294
294
|
}
|
|
295
|
+
/** @wildo_source:part:start external-connectors.models.connection-target facet:layer:shared facet:audience:app-developer */
|
|
295
296
|
/**
|
|
296
297
|
* WHICH owner instance a single call spends — supplied BY THE CALL, never read from ambient context.
|
|
297
298
|
*
|
|
@@ -327,6 +328,7 @@ export declare const ExternalProvider_ConnectionTargetSchema: z.ZodObject<{
|
|
|
327
328
|
ownerId: z.ZodOptional<z.ZodString>;
|
|
328
329
|
actingForUserId: z.ZodOptional<z.ZodString>;
|
|
329
330
|
}, z.core.$strip>;
|
|
331
|
+
/** @wildo_source:part:end external-connectors.models.connection-target */
|
|
330
332
|
/**
|
|
331
333
|
* Whether a connection target must NAME the user it acts for — true only for APPLICATION × USER.
|
|
332
334
|
*
|