bluekiwi 0.2.4 → 0.3.0

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.
@@ -16,9 +16,11 @@ Design a structured workflow from a natural language goal and register it on the
16
16
  ## Core Principles
17
17
 
18
18
  - One node = **one agent action**. Split overly large chunks.
19
- - `auto_advance: true` = proceeds without user intervention. Suitable for data collection and transformation steps.
20
- - `auto_advance: false` = requires user confirmation or judgment.
21
- - `node_type` must be either `"agent"` (agent execution) or `"gate"` (user decision).
19
+ - `node_type: "action"` = regular agent step; auto-advances unless `hitl: true`.
20
+ - `node_type: "gate"` = user decision point; always pauses for human approval.
21
+ - `node_type: "loop"` = repeating step; set `loop_back_to` to the target step order.
22
+ - `hitl: true` = action node that requires explicit human approval before advancing. Default: `false`.
23
+ - `visual_selection: true` = gate node where the agent renders an HTML UI and the user makes a selection by clicking (instead of typing). Only valid on `gate` nodes. Default: `false`.
22
24
 
23
25
  ## Execution Steps
24
26
 
@@ -64,8 +66,8 @@ Analyze the goal and design the nodes.
64
66
  {
65
67
  "title": "Clarify Goal",
66
68
  "instruction": "Analyze the user's stated goal and extract the 3 most important clarifying questions.",
67
- "node_type": "agent",
68
- "auto_advance": true,
69
+ "node_type": "action",
70
+ "hitl": false,
69
71
  "order": 1
70
72
  }
71
73
  ```
@@ -75,11 +77,11 @@ Show the design to the user:
75
77
  ```
76
78
  Designed workflow: <title>
77
79
  ━━━━━━━━━━━━━━━━━━━━━━━━━
78
- 1. [Clarify Goal] (auto)
79
- 2. [Collect Data] (auto)
80
- 3. [Run Analysis] (auto)
81
- 4. [Review Results] ← pauses here
82
- 5. [Generate Report] (auto)
80
+ 1. [Clarify Goal] action
81
+ 2. [Collect Data] action
82
+ 3. [Run Analysis] action
83
+ 4. [Review Results] gate ← pauses for human approval
84
+ 5. [Generate Report] action
83
85
  ━━━━━━━━━━━━━━━━━━━━━━━━━
84
86
  5 steps total
85
87
  ```
@@ -106,22 +108,226 @@ Call `create_workflow`:
106
108
  }
107
109
  ```
108
110
 
109
- ### Step 6: Report Result
111
+ ### Step 6: Report Result + Open in Browser
110
112
 
111
- On success:
113
+ On success, open the workflow detail page in the browser:
114
+
115
+ ```bash
116
+ open "${BLUEKIWI_URL:-http://localhost:3100}/workflows/${WORKFLOW_ID}"
117
+ ```
118
+
119
+ Then display:
112
120
 
113
121
  ```
114
122
  ✅ Workflow registered
115
123
  Name: <title> (ID: <id>)
116
124
  Steps: <n>
117
125
  Version: 1.0
126
+ 🔗 ${BLUEKIWI_URL}/workflows/${WORKFLOW_ID}
118
127
 
119
128
  Type `/bk-run` to execute it now.
120
129
  ```
121
130
 
