cxtms 1.9.13

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 (215) hide show
  1. package/README.md +384 -0
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +4784 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/extractUtils.d.ts +11 -0
  7. package/dist/extractUtils.d.ts.map +1 -0
  8. package/dist/extractUtils.js +19 -0
  9. package/dist/extractUtils.js.map +1 -0
  10. package/dist/index.d.ts +7 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +11 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/types.d.ts +129 -0
  15. package/dist/types.d.ts.map +1 -0
  16. package/dist/types.js +6 -0
  17. package/dist/types.js.map +1 -0
  18. package/dist/utils/schemaLoader.d.ts +17 -0
  19. package/dist/utils/schemaLoader.d.ts.map +1 -0
  20. package/dist/utils/schemaLoader.js +134 -0
  21. package/dist/utils/schemaLoader.js.map +1 -0
  22. package/dist/validator.d.ts +72 -0
  23. package/dist/validator.d.ts.map +1 -0
  24. package/dist/validator.js +432 -0
  25. package/dist/validator.js.map +1 -0
  26. package/dist/workflowValidator.d.ts +103 -0
  27. package/dist/workflowValidator.d.ts.map +1 -0
  28. package/dist/workflowValidator.js +753 -0
  29. package/dist/workflowValidator.js.map +1 -0
  30. package/package.json +51 -0
  31. package/schemas/actions/all.json +27 -0
  32. package/schemas/actions/clipboard.json +46 -0
  33. package/schemas/actions/confirm.json +21 -0
  34. package/schemas/actions/consoleLog.json +16 -0
  35. package/schemas/actions/dialog.json +25 -0
  36. package/schemas/actions/fileDownload.json +16 -0
  37. package/schemas/actions/forEach.json +31 -0
  38. package/schemas/actions/if.json +12 -0
  39. package/schemas/actions/mutation.json +25 -0
  40. package/schemas/actions/navigate.json +18 -0
  41. package/schemas/actions/navigateBack.json +22 -0
  42. package/schemas/actions/navigateBackOrClose.json +21 -0
  43. package/schemas/actions/notification.json +19 -0
  44. package/schemas/actions/openBarcodeScanner.json +104 -0
  45. package/schemas/actions/query.json +32 -0
  46. package/schemas/actions/refresh.json +13 -0
  47. package/schemas/actions/resetDirtyState.json +22 -0
  48. package/schemas/actions/setFields.json +21 -0
  49. package/schemas/actions/setStore.json +13 -0
  50. package/schemas/actions/validateForm.json +15 -0
  51. package/schemas/actions/workflow.json +24 -0
  52. package/schemas/components/README.md +147 -0
  53. package/schemas/components/appComponent.json +58 -0
  54. package/schemas/components/barcodeScanner.json +69 -0
  55. package/schemas/components/button.json +123 -0
  56. package/schemas/components/calendar.json +489 -0
  57. package/schemas/components/card.json +176 -0
  58. package/schemas/components/collection.json +54 -0
  59. package/schemas/components/dataGrid.json +119 -0
  60. package/schemas/components/datasource.json +151 -0
  61. package/schemas/components/dropdown.json +57 -0
  62. package/schemas/components/field-collection.json +618 -0
  63. package/schemas/components/field.json +265 -0
  64. package/schemas/components/form.json +234 -0
  65. package/schemas/components/index.json +71 -0
  66. package/schemas/components/layout.json +69 -0
  67. package/schemas/components/module.json +167 -0
  68. package/schemas/components/navDropdown.json +36 -0
  69. package/schemas/components/navbar.json +78 -0
  70. package/schemas/components/navbarItem.json +28 -0
  71. package/schemas/components/navbarLink.json +36 -0
  72. package/schemas/components/row.json +31 -0
  73. package/schemas/components/slot.json +30 -0
  74. package/schemas/components/tab.json +34 -0
  75. package/schemas/components/tabs.json +35 -0
  76. package/schemas/components/timeline.json +172 -0
  77. package/schemas/components/timelineGrid.json +328 -0
  78. package/schemas/fields/README.md +66 -0
  79. package/schemas/fields/attachment.json +156 -0
  80. package/schemas/fields/autocomplete-googleplaces.json +130 -0
  81. package/schemas/fields/checkbox.json +82 -0
  82. package/schemas/fields/date.json +88 -0
  83. package/schemas/fields/datetime.json +75 -0
  84. package/schemas/fields/email.json +75 -0
  85. package/schemas/fields/index.json +53 -0
  86. package/schemas/fields/number.json +91 -0
  87. package/schemas/fields/password.json +70 -0
  88. package/schemas/fields/radio.json +94 -0
  89. package/schemas/fields/rangedatetime.json +56 -0
  90. package/schemas/fields/select-async.json +334 -0
  91. package/schemas/fields/select.json +115 -0
  92. package/schemas/fields/tel.json +79 -0
  93. package/schemas/fields/text.json +86 -0
  94. package/schemas/fields/textarea.json +95 -0
  95. package/schemas/fields/time.json +91 -0
  96. package/schemas/fields/url.json +74 -0
  97. package/schemas/schema.graphql +12248 -0
  98. package/schemas/schemas.json +610 -0
  99. package/schemas/workflows/activity.json +96 -0
  100. package/schemas/workflows/common/condition.json +48 -0
  101. package/schemas/workflows/common/expression.json +76 -0
  102. package/schemas/workflows/common/mapping.json +173 -0
  103. package/schemas/workflows/common/step.json +38 -0
  104. package/schemas/workflows/flow/aggregation.json +44 -0
  105. package/schemas/workflows/flow/entity.json +129 -0
  106. package/schemas/workflows/flow/state.json +105 -0
  107. package/schemas/workflows/flow/transition.json +143 -0
  108. package/schemas/workflows/input.json +122 -0
  109. package/schemas/workflows/output.json +61 -0
  110. package/schemas/workflows/schedule.json +26 -0
  111. package/schemas/workflows/tasks/accounting-transaction.json +95 -0
  112. package/schemas/workflows/tasks/action-event.json +65 -0
  113. package/schemas/workflows/tasks/all.json +152 -0
  114. package/schemas/workflows/tasks/appmodule.json +56 -0
  115. package/schemas/workflows/tasks/attachment.json +97 -0
  116. package/schemas/workflows/tasks/authentication.json +86 -0
  117. package/schemas/workflows/tasks/caching.json +68 -0
  118. package/schemas/workflows/tasks/charge.json +92 -0
  119. package/schemas/workflows/tasks/commodity.json +92 -0
  120. package/schemas/workflows/tasks/contact-address.json +72 -0
  121. package/schemas/workflows/tasks/contact-payment-method.json +72 -0
  122. package/schemas/workflows/tasks/contact.json +82 -0
  123. package/schemas/workflows/tasks/csv.json +81 -0
  124. package/schemas/workflows/tasks/document-render.json +105 -0
  125. package/schemas/workflows/tasks/document-send.json +84 -0
  126. package/schemas/workflows/tasks/edi.json +157 -0
  127. package/schemas/workflows/tasks/email-send.json +110 -0
  128. package/schemas/workflows/tasks/error.json +72 -0
  129. package/schemas/workflows/tasks/export.json +90 -0
  130. package/schemas/workflows/tasks/filetransfer.json +102 -0
  131. package/schemas/workflows/tasks/flow-transition.json +68 -0
  132. package/schemas/workflows/tasks/foreach.json +69 -0
  133. package/schemas/workflows/tasks/generic.json +47 -0
  134. package/schemas/workflows/tasks/graphql.json +78 -0
  135. package/schemas/workflows/tasks/httpRequest.json +161 -0
  136. package/schemas/workflows/tasks/import.json +64 -0
  137. package/schemas/workflows/tasks/inventory.json +67 -0
  138. package/schemas/workflows/tasks/job.json +88 -0
  139. package/schemas/workflows/tasks/log.json +73 -0
  140. package/schemas/workflows/tasks/map.json +58 -0
  141. package/schemas/workflows/tasks/movement.json +54 -0
  142. package/schemas/workflows/tasks/note.json +59 -0
  143. package/schemas/workflows/tasks/number.json +65 -0
  144. package/schemas/workflows/tasks/order-tracking-event.json +109 -0
  145. package/schemas/workflows/tasks/order.json +139 -0
  146. package/schemas/workflows/tasks/payment.json +85 -0
  147. package/schemas/workflows/tasks/pdf-document.json +60 -0
  148. package/schemas/workflows/tasks/postal-codes.json +92 -0
  149. package/schemas/workflows/tasks/resolve-timezone.json +65 -0
  150. package/schemas/workflows/tasks/setVariable.json +76 -0
  151. package/schemas/workflows/tasks/switch.json +75 -0
  152. package/schemas/workflows/tasks/template.json +73 -0
  153. package/schemas/workflows/tasks/tracking-event.json +137 -0
  154. package/schemas/workflows/tasks/transmission.json +185 -0
  155. package/schemas/workflows/tasks/unzip-file.json +68 -0
  156. package/schemas/workflows/tasks/user.json +70 -0
  157. package/schemas/workflows/tasks/validation.json +99 -0
  158. package/schemas/workflows/tasks/while.json +53 -0
  159. package/schemas/workflows/tasks/workflow-execute.json +82 -0
  160. package/schemas/workflows/trigger.json +90 -0
  161. package/schemas/workflows/variable.json +46 -0
  162. package/schemas/workflows/workflow.json +335 -0
  163. package/scripts/postinstall.js +291 -0
  164. package/scripts/setup-vscode.js +80 -0
  165. package/skills/cxtms-developer/SKILL.md +118 -0
  166. package/skills/cxtms-developer/ref-cli-auth.md +120 -0
  167. package/skills/cxtms-developer/ref-entity-accounting.md +180 -0
  168. package/skills/cxtms-developer/ref-entity-commodity.md +239 -0
  169. package/skills/cxtms-developer/ref-entity-contact.md +163 -0
  170. package/skills/cxtms-developer/ref-entity-geography.md +154 -0
  171. package/skills/cxtms-developer/ref-entity-job.md +77 -0
  172. package/skills/cxtms-developer/ref-entity-notification.md +85 -0
  173. package/skills/cxtms-developer/ref-entity-order-sub.md +160 -0
  174. package/skills/cxtms-developer/ref-entity-order.md +183 -0
  175. package/skills/cxtms-developer/ref-entity-organization.md +41 -0
  176. package/skills/cxtms-developer/ref-entity-rate.md +182 -0
  177. package/skills/cxtms-developer/ref-entity-shared.md +176 -0
  178. package/skills/cxtms-developer/ref-entity-warehouse.md +115 -0
  179. package/skills/cxtms-developer/ref-graphql-query.md +309 -0
  180. package/skills/cxtms-module-builder/SKILL.md +477 -0
  181. package/skills/cxtms-module-builder/ref-components-data.md +293 -0
  182. package/skills/cxtms-module-builder/ref-components-display.md +411 -0
  183. package/skills/cxtms-module-builder/ref-components-forms.md +369 -0
  184. package/skills/cxtms-module-builder/ref-components-interactive.md +317 -0
  185. package/skills/cxtms-module-builder/ref-components-layout.md +390 -0
  186. package/skills/cxtms-module-builder/ref-components-specialized.md +477 -0
  187. package/skills/cxtms-workflow-builder/SKILL.md +438 -0
  188. package/skills/cxtms-workflow-builder/ref-accounting.md +66 -0
  189. package/skills/cxtms-workflow-builder/ref-communication.md +169 -0
  190. package/skills/cxtms-workflow-builder/ref-entity.md +342 -0
  191. package/skills/cxtms-workflow-builder/ref-expressions-ncalc.md +128 -0
  192. package/skills/cxtms-workflow-builder/ref-expressions-template.md +161 -0
  193. package/skills/cxtms-workflow-builder/ref-filetransfer.md +80 -0
  194. package/skills/cxtms-workflow-builder/ref-flow.md +210 -0
  195. package/skills/cxtms-workflow-builder/ref-other.md +157 -0
  196. package/skills/cxtms-workflow-builder/ref-query.md +105 -0
  197. package/skills/cxtms-workflow-builder/ref-utilities.md +417 -0
  198. package/templates/module-configuration.yaml +44 -0
  199. package/templates/module-form.yaml +152 -0
  200. package/templates/module-grid.yaml +229 -0
  201. package/templates/module-select.yaml +139 -0
  202. package/templates/module.yaml +84 -0
  203. package/templates/workflow-api-tracking.yaml +189 -0
  204. package/templates/workflow-basic.yaml +76 -0
  205. package/templates/workflow-document.yaml +155 -0
  206. package/templates/workflow-entity-trigger.yaml +90 -0
  207. package/templates/workflow-ftp-edi.yaml +158 -0
  208. package/templates/workflow-ftp-tracking.yaml +161 -0
  209. package/templates/workflow-mcp-tool.yaml +112 -0
  210. package/templates/workflow-public-api.yaml +135 -0
  211. package/templates/workflow-scheduled-execute.yaml +75 -0
  212. package/templates/workflow-scheduled.yaml +125 -0
  213. package/templates/workflow-utility.yaml +96 -0
  214. package/templates/workflow-webhook.yaml +128 -0
  215. package/templates/workflow.yaml +140 -0
