dev-sessions 0.2.2 → 0.2.4

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.
Files changed (39) hide show
  1. package/README.md +124 -77
  2. package/dist/backends/backend.d.ts +42 -0
  3. package/dist/backends/backend.js +3 -0
  4. package/dist/backends/backend.js.map +1 -0
  5. package/dist/backends/claude-backend.d.ts +22 -0
  6. package/dist/backends/claude-backend.js +176 -0
  7. package/dist/backends/claude-backend.js.map +1 -0
  8. package/dist/backends/claude-tmux.d.ts +0 -2
  9. package/dist/backends/claude-tmux.js +8 -21
  10. package/dist/backends/claude-tmux.js.map +1 -1
  11. package/dist/backends/codex-appserver.d.ts +44 -2
  12. package/dist/backends/codex-appserver.js +291 -109
  13. package/dist/backends/codex-appserver.js.map +1 -1
  14. package/dist/backends/codex-backend.d.ts +21 -0
  15. package/dist/backends/codex-backend.js +224 -0
  16. package/dist/backends/codex-backend.js.map +1 -0
  17. package/dist/cli.d.ts +3 -1
  18. package/dist/cli.js +31 -3
  19. package/dist/cli.js.map +1 -1
  20. package/dist/gateway/client.d.ts +3 -1
  21. package/dist/gateway/client.js +24 -2
  22. package/dist/gateway/client.js.map +1 -1
  23. package/dist/gateway/server.js +45 -2
  24. package/dist/gateway/server.js.map +1 -1
  25. package/dist/index.js +6 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/session-manager.d.ts +7 -9
  28. package/dist/session-manager.js +115 -338
  29. package/dist/session-manager.js.map +1 -1
  30. package/dist/session-store.d.ts +4 -0
  31. package/dist/session-store.js +115 -42
  32. package/dist/session-store.js.map +1 -1
  33. package/dist/transcript/claude-parser.d.ts +1 -0
  34. package/dist/transcript/claude-parser.js +4 -0
  35. package/dist/transcript/claude-parser.js.map +1 -1
  36. package/dist/types.d.ts +7 -1
  37. package/package.json +1 -1
  38. package/skills/delegate/SKILL.md +77 -0
  39. package/skills/dev-sessions/SKILL.md +5 -13
@@ -9,6 +9,9 @@ const promises_1 = require("node:fs/promises");
9
9
  const node_os_1 = __importDefault(require("node:os"));
10
10
  const node_path_1 = __importDefault(require("node:path"));
11
11
  const CURRENT_VERSION = 1;
12
+ const LOCK_TIMEOUT_MS = 10_000;
13
+ const LOCK_RETRY_INTERVAL_MS = 20;
14
+ const LOCK_STALE_MS = 30_000;
12
15
  function getDefaultStorePath() {
13
16
  return node_path_1.default.join(node_os_1.default.homedir(), '.dev-sessions', 'sessions.json');
14
17
  }