131
+ ## Node Type Reference
132
+
133
+ ### action — Auto-executing agent step
134
+
135
+ - `auto_advance=1` (automatic). The agent executes the instruction, saves the result, and automatically proceeds to the next step.
136
+ - Set `hitl: true` to require human approval after execution. Use only for security-sensitive or irreversible operations.
137
+
138
+ ### gate — User decision point
139
+
140
+ - `auto_advance=0`. Must receive a user response before proceeding.
141
+ - Set `visual_selection: true` to have the agent render an HTML UI where the user selects by clicking.
142
+ - Used for final result review, direction choices, approval/rejection, etc.
143
+
144
+ ### loop — Conditional repetition
145
+
146
+ - `auto_advance=0`. Repeats the same step until the termination condition is met.
147
+ - `loop_back_to`: target step_order to loop back to. Usually points to itself (self-loop).
148
+ - **The instruction MUST include a clear termination condition** so the agent can decide `loop_continue=true/false`.
149
+
150
+ **Loop node design patterns:**
151
+
152
+ ```json
153
+ {
154
+ "title": "Clarifying Questions",
155
+ "node_type": "loop",
156
+ "loop_back_to": 4,
157
+ "instruction": "Ask one question at a time. Use multiple choice when possible.\n\nGather:\n- Purpose: What problem does this feature solve?\n- Constraints: Tech stack, performance, security limitations?\n- Success criteria: What defines completion?\n\nTermination: End when purpose, scope, constraints, and success criteria are all clear."
158
+ }
159
+ ```
160
+
161
+ ```json
162
+ {
163
+ "title": "Design Section Presentation",
164
+ "node_type": "loop",
165
+ "loop_back_to": 7,
166
+ "instruction": "Present the design section by section.\nEach section scales with complexity: a few sentences if simple, 200-300 words if nuanced.\nCover: architecture, components, data flow, error handling, testing.\nAfter each section, ask the user for confirmation.\n\nTermination: End when all design sections have been approved by the user."
167
+ }
168
+ ```
169
+
170
+ **When to use loop nodes:**
171
+
172
+ - Information gathering (question → answer repetition)
173
+ - Section-by-section presentation/review (present → approve repetition)
174
+ - Iterative refinement (result → feedback → revision repetition)
175
+
122
176
  ## Node Design Guidelines
123
177
 
124
178
  - 3–7 steps is ideal. Consider splitting if more than 10.
125
- - The first step should always be `auto_advance: false` (user provides initial context).
126
- - Insert a `gate` node (result review) before the final step.
179
+ - Use `node_type: "gate"` before the final step to let the user review results.
180
+ - Use `node_type: "loop"` when a step needs iterative user interaction. Always include a clear termination condition in the instruction.
181
+ - Use `hitl: true` on `action` nodes only when the step requires explicit human judgment mid-flow (e.g., security-sensitive operations, irreversible actions).
182
+ - Use `visual_selection: true` on `gate` nodes when the selection is best expressed visually — e.g., choosing a layout, picking a chart type, selecting a UI template. The agent must call `set_visual_html` with interactive HTML before executing the step; the user's click supplies the response.
127
183
  - For nodes requiring external API calls, specify `credential_id`. Create credentials first with `/bk-credential`.
