@dreb/coding-agent 2.25.3 → 2.27.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 (57) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +21 -11
  3. package/dist/core/agent-session.d.ts +7 -0
  4. package/dist/core/agent-session.d.ts.map +1 -1
  5. package/dist/core/agent-session.js +22 -0
  6. package/dist/core/agent-session.js.map +1 -1
  7. package/dist/core/buddy/buddy-controller.d.ts.map +1 -1
  8. package/dist/core/buddy/buddy-controller.js +5 -23
  9. package/dist/core/buddy/buddy-controller.js.map +1 -1
  10. package/dist/core/context-buffer.d.ts +49 -0
  11. package/dist/core/context-buffer.d.ts.map +1 -0
  12. package/dist/core/context-buffer.js +84 -0
  13. package/dist/core/context-buffer.js.map +1 -0
  14. package/dist/core/sdk.d.ts.map +1 -1
  15. package/dist/core/sdk.js +3 -1
  16. package/dist/core/sdk.js.map +1 -1
  17. package/dist/core/settings-manager.d.ts +13 -0
  18. package/dist/core/settings-manager.d.ts.map +1 -1
  19. package/dist/core/settings-manager.js +40 -0
  20. package/dist/core/settings-manager.js.map +1 -1
  21. package/dist/core/system-prompt.d.ts +5 -0
  22. package/dist/core/system-prompt.d.ts.map +1 -1
  23. package/dist/core/system-prompt.js +6 -0
  24. package/dist/core/system-prompt.js.map +1 -1
  25. package/dist/core/thinking.d.ts +10 -1
  26. package/dist/core/thinking.d.ts.map +1 -1
  27. package/dist/core/thinking.js +14 -0
  28. package/dist/core/thinking.js.map +1 -1
  29. package/dist/core/tools/subagent.d.ts.map +1 -1
  30. package/dist/core/tools/subagent.js +1 -0
  31. package/dist/core/tools/subagent.js.map +1 -1
  32. package/dist/modes/interactive/components/settings-selector.d.ts +5 -0
  33. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  34. package/dist/modes/interactive/components/settings-selector.js +16 -0
  35. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  36. package/dist/modes/interactive/components/tool-execution.d.ts +7 -0
  37. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  38. package/dist/modes/interactive/components/tool-execution.js +16 -0
  39. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  40. package/dist/modes/interactive/interactive-mode.d.ts +33 -0
  41. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  42. package/dist/modes/interactive/interactive-mode.js +210 -87
  43. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  44. package/dist/modes/interactive/tab-title.d.ts +21 -3
  45. package/dist/modes/interactive/tab-title.d.ts.map +1 -1
  46. package/dist/modes/interactive/tab-title.js +47 -25
  47. package/dist/modes/interactive/tab-title.js.map +1 -1
  48. package/docs/agent-models.md +10 -0
  49. package/docs/development.md +1 -1
  50. package/docs/providers.md +7 -0
  51. package/docs/settings.md +29 -2
  52. package/docs/tui.md +42 -0
  53. package/examples/extensions/custom-provider-anthropic/package.json +3 -0
  54. package/examples/extensions/custom-provider-gitlab-duo/package.json +3 -0
  55. package/examples/extensions/custom-provider-qwen-cli/package.json +3 -0
  56. package/examples/extensions/with-deps/package.json +3 -0
  57. package/package.json +2 -2
@@ -35,6 +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 { resolveThinkingDisplay } from "./thinking.js";
38
39
  import { createAllToolDefinitions, discoverAgentTypes, getRunningBackgroundAgents, } from "./tools/index.js";
39
40
  import { expandSkillContent } from "./tools/skill.js";
40
41
  import { createToolDefinitionFromAgentTool, wrapToolDefinition } from "./tools/tool-definition-wrapper.js";
@@ -1052,6 +1053,7 @@ export class AgentSession {
1052
1053
  promptGuidelines,
1053
1054
  uiType: this._uiType,
1054
1055
  gitRepoState: this._gitRepoState,
1056
+ currentModel: this.model ? { provider: this.model.provider, id: this.model.id } : undefined,
1055
1057
  });
