@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 "ideation" --json | jq -r '.id // empty')
85
- [ -z "$BOARD_ID" ] && { echo "ERROR: Failed to create ideation board"; exit 1; }
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
- Substitute all template variables (`BOARD_ID`, `COL_NEW`, `project_name`, `brain_context`, `prompt`, `date`, `specialist_list`) with their actual values before calling Task.
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: `You are the Idea Manager for project "${project_name}".
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, and all COL_* variables)
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
- Before generating any tasks, present a review table of all elaborated ideas to the user.
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` → `monomind-task`):
536
+ **Dev task board** (`feature` / `technical-baseline` → `Implementation Tasks`):
499
537
 
500
- Check memory for `"monomind-task board_id"` in namespace `monomind`. If found, use it as `TASK_BOARD_ID`. Otherwise create it:
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 "monomind-task" --json | jq -r '.id // empty')
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 "monomind-task board_id" --value "$TASK_BOARD_ID" --namespace monomind
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` → `monomind-ops-task`):
561
+ **Ops task board** (`business-operation` → `Operations Tasks`):
524
562
 
525
- Check memory for `"monomind-ops-task board_id"` in namespace `monomind`. If found, use it as `OPS_BOARD_ID`. Otherwise create it:
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 "monomind-ops-task" --json | jq -r '.id // empty')
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 "monomind-ops-task board_id" --value "$OPS_BOARD_ID" --namespace monomind
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="monomind-ops-task"
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="monomind-task"
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>/ideation"
613
- task_board_url: "monotask://<project_name>/monomind-task"
614
- ops_task_board_url: "monotask://<project_name>/monomind-ops-task"
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.10",
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",