@culvii/cli 0.0.7 → 0.0.8
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/COMMANDS.md +5 -5
- package/README.md +15 -6
- package/USAGE.md +11 -10
- package/dist/DeployView-D4UEXMDJ.js +2 -0
- package/dist/DevView-GPKSSOLA.js +2 -0
- package/dist/EnvView-3ZURMIZS.js +2 -0
- package/dist/{HelpView-YLCEPIFY.js → HelpView-E7HS4SVF.js} +1 -1
- package/dist/WhoamiView-TKSYSHQ2.js +2 -0
- package/dist/{WorkspaceView-RNFALIPM.js → WorkspaceView-ID7ZMBHV.js} +1 -1
- package/dist/{chunk-IRZMWFC3.js → chunk-IPETC2TK.js} +1 -1
- package/dist/index.js +33 -683
- package/dist/lib/evaluator.js +2 -2
- package/dist/login-OGOHEHFE.js +39 -0
- package/dist/{logout-TDZA462P.js → logout-BRUJBFUK.js} +1 -1
- package/dist/skill-bundle-7KYK5GBL.js +1377 -0
- package/package.json +9 -5
- package/skills/culvii/.culvii-skill.json +59 -0
- package/skills/culvii/SKILL.md +73 -0
- package/skills/culvii/agents/openai.yaml +4 -0
- package/skills/culvii/examples/agent-workflow.culvii.ts +24 -0
- package/skills/culvii/examples/complete-workflow.culvii.ts +37 -0
- package/skills/culvii/examples/output-surface.culvii.ts +45 -0
- package/skills/culvii/examples/wait-surface.culvii.ts +24 -0
- package/skills/culvii/references/agents.md +29 -0
- package/skills/culvii/references/authoring-files.md +21 -0
- package/skills/culvii/references/cli-guide.md +22 -0
- package/skills/culvii/references/cli-reference.md +184 -0
- package/skills/culvii/references/feedback-cycle.md +43 -0
- package/skills/culvii/references/integrations.md +13 -0
- package/skills/culvii/references/kit-api.md +35 -0
- package/skills/culvii/references/node-core-agent.md +27 -0
- package/skills/culvii/references/node-core-browser-automation.md +53 -0
- package/skills/culvii/references/node-core-code.md +28 -0
- package/skills/culvii/references/node-core-http.md +42 -0
- package/skills/culvii/references/node-core-if.md +26 -0
- package/skills/culvii/references/node-core-jwt.md +31 -0
- package/skills/culvii/references/node-core-set.md +24 -0
- package/skills/culvii/references/node-cron-trigger.md +25 -0
- package/skills/culvii/references/node-elasticsearch.md +39 -0
- package/skills/culvii/references/node-gmail-trigger.md +44 -0
- package/skills/culvii/references/node-gmail.md +57 -0
- package/skills/culvii/references/node-google-calendar.md +51 -0
- package/skills/culvii/references/node-google-docs.md +46 -0
- package/skills/culvii/references/node-manual-trigger.md +24 -0
- package/skills/culvii/references/node-microsoft-outlook-trigger.md +41 -0
- package/skills/culvii/references/node-microsoft-outlook.md +55 -0
- package/skills/culvii/references/node-microsoft-sharepoint.md +40 -0
- package/skills/culvii/references/node-s3.md +40 -0
- package/skills/culvii/references/node-slack-trigger.md +40 -0
- package/skills/culvii/references/node-slack.md +38 -0
- package/skills/culvii/references/node-twilio.md +39 -0
- package/skills/culvii/references/node-wait-timer.md +24 -0
- package/skills/culvii/references/node-webhook-trigger.md +24 -0
- package/skills/culvii/references/nodes-index.md +27 -0
- package/skills/culvii/references/runtime-values.md +36 -0
- package/skills/culvii/references/surface-authoring.md +27 -0
- package/skills/culvii/references/surface-display.md +390 -0
- package/skills/culvii/references/surface-feedback.md +41 -0
- package/skills/culvii/references/surface-input-actions.md +143 -0
- package/skills/culvii/references/surface-layout.md +97 -0
- package/skills/culvii/references/validation.md +18 -0
- package/skills/culvii/references/workflows.md +30 -0
- package/dist/DeployView-GEJNL26A.js +0 -2
- package/dist/DevView-SOPAMSZ4.js +0 -2
- package/dist/EnvView-MCZC2NBO.js +0 -2
- package/dist/WhoamiView-67HV2L5J.js +0 -2
- package/dist/chunk-MPKGJC7N.js +0 -2
- package/dist/login-G5QUR55L.js +0 -36
- /package/dist/{chunk-5NBKYMD7.js → chunk-56C3DFV2.js} +0 -0
- /package/dist/{chunk-JFIFRAAR.js → chunk-RS5GDTRN.js} +0 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
# Surface display components
|
|
2
|
+
|
|
3
|
+
## Avatar
|
|
4
|
+
|
|
5
|
+
Initials derived from a name or email.
|
|
6
|
+
|
|
7
|
+
- Children: `none`
|
|
8
|
+
|
|
9
|
+
Props:
|
|
10
|
+
|
|
11
|
+
- `email` (string; bindable) — Fallback source for initials.
|
|
12
|
+
|
|
13
|
+
- `label` (string; bindable) — Text beside the avatar.
|
|
14
|
+
|
|
15
|
+
- `name` (string; bindable) — Name used for initials.
|
|
16
|
+
|
|
17
|
+
- `size` (string; literal; values: "sm" | "md" | "lg") — Avatar size.
|
|
18
|
+
|
|
19
|
+
## Badge
|
|
20
|
+
|
|
21
|
+
Small label with an explicit tone.
|
|
22
|
+
|
|
23
|
+
- Children: `none`
|
|
24
|
+
|
|
25
|
+
Props:
|
|
26
|
+
|
|
27
|
+
- `format` (string; literal; values: "text" | "number" | "compact" | "percent" | "currency" | "bytes" | "duration" | "date" | "datetime" | "time" | "list" | "json" | "boolean") — Display format.
|
|
28
|
+
|
|
29
|
+
- `maxChars` (number; literal; integer; min 1) — Maximum displayed characters.
|
|
30
|
+
|
|
31
|
+
- `text` (any; bindable) — Badge label.
|
|
32
|
+
|
|
33
|
+
- `tone` (string; literal; values: "neutral" | "info" | "success" | "warning" | "error") — Badge tone.
|
|
34
|
+
|
|
35
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Text transform.
|
|
36
|
+
|
|
37
|
+
## Code
|
|
38
|
+
|
|
39
|
+
Monospace text block.
|
|
40
|
+
|
|
41
|
+
- Children: `none`
|
|
42
|
+
- Limits: `{"characters":20000}`
|
|
43
|
+
|
|
44
|
+
Props:
|
|
45
|
+
|
|
46
|
+
- `label` (string; bindable) — Block label.
|
|
47
|
+
|
|
48
|
+
- `text` (any; bindable) — Code or payload.
|
|
49
|
+
|
|
50
|
+
- `wrap` (boolean; literal) — Wrap long lines.
|
|
51
|
+
|
|
52
|
+
## DiffView
|
|
53
|
+
|
|
54
|
+
Structural JSON or line-by-line text comparison.
|
|
55
|
+
|
|
56
|
+
- Children: `none`
|
|
57
|
+
- Limits: `{"depth":6,"children":100,"lines":2000,"characters":200000}`
|
|
58
|
+
|
|
59
|
+
Props:
|
|
60
|
+
|
|
61
|
+
- `after` (any; bindable) — Proposed value.
|
|
62
|
+
|
|
63
|
+
- `before` (any; bindable) — Prior value.
|
|
64
|
+
|
|
65
|
+
- `mode` (string; literal; values: "json" | "text") — Comparison mode.
|
|
66
|
+
|
|
67
|
+
## Duration
|
|
68
|
+
|
|
69
|
+
A duration in milliseconds or between two instants.
|
|
70
|
+
|
|
71
|
+
- Children: `none`
|
|
72
|
+
|
|
73
|
+
Props:
|
|
74
|
+
|
|
75
|
+
- `end` (union; bindable) — End instant.
|
|
76
|
+
- Variant 1: string; literal
|
|
77
|
+
- Variant 2: number; literal
|
|
78
|
+
|
|
79
|
+
- `size` (string; literal; values: "xs" | "sm" | "md" | "lg") — Displayed value size.
|
|
80
|
+
|
|
81
|
+
- `start` (union; bindable) — Start instant.
|
|
82
|
+
- Variant 1: string; literal
|
|
83
|
+
- Variant 2: number; literal
|
|
84
|
+
|
|
85
|
+
- `tone` (string; literal; values: "default" | "muted" | "success" | "warning" | "error" | "info") — Displayed value tone.
|
|
86
|
+
|
|
87
|
+
- `unit` (string; literal; values: "seconds" | "ms") — Numeric instant unit.
|
|
88
|
+
|
|
89
|
+
- `value` (number; bindable; min 0) — Duration in milliseconds.
|
|
90
|
+
|
|
91
|
+
## EmailMessageCard
|
|
92
|
+
|
|
93
|
+
Inbox list or opened email message.
|
|
94
|
+
|
|
95
|
+
- Children: `none`
|
|
96
|
+
- Limits: `{"renderedMessages":50}`
|
|
97
|
+
|
|
98
|
+
Props:
|
|
99
|
+
|
|
100
|
+
- `body` (string; bindable) — Message body.
|
|
101
|
+
|
|
102
|
+
- `cc` (string; bindable) — Carbon-copy recipients.
|
|
103
|
+
|
|
104
|
+
- `date` (union; bindable) — Sent or received instant.
|
|
105
|
+
- Variant 1: string; literal
|
|
106
|
+
- Variant 2: number; literal
|
|
107
|
+
|
|
108
|
+
- `emptyText` (string; bindable) — Empty-state text.
|
|
109
|
+
|
|
110
|
+
- `fields` (object; literal) — Field-name mapping.
|
|
111
|
+
|
|
112
|
+
- `from` (string; bindable) — Sender.
|
|
113
|
+
|
|
114
|
+
- `labels` (array; bindable) — Message labels.
|
|
115
|
+
- Items: string; literal
|
|
116
|
+
|
|
117
|
+
- `message` (object; bindable) — Single message.
|
|
118
|
+
|
|
119
|
+
- `messages` (array; bindable) — Message list.
|
|
120
|
+
- Items: object; literal
|
|
121
|
+
|
|
122
|
+
- `snippet` (string; bindable) — Preview text.
|
|
123
|
+
|
|
124
|
+
- `subject` (string; bindable) — Subject.
|
|
125
|
+
|
|
126
|
+
- `to` (string; bindable) — Recipients.
|
|
127
|
+
|
|
128
|
+
- `unread` (boolean; bindable) — Unread state.
|
|
129
|
+
|
|
130
|
+
## FileChip
|
|
131
|
+
|
|
132
|
+
Metadata and download affordance for a produced file.
|
|
133
|
+
|
|
134
|
+
- Children: `none`
|
|
135
|
+
- Interaction: `single-action`
|
|
136
|
+
|
|
137
|
+
Props:
|
|
138
|
+
|
|
139
|
+
- `file` (object; bindable) — Binary descriptor.
|
|
140
|
+
- `downloadUrl` (string; literal) — Protected download URL.
|
|
141
|
+
- `fileName` (string; literal) — Original file name.
|
|
142
|
+
- `key` (string; literal; required) — Binary property key.
|
|
143
|
+
- `mimeType` (string; literal) — MIME type.
|
|
144
|
+
- `size` (number; literal; min 0) — File size in bytes.
|
|
145
|
+
|
|
146
|
+
- `label` (string; bindable) — Displayed file name.
|
|
147
|
+
|
|
148
|
+
## Heading
|
|
149
|
+
|
|
150
|
+
A section title.
|
|
151
|
+
|
|
152
|
+
- Children: `none`
|
|
153
|
+
|
|
154
|
+
Props:
|
|
155
|
+
|
|
156
|
+
- `level` (number; literal; values: 1 | 2 | 3; integer) — Heading level.
|
|
157
|
+
|
|
158
|
+
- `maxChars` (number; literal; integer; min 1) — Maximum displayed characters.
|
|
159
|
+
|
|
160
|
+
- `text` (any; bindable) — Heading text.
|
|
161
|
+
|
|
162
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Text transform.
|
|
163
|
+
|
|
164
|
+
## HtmlRenderer
|
|
165
|
+
|
|
166
|
+
Sandboxed HTML fragment renderer.
|
|
167
|
+
|
|
168
|
+
- Children: `none`
|
|
169
|
+
- Limits: `{"characters":20000}`
|
|
170
|
+
|
|
171
|
+
Props:
|
|
172
|
+
|
|
173
|
+
- `allowRemoteImages` (boolean; literal) — Allow remote HTTPS images.
|
|
174
|
+
|
|
175
|
+
- `emptyText` (string; bindable) — Empty-state text.
|
|
176
|
+
|
|
177
|
+
- `height` (number; literal; min 80; max 1200) — Frame height in pixels.
|
|
178
|
+
|
|
179
|
+
- `html` (string; bindable) — HTML markup.
|
|
180
|
+
|
|
181
|
+
- `label` (string; bindable) — Frame label.
|
|
182
|
+
|
|
183
|
+
## JsonInspector
|
|
184
|
+
|
|
185
|
+
Collapsible JSON tree and default fallback renderer.
|
|
186
|
+
|
|
187
|
+
- Children: `none`
|
|
188
|
+
|
|
189
|
+
Props:
|
|
190
|
+
|
|
191
|
+
- `collapsed` (boolean; literal) — Start collapsed.
|
|
192
|
+
|
|
193
|
+
- `value` (any; bindable) — Any JSON value.
|
|
194
|
+
|
|
195
|
+
## KeyValue
|
|
196
|
+
|
|
197
|
+
Declared label/value entries or a bound object.
|
|
198
|
+
|
|
199
|
+
- Children: `none`
|
|
200
|
+
|
|
201
|
+
Props:
|
|
202
|
+
|
|
203
|
+
- `columns` (number; literal; values: 1 | 2; integer) — Pairs per row.
|
|
204
|
+
|
|
205
|
+
- `dense` (boolean; literal) — Use tighter row spacing.
|
|
206
|
+
|
|
207
|
+
- `emptyText` (string; bindable) — Empty-state text.
|
|
208
|
+
|
|
209
|
+
- `entries` (array; bindable) — Declared label/value entries.
|
|
210
|
+
- Items: object; literal
|
|
211
|
+
- `currency` (string; literal) — ISO 4217 currency code.
|
|
212
|
+
- `decimals` (number; literal; integer; min 0; max 20) — Fixed decimal places.
|
|
213
|
+
- `format` (string; literal; values: "text" | "number" | "compact" | "percent" | "currency" | "bytes" | "duration" | "date" | "datetime" | "time" | "list" | "json" | "boolean") — Display format.
|
|
214
|
+
- `label` (string; bindable) — Row label.
|
|
215
|
+
- `map` (object; literal) — Map known displayed values to labels.
|
|
216
|
+
- `maxChars` (number; literal; integer; min 1) — Maximum displayed characters.
|
|
217
|
+
- `mono` (boolean; literal) — Render the value in monospace.
|
|
218
|
+
- `tone` (string; literal; values: "default" | "muted" | "success" | "warning" | "error" | "info") — Displayed value tone.
|
|
219
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Text transform.
|
|
220
|
+
- `type` (string; literal; values: "status") — Set to status to render a status pill.
|
|
221
|
+
- `unit` (string; literal; values: "seconds" | "ms") — Numeric timestamp unit.
|
|
222
|
+
- `value` (any; bindable) — Row value.
|
|
223
|
+
|
|
224
|
+
- `hideEmpty` (boolean; literal) — Hide missing values.
|
|
225
|
+
|
|
226
|
+
- `humanizeKeys` (boolean; literal) — Humanize object keys.
|
|
227
|
+
|
|
228
|
+
- `mono` (boolean; literal) — Render shorthand values in monospace.
|
|
229
|
+
|
|
230
|
+
- `value` (object; bindable) — Object whose keys become labels.
|
|
231
|
+
|
|
232
|
+
## Money
|
|
233
|
+
|
|
234
|
+
A formatted currency amount.
|
|
235
|
+
|
|
236
|
+
- Children: `none`
|
|
237
|
+
|
|
238
|
+
Props:
|
|
239
|
+
|
|
240
|
+
- `currency` (string; bindable) — ISO 4217 currency code.
|
|
241
|
+
|
|
242
|
+
- `decimals` (number; literal; integer; min 0; max 20) — Fixed decimal places.
|
|
243
|
+
|
|
244
|
+
- `signed` (boolean; literal) — Colour positive and negative values.
|
|
245
|
+
|
|
246
|
+
- `size` (string; literal; values: "xs" | "sm" | "md" | "lg") — Displayed value size.
|
|
247
|
+
|
|
248
|
+
- `tone` (string; literal; values: "default" | "muted" | "success" | "warning" | "error" | "info") — Displayed value tone.
|
|
249
|
+
|
|
250
|
+
- `value` (number; bindable) — Currency amount.
|
|
251
|
+
|
|
252
|
+
## Stat
|
|
253
|
+
|
|
254
|
+
One prominent value with a label and caption.
|
|
255
|
+
|
|
256
|
+
- Children: `none`
|
|
257
|
+
|
|
258
|
+
Props:
|
|
259
|
+
|
|
260
|
+
- `caption` (any; bindable) — Caption below the value.
|
|
261
|
+
|
|
262
|
+
- `captionTransform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Caption transform.
|
|
263
|
+
|
|
264
|
+
- `currency` (string; literal) — ISO 4217 currency code.
|
|
265
|
+
|
|
266
|
+
- `decimals` (number; literal; integer; min 0; max 20) — Fixed decimal places.
|
|
267
|
+
|
|
268
|
+
- `format` (string; literal; values: "text" | "number" | "compact" | "percent" | "currency" | "bytes" | "duration" | "date" | "datetime" | "time" | "list" | "json" | "boolean") — Display format.
|
|
269
|
+
|
|
270
|
+
- `label` (string; bindable) — Label above the value.
|
|
271
|
+
|
|
272
|
+
- `maxChars` (number; literal; integer; min 1) — Maximum displayed characters.
|
|
273
|
+
|
|
274
|
+
- `mono` (boolean; literal) — Render the value in monospace.
|
|
275
|
+
|
|
276
|
+
- `tone` (string; literal; values: "default" | "muted" | "success" | "warning" | "error" | "info") — Displayed value tone.
|
|
277
|
+
|
|
278
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Text transform.
|
|
279
|
+
|
|
280
|
+
- `unit` (string; literal; values: "seconds" | "ms") — Numeric timestamp unit.
|
|
281
|
+
|
|
282
|
+
- `value` (any; bindable) — Displayed value.
|
|
283
|
+
|
|
284
|
+
## StatusPill
|
|
285
|
+
|
|
286
|
+
Semantic status pill for statuses, booleans, and HTTP codes.
|
|
287
|
+
|
|
288
|
+
- Children: `none`
|
|
289
|
+
|
|
290
|
+
Props:
|
|
291
|
+
|
|
292
|
+
- `format` (string; literal; values: "text" | "number" | "compact" | "percent" | "currency" | "bytes" | "duration" | "date" | "datetime" | "time" | "list" | "json" | "boolean") — Display format.
|
|
293
|
+
|
|
294
|
+
- `label` (any; bindable) — Displayed label.
|
|
295
|
+
|
|
296
|
+
- `maxChars` (number; literal; integer; min 1) — Maximum displayed characters.
|
|
297
|
+
|
|
298
|
+
- `status` (any; bindable) — Status value.
|
|
299
|
+
|
|
300
|
+
- `tone` (string; literal; values: "neutral" | "info" | "success" | "warning" | "error") — Forced tone.
|
|
301
|
+
|
|
302
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Text transform.
|
|
303
|
+
|
|
304
|
+
## Table
|
|
305
|
+
|
|
306
|
+
Tabular view of an array.
|
|
307
|
+
|
|
308
|
+
- Children: `none`
|
|
309
|
+
- Limits: `{"renderedRows":100}`
|
|
310
|
+
|
|
311
|
+
Props:
|
|
312
|
+
|
|
313
|
+
- `columns` (array; literal) — Literal field names or column definitions.
|
|
314
|
+
- Items: union; literal
|
|
315
|
+
- Variant 1: string; literal
|
|
316
|
+
- Variant 2: object; literal
|
|
317
|
+
- `align` (string; literal; values: "left" | "center" | "right") — Cell alignment.
|
|
318
|
+
- `currency` (string; literal) — ISO 4217 currency code.
|
|
319
|
+
- `decimals` (number; literal; integer; min 0; max 20) — Fixed decimal places.
|
|
320
|
+
- `format` (string; literal; values: "text" | "number" | "compact" | "percent" | "currency" | "bytes" | "duration" | "date" | "datetime" | "time" | "list" | "json" | "boolean") — Display format.
|
|
321
|
+
- `header` (string; literal) — Column heading.
|
|
322
|
+
- `key` (string; literal; required) — Field name inside each row.
|
|
323
|
+
- `map` (object; literal) — Map known displayed values to labels.
|
|
324
|
+
- `maxChars` (number; literal; integer; min 1) — Maximum displayed characters.
|
|
325
|
+
- `mono` (boolean; literal) — Render cells in monospace.
|
|
326
|
+
- `tone` (string; literal; values: "default" | "muted" | "success" | "warning" | "error" | "info") — Displayed value tone.
|
|
327
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Text transform.
|
|
328
|
+
- `type` (string; literal; values: "status") — Set to status to render status pills.
|
|
329
|
+
- `unit` (string; literal; values: "seconds" | "ms") — Numeric timestamp unit.
|
|
330
|
+
|
|
331
|
+
- `dense` (boolean; literal) — Use tighter rows.
|
|
332
|
+
|
|
333
|
+
- `emptyText` (string; bindable) — Empty-state text.
|
|
334
|
+
|
|
335
|
+
- `items` (array; bindable) — Rows to render.
|
|
336
|
+
- Items: any; literal
|
|
337
|
+
|
|
338
|
+
## Text
|
|
339
|
+
|
|
340
|
+
Body text with shared formatting.
|
|
341
|
+
|
|
342
|
+
- Children: `none`
|
|
343
|
+
|
|
344
|
+
Props:
|
|
345
|
+
|
|
346
|
+
- `currency` (string; literal) — ISO 4217 currency code.
|
|
347
|
+
|
|
348
|
+
- `decimals` (number; literal; integer; min 0; max 20) — Fixed decimal places.
|
|
349
|
+
|
|
350
|
+
- `format` (string; literal; values: "text" | "number" | "compact" | "percent" | "currency" | "bytes" | "duration" | "date" | "datetime" | "time" | "list" | "json" | "boolean") — Display format.
|
|
351
|
+
|
|
352
|
+
- `maxChars` (number; literal; integer; min 1) — Maximum displayed characters.
|
|
353
|
+
|
|
354
|
+
- `mono` (boolean; literal) — Render in monospace.
|
|
355
|
+
|
|
356
|
+
- `muted` (boolean; literal) — Shorthand for the muted tone.
|
|
357
|
+
|
|
358
|
+
- `size` (string; literal; values: "xs" | "sm" | "md" | "lg") — Displayed value size.
|
|
359
|
+
|
|
360
|
+
- `text` (any; bindable) — Value to display.
|
|
361
|
+
|
|
362
|
+
- `tone` (string; literal; values: "default" | "muted" | "success" | "warning" | "error" | "info") — Displayed value tone.
|
|
363
|
+
|
|
364
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Text transform.
|
|
365
|
+
|
|
366
|
+
- `unit` (string; literal; values: "seconds" | "ms") — Numeric timestamp unit.
|
|
367
|
+
|
|
368
|
+
- `weight` (string; literal; values: "normal" | "medium" | "semibold") — Font weight.
|
|
369
|
+
|
|
370
|
+
## Timestamp
|
|
371
|
+
|
|
372
|
+
ISO or epoch timestamp.
|
|
373
|
+
|
|
374
|
+
- Children: `none`
|
|
375
|
+
|
|
376
|
+
Props:
|
|
377
|
+
|
|
378
|
+
- `format` (string; literal; values: "datetime" | "date" | "time" | "smart") — Timestamp format.
|
|
379
|
+
|
|
380
|
+
- `relative` (boolean; literal) — Display relative time.
|
|
381
|
+
|
|
382
|
+
- `size` (string; literal; values: "xs" | "sm" | "md" | "lg") — Displayed value size.
|
|
383
|
+
|
|
384
|
+
- `tone` (string; literal; values: "default" | "muted" | "success" | "warning" | "error" | "info") — Displayed value tone.
|
|
385
|
+
|
|
386
|
+
- `unit` (string; literal; values: "seconds" | "ms") — Numeric timestamp unit.
|
|
387
|
+
|
|
388
|
+
- `value` (union; bindable) — ISO string or epoch number.
|
|
389
|
+
- Variant 1: string; literal
|
|
390
|
+
- Variant 2: number; literal
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Surface configuration and visual approval
|
|
2
|
+
|
|
3
|
+
Use this flow for every newly authored workflow. The agent authors surfaces; the user chooses the experience and approves what they see.
|
|
4
|
+
|
|
5
|
+
## Choose before validation
|
|
6
|
+
|
|
7
|
+
1. After planning the workflow graph and expected node data, ask once through the agent's native in-run question tool whether the user wants to configure runtime widgets or keep the defaults. Do not end the chat run to ask.
|
|
8
|
+
2. If the user chooses configuration, ask for each node in each workflow whether to:
|
|
9
|
+
- create a custom surface now;
|
|
10
|
+
- attach a compatible existing surface; or
|
|
11
|
+
- use the platform default.
|
|
12
|
+
3. Present only real existing surfaces found in project files or command output. Never invent a surface reference. Combine independent node choices into the fewest question-tool prompts the agent supports.
|
|
13
|
+
4. Read [surface authoring](surface-authoring.md) and only the component catalog pages needed for custom choices. Use expected output shape and the workflow's purpose to design the surface; do not ask the user to write component documents.
|
|
14
|
+
5. Create every custom candidate as a real Culvii `Surface` and attach it to its workflow step before the first `culvii dev`. "Candidate" describes its approval state, not a separate resource type. Attach selected existing surfaces now and leave default choices unchanged.
|
|
15
|
+
|
|
16
|
+
Do not introduce a wait surface or pause merely to display output. A wait surface is valid only when the requested workflow already requires human input. Surface documents use only supported Culvii components and bindings; the temporary preview HTML described below is never placed in a `.culvii.ts` file.
|
|
17
|
+
|
|
18
|
+
## Validate and collect data
|
|
19
|
+
|
|
20
|
+
Start one tracked `culvii dev` process after the workflow and all candidate surfaces exist. Fix every schema, prop, binding, slot, and cross-resource error reported by the watcher. Never preview an invalid candidate.
|
|
21
|
+
|
|
22
|
+
Once the draft graph syncs successfully, run the [workflow feedback cycle](feedback-cycle.md). Use its successful node outputs as preview data. For an authored cron, webhook, or polling trigger, create a representative payload matching its real output shape and deliver it through the temporary manual-trigger conversion. This supplies the trigger's surface and downstream nodes without mocking or invoking the runtime trigger implementation. Sanitize private values and replace credentials, tokens, raw binary, and other secrets with harmless representative values.
|
|
23
|
+
|
|
24
|
+
## Visual approval loop
|
|
25
|
+
|
|
26
|
+
For each custom candidate:
|
|
27
|
+
|
|
28
|
+
1. Create a tracked temporary directory outside the project and generate a self-contained HTML file that approximates the validated Culvii surface with its sanitized execution data. Use inline CSS and only minimal local JavaScript needed for visual interaction. Make no network requests. Escape untrusted text, do not embed credentials or raw binary, and label the page **Visual preview — Culvii runtime rendering may differ**.
|
|
29
|
+
2. Ask for permission before launching the local `file://` page in the user's browser. If the environment cannot open it, provide the local file path and keep the same chat run waiting for review; do not treat the surface as approved.
|
|
30
|
+
3. Ask through the native in-run question tool:
|
|
31
|
+
- **Keep this widget** — accept the attached custom surface;
|
|
32
|
+
- **Change it** — collect plain-language feedback in the same run; or
|
|
33
|
+
- **Use the default** — detach/remove the candidate and keep the platform default.
|
|
34
|
+
4. For **Change it**, edit the real surface, wait for the active `culvii dev` watcher to validate and sync it, regenerate the HTML with the same data, and ask again. Never show a revision that failed validation.
|
|
35
|
+
5. For **Use the default**, remove the custom attachment/resource as appropriate and wait for `culvii dev` to validate the updated graph.
|
|
36
|
+
|
|
37
|
+
The HTML is a review aid, not a second validator and not a claim of pixel parity with the Culvii runtime. Component contracts and bindings remain authoritative through `culvii dev`.
|
|
38
|
+
|
|
39
|
+
## Finish
|
|
40
|
+
|
|
41
|
+
Every node must end as accepted custom, selected existing, platform default, or explicitly skipped by the user. After the final workflow execution succeeds, delete only the tracked temporary preview directory and follow the development guide to stop the exact `culvii dev` process. Never report completion while a custom surface is awaiting review.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Surface input and action components
|
|
2
|
+
|
|
3
|
+
## ApproveRejectBar
|
|
4
|
+
|
|
5
|
+
Named approve/reject decision actions.
|
|
6
|
+
|
|
7
|
+
- Children: `none`
|
|
8
|
+
- Interaction: `multi-action`
|
|
9
|
+
- Actions: `{"allowed":["approve","reject"]}`
|
|
10
|
+
|
|
11
|
+
Props:
|
|
12
|
+
|
|
13
|
+
- `approveLabel` (string; bindable) — Approve button label.
|
|
14
|
+
|
|
15
|
+
- `canDecide` (boolean; bindable) — Whether the viewer may decide.
|
|
16
|
+
|
|
17
|
+
- `comment` (string; bindable) — Current comment value.
|
|
18
|
+
|
|
19
|
+
- `commentRequired` (boolean; bindable) — Require a comment before rejection.
|
|
20
|
+
|
|
21
|
+
- `decidedBy` (string; bindable) — Recorded decider.
|
|
22
|
+
|
|
23
|
+
- `decision` (string; bindable) — Recorded decision.
|
|
24
|
+
|
|
25
|
+
- `disabledReason` (string; bindable) — Reason actions are disabled.
|
|
26
|
+
|
|
27
|
+
- `rejectLabel` (string; bindable) — Reject button label.
|
|
28
|
+
|
|
29
|
+
## Button
|
|
30
|
+
|
|
31
|
+
Single-action button.
|
|
32
|
+
|
|
33
|
+
- Children: `none`
|
|
34
|
+
- Interaction: `single-action`
|
|
35
|
+
|
|
36
|
+
Props:
|
|
37
|
+
|
|
38
|
+
- `disabled` (boolean; bindable) — Disabled state.
|
|
39
|
+
|
|
40
|
+
- `label` (string; bindable) — Button label.
|
|
41
|
+
|
|
42
|
+
- `variant` (string; literal; values: "primary" | "default" | "danger") — Button variant.
|
|
43
|
+
|
|
44
|
+
## Checkbox
|
|
45
|
+
|
|
46
|
+
Boolean form input.
|
|
47
|
+
|
|
48
|
+
- Children: `none`
|
|
49
|
+
- Interaction: `input`
|
|
50
|
+
|
|
51
|
+
Props:
|
|
52
|
+
|
|
53
|
+
- `description` (string; bindable) — Helper text.
|
|
54
|
+
|
|
55
|
+
- `disabled` (boolean; bindable) — Disabled state.
|
|
56
|
+
|
|
57
|
+
- `label` (string; bindable) — Text beside the checkbox.
|
|
58
|
+
|
|
59
|
+
## Select
|
|
60
|
+
|
|
61
|
+
Single-choice form input.
|
|
62
|
+
|
|
63
|
+
- Children: `none`
|
|
64
|
+
- Interaction: `input`
|
|
65
|
+
|
|
66
|
+
Props:
|
|
67
|
+
|
|
68
|
+
- `disabled` (boolean; bindable) — Disabled state.
|
|
69
|
+
|
|
70
|
+
- `label` (string; bindable) — Field label.
|
|
71
|
+
|
|
72
|
+
- `options` (array; bindable) — Literal or bound options.
|
|
73
|
+
- Items: union; literal
|
|
74
|
+
- Variant 1: string; literal
|
|
75
|
+
- Variant 2: number; literal
|
|
76
|
+
- Variant 3: object; literal
|
|
77
|
+
- `label` (string; literal) — Displayed option label.
|
|
78
|
+
- `value` (union; literal; required) — Submitted option value.
|
|
79
|
+
- Variant 1: string; literal
|
|
80
|
+
- Variant 2: number; literal
|
|
81
|
+
|
|
82
|
+
- `placeholder` (string; bindable) — Placeholder.
|
|
83
|
+
|
|
84
|
+
## TextArea
|
|
85
|
+
|
|
86
|
+
Multi-line form input.
|
|
87
|
+
|
|
88
|
+
- Children: `none`
|
|
89
|
+
- Interaction: `input`
|
|
90
|
+
|
|
91
|
+
Props:
|
|
92
|
+
|
|
93
|
+
- `disabled` (boolean; bindable) — Disabled state.
|
|
94
|
+
|
|
95
|
+
- `label` (string; bindable) — Field label.
|
|
96
|
+
|
|
97
|
+
- `placeholder` (string; bindable) — Placeholder.
|
|
98
|
+
|
|
99
|
+
- `rows` (number; literal; integer; min 1) — Visible rows.
|
|
100
|
+
|
|
101
|
+
## TextField
|
|
102
|
+
|
|
103
|
+
Single-line form input.
|
|
104
|
+
|
|
105
|
+
- Children: `none`
|
|
106
|
+
- Interaction: `input`
|
|
107
|
+
|
|
108
|
+
Props:
|
|
109
|
+
|
|
110
|
+
- `disabled` (boolean; bindable) — Disabled state.
|
|
111
|
+
|
|
112
|
+
- `label` (string; bindable) — Field label.
|
|
113
|
+
|
|
114
|
+
- `placeholder` (string; bindable) — Placeholder.
|
|
115
|
+
|
|
116
|
+
- `type` (string; literal; values: "text" | "number" | "email" | "url") — HTML input type.
|
|
117
|
+
|
|
118
|
+
## Reserved and rejected component types
|
|
119
|
+
|
|
120
|
+
- `Accordion` — unsupported and rejected by validation.
|
|
121
|
+
- `AgentRunPanel` — unsupported and rejected by validation.
|
|
122
|
+
- `CalendarEventCard` — unsupported and rejected by validation.
|
|
123
|
+
- `DatePicker` — unsupported and rejected by validation.
|
|
124
|
+
- `ErrorPanel` — unsupported and rejected by validation.
|
|
125
|
+
- `Icon` — unsupported and rejected by validation.
|
|
126
|
+
- `Image` — unsupported and rejected by validation.
|
|
127
|
+
- `List` — unsupported and rejected by validation.
|
|
128
|
+
- `Markdown` — unsupported and rejected by validation.
|
|
129
|
+
- `ProgressBar` — unsupported and rejected by validation.
|
|
130
|
+
- `RadioGroup` — unsupported and rejected by validation.
|
|
131
|
+
- `SlackMessageCard` — unsupported and rejected by validation.
|
|
132
|
+
- `SlackThread` — unsupported and rejected by validation.
|
|
133
|
+
- `Spacer` — unsupported and rejected by validation.
|
|
134
|
+
- `Spinner` — unsupported and rejected by validation.
|
|
135
|
+
- `Tabs` — unsupported and rejected by validation.
|
|
136
|
+
- `Timeline` — unsupported and rejected by validation.
|
|
137
|
+
- `ToolCallCard` — unsupported and rejected by validation.
|
|
138
|
+
- `Tree` — unsupported and rejected by validation.
|
|
139
|
+
|
|
140
|
+
## Slot policies
|
|
141
|
+
|
|
142
|
+
- Output: actions navigate; forms rejected.
|
|
143
|
+
- Wait: actions navigate, node.resume, node.stop; forms allowed.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Surface layout components
|
|
2
|
+
|
|
3
|
+
## Card
|
|
4
|
+
|
|
5
|
+
Bordered container with an optional header and status.
|
|
6
|
+
|
|
7
|
+
- Children: `single`
|
|
8
|
+
|
|
9
|
+
Props:
|
|
10
|
+
|
|
11
|
+
- `dense` (boolean; literal) — Use tighter body padding.
|
|
12
|
+
|
|
13
|
+
- `map` (object; literal) — Map known displayed values to labels.
|
|
14
|
+
|
|
15
|
+
- `status` (any; bindable) — Status value used to derive the header pill.
|
|
16
|
+
|
|
17
|
+
- `statusLabel` (any; bindable) — Header status label.
|
|
18
|
+
|
|
19
|
+
- `statusTone` (string; literal; values: "neutral" | "info" | "success" | "warning" | "error") — Forced status tone.
|
|
20
|
+
|
|
21
|
+
- `subtitle` (string; bindable) — Header subtitle.
|
|
22
|
+
|
|
23
|
+
- `title` (string; bindable) — Header title.
|
|
24
|
+
|
|
25
|
+
- `transform` (string; literal; values: "capitalize" | "title" | "upper" | "lower" | "humanize") — Status label transform.
|
|
26
|
+
|
|
27
|
+
## Divider
|
|
28
|
+
|
|
29
|
+
Horizontal rule between content blocks.
|
|
30
|
+
|
|
31
|
+
- Children: `none`
|
|
32
|
+
|
|
33
|
+
Props:
|
|
34
|
+
|
|
35
|
+
_No props._
|
|
36
|
+
|
|
37
|
+
## Form
|
|
38
|
+
|
|
39
|
+
Groups wait-surface inputs and actions.
|
|
40
|
+
|
|
41
|
+
- Children: `list`
|
|
42
|
+
|
|
43
|
+
Props:
|
|
44
|
+
|
|
45
|
+
- `title` (string; bindable) — Form heading.
|
|
46
|
+
|
|
47
|
+
## Grid
|
|
48
|
+
|
|
49
|
+
Responsive equal-width columns.
|
|
50
|
+
|
|
51
|
+
- Children: `list`
|
|
52
|
+
|
|
53
|
+
Props:
|
|
54
|
+
|
|
55
|
+
- `columns` (number; literal; values: 1 | 2 | 3 | 4; integer) — Column count.
|
|
56
|
+
|
|
57
|
+
- `gap` (string; literal; values: "xs" | "sm" | "md" | "lg") — Spacing between children.
|
|
58
|
+
|
|
59
|
+
## Row
|
|
60
|
+
|
|
61
|
+
Wrapping horizontal group.
|
|
62
|
+
|
|
63
|
+
- Children: `list`
|
|
64
|
+
|
|
65
|
+
Props:
|
|
66
|
+
|
|
67
|
+
- `align` (string; literal; values: "start" | "center" | "end" | "baseline") — Cross-axis alignment.
|
|
68
|
+
|
|
69
|
+
- `gap` (string; literal; values: "xs" | "sm" | "md" | "lg") — Spacing between children.
|
|
70
|
+
|
|
71
|
+
- `justify` (string; literal; values: "between") — Set to between to push children apart.
|
|
72
|
+
|
|
73
|
+
## Section
|
|
74
|
+
|
|
75
|
+
Labelled group with one child.
|
|
76
|
+
|
|
77
|
+
- Children: `single`
|
|
78
|
+
|
|
79
|
+
Props:
|
|
80
|
+
|
|
81
|
+
- `collapsible` (boolean; literal) — Allow the section to be folded.
|
|
82
|
+
|
|
83
|
+
- `defaultOpen` (boolean; literal) — Initial collapsible state.
|
|
84
|
+
|
|
85
|
+
- `description` (string; bindable) — Section description.
|
|
86
|
+
|
|
87
|
+
- `title` (string; bindable) — Section label.
|
|
88
|
+
|
|
89
|
+
## Stack
|
|
90
|
+
|
|
91
|
+
Vertical stack and the default surface container.
|
|
92
|
+
|
|
93
|
+
- Children: `list`
|
|
94
|
+
|
|
95
|
+
Props:
|
|
96
|
+
|
|
97
|
+
- `gap` (string; literal; values: "xs" | "sm" | "md" | "lg") — Spacing between children.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Validation and common failures
|
|
2
|
+
|
|
3
|
+
- `agentReferenceKey` must resolve to a collected agent ID; `agentId` is invalid.
|
|
4
|
+
- Workflow-tool `workflowId` values and local custom surface keys must resolve.
|
|
5
|
+
- Workflow-tool targets follow the trigger, agent-node, and reference-depth rules in [workflows.md](workflows.md).
|
|
6
|
+
- Credentialed nodes require `{ name, id }`; model configs require `credentialId`. Never author raw secrets.
|
|
7
|
+
- A surface's slot must match `ui.output` or `ui.wait`.
|
|
8
|
+
- Surface component IDs must be unique, reachable, and connected by ID references. Maximum graph depth is 12 and maximum component count is 300.
|
|
9
|
+
- Use only active catalog types. Reserved types are rejected.
|
|
10
|
+
- Bindings accept `$output`, `$input`, `$exec`, `$binary`, and wait-only `$form`; JSON Pointer syntax and step names must be exact.
|
|
11
|
+
- Output surfaces allow navigation actions. Wait surfaces additionally allow node resume/stop actions and form input.
|
|
12
|
+
- A versioned custom surface reference may point to a published version. An unversioned local custom surface must be present in the same collected graph.
|
|
13
|
+
|
|
14
|
+
When validation fails, fix the resource definition rather than bypassing validation. Keep running `culvii dev` after each fix until evaluation, validation, and draft sync succeed. Do not present the resources as complete while errors remain.
|
|
15
|
+
|
|
16
|
+
After validation succeeds, use the [workflow feedback cycle](feedback-cycle.md) for requested workflows. Feedback runtime overrides never replace platform validation.
|
|
17
|
+
|
|
18
|
+
Further reading: [Testing](https://culvii.com/docs/sdk-reference/guides/testing/).
|