autodev-cli 1.4.108 → 1.4.110

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.
@@ -45,6 +45,8 @@ var __importStar = (this && this.__importStar) || (function () {
45
45
  })();
46
46
  Object.defineProperty(exports, "__esModule", { value: true });
47
47
  exports.listGrokSessions = listGrokSessions;
48
+ exports.listAllGrokSessions = listAllGrokSessions;
49
+ exports.readGrokTranscript = readGrokTranscript;
48
50
  const fs = __importStar(require("fs"));
49
51
  const os = __importStar(require("os"));
50
52
  const path = __importStar(require("path"));
@@ -93,4 +95,152 @@ function listGrokSessions(root) {
93
95
  catch { /* ignore */ }
94
96
  }
95
97
  }
98
+ /** ALL grok sessions across every workspace (newest first), carrying each row's
99
+ * own cwd. Same store as {@link listGrokSessions} but unfiltered — for global
100
+ * cross-workspace discovery. `updated` is epoch ms. */
101
+ function listAllGrokSessions() {
102
+ const dbFile = grokSessionsDbPath();
103
+ if (!fs.existsSync(dbFile)) {
104
+ return [];
105
+ }
106
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
107
+ let db;
108
+ try {
109
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
110
+ const { DatabaseSync } = require('node:sqlite');
111
+ db = new DatabaseSync(dbFile, { readOnly: true });
112
+ return db.prepare('SELECT session_id, title, updated_at, cwd FROM session_docs').all()
113
+ .map(r => ({
114
+ id: String(r.session_id),
115
+ title: String(r.title ?? '').trim(),
116
+ updated: Number(r.updated_at ?? 0) * 1000, // grok stores seconds → ms
117
+ cwd: String(r.cwd ?? ''),
118
+ }))
119
+ .sort((a, b) => b.updated - a.updated);
120
+ }
121
+ catch {
122
+ return [];
123
+ }
124
+ finally {
125
+ try {
126
+ db?.close();
127
+ }
128
+ catch { /* ignore */ }
129
+ }
130
+ }
131
+ /** Path to grok's clean structured transcript for a session under a given cwd. */
132
+ function grokChatHistoryPath(cwd, sessionId) {
133
+ const base = process.env['GROK_HOME'] || path.join(os.homedir(), '.grok');
134
+ return path.join(base, 'sessions', encodeURIComponent(cwd), sessionId, 'chat_history.jsonl');
135
+ }
136
+ /** Resolve a session's chat_history.jsonl. If `cwd` is unknown, look the cwd up
137
+ * in the session index, then fall back to scanning every workspace folder. */
138
+ function resolveGrokChatHistory(sessionId, cwd) {
139
+ if (cwd) {
140
+ const p = grokChatHistoryPath(cwd, sessionId);
141
+ if (fs.existsSync(p)) {
142
+ return p;
143
+ }
144
+ }
145
+ const known = listAllGrokSessions().find(s => s.id === sessionId)?.cwd;
146
+ if (known) {
147
+ const p = grokChatHistoryPath(known, sessionId);
148
+ if (fs.existsSync(p)) {
149
+ return p;
150
+ }
151
+ }
152
+ // Last resort: scan the per-workspace session folders for a matching id.
153
+ try {
154
+ const base = process.env['GROK_HOME'] || path.join(os.homedir(), '.grok');
155
+ const sessRoot = path.join(base, 'sessions');
156
+ for (const enc of fs.readdirSync(sessRoot)) {
157
+ const p = path.join(sessRoot, enc, sessionId, 'chat_history.jsonl');
158
+ if (fs.existsSync(p)) {
159
+ return p;
160
+ }
161
+ }
162
+ }
163
+ catch { /* none */ }
164
+ return undefined;
165
+ }
166
+ /**
167
+ * Read a grok session's clean chat_history.jsonl into a normalized message
168
+ * array. Each line is {type|role, content, tool_calls?, tool_call_id?}. Renders
169
+ * user/assistant/system prose, assistant tool_calls, and tool_result output.
170
+ * Returns at most `limit` messages (the tail). Read-only; [] on any miss.
171
+ */
172
+ function readGrokTranscript(sessionId, cwd, limit = 400) {
173
+ const file = resolveGrokChatHistory(sessionId, cwd);
174
+ if (!file) {
175
+ return [];
176
+ }
177
+ let text = '';
178
+ try {
179
+ text = fs.readFileSync(file, 'utf8');
180
+ }
181
+ catch {
182
+ return [];
183
+ }
184
+ const trunc = (s, max) => (s.length > max ? s.slice(0, max) + '…' : s);
185
+ // grok content is either a plain string or an array of {type:'text',text} blocks.
186
+ const extract = (c) => {
187
+ if (typeof c === 'string') {
188
+ return c;
189
+ }
190
+ if (Array.isArray(c)) {
191
+ return c
192
+ .map(b => (b && b['type'] === 'text' ? String(b['text'] ?? '') : ''))
193
+ .filter(Boolean).join('\n');
194
+ }
195
+ return c == null ? '' : JSON.stringify(c);
196
+ };
197
+ const msgs = [];
198
+ for (const line of text.split('\n')) {
199
+ const s = line.trim();
200
+ if (!s) {
201
+ continue;
202
+ }
203
+ let o;
204
+ try {
205
+ o = JSON.parse(s);
206
+ }
207
+ catch {
208
+ continue;
209
+ }
210
+ const kind = o.type || o.role;
211
+ const content = extract(o.content);
212
+ if (kind === 'user') {
213
+ if (content.trim()) {
214
+ msgs.push({ role: 'user', text: content.trim() });
215
+ }
216
+ }
217
+ else if (kind === 'assistant') {
218
+ if (content.trim()) {
219
+ msgs.push({ role: 'assistant', text: content.trim() });
220
+ }
221
+ if (Array.isArray(o.tool_calls)) {
222
+ for (const tc of o.tool_calls) {
223
+ const name = (tc?.name || '').trim();
224
+ if (!name) {
225
+ continue;
226
+ }
227
+ const args = tc?.arguments ? trunc(String(tc.arguments), 200) : '';
228
+ msgs.push({ role: 'tool', text: `🔧 ${name}(${args})` });
229
+ }
230
+ }
231
+ }
232
+ else if (kind === 'tool_result') {
233
+ if (content.trim()) {
234
+ msgs.push({ role: 'tool', text: `↳ ${trunc(content.trim(), 400)}` });
235
+ }
236
+ }
237
+ else if (kind === 'system') {
238
+ if (content.trim()) {
239
+ msgs.push({ role: 'system', text: trunc(content.trim(), 200) });
240
+ }
241
+ }
242
+ // 'reasoning' records are intentionally skipped (internal chain-of-thought).
243
+ }
244
+ return msgs.slice(-limit);
245
+ }
96
246
  //# sourceMappingURL=grokSessions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grokSessions.js","sourceRoot":"","sources":["../../src/providers/grokSessions.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,8CAA8C;AAC9C,kEAAkE;AAClE,8DAA8D;AAC9D,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,qDAAqD;AACrD,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmB9E,4CAmBC;AApCD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAE7B,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;AAC9D,CAAC;AAED,qEAAqE;AACrE,SAAS,IAAI,CAAC,CAAS;IACrB,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACzE,CAAC;AAID,gFAAgF;AAChF,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAC1C,8DAA8D;IAC9D,IAAI,EAAO,CAAC;IACZ,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAChD,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAQ,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,EAAuB;aACzG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;YACxB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACnC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,2BAA2B;SACvE,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;YAAS,CAAC;QAAC,IAAI,CAAC;YAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"grokSessions.js","sourceRoot":"","sources":["../../src/providers/grokSessions.ts"],"names":[],"mappings":"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"}