184
+
185
+ #### VS Component Selection Guide
186
+
187
+ When designing a `visual_selection: true` gate node, specify which `bk-*` components the agent should use in the node instruction. This keeps VS screens consistent and prevents vague "make a selection UI" instructions.
188
+
189
+ <HARD-RULE>
190
+ - VS content shown to the user must be written in the user's language.
191
+ - Labels, option descriptions, helper text, slider units, ranking item names, and matrix axis labels must all follow the user's language.
192
+ - Keep component class names and JSON keys in their canonical English forms (`bk-options`, `selections`, `values`, `ranking`, `matrix`).
193
+ </HARD-RULE>
194
+
195
+ **Dialog size directive — add as the first line of the HTML:**
196
+
197
+ ```html
198
+ <!-- @bk size=sm -->
199
+ <!-- default 448px: simple options, checklist -->
200
+ <!-- @bk size=md -->
201
+ <!-- 672px: cards, code-compare -->
202
+ <!-- @bk size=lg -->
203
+ <!-- 896px: pros-cons, ranking, timeline -->
204
+ <!-- @bk size=xl -->
205
+ <!-- 1152px: mockups, matrix, side-by-side wireframes -->
206
+ <!-- @bk size=full -->
207
+ <!-- 95vw: dashboard previews, complex layouts -->
208
+ ```
209
+
210
+ Rule: choose `xl` or `full` whenever content benefits from horizontal space (side-by-side comparisons, wireframe mockups, multi-column layouts). Omit or use `sm` for simple single-column choices.
211
+
212
+ **Component → Use Case mapping:**
213
+
214
+ | Component | Recommended size | Best for |
215
+ | ----------------- | ---------------- | -------------------------------------------------------------- |
216
+ | `bk-options` | `sm` | Mutually exclusive choices with descriptions (A/B/C decisions) |
217
+ | `bk-cards` | `md` | Visual previews (layout, chart type, UI template selection) |
218
+ | `bk-checklist` | `sm` | Feature toggles, multi-select from a list |
219
+ | `bk-code-compare` | `lg` | Comparing code approaches side by side |
220
+ | `bk-slider` | `sm` | Budget allocation, confidence levels, thresholds |
221
+ | `bk-ranking` | `md` | Priority ordering (requirements, features) |
222
+ | `bk-matrix` | `xl` | Urgency/importance mapping, risk assessment |
223
+ | `bk-split` | `xl` | Two-option comparison (A vs B) |
224
+ | `bk-pros-cons` | `lg` | Pros and cons review |
225
+ | `bk-mockup` | `xl` or `full` | UI wireframe / layout previews |
226
+ | `bk-timeline` | `lg` | Roadmap / milestone review |
227
+
228
+ **Instruction template patterns:**
229
+
230
+ ```text
231
+ Present the alternatives using bk-options with data-recommended on the suggested choice.
232
+ (dialog: sm — default, no directive needed)
233
+ ```
234
+
235
+ ```text
236
+ Show the layout candidates using bk-cards (size=md), then add a bk-slider named "confidence" (0-100, unit "%").
237
+ Start the HTML with: <!-- @bk size=md -->
238
+ ```
239
+
240
+ ```text
241
+ Collect optional capabilities with bk-checklist and ask the user to rank the top three priorities using bk-ranking.
242
+ (dialog: sm or md — omit directive or use <!-- @bk size=md -->)
243
+ ```
244
+
245
+ ```text
246
+ Compare the two implementation approaches using bk-code-compare (size=lg), then capture risk posture in a bk-matrix (size=xl).
247
+ If both appear on the same screen, use the larger size: <!-- @bk size=xl -->
248
+ ```
249
+
250
+ ```text
251
+ Show a UI wireframe mockup or dashboard layout preview using bk-mockup with inline styles.
252
+ Start the HTML with: <!-- @bk size=xl --> or <!-- @bk size=full -->
253
+ Place two mockup cards side by side using display:grid;grid-template-columns:1fr 1fr.
254
+ ```
255
+
256
+ ### Attachments
257
+
258
+ - Use node attachments for scripts, reference docs, prompts, and config files that the agent should load during execution.
259
+ - Add attachments only after the workflow and target node exist, using `upload_attachment(workflow_id, node_id, filename, content)`.
260
+ - Prefer text-based files so the execution skill can download and use their contents directly.
261
+ - Mention the attachment by filename in the node instruction when the agent is expected to read it.
262
+ - Keep attachments node-specific. Shared reusable logic belongs in an instruction template or a separate workflow step, not duplicated across many nodes.
263
+ - Use binary attachments only when necessary. Execution agents may only inspect their metadata unless the task explicitly requires the binary asset.
264
+
265
+ ## Node Modification Strategy
266
+
267
+ <HARD-RULE>
268
+ - Update a single node → `update_node(workflow_id, node_id, ...only changed fields)`
269
+ - Append a node (at the end) → `append_node(workflow_id, title, instruction, node_type, loop_back_to?, visual_selection?)`
270
+ - Insert a node (in the middle) → `insert_node(workflow_id, after_step=N, title, instruction, node_type, loop_back_to?, visual_selection?)`
271
+ - Delete a node → `remove_node(workflow_id, node_id)`
272
+ - Never use `update_workflow(nodes=[...])` for full replacement unless a complete redesign is intended
273
+ </HARD-RULE>
274
+
275
+ ## Inline vs Template Instructions
276
+
277
+ Nodes can have two types of instructions:
278
+
279
+ - **Template reference**: Node has `instruction_id` set. References a shared instruction template. Use `update_instruction` to modify the template — affects all nodes that reference it.
280
+ - **Inline instruction**: Node has no `instruction_id` and stores text directly in the `instruction` field. Use `update_node(workflow_id, node_id, instruction="new text")` to modify — affects only that node.
281
+
282
+ ```
283
+ # Update inline instruction — affects only this node
284
+ update_node(workflow_id=67, node_id=109, instruction="new instruction text")
285
+
286
+ # Update instruction template — affects all referencing nodes
287
+ update_instruction(instruction_id=5, content="new template text")
288
+ ```
289
+
290
+ ## Folder & Workflow Organization
291
+
292
+ Triggered when the user says "move workflow", "change folder", "organize", or "create folder".
293
+
294
+ ### Move an Existing Workflow to a Different Folder
295
+
296
+ 1. Call `list_workflows` to identify the target workflow (or use the name the user mentioned).
297
+ 2. Call `list_folders` to get the folder list.
298
+ 3. Ask via AskUserQuestion:
299
+ - header: "Move to"
300
+ - "Which folder should '{workflow title}' be moved to?"
301
+ - options: folder name list + "My Workspace (default)"
302
+ 4. Call `move_workflow`:
303
+ ```json
304
+ { "workflow_id": <id>, "folder_id": <destination folder id> }
305
+ ```
306
+ 5. Report: `✅ Moved '{workflow title}' → '{folder name}'`
307
+
308
+ ### Create a Standalone Folder
309
+
310
+ 1. Ask for name and optional visibility (`personal` / `group` / `public`).
311
+ 2. Call `create_folder`:
312
+ ```json
313
+ { "name": "<name>", "description": "<desc>", "visibility": "personal" }
314
+ ```
315
+ 3. Report: `✅ Folder '{name}' created.`
316
+
317
+ ### Rename a Folder
318
+
319
+ Call `update_folder`:
320
+
321
+ ```json
322
+ { "folder_id": <id>, "name": "<new name>" }
323
+ ```
324
+
325
+ ### Delete an Empty Folder
326
+
327
+ Call `delete_folder`:
328
+
329
+ ```json
330
+ { "folder_id": <id> }
331
+ ```
332
+
333
+ > Note: `delete_folder` fails with `FOLDER_NOT_EMPTY` if the folder contains any workflows, instructions, credentials, or sub-folders. Empty the folder first.
@@ -35,6 +35,16 @@ If "Type my own" → accept free-text improvement direction.
35
35
 
