@tangle-network/agent-integrations 0.53.50 → 0.53.52
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/catalog.d.ts +2 -2
- package/dist/catalog.js +8 -8
- package/dist/{chunk-KBYYTHXQ.js → chunk-ABWBYMCF.js} +2 -2
- package/dist/{chunk-QE4WFYSK.js → chunk-CONRYVPK.js} +12 -6
- package/dist/chunk-CONRYVPK.js.map +1 -0
- package/dist/{chunk-T3WH6MMA.js → chunk-CT3J7ZB6.js} +111 -8
- package/dist/chunk-CT3J7ZB6.js.map +1 -0
- package/dist/{chunk-W72KPXXX.js → chunk-DCSQH4O6.js} +58 -1
- package/dist/chunk-DCSQH4O6.js.map +1 -0
- package/dist/{chunk-EP6EDAPV.js → chunk-E2QYXDJQ.js} +19 -6
- package/dist/chunk-E2QYXDJQ.js.map +1 -0
- package/dist/{chunk-ZZA4HOBE.js → chunk-PIEBVPSW.js} +2 -2
- package/dist/{chunk-UI3U62H6.js → chunk-PIF635BP.js} +2 -2
- package/dist/{chunk-2JRYKWYX.js → chunk-QL6CRJ3E.js} +303 -556
- package/dist/{chunk-2JRYKWYX.js.map → chunk-QL6CRJ3E.js.map} +1 -1
- package/dist/connect/index.d.ts +2 -2
- package/dist/connect/index.js +2 -2
- package/dist/connectors/adapters/index.d.ts +16 -21
- package/dist/connectors/adapters/index.js +2 -2
- package/dist/connectors/index.d.ts +22 -12
- package/dist/connectors/index.js +5 -3
- package/dist/{consumer-DrLnbqYt.d.ts → consumer-BbQWkIzU.d.ts} +1 -1
- package/dist/consumer.d.ts +3 -3
- package/dist/consumer.js +2 -2
- package/dist/{core-types-D26cY5tD.d.ts → core-types-A-xIaTzb.d.ts} +1 -1
- package/dist/coverage-catalog.d.ts +2 -2
- package/dist/{importers-CQKts3pm.d.ts → importers-BMigcDVf.d.ts} +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.js +10 -8
- package/dist/mcp.d.ts +3 -3
- package/dist/mcp.js +8 -8
- package/dist/middleware/index.d.ts +2 -2
- package/dist/middleware/index.js +2 -2
- package/dist/registry.d.ts +2 -2
- package/dist/registry.js +8 -8
- package/dist/runtime.d.ts +2 -2
- package/dist/runtime.js +8 -8
- package/dist/specs.d.ts +11 -2
- package/dist/specs.js +4 -4
- package/dist/{tangle-id-BCOVbWrP.d.ts → tangle-id-gFOGXe4Y.d.ts} +1 -1
- package/dist/{types-DpKn0frG.d.ts → types-DpKEBiX6.d.ts} +19 -1
- package/docs/integration-execution-matrix.json +65 -99
- package/package.json +1 -1
- package/dist/chunk-EP6EDAPV.js.map +0 -1
- package/dist/chunk-QE4WFYSK.js.map +0 -1
- package/dist/chunk-T3WH6MMA.js.map +0 -1
- package/dist/chunk-W72KPXXX.js.map +0 -1
- /package/dist/{chunk-KBYYTHXQ.js.map → chunk-ABWBYMCF.js.map} +0 -0
- /package/dist/{chunk-ZZA4HOBE.js.map → chunk-PIEBVPSW.js.map} +0 -0
- /package/dist/{chunk-UI3U62H6.js.map → chunk-PIF635BP.js.map} +0 -0
package/dist/specs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as IntegrationActionRisk, g as IntegrationDataClass, d as IntegrationConnectorCategory, e as IntegrationConnectorAction, G as IntegrationConnectorTrigger, b as IntegrationConnector } from './core-types-
|
|
2
|
-
import { O as OAuth2TokenClientAuthMethod } from './types-
|
|
1
|
+
import { f as IntegrationActionRisk, g as IntegrationDataClass, d as IntegrationConnectorCategory, e as IntegrationConnectorAction, G as IntegrationConnectorTrigger, b as IntegrationConnector } from './core-types-A-xIaTzb.js';
|
|
2
|
+
import { O as OAuth2TokenClientAuthMethod, p as OAuth2UrlTemplateMetadataSpec } from './types-DpKEBiX6.js';
|
|
3
3
|
|
|
4
4
|
type IntegrationAuthMode = 'oauth2' | 'api_key' | 'hmac' | 'none' | 'custom';
|
|
5
5
|
type IntegrationSpecStatus = 'catalog' | 'executable' | 'deprecated';
|
|
@@ -23,6 +23,8 @@ interface IntegrationSpec {
|
|
|
23
23
|
type IntegrationAuthSpec = OAuth2AuthSpec | ApiKeyAuthSpec | HmacAuthSpec | NoneAuthSpec | CustomAuthSpec;
|
|
24
24
|
interface OAuth2AuthSpec {
|
|
25
25
|
mode: 'oauth2';
|
|
26
|
+
/** OAuth grant the connection runtime must drive. */
|
|
27
|
+
grantType?: 'authorization_code' | 'client_credentials';
|
|
26
28
|
/** Authorization endpoint the connect flow sends the user to.
|
|
27
29
|
*
|
|
28
30
|
* UNDEFINED when no shipped adapter and no family default supplies one —
|
|
@@ -46,7 +48,11 @@ interface OAuth2AuthSpec {
|
|
|
46
48
|
* `client_secret_post` when omitted. */
|
|
47
49
|
tokenClientAuthMethod?: OAuth2TokenClientAuthMethod;
|
|
48
50
|
scopes: ScopeDescriptor[];
|
|
51
|
+
/** Whether the authorize request includes `scope`. Defaults to true. */
|
|
52
|
+
sendScopeParam?: boolean;
|
|
49
53
|
extraAuthParams?: Record<string, string>;
|
|
54
|
+
/** Rules for connection metadata in authorizationUrl or tokenUrl templates. */
|
|
55
|
+
urlTemplateMetadata?: Readonly<Record<string, OAuth2UrlTemplateMetadataSpec>>;
|
|
50
56
|
redirectUriTemplate: string;
|
|
51
57
|
pkce?: 'required' | 'supported' | 'unsupported';
|
|
52
58
|
}
|
|
@@ -195,6 +201,7 @@ declare function getIntegrationSpec(kind: string): IntegrationSpec | undefined;
|
|
|
195
201
|
interface ConnectorAuthSpec {
|
|
196
202
|
kind: string;
|
|
197
203
|
authKind: 'oauth2' | 'api_key' | 'none' | 'custom';
|
|
204
|
+
grantType?: 'authorization_code' | 'client_credentials';
|
|
198
205
|
/** Provider scopes to request in the authorization grant. Empty for
|
|
199
206
|
* api_key / none / custom. */
|
|
200
207
|
requestedScopes: string[];
|
|
@@ -211,7 +218,9 @@ interface ConnectorAuthSpec {
|
|
|
211
218
|
tokenClientIdParam?: string;
|
|
212
219
|
tokenClientSecretParam?: string;
|
|
213
220
|
tokenClientAuthMethod?: OAuth2TokenClientAuthMethod;
|
|
221
|
+
sendScopeParam?: boolean;
|
|
214
222
|
extraAuthParams?: Record<string, string>;
|
|
223
|
+
urlTemplateMetadata?: Readonly<Record<string, OAuth2UrlTemplateMetadataSpec>>;
|
|
215
224
|
}
|
|
216
225
|
declare function resolveConnectorAuthSpec(kind: string): ConnectorAuthSpec | undefined;
|
|
217
226
|
declare function listExecutableIntegrationSpecs(): IntegrationSpec[];
|
package/dist/specs.js
CHANGED
|
@@ -16,12 +16,12 @@ import {
|
|
|
16
16
|
validateCredentialFormat,
|
|
17
17
|
validateCredentialSet,
|
|
18
18
|
validateIntegrationSpec
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-CONRYVPK.js";
|
|
20
20
|
import "./chunk-TKEVCGAI.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-E2QYXDJQ.js";
|
|
22
|
+
import "./chunk-QL6CRJ3E.js";
|
|
23
23
|
import "./chunk-XC54EOUQ.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-DCSQH4O6.js";
|
|
25
25
|
import "./chunk-PZ5AY32C.js";
|
|
26
26
|
export {
|
|
27
27
|
INTEGRATION_FAMILIES,
|
|
@@ -354,6 +354,21 @@ type TokenMetadataSource = string | {
|
|
|
354
354
|
* otherwise default to `client_secret_post`, which sends both values in the
|
|
355
355
|
* form body. `client_secret_basic` sends an HTTP Basic header instead. */
|
|
356
356
|
type OAuth2TokenClientAuthMethod = 'none' | 'client_secret_post' | 'client_secret_basic';
|
|
357
|
+
type OAuth2UrlTemplateMetadataSpec = {
|
|
358
|
+
/** A complete HTTPS provider base URL, substituted for a URL template
|
|
359
|
+
* placeholder such as `{accountUrl}`. */
|
|
360
|
+
kind: 'base-url';
|
|
361
|
+
/** Exact provider roots accepted for finite regional endpoint sets. */
|
|
362
|
+
allowedBaseUrls?: readonly string[];
|
|
363
|
+
/** HTTPS hostname suffixes accepted for tenant-specific provider roots. */
|
|
364
|
+
allowedBaseUrlSuffixes?: readonly string[];
|
|
365
|
+
/** Permit a caller-selected public HTTPS root for self-hosted providers. */
|
|
366
|
+
requirePublicHttps?: boolean;
|
|
367
|
+
} | {
|
|
368
|
+
/** One RFC 3986 unreserved path segment. The resolver encodes it and
|
|
369
|
+
* rejects separators, dot segments, query data, and fragments. */
|
|
370
|
+
kind: 'path-segment';
|
|
371
|
+
};
|
|
357
372
|
type OAuth2AuthSpec = {
|
|
358
373
|
kind: 'oauth2';
|
|
359
374
|
/** OAuth2 grant type. Defaults to `'authorization_code'` (the interactive
|
|
@@ -399,6 +414,9 @@ type OAuth2AuthSpec = {
|
|
|
399
414
|
* Google's `access_type=offline&prompt=consent` to obtain refresh
|
|
400
415
|
* tokens). */
|
|
401
416
|
extraAuthParams?: Record<string, string>;
|
|
417
|
+
/** Rules for metadata placeholders that represent provider roots or path
|
|
418
|
+
* segments. Placeholders without a rule remain single DNS labels. */
|
|
419
|
+
urlTemplateMetadata?: Readonly<Record<string, OAuth2UrlTemplateMetadataSpec>>;
|
|
402
420
|
/** Non-secret headers sent to the token endpoint. Use this for provider
|
|
403
421
|
* identification headers such as Reddit's required User-Agent. The runtime
|
|
404
422
|
* always owns Authorization and Content-Type. */
|
|
@@ -521,4 +539,4 @@ interface ConnectorManifestValidationResult {
|
|
|
521
539
|
declare function validateConnectorManifest(manifest: ConnectorManifest): ConnectorManifestValidationResult;
|
|
522
540
|
declare function assertValidConnectorManifest(manifest: ConnectorManifest): void;
|
|
523
541
|
|
|
524
|
-
export { type AuthSpec as A, type ConnectorAdapter as C, type DataSourceMetadata as D, type EventHandlerResult as E, type InboundEvent as I, type OAuth2TokenClientAuthMethod as O, ProviderConfigError as P, type ResolvedDataSource as R, type TokenMetadataSource as T, type ConnectorCredentials as a, type CASStrategy as b, type Capability as c, type CapabilityClass as d, type CapabilityMutation as e, type CapabilityMutationResult as f, type CapabilityParameterSchema as g, type CapabilityRead as h, type CapabilityReadResult as i, type ConnectorInvocation as j, type ConnectorManifest as k, type ConnectorManifestValidationIssue as l, type ConnectorManifestValidationResult as m, type ConsistencyModel as n, CredentialsExpired as o, type
|
|
542
|
+
export { type AuthSpec as A, type ConnectorAdapter as C, type DataSourceMetadata as D, type EventHandlerResult as E, type InboundEvent as I, type OAuth2TokenClientAuthMethod as O, ProviderConfigError as P, type ResolvedDataSource as R, type TokenMetadataSource as T, type ConnectorCredentials as a, type CASStrategy as b, type Capability as c, type CapabilityClass as d, type CapabilityMutation as e, type CapabilityMutationResult as f, type CapabilityParameterSchema as g, type CapabilityRead as h, type CapabilityReadResult as i, type ConnectorInvocation as j, type ConnectorManifest as k, type ConnectorManifestValidationIssue as l, type ConnectorManifestValidationResult as m, type ConsistencyModel as n, CredentialsExpired as o, type OAuth2UrlTemplateMetadataSpec as p, type ProviderHttpErrorInit as q, ProviderRateLimited as r, type ProviderRateLimitedInit as s, type RateLimitSpec as t, ResourceContention as u, assertValidConnectorManifest as v, validateConnectorManifest as w };
|
|
@@ -46088,6 +46088,7 @@
|
|
|
46088
46088
|
"tokenClientIdParam": "client_id",
|
|
46089
46089
|
"tokenClientSecretParam": "client_secret",
|
|
46090
46090
|
"tokenClientAuthMethod": "client_secret_post",
|
|
46091
|
+
"sendScopeParam": false,
|
|
46091
46092
|
"scopes": [
|
|
46092
46093
|
{
|
|
46093
46094
|
"normalized": "docs.read",
|
|
@@ -60203,8 +60204,8 @@
|
|
|
60203
60204
|
"catalogAuth": null,
|
|
60204
60205
|
"setupAuth": {
|
|
60205
60206
|
"mode": "oauth2",
|
|
60206
|
-
"
|
|
60207
|
-
"tokenUrl": "
|
|
60207
|
+
"grantType": "client_credentials",
|
|
60208
|
+
"tokenUrl": "{restEndpoint}/identity/oauth/token",
|
|
60208
60209
|
"clientIdEnv": "MARKETO_OAUTH_CLIENT_ID",
|
|
60209
60210
|
"clientSecretEnv": "MARKETO_OAUTH_CLIENT_SECRET",
|
|
60210
60211
|
"scopeSeparator": " ",
|
|
@@ -60213,8 +60214,16 @@
|
|
|
60213
60214
|
"tokenClientSecretParam": "client_secret",
|
|
60214
60215
|
"tokenClientAuthMethod": "client_secret_post",
|
|
60215
60216
|
"scopes": [],
|
|
60217
|
+
"urlTemplateMetadata": {
|
|
60218
|
+
"restEndpoint": {
|
|
60219
|
+
"kind": "base-url",
|
|
60220
|
+
"allowedBaseUrlSuffixes": [
|
|
60221
|
+
".mktorest.com"
|
|
60222
|
+
]
|
|
60223
|
+
}
|
|
60224
|
+
},
|
|
60216
60225
|
"redirectUriTemplate": "https://{host}/api/integrations/oauth/marketo/callback",
|
|
60217
|
-
"pkce": "
|
|
60226
|
+
"pkce": "unsupported"
|
|
60218
60227
|
},
|
|
60219
60228
|
"runtimePackage": null,
|
|
60220
60229
|
"actionCount": 11,
|
|
@@ -66827,6 +66836,7 @@
|
|
|
66827
66836
|
"tokenClientIdParam": "client_id",
|
|
66828
66837
|
"tokenClientSecretParam": "client_secret",
|
|
66829
66838
|
"tokenClientAuthMethod": "client_secret_post",
|
|
66839
|
+
"sendScopeParam": false,
|
|
66830
66840
|
"scopes": [],
|
|
66831
66841
|
"redirectUriTemplate": "https://{host}/api/integrations/oauth/mycase/callback",
|
|
66832
66842
|
"pkce": "required"
|
|
@@ -66865,6 +66875,7 @@
|
|
|
66865
66875
|
"tokenClientIdParam": "client_id",
|
|
66866
66876
|
"tokenClientSecretParam": "client_secret",
|
|
66867
66877
|
"tokenClientAuthMethod": "client_secret_post",
|
|
66878
|
+
"sendScopeParam": false,
|
|
66868
66879
|
"scopes": [],
|
|
66869
66880
|
"redirectUriTemplate": "https://{host}/api/integrations/oauth/mycase/callback",
|
|
66870
66881
|
"pkce": "required"
|
|
@@ -67980,7 +67991,7 @@
|
|
|
67980
67991
|
"authorizationClientIdParam": "client_id",
|
|
67981
67992
|
"tokenClientIdParam": "client_id",
|
|
67982
67993
|
"tokenClientSecretParam": "client_secret",
|
|
67983
|
-
"tokenClientAuthMethod": "
|
|
67994
|
+
"tokenClientAuthMethod": "client_secret_basic",
|
|
67984
67995
|
"scopes": [],
|
|
67985
67996
|
"extraAuthParams": {
|
|
67986
67997
|
"owner": "user"
|
|
@@ -70532,84 +70543,13 @@
|
|
|
70532
70543
|
"category": "workflow",
|
|
70533
70544
|
"catalogAuth": null,
|
|
70534
70545
|
"setupAuth": {
|
|
70535
|
-
"mode": "
|
|
70536
|
-
"
|
|
70537
|
-
|
|
70538
|
-
|
|
70539
|
-
|
|
70540
|
-
|
|
70541
|
-
"
|
|
70542
|
-
"tokenClientIdParam": "client_id",
|
|
70543
|
-
"tokenClientSecretParam": "client_secret",
|
|
70544
|
-
"tokenClientAuthMethod": "client_secret_post",
|
|
70545
|
-
"scopes": [
|
|
70546
|
-
{
|
|
70547
|
-
"normalized": "project.read",
|
|
70548
|
-
"providerScope": "alert.read",
|
|
70549
|
-
"title": "Opsgenie read",
|
|
70550
|
-
"reason": "Read Opsgenie data for user-authorized agent workflows.",
|
|
70551
|
-
"risk": "read",
|
|
70552
|
-
"dataClass": "private"
|
|
70553
|
-
},
|
|
70554
|
-
{
|
|
70555
|
-
"normalized": "project.write",
|
|
70556
|
-
"providerScope": "alert.write",
|
|
70557
|
-
"title": "Opsgenie write",
|
|
70558
|
-
"reason": "Create or update Opsgenie resources after policy approval.",
|
|
70559
|
-
"risk": "write",
|
|
70560
|
-
"dataClass": "private"
|
|
70561
|
-
},
|
|
70562
|
-
{
|
|
70563
|
-
"normalized": "project.read",
|
|
70564
|
-
"providerScope": "incident.read",
|
|
70565
|
-
"title": "Opsgenie read",
|
|
70566
|
-
"reason": "Read Opsgenie data for user-authorized agent workflows.",
|
|
70567
|
-
"risk": "read",
|
|
70568
|
-
"dataClass": "private"
|
|
70569
|
-
},
|
|
70570
|
-
{
|
|
70571
|
-
"normalized": "project.write",
|
|
70572
|
-
"providerScope": "incident.write",
|
|
70573
|
-
"title": "Opsgenie write",
|
|
70574
|
-
"reason": "Create or update Opsgenie resources after policy approval.",
|
|
70575
|
-
"risk": "write",
|
|
70576
|
-
"dataClass": "private"
|
|
70577
|
-
},
|
|
70578
|
-
{
|
|
70579
|
-
"normalized": "project.read",
|
|
70580
|
-
"providerScope": "schedule.read",
|
|
70581
|
-
"title": "Opsgenie read",
|
|
70582
|
-
"reason": "Read Opsgenie data for user-authorized agent workflows.",
|
|
70583
|
-
"risk": "read",
|
|
70584
|
-
"dataClass": "private"
|
|
70585
|
-
},
|
|
70586
|
-
{
|
|
70587
|
-
"normalized": "project.read",
|
|
70588
|
-
"providerScope": "oncall.read",
|
|
70589
|
-
"title": "Opsgenie read",
|
|
70590
|
-
"reason": "Read Opsgenie data for user-authorized agent workflows.",
|
|
70591
|
-
"risk": "read",
|
|
70592
|
-
"dataClass": "private"
|
|
70593
|
-
},
|
|
70594
|
-
{
|
|
70595
|
-
"normalized": "project.read",
|
|
70596
|
-
"providerScope": "team.read",
|
|
70597
|
-
"title": "Opsgenie read",
|
|
70598
|
-
"reason": "Read Opsgenie data for user-authorized agent workflows.",
|
|
70599
|
-
"risk": "read",
|
|
70600
|
-
"dataClass": "private"
|
|
70601
|
-
},
|
|
70602
|
-
{
|
|
70603
|
-
"normalized": "project.read",
|
|
70604
|
-
"providerScope": "user.read",
|
|
70605
|
-
"title": "Opsgenie read",
|
|
70606
|
-
"reason": "Read Opsgenie data for user-authorized agent workflows.",
|
|
70607
|
-
"risk": "read",
|
|
70608
|
-
"dataClass": "private"
|
|
70609
|
-
}
|
|
70610
|
-
],
|
|
70611
|
-
"redirectUriTemplate": "https://{host}/api/integrations/oauth/opsgenie/callback",
|
|
70612
|
-
"pkce": "required"
|
|
70546
|
+
"mode": "api_key",
|
|
70547
|
+
"credential": {
|
|
70548
|
+
"label": "opsgenie API key",
|
|
70549
|
+
"description": "Opsgenie API key with access to the selected alert, incident, schedule, team, and user operations.",
|
|
70550
|
+
"secret": true
|
|
70551
|
+
},
|
|
70552
|
+
"placement": "bearer"
|
|
70613
70553
|
},
|
|
70614
70554
|
"runtimePackage": null,
|
|
70615
70555
|
"actionCount": 21,
|
|
@@ -81820,15 +81760,15 @@
|
|
|
81820
81760
|
"catalogAuth": null,
|
|
81821
81761
|
"setupAuth": {
|
|
81822
81762
|
"mode": "oauth2",
|
|
81823
|
-
"authorizationUrl": "https://app.rippling.com/apps/{
|
|
81824
|
-
"tokenUrl": "https://
|
|
81763
|
+
"authorizationUrl": "https://app.rippling.com/apps/PLATFORM/{appName}/authorize",
|
|
81764
|
+
"tokenUrl": "https://api.rippling.com/api/o/token/",
|
|
81825
81765
|
"clientIdEnv": "RIPPLING_OAUTH_CLIENT_ID",
|
|
81826
81766
|
"clientSecretEnv": "RIPPLING_OAUTH_CLIENT_SECRET",
|
|
81827
81767
|
"scopeSeparator": " ",
|
|
81828
81768
|
"authorizationClientIdParam": "client_id",
|
|
81829
81769
|
"tokenClientIdParam": "client_id",
|
|
81830
81770
|
"tokenClientSecretParam": "client_secret",
|
|
81831
|
-
"tokenClientAuthMethod": "
|
|
81771
|
+
"tokenClientAuthMethod": "client_secret_basic",
|
|
81832
81772
|
"scopes": [
|
|
81833
81773
|
{
|
|
81834
81774
|
"normalized": "hr.read",
|
|
@@ -81895,8 +81835,13 @@
|
|
|
81895
81835
|
"dataClass": "sensitive"
|
|
81896
81836
|
}
|
|
81897
81837
|
],
|
|
81838
|
+
"urlTemplateMetadata": {
|
|
81839
|
+
"appName": {
|
|
81840
|
+
"kind": "path-segment"
|
|
81841
|
+
}
|
|
81842
|
+
},
|
|
81898
81843
|
"redirectUriTemplate": "https://{host}/api/integrations/oauth/rippling/callback",
|
|
81899
|
-
"pkce": "
|
|
81844
|
+
"pkce": "unsupported"
|
|
81900
81845
|
},
|
|
81901
81846
|
"runtimePackage": null,
|
|
81902
81847
|
"actionCount": 13,
|
|
@@ -89483,8 +89428,8 @@
|
|
|
89483
89428
|
"catalogAuth": "oauth2",
|
|
89484
89429
|
"setupAuth": {
|
|
89485
89430
|
"mode": "oauth2",
|
|
89486
|
-
"authorizationUrl": "
|
|
89487
|
-
"tokenUrl": "
|
|
89431
|
+
"authorizationUrl": "{accountUrl}/oauth/authorize",
|
|
89432
|
+
"tokenUrl": "{accountUrl}/oauth/token-request",
|
|
89488
89433
|
"clientIdEnv": "SNOWFLAKE_OAUTH_CLIENT_ID",
|
|
89489
89434
|
"clientSecretEnv": "SNOWFLAKE_OAUTH_CLIENT_SECRET",
|
|
89490
89435
|
"scopeSeparator": " ",
|
|
@@ -89494,16 +89439,24 @@
|
|
|
89494
89439
|
"tokenClientAuthMethod": "client_secret_post",
|
|
89495
89440
|
"scopes": [
|
|
89496
89441
|
{
|
|
89497
|
-
"normalized": "database.
|
|
89498
|
-
"providerScope": "
|
|
89499
|
-
"title": "Snowflake
|
|
89500
|
-
"reason": "
|
|
89501
|
-
"risk": "
|
|
89442
|
+
"normalized": "database.read",
|
|
89443
|
+
"providerScope": "refresh_token",
|
|
89444
|
+
"title": "Snowflake read",
|
|
89445
|
+
"reason": "Read Snowflake data for user-authorized agent workflows.",
|
|
89446
|
+
"risk": "read",
|
|
89502
89447
|
"dataClass": "private"
|
|
89503
89448
|
}
|
|
89504
89449
|
],
|
|
89450
|
+
"urlTemplateMetadata": {
|
|
89451
|
+
"accountUrl": {
|
|
89452
|
+
"kind": "base-url",
|
|
89453
|
+
"allowedBaseUrlSuffixes": [
|
|
89454
|
+
".snowflakecomputing.com"
|
|
89455
|
+
]
|
|
89456
|
+
}
|
|
89457
|
+
},
|
|
89505
89458
|
"redirectUriTemplate": "https://{host}/api/integrations/oauth/snowflake/callback",
|
|
89506
|
-
"pkce": "
|
|
89459
|
+
"pkce": "supported"
|
|
89507
89460
|
},
|
|
89508
89461
|
"authFields": [
|
|
89509
89462
|
{
|
|
@@ -98648,7 +98601,7 @@
|
|
|
98648
98601
|
"authorizationClientIdParam": "client_id",
|
|
98649
98602
|
"tokenClientIdParam": "client_id",
|
|
98650
98603
|
"tokenClientSecretParam": "client_secret",
|
|
98651
|
-
"tokenClientAuthMethod": "
|
|
98604
|
+
"tokenClientAuthMethod": "client_secret_basic",
|
|
98652
98605
|
"scopes": [
|
|
98653
98606
|
{
|
|
98654
98607
|
"normalized": "marketing.read",
|
|
@@ -107985,15 +107938,16 @@
|
|
|
107985
107938
|
"catalogAuth": "oauth2",
|
|
107986
107939
|
"setupAuth": {
|
|
107987
107940
|
"mode": "oauth2",
|
|
107988
|
-
"authorizationUrl": "
|
|
107989
|
-
"tokenUrl": "
|
|
107941
|
+
"authorizationUrl": "{workdayBaseUrl}/ccx/oauth2/{tenant}/authorize",
|
|
107942
|
+
"tokenUrl": "{workdayBaseUrl}/ccx/oauth2/{tenant}/token",
|
|
107990
107943
|
"clientIdEnv": "WORKDAY_OAUTH_CLIENT_ID",
|
|
107991
107944
|
"clientSecretEnv": "WORKDAY_OAUTH_CLIENT_SECRET",
|
|
107992
107945
|
"scopeSeparator": " ",
|
|
107993
107946
|
"authorizationClientIdParam": "client_id",
|
|
107994
107947
|
"tokenClientIdParam": "client_id",
|
|
107995
107948
|
"tokenClientSecretParam": "client_secret",
|
|
107996
|
-
"tokenClientAuthMethod": "
|
|
107949
|
+
"tokenClientAuthMethod": "client_secret_basic",
|
|
107950
|
+
"sendScopeParam": false,
|
|
107997
107951
|
"scopes": [
|
|
107998
107952
|
{
|
|
107999
107953
|
"normalized": "hr.read",
|
|
@@ -108020,8 +107974,20 @@
|
|
|
108020
107974
|
"dataClass": "sensitive"
|
|
108021
107975
|
}
|
|
108022
107976
|
],
|
|
107977
|
+
"urlTemplateMetadata": {
|
|
107978
|
+
"workdayBaseUrl": {
|
|
107979
|
+
"kind": "base-url",
|
|
107980
|
+
"allowedBaseUrlSuffixes": [
|
|
107981
|
+
".workday.com",
|
|
107982
|
+
".myworkday.com"
|
|
107983
|
+
]
|
|
107984
|
+
},
|
|
107985
|
+
"tenant": {
|
|
107986
|
+
"kind": "path-segment"
|
|
107987
|
+
}
|
|
107988
|
+
},
|
|
108023
107989
|
"redirectUriTemplate": "https://{host}/api/integrations/oauth/workday/callback",
|
|
108024
|
-
"pkce": "
|
|
107990
|
+
"pkce": "unsupported"
|
|
108025
107991
|
},
|
|
108026
107992
|
"authFields": [
|
|
108027
107993
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/agent-integrations",
|
|
3
|
-
"version": "0.53.
|
|
3
|
+
"version": "0.53.52",
|
|
4
4
|
"description": "Vendor-neutral integration contracts and runtime helpers for sandbox and agent apps.",
|
|
5
5
|
"homepage": "https://github.com/tangle-network/agent-integrations#readme",
|
|
6
6
|
"repository": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connectors/bundled-manifests.ts"],"sourcesContent":["import {\n CONNECTOR_ADAPTER_FACTORIES,\n type ConnectorAdapterFactoryDefinition,\n} from './adapters/factories.js'\nimport * as bundledAdapters from './adapters/index.js'\nimport type { ConnectorAdapter, ConnectorManifest } from './types.js'\n\n/**\n * The bundled adapter registry — the single source of truth for \"which\n * connectors does this package actually implement, and how do they really\n * authenticate\".\n *\n * This exists because the answer was previously maintained by hand in two\n * places that drifted apart: `specs/registry.ts` carried an 18-name\n * `EXECUTABLE_KINDS` set while the package shipped 530 adapters, and the\n * platform kept its own private `collectBundledAdapters()` copy. A catalog\n * that describes connectors must derive from the connectors, never restate\n * them — restating is what let QuickBooks and Xero advertise a\n * `https://example.invalid/...` authorization URL behind a live Connect\n * button.\n *\n * Manifests are static data. Factory-style adapters need client credentials\n * to *execute*, but their manifest (auth endpoints, scopes, capability list)\n * is fixed at definition time, so we instantiate them with clearly-marked\n * placeholder options purely to read that static shape. The placeholders are\n * never used to make a request — {@link listBundledAdapterManifests} returns\n * manifests, not adapters.\n */\n\n/** Placeholder marker for factory options resolved only to read a manifest. */\nconst MANIFEST_PROBE_PREFIX = 'tangle-adapter-metadata-'\n\nfunction isConnectorAdapter(value: unknown): value is ConnectorAdapter {\n if (!value || typeof value !== 'object') return false\n const manifest = (value as { manifest?: unknown }).manifest\n if (!manifest || typeof manifest !== 'object') return false\n return typeof (manifest as { kind?: unknown }).kind === 'string'\n}\n\nfunction manifestFromFactory(\n definition: ConnectorAdapterFactoryDefinition,\n): ConnectorManifest | undefined {\n const probeOptions = Object.fromEntries(\n Object.keys(definition.envMap).map((name) => [name, `${MANIFEST_PROBE_PREFIX}${name}`]),\n )\n try {\n return definition.factory(probeOptions).manifest\n } catch {\n // A factory that cannot be constructed from placeholder options cannot\n // contribute a manifest. Skipping is correct: it means the adapter is not\n // describable without real credentials, so the catalog must not claim it.\n return undefined\n }\n}\n\nlet cachedManifests: ConnectorManifest[] | undefined\nlet cachedByKind: Map<string, ConnectorManifest> | undefined\n\n/**\n * Direct adapter instances that public catalog and action hosts may register.\n *\n * Factory adapters are intentionally absent: their construction requires\n * product-owned OAuth configuration. Inbound-only adapters remain available\n * as named exports for webhook hosts, but never compete with action adapters\n * for a public connector kind.\n */\nexport function listBundledConnectorAdapters(): ConnectorAdapter[] {\n const byKind = new Map<string, ConnectorAdapter>()\n const exportByKind = new Map<string, string>()\n for (const [exportName, value] of Object.entries(bundledAdapters)) {\n if (!isConnectorAdapter(value) || value.inboundOnly) continue\n const kind = value.manifest.kind\n const existingExport = exportByKind.get(kind)\n if (existingExport) {\n throw new Error(\n `Duplicate public connector adapter kind \"${kind}\" exported by \"${existingExport}\" and \"${exportName}\".`,\n )\n }\n exportByKind.set(kind, exportName)\n byKind.set(kind, value)\n }\n return [...byKind.values()]\n}\n\nfunction buildRegistry(): Map<string, ConnectorManifest> {\n const byKind = new Map<string, ConnectorManifest>()\n for (const adapter of listBundledConnectorAdapters()) {\n byKind.set(adapter.manifest.kind, adapter.manifest)\n }\n for (const definition of CONNECTOR_ADAPTER_FACTORIES) {\n if (byKind.has(definition.kind)) continue\n const manifest = manifestFromFactory(definition)\n if (manifest) byKind.set(manifest.kind, manifest)\n }\n return byKind\n}\n\nfunction registry(): Map<string, ConnectorManifest> {\n if (!cachedByKind) cachedByKind = buildRegistry()\n return cachedByKind\n}\n\n/** Every connector manifest this package bundles, sorted by kind. */\nexport function listBundledAdapterManifests(): ConnectorManifest[] {\n if (!cachedManifests) {\n cachedManifests = [...registry().values()].sort((a, b) => a.kind.localeCompare(b.kind))\n }\n return cachedManifests\n}\n\n/** The bundled manifest for `kind`, or undefined when nothing implements it. */\nexport function getBundledAdapterManifest(kind: string): ConnectorManifest | undefined {\n return registry().get(kind)\n}\n\n/** Whether this package ships a real, executable adapter for `kind`. */\nexport function hasBundledAdapter(kind: string): boolean {\n return registry().has(kind)\n}\n\n/** Kinds this package implements. */\nexport function listBundledAdapterKinds(): string[] {\n return listBundledAdapterManifests().map((manifest) => manifest.kind)\n}\n\n/**\n * How a bundled connector really authenticates.\n *\n * `oauth2_client_credentials` is called out separately because it IS a\n * connectable mode but has no user-facing authorize step — a caller that\n * treats \"oauth2 without an authorizationUrl\" as broken would wrongly condemn\n * these machine-to-machine providers.\n */\nexport type BundledAuthMode =\n | 'oauth2'\n | 'oauth2_client_credentials'\n | 'api_key'\n | 'hmac'\n | 'none'\n\n/** The auth mode a connect flow would actually drive for this manifest,\n * resolving `one_of` through its declared `preferred` mode. */\nexport function bundledAuthMode(manifest: ConnectorManifest): BundledAuthMode | undefined {\n const auth = manifest.auth\n const effective =\n auth.kind === 'one_of'\n ? (auth.options.find((option) => option.kind === auth.preferred) ?? auth.options[0])\n : auth\n switch (effective.kind) {\n case 'oauth2':\n return effective.grantType === 'client_credentials' ? 'oauth2_client_credentials' : 'oauth2'\n case 'api-key':\n return 'api_key'\n case 'hmac':\n return 'hmac'\n case 'none':\n return 'none'\n default:\n return undefined\n }\n}\n\n/** The setup hint an api-key connector shows when collecting its credential. */\nexport function bundledApiKeyHint(manifest: ConnectorManifest): string | undefined {\n const auth = manifest.auth\n const candidates = auth.kind === 'one_of' ? auth.options : [auth]\n for (const candidate of candidates) {\n if (candidate.kind === 'api-key') return candidate.hint\n }\n return undefined\n}\n\n/** The authorization-code OAuth2 branch of a manifest's auth spec, if it has\n * one. `one_of` manifests are resolved through their `preferred` mode, which\n * is the mode a connect flow would actually drive. Returns undefined for\n * api-key/hmac/none connectors and for `client_credentials` OAuth (which has\n * no user-facing authorize step). */\nexport function bundledOAuth2Auth(manifest: ConnectorManifest):\n | {\n authorizationUrl: string\n tokenUrl: string\n scopes: string[]\n clientIdEnv: string\n clientSecretEnv?: string\n scopeSeparator: ' ' | ','\n pkce?: 'required' | 'supported' | 'unsupported'\n authorizationClientIdParam: string\n tokenClientIdParam: string\n tokenClientSecretParam: string\n tokenClientAuthMethod: 'none' | 'client_secret_post' | 'client_secret_basic'\n extraAuthParams?: Record<string, string>\n tokenRequestHeaders?: Record<string, string>\n }\n | undefined {\n const auth = manifest.auth\n const candidates =\n auth.kind === 'one_of'\n ? auth.options.filter((option) => option.kind === auth.preferred)\n : [auth]\n for (const candidate of candidates) {\n if (candidate.kind !== 'oauth2') continue\n if (candidate.grantType === 'client_credentials') continue\n if (!candidate.authorizationUrl) continue\n return {\n authorizationUrl: candidate.authorizationUrl,\n tokenUrl: candidate.tokenUrl,\n scopes: candidate.scopes,\n clientIdEnv: candidate.clientIdEnv,\n clientSecretEnv: candidate.clientSecretEnv,\n scopeSeparator: candidate.scopeSeparator ?? ' ',\n pkce: candidate.pkce,\n authorizationClientIdParam: candidate.authorizationClientIdParam ?? 'client_id',\n tokenClientIdParam: candidate.tokenClientIdParam ?? 'client_id',\n tokenClientSecretParam: candidate.tokenClientSecretParam ?? 'client_secret',\n tokenClientAuthMethod: candidate.tokenClientAuthMethod ?? 'client_secret_post',\n extraAuthParams: candidate.extraAuthParams,\n tokenRequestHeaders: candidate.tokenRequestHeaders,\n }\n }\n return undefined\n}\n"],"mappings":"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","names":[]}
|