package/out/sessions.js CHANGED
@@ -9,6 +9,7 @@ exports.collectSessions = collectSessions;
9
9
  const claudeCliProvider_1 = require("./providers/claudeCliProvider");
10
10
  const opencodeDb_1 = require("./agentBackup/opencodeDb");
11
11
  const grokSessions_1 = require("./providers/grokSessions");
12
+ const copilotSessions_1 = require("./providers/copilotSessions");
12
13
  const settingsLoader_1 = require("./core/settingsLoader");
13
14
  /** List sessions for a workspace. If `provider` is omitted, infer the family
14
15
  * from settings and include claude + opencode (the inspectable stores). */
@@ -19,6 +20,7 @@ function collectSessions(root, provider) {
19
20
  const wantClaude = fam.startsWith('claude') || !provider;
20
21
  const wantOpencode = fam.startsWith('opencode') || !provider;
21
22
  const wantGrok = fam.startsWith('grok') || !provider;
23
+ const wantCopilot = fam.startsWith('copilot') || !provider;
22
24
  if (wantClaude) {
23
25
  for (const s of (0, claudeCliProvider_1.listClaudeSessions)(root)) {
24
26
  out.push({ provider: 'claude', id: s.id, name: (0, claudeCliProvider_1.getClaudeSessionDisplay)(s.id) || '(untitled)', updated: s.mtime });
@@ -34,6 +36,11 @@ function collectSessions(root, provider) {
34
36
  out.push({ provider: 'grok', id: s.id, name: s.title || '(untitled)', updated: s.updated });
35
37
  }
36
38
  }
39
+ if (wantCopilot) {
40
+ for (const s of (0, copilotSessions_1.listCopilotSessions)(root)) {
41
+ out.push({ provider: 'copilot', id: s.id, name: s.title || '(untitled)', updated: s.updated });
42
+ }
43
+ }
37
44
  return out.sort((a, b) => b.updated - a.updated);
38
45
  }
39
46
  //# sourceMappingURL=sessions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":";;AAqBA,0CAyBC;AA9CD,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,8EAA8E;AAC9E,qEAA4F;AAC5F,yDAAwE;AACxE,2DAA4D;AAC5D,0DAA4D;AAW5D;4EAC4E;AAC5E,SAAgB,eAAe,CAAC,IAAY,EAAE,QAAqB;IACjE,MAAM,QAAQ,GAAG,IAAA,oCAAmB,EAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAkB,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzD,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAErD,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,IAAA,sCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAA,2CAAuB,EAAC,CAAC,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,IAAA,yCAA4B,EAAC,IAAI,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,IAAA,+BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":";;AAsBA,0CA+BC;AArDD,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,8EAA8E;AAC9E,qEAA4F;AAC5F,yDAAwE;AACxE,2DAA4D;AAC5D,iEAAkE;AAClE,0DAA4D;AAW5D;4EAC4E;AAC5E,SAAgB,eAAe,CAAC,IAAY,EAAE,QAAqB;IACjE,MAAM,QAAQ,GAAG,IAAA,oCAAmB,EAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAkB,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzD,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrD,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IAE3D,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,IAAA,sCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAA,2CAAuB,EAAC,CAAC,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,IAAA,yCAA4B,EAAC,IAAI,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,IAAA,+BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,IAAA,qCAAmB,EAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,32 @@
1
+ /** A provider family for global session discovery. */
2
+ export type SessionProvider = 'claude' | 'grok' | 'opencode' | 'copilot';
3
+ /** Normalized cross-provider session descriptor. `updated` is epoch ms. */
4
+ export interface GlobalSession {
5
+ provider: SessionProvider;
6
+ id: string;
7
+ name: string;
8
+ cwd: string;
9
+ updated: number;
10
+ file?: string;
11
+ msgs?: number;
12
+ }
13
+ /** Normalized transcript message. */
14
+ export interface SessionMsg {
15
+ role: 'user' | 'assistant' | 'system' | 'tool';
16
+ text: string;
17
+ ts?: number;
18
+ }
19
+ /** Map a `--provider` family string onto a canonical SessionProvider, or
20
+ * undefined for "all". Accepts the fine-grained ids too (grok-tui → grok). */
21
+ export declare function normalizeSessionProvider(p?: string): SessionProvider | undefined;
22
+ /** List sessions across ALL workspaces for every provider (or one family when
23
+ * `provider` is given), newest first. */
24
+ export declare function collectAllSessions(provider?: SessionProvider): GlobalSession[];
25
+ /** Read a session's transcript as a normalized message array. `file`/`cwd` are
26
+ * optional hints that let claude/grok resolve the store faster. Capped at
27
+ * `limit` (default 400) messages. */
28
+ export declare function readSessionTranscript(provider: SessionProvider, id: string, opts?: {
29
+ file?: string;
30
+ cwd?: string;
31
+ limit?: number;
32
+ }): SessionMsg[];
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Global (cross-workspace) session discovery + transcript reading across ALL
4
+ // providers (claude, grok, opencode, copilot). Unlike collectSessions() — which
5
+ // is scoped to one workspace root — this surfaces every session on the machine
6
+ // with its own cwd, so a UI (the autodev-app Sessions tab) can list and read
7
+ // them regardless of where they were started. Single source of truth: the app
8
+ // shells to `autodev sessions --all --json` and `autodev session-show`.
9
+ //
10
+ // Read-only and resilient: any missing store degrades to []; nothing throws.
11
+ // ---------------------------------------------------------------------------
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.normalizeSessionProvider = normalizeSessionProvider;
14
+ exports.collectAllSessions = collectAllSessions;
15
+ exports.readSessionTranscript = readSessionTranscript;
16
+ const claudeCliProvider_1 = require("./providers/claudeCliProvider");
17
+ const grokSessions_1 = require("./providers/grokSessions");
18
+ const opencodeDb_1 = require("./agentBackup/opencodeDb");
19
+ const copilotSessions_1 = require("./providers/copilotSessions");
20
+ /** Map a `--provider` family string onto a canonical SessionProvider, or
21
+ * undefined for "all". Accepts the fine-grained ids too (grok-tui → grok). */
22
+ function normalizeSessionProvider(p) {
23
+ if (!p) {
24
+ return undefined;
25
+ }
26
+ const s = p.toLowerCase();
27
+ if (s.startsWith('claude')) {
28
+ return 'claude';
29
+ }
30
+ if (s.startsWith('grok')) {
31
+ return 'grok';
32
+ }
33
+ if (s.startsWith('opencode')) {
34
+ return 'opencode';
35
+ }
36
+ if (s.startsWith('copilot')) {
37
+ return 'copilot';
38
+ }
39
+ return undefined;
40
+ }
41
+ /** List sessions across ALL workspaces for every provider (or one family when
42
+ * `provider` is given), newest first. */
43
+ function collectAllSessions(provider) {
44
+ const out = [];
45
+ const want = (p) => !provider || provider === p;
46
+ if (want('claude')) {
47
+ for (const s of (0, claudeCliProvider_1.listAllClaudeSessions)()) {
48
+ out.push({ provider: 'claude', id: s.id, name: s.name, cwd: s.cwd, updated: s.updated, file: s.file, msgs: s.msgs });
49
+ }
50
+ }
51
+ if (want('grok')) {
52
+ for (const s of (0, grokSessions_1.listAllGrokSessions)()) {
53
+ out.push({ provider: 'grok', id: s.id, name: s.title || '(untitled)', cwd: s.cwd, updated: s.updated });
54
+ }
55
+ }
56
+ if (want('opencode')) {
57
+ for (const s of (0, opencodeDb_1.listAllOpenCodeSessions)()) {
58
+ out.push({ provider: 'opencode', id: s.id, name: s.title || '(untitled)', cwd: s.cwd, updated: s.updated });
59
+ }
60
+ }
61
+ if (want('copilot')) {
62
+ for (const s of (0, copilotSessions_1.listAllCopilotSessions)()) {
63
+ out.push({ provider: 'copilot', id: s.id, name: s.name, cwd: s.cwd, updated: s.updated });
64
+ }
65
+ }
66
+ return out.sort((a, b) => b.updated - a.updated);
67
+ }
68
+ /** Read a session's transcript as a normalized message array. `file`/`cwd` are
69
+ * optional hints that let claude/grok resolve the store faster. Capped at
70
+ * `limit` (default 400) messages. */
71
+ function readSessionTranscript(provider, id, opts = {}) {
72
+ const limit = opts.limit ?? 400;
73
+ switch (provider) {
74
+ case 'claude': return (0, claudeCliProvider_1.readClaudeTranscript)(id, opts.file, limit);
75
+ case 'grok': return (0, grokSessions_1.readGrokTranscript)(id, opts.cwd, limit);
76
+ case 'opencode': return (0, opencodeDb_1.readOpenCodeTranscript)(id, limit);
77
+ case 'copilot': return (0, copilotSessions_1.readCopilotTranscript)(id, limit);
78
+ default: return [];
79
+ }
80
+ }
81
+ //# sourceMappingURL=sessionsGlobal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionsGlobal.js","sourceRoot":"","sources":["../src/sessionsGlobal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autodev-cli",
3
- "version": "1.4.108",
3
+ "version": "1.4.110",
4
4
  "description": "AutoAIDev CLI — autonomous AI task loop with VS Code / Cursor launcher",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -30,7 +30,7 @@
30
30
  "dev": "tsc -p ./ --watch",
31
31
  "prepublishOnly": "npm run build",
32
32
  "start": "node bin/autodev.js",
33
- "test": "node test/smoke.mjs && node test/liveNarration.smoke.mjs && node test/liveNarration.edge.smoke.mjs && node test/normalizer.parity.smoke.mjs && node test/providerConfig.smoke.mjs && node test/mcpOnlyOperator.smoke.mjs && node test/opencodeEventFilter.smoke.mjs && node test/copilotMcpIsolation.smoke.mjs && node test/grokSpawnError.smoke.mjs && node test/initTemplate.smoke.mjs && node test/settingsAliases.smoke.mjs && node test/setupWritesOfficeMcp.smoke.mjs && node test/claudePermissions.smoke.mjs && node test/presenceGuard.smoke.mjs && node test/cliExitHardFail.smoke.mjs && node test/redactSecrets.smoke.mjs && node test/claudeUsage.smoke.mjs && node test/graphStore.smoke.mjs && node test/programReminder.smoke.mjs && node test/agentBackup.smoke.mjs && node test/persona.smoke.mjs && node test/soulUpdate.smoke.mjs"
33
+ "test": "node test/smoke.mjs && node test/liveNarration.smoke.mjs && node test/liveNarration.edge.smoke.mjs && node test/normalizer.parity.smoke.mjs && node test/providerConfig.smoke.mjs && node test/mcpOnlyOperator.smoke.mjs && node test/opencodeEventFilter.smoke.mjs && node test/copilotMcpIsolation.smoke.mjs && node test/grokSpawnError.smoke.mjs && node test/initTemplate.smoke.mjs && node test/settingsAliases.smoke.mjs && node test/setupWritesOfficeMcp.smoke.mjs && node test/claudePermissions.smoke.mjs && node test/presenceGuard.smoke.mjs && node test/cliExitHardFail.smoke.mjs && node test/redactSecrets.smoke.mjs && node test/claudeUsage.smoke.mjs && node test/graphStore.smoke.mjs && node test/programReminder.smoke.mjs && node test/agentBackup.smoke.mjs && node test/persona.smoke.mjs && node test/soulUpdate.smoke.mjs && node test/sessionsGlobal.smoke.mjs"
34
34
  },
35
35
  "dependencies": {
36
36
  "commander": "^12.1.0",