36
36
  ### Step 3: Analyze the Current Workflow
37
37
 
38
+ ## Leveraging Feedback Data
39
+
40
+ When improving a workflow, call `advance(peek=true)` on a past task to check for `feedback_data`.
41
+ If `feedback_data` exists, use it as the primary input for improvement analysis:
42
+
43
+ 1. Read each feedback item's `question` and `answer`
44
+ 2. Identify negative responses (unsatisfied, insufficient, etc.)
45
+ 3. Prioritize steps related to that feedback for improvement
46
+ 4. Explicitly note "based on user feedback" when proposing changes
47
+
38
48
  Display the current workflow node structure:
39
49
 
40
50
  ```
@@ -52,28 +62,72 @@ Review each node against the improvement direction:
52
62
  - Oversized steps → split them
53
63
  - Missing validation → add it
54
64
  - Unnecessary steps → remove them
65
+ - Missing attachments → add the required script, reference doc, or config file
66
+ - Stale attachments → remove outdated files and replace them with the current version
67
+ - Unclear attachment usage → update the instruction so it references the attachment by filename and explains when to use it
68
+ - Legacy VS nodes using inline onclick/postMessage → migrate to bk-\* component fragments
69
+ - VS nodes missing component specification in instruction → add which bk-\* components to use
70
+ - VS response format mismatch → verify downstream steps parse JSON `{selections, values, ranking, matrix}` instead of plain strings
55
71
 
56
- ### Step 4: Design Improved Nodes
72
+ ### Step 4: Propose Changes
57
73
 
58
- Design the full improved node set.
59
-
60
- Show a diff of the changes:
74
+ Design the improvements and show a diff:
61
75
 
62
76
  ```
