monomind 1.10.42 → 1.10.44

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 -r '.filter.labels // []')
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
- Store the full list of returned issues as a JSON array in `$issues`. Then iterate with an explicit bash loop (same pattern as Monotask/Filesystem adapters):
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 add label "monitor:failed"
1026
- # and set state to "Cancelled" or "Blocked" as appropriate for the team.
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 first claim (idempotent — --force handles existing labels)
1247
- if ! gh label list --repo "$_gh_repo" --json name 2>/dev/null \
1248
- | jq -e '.[] | select(.name=="monitor:claimed")' > /dev/null 2>&1; then
1249
- for label in "monitor:claimed" "monitor:in-progress" "monitor:review" "monitor:done" "monitor:failed"; do
1250
- # shasum is available on both macOS and Linux; md5sum is Linux-only
1251
- color=$(printf '%s' "$label" | shasum | cut -c1-6)
1252
- gh label create "$label" --repo "$_gh_repo" --color "$color" --force 2>/dev/null || true
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.42",
3
+ "version": "1.10.44",
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,15 +1448,26 @@ mcp:
1448
1448
  `;
1449
1449
  atomicWriteFile(configPath, config);
1450
1450
  result.created.files.push('.monomind/config.yaml');
1451
- // Write .gitignore
1451
+ // Write .monomind/.gitignore — commit config/knowledge/metrics, exclude sensitive data
1452
1452
  const gitignorePath = path.join(targetDir, '.monomind', '.gitignore');
1453
- const gitignore = `# Monomind runtime files
1454
- data/
1455
- logs/
1453
+ const gitignore = `# Monomind exclude files that may contain secrets or sensitive prompt data
1454
+ # Sessions contain conversation history (prompts, code snippets, user data)
1456
1455
  sessions/
1457
- neural/
1458
- *.log
1456
+ # Pending insights may contain raw prompt text
1457
+ data/pending-insights.jsonl
1458
+ # Routing feedback contains user prompt text
1459
+ routing-feedback.jsonl
1460
+ # Security scan results may expose vulnerability details
1461
+ security/
1462
+ # Temporary and machine-specific files
1459
1463
  *.tmp
1464
+ *.log
1465
+ daemon.pid
1466
+ # Never commit credentials or keys
1467
+ *.key
1468
+ *.token
1469
+ *.secret
1470
+ .env
1460
1471
  `;
1461
1472
  if (!fs.existsSync(gitignorePath) || options.force) {
1462
1473
  atomicWriteFile(gitignorePath, gitignore);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monoes/monomindcli",
3
- "version": "1.10.42",
3
+ "version": "1.10.44",
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",