@contractspec/example.integration-hub 2.5.0 → 2.6.1
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/README.md +40 -0
- package/dist/docs/index.js +2 -0
- package/dist/docs/integration-hub.docblock.js +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +149 -0
- package/dist/mcp-example.d.ts +16 -0
- package/dist/mcp-example.js +151 -0
- package/dist/node/docs/index.js +2 -0
- package/dist/node/docs/integration-hub.docblock.js +2 -0
- package/dist/node/index.js +149 -0
- package/dist/node/mcp-example.js +150 -0
- package/dist/node/run-mcp.js +155 -0
- package/dist/run-mcp.d.ts +1 -0
- package/dist/run-mcp.js +156 -0
- package/package.json +34 -94
- package/dist/browser/connection/connection.enum.js +0 -12
- package/dist/browser/connection/connection.operation.js +0 -101
- package/dist/browser/connection/connection.presentation.js +0 -102
- package/dist/browser/connection/connection.schema.js +0 -48
- package/dist/browser/connection/index.js +0 -104
- package/dist/browser/docs/index.js +0 -104
- package/dist/browser/docs/integration-hub.docblock.js +0 -104
- package/dist/browser/events.js +0 -211
- package/dist/browser/example.js +0 -42
- package/dist/browser/handlers/index.js +0 -246
- package/dist/browser/handlers/integration.handlers.js +0 -246
- package/dist/browser/index.js +0 -1595
- package/dist/browser/integration/index.js +0 -92
- package/dist/browser/integration/integration.enum.js +0 -12
- package/dist/browser/integration/integration.operations.js +0 -89
- package/dist/browser/integration/integration.presentation.js +0 -120
- package/dist/browser/integration/integration.schema.js +0 -42
- package/dist/browser/integration-hub.capability.js +0 -43
- package/dist/browser/integration-hub.feature.js +0 -114
- package/dist/browser/seeders/index.js +0 -60
- package/dist/browser/sync/index.js +0 -332
- package/dist/browser/sync/sync.enum.js +0 -26
- package/dist/browser/sync/sync.operations.js +0 -321
- package/dist/browser/sync/sync.presentation.js +0 -301
- package/dist/browser/sync/sync.schema.js +0 -154
- package/dist/browser/sync-engine/index.js +0 -186
- package/dist/browser/tests/operations.test-spec.js +0 -85
- package/dist/browser/ui/IntegrationDashboard.js +0 -369
- package/dist/browser/ui/hooks/index.js +0 -57
- package/dist/browser/ui/hooks/useIntegrationData.js +0 -54
- package/dist/browser/ui/index.js +0 -644
- package/dist/browser/ui/renderers/index.js +0 -273
- package/dist/browser/ui/renderers/integration.markdown.js +0 -273
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
// src/integration/integration.enum.ts
|
|
2
|
-
import { defineEnum } from "@contractspec/lib.schema";
|
|
3
|
-
var IntegrationStatusEnum = defineEnum("IntegrationStatus", [
|
|
4
|
-
"DRAFT",
|
|
5
|
-
"ACTIVE",
|
|
6
|
-
"PAUSED",
|
|
7
|
-
"ERROR",
|
|
8
|
-
"ARCHIVED"
|
|
9
|
-
]);
|
|
10
|
-
|
|
11
|
-
// src/integration/integration.schema.ts
|
|
12
|
-
import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
|
|
13
|
-
var IntegrationModel = defineSchemaModel({
|
|
14
|
-
name: "IntegrationModel",
|
|
15
|
-
fields: {
|
|
16
|
-
id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
17
|
-
name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
18
|
-
slug: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
19
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
20
|
-
provider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
21
|
-
status: { type: IntegrationStatusEnum, isOptional: false },
|
|
22
|
-
createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var CreateIntegrationInputModel = defineSchemaModel({
|
|
26
|
-
name: "CreateIntegrationInput",
|
|
27
|
-
fields: {
|
|
28
|
-
name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
29
|
-
slug: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
30
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
31
|
-
provider: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
32
|
-
config: { type: ScalarTypeEnum.JSON(), isOptional: true },
|
|
33
|
-
featureFlagKey: {
|
|
34
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
35
|
-
isOptional: true
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// src/integration/integration.operations.ts
|
|
41
|
-
import { defineCommand } from "@contractspec/lib.contracts-spec/operations";
|
|
42
|
-
var CreateIntegrationContract = defineCommand({
|
|
43
|
-
meta: {
|
|
44
|
-
key: "integration.create",
|
|
45
|
-
version: "1.0.0",
|
|
46
|
-
stability: "stable",
|
|
47
|
-
owners: ["@example.integration-hub"],
|
|
48
|
-
tags: ["integration", "create"],
|
|
49
|
-
description: "Create a new integration.",
|
|
50
|
-
goal: "Allow users to set up integrations with external systems.",
|
|
51
|
-
context: "Integration setup."
|
|
52
|
-
},
|
|
53
|
-
io: { input: CreateIntegrationInputModel, output: IntegrationModel },
|
|
54
|
-
policy: { auth: "user" },
|
|
55
|
-
sideEffects: {
|
|
56
|
-
emits: [
|
|
57
|
-
{
|
|
58
|
-
key: "integration.created",
|
|
59
|
-
version: "1.0.0",
|
|
60
|
-
when: "Integration created",
|
|
61
|
-
payload: IntegrationModel
|
|
62
|
-
}
|
|
63
|
-
],
|
|
64
|
-
audit: ["integration.created"]
|
|
65
|
-
},
|
|
66
|
-
acceptance: {
|
|
67
|
-
scenarios: [
|
|
68
|
-
{
|
|
69
|
-
key: "create-integration-happy-path",
|
|
70
|
-
given: ["User is admin"],
|
|
71
|
-
when: ["User defines new integration type"],
|
|
72
|
-
then: [
|
|
73
|
-
"Integration definition is created",
|
|
74
|
-
"IntegrationCreated event is emitted"
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
|
-
],
|
|
78
|
-
examples: [
|
|
79
|
-
{
|
|
80
|
-
key: "create-slack",
|
|
81
|
-
input: { name: "Slack", category: "communication", authType: "oauth2" },
|
|
82
|
-
output: { id: "slack", status: "active" }
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
export {
|
|
88
|
-
IntegrationStatusEnum,
|
|
89
|
-
IntegrationModel,
|
|
90
|
-
CreateIntegrationInputModel,
|
|
91
|
-
CreateIntegrationContract
|
|
92
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// src/integration/integration.enum.ts
|
|
2
|
-
import { defineEnum } from "@contractspec/lib.schema";
|
|
3
|
-
var IntegrationStatusEnum = defineEnum("IntegrationStatus", [
|
|
4
|
-
"DRAFT",
|
|
5
|
-
"ACTIVE",
|
|
6
|
-
"PAUSED",
|
|
7
|
-
"ERROR",
|
|
8
|
-
"ARCHIVED"
|
|
9
|
-
]);
|
|
10
|
-
export {
|
|
11
|
-
IntegrationStatusEnum
|
|
12
|
-
};
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
// src/integration/integration.enum.ts
|
|
2
|
-
import { defineEnum } from "@contractspec/lib.schema";
|
|
3
|
-
var IntegrationStatusEnum = defineEnum("IntegrationStatus", [
|
|
4
|
-
"DRAFT",
|
|
5
|
-
"ACTIVE",
|
|
6
|
-
"PAUSED",
|
|
7
|
-
"ERROR",
|
|
8
|
-
"ARCHIVED"
|
|
9
|
-
]);
|
|
10
|
-
|
|
11
|
-
// src/integration/integration.schema.ts
|
|
12
|
-
import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
|
|
13
|
-
var IntegrationModel = defineSchemaModel({
|
|
14
|
-
name: "IntegrationModel",
|
|
15
|
-
fields: {
|
|
16
|
-
id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
17
|
-
name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
18
|
-
slug: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
19
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
20
|
-
provider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
21
|
-
status: { type: IntegrationStatusEnum, isOptional: false },
|
|
22
|
-
createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var CreateIntegrationInputModel = defineSchemaModel({
|
|
26
|
-
name: "CreateIntegrationInput",
|
|
27
|
-
fields: {
|
|
28
|
-
name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
29
|
-
slug: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
30
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
31
|
-
provider: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
32
|
-
config: { type: ScalarTypeEnum.JSON(), isOptional: true },
|
|
33
|
-
featureFlagKey: {
|
|
34
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
35
|
-
isOptional: true
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// src/integration/integration.operations.ts
|
|
41
|
-
import { defineCommand } from "@contractspec/lib.contracts-spec/operations";
|
|
42
|
-
var CreateIntegrationContract = defineCommand({
|
|
43
|
-
meta: {
|
|
44
|
-
key: "integration.create",
|
|
45
|
-
version: "1.0.0",
|
|
46
|
-
stability: "stable",
|
|
47
|
-
owners: ["@example.integration-hub"],
|
|
48
|
-
tags: ["integration", "create"],
|
|
49
|
-
description: "Create a new integration.",
|
|
50
|
-
goal: "Allow users to set up integrations with external systems.",
|
|
51
|
-
context: "Integration setup."
|
|
52
|
-
},
|
|
53
|
-
io: { input: CreateIntegrationInputModel, output: IntegrationModel },
|
|
54
|
-
policy: { auth: "user" },
|
|
55
|
-
sideEffects: {
|
|
56
|
-
emits: [
|
|
57
|
-
{
|
|
58
|
-
key: "integration.created",
|
|
59
|
-
version: "1.0.0",
|
|
60
|
-
when: "Integration created",
|
|
61
|
-
payload: IntegrationModel
|
|
62
|
-
}
|
|
63
|
-
],
|
|
64
|
-
audit: ["integration.created"]
|
|
65
|
-
},
|
|
66
|
-
acceptance: {
|
|
67
|
-
scenarios: [
|
|
68
|
-
{
|
|
69
|
-
key: "create-integration-happy-path",
|
|
70
|
-
given: ["User is admin"],
|
|
71
|
-
when: ["User defines new integration type"],
|
|
72
|
-
then: [
|
|
73
|
-
"Integration definition is created",
|
|
74
|
-
"IntegrationCreated event is emitted"
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
|
-
],
|
|
78
|
-
examples: [
|
|
79
|
-
{
|
|
80
|
-
key: "create-slack",
|
|
81
|
-
input: { name: "Slack", category: "communication", authType: "oauth2" },
|
|
82
|
-
output: { id: "slack", status: "active" }
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
export {
|
|
88
|
-
CreateIntegrationContract
|
|
89
|
-
};
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
// src/integration/integration.enum.ts
|
|
2
|
-
import { defineEnum } from "@contractspec/lib.schema";
|
|
3
|
-
var IntegrationStatusEnum = defineEnum("IntegrationStatus", [
|
|
4
|
-
"DRAFT",
|
|
5
|
-
"ACTIVE",
|
|
6
|
-
"PAUSED",
|
|
7
|
-
"ERROR",
|
|
8
|
-
"ARCHIVED"
|
|
9
|
-
]);
|
|
10
|
-
|
|
11
|
-
// src/integration/integration.schema.ts
|
|
12
|
-
import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
|
|
13
|
-
var IntegrationModel = defineSchemaModel({
|
|
14
|
-
name: "IntegrationModel",
|
|
15
|
-
fields: {
|
|
16
|
-
id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
17
|
-
name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
18
|
-
slug: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
19
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
20
|
-
provider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
21
|
-
status: { type: IntegrationStatusEnum, isOptional: false },
|
|
22
|
-
createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var CreateIntegrationInputModel = defineSchemaModel({
|
|
26
|
-
name: "CreateIntegrationInput",
|
|
27
|
-
fields: {
|
|
28
|
-
name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
29
|
-
slug: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
30
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
31
|
-
provider: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
32
|
-
config: { type: ScalarTypeEnum.JSON(), isOptional: true },
|
|
33
|
-
featureFlagKey: {
|
|
34
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
35
|
-
isOptional: true
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// src/integration/integration.presentation.ts
|
|
41
|
-
import {
|
|
42
|
-
definePresentation,
|
|
43
|
-
StabilityEnum
|
|
44
|
-
} from "@contractspec/lib.contracts-spec";
|
|
45
|
-
var IntegrationListPresentation = definePresentation({
|
|
46
|
-
meta: {
|
|
47
|
-
key: "integration.list",
|
|
48
|
-
version: "1.0.0",
|
|
49
|
-
title: "Integration List",
|
|
50
|
-
description: "List of available integrations",
|
|
51
|
-
domain: "integration",
|
|
52
|
-
owners: ["@integration-team"],
|
|
53
|
-
tags: ["integration", "list"],
|
|
54
|
-
stability: StabilityEnum.Experimental,
|
|
55
|
-
goal: "Show users available integrations they can connect to.",
|
|
56
|
-
context: "The marketplace of integrations within the hub."
|
|
57
|
-
},
|
|
58
|
-
source: {
|
|
59
|
-
type: "component",
|
|
60
|
-
framework: "react",
|
|
61
|
-
componentKey: "IntegrationList",
|
|
62
|
-
props: IntegrationModel
|
|
63
|
-
},
|
|
64
|
-
targets: ["react", "markdown"],
|
|
65
|
-
policy: {
|
|
66
|
-
flags: ["integration.enabled"]
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
var IntegrationDetailPresentation = definePresentation({
|
|
70
|
-
meta: {
|
|
71
|
-
key: "integration.detail",
|
|
72
|
-
version: "1.0.0",
|
|
73
|
-
title: "Integration Details",
|
|
74
|
-
description: "Detailed view of an integration",
|
|
75
|
-
domain: "integration",
|
|
76
|
-
owners: ["@integration-team"],
|
|
77
|
-
tags: ["integration", "detail"],
|
|
78
|
-
stability: StabilityEnum.Experimental,
|
|
79
|
-
goal: "Show capabilities and documentation for a specific integration.",
|
|
80
|
-
context: "Integration showcase and support page."
|
|
81
|
-
},
|
|
82
|
-
source: {
|
|
83
|
-
type: "component",
|
|
84
|
-
framework: "react",
|
|
85
|
-
componentKey: "IntegrationDetail",
|
|
86
|
-
props: IntegrationModel
|
|
87
|
-
},
|
|
88
|
-
targets: ["react", "markdown"],
|
|
89
|
-
policy: {
|
|
90
|
-
flags: ["integration.enabled"]
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
var IntegrationHealthPresentation = definePresentation({
|
|
94
|
-
meta: {
|
|
95
|
-
key: "integration.health",
|
|
96
|
-
version: "1.0.0",
|
|
97
|
-
title: "Integration Health",
|
|
98
|
-
description: "Integration health monitoring dashboard",
|
|
99
|
-
domain: "integration",
|
|
100
|
-
owners: ["@integration-team"],
|
|
101
|
-
tags: ["integration", "health", "monitoring"],
|
|
102
|
-
stability: StabilityEnum.Experimental,
|
|
103
|
-
goal: "Monitor connectivity and error rates for active integrations.",
|
|
104
|
-
context: "Operations dashboard for integration hub health."
|
|
105
|
-
},
|
|
106
|
-
source: {
|
|
107
|
-
type: "component",
|
|
108
|
-
framework: "react",
|
|
109
|
-
componentKey: "IntegrationHealth"
|
|
110
|
-
},
|
|
111
|
-
targets: ["react", "markdown"],
|
|
112
|
-
policy: {
|
|
113
|
-
flags: ["integration.monitoring.enabled"]
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
export {
|
|
117
|
-
IntegrationListPresentation,
|
|
118
|
-
IntegrationHealthPresentation,
|
|
119
|
-
IntegrationDetailPresentation
|
|
120
|
-
};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
// src/integration/integration.enum.ts
|
|
2
|
-
import { defineEnum } from "@contractspec/lib.schema";
|
|
3
|
-
var IntegrationStatusEnum = defineEnum("IntegrationStatus", [
|
|
4
|
-
"DRAFT",
|
|
5
|
-
"ACTIVE",
|
|
6
|
-
"PAUSED",
|
|
7
|
-
"ERROR",
|
|
8
|
-
"ARCHIVED"
|
|
9
|
-
]);
|
|
10
|
-
|
|
11
|
-
// src/integration/integration.schema.ts
|
|
12
|
-
import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
|
|
13
|
-
var IntegrationModel = defineSchemaModel({
|
|
14
|
-
name: "IntegrationModel",
|
|
15
|
-
fields: {
|
|
16
|
-
id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
17
|
-
name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
18
|
-
slug: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
19
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
20
|
-
provider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
21
|
-
status: { type: IntegrationStatusEnum, isOptional: false },
|
|
22
|
-
createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var CreateIntegrationInputModel = defineSchemaModel({
|
|
26
|
-
name: "CreateIntegrationInput",
|
|
27
|
-
fields: {
|
|
28
|
-
name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
29
|
-
slug: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
30
|
-
description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
31
|
-
provider: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
32
|
-
config: { type: ScalarTypeEnum.JSON(), isOptional: true },
|
|
33
|
-
featureFlagKey: {
|
|
34
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
35
|
-
isOptional: true
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
export {
|
|
40
|
-
IntegrationModel,
|
|
41
|
-
CreateIntegrationInputModel
|
|
42
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// src/integration-hub.capability.ts
|
|
2
|
-
import {
|
|
3
|
-
defineCapability,
|
|
4
|
-
StabilityEnum
|
|
5
|
-
} from "@contractspec/lib.contracts-spec";
|
|
6
|
-
var IntegrationCapability = defineCapability({
|
|
7
|
-
meta: {
|
|
8
|
-
key: "integration",
|
|
9
|
-
version: "1.0.0",
|
|
10
|
-
kind: "integration",
|
|
11
|
-
stability: StabilityEnum.Experimental,
|
|
12
|
-
description: "Third-party integration connections",
|
|
13
|
-
owners: ["platform.core"],
|
|
14
|
-
tags: ["integration", "connections"]
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
var SyncCapability = defineCapability({
|
|
18
|
-
meta: {
|
|
19
|
-
key: "sync",
|
|
20
|
-
version: "1.0.0",
|
|
21
|
-
kind: "api",
|
|
22
|
-
stability: StabilityEnum.Experimental,
|
|
23
|
-
description: "Data synchronization between systems",
|
|
24
|
-
owners: ["platform.core"],
|
|
25
|
-
tags: ["sync", "data"]
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
var EtlCapability = defineCapability({
|
|
29
|
-
meta: {
|
|
30
|
-
key: "etl",
|
|
31
|
-
version: "1.0.0",
|
|
32
|
-
kind: "api",
|
|
33
|
-
stability: StabilityEnum.Experimental,
|
|
34
|
-
description: "Extract, transform, load data pipelines",
|
|
35
|
-
owners: ["platform.core"],
|
|
36
|
-
tags: ["etl", "data", "pipeline"]
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
export {
|
|
40
|
-
SyncCapability,
|
|
41
|
-
IntegrationCapability,
|
|
42
|
-
EtlCapability
|
|
43
|
-
};
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// src/integration-hub.feature.ts
|
|
2
|
-
import { defineFeature } from "@contractspec/lib.contracts-spec";
|
|
3
|
-
var IntegrationHubFeature = defineFeature({
|
|
4
|
-
meta: {
|
|
5
|
-
key: "integration-hub",
|
|
6
|
-
version: "1.0.0",
|
|
7
|
-
title: "Integration Hub",
|
|
8
|
-
description: "Connect and sync data with external systems through configurable integrations",
|
|
9
|
-
domain: "integration",
|
|
10
|
-
owners: ["@integration-team"],
|
|
11
|
-
tags: ["integration", "sync", "etl", "connectors"],
|
|
12
|
-
stability: "experimental"
|
|
13
|
-
},
|
|
14
|
-
operations: [
|
|
15
|
-
{ key: "integration.create", version: "1.0.0" },
|
|
16
|
-
{ key: "integration.connection.create", version: "1.0.0" },
|
|
17
|
-
{ key: "integration.syncConfig.create", version: "1.0.0" },
|
|
18
|
-
{ key: "integration.fieldMapping.add", version: "1.0.0" },
|
|
19
|
-
{ key: "integration.sync.trigger", version: "1.0.0" },
|
|
20
|
-
{ key: "integration.syncRun.list", version: "1.0.0" }
|
|
21
|
-
],
|
|
22
|
-
events: [
|
|
23
|
-
{ key: "integration.created", version: "1.0.0" },
|
|
24
|
-
{ key: "integration.connection.created", version: "1.0.0" },
|
|
25
|
-
{ key: "integration.connection.statusChanged", version: "1.0.0" },
|
|
26
|
-
{ key: "integration.syncConfig.created", version: "1.0.0" },
|
|
27
|
-
{ key: "integration.sync.started", version: "1.0.0" },
|
|
28
|
-
{ key: "integration.sync.completed", version: "1.0.0" },
|
|
29
|
-
{ key: "integration.sync.failed", version: "1.0.0" },
|
|
30
|
-
{ key: "integration.record.synced", version: "1.0.0" },
|
|
31
|
-
{ key: "integration.fieldMapping.added", version: "1.0.0" }
|
|
32
|
-
],
|
|
33
|
-
presentations: [
|
|
34
|
-
{ key: "integration.list", version: "1.0.0" },
|
|
35
|
-
{ key: "integration.detail", version: "1.0.0" },
|
|
36
|
-
{ key: "integration.connection.list", version: "1.0.0" },
|
|
37
|
-
{ key: "integration.connection.setup", version: "1.0.0" },
|
|
38
|
-
{ key: "integration.syncConfig.list", version: "1.0.0" },
|
|
39
|
-
{ key: "integration.syncConfig.editor", version: "1.0.0" },
|
|
40
|
-
{ key: "integration.fieldMapping.editor", version: "1.0.0" },
|
|
41
|
-
{ key: "integration.syncRun.viewList", version: "1.0.0" },
|
|
42
|
-
{ key: "integration.syncRun.detail", version: "1.0.0" },
|
|
43
|
-
{ key: "integration.health", version: "1.0.0" },
|
|
44
|
-
{ key: "integration.sync.activity", version: "1.0.0" }
|
|
45
|
-
],
|
|
46
|
-
opToPresentation: [
|
|
47
|
-
{
|
|
48
|
-
op: { key: "integration.syncConfig.create", version: "1.0.0" },
|
|
49
|
-
pres: { key: "integration.syncConfig.editor", version: "1.0.0" }
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
op: { key: "integration.fieldMapping.add", version: "1.0.0" },
|
|
53
|
-
pres: { key: "integration.fieldMapping.editor", version: "1.0.0" }
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
op: { key: "integration.syncRun.list", version: "1.0.0" },
|
|
57
|
-
pres: { key: "integration.syncRun.viewList", version: "1.0.0" }
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
presentationsTargets: [
|
|
61
|
-
{
|
|
62
|
-
key: "integration.list",
|
|
63
|
-
version: "1.0.0",
|
|
64
|
-
targets: ["react", "markdown"]
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
key: "integration.detail",
|
|
68
|
-
version: "1.0.0",
|
|
69
|
-
targets: ["react", "markdown"]
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
key: "integration.syncConfig.list",
|
|
73
|
-
version: "1.0.0",
|
|
74
|
-
targets: ["react", "markdown"]
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
key: "integration.syncConfig.editor",
|
|
78
|
-
version: "1.0.0",
|
|
79
|
-
targets: ["react"]
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
key: "integration.fieldMapping.editor",
|
|
83
|
-
version: "1.0.0",
|
|
84
|
-
targets: ["react"]
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
key: "integration.syncRun.viewList",
|
|
88
|
-
version: "1.0.0",
|
|
89
|
-
targets: ["react", "markdown"]
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
key: "integration.syncRun.detail",
|
|
93
|
-
version: "1.0.0",
|
|
94
|
-
targets: ["react", "markdown"]
|
|
95
|
-
}
|
|
96
|
-
],
|
|
97
|
-
capabilities: {
|
|
98
|
-
requires: [
|
|
99
|
-
{ key: "identity", version: "1.0.0" },
|
|
100
|
-
{ key: "audit-trail", version: "1.0.0" },
|
|
101
|
-
{ key: "feature-flags", version: "1.0.0" },
|
|
102
|
-
{ key: "jobs", version: "1.0.0" },
|
|
103
|
-
{ key: "files", version: "1.0.0" }
|
|
104
|
-
],
|
|
105
|
-
provides: [
|
|
106
|
-
{ key: "integration", version: "1.0.0" },
|
|
107
|
-
{ key: "sync", version: "1.0.0" },
|
|
108
|
-
{ key: "etl", version: "1.0.0" }
|
|
109
|
-
]
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
export {
|
|
113
|
-
IntegrationHubFeature
|
|
114
|
-
};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// src/seeders/index.ts
|
|
2
|
-
async function seedIntegrationHub(params) {
|
|
3
|
-
const { projectId, db } = params;
|
|
4
|
-
const existing = await db.query(`SELECT COUNT(*) as count FROM integration WHERE "projectId" = $1`, [projectId]);
|
|
5
|
-
if (existing.rows[0]?.count > 0)
|
|
6
|
-
return;
|
|
7
|
-
await db.execute(`INSERT INTO integration (id, "projectId", "organizationId", name, description, type, status)
|
|
8
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
|
|
9
|
-
"int_1",
|
|
10
|
-
projectId,
|
|
11
|
-
"org_demo",
|
|
12
|
-
"Salesforce",
|
|
13
|
-
"Salesforce CRM integration",
|
|
14
|
-
"CRM",
|
|
15
|
-
"ACTIVE"
|
|
16
|
-
]);
|
|
17
|
-
await db.execute(`INSERT INTO integration (id, "projectId", "organizationId", name, description, type, status)
|
|
18
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
|
|
19
|
-
"int_2",
|
|
20
|
-
projectId,
|
|
21
|
-
"org_demo",
|
|
22
|
-
"Meeting Recorder",
|
|
23
|
-
"Meeting recorder transcripts and metadata",
|
|
24
|
-
"DATA",
|
|
25
|
-
"ACTIVE"
|
|
26
|
-
]);
|
|
27
|
-
await db.execute(`INSERT INTO integration (id, "projectId", "organizationId", name, description, type, status)
|
|
28
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
|
|
29
|
-
"int_3",
|
|
30
|
-
projectId,
|
|
31
|
-
"org_demo",
|
|
32
|
-
"Gradium Voice",
|
|
33
|
-
"Gradium low-latency text-to-speech integration",
|
|
34
|
-
"COMMUNICATION",
|
|
35
|
-
"ACTIVE"
|
|
36
|
-
]);
|
|
37
|
-
await db.execute(`INSERT INTO integration (id, "projectId", "organizationId", name, description, type, status)
|
|
38
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
|
|
39
|
-
"int_4",
|
|
40
|
-
projectId,
|
|
41
|
-
"org_demo",
|
|
42
|
-
"Fal Chatterbox Voice",
|
|
43
|
-
"Fal Chatterbox text-to-speech integration",
|
|
44
|
-
"COMMUNICATION",
|
|
45
|
-
"ACTIVE"
|
|
46
|
-
]);
|
|
47
|
-
await db.execute(`INSERT INTO integration (id, "projectId", "organizationId", name, description, type, status)
|
|
48
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
|
|
49
|
-
"int_5",
|
|
50
|
-
projectId,
|
|
51
|
-
"org_demo",
|
|
52
|
-
"PostHog Analytics",
|
|
53
|
-
"Product analytics and event capture",
|
|
54
|
-
"ANALYTICS",
|
|
55
|
-
"ACTIVE"
|
|
56
|
-
]);
|
|
57
|
-
}
|
|
58
|
-
export {
|
|
59
|
-
seedIntegrationHub
|
|
60
|
-
};
|