63
- Improvements:
77
+ Proposed improvements:
64
78
  ━━━━━━━━━━━━━━━━━━━━━━━━━
65
79
  ✏️ Step 1: "Collect keywords" → "Collect top 10 keywords (by search volume)"
80
+ ✏️ Step 3: instruction refined (add termination criteria)
66
81
  ➕ Step 4 added: "Quantitative validation (retry if below threshold)"
82
+ 🗑️ Step 6 removed: redundant summary
67
83
  ━━━━━━━━━━━━━━━━━━━━━━━━━
68
84
  ```
69
85
 
86
+ ### Step 5: Choose Modification Strategy
87
+
70
88
  Ask via AskUserQuestion:
71
89
 
72
- - header: "Confirm"
73
- - "Create a new version (v<x.y>) with these improvements?"
74
- - options: ["Create new version", "Adjust more", "Cancel"]
90
+ - header: "How to apply?"
91
+ - options: ["Edit in place (patch current version)", "Create new version (v<x.y>)", "Adjust more", "Cancel"]
92
+
93
+ **Edit in place** — for minor tweaks (instruction wording, adding/removing 1-2 nodes). Modifies the current active version directly.
94
+
95
+ **Create new version** — for substantial restructuring (reordering steps, changing node types, major logic changes). Creates a new version in the same family; old version is archived.
96
+
97
+ ### Step 5a: Edit in Place (update_node)
98
+
99
+ Apply changes one by one using granular MCP tools:
100
+
101
+ ```
102
+ # Update inline instruction for a single node
103
+ update_node(workflow_id=67, node_id=109, instruction="new instruction text")
104
+
105
+ # Update node title
106
+ update_node(workflow_id=67, node_id=110, title="New Title")
107
+
108
+ # Change node type or add loop
109
+ update_node(workflow_id=67, node_id=112, node_type="loop", loop_back_to=7)
110
+
111
+ # Add a new node after step 3
112
+ insert_node(workflow_id=67, after_step=3, title="Validation", instruction="...", node_type="action")
113
+
114
+ # Remove a node
115
+ remove_node(workflow_id=67, node_id=115)
116
+ ```
117
+
118
+ <HARD-RULE>
119
+ When editing in place, apply each change as a separate `update_node`, `insert_node`, `append_node`, or `remove_node` call. Never use `update_workflow(nodes=[...])` for in-place edits — it replaces ALL nodes and loses node IDs.
120
+ </HARD-RULE>
121
+
122
+ After all changes, report:
123
+
124
+ ```
125
+ ✅ Workflow updated in place
126
+ Workflow: <title> v<version>
127
+ Changes: <n> nodes modified, <n> added, <n> removed
128
+ ```
75
129
 
76
- ### Step 5: Create New Version
130
+ ### Step 5b: Create New Version
77
131
 
78
132
  Call `update_workflow` with `create_new_version: true`:
79
133
 
@@ -82,25 +136,57 @@ Call `update_workflow` with `create_new_version: true`:
82
136
  "workflow_id": <existing id>,
83
137
  "create_new_version": true,
84
138
  "version": "<new version>",
85
- "nodes": [<improved node array>]
139
+ "nodes": [<full improved node array>]
86
140
  }
87
141
  ```
88
142
 
89
- ### Step 6: Offer Immediate Execution
143
+ Report:
144
+
145
+ ```
146
+ ✅ New version created
147
+ Workflow: <title>
148
+ Previous: v<old> → New: v<new>
149
+ Changed steps: <n>
150
+ ```
151
+
152
+ ### Step 6: Open in Browser + Offer Execution
153
+
154
+ Open the workflow detail page in the browser:
155
+
156
+ ```bash
157
+ open "${BLUEKIWI_URL:-http://localhost:3100}/workflows/${WORKFLOW_ID}"
158
+ ```
90
159
 
