monomind 1.9.0 → 1.9.2

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.
@@ -91,7 +91,19 @@ If this skill is invoked directly (not by master):
91
91
 
92
92
  1. Load brain context following _protocol.md Brain Load Procedure (namespace: `marketing`)
93
93
  2. Run intake from _intake.md if prompt is vague
94
- 3. Create or find monotask space `<project_name>`, create board `marketing`
94
+ 3. Follow _protocol.md Monotask Space+Board Setup Procedure:
95
+ ```bash
96
+ project_name="${project_name:-$(basename "$PWD")}"
97
+ space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
98
+ [ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
99
+ [ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
100
+ board_id=$(monotask board create "marketing" --json | jq -r '.id // empty')
101
+ [ -z "$board_id" ] && { echo "ERROR: Failed to create marketing board"; exit 1; }
102
+ monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
103
+ todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
104
+ doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
105
+ done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id')
106
+ ```
95
107
  4. Proceed with complexity assessment below
96
108
  5. At end: follow _protocol.md Brain Write Procedure (namespace: `marketing`)
97
109
 
@@ -45,7 +45,19 @@ If this skill is invoked directly (not by master):
45
45
 
46
46
  1. Load brain context following _protocol.md Brain Load Procedure (namespace: `ops`)
47
47
  2. Run intake from _intake.md if prompt is vague
48
- 3. Create or find monotask space `<project_name>`, create board `ops`
48
+ 3. Follow _protocol.md Monotask Space+Board Setup Procedure:
49
+ ```bash
50
+ project_name="${project_name:-$(basename "$PWD")}"
51
+ space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
52
+ [ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
53
+ [ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
54
+ board_id=$(monotask board create "ops" --json | jq -r '.id // empty')
55
+ [ -z "$board_id" ] && { echo "ERROR: Failed to create ops board"; exit 1; }
56
+ monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
57
+ todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
58
+ doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
59
+ done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id')
60
+ ```
49
61
  4. Proceed with complexity assessment below
50
62
  5. At end: follow _protocol.md Brain Write Procedure (namespace: `ops`)
51
63
 
@@ -45,7 +45,19 @@ If this skill is invoked directly (not by master):
45
45
 
46
46
  1. Load brain context following _protocol.md Brain Load Procedure (namespace: `release`)
47
47
  2. Run intake from _intake.md if prompt is vague
48
- 3. Create or find monotask space `<project_name>`, create board `release`
48
+ 3. Follow _protocol.md Monotask Space+Board Setup Procedure:
49
+ ```bash
50
+ project_name="${project_name:-$(basename "$PWD")}"
51
+ space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
52
+ [ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
53
+ [ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
54
+ board_id=$(monotask board create "release" --json | jq -r '.id // empty')
55
+ [ -z "$board_id" ] && { echo "ERROR: Failed to create release board"; exit 1; }
56
+ monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
57
+ todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
58
+ doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
59
+ done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id')
60
+ ```
49
61
  4. Proceed with complexity assessment below
50
62
  5. At end: follow _protocol.md Brain Write Procedure (namespace: `release`)
51
63
 
@@ -79,8 +91,8 @@ STEP 2 — CREATE TASKS
79
91
  For each release stage, create a monotask card on the project board. First look up column IDs and assign shell variables:
80
92
  ```bash
81
93
  columns=$(monotask column list "$BOARD_ID" --json)
82
- COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Todo" or .name == "Backlog") | .id' | head -1)
83
- COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Done") | .id' | head -1)
94
+ COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Todo" or .title == "Backlog") | .id' | head -1)
95
+ COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Done") | .id' | head -1)
84
96
  ```
85
97
  Then create the card:
