monomind 1.10.41 → 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.
@@ -52,4 +52,4 @@ curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
52
52
  -d '{"type":"session:complete","session":"<sessionId>","domain":"architect","status":"<status>","domains":["architect"],"ts":'"$(date +%s)"'000}' || true
53
53
  ```
54
54
 
55
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
55
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -99,4 +99,4 @@ If `--confirm` is present:
99
99
  If `--confirm` is missing:
100
100
  > "This will permanently delete all brain memory for domain '<name>'. To confirm, run: `/mastermind:brain reset --domain <name> --confirm`"
101
101
 
102
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
102
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:build")` passing: brain_context, prompt, project_name,
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `build`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:content")` passing: brain_context, prompt, project_nam
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `content`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:finance")` passing: brain_context, prompt, project_nam
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `finance`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:idea")` passing: brain_context, prompt, project_name,
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `idea`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:marketing")` passing: brain_context, prompt, project_n
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `marketing`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:ops")` passing: brain_context, prompt, project_name, b
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `ops`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:release")` passing: brain_context, prompt, project_nam
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `release`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:research")` passing: brain_context, prompt, project_na
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `research`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:review")` passing: brain_context, prompt, project_name
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `review`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Invoke `Skill("mastermind:sales")` passing: brain_context, prompt, project_name,
23
23
 
24
24
  After skill returns: follow _protocol.md Brain Write Procedure for domain `sales`.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -23,4 +23,4 @@ Default mode: **confirm** (show analysis + port plan, wait before executing anyt
23
23
 
24
24
  Invoke `Skill("mastermind:techport")` passing: source_path, focus_hint, mode.
25
25
 
26
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
26
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -270,4 +270,4 @@ Skill("monomind:do", "--space $SPACE_ID --board $TASK_BOARD_ID --mode <parallel|
270
270
 
271
271
  To repeat this command on a schedule, wrap it with `/monomind:repeat` or use `--repeat N` / `--tillend` directly.
272
272
 
273
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
273
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -347,4 +347,4 @@ Skill("monomind:do", "--space $SPACE_ID --board $TASK_BOARD_ID --mode <parallel|
347
347
 
348
348
  To repeat this command on a schedule, wrap it with `/monomind:repeat` or use `--repeat N` / `--tillend` directly.
349
349
 
350
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
350
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -314,4 +314,4 @@ If `ALL_HIL` is empty, omit the HIL section and congratulate:
314
314
 
315
315
  To repeat this command on a schedule, wrap it with `/monomind:repeat` or use `--repeat N` / `--tillend` directly.
316
316
 
317
- Follow the REPEAT POSTAMBLE from `_repeat.md`.
317
+ Invoke `Skill("mastermind:_repeat")` now to execute the REPEAT POSTAMBLE. This is a required tool call — do not skip it.
@@ -941,6 +941,32 @@
941
941
  ],
942
942
  "category": "swarm",
943
943
  "primaryAgent": "architect"
944
+ },
945
+ {
946
+ "skill": "mastermind:monitor",
947
+ "invoke": "Skill(\"mastermind:monitor\")",
948
+ "description": "Forever-running task executor that watches Linear, GitHub, Monotask boards, and filesystem folders for new tasks, claims them, executes with the right agent, posts progress comments, and advances status at every stage. Supports per-user/per-state filtering, auto-retry (3x), 1-concurrent safe default, and ScheduleWakeup self-rescheduling.",
949
+ "keywords": [
950
+ "monitor",
951
+ "watch",
952
+ "task executor",
953
+ "autonomous",
954
+ "linear",
955
+ "github",
956
+ "monotask",
957
+ "filesystem",
958
+ "forever",
959
+ "loop",
960
+ "polling",
961
+ "task watcher",
962
+ "task doer",
963
+ "continuous",
964
+ "agent loop",
965
+ "claim task",
966
+ "auto-execute"
967
+ ],
968
+ "category": "ops",
969
+ "primaryAgent": "coder"
944
970
  }
945
971
  ]
