@dreb/coding-agent 2.64.1 → 2.64.2

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 (34) hide show
  1. package/dist/core/agent-session.d.ts.map +1 -1
  2. package/dist/core/agent-session.js +5 -2
  3. package/dist/core/agent-session.js.map +1 -1
  4. package/dist/core/buddy/buddy-manager.d.ts +6 -2
  5. package/dist/core/buddy/buddy-manager.d.ts.map +1 -1
  6. package/dist/core/buddy/buddy-manager.js +10 -6
  7. package/dist/core/buddy/buddy-manager.js.map +1 -1
  8. package/dist/core/compaction/branch-summarization.d.ts +2 -0
  9. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  10. package/dist/core/compaction/branch-summarization.js +2 -2
  11. package/dist/core/compaction/branch-summarization.js.map +1 -1
  12. package/dist/core/compaction/compaction.d.ts +2 -2
  13. package/dist/core/compaction/compaction.d.ts.map +1 -1
  14. package/dist/core/compaction/compaction.js +14 -10
  15. package/dist/core/compaction/compaction.js.map +1 -1
  16. package/dist/core/dispatch-arbiter.d.ts +2 -0
  17. package/dist/core/dispatch-arbiter.d.ts.map +1 -1
  18. package/dist/core/dispatch-arbiter.js +2 -0
  19. package/dist/core/dispatch-arbiter.js.map +1 -1
  20. package/dist/core/tab-title.d.ts +2 -0
  21. package/dist/core/tab-title.d.ts.map +1 -1
  22. package/dist/core/tab-title.js +3 -1
  23. package/dist/core/tab-title.js.map +1 -1
  24. package/dist/core/tools/subagent.d.ts +14 -2
  25. package/dist/core/tools/subagent.d.ts.map +1 -1
  26. package/dist/core/tools/subagent.js +17 -9
  27. package/dist/core/tools/subagent.js.map +1 -1
  28. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  29. package/dist/modes/interactive/interactive-mode.js +3 -2
  30. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  31. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  32. package/dist/modes/rpc/rpc-mode.js +3 -2
  33. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  34. package/package.json +1 -1
@@ -787,7 +787,7 @@ function makeProbeSignal(parentSignal, timeoutMs) {
787
787
  };
788
788
  }
789
789
  export async function probeModelAvailability(model, options = {}) {
790
- const { signal, registry, timeoutMs = DEFAULT_MODEL_AVAILABILITY_PROBE_TIMEOUT_MS } = options;
790
+ const { signal, registry, timeoutMs = DEFAULT_MODEL_AVAILABILITY_PROBE_TIMEOUT_MS, sessionId } = options;
791
791
  if (signal?.aborted)
792
792
  return { ok: false, reason: "Aborted before spawn", aborted: true };
793
793
  const probeSignal = makeProbeSignal(signal, timeoutMs);
@@ -815,6 +815,7 @@ export async function probeModelAvailability(model, options = {}) {
815
815
  maxRetryDelayMs: 0,
816
816
  reasoning,
817
817
  signal: probeSignal.signal,
818
+ ...(sessionId ? { sessionId } : {}),
818
819
  }),
819
820
  probeSignal.timeoutPromise,
820
821
  ]);
@@ -836,7 +837,9 @@ export async function probeModelAvailability(model, options = {}) {
836
837
  }
837
838
  export async function resolveModelForSubagentSpawn(models, parentProvider, registry, parentModel, signal,
838
839
  /** Optional log prefix for warning messages (defaults to "[subagent]") */
839
- logPrefix = "[subagent]") {
840
+ logPrefix = "[subagent]",
841
+ /** Stable conversation ID forwarded to availability probes (issue 500). */
842
+ sessionId) {
840
843
  if (signal?.aborted)
841
844
  return { ok: false, error: "Aborted before spawn", skippedModels: [] };
842
845
  // Runtime probing only applies to agent definition fallback lists. Single
@@ -861,7 +864,7 @@ logPrefix = "[subagent]") {
861
864
  }
862
865
  const modelObj = resolved.provider ? registry.find(resolved.provider, resolved.modelId) : undefined;
863
866
  if (modelObj) {
864
- const probe = await probeModelAvailability(modelObj, { signal, registry });
867
+ const probe = await probeModelAvailability(modelObj, { signal, registry, sessionId });
865
868
  if (!probe.ok && probe.aborted) {
866
869
  return { ok: false, error: "Aborted before spawn", skippedModels };
867
870
  }
@@ -971,7 +974,9 @@ function clampCwd(defaultCwd, itemCwd) {
971
974
  }
972
975
  return { ok: true, cwd: resolved };
973
976
  }
