@dreb/coding-agent 2.23.0 → 2.25.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 (43) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +2 -0
  3. package/dist/core/agent-session.d.ts +11 -0
  4. package/dist/core/agent-session.d.ts.map +1 -1
  5. package/dist/core/agent-session.js +35 -2
  6. package/dist/core/agent-session.js.map +1 -1
  7. package/dist/core/extensions/index.d.ts +1 -1
  8. package/dist/core/extensions/index.d.ts.map +1 -1
  9. package/dist/core/extensions/index.js.map +1 -1
  10. package/dist/core/extensions/types.d.ts +14 -1
  11. package/dist/core/extensions/types.d.ts.map +1 -1
  12. package/dist/core/extensions/types.js.map +1 -1
  13. package/dist/core/sdk.d.ts.map +1 -1
  14. package/dist/core/sdk.js +4 -0
  15. package/dist/core/sdk.js.map +1 -1
  16. package/dist/core/settings-manager.d.ts +14 -0
  17. package/dist/core/settings-manager.d.ts.map +1 -1
  18. package/dist/core/settings-manager.js +41 -0
  19. package/dist/core/settings-manager.js.map +1 -1
  20. package/dist/core/tools/index.d.ts +1 -1
  21. package/dist/core/tools/index.d.ts.map +1 -1
  22. package/dist/core/tools/index.js +1 -1
  23. package/dist/core/tools/index.js.map +1 -1
  24. package/dist/core/tools/subagent.d.ts +5 -1
  25. package/dist/core/tools/subagent.d.ts.map +1 -1
  26. package/dist/core/tools/subagent.js +51 -13
  27. package/dist/core/tools/subagent.js.map +1 -1
  28. package/dist/modes/interactive/components/settings-selector.d.ts +36 -1
  29. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  30. package/dist/modes/interactive/components/settings-selector.js +195 -1
  31. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  32. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  33. package/dist/modes/interactive/interactive-mode.js +51 -1
  34. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  35. package/dist/modes/interactive/tab-title.d.ts +5 -0
  36. package/dist/modes/interactive/tab-title.d.ts.map +1 -1
  37. package/dist/modes/interactive/tab-title.js +6 -0
  38. package/dist/modes/interactive/tab-title.js.map +1 -1
  39. package/docs/agent-models.md +64 -0
  40. package/docs/extensions.md +13 -0
  41. package/docs/mach6.md +2 -0
  42. package/docs/settings.md +18 -0
  43. package/package.json +1 -1
@@ -35,7 +35,7 @@ import { isSensitivePath } from "./sensitive-paths.js";
35
35
  import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
36
36
  import { createSyntheticSourceInfo } from "./source-info.js";
37
37
  import { buildSystemPrompt } from "./system-prompt.js";
38
- import { createAllToolDefinitions, getRunningBackgroundAgents, } from "./tools/index.js";
38
+ import { createAllToolDefinitions, discoverAgentTypes, getRunningBackgroundAgents, } from "./tools/index.js";
39
39
  import { expandSkillContent } from "./tools/skill.js";
40
40
  import { createToolDefinitionFromAgentTool, wrapToolDefinition } from "./tools/tool-definition-wrapper.js";
41
41
  // ============================================================================
@@ -404,7 +404,7 @@ export class AgentSession {
404
404
  if (cancelled) {
405
405
  parts.push("This agent was cancelled by the user.");
406
406
  }
407
- if (!cancelled && result.exitCode !== 0) {
407
+ if (!cancelled && (result.exitCode !== 0 || result.errorMessage)) {
408
408
  parts.push(`Error: ${result.errorMessage || "unknown"}`);
409
409
  }
410
410
  if (result.output) {
@@ -530,6 +530,27 @@ export class AgentSession {
530
530
  ];
531
531
  this.warnInSession(`Resource loading issues:\n${lines.join("\n")}`);
532
532
  }
533
+ /**
534
+ * Detect agentModels settings keys that reference agents which no longer exist
535
+ * (e.g. an upstream agent was renamed or removed) and surface a LOUD warning.
536
+ *
537
+ * Such keys are silently ignored during resolution — getAgentModelsForAgent
538
+ * never matches them — so without this check a stale override would vanish
539
+ * with no signal to the user. The agent-name keys must match exactly how
540
+ * discoverAgentTypes keys agents (case-sensitive, e.g. "Explore"), which is
541
+ * the same lookup getAgentModelsForAgent uses.
542
+ */
543
+ warnStaleAgentModelKeys() {
544
+ const configured = Object.keys(this.settingsManager?.getAgentModels() ?? {});
545
+ if (configured.length === 0)
546
+ return;
547
+ const discovered = discoverAgentTypes(this._cwd);
548
+ const staleKeys = configured.filter((key) => !discovered.has(key));
549
+ if (staleKeys.length === 0)
550
+ return;
551
+ this.warnInSession(`agentModels settings reference unknown agent(s): ${staleKeys.join(", ")}. ` +
552
+ "These overrides will be ignored. Check for typos or renamed/removed agents.");
553
+ }
533
554
  /**
534
555
  * Surface a warning in the session so both the human and the AI agent can see it.
535
556
  * During streaming: steers the warning as a user message into the conversation.
@@ -756,6 +777,17 @@ export class AgentSession {
756
777
  };
757
778
  await this._extensionRunner.emit(extensionEvent);
758
779
  }
780
+ else if (event.type === "length_retry") {
781
+ const extensionEvent = {
782
+ type: "length_retry",
783
+ attempt: event.attempt,
784
+ maxAttempts: event.maxAttempts,
785
+ previousMaxTokens: event.previousMaxTokens,
786
+ nextMaxTokens: event.nextMaxTokens,
787
+ discardedPartial: event.discardedPartial,
788
+ };
789
+ await this._extensionRunner.emit(extensionEvent);
790
+ }
759
791
  else if (event.type === "tool_execution_start") {
760
792
  const extensionEvent = {
761
793
  type: "tool_execution_start",
@@ -2284,6 +2316,7 @@ export class AgentSession {
2284
2316
  parentProvider: () => this.model?.provider,
2285
2317
  parentModel: () => this.model?.id,
2286
2318
  modelRegistry: this._modelRegistry,
2319
+ getAgentModelsForAgent: (name) => this.settingsManager?.getAgentModelsForAgent(name),
2287
2320
  onBackgroundStart: (agentId, agentType, taskSummary) => {
2288
2321
  this._emit({ type: "background_agent_start", agentId, agentType, taskSummary });
2289
2322
  },