@usabledev/usable-chat 1.152.1 → 1.153.0

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 (2) hide show
  1. package/cli.js +39 -4
  2. package/package.json +1 -1
package/cli.js CHANGED
@@ -175976,6 +175976,33 @@ data: ${JSON.stringify(envelope)}
175976
175976
  });
175977
175977
 
175978
175978
  // src/core/tools/spawn-subagent.ts
175979
+ async function maybeStartBackgroundRelay(redis, context, conversationId, taskId, success2) {
175980
+ if (!redis || !context.startBackgroundSubagentRelay) return false;
175981
+ try {
175982
+ const record2 = await spawnedTaskStore.get(redis, taskId);
175983
+ if (record2?.notifiedTurnAt) {
175984
+ return true;
175985
+ }
175986
+ const lockKey = `subagents:background-relay-lock:${conversationId}`;
175987
+ const acquired = await redis.set(lockKey, taskId, "NX", "EX", 180).catch(() => null);
175988
+ if (!acquired) {
175989
+ return true;
175990
+ }
175991
+ const started = await context.startBackgroundSubagentRelay({
175992
+ conversationId,
175993
+ taskId,
175994
+ reason: success2 ? "completed" : "failed"
175995
+ });
175996
+ return started;
175997
+ } catch (err) {
175998
+ logger.debug("SpawnSubagent", "Failed to start background relay job", {
175999
+ conversationId,
176000
+ taskId,
176001
+ error: err instanceof Error ? err.message : String(err)
176002
+ });
176003
+ return false;
176004
+ }
176005
+ }
175979
176006
  async function maybeEmitPingPrompt(redis, conversationId, taskId) {
175980
176007
  if (!redis) return;
175981
176008
  try {
@@ -176276,7 +176303,10 @@ HOW TO USE THIS:
176276
176303
  tokenUsage: response.tokenUsage
176277
176304
  }
176278
176305
  });
176279
- await maybeEmitPingPrompt(redis, conversationId, taskId);
176306
+ const relayed = await maybeStartBackgroundRelay(redis, context, conversationId, taskId, success2);
176307
+ if (!relayed) {
176308
+ await maybeEmitPingPrompt(redis, conversationId, taskId);
176309
+ }
176280
176310
  } catch (err) {
176281
176311
  const errorMessage = err instanceof Error ? err.message : String(err);
176282
176312
  const status = abort.signal.aborted ? "cancelled" : "failed";
@@ -176291,7 +176321,10 @@ HOW TO USE THIS:
176291
176321
  taskId,
176292
176322
  data: { error: errorMessage }
176293
176323
  });
176294
- await maybeEmitPingPrompt(redis, conversationId, taskId);
176324
+ const relayed = await maybeStartBackgroundRelay(redis, context, conversationId, taskId, false);
176325
+ if (!relayed) {
176326
+ await maybeEmitPingPrompt(redis, conversationId, taskId);
176327
+ }
176295
176328
  } finally {
176296
176329
  spawnedTaskStore.unregisterLocalAbort(taskId);
176297
176330
  }
@@ -249322,7 +249355,8 @@ async function orchestrate(request) {
249322
249355
  chatMode,
249323
249356
  imageGenModel: context.metadata?.imageGenModel,
249324
249357
  imageGenThinking: context.metadata?.imageGenThinking,
249325
- registeredParentToolSchemas: context.registeredParentToolSchemas
249358
+ registeredParentToolSchemas: context.registeredParentToolSchemas,
249359
+ startBackgroundSubagentRelay: context.startBackgroundSubagentRelay
249326
249360
  });
249327
249361
  if (!config3.localFilesystem) {
249328
249362
  aiTools["spawn_subagent"] = {
@@ -252400,6 +252434,7 @@ function createOrchestratorRequest(messages4, context, config3, persona, apiKey,
252400
252434
  metadata: context.metadata,
252401
252435
  allowedWorkspaceIds: context.allowedWorkspaceIds,
252402
252436
  registeredParentToolSchemas: context.registeredParentToolSchemas,
252437
+ startBackgroundSubagentRelay: context.startBackgroundSubagentRelay,
252403
252438
  extensions: context.extensions
252404
252439
  // Plugin hook seam (CLI only; undefined on web)
252405
252440
  },
@@ -270948,7 +270983,7 @@ init_tui_select();
270948
270983
  init_model_registry();
270949
270984
 
270950
270985
  // package.json
270951
- var version2 = "1.152.1";
270986
+ var version2 = "1.153.0";
270952
270987
 
270953
270988
  // src/adapters/cli/model-catalog.ts
270954
270989
  init_codex_auth();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usabledev/usable-chat",
3
- "version": "1.152.1",
3
+ "version": "1.153.0",
4
4
  "description": "usable-chat — terminal harness for usable-chat (headless + TUI)",
5
5
  "type": "module",
6
6
  "bin": {