cli-jaw 2.17.42 → 2.17.43

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.
@@ -767,10 +767,21 @@ export async function steerAgent(scopeKey, newPrompt, source, meta) {
767
767
  }
768
768
  insertMessage.run('user', newPrompt, source, '', settings["workingDir"] || null, chatSessionId);
769
769
  broadcast('new_message', { role: 'user', content: newPrompt, source, scope: scopeKey, sessionId: chatSessionId });
770
- broadcast('steer_started', stripUndefined({ prompt: newPrompt, origin: source || 'web', scope: scopeKey, requestId: meta?.requestId }));
770
+ broadcast('steer_started', stripUndefined({ prompt: newPrompt, origin: source || 'web', scope: scopeKey,
771
+ sessionId: chatSessionId, target: meta?.target, chatId: meta?.chatId, requestId: meta?.requestId,
772
+ remoteKey: meta?.remoteKey, replyViaTarget: meta?.replyViaTarget, mode: 'kill-steer' }));
771
773
  const { orchestrate, orchestrateContinue, orchestrateReset, isContinueIntent, isResetIntent } = await import('../orchestrator/pipeline.js');
772
774
  const origin = source || 'web';
773
- const steerMeta = stripUndefined({ origin, scope: scopeKey, chatSessionId, requestId: meta?.requestId, _skipInsert: true, _steerContext: steerContext || undefined });
775
+ // The follow-up run answers the SAME conversation the killed turn came from,
776
+ // but nothing downstream can infer that: a remote caller's reply is addressed
777
+ // by `target`, and dropping it here left the answer with nowhere to go. The
778
+ // dispatch waiter is already gone (ingress returns early for a steered
779
+ // submission), so an unaddressed terminal is silently discarded and the
780
+ // channel just goes quiet after a steer.
781
+ const steerMeta = stripUndefined({ origin, scope: scopeKey, chatSessionId, requestId: meta?.requestId,
782
+ target: meta?.target, chatId: meta?.chatId, remoteKey: meta?.remoteKey,
783
+ replyViaTarget: meta?.replyViaTarget, _fromSteer: true,
784
+ _skipInsert: true, _steerContext: steerContext || undefined });
774
785
  const task = isResetIntent(newPrompt)
775
786
  ? orchestrateReset(steerMeta)
776
787
  : isContinueIntent(newPrompt)
@@ -778,7 +789,9 @@ export async function steerAgent(scopeKey, newPrompt, source, meta) {
778
789
  : orchestrate(newPrompt, steerMeta);
779
790
  task.catch(async (err) => {
780
791
  console.error('[steer:orchestrate]', err.message);
781
- broadcast('orchestrate_done', stripUndefined({ text: `[error] ${err.message}`, error: true, origin, requestId: meta?.requestId }));
792
+ broadcast('orchestrate_done', stripUndefined({ text: `[error] ${err.message}`, error: true, origin,
793
+ target: meta?.target, chatId: meta?.chatId, replyViaTarget: meta?.replyViaTarget,
794
+ fromSteer: true, requestId: meta?.requestId }));
782
795
  settleOnce(meta?.requestId, 'failed', { error: err.message });
783
796
  });
784
797
  // The follow-up was started as a new run (kill-path or idle race). The caller