946
972
  }
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: mastermind-repeat-postamble
3
+ description: REPEAT POSTAMBLE — executes inter-session repeat/tillend loop continuation after any mastermind or monomind command completes. Calls ScheduleWakeup when work remains.
4
+ type: protocol-skill
5
+ ---
6
+
7
+ # REPEAT POSTAMBLE
8
+
9
+ **If neither `tillend_mode = true` nor `repeat_count ≥ 2` was active in this invocation, stop immediately — this skill is a no-op.**
10
+
11
+ Otherwise execute all steps below before ending the response.
12
+
13
+ ---
14
+
15
+ ## Step 1 — Stop check
16
+
17
+ ```bash
18
+ [ -f ".monomind/loops/${LOOP_ID}.stop" ] && echo "STOP_REQUESTED"
19
+ ```
20
+
21
+ If the stop file exists:
22
+ - Output: `[repeat] Stop requested. Halting after run <current_rep>.`
23
+ - Run: `rm -f ".monomind/loops/${LOOP_ID}.json" ".monomind/loops/${LOOP_ID}.stop"`
24
+ - **END** (do not continue to Step 2).
25
+
26
+ ---
27
+
28
+ ## Step 2 — Tillend termination check (tillend mode only — skip for fixed-count)
29
+
30
+ Evaluate now whether this run produced **zero findings AND zero actions**:
31
+
32
+ - **Findings**: issues found, problems detected, items flagged, security vulnerabilities, tasks discovered, errors reported
33
+ - **Actions**: files edited, code fixed, commits made, tasks created, configs changed, content written
34
+
35
+ Set `TILLEND_EMPTY=true` **only if BOTH are zero for this round**.
36
+
37
+ **Important**: If this round found things AND fixed them, `TILLEND_EMPTY=false` — the loop must continue to verify the fixes didn't introduce new issues.
38
+
39
+ **If `TILLEND_EMPTY=true`:**
40
+ - Output:
41
+ ```
42
+ [tillend] Empty round — nothing found, nothing changed in run <current_rep>.
43
+ /<command> tillend loop complete (ran <current_rep> run(s)).
44
+ ```
45
+ - Emit dashboard event (non-fatal if control server is not running):
46
+ ```bash
47
+ CTRL_URL=$(jq -r '.url // "http://localhost:4242"' "$(git rev-parse --show-toplevel 2>/dev/null || echo ".")/.monomind/control.json" 2>/dev/null || echo "http://localhost:4242")
48
+ curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
49
+ -H "Content-Type: application/json" \
50
+ -d "{\"type\":\"loop:complete\",\"loopId\":\"${LOOP_ID}\",\"command\":\"/<command>\",\"mode\":\"tillend\",\"ranReps\":<current_rep>,\"reason\":\"empty-round\",\"ts\":$(date +%s)000}" || true
51
+ ```
52
+ - Run: `rm -f ".monomind/loops/${LOOP_ID}.json"`
53
+ - **END**.
54
+
55
+ **If `current_rep >= tillend_maxruns` (safety cap reached):**
56
+ - Output:
57
+ ```
58
+ [tillend] Safety cap reached (<tillend_maxruns> runs). Stopping loop.
59
+ If work is still incomplete, re-run: /<command> --tillend --maxruns <N> <prompt>
60
+ ```
61
+ - Run: `rm -f ".monomind/loops/${LOOP_ID}.json"`
62
+ - **END**.
63
+
64
+ **Otherwise (`TILLEND_EMPTY=false`, cap not reached):**
65
+ - Output: `[tillend] Run <current_rep> produced findings or actions. Scheduling run <next_rep>...`
66
+ - Continue to Step 4.
67
+
68
+ ---
69
+
70
+ ## Step 3 — Fixed-count completion check (fixed-count mode only — skip for tillend)
71
+
72
+ If `current_rep >= repeat_count`:
73
+ - Output: `[repeat] All <repeat_count> runs of /<command> complete.`
74
+ - Emit dashboard event:
75
+ ```bash
76
+ CTRL_URL=$(jq -r '.url // "http://localhost:4242"' "$(git rev-parse --show-toplevel 2>/dev/null || echo ".")/.monomind/control.json" 2>/dev/null || echo "http://localhost:4242")
77
+ curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
78
+ -H "Content-Type: application/json" \
79
+ -d "{\"type\":\"loop:complete\",\"loopId\":\"${LOOP_ID}\",\"command\":\"/<command>\",\"ranReps\":<repeat_count>,\"ts\":$(date +%s)000}" || true
80
+ ```
81
+ - Run: `rm -f ".monomind/loops/${LOOP_ID}.json"`
82
+ - **END**.
83
+
84
+ ---
85
+
86
+ ## Step 4 — Schedule next run (REQUIRED tool call — cannot be skipped)
87
+
88
+ Compute `next_rep = current_rep + 1`.
89
+
90
+ Update state file:
91
+ ```bash
92
+ NOW_MS=$(python3 -c 'import time;print(int(time.time()*1000))' 2>/dev/null || echo "$(date +%s)000")
93
+ NEXT_AT=$(( NOW_MS + <wait_seconds> * 1000 ))
94
+ INTERVAL_MIN=$(( (<wait_seconds> + 30) / 60 ))
95
+ LOOP_TYPE=$( [ "<tillend_mode>" = "true" ] && echo "tillend" || echo "repeat" )
96
+ MAX_REPS=$( [ "<tillend_mode>" = "true" ] && echo "<tillend_maxruns>" || echo "<repeat_count>" )
97
+ PROMPT_JSON=$(jq '.prompt' ".monomind/loops/${LOOP_ID}.json" 2>/dev/null \
98
+ || python3 -c "import json; print(json.dumps(json.load(open('.monomind/loops/${LOOP_ID}.json'))['prompt']))" 2>/dev/null \
99
+ || echo '"<prompt>"')
100
+ STARTED_AT=$(jq '.startedAt' ".monomind/loops/${LOOP_ID}.json" 2>/dev/null || echo "${NOW_MS}")
101
+ cat > ".monomind/loops/${LOOP_ID}.json" << EOF
102
+ {
103
+ "id": "${LOOP_ID}",
104
+ "sessionId": "${LOOP_ID}",
105
+ "type": "${LOOP_TYPE}",
106
+ "command": "/<command>",
107
+ "prompt": ${PROMPT_JSON},
108
+ "maxReps": ${MAX_REPS},
109
+ "interval": ${INTERVAL_MIN},
110
+ "wait": <wait_seconds>,
111
+ "currentRep": <next_rep>,
112
+ "startedAt": ${STARTED_AT},
113
+ "lastRunAt": ${NOW_MS},
114
+ "nextRunAt": ${NEXT_AT},
115
+ "status": "running",
116
+ "source": "_repeat.md"
117
+ }
118
+ EOF
119
+ ```
120
+
121
+ Emit `loop:tick`:
122
+ ```bash
123
+ CTRL_URL=$(jq -r '.url // "http://localhost:4242"' "$(git rev-parse --show-toplevel 2>/dev/null || echo ".")/.monomind/control.json" 2>/dev/null || echo "http://localhost:4242")
124
+ curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
125
+ -H "Content-Type: application/json" \
126
+ -d "{\"type\":\"loop:tick\",\"loopId\":\"${LOOP_ID}\",\"command\":\"/<command>\",\"completedRep\":<current_rep>,\"nextRep\":<next_rep>,\"nextAt\":${NEXT_AT},\"ts\":$(date +%s)000}" || true
127
+ ```
128
+
129
+ **Call `ScheduleWakeup` now** — this is a mandatory tool call:
130
+
131
+ - **Tillend mode**:
132
+ - `delaySeconds`: `<wait_seconds>`
133
+ - `prompt`: `/<command> --tillend --maxruns <tillend_maxruns> --wait <wait_seconds> --rep <next_rep> --loop ${LOOP_ID} <original_prompt_text>`
134
+ - `reason`: `"tillend run <next_rep> of /<command> (cap: <tillend_maxruns>)"`
135
+ - Output before calling: `[tillend] Work remains. Next run in <wait_seconds>s (run <next_rep>, cap: <tillend_maxruns>)...`
136
+
137
+ - **Fixed-count mode**:
138
+ - `delaySeconds`: `<wait_seconds>`
139
+ - `prompt`: `/<command> --repeat <repeat_count> --wait <wait_seconds> --rep <next_rep> --loop ${LOOP_ID} <original_prompt_text>`
140
+ - `reason`: `"repeat run <next_rep>/<repeat_count> of /<command>"`
141
+ - Output before calling: `[repeat] Next run in <wait_seconds>s (run <next_rep>/<repeat_count>)...`