@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.
Files changed (101) hide show
  1. package/COMMANDS.md +5 -5
  2. package/README.md +15 -6
  3. package/USAGE.md +11 -10
  4. package/dist/DeployView-D4UEXMDJ.js +2 -0
  5. package/dist/DevView-GPKSSOLA.js +2 -0
  6. package/dist/EnvView-3ZURMIZS.js +2 -0
  7. package/dist/{HelpView-YLCEPIFY.js → HelpView-PELQJJQQ.js} +1 -1
  8. package/dist/WhoamiView-TKSYSHQ2.js +2 -0
  9. package/dist/{WorkspaceView-RNFALIPM.js → WorkspaceView-ID7ZMBHV.js} +1 -1
  10. package/dist/{chunk-IRZMWFC3.js → chunk-KM7ZWOEG.js} +1 -1
  11. package/dist/index.js +31 -681
  12. package/dist/lib/evaluator.js +2 -2
  13. package/dist/login-3OMS75QL.js +39 -0
  14. package/dist/{logout-TDZA462P.js → logout-ZYTERDYA.js} +1 -1
  15. package/dist/skill-bundle-Z4FQO3CQ.js +2553 -0
  16. package/package.json +9 -5
  17. package/skills/culvii/.culvii-skill.json +90 -0
  18. package/skills/culvii/SKILL.md +104 -0
  19. package/skills/culvii/agents/openai.yaml +4 -0
  20. package/skills/culvii/examples/agent-workflow.culvii.ts +47 -0
  21. package/skills/culvii/examples/binary-document-workflow.culvii.ts +80 -0
  22. package/skills/culvii/examples/complete-workflow.culvii.ts +81 -0
  23. package/skills/culvii/examples/custom-output-surface.culvii.ts +69 -0
  24. package/skills/culvii/examples/custom-wait-surface.culvii.ts +90 -0
  25. package/skills/culvii/examples/human-in-the-loop-workflow.culvii.ts +125 -0
  26. package/skills/culvii/examples/integration-agent-workflow.culvii.ts +101 -0
  27. package/skills/culvii/examples/multi-agent-workflow-tools.culvii.ts +157 -0
  28. package/skills/culvii/examples/nested-agent-workflow.culvii.ts +108 -0
  29. package/skills/culvii/examples/output-surface.culvii.ts +45 -0
  30. package/skills/culvii/examples/wait-surface.culvii.ts +24 -0
  31. package/skills/culvii/references/agents.md +77 -0
  32. package/skills/culvii/references/authoring-files.md +21 -0
  33. package/skills/culvii/references/cli-guide.md +22 -0
  34. package/skills/culvii/references/cli-reference.md +217 -0
  35. package/skills/culvii/references/feedback-cycle.md +43 -0
  36. package/skills/culvii/references/integrations.md +13 -0
  37. package/skills/culvii/references/kit-api.md +35 -0
  38. package/skills/culvii/references/node-argocd.md +44 -0
  39. package/skills/culvii/references/node-clickup-doc.md +38 -0
  40. package/skills/culvii/references/node-clickup-ticket.md +47 -0
  41. package/skills/culvii/references/node-core-agent.md +27 -0
  42. package/skills/culvii/references/node-core-browser-automation.md +53 -0
  43. package/skills/culvii/references/node-core-code.md +28 -0
  44. package/skills/culvii/references/node-core-http.md +42 -0
  45. package/skills/culvii/references/node-core-if.md +26 -0
  46. package/skills/culvii/references/node-core-jwt.md +31 -0
  47. package/skills/culvii/references/node-core-loop-break.md +26 -0
  48. package/skills/culvii/references/node-core-loop-continue.md +26 -0
  49. package/skills/culvii/references/node-core-loop-output.md +24 -0
  50. package/skills/culvii/references/node-core-loop.md +25 -0
  51. package/skills/culvii/references/node-core-merge.md +23 -0
  52. package/skills/culvii/references/node-core-set.md +24 -0
  53. package/skills/culvii/references/node-core-switch.md +24 -0
  54. package/skills/culvii/references/node-cost-explorer.md +45 -0
  55. package/skills/culvii/references/node-cron-trigger.md +25 -0
  56. package/skills/culvii/references/node-elasticsearch.md +39 -0
  57. package/skills/culvii/references/node-github-poll-trigger.md +31 -0
  58. package/skills/culvii/references/node-github-webhook-trigger.md +27 -0
  59. package/skills/culvii/references/node-github.md +251 -0
  60. package/skills/culvii/references/node-gmail-trigger.md +44 -0
  61. package/skills/culvii/references/node-gmail.md +57 -0
  62. package/skills/culvii/references/node-google-calendar.md +51 -0
  63. package/skills/culvii/references/node-google-docs.md +46 -0
  64. package/skills/culvii/references/node-grafana-dashboard.md +38 -0
  65. package/skills/culvii/references/node-grafana-data-source.md +42 -0
  66. package/skills/culvii/references/node-grafana-query.md +34 -0
  67. package/skills/culvii/references/node-hibp-list-domains.md +27 -0
  68. package/skills/culvii/references/node-hibp-stealer-logs.md +30 -0
  69. package/skills/culvii/references/node-kubernetes.md +51 -0
  70. package/skills/culvii/references/node-manual-trigger.md +24 -0
  71. package/skills/culvii/references/node-microsoft-outlook-trigger.md +41 -0
  72. package/skills/culvii/references/node-microsoft-outlook.md +56 -0
  73. package/skills/culvii/references/node-microsoft-sharepoint.md +40 -0
  74. package/skills/culvii/references/node-onionsearch.md +27 -0
  75. package/skills/culvii/references/node-prometheus.md +40 -0
  76. package/skills/culvii/references/node-s3.md +40 -0
  77. package/skills/culvii/references/node-slack-events-trigger.md +37 -0
  78. package/skills/culvii/references/node-slack-interactions-trigger.md +28 -0
  79. package/skills/culvii/references/node-slack-trigger.md +40 -0
  80. package/skills/culvii/references/node-slack.md +162 -0
  81. package/skills/culvii/references/node-supabase.md +61 -0
  82. package/skills/culvii/references/node-twilio.md +39 -0
  83. package/skills/culvii/references/node-wait-timer.md +24 -0
  84. package/skills/culvii/references/node-webhook-trigger.md +24 -0
  85. package/skills/culvii/references/nodes-index.md +51 -0
  86. package/skills/culvii/references/runtime-values.md +36 -0
  87. package/skills/culvii/references/surface-authoring.md +38 -0
  88. package/skills/culvii/references/surface-display.md +390 -0
  89. package/skills/culvii/references/surface-feedback.md +38 -0
  90. package/skills/culvii/references/surface-input-actions.md +143 -0
  91. package/skills/culvii/references/surface-layout.md +97 -0
  92. package/skills/culvii/references/validation.md +18 -0
  93. package/skills/culvii/references/workflows.md +30 -0
  94. package/dist/DeployView-GEJNL26A.js +0 -2
  95. package/dist/DevView-SOPAMSZ4.js +0 -2
  96. package/dist/EnvView-MCZC2NBO.js +0 -2
  97. package/dist/WhoamiView-67HV2L5J.js +0 -2
  98. package/dist/chunk-MPKGJC7N.js +0 -2
  99. package/dist/login-G5QUR55L.js +0 -36
  100. /package/dist/{chunk-5NBKYMD7.js → chunk-56C3DFV2.js} +0 -0
  101. /package/dist/{chunk-JFIFRAAR.js → chunk-RS5GDTRN.js} +0 -0
