@cxtms/cx-schema 1.9.244 → 1.9.246
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/package.json +1 -1
- package/schemas/components/tabs.json +15 -0
- package/skills/cxtms-developer/ref-entity-organization.md +3 -0
- package/skills/cxtms-module-builder/ref-components-layout.md +2 -1
- package/skills/cxtms-workflow-builder/SKILL.md +4 -1
- package/skills/cxtms-workflow-builder/ref-expressions-ncalc.md +1 -0
package/package.json
CHANGED
|
@@ -21,6 +21,21 @@
|
|
|
21
21
|
"$ref": "../schemas.json#/definitions/component"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
|
+
"header": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"description": "Component areas rendered above the tab strip",
|
|
27
|
+
"properties": {
|
|
28
|
+
"icon": { "$ref": "../schemas.json#/definitions/componentChildren" },
|
|
29
|
+
"title": { "$ref": "../schemas.json#/definitions/componentChildren" },
|
|
30
|
+
"subTitle": { "$ref": "../schemas.json#/definitions/componentChildren" },
|
|
31
|
+
"buttons": { "$ref": "../schemas.json#/definitions/componentChildren" }
|
|
32
|
+
},
|
|
33
|
+
"additionalProperties": false
|
|
34
|
+
},
|
|
35
|
+
"useNavigationForTabs": {
|
|
36
|
+
"type": "boolean",
|
|
37
|
+
"description": "Push tab changes into browser history instead of replacing the current entry"
|
|
38
|
+
},
|
|
24
39
|
"defaultTab": {
|
|
25
40
|
"type": "string",
|
|
26
41
|
"description": "Default active tab name"
|
|
@@ -20,6 +20,8 @@ Core tenant entity. Each organization represents a company/tenant in the system.
|
|
|
20
20
|
| `slug` | `string?` | URL-friendly identifier for Public API routes (lowercase, hyphenated) |
|
|
21
21
|
| `organizationType` | `OrganizationType` | `Regular` (0) or platform-managed `SystemAdministration` (1) |
|
|
22
22
|
| `isDeleted` | `bool` | Soft delete |
|
|
23
|
+
| `isInactive` | `bool` | Operational inactive flag; remains visible |
|
|
24
|
+
| `activeUserCount` | `int` | GraphQL projection of active licensed people |
|
|
23
25
|
| `customValues` | `Dictionary?` | jsonb, merged on update; incoming keys overwrite existing keys while unrelated keys are preserved |
|
|
24
26
|
| `created` / `lastModified` | `DateTime` | Audit fields (from `AuditableEntity`) |
|
|
25
27
|
| `createdBy` / `lastModifiedBy` | `string` | Audit fields |
|
|
@@ -40,4 +42,5 @@ Used by `PublicApiOrganizationResolver` to resolve org by slug or GUID in Public
|
|
|
40
42
|
- `ChangeCompanyName(string)`, `ChangeAddressLine(string?)`, etc.
|
|
41
43
|
- `ChangeCustomValues(Dictionary?)` — initializes `CustomValues` when needed, merges incoming values into the existing dictionary, and overwrites matching keys without dropping unrelated keys
|
|
42
44
|
- `DeleteOrganization()` — sets `IsDeleted = true`
|
|
45
|
+
- `ChangeIsInactive(bool)` — toggles operational inactivity
|
|
43
46
|
- `ChangeOrganizationType(OrganizationType)` — platform-only; ignored by dynamic update mutations
|
|
@@ -436,6 +436,7 @@ the slot name are resolved from component variables and store values before look
|
|
|
436
436
|
|------|------|-------------|
|
|
437
437
|
| `options` | `object` | Additional props spread to Tab elements |
|
|
438
438
|
| `toolbar` | `component[]` | Action components next to tab list |
|
|
439
|
+
| `header` | `{icon?, title?, subTitle?, buttons?}` | Component arrays rendered above the tab strip |
|
|
439
440
|
| `useNavigationForTabs` | `boolean` | Push to history instead of replace |
|
|
440
441
|
|
|
441
442
|
**Tab children props:**
|
|
@@ -518,7 +519,7 @@ MUI Card container with optional header, content, and actions.
|
|
|
518
519
|
| `className` | `string` | — | Additional CSS class |
|
|
519
520
|
| `bgcolor` | `string` | — | Background color |
|
|
520
521
|
| `color` | `string` | — | Text color |
|
|
521
|
-
| `header` | `{title?, subheader?, sx?}` | — | Renders MUI CardHeader |
|
|
522
|
+
| `header` | `{title?, subheader?, icon?, iconColor?, sx?}` | — | Renders MUI CardHeader; icon is its avatar |
|
|
522
523
|
| `disableContentWrapper` | `boolean` | `false` | Skip CardContent wrapper |
|
|
523
524
|
| `contentSx` | `SxProps` | — | CardContent styles |
|
|
524
525
|
| `contentClassName` | `string` | `card-content` | CardContent CSS class |
|
|
@@ -45,6 +45,7 @@ npx cxtms create workflow <name> --template <template>
|
|
|
45
45
|
| `api-tracking` | Fetch tracking from carrier API |
|
|
46
46
|
| `webhook` | HTTP endpoint for external callers |
|
|
47
47
|
| `public-api` | REST API endpoint with OpenAPI docs |
|
|
48
|
+
| `mcp-tool` | Synchronous tool exposed through the organization MCP server |
|
|
48
49
|
|
|
49
50
|
### Step 2: Read the generated file
|
|
50
51
|
|
|
@@ -70,6 +71,8 @@ npx cxtms create workflow <name> --template <template>
|
|
|
70
71
|
|
|
71
72
|
**`public-api`** — requires a top-level `api` section defining the REST endpoint. Set `api.path` with route params (e.g., `/orders/{orderId}`), `api.method` (GET/POST/PUT/PATCH/DELETE), `api.authentication` (`none`, `bearer`, `apiKey`), `api.document` (swagger doc name, default `"public"`), and `api.category` (swagger tag). Configure `api.rateLimit` with `perSecond`/`perMinute`. Each input uses `props.in` (`path`, `query`, `header`, `body`) to specify where the parameter comes from, and `props.format` for OpenAPI type hints (e.g., `uuid`, `date-time`). Body inputs may define `props.schema` with recursive OpenAPI schema fields (`type`, `properties`, `required`, `items`, `format`, `description`, `enum`); body inputs without a schema render as an object request body. Prefer `api.responses` for response documentation. Legacy `response` outputs can still use `props.type`, `props.description`, and recursive `props.schema` to describe the single `200` response. Must use `executionMode: Sync`. Control HTTP response via `response` and `statusCode` outputs.
|
|
72
73
|
|
|
74
|
+
**`mcp-tool`** — scaffolds a synchronous `McpTool` workflow. MCP resources use `workflowType: McpResource` and require `mcp.uri`. The resource URI must be absolute and spell out its scheme (for example, `tms://docs/shipping-terms`); relative and filesystem-style paths are invalid on every operating system. MCP tools and prompts use `mcp.name`, which must match `^[a-zA-Z0-9_-]{1,64}$`.
|
|
75
|
+
|
|
73
76
|
**All templates** include workflow-level `events` (`onWorkflowStarted`, `onWorkflowCompleted`, `onWorkflowFailed`) and activity-level `events` (`onActivityStarted`, `onActivityCompleted`, `onActivityFailed`) with Log steps. Replace/extend these with notification tasks (Email/Send, HttpRequest, Workflow/Execute) as needed. (`onWorkflowExecuted` is a deprecated alias for `onWorkflowCompleted` — use `onWorkflowCompleted` in new workflows.)
|
|
74
77
|
|
|
75
78
|
**Flow workflows** — scaffold with `basic` then set `workflowType: Flow`, remove `activities`/`triggers`, add `entity`, `states`, `transitions`, `aggregations`. Load Flow reference: `!cat skills/cxtms-workflow-builder/ref-flow.md`
|
|
@@ -100,7 +103,7 @@ workflow:
|
|
|
100
103
|
isActive: true
|
|
101
104
|
enableAudit: true
|
|
102
105
|
filePath: "workflows/<name>.yaml"
|
|
103
|
-
workflowType: Document | Quote | Flow | Webhook | PublicApi # omit for standard process workflows
|
|
106
|
+
workflowType: Document | Quote | Flow | Webhook | PublicApi | McpTool | McpResource | McpPrompt # omit for standard process workflows
|
|
104
107
|
runAs: "system" # Optional elevated permissions
|
|
105
108
|
tags: ["tag1", "tag2"]
|
|
106
109
|
concurrency: # Optional
|
|
@@ -62,6 +62,7 @@ Functions use two iterator variable names:
|
|
|
62
62
|
| `reverse([items])` | Reverse collection or string |
|
|
63
63
|
| `contains([source], 'needle')` | String contains, JArray contains, list contains, or dict key/value contains |
|
|
64
64
|
| `removeEmpty([items])` | Remove null and whitespace-only items |
|
|
65
|
+
| `prune([object])` | Recursively omit blank strings and empty object branches; preserve null, false, 0, and arrays |
|
|
65
66
|
| `concat([list1], [list2], ...)` | Concatenate multiple collections into flat list. Variadic args. Skips nulls |
|
|
66
67
|
| `groupBy([items], [item.cat])` | Group by one or more key expressions. Returns `[{key, items}]`. Multi-key: keys joined with `\|` |
|
|
67
68
|
| `join([items], [each.name], ',')` | Join collection with `[each.*]` accessor and separator (3-arg) |
|