monomind 1.10.42 → 1.10.43
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.
|
@@ -252,9 +252,10 @@ Build and append the source object using `jq -n` — construct the JSON from fla
|
|
|
252
252
|
```bash
|
|
253
253
|
# Build src_json based on --source type:
|
|
254
254
|
# Repeated flags collected as space-separated: $users, $states, $labels
|
|
255
|
-
# Derive singular $user / $state from first value (adapters that take one value)
|
|
255
|
+
# Derive singular $user / $state / $label from first value (adapters that take one value)
|
|
256
256
|
user="${users%% *}"
|
|
257
257
|
state="${states%% *}"
|
|
258
|
+
label="${labels%% *}"
|
|
258
259
|
|
|
259
260
|
case "$source" in
|
|
260
261
|
linear)
|
|
@@ -395,8 +396,8 @@ Source polling is skipped when a retry task is available (guarded below). The lo
|
|
|
395
396
|
|
|
396
397
|
```bash
|
|
397
398
|
task_claimed=false
|
|
398
|
-
task_json=""
|
|
399
399
|
if [ -z "$retry_task" ]; then
|
|
400
|
+
task_json=""
|
|
400
401
|
while IFS= read -r src; do
|
|
401
402
|
src_type=$(echo "$src" | jq -r '.type')
|
|
402
403
|
case "$src_type" in
|
|
@@ -417,7 +418,7 @@ if [ -z "$retry_task" ]; then
|
|
|
417
418
|
_lin_team=$(echo "$src" | jq -r '.filter.team // ""')
|
|
418
419
|
_lin_assignee=$(echo "$src" | jq -r '.filter.assignees[0] // ""')
|
|
419
420
|
_lin_states=$(echo "$src" | jq -r '.filter.states // ["Todo"] | join(",")')
|
|
420
|
-
_lin_labels=$(echo "$src" | jq -
|
|
421
|
+
_lin_labels=$(echo "$src" | jq -c '.filter.labels // []')
|
|
421
422
|
```
|
|
422
423
|
|
|
423
424
|
Use `mcp__claude_ai_Linear__list_issues` with:
|
|
@@ -426,7 +427,15 @@ Use `mcp__claude_ai_Linear__list_issues` with:
|
|
|
426
427
|
- State filter: resolved from `$_lin_states`
|
|
427
428
|
- Label filter applied client-side after fetch
|
|
428
429
|
|
|
429
|
-
|
|
430
|
+
The MCP call returns a JSON array. Bind it to a shell variable immediately after the call:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
# issues = JSON array returned by mcp__claude_ai_Linear__list_issues
|
|
434
|
+
# Assign the raw JSON response to $issues before the loop below:
|
|
435
|
+
issues='[]' # Claude MUST overwrite this with the real array returned by mcp__claude_ai_Linear__list_issues before the loop runs
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
Then iterate with an explicit bash loop (same pattern as Monotask/Filesystem adapters):
|
|
430
439
|
|
|
431
440
|
```bash
|
|
432
441
|
while IFS= read -r issue_json; do
|
|
@@ -1022,8 +1031,10 @@ Last attempt: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
|
1022
1031
|
|
|
1023
1032
|
# Linear (MCP — not bash): call mcp__claude_ai_Linear__save_comment with
|
|
1024
1033
|
# issueId=$task_external_id body="$_fail_msg"
|
|
1025
|
-
# Then call mcp__claude_ai_Linear__save_issue to
|
|
1026
|
-
#
|
|
1034
|
+
# Then call mcp__claude_ai_Linear__save_issue to:
|
|
1035
|
+
# - remove labels "monitor:claimed" and "monitor:in-progress"
|
|
1036
|
+
# - add label "monitor:failed"
|
|
1037
|
+
# - set state to "Cancelled" or "Blocked" as appropriate for the team.
|
|
1027
1038
|
|
|
1028
1039
|
case "$task_source_type" in
|
|
1029
1040
|
github)
|
|
@@ -1243,15 +1254,13 @@ If `caller` is not "command", follow `_protocol.md` Brain Write Procedure for do
|
|
|
1243
1254
|
Run this once, inline in the GitHub claim path, immediately before the first `gh issue edit` call. At claim time, `$_gh_repo` is in scope (extracted from `$src` at the top of the GitHub adapter). Guard with a check so it only runs when the `monitor:claimed` label is absent:
|
|
1244
1255
|
|
|
1245
1256
|
```bash
|
|
1246
|
-
# Bootstrap monitor labels on
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
done
|
|
1254
|
-
fi
|
|
1257
|
+
# Bootstrap monitor labels on every claim — --force makes each call idempotent (no-ops if label already exists)
|
|
1258
|
+
# Running unconditionally is safe: 5 lightweight API calls, prevents gaps if any label was deleted externally
|
|
1259
|
+
for label in "monitor:claimed" "monitor:in-progress" "monitor:review" "monitor:done" "monitor:failed"; do
|
|
1260
|
+
# shasum is available on both macOS and Linux; md5sum is Linux-only
|
|
1261
|
+
color=$(printf '%s' "$label" | shasum | cut -c1-6)
|
|
1262
|
+
gh label create "$label" --repo "$_gh_repo" --color "$color" --force 2>/dev/null || true
|
|
1263
|
+
done
|
|
1255
1264
|
```
|
|
1256
1265
|
|
|
1257
1266
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monomind",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.43",
|
|
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",
|
|
@@ -1448,20 +1448,28 @@ mcp:
|
|
|
1448
1448
|
`;
|
|
1449
1449
|
atomicWriteFile(configPath, config);
|
|
1450
1450
|
result.created.files.push('.monomind/config.yaml');
|
|
1451
|
-
// Write .gitignore
|
|
1451
|
+
// Write .monomind/.gitignore — ignore all runtime files inside the folder
|
|
1452
1452
|
const gitignorePath = path.join(targetDir, '.monomind', '.gitignore');
|
|
1453
|
-
const gitignore = `# Monomind runtime files
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
*.log
|
|
1459
|
-
*.tmp
|
|
1453
|
+
const gitignore = `# Monomind runtime files — do not commit
|
|
1454
|
+
*
|
|
1455
|
+
!.gitignore
|
|
1456
|
+
!config.yaml
|
|
1457
|
+
!CAPABILITIES.md
|
|
1460
1458
|
`;
|
|
1461
1459
|
if (!fs.existsSync(gitignorePath) || options.force) {
|
|
1462
1460
|
atomicWriteFile(gitignorePath, gitignore);
|
|
1463
1461
|
result.created.files.push('.monomind/.gitignore');
|
|
1464
1462
|
}
|
|
1463
|
+
// Add .monomind/ to the project root .gitignore so git never tracks new files
|
|
1464
|
+
const rootGitignorePath = path.join(targetDir, '.gitignore');
|
|
1465
|
+
const monomindEntry = '\n# Monomind runtime data\n.monomind/\n!.monomind/.gitignore\n!.monomind/config.yaml\n!.monomind/CAPABILITIES.md\n';
|
|
1466
|
+
let rootGitignore = fs.existsSync(rootGitignorePath)
|
|
1467
|
+
? fs.readFileSync(rootGitignorePath, 'utf-8')
|
|
1468
|
+
: '';
|
|
1469
|
+
if (!rootGitignore.includes('.monomind/')) {
|
|
1470
|
+
atomicWriteFile(rootGitignorePath, rootGitignore + monomindEntry);
|
|
1471
|
+
result.created.files.push('.gitignore (added .monomind/ entry)');
|
|
1472
|
+
}
|
|
1465
1473
|
// Write CAPABILITIES.md with full system overview
|
|
1466
1474
|
await writeCapabilitiesDoc(targetDir, options, result);
|
|
1467
1475
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monoes/monomindcli",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.43",
|
|
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",
|