@dreb/coding-agent 2.65.0 → 2.66.1

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 (39) hide show
  1. package/README.md +4 -0
  2. package/dist/core/agent-session.d.ts.map +1 -1
  3. package/dist/core/agent-session.js +15 -5
  4. package/dist/core/agent-session.js.map +1 -1
  5. package/dist/core/extensions/types.d.ts +3 -5
  6. package/dist/core/extensions/types.d.ts.map +1 -1
  7. package/dist/core/extensions/types.js.map +1 -1
  8. package/dist/core/model-registry.d.ts.map +1 -1
  9. package/dist/core/model-registry.js +12 -0
  10. package/dist/core/model-registry.js.map +1 -1
  11. package/dist/core/settings-manager.d.ts +9 -0
  12. package/dist/core/settings-manager.d.ts.map +1 -1
  13. package/dist/core/settings-manager.js +8 -0
  14. package/dist/core/settings-manager.js.map +1 -1
  15. package/dist/core/tools/subagent.d.ts +10 -1
  16. package/dist/core/tools/subagent.d.ts.map +1 -1
  17. package/dist/core/tools/subagent.js +59 -7
  18. package/dist/core/tools/subagent.js.map +1 -1
  19. package/dist/modes/interactive/components/settings-selector.d.ts +3 -0
  20. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  21. package/dist/modes/interactive/components/settings-selector.js +10 -0
  22. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  23. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  24. package/dist/modes/interactive/interactive-mode.js +6 -1
  25. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  26. package/dist/modes/rpc/rpc-mode.d.ts +2 -2
  27. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  28. package/dist/modes/rpc/rpc-mode.js +6 -0
  29. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  30. package/dist/modes/rpc/rpc-types.d.ts +4 -0
  31. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  32. package/dist/modes/rpc/rpc-types.js.map +1 -1
  33. package/docs/agent-models.md +14 -0
  34. package/docs/compaction.md +1 -1
  35. package/docs/extensions.md +2 -4
  36. package/docs/models.md +4 -2
  37. package/docs/rpc.md +6 -2
  38. package/docs/settings.md +1 -0
  39. package/package.json +1 -1
@@ -15,7 +15,7 @@
15
15
  import { copyFileSync, existsSync, mkdirSync, realpathSync, writeFileSync } from "node:fs";
16
16
  import { tmpdir } from "node:os";
17
17
  import { basename, dirname, join, resolve } from "node:path";
18
- import { isContextOverflow, modelsAreEqual, resetApiProviders, supportsMax, supportsXhigh } from "@dreb/ai";
18
+ import { isContextOverflow, isOutputLimitExhaustion, modelsAreEqual, resetApiProviders, supportsMax, supportsXhigh, } from "@dreb/ai";
19
19
  import { getDocsPath } from "../config.js";
20
20
  import { theme } from "../modes/interactive/theme/theme.js";
21
21
  import { sleep } from "../utils/sleep.js";
@@ -1036,8 +1036,7 @@ export class AgentSession {
1036
1036
  type: "length_retry",
1037
1037
  attempt: event.attempt,
1038
1038
  maxAttempts: event.maxAttempts,
1039
- previousMaxTokens: event.previousMaxTokens,
1040
- nextMaxTokens: event.nextMaxTokens,
1039
+ maxTokens: event.maxTokens,
1041
1040
  discardedPartial: event.discardedPartial,
1042
1041
  };
1043
1042
  await this._extensionRunner.emit(extensionEvent);
@@ -2209,8 +2208,14 @@ export class AgentSession {
2209
2208
  if (assistantIsFromBeforeCompaction) {
2210
2209
  return;
2211
2210
  }
2212
- // Case 1: Overflow - LLM returned context overflow error
2213
- if (sameModel && isContextOverflow(assistantMessage, contextWindow)) {
2211
+ // Case 1: Overflow - LLM returned a context error, or exhausted its
2212
+ // configured output limit when that output could not fit beside the request.
2213
+ const estimatedInputTokens = estimateContextTokens(this.agent.state.messages.slice(0, -1)).tokens;
2214
+ if (sameModel &&
2215
+ isContextOverflow(assistantMessage, contextWindow, {
2216
+ maxOutputTokens: this.model?.maxTokens,
2217
+ estimatedInputTokens,
2218
+ })) {
2214
2219
  // K3 auto context tier: an overflow in the 256k tier upgrades to the
2215
2220
  // 1M tier instead of compacting — the Kimi backend grows the prompt
2216
2221
  // cache seamlessly. This runs even when compaction is disabled since
@@ -2247,6 +2252,10 @@ export class AgentSession {
2247
2252
  await this._trackAutoCompaction("overflow", true, requestWillFollow);
2248
2253
  return;
2249
2254
  }
2255
+ // A genuine output-limit exhaustion cannot be fixed by discarding conversation
2256
+ // history. Only the context-constrained case above enters compact-and-retry.
2257
+ if (isOutputLimitExhaustion(assistantMessage))
2258
+ return;
2250
2259
  // Case 2: Threshold - context is getting large
2251
2260
  // For error messages (no usage data), estimate from last successful response.
2252
2261
  // This ensures sessions that hit persistent API errors (e.g. 529) can still compact.
@@ -2822,6 +2831,7 @@ export class AgentSession {
2822
2831
  parentModel: () => this.model?.id,
2823
2832
  parentSessionFile: () => this.sessionFile,
2824
2833
  parentSessionId: () => this.sessionId,
2834
+ singleModelMode: () => this.settingsManager.getSingleModelMode(),
2825
2835
  modelRegistry: this._modelRegistry,
2826
2836
  getAgentModelsForAgent: (name) => this.settingsManager?.getAgentModelsForAgent(name),
2827
2837
  defaultThinkingLevel: () => this.settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL,