@dreb/coding-agent 2.66.3 → 2.68.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 +4 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/config.d.ts +12 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -4
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +5 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +16 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/daily-cost-tracker.d.ts +22 -6
- package/dist/core/daily-cost-tracker.d.ts.map +1 -1
- package/dist/core/daily-cost-tracker.js +117 -47
- package/dist/core/daily-cost-tracker.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +10 -2
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +17 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +2 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +32 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +234 -108
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +4 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +4 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/subagent-session-cost-tracker.d.ts +22 -0
- package/dist/core/subagent-session-cost-tracker.d.ts.map +1 -0
- package/dist/core/subagent-session-cost-tracker.js +94 -0
- package/dist/core/subagent-session-cost-tracker.js.map +1 -0
- package/dist/core/tools/subagent.d.ts +14 -8
- package/dist/core/tools/subagent.d.ts.map +1 -1
- package/dist/core/tools/subagent.js +145 -71
- package/dist/core/tools/subagent.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +16 -7
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +8 -2
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +5 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +7 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +3 -2
- package/dist/modes/rpc/rpc-client.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 +34 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/dashboard.md +27 -15
- package/docs/rpc.md +9 -5
- package/docs/session.md +16 -7
- package/docs/settings.md +17 -5
- package/docs/skills.md +1 -1
- package/package.json +1 -1
- package/skills/model-routing-guide/SKILL.md +10 -5
|
@@ -22,6 +22,7 @@ import { parseModelPattern, resolveModelScopePatterns } from "../../core/model-r
|
|
|
22
22
|
import { takeOverStdout, writeRawStdout } from "../../core/output-guard.js";
|
|
23
23
|
import { SessionManager } from "../../core/session-manager.js";
|
|
24
24
|
import { BUILTIN_SLASH_COMMANDS, parseBuiltinSlashCommand } from "../../core/slash-commands.js";
|
|
25
|
+
import { SubagentSessionCostTracker } from "../../core/subagent-session-cost-tracker.js";
|
|
25
26
|
import { TabTitleGenerator } from "../../core/tab-title.js";
|
|
26
27
|
import { validateThinkingLevelForModel } from "../../core/thinking.js";
|
|
27
28
|
import { resolveToCwd } from "../../core/tools/path-utils.js";
|
|
@@ -247,9 +248,9 @@ export async function deleteSessionForRpc(sessionManager, sessionPath) {
|
|
|
247
248
|
}
|
|
248
249
|
return { ok: true, method: result.method };
|
|
249
250
|
}
|
|
250
|
-
/** Handle
|
|
251
|
-
export async function listAllSessionsForRpc() {
|
|
252
|
-
const sessions = await SessionManager.listAll();
|
|
251
|
+
/** Handle `list_all_sessions` using a custom flat store when one is active. */
|
|
252
|
+
export async function listAllSessionsForRpc(customDir) {
|
|
253
|
+
const sessions = customDir !== undefined ? await SessionManager.listAllFromDir(customDir) : await SessionManager.listAll();
|
|
253
254
|
return sessions.map(toRpcSessionInfo);
|
|
254
255
|
}
|
|
255
256
|
/**
|
|
@@ -1433,7 +1434,7 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1433
1434
|
return { id, type: "response", command, success: false, error: message };
|
|
1434
1435
|
};
|
|
1435
1436
|
if (session.sessionFile && session.messages.length > 0) {
|
|
1436
|
-
const rehydratedCount = rehydrateBackgroundAgentsFromDisk(session.sessionFile);
|
|
1437
|
+
const rehydratedCount = rehydrateBackgroundAgentsFromDisk(session.sessionFile, session.subagentSessionDiscoveryRoots);
|
|
1437
1438
|
if (rehydratedCount > 0) {
|
|
1438
1439
|
console.error(`[rpc] Rehydrated ${rehydratedCount} background subagent${rehydratedCount === 1 ? "" : "s"} from disk`);
|
|
1439
1440
|
}
|
|
@@ -1446,6 +1447,9 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1446
1447
|
let shutdownRequested = false;
|
|
1447
1448
|
let dailyCostTracker;
|
|
1448
1449
|
let dailyCostTrackerPrimed = false;
|
|
1450
|
+
let subagentSessionCostTracker;
|
|
1451
|
+
let subagentCostGeneration = 0;
|
|
1452
|
+
let refreshedSubagentCostGeneration = -1;
|
|
1449
1453
|
// Extension UI context uses the RPC protocol; built by a module-scope
|
|
1450
1454
|
// factory so the dialog round trip is unit-testable (see createRpcExtensionUIContext).
|
|
1451
1455
|
const createExtensionUIContext = () => createRpcExtensionUIContext(output, pendingExtensionRequests, () => void session.abort());
|
|
@@ -1487,13 +1491,13 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1487
1491
|
output({ type: "extension_error", extensionPath: err.extensionPath, event: err.event, error: err.error });
|
|
1488
1492
|
},
|
|
1489
1493
|
});
|
|
1490
|
-
const
|
|
1494
|
+
const getDailyCostBreakdown = async () => {
|
|
1491
1495
|
dailyCostTracker ??= new DailyCostTracker();
|
|
1492
1496
|
if (!dailyCostTrackerPrimed) {
|
|
1493
1497
|
await dailyCostTracker.refresh();
|
|
1494
1498
|
dailyCostTrackerPrimed = true;
|
|
1495
1499
|
}
|
|
1496
|
-
return dailyCostTracker.
|
|
1500
|
+
return dailyCostTracker.getDailyCostBreakdown();
|
|
1497
1501
|
};
|
|
1498
1502
|
const cwd = session.cwd;
|
|
1499
1503
|
const tabTitleSettings = session.settingsManager.getTabTitleSettings();
|
|
@@ -1533,6 +1537,10 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1533
1537
|
const dashboardEventProjector = session.uiType === "dashboard" ? createDashboardRpcEventProjector() : undefined;
|
|
1534
1538
|
// Output all agent events as JSON
|
|
1535
1539
|
session.subscribe((event) => {
|
|
1540
|
+
if (event.type === "background_agent_end") {
|
|
1541
|
+
// Force the next stats request to await a fresh per-session cost scan.
|
|
1542
|
+
subagentCostGeneration++;
|
|
1543
|
+
}
|
|
1536
1544
|
if (tabTitleGenerator && !session.sessionName) {
|
|
1537
1545
|
if (event.type === "tool_execution_end") {
|
|
1538
1546
|
tabTitleGenerator.onToolEnd({
|
|
@@ -1650,7 +1658,12 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1650
1658
|
return success(id, "get_git_branch", { branch: getGitBranch(session.cwd) });
|
|
1651
1659
|
}
|
|
1652
1660
|
case "get_daily_cost": {
|
|
1653
|
-
|
|
1661
|
+
const breakdown = await getDailyCostBreakdown();
|
|
1662
|
+
return success(id, "get_daily_cost", {
|
|
1663
|
+
cost: breakdown.total,
|
|
1664
|
+
main: breakdown.main,
|
|
1665
|
+
subagent: breakdown.subagent,
|
|
1666
|
+
});
|
|
1654
1667
|
}
|
|
1655
1668
|
// =================================================================
|
|
1656
1669
|
// Model
|
|
@@ -1791,8 +1804,17 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1791
1804
|
// Session
|
|
1792
1805
|
// =================================================================
|
|
1793
1806
|
case "get_session_stats": {
|
|
1807
|
+
subagentSessionCostTracker ??= new SubagentSessionCostTracker();
|
|
1808
|
+
if (refreshedSubagentCostGeneration !== subagentCostGeneration) {
|
|
1809
|
+
const refreshGeneration = subagentCostGeneration;
|
|
1810
|
+
await subagentSessionCostTracker.refresh();
|
|
1811
|
+
refreshedSubagentCostGeneration = refreshGeneration;
|
|
1812
|
+
}
|
|
1794
1813
|
const stats = session.getSessionStats();
|
|
1795
|
-
return success(id, "get_session_stats",
|
|
1814
|
+
return success(id, "get_session_stats", {
|
|
1815
|
+
...stats,
|
|
1816
|
+
subagentCost: subagentSessionCostTracker.getCost(),
|
|
1817
|
+
});
|
|
1796
1818
|
}
|
|
1797
1819
|
case "get_performance_stats": {
|
|
1798
1820
|
return success(id, "get_performance_stats", getPerformanceStatsData(session));
|
|
@@ -1874,7 +1896,9 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1874
1896
|
return success(id, "list_sessions", { sessions: sessions.map(toRpcSessionInfo) });
|
|
1875
1897
|
}
|
|
1876
1898
|
case "list_all_sessions": {
|
|
1877
|
-
return success(id, "list_all_sessions", {
|
|
1899
|
+
return success(id, "list_all_sessions", {
|
|
1900
|
+
sessions: await listAllSessionsForRpc(session.sessionManager.getCustomSessionInventoryRoot()),
|
|
1901
|
+
});
|
|
1878
1902
|
}
|
|
1879
1903
|
// =================================================================
|
|
1880
1904
|
// Background agents
|
|
@@ -1966,6 +1990,7 @@ export async function runRpcMode(session, modelFallbackMessage) {
|
|
|
1966
1990
|
await currentRunner.emit({ type: "session_shutdown" });
|
|
1967
1991
|
}
|
|
1968
1992
|
dailyCostTracker?.dispose();
|
|
1993
|
+
subagentSessionCostTracker?.dispose();
|
|
1969
1994
|
detachInput();
|
|
1970
1995
|
process.stdin.pause();
|
|
1971
1996
|
process.exit(0);
|