86
98
  ```bash
@@ -45,7 +45,19 @@ If this skill is invoked directly (not by master):
45
45
 
46
46
  1. Load brain context following _protocol.md Brain Load Procedure (namespace: `research`)
47
47
  2. Run intake from _intake.md if prompt is vague
48
- 3. Create or find monotask space `<project_name>`, create board `research`
48
+ 3. Follow _protocol.md Monotask Space+Board Setup Procedure:
49
+ ```bash
50
+ project_name="${project_name:-$(basename "$PWD")}"
51
+ space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
52
+ [ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
53
+ [ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
54
+ board_id=$(monotask board create "research" --json | jq -r '.id // empty')
55
+ [ -z "$board_id" ] && { echo "ERROR: Failed to create research board"; exit 1; }
56
+ monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
57
+ todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
58
+ doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
59
+ done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id')
60
+ ```
49
61
  4. Proceed with complexity assessment below
50
62
  5. At end: follow _protocol.md Brain Write Procedure (namespace: `research`)
51
63
 
@@ -79,8 +91,8 @@ STEP 2 — CREATE TASKS
79
91
  For each research stream, create a monotask card on the project board. First look up column IDs and assign shell variables:
80
92
  ```bash
81
93
  columns=$(monotask column list "$BOARD_ID" --json)
82
- COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Todo" or .name == "Backlog") | .id' | head -1)
83
- COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Done") | .id' | head -1)
94
+ COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Todo" or .title == "Backlog") | .id' | head -1)
95
+ COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Done") | .id' | head -1)
84
96
  ```
85
97
  Then create the card:
86
98
  ```bash
@@ -45,7 +45,19 @@ If this skill is invoked directly (not by master):
45
45
 
46
46
  1. Load brain context following _protocol.md Brain Load Procedure (namespace: `review`)
47
47
  2. Run intake from _intake.md if prompt is vague
48
- 3. Create or find monotask space `<project_name>`, create board `review`
48
+ 3. Follow _protocol.md Monotask Space+Board Setup Procedure:
49
+ ```bash
50
+ project_name="${project_name:-$(basename "$PWD")}"
51
+ space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
52
+ [ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
53
+ [ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
54
+ board_id=$(monotask board create "review" --json | jq -r '.id // empty')
55
+ [ -z "$board_id" ] && { echo "ERROR: Failed to create review board"; exit 1; }
56
+ monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
57
+ todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
58
+ doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
59
+ done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id')
60
+ ```
49
61
  4. Proceed with complexity assessment below
50
62
  5. At end: follow _protocol.md Brain Write Procedure (namespace: `review`)
51
63
 
@@ -79,8 +91,8 @@ STEP 2 — CREATE TASKS
79
91
  For each review angle, create a monotask card on the project board. First look up column IDs and assign shell variables:
80
92
  ```bash
81
93
  columns=$(monotask column list "$BOARD_ID" --json)
82
- COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Todo" or .name == "Backlog") | .id' | head -1)
83
- COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Done") | .id' | head -1)
94
+ COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Todo" or .title == "Backlog") | .id' | head -1)
95
+ COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Done") | .id' | head -1)
84
96
  ```
85
97
  Then create the card:
86
98
  ```bash
@@ -45,7 +45,19 @@ If this skill is invoked directly (not by master):
45
45
 
46
46
  1. Load brain context following _protocol.md Brain Load Procedure (namespace: `sales`)
47
47
  2. Run intake from _intake.md if prompt is vague
48
- 3. Create or find monotask space `<project_name>`, create board `sales`
48
+ 3. Follow _protocol.md Monotask Space+Board Setup Procedure:
49
+ ```bash
50
+ project_name="${project_name:-$(basename "$PWD")}"
51
+ space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
52
+ [ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
53
+ [ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
54
+ board_id=$(monotask board create "sales" --json | jq -r '.id // empty')
55
+ [ -z "$board_id" ] && { echo "ERROR: Failed to create sales board"; exit 1; }
56
+ monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
57
+ todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
58
+ doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
59
+ done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id')
60
+ ```
49
61
  4. Proceed with complexity assessment below
50
62
  5. At end: follow _protocol.md Brain Write Procedure (namespace: `sales`)
51
63
 
@@ -80,8 +92,8 @@ For each workstream, create a monotask card on the project board.
80
92
  First look up column IDs and assign shell variables:
81
93
  ```bash
82
94
  columns=$(monotask column list "$BOARD_ID" --json)
83
- COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Todo" or .name == "Backlog") | .id' | head -1)
84
- COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.name == "Done") | .id' | head -1)
95
+ COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Todo" or .title == "Backlog") | .id' | head -1)
96
+ COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Done") | .id' | head -1)
85
97
  ```
86
98
  Then create the card:
87
99
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monomind",
3
- "version": "1.9.0",
3
+ "version": "1.9.2",
4
4
  "description": "Monomind - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -959,19 +959,28 @@ async function copySkills(targetDir, options, result) {
959
959
  result.errors.push('Could not find source skills directory');
960
960
  return;
961
961
  }
962
- // Copy each skill
963
- for (const skillName of [...new Set(skillsToCopy)]) {
962
+ // Remove stale skill directories no longer in the current version's map
963
+ const knownSkills = new Set([...new Set(skillsToCopy)]);
964
+ if (fs.existsSync(targetSkillsDir)) {
965
+ for (const existing of fs.readdirSync(targetSkillsDir)) {
966
+ if (!knownSkills.has(existing)) {
967
+ const stalePath = path.join(targetSkillsDir, existing);
968
+ fs.rmSync(stalePath, { recursive: true, force: true });
969
+ result.created.files.push(`[cleaned] .claude/skills/${existing} (stale)`);
970
+ }
971
+ }
972
+ }
973
+ // Always copy/overwrite skills (never skip — ensures new version content lands)
974
+ for (const skillName of knownSkills) {
964
975
  const sourcePath = path.join(sourceSkillsDir, skillName);
965
976
  const targetPath = path.join(targetSkillsDir, skillName);
966
977
  if (fs.existsSync(sourcePath)) {
967
- if (!fs.existsSync(targetPath) || options.force) {
968
- copyDirRecursive(sourcePath, targetPath);
969
- result.created.files.push(`.claude/skills/${skillName}`);
970
- result.summary.skillsCount++;
971
- }
972
- else {
973
- result.skipped.push(`.claude/skills/${skillName}`);
978
+ if (fs.existsSync(targetPath)) {
979
+ fs.rmSync(targetPath, { recursive: true, force: true });
974
980
  }
981
+ copyDirRecursive(sourcePath, targetPath);
982
+ result.created.files.push(`.claude/skills/${skillName}`);
983
+ result.summary.skillsCount++;
975
984
  }
976
985
  }
977
986
  }
@@ -1038,24 +1047,33 @@ async function copyCommands(targetDir, options, result) {
1038
1047
  result.errors.push('Could not find source commands directory');
1039
1048
  return;
1040
1049
  }
1041
- // Copy each command/directory
1042
- for (const cmdName of [...new Set(commandsToCopy)]) {
1050
+ // Remove stale command files/directories no longer in the current version's map
1051
+ const knownCommands = new Set([...new Set(commandsToCopy)]);
1052
+ if (fs.existsSync(targetCommandsDir)) {
1053
+ for (const existing of fs.readdirSync(targetCommandsDir)) {
1054
+ if (!knownCommands.has(existing)) {
1055
+ const stalePath = path.join(targetCommandsDir, existing);
1056
+ fs.rmSync(stalePath, { recursive: true, force: true });
1057
+ result.created.files.push(`[cleaned] .claude/commands/${existing} (stale)`);
1058
+ }
1059
+ }
1060
+ }
1061
+ // Always copy/overwrite commands (never skip — ensures new version content lands)
1062
+ for (const cmdName of knownCommands) {
1043
1063
  const sourcePath = path.join(sourceCommandsDir, cmdName);
1044
1064
  const targetPath = path.join(targetCommandsDir, cmdName);
1045
1065
  if (fs.existsSync(sourcePath)) {
1046
- if (!fs.existsSync(targetPath) || options.force) {
1047
- if (fs.statSync(sourcePath).isDirectory()) {
1048
- copyDirRecursive(sourcePath, targetPath);
1049
- }
1050
- else {
1051
- fs.copyFileSync(sourcePath, targetPath);
1052
- }
1053
- result.created.files.push(`.claude/commands/${cmdName}`);
1054
- result.summary.commandsCount++;
1066
+ if (fs.existsSync(targetPath)) {
1067
+ fs.rmSync(targetPath, { recursive: true, force: true });
1068
+ }
1069
+ if (fs.statSync(sourcePath).isDirectory()) {
1070
+ copyDirRecursive(sourcePath, targetPath);
1055
1071
  }
1056
1072
  else {
1057
- result.skipped.push(`.claude/commands/${cmdName}`);
1073
+ fs.copyFileSync(sourcePath, targetPath);
1058
1074
  }
1075
+ result.created.files.push(`.claude/commands/${cmdName}`);
1076
+ result.summary.commandsCount++;
1059
1077
  }
1060
1078
  }
1061
1079
  }
@@ -1094,21 +1112,30 @@ async function copyAgents(targetDir, options, result) {
1094
1112
  result.errors.push('Could not find source agents directory');
1095
1113
  return;
1096
1114
  }
1097
- // Copy each agent category
1098
- for (const agentCategory of [...new Set(agentsToCopy)]) {
1115
+ // Remove stale agent category directories no longer in the current version's map
1116
+ const knownAgents = new Set([...new Set(agentsToCopy)]);
1117
+ if (fs.existsSync(targetAgentsDir)) {
1118
+ for (const existing of fs.readdirSync(targetAgentsDir)) {
1119
+ if (!knownAgents.has(existing)) {
1120
+ const stalePath = path.join(targetAgentsDir, existing);
1121
+ fs.rmSync(stalePath, { recursive: true, force: true });
1122
+ result.created.files.push(`[cleaned] .claude/agents/${existing} (stale)`);
1123
+ }
1124
+ }
1125
+ }
1126
+ // Always copy/overwrite agents (never skip — ensures new version content lands)
1127
+ for (const agentCategory of knownAgents) {
1099
1128
  const sourcePath = path.join(sourceAgentsDir, agentCategory);
1100
1129
  const targetPath = path.join(targetAgentsDir, agentCategory);
1101
1130
  if (fs.existsSync(sourcePath)) {
1102
- if (!fs.existsSync(targetPath) || options.force) {
1103
- copyDirRecursive(sourcePath, targetPath);
1104
- // Count agent files (.md only — .yaml agents were migrated to .md)
1105
- const mdFiles = countFiles(sourcePath, '.md');
1106
- result.summary.agentsCount += mdFiles;
1107
- result.created.files.push(`.claude/agents/${agentCategory}`);
1108
- }
1109
- else {
1110
- result.skipped.push(`.claude/agents/${agentCategory}`);
1131
+ if (fs.existsSync(targetPath)) {
1132
+ fs.rmSync(targetPath, { recursive: true, force: true });
1111
1133
  }
1134
+ copyDirRecursive(sourcePath, targetPath);
1135
+ // Count agent files (.md only — .yaml agents were migrated to .md)
1136
+ const mdFiles = countFiles(sourcePath, '.md');
1137
+ result.summary.agentsCount += mdFiles;
1138
+ result.created.files.push(`.claude/agents/${agentCategory}`);
1112
1139
  }
1113
1140
  }
1114
1141
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monoes/monomindcli",
3
- "version": "1.9.0",
3
+ "version": "1.9.2",
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",