@contractspec/example.integration-hub 3.8.9 → 3.8.10

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.
Files changed (89) hide show
  1. package/dist/connection/connection.enum.js +1 -29
  2. package/dist/connection/connection.operation.js +1 -124
  3. package/dist/connection/connection.presentation.js +1 -125
  4. package/dist/connection/connection.schema.js +1 -71
  5. package/dist/connection/index.js +1 -127
  6. package/dist/docs/index.js +5 -49
  7. package/dist/docs/integration-hub.docblock.js +5 -49
  8. package/dist/events.js +1 -211
  9. package/dist/example.js +1 -42
  10. package/dist/handlers/index.js +5 -292
  11. package/dist/handlers/integration.handlers.js +5 -292
  12. package/dist/index.js +8 -2355
  13. package/dist/integration/index.js +1 -92
  14. package/dist/integration/integration.enum.js +1 -12
  15. package/dist/integration/integration.operations.js +1 -89
  16. package/dist/integration/integration.presentation.js +1 -120
  17. package/dist/integration/integration.schema.js +1 -42
  18. package/dist/integration-hub.capability.js +1 -43
  19. package/dist/integration-hub.feature.js +1 -330
  20. package/dist/mcp-example.js +1 -154
  21. package/dist/node/connection/connection.enum.js +1 -29
  22. package/dist/node/connection/connection.operation.js +1 -124
  23. package/dist/node/connection/connection.presentation.js +1 -125
  24. package/dist/node/connection/connection.schema.js +1 -71
  25. package/dist/node/connection/index.js +1 -127
  26. package/dist/node/docs/index.js +5 -49
  27. package/dist/node/docs/integration-hub.docblock.js +5 -49
  28. package/dist/node/events.js +1 -211
  29. package/dist/node/example.js +1 -42
  30. package/dist/node/handlers/index.js +5 -292
  31. package/dist/node/handlers/integration.handlers.js +5 -292
  32. package/dist/node/index.js +8 -2355
  33. package/dist/node/integration/index.js +1 -92
  34. package/dist/node/integration/integration.enum.js +1 -12
  35. package/dist/node/integration/integration.operations.js +1 -89
  36. package/dist/node/integration/integration.presentation.js +1 -120
  37. package/dist/node/integration/integration.schema.js +1 -42
  38. package/dist/node/integration-hub.capability.js +1 -43
  39. package/dist/node/integration-hub.feature.js +1 -330
  40. package/dist/node/mcp-example.js +1 -154
  41. package/dist/node/run-mcp.js +1 -159
  42. package/dist/node/seeders/index.js +6 -60
  43. package/dist/node/sync/index.js +1 -332
  44. package/dist/node/sync/sync.enum.js +1 -26
  45. package/dist/node/sync/sync.operations.js +1 -321
  46. package/dist/node/sync/sync.presentation.js +1 -301
  47. package/dist/node/sync/sync.schema.js +1 -154
  48. package/dist/node/sync-engine/index.js +1 -186
  49. package/dist/node/tests/operations.test-spec.js +1 -85
  50. package/dist/node/ui/IntegrationDashboard.js +1 -886
  51. package/dist/node/ui/IntegrationDashboard.visualizations.js +1 -250
  52. package/dist/node/ui/IntegrationHubChat.js +1 -34
  53. package/dist/node/ui/hooks/index.js +1 -57
  54. package/dist/node/ui/hooks/useIntegrationData.js +1 -54
  55. package/dist/node/ui/index.js +4 -1173
  56. package/dist/node/ui/renderers/index.js +4 -484
  57. package/dist/node/ui/renderers/integration.markdown.js +4 -484
  58. package/dist/node/ui/tables/ConnectionsTable.js +1 -211
  59. package/dist/node/ui/tables/IntegrationTables.js +1 -361
  60. package/dist/node/ui/tables/SyncConfigsTable.js +1 -230
  61. package/dist/node/ui/tables/integration-table.shared.js +1 -84
  62. package/dist/node/visualizations/catalog.js +1 -137
  63. package/dist/node/visualizations/index.js +1 -211
  64. package/dist/node/visualizations/selectors.js +1 -204
  65. package/dist/run-mcp.js +1 -159
  66. package/dist/seeders/index.js +6 -60
  67. package/dist/sync/index.js +1 -332
  68. package/dist/sync/sync.enum.js +1 -26
  69. package/dist/sync/sync.operations.js +1 -321
  70. package/dist/sync/sync.presentation.js +1 -301
  71. package/dist/sync/sync.schema.js +1 -154
  72. package/dist/sync-engine/index.js +1 -186
  73. package/dist/tests/operations.test-spec.js +1 -85
  74. package/dist/ui/IntegrationDashboard.js +1 -886
  75. package/dist/ui/IntegrationDashboard.visualizations.js +1 -250
  76. package/dist/ui/IntegrationHubChat.js +1 -34
  77. package/dist/ui/hooks/index.js +1 -57
  78. package/dist/ui/hooks/useIntegrationData.js +1 -54
  79. package/dist/ui/index.js +4 -1173
  80. package/dist/ui/renderers/index.js +4 -484
  81. package/dist/ui/renderers/integration.markdown.js +4 -484
  82. package/dist/ui/tables/ConnectionsTable.js +1 -211
  83. package/dist/ui/tables/IntegrationTables.js +1 -361
  84. package/dist/ui/tables/SyncConfigsTable.js +1 -230
  85. package/dist/ui/tables/integration-table.shared.js +1 -84
  86. package/dist/visualizations/catalog.js +1 -137
  87. package/dist/visualizations/index.js +1 -211
  88. package/dist/visualizations/selectors.js +1 -204
  89. package/package.json +11 -11
