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.
@@ -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 handleBackgroundTasksChanged(message, sessionId) {
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
- broadcast("background_tasks", { sessionId, tasks: m.tasks ?? [] });
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 handleBackgroundTasksChanged(message, sessionId) {
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
- broadcast("background_tasks", { sessionId, tasks: m.tasks ?? [] });
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 {