cxtms 1.9.269 → 1.9.271
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/actions/all.json +2 -1
- package/schemas/actions/assistantContext.json +27 -0
- package/schemas/components/appComponent.json +17 -0
- package/schemas/components/tab.json +5 -0
- package/schemas/components/tabs.json +6 -0
- package/skills/cxtms-module-builder/SKILL.md +11 -0
- package/skills/cxtms-module-builder/ref-components-layout.md +2 -0
- package/skills/cxtms-module-builder/ref-components-specialized.md +6 -3
package/package.json
CHANGED
package/schemas/actions/all.json
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "assistantContext Action",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"assistantContext": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"properties": {
|
|
9
|
+
"kind": { "type": "string", "enum": ["page", "record", "dialog"], "default": "record" },
|
|
10
|
+
"name": { "$ref": "../schemas.json#/definitions/localized" },
|
|
11
|
+
"icon": { "type": "string" },
|
|
12
|
+
"data": { "type": "object", "additionalProperties": true },
|
|
13
|
+
"questions": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"maxItems": 5,
|
|
16
|
+
"items": { "$ref": "../schemas.json#/definitions/localized" }
|
|
17
|
+
},
|
|
18
|
+
"agent": { "type": "string", "description": "Agent model ID; falls back to the active agent when unavailable" },
|
|
19
|
+
"open": { "type": "boolean", "default": false }
|
|
20
|
+
},
|
|
21
|
+
"required": ["name"],
|
|
22
|
+
"additionalProperties": false
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"required": ["assistantContext"],
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
}
|
|
@@ -33,6 +33,23 @@
|
|
|
33
33
|
"order": {
|
|
34
34
|
"type": "integer",
|
|
35
35
|
"description": "Order of the component in the target slot"
|
|
36
|
+
},
|
|
37
|
+
"assistantContext": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"description": "Live structured context published to the AI Assistant while this component is mounted",
|
|
40
|
+
"properties": {
|
|
41
|
+
"kind": { "type": "string", "enum": ["page", "record", "dialog"] },
|
|
42
|
+
"name": { "$ref": "../schemas.json#/definitions/localized" },
|
|
43
|
+
"icon": { "type": "string" },
|
|
44
|
+
"data": { "type": "object", "additionalProperties": true },
|
|
45
|
+
"questions": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"maxItems": 5,
|
|
48
|
+
"items": { "$ref": "../schemas.json#/definitions/localized" }
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"required": ["name"],
|
|
52
|
+
"additionalProperties": false
|
|
36
53
|
}
|
|
37
54
|
},
|
|
38
55
|
"additionalProperties": true
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
},
|
|
24
24
|
"isHidden": {
|
|
25
25
|
"$ref": "../schemas.json#/definitions/templateExpression"
|
|
26
|
+
},
|
|
27
|
+
"contentCard": {
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"default": true,
|
|
30
|
+
"description": "Wrap this tab's content in a card when the parent tabs layout is cards"
|
|
26
31
|
}
|
|
27
32
|
}
|
|
28
33
|
},
|
|
@@ -39,6 +39,12 @@
|
|
|
39
39
|
"defaultTab": {
|
|
40
40
|
"type": "string",
|
|
41
41
|
"description": "Default active tab name"
|
|
42
|
+
},
|
|
43
|
+
"layout": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"enum": ["cards", "classic"],
|
|
46
|
+
"default": "cards",
|
|
47
|
+
"description": "cards separates the tab strip and active content; classic keeps them in one card"
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
},
|
|
@@ -287,6 +287,17 @@ components:
|
|
|
287
287
|
|
|
288
288
|
## Action Types
|
|
289
289
|
|
|
290
|
+
Use `assistantContext` to add structured AI context from an event. It requires `name`; supports `kind` (`page`, `record`, or `dialog`), `icon`, template-resolved `data`, up to five `questions`, an optional agent model ID, and `open: true`. It adds immediately to an empty chat and proposes the context once messages exist.
|
|
291
|
+
|
|
292
|
+
```yaml
|
|
293
|
+
- assistantContext:
|
|
294
|
+
kind: record
|
|
295
|
+
name: "Order {{ orderNumber }}"
|
|
296
|
+
data: { entityType: Order, entityId: "{{ orderId }}" }
|
|
297
|
+
questions: ["Summarize this order"]
|
|
298
|
+
open: true
|
|
299
|
+
```
|
|
300
|
+
|
|
290
301
|
Actions are used in event handlers (onClick, onSubmit, etc.) as arrays:
|
|
291
302
|
|
|
292
303
|
```yaml
|
|
@@ -424,6 +424,8 @@ props:
|
|
|
424
424
|
|
|
425
425
|
## tabs
|
|
426
426
|
|
|
427
|
+
Tabs use separate cards for the tab strip and active content by default. Set `props.layout: classic` to keep the header, strip, and content in one card. In the default card layout, a tab may set `props.contentCard: false` when its child (such as a data grid) already supplies its own frame.
|
|
428
|
+
|
|
427
429
|
Tabbed interface with MUI TabContext. Tab state stored in URL params.
|
|
428
430
|
|
|
429
431
|
Tabs may contain a `slot` child as an extension point. The web renderer replaces that child
|
|
@@ -19,6 +19,7 @@ FullCalendar integration with GraphQL event sources, timezone support, and progr
|
|
|
19
19
|
| Prop | Type | Default | Description |
|
|
20
20
|
|------|------|---------|-------------|
|
|
21
21
|
| `calendarId` | `string` | — | Calendar ID (template-parsed), used for timezone fetch |
|
|
22
|
+
| `toolbar` | `component[]` | — | Components rendered right-aligned above the calendar with inherited context and variables |
|
|
22
23
|
| `initialView` | `string` | `dayGridMonth` | View: `dayGridMonth`, `timeGridWeek`, `timeGridDay`, `listMonth` |
|
|
23
24
|
| `height` | `number` | `600` | Calendar height |
|
|
24
25
|
| `aspectRatio` | `number` | `1.35` | Calendar aspect ratio |
|
|
@@ -45,13 +46,15 @@ FullCalendar integration with GraphQL event sources, timezone support, and progr
|
|
|
45
46
|
|-------|------|-------------|
|
|
46
47
|
| `onDateClick` | `date, dateStr, allDay, view` | Date cell clicked |
|
|
47
48
|
| `onEventClick` | `event{id,title,start,end,allDay,extendedProps}, view` | Event clicked |
|
|
48
|
-
| `onSelect` | `start, end, startStr, endStr, allDay, view` | Date range selected |
|
|
49
|
-
| `onEventDrop` | `event, oldEvent, delta, revert` | Event drag-dropped |
|
|
50
|
-
| `onEventResize` | `event, oldEvent, revert` | Event resized |
|
|
49
|
+
| `onSelect` | `start, end, startStr, endStr, startTz, endTz, allDay, view` | Date range selected; `startTz`/`endTz` use the calendar time zone |
|
|
50
|
+
| `onEventDrop` | `event, oldEvent, delta, revert` | Event drag-dropped; event dates use the calendar time zone |
|
|
51
|
+
| `onEventResize` | `event, oldEvent, revert` | Event resized; event dates use the calendar time zone |
|
|
51
52
|
| `onDatesSet` | `start, end, startStr, endStr, view` | Visible range changed |
|
|
52
53
|
|
|
53
54
|
**Store API:** Stores `calendar_{calendarId}` in context store with: `refresh()`, `changeView()`, `gotoDate()`, `prev()`, `next()`, `today()`.
|
|
54
55
|
|
|
56
|
+
For calendars configured with a non-local IANA time zone, offset-less FullCalendar values in selection, drag, resize, and change payloads are interpreted as wall-clock time in that calendar time zone. Values that already include an offset or `Z` are preserved.
|
|
57
|
+
|
|
55
58
|
```yaml
|
|
56
59
|
component: calendar
|
|
57
60
|
name: shipmentCalendar
|