@@ -1,333 +1,2 @@
1
1
  // @bun
2
- // src/sync/sync.enum.ts
3
- import { defineEnum } from "@contractspec/lib.schema";
4
- var SyncDirectionEnum = defineEnum("SyncDirection", [
5
- "INBOUND",
6
- "OUTBOUND",
7
- "BIDIRECTIONAL"
8
- ]);
9
- var SyncStatusEnum = defineEnum("SyncStatus", [
10
- "PENDING",
11
- "RUNNING",
12
- "COMPLETED",
13
- "FAILED",
14
- "CANCELLED"
15
- ]);
16
- var MappingTypeEnum = defineEnum("MappingType", [
17
- "DIRECT",
18
- "TRANSFORM",
19
- "LOOKUP",
20
- "CONSTANT",
21
- "COMPUTED"
22
- ]);
23
-
24
- // src/sync/sync.schema.ts
25
- import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
26
- var FieldMappingModel = defineSchemaModel({
27
- name: "FieldMappingModel",
28
- fields: {
29
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
30
- sourceField: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
31
- targetField: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
32
- mappingType: { type: MappingTypeEnum, isOptional: false },
33
- transformExpression: {
34
- type: ScalarTypeEnum.String_unsecure(),
35
- isOptional: true
36
- },
37
- isRequired: { type: ScalarTypeEnum.Boolean(), isOptional: false }
38
- }
39
- });
40
- var SyncConfigModel = defineSchemaModel({
41
- name: "SyncConfigModel",
42
- fields: {
43
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
44
- integrationId: {
45
- type: ScalarTypeEnum.String_unsecure(),
46
- isOptional: false
47
- },
48
- connectionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
49
- name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
50
- direction: { type: SyncDirectionEnum, isOptional: false },
51
- sourceObject: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
52
- targetObject: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
53
- scheduleEnabled: { type: ScalarTypeEnum.Boolean(), isOptional: false },
54
- scheduleCron: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
55
- isActive: { type: ScalarTypeEnum.Boolean(), isOptional: false },
56
- lastSyncAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
57
- fieldMappings: { type: FieldMappingModel, isArray: true, isOptional: true }
58
- }
59
- });
60
- var SyncRunModel = defineSchemaModel({
61
- name: "SyncRunModel",
62
- fields: {
63
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
64
- syncConfigId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
65
- status: { type: SyncStatusEnum, isOptional: false },
66
- direction: { type: SyncDirectionEnum, isOptional: false },
67
- trigger: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
68
- recordsProcessed: {
69
- type: ScalarTypeEnum.Int_unsecure(),
70
- isOptional: false
71
- },
72
- recordsCreated: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
73
- recordsUpdated: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
74
- recordsFailed: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
75
- errorMessage: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
76
- startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
77
- completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
78
- createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
79
- }
80
- });
81
- var CreateSyncConfigInputModel = defineSchemaModel({
82
- name: "CreateSyncConfigInput",
83
- fields: {
84
- integrationId: {
85
- type: ScalarTypeEnum.String_unsecure(),
86
- isOptional: false
87
- },
88
- connectionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
89
- name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
90
- direction: { type: SyncDirectionEnum, isOptional: false },
91
- sourceObject: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
92
- targetObject: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
93
- scheduleEnabled: { type: ScalarTypeEnum.Boolean(), isOptional: true },
94
- scheduleCron: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
95
- }
96
- });
97
- var AddFieldMappingInputModel = defineSchemaModel({
98
- name: "AddFieldMappingInput",
99
- fields: {
100
- syncConfigId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
101
- sourceField: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
102
- targetField: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
103
- mappingType: { type: MappingTypeEnum, isOptional: false },
104
- transformExpression: {
105
- type: ScalarTypeEnum.String_unsecure(),
106
- isOptional: true
107
- },
108
- lookupConfig: { type: ScalarTypeEnum.JSON(), isOptional: true },
109
- constantValue: { type: ScalarTypeEnum.JSON(), isOptional: true },
110
- isRequired: { type: ScalarTypeEnum.Boolean(), isOptional: true },
111
- defaultValue: { type: ScalarTypeEnum.JSON(), isOptional: true }
112
- }
113
- });
114
- var TriggerSyncInputModel = defineSchemaModel({
115
- name: "TriggerSyncInput",
116
- fields: {
117
- syncConfigId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
118
- direction: { type: SyncDirectionEnum, isOptional: true },
119
- fullSync: { type: ScalarTypeEnum.Boolean(), isOptional: true }
120
- }
121
- });
122
- var ListSyncRunsInputModel = defineSchemaModel({
123
- name: "ListSyncRunsInput",
124
- fields: {
125
- syncConfigId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
126
- status: { type: SyncStatusEnum, isOptional: true },
127
- limit: {
128
- type: ScalarTypeEnum.Int_unsecure(),
129
- isOptional: true,
130
- defaultValue: 20
131
- },
132
- offset: {
133
- type: ScalarTypeEnum.Int_unsecure(),
134
- isOptional: true,
135
- defaultValue: 0
136
- }
137
- }
138
- });
139
- var ListSyncRunsOutputModel = defineSchemaModel({
140
- name: "ListSyncRunsOutput",
141
- fields: {
142
- runs: { type: SyncRunModel, isArray: true, isOptional: false },
143
- total: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false }
144
- }
145
- });
146
-
147
- // src/sync/sync.operations.ts
148
- import {
149
- defineCommand,
150
- defineQuery
151
- } from "@contractspec/lib.contracts-spec/operations";
152
- var OWNERS = ["@example.integration-hub"];
153
- var CreateSyncConfigContract = defineCommand({
154
- meta: {
155
- key: "integration.syncConfig.create",
156
- version: "1.0.0",
157
- stability: "stable",
158
- owners: [...OWNERS],
159
- tags: ["integration", "sync", "config", "create"],
160
- description: "Create a sync configuration.",
161
- goal: "Define how data should be synchronized.",
162
- context: "Sync setup."
163
- },
164
- io: { input: CreateSyncConfigInputModel, output: SyncConfigModel },
165
- policy: { auth: "user" },
166
- sideEffects: {
167
- emits: [
168
- {
169
- key: "integration.syncConfig.created",
170
- version: "1.0.0",
171
- when: "Sync config created",
172
- payload: SyncConfigModel
173
- }
174
- ],
175
- audit: ["integration.syncConfig.created"]
176
- },
177
- acceptance: {
178
- scenarios: [
179
- {
180
- key: "create-sync-happy-path",
181
- given: ["User is authenticated"],
182
- when: ["User creates sync config"],
183
- then: ["Sync config is created", "SyncConfigCreated event is emitted"]
184
- }
185
- ],
186
- examples: [
187
- {
188
- key: "create-contact-sync",
189
- input: {
190
- name: "Contacts Sync",
191
- sourceConnectionId: "conn-1",
192
- targetConnectionId: "conn-2"
193
- },
194
- output: { id: "sync-123", status: "active" }
195
- }
196
- ]
197
- }
198
- });
199
- var AddFieldMappingContract = defineCommand({
200
- meta: {
201
- key: "integration.fieldMapping.add",
202
- version: "1.0.0",
203
- stability: "stable",
204
- owners: [...OWNERS],
205
- tags: ["integration", "mapping", "field"],
206
- description: "Add a field mapping to a sync config.",
207
- goal: "Map fields between systems.",
208
- context: "Mapping configuration."
209
- },
210
- io: { input: AddFieldMappingInputModel, output: FieldMappingModel },
211
- policy: { auth: "user" },
212
- sideEffects: {
213
- emits: [
214
- {
215
- key: "integration.fieldMapping.added",
216
- version: "1.0.0",
217
- when: "Mapping added",
218
- payload: FieldMappingModel
219
- }
220
- ]
221
- },
222
- acceptance: {
223
- scenarios: [
224
- {
225
- key: "add-mapping-happy-path",
226
- given: ["Sync config exists"],
227
- when: ["User adds field mapping"],
228
- then: ["Mapping is added", "FieldMappingAdded event is emitted"]
229
- }
230
- ],
231
- examples: [
232
- {
233
- key: "map-email",
234
- input: {
235
- syncConfigId: "sync-123",
236
- sourceField: "email",
237
- targetField: "user_email"
238
- },
239
- output: { id: "map-456", type: "string" }
240
- }
241
- ]
242
- }
243
- });
244
- var TriggerSyncContract = defineCommand({
245
- meta: {
246
- key: "integration.sync.trigger",
247
- version: "1.0.0",
248
- stability: "stable",
249
- owners: [...OWNERS],
250
- tags: ["integration", "sync", "trigger"],
251
- description: "Trigger a manual sync.",
252
- goal: "Start data synchronization.",
253
- context: "Manual sync or webhook trigger."
254
- },
255
- io: { input: TriggerSyncInputModel, output: SyncRunModel },
256
- policy: { auth: "user" },
257
- sideEffects: {
258
- emits: [
259
- {
260
- key: "integration.sync.started",
261
- version: "1.0.0",
262
- when: "Sync starts",
263
- payload: SyncRunModel
264
- }
265
- ],
266
- audit: ["integration.sync.triggered"]
267
- },
268
- acceptance: {
269
- scenarios: [
270
- {
271
- key: "trigger-sync-happy-path",
272
- given: ["Sync config exists"],
273
- when: ["User triggers sync"],
274
- then: ["Sync run starts", "SyncStarted event is emitted"]
275
- }
276
- ],
277
- examples: [
278
- {
279
- key: "manual-trigger",
280
- input: { syncConfigId: "sync-123" },
281
- output: { id: "run-789", status: "pending" }
282
- }
283
- ]
284
- }
285
- });
286
- var ListSyncRunsContract = defineQuery({
287
- meta: {
288
- key: "integration.syncRun.list",
289
- version: "1.0.0",
290
- stability: "stable",
291
- owners: [...OWNERS],
292
- tags: ["integration", "sync", "run", "list"],
293
- description: "List sync run history.",
294
- goal: "View sync history and status.",
295
- context: "Sync monitoring."
296
- },
297
- io: { input: ListSyncRunsInputModel, output: ListSyncRunsOutputModel },
298
- policy: { auth: "user" },
299
- acceptance: {
300
- scenarios: [
301
- {
302
- key: "list-runs-happy-path",
303
- given: ["User has access to syncs"],
304
- when: ["User lists sync runs"],
305
- then: ["List of runs is returned"]
306
- }
307
- ],
308
- examples: [
309
- {
310
- key: "list-recent",
311
- input: { limit: 10 },
312
- output: { items: [], total: 50 }
313
- }
314
- ]
315
- }
316
- });
317
- export {
318
- TriggerSyncInputModel,
319
- TriggerSyncContract,
320
- SyncStatusEnum,
321
- SyncRunModel,
322
- SyncDirectionEnum,
323
- SyncConfigModel,
324
- MappingTypeEnum,
325
- ListSyncRunsOutputModel,
326
- ListSyncRunsInputModel,
327
- ListSyncRunsContract,
328
- FieldMappingModel,
329
- CreateSyncConfigInputModel,
330
- CreateSyncConfigContract,
331
- AddFieldMappingInputModel,
332
- AddFieldMappingContract
333
- };
2
+ import{defineEnum as O}from"@contractspec/lib.schema";var N=O("SyncDirection",["INBOUND","OUTBOUND","BIDIRECTIONAL"]),x=O("SyncStatus",["PENDING","RUNNING","COMPLETED","FAILED","CANCELLED"]),L=O("MappingType",["DIRECT","TRANSFORM","LOOKUP","CONSTANT","COMPUTED"]);import{defineSchemaModel as C,ScalarTypeEnum as t}from"@contractspec/lib.schema";var D=C({name:"FieldMappingModel",fields:{id:{type:t.String_unsecure(),isOptional:!1},sourceField:{type:t.String_unsecure(),isOptional:!1},targetField:{type:t.String_unsecure(),isOptional:!1},mappingType:{type:L,isOptional:!1},transformExpression:{type:t.String_unsecure(),isOptional:!0},isRequired:{type:t.Boolean(),isOptional:!1}}}),A=C({name:"SyncConfigModel",fields:{id:{type:t.String_unsecure(),isOptional:!1},integrationId:{type:t.String_unsecure(),isOptional:!1},connectionId:{type:t.String_unsecure(),isOptional:!1},name:{type:t.String_unsecure(),isOptional:!1},direction:{type:N,isOptional:!1},sourceObject:{type:t.String_unsecure(),isOptional:!1},targetObject:{type:t.String_unsecure(),isOptional:!1},scheduleEnabled:{type:t.Boolean(),isOptional:!1},scheduleCron:{type:t.String_unsecure(),isOptional:!0},isActive:{type:t.Boolean(),isOptional:!1},lastSyncAt:{type:t.DateTime(),isOptional:!0},fieldMappings:{type:D,isArray:!0,isOptional:!0}}}),I=C({name:"SyncRunModel",fields:{id:{type:t.String_unsecure(),isOptional:!1},syncConfigId:{type:t.String_unsecure(),isOptional:!1},status:{type:x,isOptional:!1},direction:{type:N,isOptional:!1},trigger:{type:t.String_unsecure(),isOptional:!1},recordsProcessed:{type:t.Int_unsecure(),isOptional:!1},recordsCreated:{type:t.Int_unsecure(),isOptional:!1},recordsUpdated:{type:t.Int_unsecure(),isOptional:!1},recordsFailed:{type:t.Int_unsecure(),isOptional:!1},errorMessage:{type:t.String_unsecure(),isOptional:!0},startedAt:{type:t.DateTime(),isOptional:!0},completedAt:{type:t.DateTime(),isOptional:!0},createdAt:{type:t.DateTime(),isOptional:!1}}}),P=C({name:"CreateSyncConfigInput",fields:{integrationId:{type:t.String_unsecure(),isOptional:!1},connectionId:{type:t.String_unsecure(),isOptional:!1},name:{type:t.NonEmptyString(),isOptional:!1},direction:{type:N,isOptional:!1},sourceObject:{type:t.NonEmptyString(),isOptional:!1},targetObject:{type:t.NonEmptyString(),isOptional:!1},scheduleEnabled:{type:t.Boolean(),isOptional:!0},scheduleCron:{type:t.String_unsecure(),isOptional:!0}}}),B=C({name:"AddFieldMappingInput",fields:{syncConfigId:{type:t.String_unsecure(),isOptional:!1},sourceField:{type:t.NonEmptyString(),isOptional:!1},targetField:{type:t.NonEmptyString(),isOptional:!1},mappingType:{type:L,isOptional:!1},transformExpression:{type:t.String_unsecure(),isOptional:!0},lookupConfig:{type:t.JSON(),isOptional:!0},constantValue:{type:t.JSON(),isOptional:!0},isRequired:{type:t.Boolean(),isOptional:!0},defaultValue:{type:t.JSON(),isOptional:!0}}}),g=C({name:"TriggerSyncInput",fields:{syncConfigId:{type:t.String_unsecure(),isOptional:!1},direction:{type:N,isOptional:!0},fullSync:{type:t.Boolean(),isOptional:!0}}}),G=C({name:"ListSyncRunsInput",fields:{syncConfigId:{type:t.String_unsecure(),isOptional:!1},status:{type:x,isOptional:!0},limit:{type:t.Int_unsecure(),isOptional:!0,defaultValue:20},offset:{type:t.Int_unsecure(),isOptional:!0,defaultValue:0}}}),F=C({name:"ListSyncRunsOutput",fields:{runs:{type:I,isArray:!0,isOptional:!1},total:{type:t.Int_unsecure(),isOptional:!1}}});import{defineCommand as K,defineQuery as j}from"@contractspec/lib.contracts-spec/operations";var U=["@example.integration-hub"],k=K({meta:{key:"integration.syncConfig.create",version:"1.0.0",stability:"stable",owners:[...U],tags:["integration","sync","config","create"],description:"Create a sync configuration.",goal:"Define how data should be synchronized.",context:"Sync setup."},io:{input:P,output:A},policy:{auth:"user"},sideEffects:{emits:[{key:"integration.syncConfig.created",version:"1.0.0",when:"Sync config created",payload:A}],audit:["integration.syncConfig.created"]},acceptance:{scenarios:[{key:"create-sync-happy-path",given:["User is authenticated"],when:["User creates sync config"],then:["Sync config is created","SyncConfigCreated event is emitted"]}],examples:[{key:"create-contact-sync",input:{name:"Contacts Sync",sourceConnectionId:"conn-1",targetConnectionId:"conn-2"},output:{id:"sync-123",status:"active"}}]}}),q=K({meta:{key:"integration.fieldMapping.add",version:"1.0.0",stability:"stable",owners:[...U],tags:["integration","mapping","field"],description:"Add a field mapping to a sync config.",goal:"Map fields between systems.",context:"Mapping configuration."},io:{input:B,output:D},policy:{auth:"user"},sideEffects:{emits:[{key:"integration.fieldMapping.added",version:"1.0.0",when:"Mapping added",payload:D}]},acceptance:{scenarios:[{key:"add-mapping-happy-path",given:["Sync config exists"],when:["User adds field mapping"],then:["Mapping is added","FieldMappingAdded event is emitted"]}],examples:[{key:"map-email",input:{syncConfigId:"sync-123",sourceField:"email",targetField:"user_email"},output:{id:"map-456",type:"string"}}]}}),v=K({meta:{key:"integration.sync.trigger",version:"1.0.0",stability:"stable",owners:[...U],tags:["integration","sync","trigger"],description:"Trigger a manual sync.",goal:"Start data synchronization.",context:"Manual sync or webhook trigger."},io:{input:g,output:I},policy:{auth:"user"},sideEffects:{emits:[{key:"integration.sync.started",version:"1.0.0",when:"Sync starts",payload:I}],audit:["integration.sync.triggered"]},acceptance:{scenarios:[{key:"trigger-sync-happy-path",given:["Sync config exists"],when:["User triggers sync"],then:["Sync run starts","SyncStarted event is emitted"]}],examples:[{key:"manual-trigger",input:{syncConfigId:"sync-123"},output:{id:"run-789",status:"pending"}}]}}),w=j({meta:{key:"integration.syncRun.list",version:"1.0.0",stability:"stable",owners:[...U],tags:["integration","sync","run","list"],description:"List sync run history.",goal:"View sync history and status.",context:"Sync monitoring."},io:{input:G,output:F},policy:{auth:"user"},acceptance:{scenarios:[{key:"list-runs-happy-path",given:["User has access to syncs"],when:["User lists sync runs"],then:["List of runs is returned"]}],examples:[{key:"list-recent",input:{limit:10},output:{items:[],total:50}}]}});export{g as TriggerSyncInputModel,v as TriggerSyncContract,x as SyncStatusEnum,I as SyncRunModel,N as SyncDirectionEnum,A as SyncConfigModel,L as MappingTypeEnum,F as ListSyncRunsOutputModel,G as ListSyncRunsInputModel,w as ListSyncRunsContract,D as FieldMappingModel,P as CreateSyncConfigInputModel,k as CreateSyncConfigContract,B as AddFieldMappingInputModel,q as AddFieldMappingContract};
@@ -1,27 +1,2 @@
1
1
  // @bun
