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 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.13",
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-init.js",
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
- WORKER_SESSION="${GSD_WORKER_SESSION:-gsd-worker}"
3
- OBSERVER_SESSION="${GSD_OBSERVER_SESSION:-gsd-observer}"
4
- echo "[gsd-observer] Tearing down sessions..."
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
- echo "[gsd-observer] Cleaning up temp files..."
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."