repoburg 1.3.264 → 1.3.266
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/agent-pane/backend/dist/index.js +66 -8
- package/agent-pane/backend/dist/server.js +66 -8
- package/agent-pane/frontend/dist/assets/index-BWI1sdtn.js +532 -0
- package/agent-pane/frontend/dist/assets/index-CsD8SrgL.css +1 -0
- package/agent-pane/frontend/dist/index.html +2 -2
- package/daemon/dist/index.js +0 -0
- package/package.json +4 -2
- package/tabtape/extension/dist/build-info.json +7 -0
- package/tabtape/extension/dist/manifest.json +42 -8
- package/tabtape/ui/dist/build-info.json +7 -0
- package/agent-pane/frontend/dist/assets/index-Da2a9Nw3.css +0 -1
- package/agent-pane/frontend/dist/assets/index-yoIgKvsu.js +0 -532
|
@@ -41337,6 +41337,15 @@ function getProvider(runtimeType) {
|
|
|
41337
41337
|
function hasProvider(runtimeType) {
|
|
41338
41338
|
return providers.has(runtimeType);
|
|
41339
41339
|
}
|
|
41340
|
+
function listAllBackgroundTasks() {
|
|
41341
|
+
const bySession = {};
|
|
41342
|
+
for (const provider of providers.values()) {
|
|
41343
|
+
for (const [sessionId, tasks] of Object.entries(provider.listBackgroundTasks?.() ?? {})) {
|
|
41344
|
+
if (tasks.length > 0) bySession[sessionId] = [...bySession[sessionId] ?? [], ...tasks];
|
|
41345
|
+
}
|
|
41346
|
+
}
|
|
41347
|
+
return bySession;
|
|
41348
|
+
}
|
|
41340
41349
|
async function shutdownAllProviders() {
|
|
41341
41350
|
for (const provider of providers.values()) {
|
|
41342
41351
|
await provider.shutdown();
|
|
@@ -45628,6 +45637,40 @@ var cachedModels = null;
|
|
|
45628
45637
|
var cachedCommands = null;
|
|
45629
45638
|
var thinkingAccumulator = /* @__PURE__ */ new Map();
|
|
45630
45639
|
var streamingMessageIds = /* @__PURE__ */ new Map();
|
|
45640
|
+
var publishedBackgroundTasks = /* @__PURE__ */ new Map();
|
|
45641
|
+
var THREAD_KEY_SEPARATOR = ":thread:";
|
|
45642
|
+
function sessionIdOfKey(key) {
|
|
45643
|
+
const i = key.indexOf(THREAD_KEY_SEPARATOR);
|
|
45644
|
+
return i === -1 ? key : key.slice(0, i);
|
|
45645
|
+
}
|
|
45646
|
+
function sessionBackgroundTasks(sessionId) {
|
|
45647
|
+
const tasks = [];
|
|
45648
|
+
for (const [key, entry] of sessionMap2) {
|
|
45649
|
+
if (sessionIdOfKey(key) === sessionId) tasks.push(...entry.backgroundTasks ?? []);
|
|
45650
|
+
}
|
|
45651
|
+
return tasks;
|
|
45652
|
+
}
|
|
45653
|
+
function publishBackgroundTasks(sessionId) {
|
|
45654
|
+
const tasks = sessionBackgroundTasks(sessionId);
|
|
45655
|
+
const json = JSON.stringify(tasks);
|
|
45656
|
+
if ((publishedBackgroundTasks.get(sessionId) ?? "[]") === json) return;
|
|
45657
|
+
if (tasks.length > 0) publishedBackgroundTasks.set(sessionId, json);
|
|
45658
|
+
else publishedBackgroundTasks.delete(sessionId);
|
|
45659
|
+
broadcast("background_tasks", { sessionId, tasks });
|
|
45660
|
+
}
|
|
45661
|
+
function dropBackgroundTasks(sessionId, entry) {
|
|
45662
|
+
entry.backgroundTasks = [];
|
|
45663
|
+
publishBackgroundTasks(sessionId);
|
|
45664
|
+
}
|
|
45665
|
+
function listBackgroundTasks() {
|
|
45666
|
+
const bySession = {};
|
|
45667
|
+
for (const [key, entry] of sessionMap2) {
|
|
45668
|
+
if (!entry.backgroundTasks?.length) continue;
|
|
45669
|
+
const sessionId = sessionIdOfKey(key);
|
|
45670
|
+
bySession[sessionId] = [...bySession[sessionId] ?? [], ...entry.backgroundTasks];
|
|
45671
|
+
}
|
|
45672
|
+
return bySession;
|
|
45673
|
+
}
|
|
45631
45674
|
function setSessionStatus2(db2, sessionId, isRunning, status, now, hasUnreviewed = false) {
|
|
45632
45675
|
if (hasUnreviewed) {
|
|
45633
45676
|
db2.prepare("UPDATE sessions SET is_running = ?, status = ?, has_unreviewed = 1, updated_at = ? WHERE id = ?").run(
|
|
@@ -45673,6 +45716,10 @@ async function ensureSessionStarted(session, mapKey, resumeSessionId) {
|
|
|
45673
45716
|
entry.messageLoop = (async () => {
|
|
45674
45717
|
try {
|
|
45675
45718
|
for await (const message of q) {
|
|
45719
|
+
if (isBackgroundTasksChanged(message)) {
|
|
45720
|
+
handleBackgroundTasksChanged(message, session.id, entry);
|
|
45721
|
+
continue;
|
|
45722
|
+
}
|
|
45676
45723
|
const currentTurnId = entry.turnId;
|
|
45677
45724
|
if (!currentTurnId) continue;
|
|
45678
45725
|
await handleMessage(message, session.id, currentTurnId, entry, db2);
|
|
@@ -45727,7 +45774,8 @@ async function ensureSessionStarted(session, mapKey, resumeSessionId) {
|
|
|
45727
45774
|
if (entry.turnId) {
|
|
45728
45775
|
streamingMessageIds.delete(entry.turnId);
|
|
45729
45776
|
}
|
|
45730
|
-
sessionMap2.delete(key);
|
|
45777
|
+
if (sessionMap2.get(key) === entry) sessionMap2.delete(key);
|
|
45778
|
+
dropBackgroundTasks(session.id, entry);
|
|
45731
45779
|
}
|
|
45732
45780
|
})();
|
|
45733
45781
|
return entry;
|
|
@@ -45867,11 +45915,6 @@ async function handleMessage(message, sessionId, turnId, entry, db2) {
|
|
|
45867
45915
|
entry,
|
|
45868
45916
|
db2
|
|
45869
45917
|
);
|
|
45870
|
-
} else if (sub === "background_tasks_changed") {
|
|
45871
|
-
handleBackgroundTasksChanged(
|
|
45872
|
-
message,
|
|
45873
|
-
sessionId
|
|
45874
|
-
);
|
|
45875
45918
|
}
|
|
45876
45919
|
}
|
|
45877
45920
|
break;
|
|
@@ -46149,9 +46192,13 @@ function handleTaskNotification(message, sessionId, turnId, entry, db2) {
|
|
|
46149
46192
|
"item:completed"
|
|
46150
46193
|
);
|
|
46151
46194
|
}
|
|
46152
|
-
function
|
|
46195
|
+
function isBackgroundTasksChanged(message) {
|
|
46196
|
+
return message.type === "system" && "subtype" in message && message.subtype === "background_tasks_changed";
|
|
46197
|
+
}
|
|
46198
|
+
function handleBackgroundTasksChanged(message, sessionId, entry) {
|
|
46153
46199
|
const m = message;
|
|
46154
|
-
|
|
46200
|
+
entry.backgroundTasks = (m.tasks ?? []).filter((t) => !t.ambient).map((t) => ({ task_id: t.task_id, task_type: t.task_type, description: t.description }));
|
|
46201
|
+
publishBackgroundTasks(sessionId);
|
|
46155
46202
|
}
|
|
46156
46203
|
async function handleResultMessage(message, sessionId, turnId, entry, db2) {
|
|
46157
46204
|
const parentToolUseId = message.parent_tool_use_id ?? null;
|
|
@@ -46258,6 +46305,7 @@ async function interruptTurn2(sessionId, threadId) {
|
|
|
46258
46305
|
entry.query.close();
|
|
46259
46306
|
streamingMessageIds.delete(turnId);
|
|
46260
46307
|
sessionMap2.delete(entryKey);
|
|
46308
|
+
dropBackgroundTasks(sessionId, entry);
|
|
46261
46309
|
}
|
|
46262
46310
|
}
|
|
46263
46311
|
try {
|
|
@@ -46285,6 +46333,7 @@ function clearThread2(sessionId) {
|
|
|
46285
46333
|
streamingMessageIds.delete(entry.turnId);
|
|
46286
46334
|
}
|
|
46287
46335
|
sessionMap2.delete(sessionId);
|
|
46336
|
+
entry.backgroundTasks = [];
|
|
46288
46337
|
}
|
|
46289
46338
|
for (const [key, threadEntry] of sessionMap2) {
|
|
46290
46339
|
if (key.startsWith(`${sessionId}:thread:`)) {
|
|
@@ -46294,8 +46343,10 @@ function clearThread2(sessionId) {
|
|
|
46294
46343
|
streamingMessageIds.delete(threadEntry.turnId);
|
|
46295
46344
|
}
|
|
46296
46345
|
sessionMap2.delete(key);
|
|
46346
|
+
threadEntry.backgroundTasks = [];
|
|
46297
46347
|
}
|
|
46298
46348
|
}
|
|
46349
|
+
publishBackgroundTasks(sessionId);
|
|
46299
46350
|
}
|
|
46300
46351
|
function clearThreadBranch(sessionId, threadId) {
|
|
46301
46352
|
const key = `${sessionId}:thread:${threadId}`;
|
|
@@ -46307,15 +46358,18 @@ function clearThreadBranch(sessionId, threadId) {
|
|
|
46307
46358
|
streamingMessageIds.delete(entry.turnId);
|
|
46308
46359
|
}
|
|
46309
46360
|
sessionMap2.delete(key);
|
|
46361
|
+
dropBackgroundTasks(sessionId, entry);
|
|
46310
46362
|
}
|
|
46311
46363
|
}
|
|
46312
46364
|
function clearAllThreads2() {
|
|
46313
46365
|
for (const [, entry] of sessionMap2) {
|
|
46314
46366
|
entry.promptQueue.close();
|
|
46315
46367
|
entry.query.close();
|
|
46368
|
+
entry.backgroundTasks = [];
|
|
46316
46369
|
}
|
|
46317
46370
|
sessionMap2.clear();
|
|
46318
46371
|
titleGenerating2.clear();
|
|
46372
|
+
for (const sessionId of [...publishedBackgroundTasks.keys()]) publishBackgroundTasks(sessionId);
|
|
46319
46373
|
}
|
|
46320
46374
|
async function setModel(sessionId, model) {
|
|
46321
46375
|
const entry = sessionMap2.get(sessionId);
|
|
@@ -46514,6 +46568,7 @@ var claudeProvider = {
|
|
|
46514
46568
|
summarizeThread: summarizeClaudeThread,
|
|
46515
46569
|
setModel,
|
|
46516
46570
|
stopTask,
|
|
46571
|
+
listBackgroundTasks,
|
|
46517
46572
|
shutdown: shutdown2
|
|
46518
46573
|
};
|
|
46519
46574
|
|
|
@@ -48147,6 +48202,9 @@ async function createAgentPaneApp(dbPath) {
|
|
|
48147
48202
|
await registerVscodeWebRoutes(fastify);
|
|
48148
48203
|
await registerAppRoutes(fastify);
|
|
48149
48204
|
const wss2 = initWs();
|
|
48205
|
+
wss2.on("connection", (ws) => {
|
|
48206
|
+
ws.send(JSON.stringify({ event: "background_tasks:snapshot", data: { sessions: listAllBackgroundTasks() } }));
|
|
48207
|
+
});
|
|
48150
48208
|
return { fastify, wss: wss2 };
|
|
48151
48209
|
}
|
|
48152
48210
|
|
|
@@ -41324,6 +41324,15 @@ function getProvider(runtimeType) {
|
|
|
41324
41324
|
function hasProvider(runtimeType) {
|
|
41325
41325
|
return providers.has(runtimeType);
|
|
41326
41326
|
}
|
|
41327
|
+
function listAllBackgroundTasks() {
|
|
41328
|
+
const bySession = {};
|
|
41329
|
+
for (const provider of providers.values()) {
|
|
41330
|
+
for (const [sessionId, tasks] of Object.entries(provider.listBackgroundTasks?.() ?? {})) {
|
|
41331
|
+
if (tasks.length > 0) bySession[sessionId] = [...bySession[sessionId] ?? [], ...tasks];
|
|
41332
|
+
}
|
|
41333
|
+
}
|
|
41334
|
+
return bySession;
|
|
41335
|
+
}
|
|
41327
41336
|
async function shutdownAllProviders() {
|
|
41328
41337
|
for (const provider of providers.values()) {
|
|
41329
41338
|
await provider.shutdown();
|
|
@@ -45615,6 +45624,40 @@ var cachedModels = null;
|
|
|
45615
45624
|
var cachedCommands = null;
|
|
45616
45625
|
var thinkingAccumulator = /* @__PURE__ */ new Map();
|
|
45617
45626
|
var streamingMessageIds = /* @__PURE__ */ new Map();
|
|
45627
|
+
var publishedBackgroundTasks = /* @__PURE__ */ new Map();
|
|
45628
|
+
var THREAD_KEY_SEPARATOR = ":thread:";
|
|
45629
|
+
function sessionIdOfKey(key) {
|
|
45630
|
+
const i = key.indexOf(THREAD_KEY_SEPARATOR);
|
|
45631
|
+
return i === -1 ? key : key.slice(0, i);
|
|
45632
|
+
}
|
|
45633
|
+
function sessionBackgroundTasks(sessionId) {
|
|
45634
|
+
const tasks = [];
|
|
45635
|
+
for (const [key, entry] of sessionMap2) {
|
|
45636
|
+
if (sessionIdOfKey(key) === sessionId) tasks.push(...entry.backgroundTasks ?? []);
|
|
45637
|
+
}
|
|
45638
|
+
return tasks;
|
|
45639
|
+
}
|
|
45640
|
+
function publishBackgroundTasks(sessionId) {
|
|
45641
|
+
const tasks = sessionBackgroundTasks(sessionId);
|
|
45642
|
+
const json = JSON.stringify(tasks);
|
|
45643
|
+
if ((publishedBackgroundTasks.get(sessionId) ?? "[]") === json) return;
|
|
45644
|
+
if (tasks.length > 0) publishedBackgroundTasks.set(sessionId, json);
|
|
45645
|
+
else publishedBackgroundTasks.delete(sessionId);
|
|
45646
|
+
broadcast("background_tasks", { sessionId, tasks });
|
|
45647
|
+
}
|
|
45648
|
+
function dropBackgroundTasks(sessionId, entry) {
|
|
45649
|
+
entry.backgroundTasks = [];
|
|
45650
|
+
publishBackgroundTasks(sessionId);
|
|
45651
|
+
}
|
|
45652
|
+
function listBackgroundTasks() {
|
|
45653
|
+
const bySession = {};
|
|
45654
|
+
for (const [key, entry] of sessionMap2) {
|
|
45655
|
+
if (!entry.backgroundTasks?.length) continue;
|
|
45656
|
+
const sessionId = sessionIdOfKey(key);
|
|
45657
|
+
bySession[sessionId] = [...bySession[sessionId] ?? [], ...entry.backgroundTasks];
|
|
45658
|
+
}
|
|
45659
|
+
return bySession;
|
|
45660
|
+
}
|
|
45618
45661
|
function setSessionStatus2(db2, sessionId, isRunning, status, now, hasUnreviewed = false) {
|
|
45619
45662
|
if (hasUnreviewed) {
|
|
45620
45663
|
db2.prepare("UPDATE sessions SET is_running = ?, status = ?, has_unreviewed = 1, updated_at = ? WHERE id = ?").run(
|
|
@@ -45660,6 +45703,10 @@ async function ensureSessionStarted(session, mapKey, resumeSessionId) {
|
|
|
45660
45703
|
entry.messageLoop = (async () => {
|
|
45661
45704
|
try {
|
|
45662
45705
|
for await (const message of q) {
|
|
45706
|
+
if (isBackgroundTasksChanged(message)) {
|
|
45707
|
+
handleBackgroundTasksChanged(message, session.id, entry);
|
|
45708
|
+
continue;
|
|
45709
|
+
}
|
|
45663
45710
|
const currentTurnId = entry.turnId;
|
|
45664
45711
|
if (!currentTurnId) continue;
|
|
45665
45712
|
await handleMessage(message, session.id, currentTurnId, entry, db2);
|
|
@@ -45714,7 +45761,8 @@ async function ensureSessionStarted(session, mapKey, resumeSessionId) {
|
|
|
45714
45761
|
if (entry.turnId) {
|
|
45715
45762
|
streamingMessageIds.delete(entry.turnId);
|
|
45716
45763
|
}
|
|
45717
|
-
sessionMap2.delete(key);
|
|
45764
|
+
if (sessionMap2.get(key) === entry) sessionMap2.delete(key);
|
|
45765
|
+
dropBackgroundTasks(session.id, entry);
|
|
45718
45766
|
}
|
|
45719
45767
|
})();
|
|
45720
45768
|
return entry;
|
|
@@ -45854,11 +45902,6 @@ async function handleMessage(message, sessionId, turnId, entry, db2) {
|
|
|
45854
45902
|
entry,
|
|
45855
45903
|
db2
|
|
45856
45904
|
);
|
|
45857
|
-
} else if (sub === "background_tasks_changed") {
|
|
45858
|
-
handleBackgroundTasksChanged(
|
|
45859
|
-
message,
|
|
45860
|
-
sessionId
|
|
45861
|
-
);
|
|
45862
45905
|
}
|
|
45863
45906
|
}
|
|
45864
45907
|
break;
|
|
@@ -46136,9 +46179,13 @@ function handleTaskNotification(message, sessionId, turnId, entry, db2) {
|
|
|
46136
46179
|
"item:completed"
|
|
46137
46180
|
);
|
|
46138
46181
|
}
|
|
46139
|
-
function
|
|
46182
|
+
function isBackgroundTasksChanged(message) {
|
|
46183
|
+
return message.type === "system" && "subtype" in message && message.subtype === "background_tasks_changed";
|
|
46184
|
+
}
|
|
46185
|
+
function handleBackgroundTasksChanged(message, sessionId, entry) {
|
|
46140
46186
|
const m = message;
|
|
46141
|
-
|
|
46187
|
+
entry.backgroundTasks = (m.tasks ?? []).filter((t) => !t.ambient).map((t) => ({ task_id: t.task_id, task_type: t.task_type, description: t.description }));
|
|
46188
|
+
publishBackgroundTasks(sessionId);
|
|
46142
46189
|
}
|
|
46143
46190
|
async function handleResultMessage(message, sessionId, turnId, entry, db2) {
|
|
46144
46191
|
const parentToolUseId = message.parent_tool_use_id ?? null;
|
|
@@ -46245,6 +46292,7 @@ async function interruptTurn2(sessionId, threadId) {
|
|
|
46245
46292
|
entry.query.close();
|
|
46246
46293
|
streamingMessageIds.delete(turnId);
|
|
46247
46294
|
sessionMap2.delete(entryKey);
|
|
46295
|
+
dropBackgroundTasks(sessionId, entry);
|
|
46248
46296
|
}
|
|
46249
46297
|
}
|
|
46250
46298
|
try {
|
|
@@ -46272,6 +46320,7 @@ function clearThread2(sessionId) {
|
|
|
46272
46320
|
streamingMessageIds.delete(entry.turnId);
|
|
46273
46321
|
}
|
|
46274
46322
|
sessionMap2.delete(sessionId);
|
|
46323
|
+
entry.backgroundTasks = [];
|
|
46275
46324
|
}
|
|
46276
46325
|
for (const [key, threadEntry] of sessionMap2) {
|
|
46277
46326
|
if (key.startsWith(`${sessionId}:thread:`)) {
|
|
@@ -46281,8 +46330,10 @@ function clearThread2(sessionId) {
|
|
|
46281
46330
|
streamingMessageIds.delete(threadEntry.turnId);
|
|
46282
46331
|
}
|
|
46283
46332
|
sessionMap2.delete(key);
|
|
46333
|
+
threadEntry.backgroundTasks = [];
|
|
46284
46334
|
}
|
|
46285
46335
|
}
|
|
46336
|
+
publishBackgroundTasks(sessionId);
|
|
46286
46337
|
}
|
|
46287
46338
|
function clearThreadBranch(sessionId, threadId) {
|
|
46288
46339
|
const key = `${sessionId}:thread:${threadId}`;
|
|
@@ -46294,15 +46345,18 @@ function clearThreadBranch(sessionId, threadId) {
|
|
|
46294
46345
|
streamingMessageIds.delete(entry.turnId);
|
|
46295
46346
|
}
|
|
46296
46347
|
sessionMap2.delete(key);
|
|
46348
|
+
dropBackgroundTasks(sessionId, entry);
|
|
46297
46349
|
}
|
|
46298
46350
|
}
|
|
46299
46351
|
function clearAllThreads2() {
|
|
46300
46352
|
for (const [, entry] of sessionMap2) {
|
|
46301
46353
|
entry.promptQueue.close();
|
|
46302
46354
|
entry.query.close();
|
|
46355
|
+
entry.backgroundTasks = [];
|
|
46303
46356
|
}
|
|
46304
46357
|
sessionMap2.clear();
|
|
46305
46358
|
titleGenerating2.clear();
|
|
46359
|
+
for (const sessionId of [...publishedBackgroundTasks.keys()]) publishBackgroundTasks(sessionId);
|
|
46306
46360
|
}
|
|
46307
46361
|
async function setModel(sessionId, model) {
|
|
46308
46362
|
const entry = sessionMap2.get(sessionId);
|
|
@@ -46501,6 +46555,7 @@ var claudeProvider = {
|
|
|
46501
46555
|
summarizeThread: summarizeClaudeThread,
|
|
46502
46556
|
setModel,
|
|
46503
46557
|
stopTask,
|
|
46558
|
+
listBackgroundTasks,
|
|
46504
46559
|
shutdown: shutdown2
|
|
46505
46560
|
};
|
|
46506
46561
|
|
|
@@ -48134,6 +48189,9 @@ async function createAgentPaneApp(dbPath) {
|
|
|
48134
48189
|
await registerVscodeWebRoutes(fastify);
|
|
48135
48190
|
await registerAppRoutes(fastify);
|
|
48136
48191
|
const wss2 = initWs();
|
|
48192
|
+
wss2.on("connection", (ws) => {
|
|
48193
|
+
ws.send(JSON.stringify({ event: "background_tasks:snapshot", data: { sessions: listAllBackgroundTasks() } }));
|
|
48194
|
+
});
|
|
48137
48195
|
return { fastify, wss: wss2 };
|
|
48138
48196
|
}
|
|
48139
48197
|
export {
|