monomind 1.10.40 → 1.10.42
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.
- package/.claude/commands/mastermind/architect.md +1 -1
- package/.claude/commands/mastermind/brain.md +1 -1
- package/.claude/commands/mastermind/build.md +1 -1
- package/.claude/commands/mastermind/content.md +1 -1
- package/.claude/commands/mastermind/finance.md +1 -1
- package/.claude/commands/mastermind/idea.md +1 -1
- package/.claude/commands/mastermind/marketing.md +1 -1
- package/.claude/commands/mastermind/ops.md +1 -1
- package/.claude/commands/mastermind/release.md +1 -1
- package/.claude/commands/mastermind/research.md +1 -1
- package/.claude/commands/mastermind/review.md +1 -1
- package/.claude/commands/mastermind/sales.md +1 -1
- package/.claude/commands/mastermind/techport.md +1 -1
- package/.claude/commands/monomind/idea.md +1 -1
- package/.claude/commands/monomind/improve.md +1 -1
- package/.claude/commands/monomind/review.md +1 -1
- package/.claude/helpers/skill-registry.json +26 -0
- package/.claude/skills/mastermind/_repeat.md +141 -0
- package/.claude/skills/mastermind/monitor.md +1275 -0
- package/package.json +1 -1
- package/packages/@monomind/cli/dist/src/browser/actions.js +114 -22
- package/packages/@monomind/cli/dist/src/browser/browser.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/browser/browser.js +51 -24
- package/packages/@monomind/cli/dist/src/browser/cdp.js +20 -4
- package/packages/@monomind/cli/dist/src/browser/console-log.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/browser/console-log.js +19 -3
- package/packages/@monomind/cli/dist/src/browser/dialog.js +1 -1
- package/packages/@monomind/cli/dist/src/browser/find.js +28 -8
- package/packages/@monomind/cli/dist/src/browser/har.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/browser/har.js +7 -5
- package/packages/@monomind/cli/dist/src/browser/network.d.ts +7 -4
- package/packages/@monomind/cli/dist/src/browser/network.js +59 -22
- package/packages/@monomind/cli/dist/src/browser/profiler.js +13 -2
- package/packages/@monomind/cli/dist/src/browser/screenshot.js +3 -2
- package/packages/@monomind/cli/dist/src/browser/session.js +49 -12
- package/packages/@monomind/cli/dist/src/browser/snapshot.js +26 -14
- package/packages/@monomind/cli/dist/src/browser/storage.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/browser/storage.js +3 -0
- package/packages/@monomind/cli/dist/src/browser/tabs.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/browser/tabs.js +8 -5
- package/packages/@monomind/cli/dist/src/browser/wait.js +23 -13
- package/packages/@monomind/cli/dist/src/commands/browse.js +265 -32
- package/packages/@monomind/cli/package.json +1 -1
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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>)...`
|