@@ -0,0 +1,37 @@
1
+ # slackEventsTrigger
2
+
3
+ - Type ID: `slackEventsTrigger`
4
+ - Kind: `trigger`
5
+ - Credentials: required as `credentials: { name, id }`; `name` must be one of: `slack_events`
6
+ - Feedback mock: required
7
+
8
+ Resolve the credential through [integration selection](integrations.md); never ask the user to copy a credential ID.
9
+
10
+ ## Props
11
+
12
+ - `method`: string; required
13
+ - `event`: options; optional
14
+ - Values: `message`, `app_mention`, `reaction_added`, `all`
15
+ - `filters`: object; optional
16
+ - `channelId`: string; optional
17
+ - `userId`: string; optional
18
+ - `textContains`: string; optional
19
+ - `excludeBots`: boolean; optional
20
+ - `threads`: options; optional
21
+ - Values: `all`, `topLevel`, `replies`
22
+ - `includeMessageChanges`: boolean; optional
23
+ - `pauseAfterExecution`: boolean; optional
24
+
25
+ ## Example
26
+
27
+ ```ts
28
+ new Step({
29
+ id: 'slack-events-trigger',
30
+ name: 'slackEventsTrigger',
31
+ type: 'slackEventsTrigger',
32
+ credentials: { name: 'slack_events', id: 'credential-id' },
33
+ params: { /* use the required props and conditional values above */ },
34
+ });
35
+ ```
36
+
37
+ Further reading: [Culvii slackEventsTrigger node](https://culvii.com/docs/nodes/triggers/slack-events-trigger/).
@@ -0,0 +1,28 @@
1
+ # slackInteractionsTrigger
2
+
3
+ - Type ID: `slackInteractionsTrigger`
4
+ - Kind: `trigger`
5
+ - Credentials: required as `credentials: { name, id }`; `name` must be one of: `slack_events`
6
+ - Feedback mock: required
7
+
8
+ Resolve the credential through [integration selection](integrations.md); never ask the user to copy a credential ID.
9
+
10
+ ## Props
11
+
12
+ - `method`: string; required
13
+ - `actionId`: string; optional
14
+ - `pauseAfterExecution`: boolean; optional
15
+
16
+ ## Example
17
+
18
+ ```ts
19
+ new Step({
20
+ id: 'slack-interactions-trigger',
21
+ name: 'slackInteractionsTrigger',
22
+ type: 'slackInteractionsTrigger',
23
+ credentials: { name: 'slack_events', id: 'credential-id' },
24
+ params: { /* use the required props and conditional values above */ },
25
+ });
26
+ ```
27
+
28
+ Further reading: [Culvii slackInteractionsTrigger node](https://culvii.com/docs/nodes/triggers/slack-interactions-trigger/).
@@ -0,0 +1,40 @@
1
+ # slackTrigger
2
+
3
+ - Type ID: `slackTrigger`
4
+ - Kind: `trigger`
5
+ - Credentials: required as `credentials: { name, id }`; `name` must be one of: `slack_bot`, `slack_user`
6
+ - Feedback mock: required
7
+
8
+ Resolve the credential through [integration selection](integrations.md); never ask the user to copy a credential ID.
9
+
10
+ ## Props
11
+
12
+ - `pollIntervalMs`: number; required
13
+ - `event`: options; required
14
+ - Values: `messagePosted`
15
+ - `channelId`: string; required
16
+ - `output`: options; optional
17
+ - Values: `simple`, `raw`
18
+ - `filters`: object; optional
19
+ - `userId`: string; optional
20
+ - `textContains`: string; optional
21
+ - `excludeBots`: boolean; optional
22
+ - `subtype`: string; optional
23
+ - `options`: object; optional
24
+ - `maxMessages`: number; optional
25
+ - `includeThreadReplies`: boolean; optional
26
+ - `pauseAfterExecution`: boolean; optional
27
+
28
+ ## Example
29
+
30
+ ```ts
31
+ new Step({
32
+ id: 'slack-trigger',
33
+ name: 'slackTrigger',
34
+ type: 'slackTrigger',
35
+ credentials: { name: 'slack_bot', id: 'credential-id' },
36
+ params: { /* use the required props and conditional values above */ },
37
+ });
38
+ ```
39
+
40
+ Further reading: [Culvii slackTrigger node](https://culvii.com/docs/nodes/triggers/slack-trigger/).
@@ -0,0 +1,162 @@
1
+ # slack
2
+
3
+ - Type ID: `slack`
4
+ - Kind: `action`
5
+ - Credentials: required as `credentials: { name, id }`; `name` must be one of: `slack_bot`, `slack_user`
6
+ - Feedback mock: required
7
+
8
+ Resolve the credential through [integration selection](integrations.md); never ask the user to copy a credential ID.
9
+
10
+ ## Props
11
+
12
+ - `resource`: options; required
13
+ - Values: `message`, `reaction`, `user`, `channel`, `file`, `search`, `interaction`
14
+ - `operation`: options; required; when resource=message
15
+ - Values: `send`, `sendByEmail`, `update`, `delete`, `getReplies`, `getPermalink`, `schedule`, `listScheduled`, `cancelScheduled`, `sendEphemeral`
16
+ - `channel`: string; required; when resource=message, operation=send
17
+ - `text`: string; required; when resource=message, operation=send
18
+ - `additionalFields`: object; optional; when resource=message, operation=send
19
+ - `thread_ts`: string; optional
20
+ - `reply_broadcast`: boolean; optional
21
+ - `blocks`: json; optional
22
+ - `mrkdwn`: boolean; optional
23
+ - `link_names`: boolean; optional
24
+ - `unfurl_links`: boolean; optional
25
+ - `unfurl_media`: boolean; optional
26
+ - `email`: string; required; when resource=message, operation=sendByEmail
27
+ - `text`: string; required; when resource=message, operation=sendByEmail
28
+ - `messageOptions`: object; optional; when resource=message, operation=sendByEmail
29
+ - `blocks`: json; optional
30
+ - `mrkdwn`: boolean; optional
31
+ - `link_names`: boolean; optional
32
+ - `unfurl_links`: boolean; optional
33
+ - `unfurl_media`: boolean; optional
34
+ - `channel`: string; required; when resource=message, operation=sendEphemeral
35
+ - `userId`: string; required; when resource=message, operation=sendEphemeral
36
+ - `text`: string; required; when resource=message, operation=sendEphemeral
37
+ - `ephemeralOptions`: object; optional; when resource=message, operation=sendEphemeral
38
+ - `thread_ts`: string; optional
39
+ - `blocks`: json; optional
40
+ - `link_names`: boolean; optional
41
+ - `channel`: string; required; when resource=message, operation=schedule
42
+ - `text`: string; required; when resource=message, operation=schedule
43
+ - `postAt`: dateTime; required; when resource=message, operation=schedule
44
+ - `scheduleOptions`: object; optional; when resource=message, operation=schedule
45
+ - `thread_ts`: string; optional
46
+ - `reply_broadcast`: boolean; optional
47
+ - `blocks`: json; optional
48
+ - `link_names`: boolean; optional
49
+ - `unfurl_links`: boolean; optional
50
+ - `unfurl_media`: boolean; optional
51
+ - `channelId`: string; optional; when resource=message, operation=listScheduled
52
+ - `oldest`: dateTime; optional; when resource=message, operation=listScheduled
53
+ - `latest`: dateTime; optional; when resource=message, operation=listScheduled
54
+ - `limit`: number; optional; when resource=message, operation=listScheduled
55
+ - `cursor`: string; optional; when resource=message, operation=listScheduled
56
+ - `channelId`: string; required; when resource=message, operation=cancelScheduled
57
+ - `scheduledMessageId`: string; required; when resource=message, operation=cancelScheduled
58
+ - `channelId`: string; required; when resource=message, operation=update
59
+ - `messageTs`: string; required; when resource=message, operation=update
60
+ - `text`: string; required; when resource=message, operation=update
61
+ - `blocks`: json; optional; when resource=message, operation=update
62
+ - `channelId`: string; required; when resource=message, operation=delete
63
+ - `messageTs`: string; required; when resource=message, operation=delete
64
+ - `channelId`: string; required; when resource=message, operation=getReplies
65
+ - `threadTs`: string; required; when resource=message, operation=getReplies
66
+ - `limit`: number; optional; when resource=message, operation=getReplies
67
+ - `output`: options; optional; when resource=message, operation=getReplies
68
+ - Values: `simple`, `raw`
69
+ - `cursor`: string; optional; when resource=message, operation=getReplies
70
+ - `channelId`: string; required; when resource=message, operation=getPermalink
71
+ - `messageTs`: string; required; when resource=message, operation=getPermalink
72
+ - `operation`: options; required; when resource=reaction
73
+ - Values: `add`, `remove`
74
+ - `channelId`: string; required; when resource=reaction, operation=add
75
+ - `messageTs`: string; required; when resource=reaction, operation=add
76
+ - `emoji`: string; required; when resource=reaction, operation=add
77
+ - `channelId`: string; required; when resource=reaction, operation=remove
78
+ - `messageTs`: string; required; when resource=reaction, operation=remove
79
+ - `emoji`: string; required; when resource=reaction, operation=remove
80
+ - `operation`: options; required; when resource=user
81
+ - Values: `getByEmail`, `getMany`, `getProfile`, `updateProfile`
82
+ - `email`: string; required; when resource=user, operation=getByEmail
83
+ - `output`: options; optional; when resource=user, operation=getByEmail
84
+ - Values: `simple`, `raw`
85
+ - `limit`: number; optional; when resource=user, operation=getMany
86
+ - `output`: options; optional; when resource=user, operation=getMany
87
+ - Values: `simple`, `raw`
88
+ - `cursor`: string; optional; when resource=user, operation=getMany
89
+ - `user`: string; optional; when resource=user, operation=getProfile
90
+ - `user`: string; optional; when resource=user, operation=updateProfile
91
+ - `clearStatus`: boolean; optional; when resource=user, operation=updateProfile
92
+ - `status_text`: string; optional; when resource=user, operation=updateProfile
93
+ - `status_emoji`: string; optional; when resource=user, operation=updateProfile
94
+ - `status_expiration`: string; optional; when resource=user, operation=updateProfile
95
+ - `first_name`: string; optional; when resource=user, operation=updateProfile
96
+ - `last_name`: string; optional; when resource=user, operation=updateProfile
97
+ - `email`: string; optional; when resource=user, operation=updateProfile
98
+ - `operation`: options; required; when resource=channel
99
+ - Values: `getMany`, `create`, `archive`, `setTopic`, `invite`, `remove`
100
+ - `channelTypes`: options; optional; when resource=channel, operation=getMany
101
+ - Values: `public`, `private`, `publicAndPrivate`, `directMessages`, `groupDirectMessages`, `all`
102
+ - `excludeArchived`: boolean; optional; when resource=channel, operation=getMany
103
+ - `limit`: number; optional; when resource=channel, operation=getMany
104
+ - `output`: options; optional; when resource=channel, operation=getMany
105
+ - Values: `simple`, `raw`
106
+ - `cursor`: string; optional; when resource=channel, operation=getMany
107
+ - `channelName`: string; required; when resource=channel, operation=create
108
+ - `isPrivate`: boolean; optional; when resource=channel, operation=create
109
+ - `channelId`: string; required; when resource=channel, operation=archive
110
+ - `channelId`: string; required; when resource=channel, operation=setTopic
111
+ - `topic`: string; required; when resource=channel, operation=setTopic
112
+ - `channelId`: string; required; when resource=channel, operation=invite
113
+ - `userIds`: string; required; when resource=channel, operation=invite
114
+ - `channelId`: string; required; when resource=channel, operation=remove
115
+ - `userId`: string; required; when resource=channel, operation=remove
116
+ - `operation`: options; required; when resource=file
117
+ - Values: `upload`, `getInfo`, `download`
118
+ - `binaryPropertyName`: string; required; when resource=file, operation=upload
119
+ - `channelId`: string; optional; when resource=file, operation=upload
120
+ - `uploadOptions`: object; optional; when resource=file, operation=upload
121
+ - `filename`: string; optional
122
+ - `title`: string; optional
123
+ - `initial_comment`: string; optional
124
+ - `thread_ts`: string; optional
125
+ - `alt_txt`: string; optional
126
+ - `fileId`: string; required; when resource=file, operation=getInfo
127
+ - `output`: options; optional; when resource=file, operation=getInfo
128
+ - Values: `simple`, `raw`
129
+ - `fileId`: string; required; when resource=file, operation=download
130
+ - `binaryPropertyName`: string; required; when resource=file, operation=download
131
+ - `operation`: options; required; when resource=search
132
+ - Values: `messages`, `files`
133
+ - `query`: string; required; when resource=search
134
+ - `count`: number; optional; when resource=search
135
+ - `page`: number; optional; when resource=search
136
+ - `sort`: options; optional; when resource=search
137
+ - Values: `score`, `timestamp`
138
+ - `sort_dir`: options; optional; when resource=search
139
+ - Values: `asc`, `desc`
140
+ - `operation`: options; required; when resource=interaction
141
+ - Values: `respond`
142
+ - `responseUrl`: string; required; when resource=interaction, operation=respond
143
+ - `text`: string; optional; when resource=interaction, operation=respond
144
+ - `blocks`: json; optional; when resource=interaction, operation=respond
145
+ - `replaceOriginal`: boolean; optional; when resource=interaction, operation=respond
146
+ - `responseType`: options; optional; when resource=interaction, operation=respond
147
+ - Values: `in_channel`, `ephemeral`
148
+ - `pauseAfterExecution`: boolean; optional
149
+
150
+ ## Example
151
+
152
+ ```ts
153
+ new Step({
154
+ id: 'slack',
155
+ name: 'slack',
156
+ type: 'slack',
157
+ credentials: { name: 'slack_bot', id: 'credential-id' },
158
+ params: { /* use the required props and conditional values above */ },
159
+ });
160
+ ```
161
+
162
+ Further reading: [Culvii slack node](https://culvii.com/docs/nodes/slack/).
@@ -0,0 +1,61 @@
1
+ # supabase
2
+
3
+ - Type ID: `supabase`
4
+ - Kind: `action`
5
+ - Credentials: required as `credentials: { name, id }`; `name` must be one of: `supabase`
6
+ - Feedback mock: required
7
+
8
+ Resolve the credential through [integration selection](integrations.md); never ask the user to copy a credential ID.
9
+
10
+ ## Props
11
+
12
+ - `resource`: options; required
13
+ - Values: `database`, `storage`
14
+ - `operation`: options; required; when resource=database
15
+ - Values: `getRows`, `insertRow`, `updateRows`, `upsertRow`, `deleteRows`, `callFunction`
16
+ - `operation`: options; required; when resource=storage
17
+ - Values: `uploadFile`, `downloadFile`, `listFiles`, `deleteFile`
18
+ - `table`: string; required; when resource=database, operation=getRows
19
+ - `columns`: string; optional; when resource=database, operation=getRows
20
+ - `filters`: json; optional; when resource=database, operation=getRows
21
+ - `order`: string; optional; when resource=database, operation=getRows
22
+ - `limit`: number; optional; when resource=database, operation=getRows
23
+ - `table`: string; required; when resource=database, operation=insertRow
24
+ - `rowData`: json; required; when resource=database, operation=insertRow
25
+ - `table`: string; required; when resource=database, operation=updateRows
26
+ - `filters`: json; required; when resource=database, operation=updateRows
27
+ - `rowData`: json; required; when resource=database, operation=updateRows
28
+ - `table`: string; required; when resource=database, operation=upsertRow
29
+ - `rowData`: json; required; when resource=database, operation=upsertRow
30
+ - `onConflict`: string; optional; when resource=database, operation=upsertRow
31
+ - `table`: string; required; when resource=database, operation=deleteRows
32
+ - `filters`: json; required; when resource=database, operation=deleteRows
33
+ - `functionName`: string; required; when resource=database, operation=callFunction
34
+ - `args`: json; optional; when resource=database, operation=callFunction
35
+ - `bucket`: string; required; when resource=storage, operation=uploadFile
36
+ - `filePath`: string; required; when resource=storage, operation=uploadFile
37
+ - `binaryPropertyName`: string; required; when resource=storage, operation=uploadFile
38
+ - `upsert`: boolean; optional; when resource=storage, operation=uploadFile
39
+ - `bucket`: string; required; when resource=storage, operation=downloadFile
40
+ - `filePath`: string; required; when resource=storage, operation=downloadFile
41
+ - `binaryPropertyName`: string; required; when resource=storage, operation=downloadFile
42
+ - `bucket`: string; required; when resource=storage, operation=listFiles
43
+ - `folderPath`: string; optional; when resource=storage, operation=listFiles
44
+ - `limit`: number; optional; when resource=storage, operation=listFiles
45
+ - `bucket`: string; required; when resource=storage, operation=deleteFile
46
+ - `filePath`: string; required; when resource=storage, operation=deleteFile
47
+ - `pauseAfterExecution`: boolean; optional
48
+
49
+ ## Example
50
+
51
+ ```ts
52
+ new Step({
53
+ id: 'supabase',
54
+ name: 'supabase',
55
+ type: 'supabase',
56
+ credentials: { name: 'supabase', id: 'credential-id' },
57
+ params: { /* use the required props and conditional values above */ },
58
+ });
59
+ ```
60
+
61
+ Further reading: [Culvii supabase node](https://culvii.com/docs/nodes/supabase/).
@@ -0,0 +1,39 @@
1
+ # twilio
2
+
3
+ - Type ID: `twilio`
4
+ - Kind: `action`
5
+ - Credentials: required as `credentials: { name, id }`; `name` must be one of: `twilio`
6
+ - Feedback mock: required
7
+
8
+ Resolve the credential through [integration selection](integrations.md); never ask the user to copy a credential ID.
9
+
10
+ ## Props
11
+
12
+ - `resource`: options; optional
13
+ - Values: `call`
14
+ - `operation`: options; optional; when resource=call
15
+ - Values: `makeCall`
16
+ - `fromNumber`: string; required; when resource=call, operation=makeCall
17
+ - `toNumber`: string; required; when resource=call, operation=makeCall
18
+ - `sayList`: array; required; when resource=call, operation=makeCall
19
+ - `noResponseSayList`: array; optional; when resource=call, operation=makeCall
20
+ - `positiveResponseSayList`: array; optional; when resource=call, operation=makeCall
21
+ - `negativeResponseSayList`: array; optional; when resource=call, operation=makeCall
22
+ - `positiveResponse`: number; required; when resource=call, operation=makeCall
23
+ - `speechRate`: string; optional; when resource=call, operation=makeCall
24
+ - `record`: boolean; optional; when resource=call, operation=makeCall
25
+ - `pauseAfterExecution`: boolean; optional
26
+
27
+ ## Example
28
+
29
+ ```ts
30
+ new Step({
31
+ id: 'twilio',
32
+ name: 'twilio',
33
+ type: 'twilio',
34
+ credentials: { name: 'twilio', id: 'credential-id' },
35
+ params: { /* use the required props and conditional values above */ },
36
+ });
37
+ ```
38
+
39
+ Further reading: [Culvii twilio node](https://culvii.com/docs/nodes/twilio/).
@@ -0,0 +1,24 @@
1
+ # waitTimer
2
+
3
+ - Type ID: `waitTimer`
4
+ - Kind: `action`
5
+ - Credentials: not required
6
+ - Feedback mock: not required
7
+
8
+ ## Props
9
+
10
+ - `resumeIn`: number; required
11
+ - `pauseAfterExecution`: boolean; optional
12
+
13
+ ## Example
14
+
15
+ ```ts
16
+ new Step({
17
+ id: 'wait-timer',
18
+ name: 'waitTimer',
19
+ type: 'waitTimer',
20
+ params: { /* use the required props and conditional values above */ },
21
+ });
22
+ ```
23
+
24
+ Further reading: [Culvii waitTimer node](https://culvii.com/docs/nodes/wait-timer/).
@@ -0,0 +1,24 @@
1
+ # webhookTrigger
2
+
3
+ - Type ID: `webhookTrigger`
4
+ - Kind: `trigger`
5
+ - Credentials: not required
6
+ - Feedback mock: not required
7
+
8
+ ## Props
9
+
10
+ - `method`: string; required
11
+ - `pauseAfterExecution`: boolean; optional
12
+
13
+ ## Example
14
+
15
+ ```ts
16
+ new Step({
17
+ id: 'webhook-trigger',
18
+ name: 'webhookTrigger',
19
+ type: 'webhookTrigger',
20
+ params: { /* use the required props and conditional values above */ },
21
+ });
22
+ ```
23
+
24
+ Further reading: [Culvii webhookTrigger node](https://culvii.com/docs/nodes/triggers/webhook-trigger/).
@@ -0,0 +1,51 @@
1
+ # Node index
2
+
3
+ Generated from `GENERATED_NODE_DEFINITIONS`. Open the exact node page before authoring its params.
4
+
5
+ - [`argocd`](node-argocd.md) — action; credentials required; feedback mock required
6
+ - [`clickupDoc`](node-clickup-doc.md) — action; credentials required; feedback mock required
7
+ - [`clickupTicket`](node-clickup-ticket.md) — action; credentials required; feedback mock required
8
+ - [`core.agent`](node-core-agent.md) — action
9
+ - [`core.browserAutomation`](node-core-browser-automation.md) — action; feedback mock required
10
+ - [`core.code`](node-core-code.md) — action
11
+ - [`core.http`](node-core-http.md) — action; feedback mock required
12
+ - [`core.if`](node-core-if.md) — action
13
+ - [`core.jwt`](node-core-jwt.md) — action
14
+ - [`core.loop`](node-core-loop.md) — action
15
+ - [`core.loopBreak`](node-core-loop-break.md) — action
16
+ - [`core.loopContinue`](node-core-loop-continue.md) — action
17
+ - [`core.loopOutput`](node-core-loop-output.md) — action
18
+ - [`core.merge`](node-core-merge.md) — action
19
+ - [`core.set`](node-core-set.md) — action
20
+ - [`core.switch`](node-core-switch.md) — action
21
+ - [`costExplorer`](node-cost-explorer.md) — action; credentials required; feedback mock required
22
+ - [`cronTrigger`](node-cron-trigger.md) — trigger
23
+ - [`elasticsearch`](node-elasticsearch.md) — action; credentials required; feedback mock required
24
+ - [`github`](node-github.md) — action; credentials required; feedback mock required
25
+ - [`githubPollTrigger`](node-github-poll-trigger.md) — trigger; credentials required; feedback mock required
26
+ - [`githubWebhookTrigger`](node-github-webhook-trigger.md) — trigger; credentials required; feedback mock required
27
+ - [`gmail`](node-gmail.md) — action; credentials required; feedback mock required
28
+ - [`gmailTrigger`](node-gmail-trigger.md) — trigger; credentials required; feedback mock required
29
+ - [`googleCalendar`](node-google-calendar.md) — action; credentials required; feedback mock required
30
+ - [`googleDocs`](node-google-docs.md) — action; credentials required; feedback mock required
31
+ - [`grafanaDashboard`](node-grafana-dashboard.md) — action; credentials required; feedback mock required
32
+ - [`grafanaDataSource`](node-grafana-data-source.md) — action; credentials required; feedback mock required
33
+ - [`grafanaQuery`](node-grafana-query.md) — action; credentials required; feedback mock required
34
+ - [`hibp.listDomains`](node-hibp-list-domains.md) — action; credentials required; feedback mock required
35
+ - [`hibp.stealerLogs`](node-hibp-stealer-logs.md) — action; credentials required; feedback mock required
36
+ - [`kubernetes`](node-kubernetes.md) — action; credentials required; feedback mock required
37
+ - [`manualTrigger`](node-manual-trigger.md) — trigger
38
+ - [`microsoftOutlook`](node-microsoft-outlook.md) — action; credentials required; feedback mock required
39
+ - [`microsoftOutlookTrigger`](node-microsoft-outlook-trigger.md) — trigger; credentials required; feedback mock required
40
+ - [`microsoftSharepoint`](node-microsoft-sharepoint.md) — action; credentials required; feedback mock required
41
+ - [`onionsearch`](node-onionsearch.md) — action; credentials required; feedback mock required
42
+ - [`prometheus`](node-prometheus.md) — action; credentials required; feedback mock required
43
+ - [`s3`](node-s3.md) — action; credentials required; feedback mock required
44
+ - [`slack`](node-slack.md) — action; credentials required; feedback mock required
45
+ - [`slackEventsTrigger`](node-slack-events-trigger.md) — trigger; credentials required; feedback mock required
46
+ - [`slackInteractionsTrigger`](node-slack-interactions-trigger.md) — trigger; credentials required; feedback mock required
47
+ - [`slackTrigger`](node-slack-trigger.md) — trigger; credentials required; feedback mock required
48
+ - [`supabase`](node-supabase.md) — action; credentials required; feedback mock required
49
+ - [`twilio`](node-twilio.md) — action; credentials required; feedback mock required
50
+ - [`waitTimer`](node-wait-timer.md) — action
51
+ - [`webhookTrigger`](node-webhook-trigger.md) — trigger
@@ -0,0 +1,36 @@
1
+ # Runtime values
2
+
3
+ Workflow expressions and surface bindings are different languages. Do not mix them.
4
+
5
+ ## Workflow expressions
6
+
7
+ Step params are resolved recursively through nested objects and arrays. A value consisting entirely of an expression preserves its runtime type; interpolation inside other text always returns a string.
8
+
9
+ ```ts
10
+ params: { values: {
11
+ object: "={{ $('Prepare').json.payload }}",
12
+ nested: { ids: ["={{ $('Prepare').json.id }}", '={{ $system.execId }}'] },
13
+ message: "Account {{ $('Prepare').json.account }} is ready",
14
+ } }
15
+ ```
16
+
17
+ Selectors:
18
+
19
+ - `$json.field` or `json.field`: current input.
20
+ - `$('Step Name').json.field`: named step, default port and item index.
21
+ - `$('Step Name:port')[2].json.field`: named port and index.
22
+ - `$system.execId`, `$system.workflowId`, `$system.node.id`: execution metadata.
23
+
24
+ The `.json` segment after a named step is optional. Use step names, not IDs. Expressions are selectors, not JavaScript.
25
+
26
+ ## Surface bindings
27
+
28
+ A binding is an object such as `{ path: '/$output/Prepare/main/0/0/account', default: 'Unknown', format: 'text' }`. Its `path` is a JSON Pointer rooted at:
29
+
30
+ - `$output`: current surfaced step output.
31
+ - `$input`: ancestor step output.
32
+ - `$exec`: execution metadata.
33
+ - `$binary`: safe binary descriptors, not raw bytes.
34
+ - `$form`: wait-surface form state only.
35
+
36
+ Output/input/binary paths use `/<root>/<step name>/<port>/<output index>/<item index>/...`. Escape `~` as `~0` and `/` as `~1` in every JSON Pointer segment. A real `null` is not replaced by `default`.
@@ -0,0 +1,38 @@
1
+ # Surface authoring
2
+
3
+ Choose components from the use case and expected node data, then verify every prop in the generated catalog pages.
4
+
5
+ For workflow-attached surfaces, make selection, validation, preview, and approval decisions through [surface configuration and visual approval](surface-feedback.md).
6
+
7
+ - Objects: `KeyValue`; wrap important groups in `Card` or `Section`.
8
+ - Arrays: `Table` for comparable records, or repeated domain cards composed with layout components.
9
+ - Metrics: `Stat`, `Money`, `Duration`, or `Timestamp`.
10
+ - Files: `FileChip` bound through `$binary`. Binding `file` alone renders a read-only file
11
+ summary — it is NOT clickable until you also declare `actions.default` as a `navigate` action
12
+ whose `href` points at the same descriptor's `downloadUrl`:
13
+ ```ts
14
+ {
15
+ id: 'file', type: 'FileChip',
16
+ props: { file: { path: '/$binary/Render Report/main/0/0/report' } },
17
+ actions: {
18
+ default: { type: 'navigate', href: { path: '/$binary/Render Report/main/0/0/report/downloadUrl' } },
19
+ },
20
+ }
21
+ ```
22
+ - Human decisions: a wait `Form` with input components and `Button`, or `ApproveRejectBar`.
23
+ - Raw/debug values: `JsonInspector` or `Code`.
24
+
25
+ A definition uses `schema: 'kit.ui/v1'`, a root component ID, a flat component document list, and an optional wait form. `root` and `children` contain IDs. Never embed a component object directly inside `children`.
26
+
27
+ ```ts
28
+ definition: {
29
+ schema: 'kit.ui/v1', root: 'outer', components: [
30
+ { id: 'outer', type: 'Stack', children: ['card'] },
31
+ { id: 'card', type: 'Card', props: { title: 'Result' }, children: ['inner'] },
32
+ { id: 'inner', type: 'Stack', children: ['status'] },
33
+ { id: 'status', type: 'StatusPill', props: { status: { path: '/$output/Run/main/0/0/status' } } },
34
+ ],
35
+ }
36
+ ```
37
+
38
+ Recursive Stack/Card/Section graphs are valid up to platform depth 12. Recursive prop schemas are also supported. Component IDs must be unique, reachable from the root, and referenced once according to each component's child mode. The complete catalog is split into [layout](surface-layout.md), [display](surface-display.md), and [input/actions](surface-input-actions.md).