@xemahq/kernel-contracts 0.32.0 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/connector/index.d.ts +1 -0
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +1 -0
- package/dist/connector/index.js.map +1 -1
- package/dist/connector/lib/connector-adapter-kind.d.ts +1 -0
- package/dist/connector/lib/connector-adapter-kind.d.ts.map +1 -1
- package/dist/connector/lib/connector-adapter-kind.js +1 -0
- package/dist/connector/lib/connector-adapter-kind.js.map +1 -1
- package/dist/connector/lib/connector-descriptor.d.ts +29 -1
- package/dist/connector/lib/connector-descriptor.d.ts.map +1 -1
- package/dist/connector/lib/connector-descriptor.js +22 -1
- package/dist/connector/lib/connector-descriptor.js.map +1 -1
- package/dist/connector/lib/connector-http-request.d.ts +56 -0
- package/dist/connector/lib/connector-http-request.d.ts.map +1 -0
- package/dist/connector/lib/connector-http-request.js +86 -0
- package/dist/connector/lib/connector-http-request.js.map +1 -0
- package/dist/connector/lib/integration-provider-contribution.d.ts +17 -1
- package/dist/connector/lib/integration-provider-contribution.d.ts.map +1 -1
- package/dist/connector/lib/integration-provider-contribution.js +11 -0
- package/dist/connector/lib/integration-provider-contribution.js.map +1 -1
- package/dist/connector/lib/provider-descriptor.d.ts +3 -0
- package/dist/connector/lib/provider-descriptor.d.ts.map +1 -1
- package/dist/connector/lib/provider-descriptor.js +1 -0
- package/dist/connector/lib/provider-descriptor.js.map +1 -1
- package/dist/contribution/lib/contribution-kind.d.ts.map +1 -1
- package/dist/contribution/lib/contribution-kind.js.map +1 -1
- package/package.json +1 -1
- package/src/connector/index.ts +1 -0
- package/src/connector/lib/connector-adapter-kind.ts +9 -1
- package/src/connector/lib/connector-descriptor.ts +44 -8
- package/src/connector/lib/connector-http-request.ts +187 -0
- package/src/connector/lib/integration-provider-contribution.ts +21 -0
- package/src/connector/lib/provider-descriptor.ts +10 -0
- package/src/contribution/lib/contribution-kind.ts +111 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC"}
|
package/dist/connector/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./lib/adapter-kind"), exports);
|
|
18
18
|
__exportStar(require("./lib/connector-adapter-kind"), exports);
|
|
19
|
+
__exportStar(require("./lib/connector-http-request"), exports);
|
|
19
20
|
__exportStar(require("./lib/capability"), exports);
|
|
20
21
|
__exportStar(require("./lib/credential-kind"), exports);
|
|
21
22
|
__exportStar(require("./lib/onboarding-manifest"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+DAA6C;AAC7C,mDAAiC;AACjC,wDAAsC;AACtC,4DAA0C;AAC1C,4DAA0C;AAC1C,6DAA2C;AAC3C,wDAAsC;AACtC,oDAAkC;AAClC,2DAAyC;AACzC,6DAA2C;AAC3C,0EAAwD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+DAA6C;AAC7C,+DAA6C;AAC7C,mDAAiC;AACjC,wDAAsC;AACtC,4DAA0C;AAC1C,4DAA0C;AAC1C,6DAA2C;AAC3C,wDAAsC;AACtC,oDAAkC;AAClC,2DAAyC;AACzC,6DAA2C;AAC3C,0EAAwD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector-adapter-kind.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/connector-adapter-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"connector-adapter-kind.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/connector-adapter-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsCxB,oBAAY,oBAAoB;IAC9B,cAAc,oBAAoB;IAClC,eAAe,qBAAqB;IACpC,WAAW,iBAAiB;IAC5B,aAAa,mBAAmB;IAChC,KAAK,UAAU;CAChB;AAOD,eAAO,MAAM,0BAA0B,wCAAqC,CAAC"}
|
|
@@ -5,6 +5,7 @@ const zod_1 = require("zod");
|
|
|
5
5
|
var ConnectorAdapterKind;
|
|
6
6
|
(function (ConnectorAdapterKind) {
|
|
7
7
|
ConnectorAdapterKind["NativeProvider"] = "native-provider";
|
|
8
|
+
ConnectorAdapterKind["DeclarativeHttp"] = "declarative-http";
|
|
8
9
|
ConnectorAdapterKind["ExternalMcp"] = "external-mcp";
|
|
9
10
|
ConnectorAdapterKind["OpenApiBridge"] = "openapi-bridge";
|
|
10
11
|
ConnectorAdapterKind["Email"] = "email";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector-adapter-kind.js","sourceRoot":"","sources":["../../../src/connector/lib/connector-adapter-kind.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;
|
|
1
|
+
{"version":3,"file":"connector-adapter-kind.js","sourceRoot":"","sources":["../../../src/connector/lib/connector-adapter-kind.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAsCxB,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,0DAAkC,CAAA;IAClC,4DAAoC,CAAA;IACpC,oDAA4B,CAAA;IAC5B,wDAAgC,CAAA;IAChC,uCAAe,CAAA;AACjB,CAAC,EANW,oBAAoB,oCAApB,oBAAoB,QAM/B;AAOY,QAAA,0BAA0B,GAAG,OAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -2,18 +2,33 @@ import { z } from 'zod';
|
|
|
2
2
|
import { type CapabilityRef } from '../../capability';
|
|
3
3
|
import { CredentialKind } from './credential-kind';
|
|
4
4
|
import { ConnectorAdapterKind } from './connector-adapter-kind';
|
|
5
|
+
import { type ConnectorHttpRequestTemplate } from './connector-http-request';
|
|
5
6
|
import type { AdapterKindRef } from './adapter-kind';
|
|
6
7
|
export interface ConnectorOperationDescriptor {
|
|
7
8
|
readonly capabilityRef: CapabilityRef;
|
|
8
9
|
readonly adapterKind: ConnectorAdapterKind;
|
|
9
10
|
readonly scopes: readonly string[];
|
|
10
11
|
readonly requiresConnection: boolean;
|
|
12
|
+
readonly httpRequest?: ConnectorHttpRequestTemplate;
|
|
11
13
|
}
|
|
12
14
|
export declare const ConnectorOperationDescriptorSchema: z.ZodObject<{
|
|
13
15
|
capabilityRef: z.ZodType<CapabilityRef, unknown, z.core.$ZodTypeInternals<CapabilityRef, unknown>>;
|
|
14
16
|
adapterKind: z.ZodEnum<typeof ConnectorAdapterKind>;
|
|
15
17
|
scopes: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
16
18
|
requiresConnection: z.ZodBoolean;
|
|
19
|
+
httpRequest: z.ZodOptional<z.ZodObject<{
|
|
20
|
+
method: z.ZodEnum<typeof import("./connector-http-request").ConnectorHttpMethod>;
|
|
21
|
+
pathTemplate: z.ZodString;
|
|
22
|
+
query: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
23
|
+
headers: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
24
|
+
bodyMode: z.ZodEnum<typeof import("./connector-http-request").ConnectorHttpBodyMode>;
|
|
25
|
+
auth: z.ZodObject<{
|
|
26
|
+
kind: z.ZodEnum<typeof import("./connector-http-request").ConnectorAuthInjectionKind>;
|
|
27
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
28
|
+
valuePrefix: z.ZodOptional<z.ZodString>;
|
|
29
|
+
queryParamName: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.core.$strict>;
|
|
31
|
+
}, z.core.$strict>>;
|
|
17
32
|
}, z.core.$strict>;
|
|
18
33
|
export interface ConnectorDescriptor {
|
|
19
34
|
readonly connectorKey: string;
|
|
@@ -40,6 +55,19 @@ export declare const ConnectorDescriptorSchema: z.ZodObject<{
|
|
|
40
55
|
adapterKind: z.ZodEnum<typeof ConnectorAdapterKind>;
|
|
41
56
|
scopes: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
42
57
|
requiresConnection: z.ZodBoolean;
|
|
58
|
+
httpRequest: z.ZodOptional<z.ZodObject<{
|
|
59
|
+
method: z.ZodEnum<typeof import("./connector-http-request").ConnectorHttpMethod>;
|
|
60
|
+
pathTemplate: z.ZodString;
|
|
61
|
+
query: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
62
|
+
headers: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
63
|
+
bodyMode: z.ZodEnum<typeof import("./connector-http-request").ConnectorHttpBodyMode>;
|
|
64
|
+
auth: z.ZodObject<{
|
|
65
|
+
kind: z.ZodEnum<typeof import("./connector-http-request").ConnectorAuthInjectionKind>;
|
|
66
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
67
|
+
valuePrefix: z.ZodOptional<z.ZodString>;
|
|
68
|
+
queryParamName: z.ZodOptional<z.ZodString>;
|
|
69
|
+
}, z.core.$strict>;
|
|
70
|
+
}, z.core.$strict>>;
|
|
43
71
|
}, z.core.$strict>>>>;
|
|
44
72
|
}, z.core.$strict>;
|
|
45
73
|
type AssertExtends<T extends U, U> = T;
|
|
@@ -47,7 +75,7 @@ type AllowUndefinedOptionals<T> = T extends readonly (infer E)[] ? readonly Allo
|
|
|
47
75
|
[K in keyof T]: AllowUndefinedOptionals<T[K]> | undefined;
|
|
48
76
|
} : T;
|
|
49
77
|
export type ConnectorOperationDescriptorValueIdentityGuards = [
|
|
50
|
-
AssertExtends<z.infer<typeof ConnectorOperationDescriptorSchema>, ConnectorOperationDescriptor
|
|
78
|
+
AssertExtends<z.infer<typeof ConnectorOperationDescriptorSchema>, AllowUndefinedOptionals<ConnectorOperationDescriptor>>,
|
|
51
79
|
AssertExtends<ConnectorOperationDescriptor, z.infer<typeof ConnectorOperationDescriptorSchema>>
|
|
52
80
|
];
|
|
53
81
|
export type ConnectorDescriptorValueIdentityGuards = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector-descriptor.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/connector-descriptor.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,oBAAoB,EAErB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAkBrD,MAAM,WAAW,4BAA4B;IAO3C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAKtC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAQ3C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAQnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"connector-descriptor.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/connector-descriptor.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,oBAAoB,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAkBrD,MAAM,WAAW,4BAA4B;IAO3C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAKtC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAQ3C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAQnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IASrC,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC;CACrD;AAOD,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;kBA2B3C,CAAC;AASL,MAAM,WAAW,mBAAmB;IAElC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAG1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAU7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAOnC,QAAQ,CAAC,wBAAwB,EAAE,cAAc,CAAC;IAOlD,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IAQrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC/D;AASD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAUpC,CAAC;AAOH,KAAK,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACvC,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5D,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,GACrC,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,GAC7D,CAAC,CAAC;AACR,MAAM,MAAM,+CAA+C,GAAG;IAC5D,aAAa,CACX,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,EAClD,uBAAuB,CAAC,4BAA4B,CAAC,CACtD;IACD,aAAa,CACX,4BAA4B,EAC5B,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CACnD;CACF,CAAC;AACF,MAAM,MAAM,sCAAsC,GAAG;IACnD,aAAa,CACX,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,EACzC,uBAAuB,CAAC,mBAAmB,CAAC,CAC7C;IACD,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;CAC9E,CAAC"}
|
|
@@ -5,11 +5,32 @@ const zod_1 = require("zod");
|
|
|
5
5
|
const capability_1 = require("../../capability");
|
|
6
6
|
const credential_kind_1 = require("./credential-kind");
|
|
7
7
|
const connector_adapter_kind_1 = require("./connector-adapter-kind");
|
|
8
|
-
|
|
8
|
+
const connector_http_request_1 = require("./connector-http-request");
|
|
9
|
+
exports.ConnectorOperationDescriptorSchema = zod_1.z
|
|
10
|
+
.strictObject({
|
|
9
11
|
capabilityRef: capability_1.CapabilityRefSchema,
|
|
10
12
|
adapterKind: connector_adapter_kind_1.ConnectorAdapterKindSchema,
|
|
11
13
|
scopes: zod_1.z.array(zod_1.z.string()).readonly(),
|
|
12
14
|
requiresConnection: zod_1.z.boolean(),
|
|
15
|
+
httpRequest: connector_http_request_1.ConnectorHttpRequestTemplateSchema.optional(),
|
|
16
|
+
})
|
|
17
|
+
.superRefine((op, ctx) => {
|
|
18
|
+
const isDeclarative = op.adapterKind === connector_adapter_kind_1.ConnectorAdapterKind.DeclarativeHttp;
|
|
19
|
+
if (isDeclarative && op.httpRequest === undefined) {
|
|
20
|
+
ctx.addIssue({
|
|
21
|
+
code: 'custom',
|
|
22
|
+
path: ['httpRequest'],
|
|
23
|
+
message: 'A declarative-http operation MUST declare httpRequest (the generic ' +
|
|
24
|
+
'executor has no code path to fall back to).',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (!isDeclarative && op.httpRequest !== undefined) {
|
|
28
|
+
ctx.addIssue({
|
|
29
|
+
code: 'custom',
|
|
30
|
+
path: ['httpRequest'],
|
|
31
|
+
message: `httpRequest is only valid for adapterKind="declarative-http" (got "${op.adapterKind}").`,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
13
34
|
});
|
|
14
35
|
exports.ConnectorDescriptorSchema = zod_1.z.strictObject({
|
|
15
36
|
connectorKey: zod_1.z.string().min(1),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector-descriptor.js","sourceRoot":"","sources":["../../../src/connector/lib/connector-descriptor.ts"],"names":[],"mappings":";;;AAoBA,6BAAwB;AAExB,iDAA2E;AAE3E,uDAAmD;AACnD,qEAGkC;
|
|
1
|
+
{"version":3,"file":"connector-descriptor.js","sourceRoot":"","sources":["../../../src/connector/lib/connector-descriptor.ts"],"names":[],"mappings":";;;AAoBA,6BAAwB;AAExB,iDAA2E;AAE3E,uDAAmD;AACnD,qEAGkC;AAClC,qEAGkC;AAiErB,QAAA,kCAAkC,GAAG,OAAC;KAChD,YAAY,CAAC;IACZ,aAAa,EAAE,gCAAmB;IAClC,WAAW,EAAE,mDAA0B;IACvC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,kBAAkB,EAAE,OAAC,CAAC,OAAO,EAAE;IAC/B,WAAW,EAAE,2DAAkC,CAAC,QAAQ,EAAE;CAC3D,CAAC;KACD,WAAW,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;IACvB,MAAM,aAAa,GACjB,EAAE,CAAC,WAAW,KAAK,6CAAoB,CAAC,eAAe,CAAC;IAC1D,IAAI,aAAa,IAAI,EAAE,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAClD,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,aAAa,CAAC;YACrB,OAAO,EACL,qEAAqE;gBACrE,6CAA6C;SAChD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnD,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,aAAa,CAAC;YACrB,OAAO,EAAE,sEAAsE,EAAE,CAAC,WAAW,KAAK;SACnG,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AA8DQ,QAAA,yBAAyB,GAAG,OAAC,CAAC,YAAY,CAAC;IACtD,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,wBAAwB,EAAE,OAAC,CAAC,UAAU,CAAC,gCAAc,CAAC;IACtD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,0CAAkC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9E,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare enum ConnectorHttpMethod {
|
|
3
|
+
Get = "GET",
|
|
4
|
+
Post = "POST",
|
|
5
|
+
Put = "PUT",
|
|
6
|
+
Patch = "PATCH",
|
|
7
|
+
Delete = "DELETE"
|
|
8
|
+
}
|
|
9
|
+
export declare const ConnectorHttpMethodSchema: z.ZodEnum<typeof ConnectorHttpMethod>;
|
|
10
|
+
export declare enum ConnectorAuthInjectionKind {
|
|
11
|
+
BearerHeader = "bearer_header",
|
|
12
|
+
BasicHeader = "basic_header",
|
|
13
|
+
Header = "header",
|
|
14
|
+
QueryParam = "query_param",
|
|
15
|
+
None = "none"
|
|
16
|
+
}
|
|
17
|
+
export declare const ConnectorAuthInjectionKindSchema: z.ZodEnum<typeof ConnectorAuthInjectionKind>;
|
|
18
|
+
export declare enum ConnectorHttpBodyMode {
|
|
19
|
+
None = "none",
|
|
20
|
+
JsonInput = "json_input"
|
|
21
|
+
}
|
|
22
|
+
export declare const ConnectorHttpBodyModeSchema: z.ZodEnum<typeof ConnectorHttpBodyMode>;
|
|
23
|
+
export interface ConnectorAuthInjection {
|
|
24
|
+
readonly kind: ConnectorAuthInjectionKind;
|
|
25
|
+
readonly headerName?: string;
|
|
26
|
+
readonly valuePrefix?: string;
|
|
27
|
+
readonly queryParamName?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare const ConnectorAuthInjectionSchema: z.ZodObject<{
|
|
30
|
+
kind: z.ZodEnum<typeof ConnectorAuthInjectionKind>;
|
|
31
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
32
|
+
valuePrefix: z.ZodOptional<z.ZodString>;
|
|
33
|
+
queryParamName: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, z.core.$strict>;
|
|
35
|
+
export interface ConnectorHttpRequestTemplate {
|
|
36
|
+
readonly method: ConnectorHttpMethod;
|
|
37
|
+
readonly pathTemplate: string;
|
|
38
|
+
readonly query?: Readonly<Record<string, string>>;
|
|
39
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
40
|
+
readonly bodyMode: ConnectorHttpBodyMode;
|
|
41
|
+
readonly auth: ConnectorAuthInjection;
|
|
42
|
+
}
|
|
43
|
+
export declare const ConnectorHttpRequestTemplateSchema: z.ZodObject<{
|
|
44
|
+
method: z.ZodEnum<typeof ConnectorHttpMethod>;
|
|
45
|
+
pathTemplate: z.ZodString;
|
|
46
|
+
query: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
47
|
+
headers: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
48
|
+
bodyMode: z.ZodEnum<typeof ConnectorHttpBodyMode>;
|
|
49
|
+
auth: z.ZodObject<{
|
|
50
|
+
kind: z.ZodEnum<typeof ConnectorAuthInjectionKind>;
|
|
51
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
52
|
+
valuePrefix: z.ZodOptional<z.ZodString>;
|
|
53
|
+
queryParamName: z.ZodOptional<z.ZodString>;
|
|
54
|
+
}, z.core.$strict>;
|
|
55
|
+
}, z.core.$strict>;
|
|
56
|
+
//# sourceMappingURL=connector-http-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-http-request.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/connector-http-request.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,oBAAY,mBAAmB;IAC7B,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAGD,eAAO,MAAM,yBAAyB,uCAAoC,CAAC;AAO3E,oBAAY,0BAA0B;IAEpC,YAAY,kBAAkB;IAE9B,WAAW,iBAAiB;IAE5B,MAAM,WAAW;IAEjB,UAAU,gBAAgB;IAK1B,IAAI,SAAS;CACd;AAGD,eAAO,MAAM,gCAAgC,8CAE5C,CAAC;AAOF,oBAAY,qBAAqB;IAE/B,IAAI,SAAS;IAKb,SAAS,eAAe;CACzB;AAGD,eAAO,MAAM,2BAA2B,yCAAsC,CAAC;AAO/E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAE1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAOD,eAAO,MAAM,4BAA4B;;;;;kBAgDrC,CAAC;AASL,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAErC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;CACvC;AAMD,eAAO,MAAM,kCAAkC;;;;;;;;;;;;kBAO7C,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConnectorHttpRequestTemplateSchema = exports.ConnectorAuthInjectionSchema = exports.ConnectorHttpBodyModeSchema = exports.ConnectorHttpBodyMode = exports.ConnectorAuthInjectionKindSchema = exports.ConnectorAuthInjectionKind = exports.ConnectorHttpMethodSchema = exports.ConnectorHttpMethod = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
var ConnectorHttpMethod;
|
|
6
|
+
(function (ConnectorHttpMethod) {
|
|
7
|
+
ConnectorHttpMethod["Get"] = "GET";
|
|
8
|
+
ConnectorHttpMethod["Post"] = "POST";
|
|
9
|
+
ConnectorHttpMethod["Put"] = "PUT";
|
|
10
|
+
ConnectorHttpMethod["Patch"] = "PATCH";
|
|
11
|
+
ConnectorHttpMethod["Delete"] = "DELETE";
|
|
12
|
+
})(ConnectorHttpMethod || (exports.ConnectorHttpMethod = ConnectorHttpMethod = {}));
|
|
13
|
+
exports.ConnectorHttpMethodSchema = zod_1.z.nativeEnum(ConnectorHttpMethod);
|
|
14
|
+
var ConnectorAuthInjectionKind;
|
|
15
|
+
(function (ConnectorAuthInjectionKind) {
|
|
16
|
+
ConnectorAuthInjectionKind["BearerHeader"] = "bearer_header";
|
|
17
|
+
ConnectorAuthInjectionKind["BasicHeader"] = "basic_header";
|
|
18
|
+
ConnectorAuthInjectionKind["Header"] = "header";
|
|
19
|
+
ConnectorAuthInjectionKind["QueryParam"] = "query_param";
|
|
20
|
+
ConnectorAuthInjectionKind["None"] = "none";
|
|
21
|
+
})(ConnectorAuthInjectionKind || (exports.ConnectorAuthInjectionKind = ConnectorAuthInjectionKind = {}));
|
|
22
|
+
exports.ConnectorAuthInjectionKindSchema = zod_1.z.nativeEnum(ConnectorAuthInjectionKind);
|
|
23
|
+
var ConnectorHttpBodyMode;
|
|
24
|
+
(function (ConnectorHttpBodyMode) {
|
|
25
|
+
ConnectorHttpBodyMode["None"] = "none";
|
|
26
|
+
ConnectorHttpBodyMode["JsonInput"] = "json_input";
|
|
27
|
+
})(ConnectorHttpBodyMode || (exports.ConnectorHttpBodyMode = ConnectorHttpBodyMode = {}));
|
|
28
|
+
exports.ConnectorHttpBodyModeSchema = zod_1.z.nativeEnum(ConnectorHttpBodyMode);
|
|
29
|
+
exports.ConnectorAuthInjectionSchema = zod_1.z
|
|
30
|
+
.strictObject({
|
|
31
|
+
kind: exports.ConnectorAuthInjectionKindSchema,
|
|
32
|
+
headerName: zod_1.z.string().min(1).optional(),
|
|
33
|
+
valuePrefix: zod_1.z.string().optional(),
|
|
34
|
+
queryParamName: zod_1.z.string().min(1).optional(),
|
|
35
|
+
})
|
|
36
|
+
.superRefine((value, ctx) => {
|
|
37
|
+
if (value.kind === ConnectorAuthInjectionKind.Header) {
|
|
38
|
+
if (value.headerName === undefined) {
|
|
39
|
+
ctx.addIssue({
|
|
40
|
+
code: 'custom',
|
|
41
|
+
path: ['headerName'],
|
|
42
|
+
message: 'auth.kind="header" requires headerName.',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (value.headerName !== undefined) {
|
|
47
|
+
ctx.addIssue({
|
|
48
|
+
code: 'custom',
|
|
49
|
+
path: ['headerName'],
|
|
50
|
+
message: `headerName is only valid for auth.kind="header" (got "${value.kind}").`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (value.kind !== ConnectorAuthInjectionKind.Header &&
|
|
54
|
+
value.valuePrefix !== undefined) {
|
|
55
|
+
ctx.addIssue({
|
|
56
|
+
code: 'custom',
|
|
57
|
+
path: ['valuePrefix'],
|
|
58
|
+
message: `valuePrefix is only valid for auth.kind="header" (got "${value.kind}").`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (value.kind === ConnectorAuthInjectionKind.QueryParam) {
|
|
62
|
+
if (value.queryParamName === undefined) {
|
|
63
|
+
ctx.addIssue({
|
|
64
|
+
code: 'custom',
|
|
65
|
+
path: ['queryParamName'],
|
|
66
|
+
message: 'auth.kind="query_param" requires queryParamName.',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (value.queryParamName !== undefined) {
|
|
71
|
+
ctx.addIssue({
|
|
72
|
+
code: 'custom',
|
|
73
|
+
path: ['queryParamName'],
|
|
74
|
+
message: `queryParamName is only valid for auth.kind="query_param" (got "${value.kind}").`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
exports.ConnectorHttpRequestTemplateSchema = zod_1.z.strictObject({
|
|
79
|
+
method: exports.ConnectorHttpMethodSchema,
|
|
80
|
+
pathTemplate: zod_1.z.string().min(1).startsWith('/'),
|
|
81
|
+
query: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).readonly().optional(),
|
|
82
|
+
headers: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).readonly().optional(),
|
|
83
|
+
bodyMode: exports.ConnectorHttpBodyModeSchema,
|
|
84
|
+
auth: exports.ConnectorAuthInjectionSchema,
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=connector-http-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-http-request.js","sourceRoot":"","sources":["../../../src/connector/lib/connector-http-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { ConnectorAdapterKind } from './connector-adapter-kind';
|
|
2
3
|
export declare const ContributedProviderDescriptorSchema: z.ZodObject<{
|
|
3
4
|
description: z.ZodString;
|
|
4
5
|
displayName: z.ZodString;
|
|
5
6
|
providerKey: z.ZodString;
|
|
6
7
|
iconName: z.ZodString;
|
|
7
8
|
category: z.ZodString;
|
|
9
|
+
apiBaseUrl: z.ZodOptional<z.ZodString>;
|
|
8
10
|
appAuthKind: z.ZodEnum<typeof import("./provider-descriptor").ProviderAppAuthKind>;
|
|
9
11
|
appCredentialSchema: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
10
12
|
key: z.ZodString;
|
|
@@ -32,6 +34,7 @@ export declare const IntegrationProviderContributionManifestSchema: z.ZodObject<
|
|
|
32
34
|
providerKey: z.ZodString;
|
|
33
35
|
iconName: z.ZodString;
|
|
34
36
|
category: z.ZodString;
|
|
37
|
+
apiBaseUrl: z.ZodOptional<z.ZodString>;
|
|
35
38
|
appAuthKind: z.ZodEnum<typeof import("./provider-descriptor").ProviderAppAuthKind>;
|
|
36
39
|
appCredentialSchema: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
37
40
|
key: z.ZodString;
|
|
@@ -62,9 +65,22 @@ export declare const IntegrationProviderContributionManifestSchema: z.ZodObject<
|
|
|
62
65
|
adapterKind: z.ZodString;
|
|
63
66
|
operations: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
64
67
|
capabilityRef: z.ZodType<import("../../capability").CapabilityRef, unknown, z.core.$ZodTypeInternals<import("../../capability").CapabilityRef, unknown>>;
|
|
65
|
-
adapterKind: z.ZodEnum<typeof
|
|
68
|
+
adapterKind: z.ZodEnum<typeof ConnectorAdapterKind>;
|
|
66
69
|
scopes: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
67
70
|
requiresConnection: z.ZodBoolean;
|
|
71
|
+
httpRequest: z.ZodOptional<z.ZodObject<{
|
|
72
|
+
method: z.ZodEnum<typeof import("./connector-http-request").ConnectorHttpMethod>;
|
|
73
|
+
pathTemplate: z.ZodString;
|
|
74
|
+
query: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
75
|
+
headers: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
76
|
+
bodyMode: z.ZodEnum<typeof import("./connector-http-request").ConnectorHttpBodyMode>;
|
|
77
|
+
auth: z.ZodObject<{
|
|
78
|
+
kind: z.ZodEnum<typeof import("./connector-http-request").ConnectorAuthInjectionKind>;
|
|
79
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
80
|
+
valuePrefix: z.ZodOptional<z.ZodString>;
|
|
81
|
+
queryParamName: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, z.core.$strict>;
|
|
83
|
+
}, z.core.$strict>>;
|
|
68
84
|
}, z.core.$strict>>>>;
|
|
69
85
|
}, z.core.$strict>>>;
|
|
70
86
|
}, z.core.$strict>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-provider-contribution.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/integration-provider-contribution.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"integration-provider-contribution.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/integration-provider-contribution.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA0BhE,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;kBACK,CAAC;AAEtD,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CACjD,OAAO,mCAAmC,CAC3C,CAAC;AAQF,eAAO,MAAM,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqEtD,CAAC;AAEL,MAAM,MAAM,uCAAuC,GAAG,CAAC,CAAC,KAAK,CAC3D,OAAO,6CAA6C,CACrD,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IntegrationProviderContributionManifestSchema = exports.ContributedProviderDescriptorSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
+
const connector_adapter_kind_1 = require("./connector-adapter-kind");
|
|
5
6
|
const connector_descriptor_1 = require("./connector-descriptor");
|
|
6
7
|
const provider_descriptor_1 = require("./provider-descriptor");
|
|
7
8
|
const CONTRIBUTED_PROVIDER_KEY_REGEX = /^[a-z][a-z0-9_-]*$/;
|
|
@@ -51,5 +52,15 @@ exports.IntegrationProviderContributionManifestSchema = zod_1.z
|
|
|
51
52
|
}
|
|
52
53
|
seenConnectorKeys.add(connector.connectorKey);
|
|
53
54
|
});
|
|
55
|
+
const hasDeclarativeOperation = manifest.connectors.some((connector) => (connector.operations ?? []).some((op) => op.adapterKind === connector_adapter_kind_1.ConnectorAdapterKind.DeclarativeHttp));
|
|
56
|
+
if (hasDeclarativeOperation && manifest.provider.apiBaseUrl === undefined) {
|
|
57
|
+
ctx.addIssue({
|
|
58
|
+
code: 'custom',
|
|
59
|
+
path: ['provider', 'apiBaseUrl'],
|
|
60
|
+
message: `Provider "${manifest.provider.providerKey}" ships a declarative-http ` +
|
|
61
|
+
'connector operation but declares no apiBaseUrl — the generic ' +
|
|
62
|
+
'executor joins every operation path onto it, so it is required.',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
54
65
|
});
|
|
55
66
|
//# sourceMappingURL=integration-provider-contribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-provider-contribution.js","sourceRoot":"","sources":["../../../src/connector/lib/integration-provider-contribution.ts"],"names":[],"mappings":";;;AAwBA,6BAAwB;AAExB,iEAAmE;AACnE,+DAG+B;AAM/B,MAAM,8BAA8B,GAAG,oBAAoB,CAAC;AAQ5D,MAAM,+BAA+B,GAAG,mBAAmB,CAAC;AAO/C,QAAA,mCAAmC,GAC9C,kDAA4B,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAYzC,QAAA,6CAA6C,GAAG,OAAC;KAC3D,YAAY,CAAC;IACZ,QAAQ,EAAE,2CAAmC;IAC7C,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,gDAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjE,CAAC;KACD,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;IAC7B,IAAA,qDAA+B,EAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtE,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;YACjC,OAAO,EACL,gBAAgB,QAAQ,CAAC,QAAQ,CAAC,WAAW,wBAAwB;gBACrE,iBAAiB,8BAA8B,CAAC,MAAM,GAAG;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QAC/C,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,cAAc,CAAC;gBAC3C,OAAO,EACL,iBAAiB,SAAS,CAAC,YAAY,wBAAwB;oBAC/D,YAAY,+BAA+B,CAAC,MAAM,GAAG;aACxD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,SAAS,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC5D,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC;gBAC1C,OAAO,EACL,cAAc,SAAS,CAAC,YAAY,wBAAwB;oBAC5D,IAAI,SAAS,CAAC,WAAW,2CAA2C;oBACpE,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,kCAAkC;oBACnE,kCAAkC;aACrC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,cAAc,CAAC;gBAC3C,OAAO,EAAE,2BAA2B,SAAS,CAAC,YAAY,gBAAgB;aAC3E,CAAC,CAAC;QACL,CAAC;QACD,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"integration-provider-contribution.js","sourceRoot":"","sources":["../../../src/connector/lib/integration-provider-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ export interface ProviderDescriptor {
|
|
|
28
28
|
readonly description: string;
|
|
29
29
|
readonly iconName: string;
|
|
30
30
|
readonly category: string;
|
|
31
|
+
readonly apiBaseUrl?: string;
|
|
31
32
|
readonly appAuthKind: ProviderAppAuthKind;
|
|
32
33
|
readonly origin: ProviderOrigin;
|
|
33
34
|
readonly appCredentialSchema?: readonly CredentialFieldSpec[];
|
|
@@ -47,6 +48,7 @@ export declare const ProviderDescriptorBaseSchema: z.ZodObject<{
|
|
|
47
48
|
description: z.ZodString;
|
|
48
49
|
iconName: z.ZodString;
|
|
49
50
|
category: z.ZodString;
|
|
51
|
+
apiBaseUrl: z.ZodOptional<z.ZodString>;
|
|
50
52
|
appAuthKind: z.ZodEnum<typeof ProviderAppAuthKind>;
|
|
51
53
|
origin: z.ZodEnum<typeof ProviderOrigin>;
|
|
52
54
|
appCredentialSchema: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
@@ -76,6 +78,7 @@ export declare const ProviderDescriptorSchema: z.ZodObject<{
|
|
|
76
78
|
description: z.ZodString;
|
|
77
79
|
iconName: z.ZodString;
|
|
78
80
|
category: z.ZodString;
|
|
81
|
+
apiBaseUrl: z.ZodOptional<z.ZodString>;
|
|
79
82
|
appAuthKind: z.ZodEnum<typeof ProviderAppAuthKind>;
|
|
80
83
|
origin: z.ZodEnum<typeof ProviderOrigin>;
|
|
81
84
|
appCredentialSchema: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-descriptor.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/provider-descriptor.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAQ/B,oBAAY,mBAAmB;IAO7B,MAAM,WAAW;IAMjB,UAAU,gBAAgB;IAO1B,IAAI,SAAS;CACd;AAaD,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAiBD,oBAAY,uBAAuB;IACjC,QAAQ,aAAa;IACrB,GAAG,QAAQ;CACZ;AAGD,eAAO,MAAM,+BAA+B,EAAE,SAAS,uBAAuB,EACb,CAAC;AAOlE,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAQ1B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAQjE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAOD,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-descriptor.d.ts","sourceRoot":"","sources":["../../../src/connector/lib/provider-descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ exports.ProviderDescriptorBaseSchema = zod_1.z.strictObject({
|
|
|
36
36
|
description: zod_1.z.string().min(1),
|
|
37
37
|
iconName: zod_1.z.string().min(1),
|
|
38
38
|
category: zod_1.z.string().min(1),
|
|
39
|
+
apiBaseUrl: zod_1.z.string().url().optional(),
|
|
39
40
|
appAuthKind: zod_1.z.nativeEnum(ProviderAppAuthKind),
|
|
40
41
|
origin: zod_1.z.nativeEnum(ProviderOrigin),
|
|
41
42
|
appCredentialSchema: zod_1.z.array(onboarding_manifest_1.CredentialFieldSpecSchema).readonly().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-descriptor.js","sourceRoot":"","sources":["../../../src/connector/lib/provider-descriptor.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"provider-descriptor.js","sourceRoot":"","sources":["../../../src/connector/lib/provider-descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contribution-kind.d.ts","sourceRoot":"","sources":["../../../src/contribution/lib/contribution-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"contribution-kind.d.ts","sourceRoot":"","sources":["../../../src/contribution/lib/contribution-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkDxB,oBAAY,gBAAgB;IAS1B,WAAW,iBAAiB;IAO5B,OAAO,aAAa;IACpB,YAAY,kBAAkB;IAQ9B,UAAU,gBAAgB;IAK1B,YAAY,kBAAkB;IAC9B,UAAU,gBAAgB;IAC1B,WAAW,iBAAiB;IAS5B,wBAAwB,+BAA+B;IACvD,UAAU,gBAAgB;IAQ1B,YAAY,kBAAkB;IAM9B,WAAW,iBAAiB;IAW5B,cAAc,oBAAoB;IAMlC,kBAAkB,yBAAyB;IAK3C,IAAI,SAAS;IAEb,UAAU,gBAAgB;IAM1B,oBAAoB,0BAA0B;IAK9C,oBAAoB,2BAA2B;IAK/C,yBAAyB,gCAAgC;IAGzD,mBAAmB,yBAAyB;IAI5C,cAAc,oBAAoB;IAElC,eAAe,qBAAqB;IAEpC,iBAAiB,uBAAuB;IAMxC,yBAAyB,gCAAgC;IAEzD,WAAW,iBAAiB;IAI5B,UAAU,gBAAgB;IAO1B,YAAY,kBAAkB;IAM9B,cAAc,oBAAoB;IAgBlC,UAAU,eAAe;IAezB,iBAAiB,uBAAuB;IAcxC,YAAY,kBAAkB;IAkB9B,UAAU,gBAAgB;CAC3B;AAMD,eAAO,MAAM,sBAAsB,oCAAiC,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,GAAG,gBAAgB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contribution-kind.js","sourceRoot":"","sources":["../../../src/contribution/lib/contribution-kind.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;
|
|
1
|
+
{"version":3,"file":"contribution-kind.js","sourceRoot":"","sources":["../../../src/contribution/lib/contribution-kind.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAkDxB,IAAY,gBAoMX;AApMD,WAAY,gBAAgB;IAS1B,gDAA4B,CAAA;IAO5B,wCAAoB,CAAA;IACpB,kDAA8B,CAAA;IAQ9B,8CAA0B,CAAA;IAK1B,kDAA8B,CAAA;IAC9B,8CAA0B,CAAA;IAC1B,gDAA4B,CAAA;IAS5B,2EAAuD,CAAA;IACvD,8CAA0B,CAAA;IAQ1B,kDAA8B,CAAA;IAM9B,gDAA4B,CAAA;IAW5B,sDAAkC,CAAA;IAMlC,+DAA2C,CAAA;IAK3C,iCAAa,CAAA;IAEb,8CAA0B,CAAA;IAM1B,kEAA8C,CAAA;IAK9C,mEAA+C,CAAA;IAK/C,6EAAyD,CAAA;IAGzD,gEAA4C,CAAA;IAI5C,sDAAkC,CAAA;IAElC,wDAAoC,CAAA;IAEpC,4DAAwC,CAAA;IAMxC,6EAAyD,CAAA;IAEzD,gDAA4B,CAAA;IAI5B,8CAA0B,CAAA;IAO1B,kDAA8B,CAAA;IAM9B,sDAAkC,CAAA;IAgBlC,6CAAyB,CAAA;IAezB,4DAAwC,CAAA;IAcxC,kDAA8B,CAAA;IAkB9B,8CAA0B,CAAA;AAC5B,CAAC,EApMW,gBAAgB,gCAAhB,gBAAgB,QAoM3B;AAMY,QAAA,sBAAsB,GAAG,OAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/kernel-contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"description": "Consolidated Xema OS kernel wire contracts — pure types + zod schemas for the kernel protocol surfaces. One package, one npm scope, wildcard per-surface subpath exports. No framework/runtime deps.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
|
package/src/connector/index.ts
CHANGED
|
@@ -17,7 +17,14 @@ import { z } from 'zod';
|
|
|
17
17
|
*
|
|
18
18
|
* - `native-provider` — a biome-shipped `IntegrationProviderModule` executes
|
|
19
19
|
* the operation directly (the curated, code-capable connector: Gmail
|
|
20
|
-
* module, an SCM connector, …).
|
|
20
|
+
* module, an SCM connector, …). This is the CODE escape hatch, hosted by
|
|
21
|
+
* `biome-adapter-host`.
|
|
22
|
+
* - `declarative-http` — the operation is fully expressed as DATA: a
|
|
23
|
+
* {@link import('./connector-http-request').ConnectorHttpRequestTemplate}
|
|
24
|
+
* on the operation descriptor + the provider's `apiBaseUrl`. A GENERIC
|
|
25
|
+
* executor (connector-gateway-api) runs it with NO connector-specific code —
|
|
26
|
+
* the third-party fast-path: ship a signed connector biome with a
|
|
27
|
+
* descriptor and it works with no sidecar bundle.
|
|
21
28
|
* - `external-mcp` — the operation is fulfilled by proxying a tool call to
|
|
22
29
|
* a registered external MCP server (the ad-hoc `OrgMcpServer` path).
|
|
23
30
|
* - `openapi-bridge` — the operation is fulfilled by an OpenAPI spec bridged
|
|
@@ -31,6 +38,7 @@ import { z } from 'zod';
|
|
|
31
38
|
*/
|
|
32
39
|
export enum ConnectorAdapterKind {
|
|
33
40
|
NativeProvider = 'native-provider',
|
|
41
|
+
DeclarativeHttp = 'declarative-http',
|
|
34
42
|
ExternalMcp = 'external-mcp',
|
|
35
43
|
OpenApiBridge = 'openapi-bridge',
|
|
36
44
|
Email = 'email',
|
|
@@ -27,6 +27,10 @@ import {
|
|
|
27
27
|
ConnectorAdapterKind,
|
|
28
28
|
ConnectorAdapterKindSchema,
|
|
29
29
|
} from './connector-adapter-kind';
|
|
30
|
+
import {
|
|
31
|
+
ConnectorHttpRequestTemplateSchema,
|
|
32
|
+
type ConnectorHttpRequestTemplate,
|
|
33
|
+
} from './connector-http-request';
|
|
30
34
|
|
|
31
35
|
import type { AdapterKindRef } from './adapter-kind';
|
|
32
36
|
|
|
@@ -75,18 +79,50 @@ export interface ConnectorOperationDescriptor {
|
|
|
75
79
|
* so the broker resolution requirement is stated, not inferred.
|
|
76
80
|
*/
|
|
77
81
|
readonly requiresConnection: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* The declarative HTTP request that FULFILS this operation. REQUIRED when
|
|
84
|
+
* `adapterKind` is {@link ConnectorAdapterKind.DeclarativeHttp} (the generic
|
|
85
|
+
* executor needs it), and MUST be absent for every other adapter kind (whose
|
|
86
|
+
* backend is code / MCP / mail, not a data template). Cross-field validated —
|
|
87
|
+
* a declarative op with no request, or a non-declarative op carrying one,
|
|
88
|
+
* fails fast at the contribution boundary.
|
|
89
|
+
*/
|
|
90
|
+
readonly httpRequest?: ConnectorHttpRequestTemplate;
|
|
78
91
|
}
|
|
79
92
|
|
|
80
93
|
/**
|
|
81
94
|
* Zod mirror of {@link ConnectorOperationDescriptor} — value-identical to the
|
|
82
|
-
* interface. Strict: unknown keys fail fast.
|
|
95
|
+
* interface. Strict: unknown keys fail fast. Cross-field: `httpRequest` is
|
|
96
|
+
* present iff `adapterKind === declarative-http`.
|
|
83
97
|
*/
|
|
84
|
-
export const ConnectorOperationDescriptorSchema = z
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
98
|
+
export const ConnectorOperationDescriptorSchema = z
|
|
99
|
+
.strictObject({
|
|
100
|
+
capabilityRef: CapabilityRefSchema,
|
|
101
|
+
adapterKind: ConnectorAdapterKindSchema,
|
|
102
|
+
scopes: z.array(z.string()).readonly(),
|
|
103
|
+
requiresConnection: z.boolean(),
|
|
104
|
+
httpRequest: ConnectorHttpRequestTemplateSchema.optional(),
|
|
105
|
+
})
|
|
106
|
+
.superRefine((op, ctx) => {
|
|
107
|
+
const isDeclarative =
|
|
108
|
+
op.adapterKind === ConnectorAdapterKind.DeclarativeHttp;
|
|
109
|
+
if (isDeclarative && op.httpRequest === undefined) {
|
|
110
|
+
ctx.addIssue({
|
|
111
|
+
code: 'custom',
|
|
112
|
+
path: ['httpRequest'],
|
|
113
|
+
message:
|
|
114
|
+
'A declarative-http operation MUST declare httpRequest (the generic ' +
|
|
115
|
+
'executor has no code path to fall back to).',
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (!isDeclarative && op.httpRequest !== undefined) {
|
|
119
|
+
ctx.addIssue({
|
|
120
|
+
code: 'custom',
|
|
121
|
+
path: ['httpRequest'],
|
|
122
|
+
message: `httpRequest is only valid for adapterKind="declarative-http" (got "${op.adapterKind}").`,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
});
|
|
90
126
|
|
|
91
127
|
/**
|
|
92
128
|
* A connector in the catalog. `connectorKey` aligns with the persisted
|
|
@@ -174,7 +210,7 @@ type AllowUndefinedOptionals<T> = T extends readonly (infer E)[]
|
|
|
174
210
|
export type ConnectorOperationDescriptorValueIdentityGuards = [
|
|
175
211
|
AssertExtends<
|
|
176
212
|
z.infer<typeof ConnectorOperationDescriptorSchema>,
|
|
177
|
-
ConnectorOperationDescriptor
|
|
213
|
+
AllowUndefinedOptionals<ConnectorOperationDescriptor>
|
|
178
214
|
>,
|
|
179
215
|
AssertExtends<
|
|
180
216
|
ConnectorOperationDescriptor,
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ─────────────────────────────────────────────────────────────────────────
|
|
3
|
+
* Declarative HTTP request template — the DATA face of a connector operation
|
|
4
|
+
*
|
|
5
|
+
* A connector operation whose `ConnectorAdapterKind` is
|
|
6
|
+
* {@link ConnectorAdapterKind.DeclarativeHttp} carries this template instead of
|
|
7
|
+
* a compiled code module. It is everything a GENERIC executor needs to turn a
|
|
8
|
+
* capability invocation into a single outbound HTTP call:
|
|
9
|
+
*
|
|
10
|
+
* - `method` + `pathTemplate` (joined onto the provider's `apiBaseUrl`),
|
|
11
|
+
* - `{placeholder}` substitution from the invocation input (deterministic,
|
|
12
|
+
* fail-fast on a missing placeholder — never a guess),
|
|
13
|
+
* - static/placeholder `query` + `headers`,
|
|
14
|
+
* - a `bodyMode` selecting whether the (placeholder-stripped) input becomes a
|
|
15
|
+
* JSON body,
|
|
16
|
+
* - an {@link ConnectorAuthInjection} describing WHERE the resolved
|
|
17
|
+
* credential is injected (the credential VALUE is never here — it is
|
|
18
|
+
* resolved at execution time through the credential-broker custody seam).
|
|
19
|
+
*
|
|
20
|
+
* This is the "third-party ships a signed connector biome with a descriptor and
|
|
21
|
+
* it works with NO sidecar code" fast-path. Code adapters remain the escape
|
|
22
|
+
* hatch (a different adapter kind, hosted by `biome-adapter-host`).
|
|
23
|
+
* ─────────────────────────────────────────────────────────────────────────
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The HTTP verb a declarative operation issues. Closed set — a connector
|
|
30
|
+
* operation is exactly one request.
|
|
31
|
+
*/
|
|
32
|
+
export enum ConnectorHttpMethod {
|
|
33
|
+
Get = 'GET',
|
|
34
|
+
Post = 'POST',
|
|
35
|
+
Put = 'PUT',
|
|
36
|
+
Patch = 'PATCH',
|
|
37
|
+
Delete = 'DELETE',
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Zod mirror of {@link ConnectorHttpMethod}. */
|
|
41
|
+
export const ConnectorHttpMethodSchema = z.nativeEnum(ConnectorHttpMethod);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* How the generic executor injects the resolved connection credential into the
|
|
45
|
+
* outbound request. The credential VALUE comes from the custody seam at
|
|
46
|
+
* execution time; this only says WHERE it goes. Closed set.
|
|
47
|
+
*/
|
|
48
|
+
export enum ConnectorAuthInjectionKind {
|
|
49
|
+
/** `Authorization: Bearer <accessToken>`. */
|
|
50
|
+
BearerHeader = 'bearer_header',
|
|
51
|
+
/** `Authorization: Basic <accessToken>` (the token is already base64 `user:pass`). */
|
|
52
|
+
BasicHeader = 'basic_header',
|
|
53
|
+
/** `<headerName>: <valuePrefix?><accessToken>` — e.g. `X-Api-Key: <token>`. */
|
|
54
|
+
Header = 'header',
|
|
55
|
+
/** `?<queryParamName>=<accessToken>` — e.g. `?api_key=<token>`. */
|
|
56
|
+
QueryParam = 'query_param',
|
|
57
|
+
/**
|
|
58
|
+
* No credential injected — a public operation. Only valid when the operation
|
|
59
|
+
* declares `requiresConnection: false`; the executor asserts the pairing.
|
|
60
|
+
*/
|
|
61
|
+
None = 'none',
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** Zod mirror of {@link ConnectorAuthInjectionKind}. */
|
|
65
|
+
export const ConnectorAuthInjectionKindSchema = z.nativeEnum(
|
|
66
|
+
ConnectorAuthInjectionKind,
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Whether the (placeholder-stripped) invocation input becomes an outbound
|
|
71
|
+
* request body. Closed set — kept minimal; a richer body-mapping language is a
|
|
72
|
+
* future additive member, never a free-form template string.
|
|
73
|
+
*/
|
|
74
|
+
export enum ConnectorHttpBodyMode {
|
|
75
|
+
/** No request body (typical for GET/DELETE). */
|
|
76
|
+
None = 'none',
|
|
77
|
+
/**
|
|
78
|
+
* The invocation input object (minus reserved/tenant keys and minus keys
|
|
79
|
+
* consumed as path/query/header placeholders) is sent as a JSON body.
|
|
80
|
+
*/
|
|
81
|
+
JsonInput = 'json_input',
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Zod mirror of {@link ConnectorHttpBodyMode}. */
|
|
85
|
+
export const ConnectorHttpBodyModeSchema = z.nativeEnum(ConnectorHttpBodyMode);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Where the resolved credential is injected into the outbound request. `kind`
|
|
89
|
+
* selects the injection style; the extra fields are required only for the
|
|
90
|
+
* styles that need them (validated cross-field, fail-fast).
|
|
91
|
+
*/
|
|
92
|
+
export interface ConnectorAuthInjection {
|
|
93
|
+
readonly kind: ConnectorAuthInjectionKind;
|
|
94
|
+
/** Header name — REQUIRED for `Header`, forbidden otherwise. */
|
|
95
|
+
readonly headerName?: string;
|
|
96
|
+
/** Optional value prefix for `Header` (e.g. `token ` → `token <secret>`). */
|
|
97
|
+
readonly valuePrefix?: string;
|
|
98
|
+
/** Query-param name — REQUIRED for `QueryParam`, forbidden otherwise. */
|
|
99
|
+
readonly queryParamName?: string;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Zod mirror of {@link ConnectorAuthInjection}. Strict + cross-field: the
|
|
104
|
+
* placement-specific field MUST be present for its kind and absent for others,
|
|
105
|
+
* so a malformed injection can never be silently under-specified.
|
|
106
|
+
*/
|
|
107
|
+
export const ConnectorAuthInjectionSchema = z
|
|
108
|
+
.strictObject({
|
|
109
|
+
kind: ConnectorAuthInjectionKindSchema,
|
|
110
|
+
headerName: z.string().min(1).optional(),
|
|
111
|
+
valuePrefix: z.string().optional(),
|
|
112
|
+
queryParamName: z.string().min(1).optional(),
|
|
113
|
+
})
|
|
114
|
+
.superRefine((value, ctx) => {
|
|
115
|
+
if (value.kind === ConnectorAuthInjectionKind.Header) {
|
|
116
|
+
if (value.headerName === undefined) {
|
|
117
|
+
ctx.addIssue({
|
|
118
|
+
code: 'custom',
|
|
119
|
+
path: ['headerName'],
|
|
120
|
+
message: 'auth.kind="header" requires headerName.',
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
} else if (value.headerName !== undefined) {
|
|
124
|
+
ctx.addIssue({
|
|
125
|
+
code: 'custom',
|
|
126
|
+
path: ['headerName'],
|
|
127
|
+
message: `headerName is only valid for auth.kind="header" (got "${value.kind}").`,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (
|
|
131
|
+
value.kind !== ConnectorAuthInjectionKind.Header &&
|
|
132
|
+
value.valuePrefix !== undefined
|
|
133
|
+
) {
|
|
134
|
+
ctx.addIssue({
|
|
135
|
+
code: 'custom',
|
|
136
|
+
path: ['valuePrefix'],
|
|
137
|
+
message: `valuePrefix is only valid for auth.kind="header" (got "${value.kind}").`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
if (value.kind === ConnectorAuthInjectionKind.QueryParam) {
|
|
141
|
+
if (value.queryParamName === undefined) {
|
|
142
|
+
ctx.addIssue({
|
|
143
|
+
code: 'custom',
|
|
144
|
+
path: ['queryParamName'],
|
|
145
|
+
message: 'auth.kind="query_param" requires queryParamName.',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
} else if (value.queryParamName !== undefined) {
|
|
149
|
+
ctx.addIssue({
|
|
150
|
+
code: 'custom',
|
|
151
|
+
path: ['queryParamName'],
|
|
152
|
+
message: `queryParamName is only valid for auth.kind="query_param" (got "${value.kind}").`,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* A single declarative HTTP request. `pathTemplate` is joined onto the
|
|
159
|
+
* provider's `apiBaseUrl` at execution time. `pathTemplate`, `query` values and
|
|
160
|
+
* `headers` values may contain `{name}` placeholders substituted from the
|
|
161
|
+
* invocation input — a placeholder with no matching input key is a fail-fast
|
|
162
|
+
* error at execution, never a silent empty string.
|
|
163
|
+
*/
|
|
164
|
+
export interface ConnectorHttpRequestTemplate {
|
|
165
|
+
readonly method: ConnectorHttpMethod;
|
|
166
|
+
/** Path (joined onto provider `apiBaseUrl`); MUST start with `/`. */
|
|
167
|
+
readonly pathTemplate: string;
|
|
168
|
+
/** Static or `{placeholder}` query params. */
|
|
169
|
+
readonly query?: Readonly<Record<string, string>>;
|
|
170
|
+
/** Static or `{placeholder}` request headers (never the auth header — that is `auth`). */
|
|
171
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
172
|
+
readonly bodyMode: ConnectorHttpBodyMode;
|
|
173
|
+
readonly auth: ConnectorAuthInjection;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Zod mirror of {@link ConnectorHttpRequestTemplate} — value-identical to the
|
|
178
|
+
* interface. Strict: unknown keys fail fast.
|
|
179
|
+
*/
|
|
180
|
+
export const ConnectorHttpRequestTemplateSchema = z.strictObject({
|
|
181
|
+
method: ConnectorHttpMethodSchema,
|
|
182
|
+
pathTemplate: z.string().min(1).startsWith('/'),
|
|
183
|
+
query: z.record(z.string(), z.string()).readonly().optional(),
|
|
184
|
+
headers: z.record(z.string(), z.string()).readonly().optional(),
|
|
185
|
+
bodyMode: ConnectorHttpBodyModeSchema,
|
|
186
|
+
auth: ConnectorAuthInjectionSchema,
|
|
187
|
+
});
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
import { z } from 'zod';
|
|
26
26
|
|
|
27
|
+
import { ConnectorAdapterKind } from './connector-adapter-kind';
|
|
27
28
|
import { ConnectorDescriptorSchema } from './connector-descriptor';
|
|
28
29
|
import {
|
|
29
30
|
ProviderDescriptorBaseSchema,
|
|
@@ -111,6 +112,26 @@ export const IntegrationProviderContributionManifestSchema = z
|
|
|
111
112
|
}
|
|
112
113
|
seenConnectorKeys.add(connector.connectorKey);
|
|
113
114
|
});
|
|
115
|
+
|
|
116
|
+
// A declarative-http operation is executed by joining its pathTemplate onto
|
|
117
|
+
// the provider's apiBaseUrl. If ANY connector ships one, the provider MUST
|
|
118
|
+
// declare apiBaseUrl — otherwise the generic executor has no base URL and
|
|
119
|
+
// would fail at invocation time. Enforce it at ingest instead (fail-fast).
|
|
120
|
+
const hasDeclarativeOperation = manifest.connectors.some((connector) =>
|
|
121
|
+
(connector.operations ?? []).some(
|
|
122
|
+
(op) => op.adapterKind === ConnectorAdapterKind.DeclarativeHttp,
|
|
123
|
+
),
|
|
124
|
+
);
|
|
125
|
+
if (hasDeclarativeOperation && manifest.provider.apiBaseUrl === undefined) {
|
|
126
|
+
ctx.addIssue({
|
|
127
|
+
code: 'custom',
|
|
128
|
+
path: ['provider', 'apiBaseUrl'],
|
|
129
|
+
message:
|
|
130
|
+
`Provider "${manifest.provider.providerKey}" ships a declarative-http ` +
|
|
131
|
+
'connector operation but declares no apiBaseUrl — the generic ' +
|
|
132
|
+
'executor joins every operation path onto it, so it is required.',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
114
135
|
});
|
|
115
136
|
|
|
116
137
|
export type IntegrationProviderContributionManifest = z.infer<
|
|
@@ -147,6 +147,15 @@ export interface ProviderDescriptor {
|
|
|
147
147
|
/** Catalog grouping label (e.g. `Email`, `Source control`, `Chat`). */
|
|
148
148
|
readonly category: string;
|
|
149
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Base URL every `declarative-http` operation under this provider is joined
|
|
152
|
+
* onto (e.g. `https://api.hubspot.com`). REQUIRED when any connector under
|
|
153
|
+
* this provider declares a `declarative-http` operation (enforced at the
|
|
154
|
+
* contribution boundary); absent for code / MCP / mail providers. Never
|
|
155
|
+
* carries a trailing slash by convention — the executor joins defensively.
|
|
156
|
+
*/
|
|
157
|
+
readonly apiBaseUrl?: string;
|
|
158
|
+
|
|
150
159
|
/** How the shared app credential authenticates. */
|
|
151
160
|
readonly appAuthKind: ProviderAppAuthKind;
|
|
152
161
|
/** Who shipped the provider — drives requirement scope + which admin fills. */
|
|
@@ -201,6 +210,7 @@ export const ProviderDescriptorBaseSchema = z.strictObject({
|
|
|
201
210
|
description: z.string().min(1),
|
|
202
211
|
iconName: z.string().min(1),
|
|
203
212
|
category: z.string().min(1),
|
|
213
|
+
apiBaseUrl: z.string().url().optional(),
|
|
204
214
|
appAuthKind: z.nativeEnum(ProviderAppAuthKind),
|
|
205
215
|
origin: z.nativeEnum(ProviderOrigin),
|
|
206
216
|
appCredentialSchema: z.array(CredentialFieldSpecSchema).readonly().optional(),
|
|
@@ -2,31 +2,93 @@ import { z } from 'zod';
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* `ContributionKind` is the closed enum that names every kind of thing a biome
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* may contribute to the Xema OS through the Contribution Protocol (XSI plane 2).
|
|
6
|
+
* Extending it is a one-line PR to the kernel.
|
|
7
7
|
*
|
|
8
|
-
* The enum
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
8
|
+
* The enum is a CATALOG, not a promise that biome-host parses every member.
|
|
9
|
+
* Each member falls into exactly ONE ingestion category, stated by its
|
|
10
|
+
* per-member doc-comment:
|
|
11
|
+
*
|
|
12
|
+
* 1. biome-host `KindParser` — discovered from a biome's `contributions/`
|
|
13
|
+
* directory by `biome-host-api` and forwarded to the owning service via
|
|
14
|
+
* the contribution-sync outbox. This is the majority; see
|
|
15
|
+
* `biome-host-api/src/contributions/parsers/`.
|
|
16
|
+
* 2. Domain-service handler / first-class self-registration — ingested by a
|
|
17
|
+
* service OTHER than biome-host, through its own
|
|
18
|
+
* `BootstrapContributionsService` handler or a kernel registry adapter:
|
|
19
|
+
* • `Capability`, `ResourceOwnership`, `SearchType` — kernel-owned
|
|
20
|
+
* manifest schema, validated fail-fast by BOTH the biome-host parser
|
|
21
|
+
* and the owning domain service.
|
|
22
|
+
* • `StageMachine`, `ArtifactType`, `InquiryKind` — host-owned manifest
|
|
23
|
+
* schema, biome-host parses and forwards to the owning host.
|
|
24
|
+
* • `ModelResolutionDimension` — `llm-registry-api`'s
|
|
25
|
+
* `ModelStrategyBootstrapService`, from kernel-shipped strategy YAML;
|
|
26
|
+
* NO biome-host parser.
|
|
27
|
+
* • `MountSource` — the kernel `@xemahq/backend-slot-registry-adapters`
|
|
28
|
+
* adapter projecting the `MountSourceKindRegistry`; NO biome-host
|
|
29
|
+
* parser.
|
|
30
|
+
* 3. RESERVED — declared for protocol/catalog completeness but with NO
|
|
31
|
+
* contribution-protocol ingestion path today. Where the underlying feature
|
|
32
|
+
* exists it ships via the convention CONTENT-DIRECTORY seeder (on-disk
|
|
33
|
+
* presence — see the manifest reference), NOT the enum-dispatched
|
|
34
|
+
* contribution protocol; a few members have no delivery path at all yet.
|
|
35
|
+
* Do NOT assume a biome-host parser exists for a RESERVED member, and do
|
|
36
|
+
* not ship a biome contribution of that kind expecting it to be ingested.
|
|
37
|
+
*
|
|
38
|
+
* This doc-comment is kept HONEST by review: a member with no biome-host parser
|
|
39
|
+
* MUST be annotated with its true category (2 or 3). An earlier revision falsely
|
|
40
|
+
* asserted "the enum equals the SUPPORTED set: every member is handled by a
|
|
41
|
+
* parser or is a first-class self-registration kind" and that decorative
|
|
42
|
+
* members "were culled in the H7 pass" — neither was true (13 members were
|
|
43
|
+
* parser-less). Adding a member is a one-line PR, but it MUST arrive with a
|
|
44
|
+
* parser OR an honest category-2/3 note.
|
|
16
45
|
*
|
|
17
46
|
* Enum string values match the slug spoken by the rest of the protocol
|
|
18
47
|
* (Capability References, manifest declarations) so that round-tripping
|
|
19
|
-
* between the enum and the wire is lossless.
|
|
48
|
+
* between the enum and the wire is lossless. The values themselves are a WIRE
|
|
49
|
+
* CONTRACT — never rename or delete a member without a migration plan.
|
|
20
50
|
*/
|
|
21
51
|
export enum ContributionKind {
|
|
22
52
|
// -- v1 seed ---------------------------------------------------------------
|
|
53
|
+
/**
|
|
54
|
+
* Category 2 (domain-service handler, NOT biome-host). Ingested by the kernel
|
|
55
|
+
* `@xemahq/backend-slot-registry-adapters` adapter
|
|
56
|
+
* (`adaptMountSourceRegistryIntoSlots`), which projects the existing
|
|
57
|
+
* `MountSourceKindRegistry` into the `BackendSlotRegistry`. That registry
|
|
58
|
+
* stays the authoritative owner and read path; there is NO biome-host parser.
|
|
59
|
+
*/
|
|
23
60
|
MountSource = 'mount-source',
|
|
61
|
+
/**
|
|
62
|
+
* RESERVED (category 3). No contribution-protocol parser. MCP tool
|
|
63
|
+
* descriptors ship today via the convention `mcpTools/` content directory
|
|
64
|
+
* (on-disk presence seeder). The enum-dispatched contribution path for MCP is
|
|
65
|
+
* `McpCatalog`, which HAS a parser — do not expect one here.
|
|
66
|
+
*/
|
|
24
67
|
McpTool = 'mcp-tool',
|
|
25
68
|
WorkflowStep = 'workflow-step',
|
|
69
|
+
/**
|
|
70
|
+
* RESERVED (category 3). No ingestion path today — no parser, no
|
|
71
|
+
* content-directory seeder, no domain-service handler. The only in-tree use
|
|
72
|
+
* is a deliberate PLACEHOLDER reuse of this value in the kernel
|
|
73
|
+
* `inquiry-kind-adapter` (its own comment flags it as a placeholder, not an
|
|
74
|
+
* equivalence). A biome contribution of this kind is NOT ingested.
|
|
75
|
+
*/
|
|
26
76
|
GateAction = 'gate-action',
|
|
77
|
+
/**
|
|
78
|
+
* RESERVED (category 3). No ingestion path today; referenced only as a worked
|
|
79
|
+
* "a third party adds a new kind" example in the contribution test-suite.
|
|
80
|
+
*/
|
|
27
81
|
ChartRuntime = 'chart-runtime',
|
|
28
82
|
AgentSkill = 'agent-skill',
|
|
29
83
|
AgentKernel = 'agent-kernel',
|
|
84
|
+
/**
|
|
85
|
+
* Category 2 (domain-service handler, NOT biome-host). Ingested by
|
|
86
|
+
* `llm-registry-api`'s `ModelStrategyBootstrapService` — a
|
|
87
|
+
* `BootstrapContributionsService` handler that loads the kernel-shipped
|
|
88
|
+
* `strategies/*.yaml` and upserts model-resolution strategies. No biome-host
|
|
89
|
+
* parser; the manifest shape is service-local (`StrategyFileSchema`), not a
|
|
90
|
+
* kernel-owned contribution schema.
|
|
91
|
+
*/
|
|
30
92
|
ModelResolutionDimension = 'model-resolution-dimension',
|
|
31
93
|
WidgetKind = 'widget-kind',
|
|
32
94
|
|
|
@@ -54,17 +116,34 @@ export enum ContributionKind {
|
|
|
54
116
|
|
|
55
117
|
/** A role capability bundle contributed by a biome. */
|
|
56
118
|
RoleCapability = 'role-capability',
|
|
57
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* RESERVED (category 3). No contribution-protocol parser. The install-wizard
|
|
121
|
+
* resource-selection schema ships via the convention `biomeInstallSchema/`
|
|
122
|
+
* content directory (on-disk presence seeder), not the enum-dispatched path.
|
|
123
|
+
*/
|
|
58
124
|
BiomeInstallSchema = 'biome-install-schema',
|
|
59
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* RESERVED (category 3). No parser. Icon assets ship via the convention
|
|
127
|
+
* `icons/` content directory (on-disk presence seeder).
|
|
128
|
+
*/
|
|
60
129
|
Icon = 'icon',
|
|
61
130
|
/** A project-kit bundle contributed by a biome. */
|
|
62
131
|
ProjectKit = 'project-kit',
|
|
63
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* RESERVED (category 3). No parser. Provisioning scaffolds ship via the
|
|
134
|
+
* convention `provisioning/` content directory (declared in
|
|
135
|
+
* `xema.provisioning[]`, parity-checked at boot), not the contribution path.
|
|
136
|
+
*/
|
|
64
137
|
ProvisioningScaffold = 'provisioning-scaffold',
|
|
65
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* RESERVED (category 3). No ingestion path today — no parser, no
|
|
140
|
+
* content-directory seeder, no domain-service handler.
|
|
141
|
+
*/
|
|
66
142
|
WorkspaceSpecOverlay = 'workspace-spec-overlay',
|
|
67
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* RESERVED (category 3). No ingestion path today — no parser, no
|
|
145
|
+
* content-directory seeder, no domain-service handler.
|
|
146
|
+
*/
|
|
68
147
|
SystemOverlayContribution = 'system-overlay-contribution',
|
|
69
148
|
/** A concrete integration provider contributed by a biome inside an
|
|
70
149
|
* adapter kind. */
|
|
@@ -77,7 +156,11 @@ export enum ContributionKind {
|
|
|
77
156
|
DeliverableSpec = 'deliverable-spec',
|
|
78
157
|
/** A workspace manifest contributed by a biome. */
|
|
79
158
|
WorkspaceManifest = 'workspace-manifest',
|
|
80
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* RESERVED (category 3). No parser (distinct from `WorkspaceManifest`, which
|
|
161
|
+
* HAS one). Reusable workspace-manifest templates ship via the convention
|
|
162
|
+
* `workspaceManifestTemplates/` content directory (on-disk presence seeder).
|
|
163
|
+
*/
|
|
81
164
|
WorkspaceManifestTemplate = 'workspace-manifest-template',
|
|
82
165
|
/** A tool-profile contributed by a biome. */
|
|
83
166
|
ToolProfile = 'tool-profile',
|
|
@@ -85,9 +168,18 @@ export enum ContributionKind {
|
|
|
85
168
|
* which is a single tool descriptor; an `McpCatalog` entry is a catalog
|
|
86
169
|
* manifest. */
|
|
87
170
|
McpCatalog = 'mcp-catalog',
|
|
88
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* RESERVED (category 3). No contribution-protocol parser. Agent-runtime
|
|
173
|
+
* custom tools ship via the convention `openCodeTools/` content directory,
|
|
174
|
+
* baked into the opencode-worker image at build time — not the
|
|
175
|
+
* enum-dispatched contribution path.
|
|
176
|
+
*/
|
|
89
177
|
OpenCodeTool = 'opencode-tool',
|
|
90
|
-
/**
|
|
178
|
+
/**
|
|
179
|
+
* RESERVED (category 3). No parser — the contribution-registrar explicitly
|
|
180
|
+
* does NOT route this kind. Agent-runtime plugins ship via the convention
|
|
181
|
+
* `openCodePlugins/` content directory, baked into the opencode-worker image.
|
|
182
|
+
*/
|
|
91
183
|
OpenCodePlugin = 'opencode-plugin',
|
|
92
184
|
// -- Capability self-registration ------------------------------------------
|
|
93
185
|
/**
|