91
160
  Ask via AskUserQuestion:
92
161
 
93
162
  - header: "Run now?"
94
- - "New version v<x.y> created. Run it now to check results?"
163
+ - "Run the updated workflow now to verify changes?"
95
164
  - options: ["Run now", "Run later"]
96
165
 
97
- If "Run now" → switch to `/bk-run` flow and start a task with the new version.
166
+ If "Run now" → switch to `/bk-run` flow.
98
167
 
99
- ### Step 7: Report Result
168
+ ## Attachment Management
100
169
 
101
- ```
102
- New version created
103
- Workflow: <title>
104
- Previous: v<old> → New: v<new>
105
- Improved steps: <n>
106
- ```
170
+ - Add new text attachments with `upload_attachment(workflow_id, node_id, filename, content)` when a node needs reusable execution context.
171
+ - Remove obsolete files with `delete_attachment(workflow_id, node_id, attachment_id)` instead of leaving stale materials attached.
172
+ - When improving a node, keep its attachments aligned with the revised instruction. If the instruction changes, verify the referenced filenames and file contents still match.
173
+ - Prefer replacing outdated text attachments with a freshly uploaded version rather than keeping multiple conflicting variants on the same node.
174
+
175
+ ### VS Node Improvement
176
+
177
+ When improving a node with `visual_selection: true`:
178
+
179
+ - Check whether the node still uses legacy inline HTML or full `<!DOCTYPE html>` documents. If so, migrate it to bk-\* component fragments.
180
+ - Verify the instruction explicitly names the `bk-*` components to render, for example: `Use bk-options for the primary choice and bk-slider for confidence.`
181
+ - Check that the instruction text and the selected components align. Do not pair a ranking task with `bk-options` only, or a numeric threshold task without `bk-slider`.
182
+ - Check that downstream steps reading `get_web_response` parse the structured JSON object (`{selections, values, ranking, matrix}`) correctly instead of treating it as a plain string.
183
+
184
+ ## Node Modification Strategy
185
+
186
+ <HARD-RULE>
187
+ - Update a single node → `update_node(workflow_id, node_id, ...only changed fields)`
188
+ - Append a node (at the end) → `append_node(workflow_id, title, instruction, node_type, loop_back_to?, visual_selection?)`
189
+ - Insert a node (in the middle) → `insert_node(workflow_id, after_step=N, title, instruction, node_type, loop_back_to?, visual_selection?)`
190
+ - Delete a node → `remove_node(workflow_id, node_id)`
191
+ - Never use `update_workflow(nodes=[...])` for full replacement unless a complete redesign is intended
192
+ </HARD-RULE>
@@ -93,6 +93,27 @@ Based on the goal and agent type, write a draft using this format:
93
93
 
94
94
  Show the draft and ask if the user wants to modify it.
95
95
 
96
+ #### VS Component Directives
97
+
98
+ When writing instructions for `visual_selection: true` gate nodes, include a VS directive block that tells the execution agent which components to render:
99
+
100
+ ```text
101
+ ## VS Components
102
+ Use bk-options for the main selection. Add data-recommended to the suggested choice.
103
+ Include a bk-slider named "confidence" (0-100, default 75, unit "%").
104
+ Add a bk-section break before the slider.
105
+ ```
106
+
107
+ The execution agent reads this directive and composes the corresponding bk-\* HTML fragment. Available components: `bk-options`, `bk-cards`, `bk-checklist`, `bk-code-compare`, `bk-slider`, `bk-ranking`, `bk-matrix`, `bk-split`, `bk-pros-cons`, `bk-mockup`, `bk-timeline`.
108
+
109
+ Write the directive in concrete terms. Specify:
110
+
111
+ - which component(s) to use
112
+ - which option should be marked `data-recommended`, if any
113
+ - names, ranges, defaults, and units for sliders
114
+ - which items must appear in rankings, checklists, or matrix plots
115
+ - the user's language for all visible text
116
+
96
117
  **Credential linking (natural language)**:
