@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cxtms/cx-schema",
3
- "version": "1.9.244",
3
+ "version": "1.9.246",
4
4
  "description": "Schema validation package for CXTMS YAML modules",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -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) |