@culvii/cli 0.0.7 → 0.0.9
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-PELQJJQQ.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-KM7ZWOEG.js} +1 -1
- package/dist/index.js +31 -681
- package/dist/lib/evaluator.js +2 -2
- package/dist/login-3OMS75QL.js +39 -0
- package/dist/{logout-TDZA462P.js → logout-ZYTERDYA.js} +1 -1
- package/dist/skill-bundle-Z4FQO3CQ.js +2553 -0
- package/package.json +9 -5
- package/skills/culvii/.culvii-skill.json +90 -0
- package/skills/culvii/SKILL.md +104 -0
- package/skills/culvii/agents/openai.yaml +4 -0
- package/skills/culvii/examples/agent-workflow.culvii.ts +47 -0
- package/skills/culvii/examples/binary-document-workflow.culvii.ts +80 -0
- package/skills/culvii/examples/complete-workflow.culvii.ts +81 -0
- package/skills/culvii/examples/custom-output-surface.culvii.ts +69 -0
- package/skills/culvii/examples/custom-wait-surface.culvii.ts +90 -0
- package/skills/culvii/examples/human-in-the-loop-workflow.culvii.ts +125 -0
- package/skills/culvii/examples/integration-agent-workflow.culvii.ts +101 -0
- package/skills/culvii/examples/multi-agent-workflow-tools.culvii.ts +157 -0
- package/skills/culvii/examples/nested-agent-workflow.culvii.ts +108 -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 +77 -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 +217 -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-argocd.md +44 -0
- package/skills/culvii/references/node-clickup-doc.md +38 -0
- package/skills/culvii/references/node-clickup-ticket.md +47 -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-loop-break.md +26 -0
- package/skills/culvii/references/node-core-loop-continue.md +26 -0
- package/skills/culvii/references/node-core-loop-output.md +24 -0
- package/skills/culvii/references/node-core-loop.md +25 -0
- package/skills/culvii/references/node-core-merge.md +23 -0
- package/skills/culvii/references/node-core-set.md +24 -0
- package/skills/culvii/references/node-core-switch.md +24 -0
- package/skills/culvii/references/node-cost-explorer.md +45 -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-github-poll-trigger.md +31 -0
- package/skills/culvii/references/node-github-webhook-trigger.md +27 -0
- package/skills/culvii/references/node-github.md +251 -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-grafana-dashboard.md +38 -0
- package/skills/culvii/references/node-grafana-data-source.md +42 -0
- package/skills/culvii/references/node-grafana-query.md +34 -0
- package/skills/culvii/references/node-hibp-list-domains.md +27 -0
- package/skills/culvii/references/node-hibp-stealer-logs.md +30 -0
- package/skills/culvii/references/node-kubernetes.md +51 -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 +56 -0
- package/skills/culvii/references/node-microsoft-sharepoint.md +40 -0
- package/skills/culvii/references/node-onionsearch.md +27 -0
- package/skills/culvii/references/node-prometheus.md +40 -0
- package/skills/culvii/references/node-s3.md +40 -0
- package/skills/culvii/references/node-slack-events-trigger.md +37 -0
- package/skills/culvii/references/node-slack-interactions-trigger.md +28 -0
- package/skills/culvii/references/node-slack-trigger.md +40 -0
- package/skills/culvii/references/node-slack.md +162 -0
- package/skills/culvii/references/node-supabase.md +61 -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 +51 -0
- package/skills/culvii/references/runtime-values.md +36 -0
- package/skills/culvii/references/surface-authoring.md +38 -0
- package/skills/culvii/references/surface-display.md +390 -0
- package/skills/culvii/references/surface-feedback.md +38 -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. Binding `file` alone does not make the chip clickable — declare `actions.default` as a `navigate` action with `href` bound to the same descriptor's `downloadUrl` path (e.g. `{ path: "/$binary/<step>/main/0/0/<key>/downloadUrl" }`), or the chip renders as a read-only file summary with no download button.
|
|
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,38 @@
|
|
|
1
|
+
# Surface configuration and visual approval
|
|
2
|
+
|
|
3
|
+
Use this flow for every newly authored workflow. The agent authors surfaces; the user reviews the exact Culvii renderer before accepting them.
|
|
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 runtime widgets or platform 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 create a custom surface, attach a real existing surface, or use the default. Combine independent choices into the fewest prompts the agent supports.
|
|
9
|
+
3. Read [surface authoring](surface-authoring.md) and only the component catalog pages needed for custom choices. Use expected output shape and workflow purpose; do not ask the user to write component documents.
|
|
10
|
+
4. Create every custom candidate as a real Culvii `Surface` and attach it to its workflow step before the first `culvii dev`. Attach selected existing surfaces now and leave default choices unchanged.
|
|
11
|
+
|
|
12
|
+
Do not add a wait surface or pause merely to display output. A wait surface is valid only when the workflow already needs human input.
|
|
13
|
+
|
|
14
|
+
## Validate, execute, and review
|
|
15
|
+
|
|
16
|
+
1. Start one tracked `culvii dev` process after the workflow and all candidate surfaces exist. Fix every validation and sync error before previewing.
|
|
17
|
+
2. Run the [workflow feedback cycle](feedback-cycle.md). Its successful execution supplies the preview data. For a cron, webhook, or polling trigger, use its temporary manual-trigger conversion and representative payload; never invoke or mock the runtime trigger implementation.
|
|
18
|
+
3. For every custom surface in that execution, create a review manifest. It includes only the configured nodes, never the full run:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"items": [
|
|
23
|
+
{ "executionId": "exc_…", "nodeId": "research-agent" },
|
|
24
|
+
{ "executionId": "exc_…", "nodeId": "report-output" }
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
4. Run `culvii surface review create --file <manifest.json> --json`. It returns a Console URL. Ask permission before running `culvii surface review open <review-id>`; otherwise show the URL to the user and keep the same chat run open.
|
|
30
|
+
5. The review page uses the production `SurfaceView` renderer, groups items by workflow, and labels each preview as **Mocked output**, **Simulated trigger**, or **Executed output**. It shows only the configured custom surfaces.
|
|
31
|
+
6. Wait for the user to choose **Keep this surface**, **Request changes**, or **Use default** for every item and submit the review. Read `culvii surface review get <review-id> --json` to obtain the decisions; do not ask the user to paste them into chat.
|
|
32
|
+
7. For changes, edit the real surface and let the active `culvii dev` watcher validate/sync it. Create a new review after the next successful feedback execution. For default, remove the custom attachment/resource as appropriate and let `culvii dev` validate it.
|
|
33
|
+
|
|
34
|
+
The review is an ephemeral, user-scoped record. It resolves the current draft surface and current execution data on each page load, so it never claims that an old preview matches a revised surface. It expires after two hours; recreate it if needed.
|
|
35
|
+
|
|
36
|
+
## Finish
|
|
37
|
+
|
|
38
|
+
Every configured node must end as accepted custom, selected existing, platform default, or explicitly skipped. Restore any temporary trigger conversion, wait for `culvii dev` to sync it, then stop only the exact `culvii dev` process started for this task. 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/).
|