@@ -0,0 +1,610 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "CargoXplorer Module and Component Schemas",
4
+ "type": "object",
5
+ "definitions": {
6
+ "templateExpression": {
7
+ "type": "string",
8
+ "pattern": "\\{\\{.*\\}\\}",
9
+ "description": "Template expression that will be evaluated"
10
+ },
11
+
12
+ "permissions": {
13
+ "oneOf": [
14
+ {
15
+ "type": "string",
16
+ "description": "Single permission string"
17
+ },
18
+ {
19
+ "type": "array",
20
+ "description": "Array of permission strings",
21
+ "items": {
22
+ "type": "string"
23
+ }
24
+ }
25
+ ],
26
+ "description": "Permission(s) required to access this component"
27
+ },
28
+
29
+ "actionsList": {
30
+ "type": "array",
31
+ "description": "List of actions to execute",
32
+ "items": { "$ref": "actions/all.json" }
33
+ },
34
+
35
+ "localized": {
36
+ "type": "object",
37
+ "description": "Localized text object",
38
+ "patternProperties": {
39
+ "^[a-z]{2}-[A-Z]{2}$": {
40
+ "type": "string"
41
+ }
42
+ },
43
+ "additionalProperties": false
44
+ },
45
+
46
+ "component": {
47
+ "type": "object",
48
+ "description": "Generic component structure for CargoXplorer",
49
+ "properties": {
50
+ "component": {
51
+ "type": "string",
52
+ "description": "Component type identifier"
53
+ },
54
+ "name": {
55
+ "type": "string",
56
+ "description": "Component name identifier"
57
+ },
58
+ "props": {
59
+ "type": "object",
60
+ "description": "Component properties",
61
+ "additionalProperties": true
62
+ },
63
+ "children": {
64
+ "$ref": "#/definitions/componentChildren"
65
+ },
66
+ "isHidden": {
67
+ "$ref": "#/definitions/templateExpression",
68
+ "description": "Boolean expression for conditional rendering"
69
+ }
70
+ },
71
+ "required": ["component"],
72
+ "additionalProperties": false
73
+ },
74
+
75
+ "componentChildren": {
76
+ "type": "array",
77
+ "description": "Array of child components",
78
+ "items": {
79
+ "$ref": "#/definitions/component"
80
+ }
81
+ },
82
+
83
+ "dataGridView": {
84
+ "type": "object",
85
+ "properties": {
86
+ "name": {
87
+ "type": "string",
88
+ "description": "View identifier"
89
+ },
90
+ "displayName": {
91
+ "$ref": "#/definitions/localized"
92
+ },
93
+ "enableSelect": {
94
+ "type": "string",
95
+ "enum": ["Single", "Multiple", "None"],
96
+ "description": "Selection mode for grid rows"
97
+ },
98
+ "columns": {
99
+ "type": "array",
100
+ "description": "Column definitions",
101
+ "items": {
102
+ "type": "object",
103
+ "properties": {
104
+ "name": {
105
+ "type": "string",
106
+ "description": "Column field name"
107
+ },
108
+ "label": {
109
+ "$ref": "#/definitions/localized"
110
+ },
111
+ "showAs": {
112
+ "$ref": "#/definitions/component",
113
+ "description": "Custom component for column rendering"
114
+ },
115
+ "isHidden": {
116
+ "type": "boolean",
117
+ "description": "Whether column is hidden"
118
+ },
119
+ "enableEdit": {
120
+ "type": "boolean",
121
+ "description": "Enables inline cell editing for this column"
122
+ },
123
+ "editor": {
124
+ "$ref": "#/definitions/component",
125
+ "description": "Component rendered via ComponentRender when enableEdit is true. Uses same pattern as showAs."
126
+ },
127
+ "onEdit": {
128
+ "$ref": "#/definitions/actionsList",
129
+ "description": "Action array executed sequentially when the cell value changes. Receives changedValues and value variables."
130
+ }
131
+ }
132
+ }
133
+ },
134
+ "filter": {
135
+ "type": "string",
136
+ "description": "Filter expression for this view"
137
+ },
138
+ "childViews": {
139
+ "type": "array",
140
+ "description": "Nested child views",
141
+ "items": {
142
+ "$ref": "#/definitions/dataGridView"
143
+ }
144
+ },
145
+ "showHeader": {
146
+ "type": "boolean",
147
+ "description": "Whether to show header for child views"
148
+ }
149
+ },
150
+ "required": ["name"]
151
+ },
152
+
153
+ "dataGridOptions": {
154
+ "type": "object",
155
+ "properties": {
156
+ "query": {
157
+ "type": "string",
158
+ "description": "Query name for data fetching",
159
+ "x-example": "orders"
160
+ },
161
+ "rootEntityName": {
162
+ "type": "string",
163
+ "description": "Root entity name"
164
+ },
165
+ "entityKeys": {
166
+ "type": "array",
167
+ "description": "Entity key fields",
168
+ "items": {
169
+ "type": "string"
170
+ }
171
+ },
172
+ "navigationType": {
173
+ "type": "string",
174
+ "enum": ["navigate", "dialog", "store"],
175
+ "description": "Navigation behavior type"
176
+ },
177
+ "enableDynamicGrid": {
178
+ "type": "boolean",
179
+ "description": "Enable dynamic grid features"
180
+ },
181
+ "enableViews": {
182
+ "type": "boolean",
183
+ "description": "Enable view switching"
184
+ },
185
+ "enableSearch": {
186
+ "type": "boolean",
187
+ "description": "Enable search functionality"
188
+ },
189
+ "enablePagination": {
190
+ "type": "boolean",
191
+ "description": "Enable pagination"
192
+ },
193
+ "enableColumns": {
194
+ "type": "boolean",
195
+ "description": "Enable column management"
196
+ },
197
+ "enableFilter": {
198
+ "type": "boolean",
199
+ "description": "Enable filtering"
200
+ },
201
+ "defaultView": {
202
+ "type": "string",
203
+ "description": "Default view name"
204
+ },
205
+ "onRowClick": {
206
+ "oneOf": [
207
+ { "$ref": "#/definitions/actionsList" },
208
+ {
209
+ "type": "object",
210
+ "properties": {
211
+ "dialog": {
212
+ "type": "object",
213
+ "properties": {
214
+ "name": {
215
+ "type": "string"
216
+ },
217
+ "props": {
218
+ "type": "object",
219
+ "additionalProperties": true
220
+ },
221
+ "component": {
222
+ "$ref": "#/definitions/component"
223
+ },
224
+ "onClose": {
225
+ "$ref": "#/definitions/actionsList"
226
+ }
227
+ }
228
+ }
229
+ }
230
+ }
231
+ ]
232
+ }
233
+ },
234
+ "required": [
235
+ "query",
236
+ "rootEntityName",
237
+ "entityKeys",
238
+ "navigationType",
239
+ "enableDynamicGrid",
240
+ "enableViews",
241
+ "enableSearch",
242
+ "enablePagination",
243
+ "enableColumns",
244
+ "enableFilter",
245
+ "defaultView",
246
+ "onRowClick"
247
+ ]
248
+ },
249
+
250
+ "collection": {
251
+ "type": "object",
252
+ "properties": {
253
+ "component": {
254
+ "type": "string",
255
+ "const": "collection"
256
+ },
257
+ "name": {
258
+ "type": "string",
259
+ "description": "Collection name identifier"
260
+ },
261
+ "props": {
262
+ "type": "object",
263
+ "properties": {
264
+ "items": {
265
+ "type": "string",
266
+ "description": "Template expression for items array"
267
+ },
268
+ "itemName": {
269
+ "type": "string",
270
+ "description": "Variable name for current item in iteration"
271
+ },
272
+ "cols": {
273
+ "type": "integer",
274
+ "description": "Number of columns for layout"
275
+ },
276
+ "orientation": {
277
+ "type": "string",
278
+ "enum": ["horizontal", "vertical"],
279
+ "description": "Layout orientation"
280
+ },
281
+ "containerTag": {
282
+ "type": "string",
283
+ "description": "HTML container tag"
284
+ },
285
+ "className": {
286
+ "type": "string",
287
+ "description": "CSS classes for styling"
288
+ },
289
+ "childClassName": {
290
+ "type": "string",
291
+ "description": "CSS classes for child elements"
292
+ }
293
+ },
294
+ "required": ["items", "itemName"]
295
+ },
296
+ "children": {
297
+ "$ref": "#/definitions/componentChildren"
298
+ }
299
+ },
300
+ "required": ["component", "props"]
301
+ },
302
+
303
+ "row": {
304
+ "type": "object",
305
+ "properties": {
306
+ "component": {
307
+ "type": "string",
308
+ "const": "row"
309
+ },
310
+ "props": {
311
+ "type": "object",
312
+ "properties": {
313
+ "className": {
314
+ "type": "string",
315
+ "description": "CSS classes for styling"
316
+ },
317
+ "cols": {
318
+ "type": "integer",
319
+ "description": "Number of columns"
320
+ }
321
+ }
322
+ },
323
+ "children": {
324
+ "$ref": "#/definitions/componentChildren"
325
+ },
326
+ "onClick": {
327
+ "$ref": "#/definitions/actionsList",
328
+ "description": "Actions to execute when the row is clicked"
329
+ }
330
+ }
331
+ },
332
+
333
+ "entityField": {
334
+ "type": "object",
335
+ "description": "Entity field definition",
336
+ "properties": {
337
+ "name": { "type": "string" },
338
+ "displayName": { "$ref": "#/definitions/localized" },
339
+ "description": { "$ref": "#/definitions/localized" },
340
+ "fieldType": { "type": "string" },
341
+ "isCustomField": { "type": "boolean", "description": "Whether this is a custom field" },
342
+ "isInactive": { "type": "boolean" },
343
+ "props": {
344
+ "type": "object",
345
+ "description": "Additional field properties",
346
+ "properties": {
347
+ "showAs": { "$ref": "#/definitions/component" },
348
+ "allowOrderBy": { "type": "boolean" },
349
+ "allowFilter": { "type": "boolean" },
350
+ "filter": {
351
+ "type": "object",
352
+ "description": "Field-level filter selector configuration",
353
+ "properties": {
354
+ "component": {
355
+ "type": "string",
356
+ "description": "Selector component to use (e.g., Contacts/Select)"
357
+ },
358
+ "props": {
359
+ "type": "object",
360
+ "properties": {
361
+ "filter": {
362
+ "type": "string",
363
+ "description": "Filter expression passed to the selector (e.g., contactType: Customer)"
364
+ },
365
+ "options": {
366
+ "type": "object",
367
+ "properties": {
368
+ "baseName": {
369
+ "type": "string",
370
+ "description": "Base name/id field used by the selector"
371
+ }
372
+ },
373
+ "additionalProperties": true
374
+ }
375
+ },
376
+ "additionalProperties": true
377
+ }
378
+ },
379
+ "required": ["component"],
380
+ "x-examples": [
381
+ {
382
+ "component": "Contacts/Select",
383
+ "props": { "filter": "contactType: Customer", "options": { "baseName": "contactId" } }
384
+ },
385
+ {
386
+ "component": "OrderStatuses/Select",
387
+ "props": { "filter": "orderType: Purchase" }
388
+ },
389
+ {
390
+ "component": "AppManifests/Select",
391
+ "props": { "options": { "baseName": "appManifestId" } }
392
+ },
393
+ {
394
+ "component": "Countries/Select"
395
+ }
396
+ ]
397
+ }
398
+ },
399
+ "additionalProperties": false
400
+ }
401
+ },
402
+ "required": ["name", "fieldType"]
403
+ },
404
+
405
+ "entity": {
406
+ "type": "object",
407
+ "description": "CargoXplorer entity definition",
408
+ "properties": {
409
+ "name": { "type": "string" },
410
+ "entityKind": {
411
+ "type": "string",
412
+ "enum": ["Order", "Contact", "OrderEntity", "AccountingTransaction", "Calendar", "CalendarEvent", "Other"]
413
+ },
414
+ "extension": { "type": "boolean", "description": "Whether this entity extends an existing type" },
415
+ "displayName": { "$ref": "#/definitions/localized" },
416
+ "description": { "$ref": "#/definitions/localized" },
417
+ "fields": {
418
+ "type": "array",
419
+ "items": { "$ref": "#/definitions/entityField" }
420
+ }
421
+ },
422
+ "required": ["name", "entityKind"]
423
+ },
424
+
425
+ "calendarEvent": {
426
+ "type": "object",
427
+ "description": "Calendar event object structure",
428
+ "properties": {
429
+ "id": {
430
+ "type": "string",
431
+ "description": "Unique event identifier"
432
+ },
433
+ "title": {
434
+ "type": "string",
435
+ "description": "Event display title"
436
+ },
437
+ "start": {
438
+ "type": "string",
439
+ "description": "Start date/time in ISO format"
440
+ },
441
+ "end": {
442
+ "type": "string",
443
+ "description": "End date/time in ISO format"
444
+ },
445
+ "allDay": {
446
+ "type": "boolean",
447
+ "description": "Whether event spans all day"
448
+ },
449
+ "url": {
450
+ "type": "string",
451
+ "description": "URL associated with event"
452
+ },
453
+ "classNames": {
454
+ "type": "array",
455
+ "description": "CSS class names for styling",
456
+ "items": {
457
+ "type": "string"
458
+ }
459
+ },
460
+ "editable": {
461
+ "type": "boolean",
462
+ "description": "Whether event can be edited"
463
+ },
464
+ "startEditable": {
465
+ "type": "boolean",
466
+ "description": "Whether event start can be edited"
467
+ },
468
+ "durationEditable": {
469
+ "type": "boolean",
470
+ "description": "Whether event duration can be edited"
471
+ },
472
+ "resourceEditable": {
473
+ "type": "boolean",
474
+ "description": "Whether event resource can be changed"
475
+ },
476
+ "display": {
477
+ "type": "string",
478
+ "enum": ["auto", "block", "list-item", "background", "inverse-background", "none"],
479
+ "description": "How the event is displayed"
480
+ },
481
+ "overlap": {
482
+ "type": "boolean",
483
+ "description": "Whether event can overlap with others"
484
+ },
485
+ "constraint": {
486
+ "oneOf": [{ "type": "string" }, { "type": "object" }],
487
+ "description": "Constraint for event movement"
488
+ },
489
+ "color": {
490
+ "type": "string",
491
+ "description": "Event background color"
492
+ },
493
+ "backgroundColor": {
494
+ "type": "string",
495
+ "description": "Event background color"
496
+ },
497
+ "borderColor": {
498
+ "type": "string",
499
+ "description": "Event border color"
500
+ },
501
+ "textColor": {
502
+ "type": "string",
503
+ "description": "Event text color"
504
+ },
505
+ "extendedProps": {
506
+ "type": "object",
507
+ "description": "Custom properties for the event",
508
+ "additionalProperties": true
509
+ }
510
+ },
511
+ "required": ["title", "start"]
512
+ }
513
+ },
514
+
515
+ "components": {
516
+ "schemas": {
517
+ "appComponent": {
518
+ "$ref": "components/appComponent.json"
519
+ },
520
+
521
+ "navbar": {
522
+ "$ref": "components/navbar.json"
523
+ },
524
+
525
+ "navbarItem": {
526
+ "$ref": "components/navbarItem.json"
527
+ },
528
+
529
+ "navDropdown": {
530
+ "$ref": "components/navDropdown.json"
531
+ },
532
+
533
+ "navbarLink": {
534
+ "$ref": "components/navbarLink.json"
535
+ },
536
+
537
+ "collection": {
538
+ "$ref": "components/collection.json"
539
+ },
540
+
541
+ "row": {
542
+ "$ref": "components/row.json"
543
+ },
544
+
545
+ "dataGrid": {
546
+ "$ref": "components/dataGrid.json"
547
+ },
548
+
549
+ "barcodeScanner": {
550
+ "$ref": "components/barcodeScanner.json"
551
+ },
552
+
553
+ "button": {
554
+ "$ref": "components/button.json"
555
+ },
556
+
557
+ "form": {
558
+ "$ref": "components/form.json"
559
+ },
560
+
561
+ "layout": {
562
+ "$ref": "components/layout.json"
563
+ },
564
+
565
+ "tabs": {
566
+ "$ref": "components/tabs.json"
567
+ },
568
+
569
+ "tab": {
570
+ "$ref": "components/tab.json"
571
+ },
572
+
573
+ "field": {
574
+ "$ref": "components/field.json"
575
+ },
576
+
577
+ "dropdown": {
578
+ "$ref": "components/dropdown.json"
579
+ },
580
+
581
+ "datasource": {
582
+ "$ref": "components/datasource.json"
583
+ },
584
+
585
+ "calendar": {
586
+ "$ref": "components/calendar.json"
587
+ },
588
+
589
+ "card": {
590
+ "$ref": "components/card.json"
591
+ },
592
+
593
+ "module": {
594
+ "$ref": "components/module.json"
595
+ },
596
+
597
+ "field-collection": {
598
+ "$ref": "components/field-collection.json"
599
+ },
600
+
601
+ "timeline": {
602
+ "$ref": "components/timeline.json"
603
+ },
604
+
605
+ "timeline-grid": {
606
+ "$ref": "components/timelineGrid.json"
607
+ }
608
+ }
609
+ }
610
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Workflow Activity",
4
+ "description": "Definition of a workflow activity containing steps",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
10
+ "description": "Activity name identifier"
11
+ },
12
+ "description": {
13
+ "type": "string",
14
+ "description": "Activity description"
15
+ },
16
+ "conditions": {
17
+ "oneOf": [
18
+ {
19
+ "type": "string",
20
+ "description": "Single condition expression"
21
+ },
22
+ {
23
+ "type": "array",
24
+ "items": {
25
+ "oneOf": [
26
+ { "type": "string" },
27
+ {
28
+ "type": "object",
29
+ "properties": {
30
+ "expression": { "type": "string" }
31
+ }
32
+ }
33
+ ]
34
+ }
35
+ }
36
+ ],
37
+ "description": "Conditions for activity execution"
38
+ },
39
+ "continueOnError": {
40
+ "type": "boolean",
41
+ "description": "Whether to continue workflow on error"
42
+ },
43
+ "variables": {
44
+ "type": "array",
45
+ "description": "Activity-scoped variables",
46
+ "items": {
47
+ "$ref": "variable.json"
48
+ }
49
+ },
50
+ "steps": {
51
+ "type": "array",
52
+ "description": "Steps within the activity",
53
+ "items": {
54
+ "$ref": "common/step.json"
55
+ },
56
+ "minItems": 1
57
+ },
58
+ "events": {
59
+ "oneOf": [
60
+ {
61
+ "type": "object",
62
+ "description": "Activity-level event handlers as object",
63
+ "properties": {
64
+ "onActivityStarted": {
65
+ "type": "array",
66
+ "description": "Steps to execute when activity starts",
67
+ "items": { "$ref": "common/step.json" }
68
+ },
69
+ "onActivityCompleted": {
70
+ "type": "array",
71
+ "description": "Steps to execute when activity completes",
72
+ "items": { "$ref": "common/step.json" }
73
+ },
74
+ "onActivityFailed": {
75
+ "type": "array",
76
+ "description": "Steps to execute when activity fails",
77
+ "items": { "$ref": "common/step.json" }
78
+ }
79
+ },
80
+ "additionalProperties": false
81
+ },
82
+ {
83
+ "type": "array",
84
+ "description": "Activity-level event handlers as array",
85
+ "items": {
86
+ "type": "object",
87
+ "additionalProperties": true
88
+ }
89
+ }
90
+ ],
91
+ "description": "Activity-level event handlers"
92
+ }
93
+ },
94
+ "required": ["name", "steps"],
95
+ "additionalProperties": true
96
+ }