@monoes/monomindcli 1.9.10 → 1.9.12
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.
|
@@ -81,8 +81,8 @@ space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '
|
|
|
81
81
|
**Memory-first board lookup:** Check memory for `"mastermind-idea board_id"` in namespace `monomind`. If a board ID is returned, use it as `BOARD_ID` and look up the existing column IDs. Otherwise, create the board:
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
BOARD_ID=$(monotask board create "
|
|
85
|
-
[ -z "$BOARD_ID" ] && { echo "ERROR: Failed to create
|
|
84
|
+
BOARD_ID=$(monotask board create "Ideas & Innovation" --json | jq -r '.id // empty')
|
|
85
|
+
[ -z "$BOARD_ID" ] && { echo "ERROR: Failed to create Ideas & Innovation board"; exit 1; }
|
|
86
86
|
monotask space boards add "$space_id" "$BOARD_ID" >/dev/null 2>&1 || true
|
|
87
87
|
npx monomind@latest memory store --key "mastermind-idea board_id" --value "$BOARD_ID" --namespace monomind
|
|
88
88
|
|
|
@@ -107,6 +107,26 @@ COL_ICED=$(echo "$columns" | jq -r '.[] | select(.title == "Iced") |
|
|
|
107
107
|
COL_REJECTED=$(echo "$columns" | jq -r '.[] | select(.title == "Rejected") | .id' | head -1)
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
+
**After either branch above, validate and echo all values.** This is the canonical source for Step 4 Task construction.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Validate BOARD_ID looks like a UUID before proceeding
|
|
114
|
+
[[ ! "$BOARD_ID" =~ ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ ]] && \
|
|
115
|
+
{ echo "ERROR: BOARD_ID '$BOARD_ID' is not a valid UUID — aborting to prevent board name corruption"; exit 1; }
|
|
116
|
+
|
|
117
|
+
# Echo literal values — READ THESE and embed them as string literals in the Step 4 Task prompt.
|
|
118
|
+
# These are shell variables; they DO NOT survive into the Task agent's context.
|
|
119
|
+
echo "=== IDEA BOARD LITERAL VALUES ==="
|
|
120
|
+
echo "BOARD_ID=$BOARD_ID"
|
|
121
|
+
echo "COL_NEW=$COL_NEW"
|
|
122
|
+
echo "COL_EVALUATED=$COL_EVALUATED"
|
|
123
|
+
echo "COL_ELABORATED=$COL_ELABORATED"
|
|
124
|
+
echo "COL_TASKED=$COL_TASKED"
|
|
125
|
+
echo "COL_ICED=$COL_ICED"
|
|
126
|
+
echo "COL_REJECTED=$COL_REJECTED"
|
|
127
|
+
echo "==================================="
|
|
128
|
+
```
|
|
129
|
+
|
|
110
130
|
---
|
|
111
131
|
|
|
112
132
|
### Step 4 — Idea Manager Agent (Divergent Thinking)
|
|
@@ -152,7 +172,8 @@ specialist_list=$(echo "$user_market_agents $tech_agents" | jq -Rs \
|
|
|
152
172
|
echo "Selected specialists: $specialist_list"
|
|
153
173
|
```
|
|
154
174
|
|
|
155
|
-
|
|
175
|
+
**CRITICAL — Variable substitution required before constructing the Task call:**
|
|
176
|
+
The Task agent runs in an isolated context and cannot inherit shell variables. Before writing the Task prompt below, read the literal UUID values from the `=== IDEA BOARD LITERAL VALUES ===` echo block above and embed them as **hard-coded strings** in the prompt. Do NOT write `${BOARD_ID}`, `${COL_NEW}`, etc. in the prompt — the agent will receive those as literal dollar-sign strings and its `monotask card create` calls will fail, causing it to improvise with `monotask board create` and corrupt board names. Replace every `${BOARD_ID}`, `${COL_NEW}`, `${project_name}`, `${brain_context}`, `${prompt}`, `${date}`, and `${specialist_list}` with the actual value before calling Task.
|
|
156
177
|
|
|
157
178
|
Spawn the Idea Manager with `run_in_background: false` so its output is available for Step 5.
|
|
158
179
|
|
|
@@ -161,7 +182,9 @@ Task({
|
|
|
161
182
|
subagent_type: "coordinator",
|
|
162
183
|
description: "Idea Manager for project " + project_name,
|
|
163
184
|
run_in_background: false,
|
|
164
|
-
prompt: `
|
|
185
|
+
prompt: `SAFETY CHECK: Before doing anything else, verify that the BOARD_ID you received matches UUID format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12 hex chars). If it does not, STOP immediately and report "ERROR: BOARD_ID was not substituted — received: <value>". Do NOT call monotask board create, monotask space create, or any board/space/column creation commands. Your only job is creating CARDS on the board you were given.
|
|
186
|
+
|
|
187
|
+
You are the Idea Manager for project "${project_name}".
|
|
165
188
|
|
|
166
189
|
CONTEXT: ${date} | Project: ${project_name} | Spawned by: mastermind:idea
|
|
167
190
|
|
|
@@ -247,10 +270,16 @@ Parse the `IDEAS_OUTPUT` JSON block from the agent's response. If zero ideas wer
|
|
|
247
270
|
|
|
248
271
|
### Step 5 — Validation (Product Manager Evaluation)
|
|
249
272
|
|
|
273
|
+
**CRITICAL — Variable substitution required for Step 5 Task call:**
|
|
274
|
+
The PM agent runs in an isolated Task context and cannot inherit shell variables. Read the literal UUID values from the `=== IDEA BOARD LITERAL VALUES ===` echo block (Step 3) and embed them as hard-coded strings in the Task prompt. Do NOT pass `${BOARD_ID}`, `${COL_EVALUATED}`, `${COL_ICED}`, `${COL_REJECTED}` etc. — the agent will receive them as literal dollar-sign strings and its `monotask card move` / `monotask card set-impact` calls will silently fail.
|
|
275
|
+
|
|
276
|
+
Begin the PM agent's Task prompt with this safety check:
|
|
277
|
+
> `SAFETY CHECK: Verify that the BOARD_ID you received matches UUID format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. If it does not, STOP and report "ERROR: BOARD_ID not substituted — received: <value>". Do NOT call monotask board create, space create, or any board/space management commands. Your job is updating existing CARDS only.`
|
|
278
|
+
|
|
250
279
|
Spawn a single `Product Manager` agent via the Task tool. The PM agent has Bash tool access and is responsible for both producing verdicts and executing all board updates directly.
|
|
251
280
|
|
|
252
281
|
Provide the PM agent with:
|
|
253
|
-
- All ideas from Step 4 (titles, descriptions, categories, card IDs, BOARD_ID,
|
|
282
|
+
- All ideas from Step 4 (titles, descriptions, categories, card IDs, and the literal UUID values for BOARD_ID, COL_EVALUATED, COL_ICED, COL_REJECTED from the Step 3 echo block)
|
|
254
283
|
- The `brain_context`
|
|
255
284
|
- The original `prompt`
|
|
256
285
|
|
|
@@ -293,6 +322,7 @@ VERDICTS_OUTPUT
|
|
|
293
322
|
"category": "feature | technical-baseline | business-operation",
|
|
294
323
|
"verdict": "evaluated | iced | rejected",
|
|
295
324
|
"skipElaboration": true | false,
|
|
325
|
+
"rationale": "<value statement (if evaluated) | blocking question (if iced) | rejection reason (if rejected)>",
|
|
296
326
|
"impact": <0-10>,
|
|
297
327
|
"effort": <0-10>
|
|
298
328
|
}
|
|
@@ -308,9 +338,10 @@ After the PM agent completes, parse `VERDICTS_OUTPUT`. If **all** ideas are iced
|
|
|
308
338
|
|
|
309
339
|
#### 6a. Elaboration (conditional)
|
|
310
340
|
|
|
311
|
-
For any evaluated idea with `skipElaboration: true`, move it directly to `Elaborated
|
|
341
|
+
For any evaluated idea with `skipElaboration: true`, move it directly to `Elaborated` and write a rationale comment so future readers understand why no deep elaboration was needed:
|
|
312
342
|
```bash
|
|
313
343
|
monotask card move "$BOARD_ID" "$CARD_ID" "$COL_ELABORATED" --json
|
|
344
|
+
monotask card comment add "$BOARD_ID" "$CARD_ID" "Elaboration skipped: PM assessed this idea as straightforward with no significant unknowns. Rationale: <rationale from VERDICTS_OUTPUT for this card_id>"
|
|
314
345
|
```
|
|
315
346
|
|
|
316
347
|
For ideas with `skipElaboration: false`, **split by category** before spawning agents:
|
|
@@ -362,7 +393,9 @@ monotask card comment add "$BOARD_ID" "$CARD_ID" "Blocked during elaboration: <i
|
|
|
362
393
|
|
|
363
394
|
#### 6b. User Confirmation Gate
|
|
364
395
|
|
|
365
|
-
|
|
396
|
+
**Auto-mode bypass:** If `mode` is `auto` (set by mastermind:master or caller), skip this gate entirely and proceed directly to Step 6c with all elaborated ideas.
|
|
397
|
+
|
|
398
|
+
**Confirm mode only:** If `mode` is `confirm` (default), present a review table of all elaborated ideas to the user.
|
|
366
399
|
|
|
367
400
|
Print this exact format:
|
|
368
401
|
|
|
@@ -459,15 +492,20 @@ ops_decomp_agent="${ops_decomp_agent:-Product Manager}"
|
|
|
459
492
|
echo "Dev decomp: $dev_decomp_agent | Ops decomp: $ops_decomp_agent"
|
|
460
493
|
```
|
|
461
494
|
|
|
495
|
+
**CRITICAL — Variable substitution required for Step 6c Task calls:**
|
|
496
|
+
Decomposition agents also run in isolated Task contexts. Before constructing each Task prompt, embed the literal card IDs (from the elaborated ideas list), `brain_context`, and `prompt` as hard-coded strings. Do NOT write `${card_id}`, `${brain_context}`, etc. as template placeholders.
|
|
497
|
+
|
|
498
|
+
Each decomposition agent's Task prompt should begin with:
|
|
499
|
+
> `SAFETY CHECK: You are a decomposition agent. You must NOT call monotask board create, space create, or column create. Your only job is producing a TASKS_OUTPUT block — the outer skill creates the cards. If you are unsure of any card ID, list it as "UNKNOWN" rather than inventing a value.`
|
|
500
|
+
|
|
462
501
|
**Spawn decomposition agents by track** — run both in parallel if both tracks have elaborated ideas:
|
|
463
502
|
|
|
464
503
|
- For **dev ideas** (`feature` or `technical-baseline`): spawn the agent selected as `$dev_decomp_agent`.
|
|
465
504
|
- For **business-operation ideas**: spawn the agent selected as `$ops_decomp_agent`.
|
|
466
505
|
|
|
467
506
|
Provide each agent with:
|
|
468
|
-
- Their subset of elaborated ideas (titles, descriptions, all card comments, card IDs, and category)
|
|
469
|
-
- The `brain_context`
|
|
470
|
-
- The original `prompt`
|
|
507
|
+
- Their subset of elaborated ideas (titles, descriptions, all card comments, literal card IDs, and category)
|
|
508
|
+
- The literal `brain_context` and `prompt` values
|
|
471
509
|
|
|
472
510
|
Each agent must output a `TASKS_OUTPUT` block. For each elaborated idea, produce 2–6 subtasks. If an idea's scope is unclear, flag it instead of decomposing.
|
|
473
511
|
|
|
@@ -495,14 +533,14 @@ END_TASKS_OUTPUT
|
|
|
495
533
|
|
|
496
534
|
---
|
|
497
535
|
|
|
498
|
-
**Dev task board** (`feature` / `technical-baseline` → `
|
|
536
|
+
**Dev task board** (`feature` / `technical-baseline` → `Implementation Tasks`):
|
|
499
537
|
|
|
500
|
-
Check memory for `"
|
|
538
|
+
Check memory for `"implementation-tasks board_id"` in namespace `monomind`. If found, use it as `TASK_BOARD_ID`. Otherwise create it:
|
|
501
539
|
|
|
502
540
|
```bash
|
|
503
|
-
TASK_BOARD_ID=$(monotask board create "
|
|
541
|
+
TASK_BOARD_ID=$(monotask board create "Implementation Tasks" --json | jq -r '.id // empty')
|
|
504
542
|
monotask space boards add "$space_id" "$TASK_BOARD_ID" >/dev/null 2>&1 || true
|
|
505
|
-
npx monomind@latest memory store --key "
|
|
543
|
+
npx monomind@latest memory store --key "implementation-tasks board_id" --value "$TASK_BOARD_ID" --namespace monomind
|
|
506
544
|
monotask column create "$TASK_BOARD_ID" "Backlog" --json >/dev/null
|
|
507
545
|
monotask column create "$TASK_BOARD_ID" "Todo" --json >/dev/null
|
|
508
546
|
monotask column create "$TASK_BOARD_ID" "In Progress" --json >/dev/null
|
|
@@ -520,14 +558,14 @@ TASK_COL_BACKLOG=$(echo "$task_columns" | jq -r '.[] | select(.title == "Backlog
|
|
|
520
558
|
|
|
521
559
|
---
|
|
522
560
|
|
|
523
|
-
**Ops task board** (`business-operation` → `
|
|
561
|
+
**Ops task board** (`business-operation` → `Operations Tasks`):
|
|
524
562
|
|
|
525
|
-
Check memory for `"
|
|
563
|
+
Check memory for `"operations-tasks board_id"` in namespace `monomind`. If found, use it as `OPS_BOARD_ID`. Otherwise create it:
|
|
526
564
|
|
|
527
565
|
```bash
|
|
528
|
-
OPS_BOARD_ID=$(monotask board create "
|
|
566
|
+
OPS_BOARD_ID=$(monotask board create "Operations Tasks" --json | jq -r '.id // empty')
|
|
529
567
|
monotask space boards add "$space_id" "$OPS_BOARD_ID" >/dev/null 2>&1 || true
|
|
530
|
-
npx monomind@latest memory store --key "
|
|
568
|
+
npx monomind@latest memory store --key "operations-tasks board_id" --value "$OPS_BOARD_ID" --namespace monomind
|
|
531
569
|
monotask column create "$OPS_BOARD_ID" "Backlog" --json >/dev/null
|
|
532
570
|
monotask column create "$OPS_BOARD_ID" "Todo" --json >/dev/null
|
|
533
571
|
monotask column create "$OPS_BOARD_ID" "In Progress" --json >/dev/null
|
|
@@ -551,11 +589,11 @@ OPS_COL_BACKLOG=$(echo "$ops_columns" | jq -r '.[] | select(.title == "Backlog")
|
|
|
551
589
|
if [ "$category" = "business-operation" ]; then
|
|
552
590
|
TARGET_BOARD="$OPS_BOARD_ID"
|
|
553
591
|
COL_TARGET=$([ "$has_prerequisites" = "true" ] && echo "$OPS_COL_BACKLOG" || echo "$OPS_COL_TODO")
|
|
554
|
-
BOARD_LABEL="
|
|
592
|
+
BOARD_LABEL="Operations Tasks"
|
|
555
593
|
else
|
|
556
594
|
TARGET_BOARD="$TASK_BOARD_ID"
|
|
557
595
|
COL_TARGET=$([ "$has_prerequisites" = "true" ] && echo "$TASK_COL_BACKLOG" || echo "$TASK_COL_TODO")
|
|
558
|
-
BOARD_LABEL="
|
|
596
|
+
BOARD_LABEL="Implementation Tasks"
|
|
559
597
|
fi
|
|
560
598
|
|
|
561
599
|
TASK_CARD_ID=$(monotask card create "$TARGET_BOARD" "$COL_TARGET" "<task title>" --json | jq -r '.id')
|
|
@@ -609,9 +647,9 @@ lessons:
|
|
|
609
647
|
next_actions:
|
|
610
648
|
- <e.g. "run mastermind:build to prototype chosen direction">
|
|
611
649
|
- <e.g. "run mastermind:research to validate top idea">
|
|
612
|
-
board_url: "monotask://<project_name>/
|
|
613
|
-
task_board_url: "monotask://<project_name>/
|
|
614
|
-
ops_task_board_url: "monotask://<project_name>/
|
|
650
|
+
board_url: "monotask://<project_name>/Ideas & Innovation"
|
|
651
|
+
task_board_url: "monotask://<project_name>/Implementation Tasks"
|
|
652
|
+
ops_task_board_url: "monotask://<project_name>/Operations Tasks"
|
|
615
653
|
run_id: <ISO8601-timestamp>
|
|
616
654
|
summary:
|
|
617
655
|
ideas_generated: N
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monoes/monomindcli",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.12",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Monomind CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
|
|
6
6
|
"main": "dist/src/index.js",
|