@dreb/coding-agent 2.45.3 → 2.46.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.
- package/README.md +7 -3
- package/dist/core/agent-session.d.ts +10 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +75 -15
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/context-buffer.d.ts +2 -0
- package/dist/core/context-buffer.d.ts.map +1 -1
- package/dist/core/context-buffer.js +8 -0
- package/dist/core/context-buffer.js.map +1 -1
- package/dist/core/dispatch-arbiter.d.ts +94 -0
- package/dist/core/dispatch-arbiter.d.ts.map +1 -0
- package/dist/core/dispatch-arbiter.js +316 -0
- package/dist/core/dispatch-arbiter.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/git-repo-state.d.ts +2 -0
- package/dist/core/git-repo-state.d.ts.map +1 -1
- package/dist/core/git-repo-state.js +19 -0
- package/dist/core/git-repo-state.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -0
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +49 -25
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-routing-guide.d.ts +15 -0
- package/dist/core/model-routing-guide.d.ts.map +1 -0
- package/dist/core/model-routing-guide.js +186 -0
- package/dist/core/model-routing-guide.js.map +1 -0
- package/dist/core/settings-manager.d.ts +18 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +33 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/thinking.d.ts +14 -0
- package/dist/core/thinking.d.ts.map +1 -1
- package/dist/core/thinking.js +35 -2
- package/dist/core/thinking.js.map +1 -1
- package/dist/core/tools/index.d.ts +7 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/subagent.d.ts +53 -6
- package/dist/core/tools/subagent.d.ts.map +1 -1
- package/dist/core/tools/subagent.js +343 -53
- package/dist/core/tools/subagent.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +99 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +75 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +2 -2
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +65 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +8 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/agent-models.md +33 -1
- package/docs/custom-provider.md +22 -8
- package/docs/dashboard.md +8 -2
- package/docs/extensions.md +1 -1
- package/docs/json.md +31 -5
- package/docs/models.md +39 -1
- package/docs/rpc.md +60 -9
- package/docs/session.md +7 -1
- package/docs/settings.md +33 -1
- package/docs/skills.md +38 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +7 -3
- package/package.json +1 -1
- package/skills/model-routing-guide/SKILL.md +182 -0
|
@@ -14,17 +14,19 @@ import { parseSkillBlock } from "../../core/agent-session.js";
|
|
|
14
14
|
import { BuddyManager, checkOllama } from "../../core/buddy/buddy-manager.js";
|
|
15
15
|
import { Rarity, Stat } from "../../core/buddy/buddy-types.js";
|
|
16
16
|
import { BuddyController } from "../../core/buddy/index.js";
|
|
17
|
+
import { formatDispatchArbitrationRecord } from "../../core/dispatch-arbiter.js";
|
|
17
18
|
import { acquireDreamLock, buildDreamPrompt, cleanupDreamTmpDirs, parseDreamCommand, performDreamBackup, pruneOldBackups, resolveDreamContext, validateArchivePath, validateMemoryLinks, } from "../../core/dream.js";
|
|
18
19
|
import { FooterDataProvider } from "../../core/footer-data-provider.js";
|
|
19
20
|
import { KeybindingsManager } from "../../core/keybindings.js";
|
|
20
21
|
import { createCompactionSummaryMessage } from "../../core/messages.js";
|
|
21
22
|
import { findExactModelReferenceMatch, resolveModelScope } from "../../core/model-resolver.js";
|
|
23
|
+
import { loadAndValidateModelRoutingGuide } from "../../core/model-routing-guide.js";
|
|
22
24
|
import { DefaultPackageManager } from "../../core/package-manager.js";
|
|
23
25
|
import { SessionManager } from "../../core/session-manager.js";
|
|
24
26
|
import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
|
|
25
27
|
import { restoreStderr, takeOverStderr } from "../../core/stderr-guard.js";
|
|
26
28
|
import { TabTitleGenerator } from "../../core/tab-title.js";
|
|
27
|
-
import { resolveThinkingDisplay } from "../../core/thinking.js";
|
|
29
|
+
import { resolveThinkingDisplay, validateThinkingLevelForModel } from "../../core/thinking.js";
|
|
28
30
|
import { resolveToCwd } from "../../core/tools/path-utils.js";
|
|
29
31
|
import { abortBackgroundAgents, discoverAgentTypes, getRunningBackgroundAgents } from "../../core/tools/subagent.js";
|
|
30
32
|
import { copyToClipboard } from "../../utils/clipboard.js";
|
|
@@ -2295,6 +2297,15 @@ export class InteractiveMode {
|
|
|
2295
2297
|
this.showWarning(`Response truncated, retrying with larger token budget (${event.attempt}/${event.maxAttempts})…`);
|
|
2296
2298
|
break;
|
|
2297
2299
|
}
|
|
2300
|
+
case "subagent_arbitration": {
|
|
2301
|
+
const message = formatDispatchArbitrationRecord(event);
|
|
2302
|
+
if (event.status === "failure")
|
|
2303
|
+
this.showWarning(message);
|
|
2304
|
+
else
|
|
2305
|
+
this.showStatus(message);
|
|
2306
|
+
this.updateBackgroundAgentStatus();
|
|
2307
|
+
break;
|
|
2308
|
+
}
|
|
2298
2309
|
case "background_agent_start":
|
|
2299
2310
|
case "background_agent_end": {
|
|
2300
2311
|
this.updateBackgroundAgentStatus();
|
|
@@ -3098,6 +3109,67 @@ export class InteractiveMode {
|
|
|
3098
3109
|
this.ui.setFocus(focus);
|
|
3099
3110
|
this.ui.requestRender();
|
|
3100
3111
|
}
|
|
3112
|
+
async handleSubagentArbiterSettingsChange(settings) {
|
|
3113
|
+
if (this.settingsManager.hasGlobalSettingsLoadError()) {
|
|
3114
|
+
this.showError("Cannot write Dispatch Arbiter settings: the global settings file failed to load. Fix or remove the corrupt settings.json first.");
|
|
3115
|
+
return false;
|
|
3116
|
+
}
|
|
3117
|
+
if (settings.enabled) {
|
|
3118
|
+
if (!settings.model) {
|
|
3119
|
+
this.showError("Choose an exact Dispatch Arbiter model before enabling it.");
|
|
3120
|
+
return false;
|
|
3121
|
+
}
|
|
3122
|
+
const slash = settings.model.indexOf("/");
|
|
3123
|
+
const arbiterModel = slash > 0
|
|
3124
|
+
? this.session.modelRegistry.find(settings.model.slice(0, slash), settings.model.slice(slash + 1))
|
|
3125
|
+
: undefined;
|
|
3126
|
+
if (!arbiterModel) {
|
|
3127
|
+
this.showError(`Dispatch Arbiter model "${settings.model}" is not available.`);
|
|
3128
|
+
return false;
|
|
3129
|
+
}
|
|
3130
|
+
const thinking = settings.thinking ?? "off";
|
|
3131
|
+
const thinkingValidation = validateThinkingLevelForModel(arbiterModel, thinking);
|
|
3132
|
+
if (!thinkingValidation.ok) {
|
|
3133
|
+
this.showError(thinkingValidation.error);
|
|
3134
|
+
return false;
|
|
3135
|
+
}
|
|
3136
|
+
try {
|
|
3137
|
+
loadAndValidateModelRoutingGuide(settings.guidePath, process.cwd(), this.session.scopedModels.map(({ model }) => `${model.provider}/${model.id}`));
|
|
3138
|
+
}
|
|
3139
|
+
catch (error) {
|
|
3140
|
+
this.showError(`Dispatch Arbiter is not ready: ${error instanceof Error ? error.message : String(error)}`);
|
|
3141
|
+
return false;
|
|
3142
|
+
}
|
|
3143
|
+
}
|
|
3144
|
+
this.settingsManager.drainErrors();
|
|
3145
|
+
try {
|
|
3146
|
+
this.settingsManager.setGlobalSubagentArbiterSettings(settings);
|
|
3147
|
+
await this.settingsManager.flush();
|
|
3148
|
+
}
|
|
3149
|
+
catch (error) {
|
|
3150
|
+
try {
|
|
3151
|
+
this.settingsManager.reload();
|
|
3152
|
+
}
|
|
3153
|
+
catch { }
|
|
3154
|
+
this.showError(`Failed to persist Dispatch Arbiter settings: ${error instanceof Error ? error.message : String(error)}`);
|
|
3155
|
+
return false;
|
|
3156
|
+
}
|
|
3157
|
+
const writeErrors = this.settingsManager.drainErrors();
|
|
3158
|
+
if (writeErrors.length > 0) {
|
|
3159
|
+
try {
|
|
3160
|
+
this.settingsManager.reload();
|
|
3161
|
+
}
|
|
3162
|
+
catch { }
|
|
3163
|
+
this.showError(`Failed to persist Dispatch Arbiter settings: ${writeErrors
|
|
3164
|
+
.map((entry) => `${entry.scope}: ${entry.error.message}`)
|
|
3165
|
+
.join("; ")}`);
|
|
3166
|
+
return false;
|
|
3167
|
+
}
|
|
3168
|
+
this.showStatus(settings.enabled
|
|
3169
|
+
? `Dispatch Arbiter enabled (${settings.model}, thinking ${settings.thinking ?? "off"}).`
|
|
3170
|
+
: "Dispatch Arbiter disabled.");
|
|
3171
|
+
return true;
|
|
3172
|
+
}
|
|
3101
3173
|
showSettingsSelector() {
|
|
3102
3174
|
this.showSelector((done) => {
|
|
3103
3175
|
// Discover agent types for agent models section
|
|
@@ -3137,6 +3209,7 @@ export class InteractiveMode {
|
|
|
3137
3209
|
agentModels: this.settingsManager.getAgentModels(),
|
|
3138
3210
|
agentNames: agentNames,
|
|
3139
3211
|
availableModelIds,
|
|
3212
|
+
subagentArbiter: this.settingsManager.getGlobalSubagentArbiterSettings() ?? {},
|
|
3140
3213
|
}, {
|
|
3141
3214
|
onAutoCompactChange: (enabled) => {
|
|
3142
3215
|
this.session.setAutoCompactionEnabled(enabled);
|
|
@@ -3251,6 +3324,7 @@ export class InteractiveMode {
|
|
|
3251
3324
|
this.editor.setAutocompleteMaxVisible(maxVisible);
|
|
3252
3325
|
}
|
|
3253
3326
|
},
|
|
3327
|
+
onSubagentArbiterChange: (settings) => this.handleSubagentArbiterSettingsChange(settings),
|
|
3254
3328
|
onAgentModelsChange: (agentName, models) => {
|
|
3255
3329
|
const shadowedByProject = this.settingsManager.hasProjectAgentModelOverride(agentName);
|
|
3256
3330
|
if (models.length > 0) {
|