@leanandmean/coding-agent 0.74.1-scramjet.70 → 0.74.1-scramjet.71

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 (37) hide show
  1. package/README.md +14 -0
  2. package/dist/cli/args.d.ts +2 -0
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +44 -0
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/core/agent-session-services.d.ts +1 -0
  7. package/dist/core/agent-session-services.d.ts.map +1 -1
  8. package/dist/core/agent-session-services.js +1 -0
  9. package/dist/core/agent-session-services.js.map +1 -1
  10. package/dist/core/agent-session.d.ts +6 -2
  11. package/dist/core/agent-session.d.ts.map +1 -1
  12. package/dist/core/agent-session.js +23 -6
  13. package/dist/core/agent-session.js.map +1 -1
  14. package/dist/core/model-registry.d.ts +99 -0
  15. package/dist/core/model-registry.d.ts.map +1 -1
  16. package/dist/core/model-registry.js +93 -0
  17. package/dist/core/model-registry.js.map +1 -1
  18. package/dist/core/sdk.d.ts +2 -0
  19. package/dist/core/sdk.d.ts.map +1 -1
  20. package/dist/core/sdk.js +9 -1
  21. package/dist/core/sdk.js.map +1 -1
  22. package/dist/main.d.ts +105 -2
  23. package/dist/main.d.ts.map +1 -1
  24. package/dist/main.js +77 -3
  25. package/dist/main.js.map +1 -1
  26. package/dist/modes/interactive/components/model-selector.d.ts +1 -3
  27. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  28. package/dist/modes/interactive/components/model-selector.js +2 -5
  29. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  30. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  31. package/dist/modes/interactive/interactive-mode.js +1 -1
  32. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  33. package/docs/json.md +6 -0
  34. package/docs/models.md +69 -2
  35. package/docs/rpc.md +8 -0
  36. package/docs/sdk.md +17 -0
  37. package/package.json +4 -4
@@ -155,6 +155,9 @@ export class AgentSession {
155
155
  _extensionErrorUnsubscriber;
156
156
  // Model registry for API key resolution
157
157
  _modelRegistry;
158
+ // SCRAMJET-DIVERGENCE: Ephemeral routes retain live preferences and journal changes without changing shared defaults.
159
+ _persistModelPreferences;
160
+ _sessionThinkingLevelPreference;
158
161
  // Tool registry for extension getTools/setTools
159
162
  _toolRegistry = new Map();
160
163
  _toolDefinitions = new Map();
@@ -186,6 +189,7 @@ export class AgentSession {
186
189
  this._customTools = config.customTools ?? [];
187
190
  this._cwd = config.cwd;
188
191
  this._modelRegistry = config.modelRegistry;
192
+ this._persistModelPreferences = config.persistModelPreferences ?? true;
189
193
  this._extensionRunnerRef = config.extensionRunnerRef;
190
194
  this._initialActiveToolNames = config.initialActiveToolNames;
191
195
  this._allowedToolNames = config.allowedToolNames ? new Set(config.allowedToolNames) : undefined;
@@ -1677,7 +1681,7 @@ export class AgentSession {
1677
1681
  }
1678
1682
  /**
1679
1683
  * Set model directly.
1680
- * Validates that auth is configured, saves to session and settings.
1684
+ * Validates auth, journals selection, and optionally saves global defaults.
1681
1685
  * @throws Error if no auth is configured for the model
1682
1686
  */
1683
1687
  async setModel(model) {
@@ -1688,7 +1692,8 @@ export class AgentSession {
1688
1692
  const thinkingLevel = this._getThinkingLevelForModelSwitch();
1689
1693
  this.agent.state.model = model;
1690
1694
  this.sessionManager.appendModelChange(model.provider, model.id);
1691
- this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
1695
+ if (this._persistModelPreferences)
1696
+ this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
1692
1697
  // Re-clamp thinking level for new model's capabilities
1693
1698
  this.setThinkingLevel(thinkingLevel);
1694
1699
  await this._emitModelSelect(model, previousModel, "set");
@@ -1720,7 +1725,9 @@ export class AgentSession {
1720
1725
  // Apply model
1721
1726
  this.agent.state.model = next.model;
1722
1727
  this.sessionManager.appendModelChange(next.model.provider, next.model.id);
1723
- this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
1728
+ if (this._persistModelPreferences) {
1729
+ this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
1730
+ }
1724
1731
  // Apply thinking level.
1725
1732
  // - Explicit scoped model thinking level overrides current session level
1726
1733
  // - Undefined scoped model thinking level inherits the current session preference
@@ -1743,7 +1750,9 @@ export class AgentSession {
1743
1750
  const thinkingLevel = this._getThinkingLevelForModelSwitch();
1744
1751
  this.agent.state.model = nextModel;
1745
1752
  this.sessionManager.appendModelChange(nextModel.provider, nextModel.id);
1746
- this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
1753
+ if (this._persistModelPreferences) {
1754
+ this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
1755
+ }
1747
1756
  // Re-clamp thinking level for new model's capabilities
1748
1757
  this.setThinkingLevel(thinkingLevel);
1749
1758
  await this._emitModelSelect(nextModel, currentModel, "cycle");
@@ -1755,7 +1764,7 @@ export class AgentSession {
1755
1764
  /**
1756
1765
  * Set thinking level.
1757
1766
  * Clamps to model capabilities based on available thinking levels.
1758
- * Saves to session and settings only if the level actually changes.
1767
+ * Journals actual changes and optionally saves global defaults.
1759
1768
  */
1760
1769
  setThinkingLevel(level) {
1761
1770
  const availableLevels = this.getAvailableThinkingLevels();
@@ -1767,7 +1776,12 @@ export class AgentSession {
1767
1776
  if (isChanging) {
1768
1777
  this.sessionManager.appendThinkingLevelChange(effectiveLevel);
1769
1778
  if (this.supportsThinking() || effectiveLevel !== "off") {
1770
- this.settingsManager.setDefaultThinkingLevel(effectiveLevel);
1779
+ if (this._persistModelPreferences) {
1780
+ this.settingsManager.setDefaultThinkingLevel(effectiveLevel);
1781
+ }
1782
+ else {
1783
+ this._sessionThinkingLevelPreference = effectiveLevel;
1784
+ }
1771
1785
  }
1772
1786
  this._emit({ type: "thinking_level_changed", level: effectiveLevel });
1773
1787
  void this._extensionRunner.emit({
@@ -1811,6 +1825,9 @@ export class AgentSession {
1811
1825
  return explicitLevel;
1812
1826
  }
1813
1827
  if (!this.supportsThinking()) {
1828
+ if (!this._persistModelPreferences && this._sessionThinkingLevelPreference !== undefined) {
1829
+ return this._sessionThinkingLevelPreference;
1830
+ }
1814
1831
  return this.settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;
1815
1832
  }
1816
1833
  return this.thinkingLevel;