974
- export async function executeSingle(agents, agentName, task, cwd, signal, onProgress, modelOverride, parentProvider, registry, sessionDir, parentModel, agentModels, parentSessionFile, onChildEvent, thinkingOverride, arbitration, onControlAvailable) {
977
+ export async function executeSingle(agents, agentName, task, cwd, signal, onProgress, modelOverride, parentProvider, registry, sessionDir, parentModel, agentModels, parentSessionFile, onChildEvent, thinkingOverride, arbitration, onControlAvailable,
978
+ /** Parent session UUID for spawn-time availability probes (issue 500). */
979
+ parentSessionId) {
975
980
  let name = agentName || DEFAULT_AGENT;
976
981
  let config = agents.get(name);
977
982
  if (!config) {
@@ -1005,7 +1010,7 @@ export async function executeSingle(agents, agentName, task, cwd, signal, onProg
1005
1010
  let skippedModels = [];
1006
1011
  if (modelSpec) {
1007
1012
  const parentFallback = configuredModelSpec ? parentModel : undefined;
1008
- const resolved = await resolveModelForSubagentSpawn(modelSpec, parentProvider, registry, parentFallback, signal);
1013
+ const resolved = await resolveModelForSubagentSpawn(modelSpec, parentProvider, registry, parentFallback, signal, "[subagent]", parentSessionId);
1009
1014
  skippedModels = resolved.skippedModels;
1010
1015
  if (!resolved.ok) {
1011
1016
  const skippedDetails = formatSkippedModelFailureDetails(skippedModels);
@@ -1213,7 +1218,9 @@ export async function executeSingle(agents, agentName, task, cwd, signal, onProg
1213
1218
  }
1214
1219
  return result;
1215
1220
  }
1216
- async function executeChain(agents, chain, defaultCwd, signal, onProgress, parentProvider, registry, sessionBaseDir, defaultAgent, defaultModel, defaultThinking, parentModel, getAgentModelsForAgentFn, parentSessionFile, onChildEvent, arbitration, onControlAvailable) {
1221
+ async function executeChain(agents, chain, defaultCwd, signal, onProgress, parentProvider, registry, sessionBaseDir, defaultAgent, defaultModel, defaultThinking, parentModel, getAgentModelsForAgentFn, parentSessionFile, onChildEvent, arbitration, onControlAvailable,
1222
+ /** Parent session UUID for spawn-time availability probes (issue 500). */
1223
+ parentSessionId) {
1217
1224
  const results = [];
1218
1225
  let previousOutput = "";
1219
1226
  for (let i = 0; i < chain.length; i++) {
@@ -1250,7 +1257,7 @@ async function executeChain(agents, chain, defaultCwd, signal, onProgress, paren
1250
1257
  const stepSessionDir = sessionBaseDir ? join(sessionBaseDir, `step-${i + 1}`) : undefined;
1251
1258
  const stepAgentName = step.agent || defaultAgent || DEFAULT_AGENT;
1252
1259
  const stepMach6Models = getAgentModelsForAgentFn?.(stepAgentName);
1253
- const result = await executeSingle(agents, step.agent || defaultAgent, task, cwdResult.cwd, signal, onProgress, step.model || defaultModel, parentProvider, registry, stepSessionDir, parentModel, stepMach6Models, parentSessionFile, onChildEvent, resolveSubagentThinkingOverride(step.thinking, defaultThinking), arbitration ? { ...arbitration, step: i + 1 } : undefined, onControlAvailable);
1260
+ const result = await executeSingle(agents, step.agent || defaultAgent, task, cwdResult.cwd, signal, onProgress, step.model || defaultModel, parentProvider, registry, stepSessionDir, parentModel, stepMach6Models, parentSessionFile, onChildEvent, resolveSubagentThinkingOverride(step.thinking, defaultThinking), arbitration ? { ...arbitration, step: i + 1 } : undefined, onControlAvailable, parentSessionId);
1254
1261
  results.push(result);
1255
1262
  if (result.exitCode !== 0) {
1256
1263
  break; // stop chain on error
@@ -1751,6 +1758,7 @@ export function createSubagentToolDefinition(cwd, options) {
1751
1758
  const getParentProvider = options?.parentProvider ?? (() => undefined);
1752
1759
  const getParentModel = options?.parentModel ?? (() => undefined);
1753
1760
  const getParentSessionFile = options?.parentSessionFile ?? (() => undefined);
1761
+ const getParentSessionId = options?.parentSessionId ?? (() => undefined);
1754
1762
  const modelRegistry = options?.modelRegistry;
1755
1763
  const getAgentModelsForAgent = options?.getAgentModelsForAgent;
1756
1764
  const arbitrate = options?.arbitrate;
@@ -1970,7 +1978,7 @@ export function createSubagentToolDefinition(cwd, options) {
1970
1978
  defaultThinkingLevel: getDefaultThinkingLevel?.(),
1971
1979
  getAgentModelsForAgent,
1972
1980
  }
1973
- : undefined, onControlAvailable));
1981
+ : undefined, onControlAvailable, getParentSessionId()));
1974
1982
  };
1975
1983
  if (params.task) {
1976
1984
  // Single background task
@@ -2043,7 +2051,7 @@ export function createSubagentToolDefinition(cwd, options) {
2043
2051
  defaultThinkingLevel: getDefaultThinkingLevel?.(),
2044
2052
  getAgentModelsForAgent,
2045
2053
  }
2046
- : undefined, onControlAvailable);
2054
+ : undefined, onControlAvailable, getParentSessionId());
2047
2055
  const resultText = results
2048
2056
  .map((r, i) => `### Step ${i + 1}\n${formatSingleResult(r)}`)
2049
2057
  .join("\n\n---\n\n");