gsd-init 1.0.13 → 1.0.15
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/README.md +8 -8
- package/bin/gsd.js +4 -4
- package/package.json +2 -3
- package/templates/scripts/teardown.sh +46 -4
package/README.md
CHANGED
|
@@ -10,12 +10,12 @@ npm install -g gsd-init
|
|
|
10
10
|
|
|
11
11
|
## Commands
|
|
12
12
|
|
|
13
|
-
### `gsd init <project-name>`
|
|
13
|
+
### `gsd-init init <project-name>`
|
|
14
14
|
|
|
15
15
|
Creates a project folder and installs all GSD files inside it:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
gsd init my-project
|
|
18
|
+
gsd-init init my-project
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Installs into `my-project/.gsd/` and registers the stop hook in `my-project/.claude/settings.json`.
|
|
@@ -27,26 +27,26 @@ cd my-project
|
|
|
27
27
|
npx gsd-init
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
### `gsd start`
|
|
30
|
+
### `gsd-init start`
|
|
31
31
|
|
|
32
32
|
Starts the observer and worker tmux sessions for the current project. Run from inside the project directory:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
cd my-project
|
|
36
|
-
gsd start
|
|
36
|
+
gsd-init start
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
- Creates sessions named `gsd-observer-<project>` and `gsd-worker-<project>`
|
|
40
40
|
- Opens Terminal windows attached to each session
|
|
41
41
|
- Observer session includes a listener daemon that auto-responds to GSD phase events
|
|
42
42
|
|
|
43
|
-
### `gsd teardown`
|
|
43
|
+
### `gsd-init teardown`
|
|
44
44
|
|
|
45
45
|
Kills all GSD tmux sessions for the current project:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
cd my-project
|
|
49
|
-
gsd teardown
|
|
49
|
+
gsd-init teardown
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
## How it works
|
|
@@ -57,13 +57,13 @@ my-project/
|
|
|
57
57
|
│ ├── agents/gsd-observer.md # Observer Claude agent prompt
|
|
58
58
|
│ ├── hooks/gsd-stop-hook.sh # Fires after each Claude response in Worker
|
|
59
59
|
│ ├── scripts/
|
|
60
|
-
│ │ ├── start.sh # Start observer + worker (used by gsd start)
|
|
60
|
+
│ │ ├── start.sh # Start observer + worker (used by gsd-init start)
|
|
61
61
|
│ │ ├── start-observer.sh # Start observer tmux session
|
|
62
62
|
│ │ ├── start-worker.sh # Start worker tmux session
|
|
63
63
|
│ │ ├── listen.sh # Daemon: watches for events, wakes Observer
|
|
64
64
|
│ │ ├── notify-worker.sh # Injects Observer response into Worker pane
|
|
65
65
|
│ │ ├── wake-observer.sh # Sends event task to Observer Claude
|
|
66
|
-
│ │ ├── teardown.sh # Kill all sessions (used by gsd teardown)
|
|
66
|
+
│ │ ├── teardown.sh # Kill all sessions (used by gsd-init teardown)
|
|
67
67
|
│ │ └── verify.sh # Verify setup is working
|
|
68
68
|
│ └── schema/
|
|
69
69
|
│ ├── event.json # Event file schema
|
package/bin/gsd.js
CHANGED
|
@@ -15,7 +15,7 @@ const cmd = args[0];
|
|
|
15
15
|
function findScript(name) {
|
|
16
16
|
var p = path.join(process.cwd(), '.gsd', 'scripts', name);
|
|
17
17
|
if (!fs.existsSync(p)) {
|
|
18
|
-
console.error('Error: ' + p + ' not found. Run "gsd init <project-name>" first.');
|
|
18
|
+
console.error('Error: ' + p + ' not found. Run "gsd-init init <project-name>" first.');
|
|
19
19
|
process.exit(1);
|
|
20
20
|
}
|
|
21
21
|
return p;
|
|
@@ -50,9 +50,9 @@ switch (cmd) {
|
|
|
50
50
|
default:
|
|
51
51
|
console.log([
|
|
52
52
|
'Usage:',
|
|
53
|
-
' gsd init <project-name> Create project folder and install GSD',
|
|
54
|
-
' gsd start Start observer + worker tmux sessions',
|
|
55
|
-
' gsd teardown Kill all GSD tmux sessions',
|
|
53
|
+
' gsd-init init <project-name> Create project folder and install GSD',
|
|
54
|
+
' gsd-init start Start observer + worker tmux sessions',
|
|
55
|
+
' gsd-init teardown Kill all GSD tmux sessions',
|
|
56
56
|
].join('\n'));
|
|
57
57
|
process.exit(cmd ? 1 : 0);
|
|
58
58
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gsd-init",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.15",
|
|
4
4
|
"description": "Set up GSD observer/worker tmux system in a project",
|
|
5
5
|
"bin": {
|
|
6
|
-
"gsd-init": "bin/gsd
|
|
7
|
-
"gsd": "bin/gsd.js"
|
|
6
|
+
"gsd-init": "bin/gsd.js"
|
|
8
7
|
},
|
|
9
8
|
"files": [
|
|
10
9
|
"bin",
|
|
@@ -1,9 +1,51 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
3
|
+
PROJECT_DIR="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
|
4
|
+
PROJECT_NAME="$(basename "$PROJECT_DIR")"
|
|
5
|
+
|
|
6
|
+
WORKER_SESSION="${GSD_WORKER_SESSION:-gsd-worker-${PROJECT_NAME}}"
|
|
7
|
+
OBSERVER_SESSION="${GSD_OBSERVER_SESSION:-gsd-observer-${PROJECT_NAME}}"
|
|
8
|
+
|
|
9
|
+
echo "[gsd] Tearing down sessions..."
|
|
5
10
|
tmux kill-session -t "$WORKER_SESSION" 2>/dev/null && echo " Killed: $WORKER_SESSION" || echo " Not running: $WORKER_SESSION"
|
|
6
11
|
tmux kill-session -t "$OBSERVER_SESSION" 2>/dev/null && echo " Killed: $OBSERVER_SESSION" || echo " Not running: $OBSERVER_SESSION"
|
|
7
|
-
|
|
12
|
+
|
|
13
|
+
echo "[gsd] Cleaning up temp files..."
|
|
8
14
|
rm -f /tmp/gsd-event-*.json /tmp/gsd-response-*.json /tmp/gsd-last-event-phase
|
|
15
|
+
|
|
16
|
+
echo "[gsd] Closing Terminal windows..."
|
|
17
|
+
osascript <<EOF 2>/dev/null || true
|
|
18
|
+
tell application "Terminal"
|
|
19
|
+
set wins to every window
|
|
20
|
+
repeat with w in wins
|
|
21
|
+
try
|
|
22
|
+
set cmd to custom title of w
|
|
23
|
+
on error
|
|
24
|
+
set cmd to ""
|
|
25
|
+
end try
|
|
26
|
+
if cmd contains "$WORKER_SESSION" or cmd contains "$OBSERVER_SESSION" then
|
|
27
|
+
close w
|
|
28
|
+
end if
|
|
29
|
+
end repeat
|
|
30
|
+
end tell
|
|
31
|
+
EOF
|
|
32
|
+
|
|
33
|
+
# Also close by matching the tmux attach command in the tab
|
|
34
|
+
osascript <<EOF 2>/dev/null || true
|
|
35
|
+
tell application "Terminal"
|
|
36
|
+
set wins to every window
|
|
37
|
+
repeat with w in wins
|
|
38
|
+
repeat with t in every tab of w
|
|
39
|
+
set p to processes of t
|
|
40
|
+
repeat with proc in p
|
|
41
|
+
if proc contains "$WORKER_SESSION" or proc contains "$OBSERVER_SESSION" then
|
|
42
|
+
close w
|
|
43
|
+
exit repeat
|
|
44
|
+
end if
|
|
45
|
+
end repeat
|
|
46
|
+
end repeat
|
|
47
|
+
end repeat
|
|
48
|
+
end tell
|
|
49
|
+
EOF
|
|
50
|
+
|
|
9
51
|
echo " Done."
|