@@ -20,7 +23,7 @@ function isStoredSession(value) {
20
23
  return (typeof candidate.championId === 'string' &&
21
24
  typeof candidate.internalId === 'string' &&
22
25
  (candidate.cli === 'claude' || candidate.cli === 'codex') &&
23
- (candidate.mode === 'yolo' || candidate.mode === 'native' || candidate.mode === 'docker') &&
26
+ (candidate.mode === 'native' || candidate.mode === 'docker') &&
24
27
  typeof candidate.path === 'string' &&
25
28
  (candidate.description === undefined || typeof candidate.description === 'string') &&
26
29
  (candidate.status === 'active' || candidate.status === 'inactive') &&
@@ -28,6 +31,7 @@ function isStoredSession(value) {
28
31
  (candidate.appServerPort === undefined || Number.isInteger(candidate.appServerPort)) &&
29
32
  (candidate.model === undefined || typeof candidate.model === 'string') &&
30
33
  (candidate.codexTurnInProgress === undefined || typeof candidate.codexTurnInProgress === 'boolean') &&
34
+ (candidate.codexActiveTurnId === undefined || typeof candidate.codexActiveTurnId === 'string') &&
31
35
  (candidate.codexLastCompletedAt === undefined || typeof candidate.codexLastCompletedAt === 'string') &&
32
36
  (candidate.lastTurnStatus === undefined ||
33
37
  candidate.lastTurnStatus === 'completed' ||
@@ -40,10 +44,15 @@ function isStoredSession(value) {
40
44
  typeof candidate.createdAt === 'string' &&
41
45
  typeof candidate.lastUsed === 'string');
42
46
  }
47
+ function sleep(ms) {
48
+ return new Promise((resolve) => setTimeout(resolve, ms));
49
+ }
43
50
  class SessionStore {
44
51
  storePath;
52
+ lockPath;
45
53
  constructor(storePath = getDefaultStorePath()) {
46
54
  this.storePath = storePath;
55
+ this.lockPath = `${storePath}.lock`;
47
56
  }
48
57
  get filePath() {
49
58
  return this.storePath;
@@ -57,62 +66,126 @@ class SessionStore {
57
66
  return store.sessions.find((session) => session.championId === championId);
58
67
  }
59
68
  async upsertSession(session) {
60
- const store = await this.readStore();
61
- const index = store.sessions.findIndex((candidate) => candidate.championId === session.championId);
62
- if (index >= 0) {
63
- store.sessions[index] = session;
64
- }
65
- else {
66
- store.sessions.push(session);
67
- }
68
- await this.writeStore(store);
69
+ await this.withLock(async () => {
70
+ const store = await this.readStore();
71
+ const index = store.sessions.findIndex((candidate) => candidate.championId === session.championId);
72
+ if (index >= 0) {
73
+ store.sessions[index] = session;
74
+ }
75
+ else {
76
+ store.sessions.push(session);
77
+ }
78
+ await this.writeStore(store);
79
+ });
69
80
  }
70
81
  async updateSession(championId, partial) {
71
- const store = await this.readStore();
72
- const index = store.sessions.findIndex((candidate) => candidate.championId === championId);
73
- if (index < 0) {
74
- return undefined;
75
- }
76
- const updatedSession = {
77
- ...store.sessions[index],
78
- ...partial,
79
- championId: store.sessions[index].championId
80
- };
81
- store.sessions[index] = updatedSession;
82
- await this.writeStore(store);
83
- return updatedSession;
82
+ return this.withLock(async () => {
83
+ const store = await this.readStore();
84
+ const index = store.sessions.findIndex((candidate) => candidate.championId === championId);
85
+ if (index < 0) {
86
+ return undefined;
87
+ }
88
+ const updatedSession = {
89
+ ...store.sessions[index],
90
+ ...partial,
91
+ championId: store.sessions[index].championId
92
+ };
93
+ store.sessions[index] = updatedSession;
94
+ await this.writeStore(store);
95
+ return updatedSession;
96
+ });
84
97
  }
85
98
  async deleteSession(championId) {
86
- const store = await this.readStore();
87
- const initialLength = store.sessions.length;
88
- store.sessions = store.sessions.filter((candidate) => candidate.championId !== championId);
89
- if (store.sessions.length === initialLength) {
90
- return false;
91
- }
92
- await this.writeStore(store);
93
- return true;
99
+ return this.withLock(async () => {
100
+ const store = await this.readStore();
101
+ const initialLength = store.sessions.length;
102
+ store.sessions = store.sessions.filter((candidate) => candidate.championId !== championId);
103
+ if (store.sessions.length === initialLength) {
104
+ return false;
105
+ }
106
+ await this.writeStore(store);
107
+ return true;
108
+ });
94
109
  }
95
110
  async pruneSessions(championIds) {
96
111
  if (championIds.length === 0) {
97
112
  return 0;
98
113
  }
99
- const ids = new Set(championIds);
100
- const store = await this.readStore();
101
- const initialLength = store.sessions.length;
102
- store.sessions = store.sessions.filter((candidate) => !ids.has(candidate.championId));
103
- const removed = initialLength - store.sessions.length;
104
- if (removed > 0) {
105
- await this.writeStore(store);
114
+ return this.withLock(async () => {
115
+ const ids = new Set(championIds);
116
+ const store = await this.readStore();
117
+ const initialLength = store.sessions.length;
118
+ store.sessions = store.sessions.filter((candidate) => !ids.has(candidate.championId));
119
+ const removed = initialLength - store.sessions.length;
120
+ if (removed > 0) {
121
+ await this.writeStore(store);
122
+ }
123
+ return removed;
124
+ });
125
+ }
126
+ async withLock(fn) {
127
+ await this.acquireLock();
128
+ try {
129
+ return await fn();
130
+ }
131
+ finally {
132
+ await this.releaseLock();
133
+ }
134
+ }
135
+ async acquireLock() {
136
+ await (0, promises_1.mkdir)(node_path_1.default.dirname(this.storePath), { recursive: true });
137
+ const deadline = Date.now() + LOCK_TIMEOUT_MS;
138
+ while (true) {
139
+ try {
140
+ await (0, promises_1.mkdir)(this.lockPath);
141
+ return;
142
+ }
143
+ catch (error) {
144
+ if (error.code !== 'EEXIST') {
145
+ throw error;
146
+ }
147
+ }
148
+ // Check for stale lock (e.g. process crashed while holding it)
149
+ try {
150
+ const lockStat = await (0, promises_1.stat)(this.lockPath);
151
+ if (Date.now() - lockStat.mtimeMs > LOCK_STALE_MS) {
152
+ await (0, promises_1.rm)(this.lockPath, { recursive: true, force: true });
153
+ continue;
154
+ }
155
+ }
156
+ catch {
157
+ // Lock dir vanished between our check — retry acquire
158
+ continue;
159
+ }
160
+ if (Date.now() >= deadline) {
161
+ throw new Error(`Timed out waiting for session store lock at ${this.lockPath}`);
162
+ }
163
+ // Jittered retry to reduce contention
164
+ const jitter = Math.random() * LOCK_RETRY_INTERVAL_MS;
165
+ await sleep(LOCK_RETRY_INTERVAL_MS + jitter);
106
166
  }
107
- return removed;
167
+ }
168
+ async releaseLock() {
169
+ await (0, promises_1.rm)(this.lockPath, { recursive: true, force: true });
108
170
  }
109
171
  async readStore() {
110
172
  try {
111
173
  const raw = await (0, promises_1.readFile)(this.storePath, 'utf8');
112
174
  const parsed = JSON.parse(raw);
113
- const sessions = Array.isArray(parsed.sessions)
114
- ? parsed.sessions.filter(isStoredSession)
115
- : [];
175
+ const sessions = [];
176
+ if (Array.isArray(parsed.sessions)) {
177
+ for (const [index, candidate] of parsed.sessions.entries()) {
178
+ if (isStoredSession(candidate)) {
179
+ sessions.push(candidate);
180
+ continue;
181
+ }
182
+ const candidateChampionId = candidate && typeof candidate === 'object' && typeof candidate.championId === 'string'
183
+ ? candidate.championId
184
+ : undefined;
185
+ const championIdSuffix = candidateChampionId ? ` championId=${candidateChampionId}` : '';
186
+ console.warn(`[dev-sessions] ignoring invalid session record in ${this.storePath} at index ${index}${championIdSuffix}`);
187
+ }
188
+ }
116
189
  return {
117
190
  version: typeof parsed.version === 'number' ? parsed.version : CURRENT_VERSION,
118
191
  sessions
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,6 @@ export declare function extractTextBlocks(content: unknown): string[];
13
13
  export declare function getAssistantTextBlocks(entries: ClaudeTranscriptEntry[]): string[];
14
14
  export declare function countAssistantMessages(entries: ClaudeTranscriptEntry[]): number;
15
15
  export declare function countSystemEntries(entries: ClaudeTranscriptEntry[]): number;
16
+ export declare function countFileHistorySnapshots(entries: ClaudeTranscriptEntry[]): number;
16
17
  export declare function inferTranscriptStatus(entries: ClaudeTranscriptEntry[]): AgentTurnStatus;
17
18
  export declare function hasAssistantResponseAfterLatestUser(entries: ClaudeTranscriptEntry[]): boolean;
@@ -10,6 +10,7 @@ exports.extractTextBlocks = extractTextBlocks;
10
10
  exports.getAssistantTextBlocks = getAssistantTextBlocks;
11
11
  exports.countAssistantMessages = countAssistantMessages;
12
12
  exports.countSystemEntries = countSystemEntries;
13
+ exports.countFileHistorySnapshots = countFileHistorySnapshots;
13
14
  exports.inferTranscriptStatus = inferTranscriptStatus;
14
15
  exports.hasAssistantResponseAfterLatestUser = hasAssistantResponseAfterLatestUser;
15
16
  const promises_1 = require("node:fs/promises");
@@ -140,6 +141,9 @@ function countAssistantMessages(entries) {
140
141
  function countSystemEntries(entries) {
141
142
  return entries.reduce((count, entry) => count + (entry.type === 'system' ? 1 : 0), 0);
142
143
  }
144
+ function countFileHistorySnapshots(entries) {
145
+ return entries.reduce((count, entry) => count + (entry.type === 'file-history-snapshot' ? 1 : 0), 0);
146
+ }
143
147
  function findLastIndex(entries, predicate) {
144
148
  for (let index = entries.length - 1; index >= 0; index -= 1) {
145
149
  if (predicate(entries[index])) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-parser.js","sourceRoot":"","sources":["../../src/transcript/claude-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-parser.js","sourceRoot":"","sources":["../../src/transcript/claude-parser.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type SessionMode = 'yolo' | 'native' | 'docker';
1
+ export type SessionMode = 'native' | 'docker';
2
2
  export type SessionStatus = 'active' | 'inactive';
3
3
  export type AgentTurnStatus = 'idle' | 'working' | 'waiting_for_input';
4
4
  export type SessionCli = 'claude' | 'codex';
@@ -15,10 +15,12 @@ export interface StoredSession {
15
15
  appServerPort?: number;
16
16
  model?: string;
17
17
  codexTurnInProgress?: boolean;
18
+ codexActiveTurnId?: string;
18
19
  codexLastCompletedAt?: string;
19
20
  lastTurnStatus?: CodexTurnStatus;
20
21
  lastTurnError?: string;
21
22
  lastAssistantMessages?: string[];
23
+ claudeSystemCountAtSend?: number;
22
24
  createdAt: string;
23
25
  lastUsed: string;
24
26
  }
@@ -27,3 +29,7 @@ export interface WaitResult {
27
29
  timedOut: boolean;
28
30
  elapsedMs: number;
29
31
  }
32
+ export interface SessionTurn {
33
+ role: 'human' | 'assistant';
34
+ text: string;
35
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-sessions",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "CLI tool to spawn and manage coding agent sessions",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: delegate
3
+ description: Mindset and principles for orchestrating sub-agents well. Read before delegating non-trivial work.
4
+ ---
5
+
6
+ # Delegate: Agent Orchestration Mindset
7
+
8
+ For mechanics, see the `dev-sessions` skill. This is about *how to think* as an orchestrator.
9
+
10
+ ---
11
+
12
+ ## Before you delegate: get clear yourself
13
+
14
+ The orchestrator's own clarity is the bottleneck. If you delegate before you've thought clearly about what you actually want, no prompting principle saves you. Before writing a brief, ask: do I understand the problem well enough to recognize a good solution when I see one? If not, think it through first — or use a sub-agent to explore, not to implement.
15
+
16
+ This skill was itself written this way: rather than handing over a spec, the underlying mental model was communicated and refined until there was shared understanding, then execution was trusted. The result is better than any prescriptive brief would have produced.
17
+
18
+ ---
19
+
20
+ ## The mental model
21
+
22
+ Your job as orchestrator is **judgment and synthesis** — holding the big picture, making decisions, staying at the right altitude. Sub-agents are your specialists: highly intelligent, capable of going deep on a focused problem. Your constraint is context window. Theirs is scope.
23
+
24
+ This division of labor only works if you respect it. Don't burn your context on implementation details sub-agents can handle. Don't make decisions sub-agents are better positioned to make after reading the code. And don't delegate judgment — that's your job.
25
+
26
+ ---
27
+
28
+ ## Alignment before implementation
29
+
30
+ The most expensive mistake is a sub-agent that implements the wrong thing correctly. Before delegating implementation, make sure the agent's understanding of the problem matches yours.
31
+
32
+ For anything non-trivial, ask for a proposal or plan first. Read it. If it matches your mental model, say go. If it doesn't, correct the misalignment now — not after a full implementation turn. This is cheap. Rework is expensive.
33
+
34
+ This isn't a rule to follow — it's a consequence of the mental model. You're verifying shared understanding before the agent goes deep.
35
+
36
+ For simpler tasks where you already have full context and know exactly what you want, skip straight to implementation. The proposal step only earns its cost when there's real uncertainty about approach.
37
+
38
+ ---
39
+
40
+ ## Prompting: principles over tips
41
+
42
+ Sub-agents are intelligent. Give them enough to reason from, not a script to follow. The goal is shared understanding, not compliance.
43
+
44
+ What actually matters in a brief:
45
+ - **What success looks like** — verifiable, not subjective. "All tests pass" not "looks clean."
46
+ - **What they should read first** — don't make them discover context from scratch
47
+ - **Real constraints** — things that genuinely bound the solution, not implementation preferences
48
+ - **Always set `--path`** — sub-agents default to their CWD
49
+
50
+ What to avoid: over-specifying how to implement something when you're not certain it's right. You become responsible for a design decision you made without full context.
51
+
52
+ ---
53
+
54
+ ## Multiple perspectives: worth it sometimes, not always
55
+
56
+ Getting Claude and Codex to independently explore a design question before you commit is valuable — but it takes time. Reserve it for decisions that are genuinely hard to reverse or high stakes.
57
+
58
+ ```bash
59
+ s1=$(dev-sessions create -q --cli claude --path /repo --description "design: X")
60
+ s2=$(dev-sessions create -q --cli codex --path /repo --description "design: X")
61
+ dev-sessions send "$s1" --file QUESTION.md
62
+ dev-sessions send "$s2" --file QUESTION.md
63
+ dev-sessions wait "$s1" && dev-sessions last-message "$s1"
64
+ dev-sessions wait "$s2" && dev-sessions last-message "$s2"
65
+ ```
66
+
67
+ Keep them independent — agents that see each other's output anchor to it. Synthesize yourself. Claude is faster and more general-purpose; Codex excels at deep, complex implementation tasks and follows detailed instructions exceptionally well.
68
+
69
+ For smaller decisions: explore quickly yourself, or just delegate with a clear brief if you already understand the problem.
70
+
71
+ ---
72
+
73
+ ## Synthesizing results
74
+
75
+ Results come back to you for judgment, not acceptance. Check them against your acceptance criteria. Reconcile conflicts between parallel sessions explicitly — don't merge blindly. If something produced nothing useful, check `last-message -n 5` to understand where it got stuck, then re-engage with a more focused prompt.
76
+
77
+ The synthesis step is where your value as orchestrator lives. Don't skip it.
@@ -6,14 +6,14 @@ allowed-tools: Bash(dev-sessions:*)
6
6
 
7
7
  # dev-sessions: Parallel Agent Delegation
8
8
 
9
- Spawn Claude Code sessions, delegate tasks, collect results.
9
+ This tool is for **you** (the agent) to use silently. Spawn sessions, send tasks, wait for results, and handle any `waiting_for_input` states yourself. Do not narrate the commands you're running or tell the user to monitor sessions — manage the full lifecycle and report outcomes when done.
10
10
 
11
11
  Sessions get auto-generated **champion IDs** (e.g. `fizz-top`) — use these in all commands.
12
12
 
13
13
  ## Standard Workflow
14
14
 
15
15
  ```bash
16
- # Create (defaults: --cli claude --mode yolo --path <cwd>)
16
+ # Create (defaults: --cli claude --mode native --path <cwd>)
17
17
  sid=$(dev-sessions create -q --path /abs/path/to/repo --description "fix parser bug")
18
18
 
19
19
  # Send task (inline or from file)
@@ -33,7 +33,7 @@ dev-sessions kill "$sid"
33
33
  ## Commands
34
34
 
35
35
  ```
36
- create [-p path] [-d desc] [--cli claude|codex] [-m yolo|native|docker] [-q]
36
+ create [-p path] [-d desc] [--cli claude|codex] [-m native|docker] [-q]
37
37
  send <id> [message] [-f file]
38
38
  wait <id> [-t seconds] [-i interval_seconds]
39
39
  last-message <id> [-n count]
@@ -44,7 +44,7 @@ kill <id>
44
44
 
45
45
  ## Key Flags
46
46
 
47
- - `--mode yolo` (default) — auto-approves all tool calls. **Always use for unattended delegation.**
47
+ - `--mode native` (default) — runs with `--dangerously-skip-permissions`, auto-approves all tool calls. **Always use for unattended delegation.**
48
48
  - `--path` — defaults to your CWD. Set explicitly when delegating to a different repo.
49
49
  - `-q` on `create` — prints only the champion ID, ideal for `sid=$(...)` capture.
50
50
 
@@ -69,12 +69,4 @@ dev-sessions wait "$s1" && dev-sessions last-message "$s1"
69
69
  dev-sessions wait "$s2" && dev-sessions last-message "$s2"
70
70
  ```
71
71
 
72
- ## Writing Good Task Briefs
73
-
74
- ```
75
- Repo: /abs/path/to/repo
76
- Goal: <what to implement>
77
- Read first: src/foo.ts, tests/foo.test.ts
78
- Constraints: do not modify generated files
79
- Acceptance: all tests pass, new behavior verified in <test>
80
- ```
72
+ See the `delegate` skill for how to think about structuring tasks and prompting sub-agents effectively.