@leanandmean/coding-agent 0.74.1-scramjet.23 → 0.74.1-scramjet.25

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 (71) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/cli/list-models.d.ts +2 -0
  3. package/dist/cli/list-models.d.ts.map +1 -1
  4. package/dist/cli/list-models.js +8 -1
  5. package/dist/cli/list-models.js.map +1 -1
  6. package/dist/core/agent-session.d.ts.map +1 -1
  7. package/dist/core/agent-session.js +10 -6
  8. package/dist/core/agent-session.js.map +1 -1
  9. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  10. package/dist/core/compaction/branch-summarization.js +4 -4
  11. package/dist/core/compaction/branch-summarization.js.map +1 -1
  12. package/dist/core/compaction/compaction.d.ts.map +1 -1
  13. package/dist/core/compaction/compaction.js +2 -1
  14. package/dist/core/compaction/compaction.js.map +1 -1
  15. package/dist/core/extensions/types.d.ts +8 -3
  16. package/dist/core/extensions/types.d.ts.map +1 -1
  17. package/dist/core/extensions/types.js.map +1 -1
  18. package/dist/core/model-registry.d.ts +3 -0
  19. package/dist/core/model-registry.d.ts.map +1 -1
  20. package/dist/core/model-registry.js +87 -24
  21. package/dist/core/model-registry.js.map +1 -1
  22. package/dist/core/settings-manager.d.ts +0 -3
  23. package/dist/core/settings-manager.d.ts.map +1 -1
  24. package/dist/core/settings-manager.js +0 -15
  25. package/dist/core/settings-manager.js.map +1 -1
  26. package/dist/main.d.ts.map +1 -1
  27. package/dist/main.js +1 -1
  28. package/dist/main.js.map +1 -1
  29. package/dist/modes/interactive/components/armin.d.ts +4 -2
  30. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  31. package/dist/modes/interactive/components/armin.js +14 -8
  32. package/dist/modes/interactive/components/armin.js.map +1 -1
  33. package/dist/modes/interactive/components/assistant-message.d.ts +3 -1
  34. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  35. package/dist/modes/interactive/components/assistant-message.js +8 -2
  36. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  37. package/dist/modes/interactive/components/daxnuts.d.ts +4 -1
  38. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  39. package/dist/modes/interactive/components/daxnuts.js +14 -6
  40. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  41. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  42. package/dist/modes/interactive/components/extension-editor.js +2 -2
  43. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  44. package/dist/modes/interactive/components/footer.d.ts +4 -0
  45. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  46. package/dist/modes/interactive/components/footer.js +21 -16
  47. package/dist/modes/interactive/components/footer.js.map +1 -1
  48. package/dist/modes/interactive/components/settings-selector.d.ts +0 -2
  49. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  50. package/dist/modes/interactive/components/settings-selector.js +1 -13
  51. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  52. package/dist/modes/interactive/components/tool-execution.d.ts +11 -0
  53. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  54. package/dist/modes/interactive/components/tool-execution.js +69 -18
  55. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  56. package/dist/modes/interactive/interactive-mode.d.ts +13 -0
  57. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  58. package/dist/modes/interactive/interactive-mode.js +213 -59
  59. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  60. package/dist/modes/rpc/rpc-client.d.ts +1 -0
  61. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  62. package/dist/modes/rpc/rpc-client.js.map +1 -1
  63. package/docs/compaction.md +3 -3
  64. package/docs/custom-provider.md +2 -0
  65. package/docs/extensions.md +3 -1
  66. package/docs/models.md +6 -1
  67. package/docs/rpc.md +6 -2
  68. package/docs/settings.md +0 -1
  69. package/docs/tui.md +12 -0
  70. package/examples/extensions/border-status-editor.ts +7 -3
  71. package/package.json +4 -4
@@ -17,7 +17,7 @@ import { basename, dirname, resolve } from "node:path";
17
17
  // SCRAMJET-DIVERGENCE: provider-safe harness tool-call id generation for the persisted-settlement
18
18
  // acknowledgement key (#341).
19
19
  import { generateHarnessToolCallId } from "@leanandmean/agent";
20
- import { clampThinkingLevel, cleanupSessionResources, flattenSystemPrompt, getSupportedThinkingLevels, isContextOverflow, modelsAreEqual, resetApiProviders, } from "@leanandmean/ai";
20
+ import { clampThinkingLevel, cleanupSessionResources, flattenSystemPrompt, getContextWindowBudget, getSupportedThinkingLevels, isContextOverflow, modelsAreEqual, resetApiProviders, } from "@leanandmean/ai";
21
21
  import { theme } from "../modes/interactive/theme/theme.js";
22
22
  import { stripFrontmatter } from "../utils/frontmatter.js";
23
23
  import { sleep } from "../utils/sleep.js";
@@ -1602,7 +1602,8 @@ export class AgentSession {
1602
1602
  // Skip if message was aborted (user cancelled) - unless skipAbortedCheck is false
1603
1603
  if (skipAbortedCheck && assistantMessage.stopReason === "aborted")
1604
1604
  return;
1605
- const contextWindow = this.model?.contextWindow ?? 0;
1605
+ // SCRAMJET-DIVERGENCE: operational context checks use the provider budget, not advertised capacity.
1606
+ const contextWindow = this.model ? getContextWindowBudget(this.model) : 0;
1606
1607
  // Skip overflow check if the message came from a different model.
1607
1608
  // This handles the case where user switched from a smaller-context model (e.g. opus)
1608
1609
  // to a larger-context model (e.g. codex) - the overflow error from the old model
@@ -2158,7 +2159,8 @@ export class AgentSession {
2158
2159
  if (message.stopReason !== "error" || !message.errorMessage)
2159
2160
  return false;
2160
2161
  // Context overflow is handled by compaction, not retry
2161
- const contextWindow = this.model?.contextWindow ?? 0;
2162
+ // SCRAMJET-DIVERGENCE: retry classification uses the provider's operational context budget.
2163
+ const contextWindow = this.model ? getContextWindowBudget(this.model) : 0;
2162
2164
  if (isContextOverflow(message, contextWindow))
2163
2165
  return false;
2164
2166
  const err = message.errorMessage;
@@ -2628,7 +2630,8 @@ export class AgentSession {
2628
2630
  if (!model)
2629
2631
  return undefined;
2630
2632
  const contextWindow = model.contextWindow ?? 0;
2631
- if (contextWindow <= 0)
2633
+ const contextWindowBudget = getContextWindowBudget(model);
2634
+ if (contextWindow <= 0 || contextWindowBudget <= 0)
2632
2635
  return undefined;
2633
2636
  // After compaction, the last assistant usage reflects pre-compaction context size.
2634
2637
  // We can only trust usage from an assistant that responded after the latest compaction.
@@ -2653,14 +2656,15 @@ export class AgentSession {
2653
2656
  }
2654
2657
  }
2655
2658
  if (!hasPostCompactionUsage) {
2656
- return { tokens: null, contextWindow, percent: null };
2659
+ return { tokens: null, contextWindow, contextWindowBudget, percent: null };
2657
2660
  }
2658
2661
  }
2659
2662
  const estimate = estimateContextTokens(this.messages);
2660
- const percent = (estimate.tokens / contextWindow) * 100;
2663
+ const percent = (estimate.tokens / contextWindowBudget) * 100;
2661
2664
  return {
2662
2665
  tokens: estimate.tokens,
2663
2666
  contextWindow,
2667
+ contextWindowBudget,
2664
2668
  percent,
2665
2669
  };
2666
2670
  }