97
118
 
98
119
  Ask: "Does this instruction use an external service?" via AskUserQuestion:
@@ -58,6 +58,24 @@ Build the report from the collected data:
58
58
 
59
59
  ---
60
60
 
61
+ ## VS Responses
62
+
63
+ {for each step with web_response data}
64
+
65
+ ### Step {N}: {title}
66
+
67
+ {format the JSON response as readable text}
68
+
69
+ - **Selected**: {selections joined with ", "}
70
+ - **Values**: {key = value for each entry in values}
71
+ - **Priority ranking**: {ranking as numbered list}
72
+ - **Matrix placement**: {item -> quadrant description for each entry}
73
+
74
+ {if no VS responses}
75
+ No visual selection responses recorded.
76
+
77
+ ---
78
+
61
79
  ## Artifacts
62
80
 
63
81
  | Type | Title | Location |
@@ -59,12 +59,12 @@ Show the result:
59
59
  Going back to Step [N]/[Total]: [{node title}] [{node_type}]
60
60
  (Previous execution logs are preserved)
61
61
  ━━━━━━━━━━━━━━━━━━━━━━━━━
62
- Type `/bk-next` to re-execute this step.
62
+ Type `/bk-start` to resume from this step.
63
63
  ━━━━━━━━━━━━━━━━━━━━━━━━━
64
64
  ```
65
65
 
66
66
  ## Rules
67
67
 
68
68
  - Always ask the user for additional requirements before rewinding.
69
- - If requirements are provided, save them as a comment so `/bk-next` can reference them.
69
+ - If requirements are provided, save them as a comment so the next execution can reference them.
70
70
  - Handle all choices via AskUserQuestion.
@@ -6,7 +6,7 @@ user_invocable: true
6
6
 
7
7
  # BlueKiwi Share
8
8
 
9
- Share a folder with a user group at a specified access level (viewer or editor).
9
+ Share a folder with a user group at a specified access level (reader or contributor).
10
10
 
11
11
  ## Argument Handling
12
12
 
@@ -16,7 +16,7 @@ Share a folder with a user group at a specified access level (viewer or editor).
16
16
  ## Core Principles
17
17
 
18
18
  - Sharing is applied at the **folder level**. Workflows and instructions inside the folder inherit the visibility.
19
- - Access levels: `viewer` (read-only) or `editor` (can modify contents).
19
+ - Access levels: `reader` (read-only) or `contributor` (can create/edit contents).
20
20
  - Only the folder owner or an admin can share.
21
21
 
22
22
  ## Execution Steps
@@ -46,7 +46,7 @@ Ask via AskUserQuestion:
46
46
  Ask via AskUserQuestion:
47
47
 
48
48
  - header: "Access level"
49
- - options: ["Viewer (read-only)", "Editor (can modify)"]
49
+ - options: ["Reader (read-only)", "Contributor (can create/edit)"]
50
50
 
51
51
  ### Step 4: Confirm and Apply
52
52
 
@@ -57,7 +57,7 @@ Share settings:
57
57
  ━━━━━━━━━━━━━━━━━━━━━━━━━
58
58
  Folder: {folder name}
59
59
  Group: {group name}
60
- Access: {viewer | editor}
60
+ Access: {reader | contributor}
61
61
  ━━━━━━━━━━━━━━━━━━━━━━━━━
62
62
  ```
63
63
 
@@ -72,7 +72,7 @@ Call `share_folder`:
72
72
  {
73
73
  "folder_id": <id>,
74
74
  "group_id": <id>,
75
- "access_level": "viewer" | "editor"
75
+ "access_level": "reader" | "contributor"
76
76
  }
77
77
  ```
78
78