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.
- package/dist/assets/index.js +0 -1
- package/dist/assets/mcp/server.js +434 -7
- package/dist/assets/skills/bk-approve/SKILL.md +18 -6
- package/dist/assets/skills/bk-design/SKILL.md +220 -14
- package/dist/assets/skills/bk-improve/SKILL.md +106 -20
- package/dist/assets/skills/bk-instruction/SKILL.md +21 -0
- package/dist/assets/skills/bk-report/SKILL.md +18 -0
- package/dist/assets/skills/bk-rewind/SKILL.md +2 -2
- package/dist/assets/skills/bk-share/SKILL.md +5 -5
- package/dist/assets/skills/bk-start/SKILL.md +282 -19
- package/dist/assets/skills/bk-status/SKILL.md +35 -5
- package/dist/commands/dev-link.js +1 -1
- package/package.json +1 -1
- package/dist/assets/mcp/api-client.d.ts +0 -6
- package/dist/assets/mcp/api-client.js +0 -67
- package/dist/assets/mcp/errors.d.ts +0 -12
- package/dist/assets/mcp/errors.js +0 -24
- package/dist/assets/mcp/server.d.ts +0 -1
- package/dist/assets/skills/bk-next/SKILL.md +0 -219
|
@@ -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
|
-
- `
|
|
20
|
-
- `
|
|
21
|
-
- `node_type`
|
|
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": "
|
|
68
|
-
"
|
|
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]
|
|
79
|
-
2. [Collect Data]
|
|
80
|
-
3. [Run Analysis]
|
|
81
|
-
4. [Review Results] ← pauses
|
|
82
|
-
5. [Generate Report]
|
|
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
|
-
-
|
|
126
|
-
-
|
|
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:
|
|
72
|
+
### Step 4: Propose Changes
|
|
57
73
|
|
|
58
|
-
Design the
|
|
59
|
-
|
|
60
|
-
Show a diff of the changes:
|
|
74
|
+
Design the improvements and show a diff:
|
|
61
75
|
|
|
62
76
|
```
|
|
63
|
-
|
|
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: "
|
|
73
|
-
- "Create
|
|
74
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
- "
|
|
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
|
|
166
|
+
If "Run now" → switch to `/bk-run` flow.
|
|
98
167
|
|
|
99
|
-
|
|
168
|
+
## Attachment Management
|
|
100
169
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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-
|
|
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
|
|
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 (
|
|
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: `
|
|
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: ["
|
|
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: {
|
|
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": "
|
|
75
|
+
"access_level": "reader" | "contributor"
|
|
76
76
|
}
|
|
77
77
|
```
|
|
78
78
|
|