2
- // src/sync/sync.enum.ts
3
- import { defineEnum } from "@contractspec/lib.schema";
4
- var SyncDirectionEnum = defineEnum("SyncDirection", [
5
- "INBOUND",
6
- "OUTBOUND",
7
- "BIDIRECTIONAL"
8
- ]);
9
- var SyncStatusEnum = defineEnum("SyncStatus", [
10
- "PENDING",
11
- "RUNNING",
12
- "COMPLETED",
13
- "FAILED",
14
- "CANCELLED"
15
- ]);
16
- var MappingTypeEnum = defineEnum("MappingType", [
17
- "DIRECT",
18
- "TRANSFORM",
19
- "LOOKUP",
20
- "CONSTANT",
21
- "COMPUTED"
22
- ]);
23
- export {
24
- SyncStatusEnum,
25
- SyncDirectionEnum,
26
- MappingTypeEnum
27
- };
2
+ import{defineEnum as n}from"@contractspec/lib.schema";var E=n("SyncDirection",["INBOUND","OUTBOUND","BIDIRECTIONAL"]),N=n("SyncStatus",["PENDING","RUNNING","COMPLETED","FAILED","CANCELLED"]),D=n("MappingType",["DIRECT","TRANSFORM","LOOKUP","CONSTANT","COMPUTED"]);export{N as SyncStatusEnum,E as SyncDirectionEnum,D as MappingTypeEnum};