1056
1058
  }
1057
1059
  // =========================================================================
@@ -1510,12 +1512,24 @@ export class AgentSession {
1510
1512
  const previousModel = this.model;
1511
1513
  const thinkingLevel = this._getThinkingLevelForModelSwitch();
1512
1514
  this.agent.setModel(model);
1515
+ this._refreshThinkingDisplay(model);
1513
1516
  this.sessionManager.appendModelChange(model.provider, model.id);
1514
1517
  this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
1518
+ this._baseSystemPrompt = this._rebuildSystemPrompt(this.getActiveToolNames());
1519
+ this.agent.setSystemPrompt(this._baseSystemPrompt);
1515
1520
  // Re-clamp thinking level for new model's capabilities
1516
1521
  this.setThinkingLevel(thinkingLevel);
1517
1522
  await this._emitModelSelect(model, previousModel, "set");
1518
1523
  }
1524
+ /**
1525
+ * Refresh the live agent's thinkingDisplay for a (possibly) new model. The default
1526
+ * depends on the model (adaptive-thinking models default to "summarized"), so this
1527
+ * must run on every model switch. Keyed by model id from shared settings, so it
1528
+ * resolves identically to how createAgentSession seeds it at startup.
1529
+ */
1530
+ _refreshThinkingDisplay(model) {
1531
+ this.agent.thinkingDisplay = resolveThinkingDisplay(model, this.settingsManager.getModelThinkingDisplay(model.id));
1532
+ }
1519
1533
  /**
1520
1534
  * Cycle to next/previous model.
1521
1535
  * Uses scoped models (from --models flag) if available, otherwise all available models.
@@ -1561,8 +1575,11 @@ export class AgentSession {
1561
1575
  const thinkingLevel = this._getThinkingLevelForModelSwitch(next.thinkingLevel);
1562
1576
  // Apply model
1563
1577
  this.agent.setModel(next.model);
1578
+ this._refreshThinkingDisplay(next.model);
1564
1579
  this.sessionManager.appendModelChange(next.model.provider, next.model.id);
1565
1580
  this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
1581
+ this._baseSystemPrompt = this._rebuildSystemPrompt(this.getActiveToolNames());
1582
+ this.agent.setSystemPrompt(this._baseSystemPrompt);
1566
1583
  // Apply thinking level.
1567
1584
  // - Explicit scoped model thinking level overrides current session level
1568
1585
  // - Undefined scoped model thinking level inherits the current session preference
@@ -1588,8 +1605,11 @@ export class AgentSession {
1588
1605
  }
1589
1606
  const thinkingLevel = this._getThinkingLevelForModelSwitch();
1590
1607
  this.agent.setModel(nextModel);
1608
+ this._refreshThinkingDisplay(nextModel);
1591
1609
  this.sessionManager.appendModelChange(nextModel.provider, nextModel.id);
1592
1610
  this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
1611
+ this._baseSystemPrompt = this._rebuildSystemPrompt(this.getActiveToolNames());
1612
+ this.agent.setSystemPrompt(this._baseSystemPrompt);
1593
1613
  // Re-clamp thinking level for new model's capabilities
1594
1614
  this.setThinkingLevel(thinkingLevel);
1595
1615
  await this._emitModelSelect(nextModel, currentModel, "cycle");
@@ -2100,6 +2120,7 @@ export class AgentSession {
2100
2120
  return;
2101
2121
  }
2102
2122
  this.agent.setModel(refreshedModel);
2123
+ this._refreshThinkingDisplay(refreshedModel);
2103
2124
  }
2104
2125
  _bindExtensionCore(runner) {
2105
2126
  const getCommands = () => {
@@ -2652,6 +2673,7 @@ export class AgentSession {
2652
2673
  const match = availableModels.find((m) => m.provider === sessionContext.model.provider && m.id === sessionContext.model.modelId);
2653
2674
  if (match) {
2654
2675
  this.agent.setModel(match);
2676
+ this._refreshThinkingDisplay(match);
2655
2677
  await this._emitModelSelect(match, previousModel, "restore");
2656
2678
  }
2657
2679
  }