@kibitzsh/kibitz 0.0.3
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/LICENSE +21 -0
- package/README.md +200 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2662 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/commentary.d.ts +69 -0
- package/dist/core/commentary.d.ts.map +1 -0
- package/dist/core/commentary.js +1041 -0
- package/dist/core/commentary.js.map +1 -0
- package/dist/core/parsers/claude.d.ts +3 -0
- package/dist/core/parsers/claude.d.ts.map +1 -0
- package/dist/core/parsers/claude.js +124 -0
- package/dist/core/parsers/claude.js.map +1 -0
- package/dist/core/parsers/codex.d.ts +3 -0
- package/dist/core/parsers/codex.d.ts.map +1 -0
- package/dist/core/parsers/codex.js +133 -0
- package/dist/core/parsers/codex.js.map +1 -0
- package/dist/core/platform-support.d.ts +17 -0
- package/dist/core/platform-support.d.ts.map +1 -0
- package/dist/core/platform-support.js +146 -0
- package/dist/core/platform-support.js.map +1 -0
- package/dist/core/providers/anthropic.d.ts +15 -0
- package/dist/core/providers/anthropic.d.ts.map +1 -0
- package/dist/core/providers/anthropic.js +236 -0
- package/dist/core/providers/anthropic.js.map +1 -0
- package/dist/core/providers/openai.d.ts +16 -0
- package/dist/core/providers/openai.d.ts.map +1 -0
- package/dist/core/providers/openai.js +154 -0
- package/dist/core/providers/openai.js.map +1 -0
- package/dist/core/session-dispatch.d.ts +28 -0
- package/dist/core/session-dispatch.d.ts.map +1 -0
- package/dist/core/session-dispatch.js +453 -0
- package/dist/core/session-dispatch.js.map +1 -0
- package/dist/core/types.d.ts +78 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +22 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/watcher.d.ts +23 -0
- package/dist/core/watcher.d.ts.map +1 -0
- package/dist/core/watcher.js +866 -0
- package/dist/core/watcher.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/core/session-dispatch.ts
|
|
31
|
+
var session_dispatch_exports = {};
|
|
32
|
+
__export(session_dispatch_exports, {
|
|
33
|
+
SessionDispatchService: () => SessionDispatchService,
|
|
34
|
+
buildExistingDispatchCommand: () => buildExistingDispatchCommand,
|
|
35
|
+
buildInteractiveDispatchCommand: () => buildInteractiveDispatchCommand,
|
|
36
|
+
resolveDispatchCommand: () => resolveDispatchCommand
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(session_dispatch_exports);
|
|
39
|
+
var import_events = require("events");
|
|
40
|
+
var import_child_process2 = require("child_process");
|
|
41
|
+
var fs2 = __toESM(require("fs"));
|
|
42
|
+
var path2 = __toESM(require("path"));
|
|
43
|
+
|
|
44
|
+
// src/core/platform-support.ts
|
|
45
|
+
var import_child_process = require("child_process");
|
|
46
|
+
var fs = __toESM(require("fs"));
|
|
47
|
+
var path = __toESM(require("path"));
|
|
48
|
+
function getProviderCliCommand(provider, platform = process.platform) {
|
|
49
|
+
return platform === "win32" ? `${provider}.cmd` : provider;
|
|
50
|
+
}
|
|
51
|
+
function resolveCmdNodeScript(cmdPath) {
|
|
52
|
+
if (!String(cmdPath || "").toLowerCase().endsWith(".cmd")) return null;
|
|
53
|
+
try {
|
|
54
|
+
const content = fs.readFileSync(cmdPath, "utf8");
|
|
55
|
+
const match = content.match(/%dp0%\\(.+?\.js)/i);
|
|
56
|
+
if (!match) return null;
|
|
57
|
+
const scriptPath = path.join(path.dirname(cmdPath), match[1]);
|
|
58
|
+
return fs.existsSync(scriptPath) ? scriptPath : null;
|
|
59
|
+
} catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function findCommandPath(command, platform = process.platform) {
|
|
64
|
+
try {
|
|
65
|
+
if (platform === "win32") {
|
|
66
|
+
const out2 = (0, import_child_process.execSync)(`where ${command}`, {
|
|
67
|
+
encoding: "utf8",
|
|
68
|
+
timeout: 5e3,
|
|
69
|
+
stdio: ["ignore", "pipe", "ignore"]
|
|
70
|
+
}).trim();
|
|
71
|
+
const first = out2.split(/\r?\n/).map((line) => line.trim()).find(Boolean);
|
|
72
|
+
return first || void 0;
|
|
73
|
+
}
|
|
74
|
+
const out = (0, import_child_process.execFileSync)("which", [command], {
|
|
75
|
+
encoding: "utf8",
|
|
76
|
+
timeout: 5e3,
|
|
77
|
+
stdio: ["ignore", "pipe", "ignore"]
|
|
78
|
+
}).trim();
|
|
79
|
+
return out || void 0;
|
|
80
|
+
} catch {
|
|
81
|
+
return void 0;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// src/core/session-dispatch.ts
|
|
86
|
+
var SessionDispatchService = class extends import_events.EventEmitter {
|
|
87
|
+
constructor(options) {
|
|
88
|
+
super();
|
|
89
|
+
this.options = options;
|
|
90
|
+
}
|
|
91
|
+
async dispatch(request) {
|
|
92
|
+
const prompt = String(request.prompt || "").trim();
|
|
93
|
+
if (!prompt) {
|
|
94
|
+
this.emitStatus("failed", request.target, "Prompt cannot be empty");
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.emitStatus("queued", request.target, `Queued for ${describeTarget(request.target)}`);
|
|
98
|
+
if (request.target.kind === "existing") {
|
|
99
|
+
await this.dispatchExistingSession(request.target, prompt);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const provider = request.target.kind === "new-codex" ? "codex" : "claude";
|
|
103
|
+
this.emitStatus("started", request.target, `Starting new ${provider} session`);
|
|
104
|
+
try {
|
|
105
|
+
if (request.origin === "vscode") {
|
|
106
|
+
if (!this.options.launchInteractiveSession) {
|
|
107
|
+
throw new Error("Interactive launcher is not available in VS Code mode");
|
|
108
|
+
}
|
|
109
|
+
await this.options.launchInteractiveSession(provider, prompt);
|
|
110
|
+
} else {
|
|
111
|
+
await runInteractiveInTerminal(provider, prompt);
|
|
112
|
+
}
|
|
113
|
+
this.emitStatus("sent", request.target, `Started new ${provider} session`);
|
|
114
|
+
} catch (error) {
|
|
115
|
+
this.emitStatus("failed", request.target, normalizeError(error));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async dispatchExistingSession(target, prompt) {
|
|
119
|
+
const targetSessionId = String(target.sessionId || "").trim().toLowerCase();
|
|
120
|
+
const targetAgent = target.agent;
|
|
121
|
+
if (!targetSessionId || targetAgent !== "claude" && targetAgent !== "codex") {
|
|
122
|
+
this.emitStatus("failed", target, "Missing target session or provider");
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const active = this.options.getActiveSessions();
|
|
126
|
+
const activeMatch = active.find((session) => {
|
|
127
|
+
return session.agent === targetAgent && session.id.toLowerCase() === targetSessionId;
|
|
128
|
+
});
|
|
129
|
+
if (!activeMatch) {
|
|
130
|
+
this.emitStatus("failed", target, `Selected ${describeProvider(targetAgent)} session is not active`);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const targetLabel = describeTarget(target);
|
|
134
|
+
this.emitStatus("started", target, `Dispatching to ${targetLabel}`);
|
|
135
|
+
try {
|
|
136
|
+
const command = buildExistingDispatchCommand(target, prompt);
|
|
137
|
+
const dispatchCwd = deriveDispatchCwdForSession(activeMatch);
|
|
138
|
+
const beforeDispatch = captureSessionFileSnapshot(activeMatch.filePath);
|
|
139
|
+
const handle = await startBackgroundCommand(command, { cwd: dispatchCwd });
|
|
140
|
+
const dispatchOutcome = await runWithTimeout(
|
|
141
|
+
waitForDispatchAcknowledgement(
|
|
142
|
+
activeMatch.filePath,
|
|
143
|
+
prompt,
|
|
144
|
+
beforeDispatch,
|
|
145
|
+
handle.completion
|
|
146
|
+
),
|
|
147
|
+
2e4,
|
|
148
|
+
"Dispatch timed out waiting for target session update"
|
|
149
|
+
);
|
|
150
|
+
if (dispatchOutcome === "process-complete") {
|
|
151
|
+
verifyExistingDispatchDelivery(activeMatch.filePath, prompt, beforeDispatch);
|
|
152
|
+
}
|
|
153
|
+
void handle.completion.catch(() => void 0);
|
|
154
|
+
this.emitStatus("sent", target, `Prompt sent to ${targetLabel}`);
|
|
155
|
+
} catch (error) {
|
|
156
|
+
this.emitStatus("failed", target, normalizeError(error));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
emitStatus(state, target, message) {
|
|
160
|
+
const status = {
|
|
161
|
+
state,
|
|
162
|
+
message,
|
|
163
|
+
target,
|
|
164
|
+
timestamp: Date.now()
|
|
165
|
+
};
|
|
166
|
+
this.emit("status", status);
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
function buildExistingDispatchCommand(target, prompt, platform = process.platform) {
|
|
170
|
+
if (target.kind !== "existing") {
|
|
171
|
+
throw new Error(`Expected existing target, got "${target.kind}"`);
|
|
172
|
+
}
|
|
173
|
+
const sessionId = String(target.sessionId || "").trim();
|
|
174
|
+
const agent = target.agent;
|
|
175
|
+
if (!sessionId || agent !== "claude" && agent !== "codex") {
|
|
176
|
+
throw new Error("Missing existing-session target details");
|
|
177
|
+
}
|
|
178
|
+
if (agent === "codex") {
|
|
179
|
+
return {
|
|
180
|
+
provider: "codex",
|
|
181
|
+
command: getProviderCliCommand("codex", platform),
|
|
182
|
+
args: ["exec", "resume", "--json", "--skip-git-repo-check", sessionId, prompt]
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
provider: "claude",
|
|
187
|
+
command: getProviderCliCommand("claude", platform),
|
|
188
|
+
args: ["-p", prompt, "--verbose", "--output-format", "stream-json", "--resume", sessionId]
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function buildInteractiveDispatchCommand(provider, prompt, platform = process.platform) {
|
|
192
|
+
return {
|
|
193
|
+
provider,
|
|
194
|
+
command: getProviderCliCommand(provider, platform),
|
|
195
|
+
args: [prompt]
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function resolveDispatchCommand(command, platform = process.platform) {
|
|
199
|
+
const pathHint = findCommandPath(command.command, platform);
|
|
200
|
+
if (!pathHint) {
|
|
201
|
+
throw new Error(`CLI not found: ${command.command}`);
|
|
202
|
+
}
|
|
203
|
+
if (platform === "win32") {
|
|
204
|
+
const nodeScript = resolveCmdNodeScript(pathHint);
|
|
205
|
+
if (nodeScript) {
|
|
206
|
+
return {
|
|
207
|
+
command: process.execPath,
|
|
208
|
+
args: [nodeScript, ...command.args],
|
|
209
|
+
shell: false
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
if (pathHint.toLowerCase().endsWith(".cmd")) {
|
|
213
|
+
return {
|
|
214
|
+
command: pathHint,
|
|
215
|
+
args: command.args,
|
|
216
|
+
shell: true
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
command: pathHint,
|
|
222
|
+
args: command.args,
|
|
223
|
+
shell: false
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
async function waitForDispatchAcknowledgement(filePath, prompt, before, completion) {
|
|
227
|
+
let completionState = 0;
|
|
228
|
+
let completionError = null;
|
|
229
|
+
completion.then(() => {
|
|
230
|
+
completionState = 1;
|
|
231
|
+
}).catch((error) => {
|
|
232
|
+
completionState = 2;
|
|
233
|
+
completionError = error instanceof Error ? error : new Error(String(error || "Dispatch failed"));
|
|
234
|
+
});
|
|
235
|
+
while (true) {
|
|
236
|
+
if (completionState === 2) {
|
|
237
|
+
throw completionError || new Error("Dispatch failed");
|
|
238
|
+
}
|
|
239
|
+
if (hasSessionUpdateWithPrompt(filePath, prompt, before)) {
|
|
240
|
+
return "prompt-observed";
|
|
241
|
+
}
|
|
242
|
+
if (completionState === 1) {
|
|
243
|
+
return "process-complete";
|
|
244
|
+
}
|
|
245
|
+
await sleepMs(120);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
async function startBackgroundCommand(command, options = {}) {
|
|
249
|
+
const resolved = resolveDispatchCommand(command);
|
|
250
|
+
return await new Promise((resolve, reject) => {
|
|
251
|
+
const child = (0, import_child_process2.spawn)(resolved.command, resolved.args, {
|
|
252
|
+
stdio: ["ignore", "ignore", "pipe"],
|
|
253
|
+
shell: resolved.shell,
|
|
254
|
+
windowsHide: true,
|
|
255
|
+
...options.cwd ? { cwd: options.cwd } : {}
|
|
256
|
+
});
|
|
257
|
+
let stderr = "";
|
|
258
|
+
let spawned = false;
|
|
259
|
+
let launchSettled = false;
|
|
260
|
+
const failLaunch = (error) => {
|
|
261
|
+
if (launchSettled) return;
|
|
262
|
+
launchSettled = true;
|
|
263
|
+
reject(error);
|
|
264
|
+
};
|
|
265
|
+
const completion = new Promise((resolveCompletion, rejectCompletion) => {
|
|
266
|
+
child.on("error", (error) => {
|
|
267
|
+
if (!spawned) {
|
|
268
|
+
failLaunch(error);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
rejectCompletion(error);
|
|
272
|
+
});
|
|
273
|
+
child.on("close", (code) => {
|
|
274
|
+
if (code === 0) {
|
|
275
|
+
resolveCompletion();
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
const normalized = String(stderr || "").trim();
|
|
279
|
+
if (looksLikeUnsupportedFlags(normalized)) {
|
|
280
|
+
rejectCompletion(new Error("Provider CLI does not support required resume flags. Update the CLI version."));
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
rejectCompletion(new Error(normalized || `Dispatch exited with code ${code}`));
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
child.stderr?.on("data", (data) => {
|
|
287
|
+
stderr += data.toString();
|
|
288
|
+
});
|
|
289
|
+
child.on("spawn", () => {
|
|
290
|
+
spawned = true;
|
|
291
|
+
if (launchSettled) return;
|
|
292
|
+
launchSettled = true;
|
|
293
|
+
resolve({ completion });
|
|
294
|
+
});
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
async function runInteractiveInTerminal(provider, prompt) {
|
|
298
|
+
const command = buildInteractiveDispatchCommand(provider, prompt);
|
|
299
|
+
const resolved = resolveDispatchCommand(command);
|
|
300
|
+
await new Promise((resolve, reject) => {
|
|
301
|
+
const child = (0, import_child_process2.spawn)(resolved.command, resolved.args, {
|
|
302
|
+
stdio: "inherit",
|
|
303
|
+
shell: resolved.shell,
|
|
304
|
+
windowsHide: false
|
|
305
|
+
});
|
|
306
|
+
child.on("error", (error) => reject(error));
|
|
307
|
+
child.on("close", (code) => {
|
|
308
|
+
if (code === 0) resolve();
|
|
309
|
+
else reject(new Error(`Interactive session exited with code ${code}`));
|
|
310
|
+
});
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
function describeTarget(target) {
|
|
314
|
+
if (target.kind === "new-codex") return "new codex session";
|
|
315
|
+
if (target.kind === "new-claude") return "new claude session";
|
|
316
|
+
const provider = describeProvider(target.agent);
|
|
317
|
+
const project = cleanTargetLabel(target.projectName, 24);
|
|
318
|
+
const sessionTitle = cleanTargetLabel(target.sessionTitle, 44);
|
|
319
|
+
if (project && sessionTitle) return `${provider} session (${project} \u203A ${sessionTitle})`;
|
|
320
|
+
if (sessionTitle) return `${provider} session (${sessionTitle})`;
|
|
321
|
+
if (project) return `${provider} session (${project})`;
|
|
322
|
+
return `${provider} session`;
|
|
323
|
+
}
|
|
324
|
+
function describeProvider(agent) {
|
|
325
|
+
return String(agent || "").toLowerCase() === "claude" ? "Claude" : "Codex";
|
|
326
|
+
}
|
|
327
|
+
function cleanTargetLabel(value, max) {
|
|
328
|
+
const text = String(value || "").replace(/\s+/g, " ").trim();
|
|
329
|
+
if (!text) return "";
|
|
330
|
+
if (/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(text)) return "";
|
|
331
|
+
if (text.length <= max) return text;
|
|
332
|
+
if (max <= 3) return text.slice(0, max);
|
|
333
|
+
return `${text.slice(0, max - 3).trimEnd()}...`;
|
|
334
|
+
}
|
|
335
|
+
function looksLikeUnsupportedFlags(stderr) {
|
|
336
|
+
const normalized = String(stderr || "").toLowerCase();
|
|
337
|
+
if (!normalized) return false;
|
|
338
|
+
return normalized.includes("unknown option") || normalized.includes("unknown flag") || normalized.includes("unrecognized option") || normalized.includes("did you mean");
|
|
339
|
+
}
|
|
340
|
+
function normalizeError(error) {
|
|
341
|
+
if (error instanceof Error && error.message) return error.message;
|
|
342
|
+
return String(error || "Dispatch failed");
|
|
343
|
+
}
|
|
344
|
+
function captureSessionFileSnapshot(filePath) {
|
|
345
|
+
try {
|
|
346
|
+
const stat = fs2.statSync(filePath);
|
|
347
|
+
return {
|
|
348
|
+
exists: true,
|
|
349
|
+
size: stat.size,
|
|
350
|
+
mtimeMs: stat.mtimeMs
|
|
351
|
+
};
|
|
352
|
+
} catch {
|
|
353
|
+
return {
|
|
354
|
+
exists: false,
|
|
355
|
+
size: 0,
|
|
356
|
+
mtimeMs: 0
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
function verifyExistingDispatchDelivery(filePath, prompt, before) {
|
|
361
|
+
if (!hasSessionFileChanged(filePath, before)) {
|
|
362
|
+
throw new Error("Target session did not update after dispatch");
|
|
363
|
+
}
|
|
364
|
+
const promptSignature = firstPromptSignature(prompt);
|
|
365
|
+
if (promptSignature.length < 4) return;
|
|
366
|
+
const tail = readSessionTailSinceOffset(filePath, before.size);
|
|
367
|
+
if (!tail) {
|
|
368
|
+
throw new Error("Target session updated but prompt text was not found");
|
|
369
|
+
}
|
|
370
|
+
if (!tail.toLowerCase().includes(promptSignature.toLowerCase())) {
|
|
371
|
+
throw new Error("Prompt text was not found in target session update");
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
function hasSessionUpdateWithPrompt(filePath, prompt, before) {
|
|
375
|
+
if (!hasSessionFileChanged(filePath, before)) return false;
|
|
376
|
+
const promptSignature = firstPromptSignature(prompt);
|
|
377
|
+
if (promptSignature.length < 4) return true;
|
|
378
|
+
const tail = readSessionTailSinceOffset(filePath, before.size);
|
|
379
|
+
if (!tail) return false;
|
|
380
|
+
return tail.toLowerCase().includes(promptSignature.toLowerCase());
|
|
381
|
+
}
|
|
382
|
+
function hasSessionFileChanged(filePath, before) {
|
|
383
|
+
const after = captureSessionFileSnapshot(filePath);
|
|
384
|
+
if (!after.exists) {
|
|
385
|
+
throw new Error("Target session file is not accessible after dispatch");
|
|
386
|
+
}
|
|
387
|
+
return after.size > before.size || after.mtimeMs > before.mtimeMs;
|
|
388
|
+
}
|
|
389
|
+
function firstPromptSignature(prompt) {
|
|
390
|
+
const lines = String(prompt || "").split(/\r?\n/g).map((line) => line.trim()).filter(Boolean);
|
|
391
|
+
const first = lines[0] || String(prompt || "").trim();
|
|
392
|
+
return first.slice(0, 160);
|
|
393
|
+
}
|
|
394
|
+
function readSessionTailSinceOffset(filePath, previousSize) {
|
|
395
|
+
try {
|
|
396
|
+
const stat = fs2.statSync(filePath);
|
|
397
|
+
const maxBytes = 1024 * 512;
|
|
398
|
+
const start = Math.max(0, previousSize - 2048);
|
|
399
|
+
const desiredStart = stat.size - start > maxBytes ? Math.max(0, stat.size - maxBytes) : start;
|
|
400
|
+
const length = Math.max(0, stat.size - desiredStart);
|
|
401
|
+
if (length === 0) return "";
|
|
402
|
+
const fd = fs2.openSync(filePath, "r");
|
|
403
|
+
try {
|
|
404
|
+
const buf = Buffer.alloc(length);
|
|
405
|
+
fs2.readSync(fd, buf, 0, length, desiredStart);
|
|
406
|
+
return buf.toString("utf8");
|
|
407
|
+
} finally {
|
|
408
|
+
fs2.closeSync(fd);
|
|
409
|
+
}
|
|
410
|
+
} catch {
|
|
411
|
+
return "";
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
async function runWithTimeout(promise, timeoutMs, message) {
|
|
415
|
+
return await new Promise((resolve, reject) => {
|
|
416
|
+
const timer = setTimeout(() => reject(new Error(message)), timeoutMs);
|
|
417
|
+
promise.then((value) => {
|
|
418
|
+
clearTimeout(timer);
|
|
419
|
+
resolve(value);
|
|
420
|
+
}).catch((error) => {
|
|
421
|
+
clearTimeout(timer);
|
|
422
|
+
reject(error);
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
async function sleepMs(ms) {
|
|
427
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
428
|
+
}
|
|
429
|
+
function deriveDispatchCwdForSession(session) {
|
|
430
|
+
if (session.agent !== "claude") return void 0;
|
|
431
|
+
return decodeClaudeProjectPathFromSessionFile(session.filePath);
|
|
432
|
+
}
|
|
433
|
+
function decodeClaudeProjectPathFromSessionFile(filePath) {
|
|
434
|
+
if (!filePath) return void 0;
|
|
435
|
+
const projectDir = path2.basename(path2.dirname(filePath));
|
|
436
|
+
if (!projectDir) return void 0;
|
|
437
|
+
const parts = projectDir.split("-").filter(Boolean);
|
|
438
|
+
if (parts.length === 0) return void 0;
|
|
439
|
+
if (parts.length >= 2 && /^[A-Za-z]$/.test(parts[0])) {
|
|
440
|
+
const windowsPath = `${parts[0]}:\\${parts.slice(1).join("\\")}`;
|
|
441
|
+
if (fs2.existsSync(windowsPath)) return windowsPath;
|
|
442
|
+
}
|
|
443
|
+
const unixPath = `/${parts.join("/")}`;
|
|
444
|
+
if (fs2.existsSync(unixPath)) return unixPath;
|
|
445
|
+
return void 0;
|
|
446
|
+
}
|
|
447
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
448
|
+
0 && (module.exports = {
|
|
449
|
+
SessionDispatchService,
|
|
450
|
+
buildExistingDispatchCommand,
|
|
451
|
+
buildInteractiveDispatchCommand,
|
|
452
|
+
resolveDispatchCommand
|
|
453
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-dispatch.js","sourceRoot":"","sources":["../../src/core/session-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export interface KibitzEvent {
|
|
2
|
+
sessionId: string;
|
|
3
|
+
projectName: string;
|
|
4
|
+
sessionTitle?: string;
|
|
5
|
+
agent: 'claude' | 'codex';
|
|
6
|
+
source: 'vscode' | 'cli';
|
|
7
|
+
timestamp: number;
|
|
8
|
+
type: 'tool_call' | 'tool_result' | 'message' | 'subagent' | 'meta';
|
|
9
|
+
summary: string;
|
|
10
|
+
details: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface SessionInfo {
|
|
13
|
+
id: string;
|
|
14
|
+
projectName: string;
|
|
15
|
+
sessionTitle?: string;
|
|
16
|
+
agent: 'claude' | 'codex';
|
|
17
|
+
source: 'vscode' | 'cli';
|
|
18
|
+
filePath: string;
|
|
19
|
+
lastActivity: number;
|
|
20
|
+
}
|
|
21
|
+
export type DispatchTargetKind = 'existing' | 'new-codex' | 'new-claude';
|
|
22
|
+
export interface DispatchTarget {
|
|
23
|
+
kind: DispatchTargetKind;
|
|
24
|
+
agent?: 'claude' | 'codex';
|
|
25
|
+
sessionId?: string;
|
|
26
|
+
projectName?: string;
|
|
27
|
+
sessionTitle?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface DispatchRequest {
|
|
30
|
+
target: DispatchTarget;
|
|
31
|
+
prompt: string;
|
|
32
|
+
origin: 'vscode' | 'cli';
|
|
33
|
+
}
|
|
34
|
+
export interface DispatchStatus {
|
|
35
|
+
state: 'queued' | 'started' | 'sent' | 'failed';
|
|
36
|
+
message: string;
|
|
37
|
+
target: DispatchTarget;
|
|
38
|
+
timestamp: number;
|
|
39
|
+
}
|
|
40
|
+
export type CommentaryStyleId = 'bullets' | 'one-liner' | 'headline-context' | 'numbered-progress' | 'short-question' | 'table' | 'emoji-bullets' | 'scoreboard';
|
|
41
|
+
export interface CommentaryStyleOption {
|
|
42
|
+
id: CommentaryStyleId;
|
|
43
|
+
label: string;
|
|
44
|
+
}
|
|
45
|
+
export declare const COMMENTARY_STYLE_OPTIONS: CommentaryStyleOption[];
|
|
46
|
+
export type ModelId = 'claude-opus-4-6' | 'claude-sonnet-4-6' | 'claude-haiku-4-5-20251001' | 'gpt-4o' | 'gpt-4o-mini';
|
|
47
|
+
export type ProviderId = 'anthropic' | 'openai';
|
|
48
|
+
export interface ModelConfig {
|
|
49
|
+
id: ModelId;
|
|
50
|
+
label: string;
|
|
51
|
+
provider: ProviderId;
|
|
52
|
+
}
|
|
53
|
+
export declare const MODELS: ModelConfig[];
|
|
54
|
+
export declare const DEFAULT_MODEL: ModelId;
|
|
55
|
+
export interface CommentaryEntry {
|
|
56
|
+
timestamp: number;
|
|
57
|
+
sessionId: string;
|
|
58
|
+
projectName: string;
|
|
59
|
+
sessionTitle?: string;
|
|
60
|
+
agent: 'claude' | 'codex';
|
|
61
|
+
source: 'vscode' | 'cli';
|
|
62
|
+
eventSummary: string;
|
|
63
|
+
commentary: string;
|
|
64
|
+
}
|
|
65
|
+
export interface Provider {
|
|
66
|
+
generate(systemPrompt: string, userPrompt: string, apiKey: string, model: ModelId, onChunk: (text: string) => void): Promise<string>;
|
|
67
|
+
}
|
|
68
|
+
export interface KeyResolver {
|
|
69
|
+
getKey(provider: ProviderId): Promise<string | undefined>;
|
|
70
|
+
}
|
|
71
|
+
export interface ProviderStatus {
|
|
72
|
+
provider: ProviderId;
|
|
73
|
+
label: string;
|
|
74
|
+
available: boolean;
|
|
75
|
+
version?: string;
|
|
76
|
+
error?: string;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_MODEL = exports.MODELS = exports.COMMENTARY_STYLE_OPTIONS = void 0;
|
|
4
|
+
exports.COMMENTARY_STYLE_OPTIONS = [
|
|
5
|
+
{ id: 'bullets', label: 'Bullet list' },
|
|
6
|
+
{ id: 'one-liner', label: 'One-liner' },
|
|
7
|
+
{ id: 'headline-context', label: 'Headline + context' },
|
|
8
|
+
{ id: 'numbered-progress', label: 'Numbered progress' },
|
|
9
|
+
{ id: 'short-question', label: 'Short + question' },
|
|
10
|
+
{ id: 'table', label: 'Table' },
|
|
11
|
+
{ id: 'emoji-bullets', label: 'Emoji bullets' },
|
|
12
|
+
{ id: 'scoreboard', label: 'Scoreboard' },
|
|
13
|
+
];
|
|
14
|
+
exports.MODELS = [
|
|
15
|
+
{ id: 'claude-opus-4-6', label: 'Claude Opus', provider: 'anthropic' },
|
|
16
|
+
{ id: 'claude-sonnet-4-6', label: 'Claude Sonnet', provider: 'anthropic' },
|
|
17
|
+
{ id: 'claude-haiku-4-5-20251001', label: 'Claude Haiku', provider: 'anthropic' },
|
|
18
|
+
{ id: 'gpt-4o', label: 'GPT-4o', provider: 'openai' },
|
|
19
|
+
{ id: 'gpt-4o-mini', label: 'GPT-4o mini', provider: 'openai' },
|
|
20
|
+
];
|
|
21
|
+
exports.DEFAULT_MODEL = 'claude-opus-4-6';
|
|
22
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":";;;AA4Da,QAAA,wBAAwB,GAA4B;IAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IACvC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IACvC,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACvD,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACvD,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACnD,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/B,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;IAC/C,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;CAC1C,CAAA;AAiBY,QAAA,MAAM,GAAkB;IACnC,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE;IACtE,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE;IAC1E,EAAE,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;IACjF,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACrD,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;CAChE,CAAA;AAEY,QAAA,aAAa,GAAY,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { SessionInfo } from './types';
|
|
3
|
+
export declare class SessionWatcher extends EventEmitter {
|
|
4
|
+
private watched;
|
|
5
|
+
private scanInterval;
|
|
6
|
+
private claudeIdeLocks;
|
|
7
|
+
private sessionProjectNames;
|
|
8
|
+
private static readonly ACTIVE_SESSION_WINDOW_MS;
|
|
9
|
+
constructor();
|
|
10
|
+
start(): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
getActiveSessions(): SessionInfo[];
|
|
13
|
+
private scan;
|
|
14
|
+
private scanClaude;
|
|
15
|
+
private scanCodex;
|
|
16
|
+
private watchFile;
|
|
17
|
+
private readNewLines;
|
|
18
|
+
private reconcileCodexSessionTitle;
|
|
19
|
+
private loadIdeLocks;
|
|
20
|
+
private detectSource;
|
|
21
|
+
private pruneStale;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/core/watcher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAe,WAAW,EAAE,MAAM,SAAS,CAAA;AAelD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,cAAc,CAAiE;IACvF,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAgB;;IAMhE,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAWZ,iBAAiB,IAAI,WAAW,EAAE;IA4BlC,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,SAAS;IA0CjB,OAAO,CAAC,YAAY;IA8EpB,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,UAAU;CAenB"}
|