duocode 1.2.0 → 1.2.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.
- package/dist/ast/locks.js +2 -1
- package/dist/ast/locks.js.map +1 -1
- package/dist/cli.js +14 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.js +54 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/duo.js +19 -19
- package/dist/commands/duo.js.map +1 -1
- package/dist/commands/github.js +15 -1
- package/dist/commands/github.js.map +1 -1
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.js +95 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config/loader.js +4 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/context/project_context.js +5 -0
- package/dist/context/project_context.js.map +1 -1
- package/dist/db/queries.d.ts +0 -2
- package/dist/db/queries.js +0 -10
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.d.ts +0 -6
- package/dist/db/schema.js +0 -15
- package/dist/db/schema.js.map +1 -1
- package/dist/duo/duo_orchestrator.js +1 -1
- package/dist/duo/duo_orchestrator.js.map +1 -1
- package/dist/duo/swarm_orchestrator.js +14 -6
- package/dist/duo/swarm_orchestrator.js.map +1 -1
- package/dist/github/mcp_client.js +8 -2
- package/dist/github/mcp_client.js.map +1 -1
- package/dist/orchestrator/intent_parser.d.ts +1 -1
- package/dist/orchestrator/intent_parser.js +15 -5
- package/dist/orchestrator/intent_parser.js.map +1 -1
- package/dist/orchestrator/task_runner.d.ts +0 -2
- package/dist/orchestrator/task_runner.js +85 -74
- package/dist/orchestrator/task_runner.js.map +1 -1
- package/dist/providers/anthropic.js +1 -1
- package/dist/providers/cost_tracker.js +28 -44
- package/dist/providers/cost_tracker.js.map +1 -1
- package/dist/providers/duo_pair_router.d.ts +1 -2
- package/dist/providers/duo_pair_router.js +1 -3
- package/dist/providers/duo_pair_router.js.map +1 -1
- package/dist/providers/factory.js +5 -5
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/openrouter.js +38 -29
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/router.js +106 -103
- package/dist/providers/router.js.map +1 -1
- package/dist/setup/browser.js +6 -6
- package/dist/setup/browser.js.map +1 -1
- package/dist/tools/agent_loop.d.ts +2 -0
- package/dist/tools/agent_loop.js +68 -19
- package/dist/tools/agent_loop.js.map +1 -1
- package/dist/tools/definitions.d.ts +2 -1
- package/dist/tools/definitions.js +23 -1
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/executor.js +121 -29
- package/dist/tools/executor.js.map +1 -1
- package/dist/tools/permissions.js +14 -4
- package/dist/tools/permissions.js.map +1 -1
- package/dist/ui/banner.d.ts +1 -0
- package/dist/ui/banner.js +18 -1
- package/dist/ui/banner.js.map +1 -1
- package/dist/ui/callbacks.js +5 -2
- package/dist/ui/callbacks.js.map +1 -1
- package/dist/ui/dashboard.js +2 -1
- package/dist/ui/dashboard.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type Database from "better-sqlite3";
|
|
2
2
|
import { AstNegotiationEngine, type ConflictSide } from "../negotiation/protocol.js";
|
|
3
3
|
import type { SupportedLanguage } from "../ast/parser.js";
|
|
4
|
-
import type { ProviderRouter } from "../providers/router.js";
|
|
5
4
|
export interface ExecuteTaskNegotiationInput {
|
|
6
5
|
taskId: string;
|
|
7
6
|
filePath: string;
|
|
@@ -35,7 +34,6 @@ export declare class TaskExecutionService {
|
|
|
35
34
|
private readonly contextHub;
|
|
36
35
|
constructor(db: Database.Database, params?: {
|
|
37
36
|
negotiationEngine?: AstNegotiationEngine;
|
|
38
|
-
providerRouter?: ProviderRouter;
|
|
39
37
|
});
|
|
40
38
|
executeNegotiation(input: ExecuteTaskNegotiationInput): Promise<TaskExecutionResult>;
|
|
41
39
|
recordProviderUsage(input: {
|
|
@@ -20,6 +20,7 @@ export class TaskExecutionService {
|
|
|
20
20
|
}
|
|
21
21
|
updateTaskStatus(this.db, input.taskId, "executing");
|
|
22
22
|
const negotiationId = randomUUID();
|
|
23
|
+
let session = null;
|
|
23
24
|
createNegotiationSession(this.db, {
|
|
24
25
|
id: negotiationId,
|
|
25
26
|
taskId: input.taskId,
|
|
@@ -66,85 +67,95 @@ export class TaskExecutionService {
|
|
|
66
67
|
const rightRationale = [input.right.rationale, ...rightShared.map((ctx) => `Peer context: ${ctx}`)]
|
|
67
68
|
.filter(Boolean)
|
|
68
69
|
.join(" | ");
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
language: input.language,
|
|
72
|
-
filePath: input.filePath,
|
|
73
|
-
baseSource: input.baseSource,
|
|
74
|
-
config: input.negotiationConfig,
|
|
75
|
-
left: {
|
|
76
|
-
...input.left,
|
|
77
|
-
rationale: leftRationale || input.left.rationale,
|
|
78
|
-
},
|
|
79
|
-
right: {
|
|
80
|
-
...input.right,
|
|
81
|
-
rationale: rightRationale || input.right.rationale,
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
for (const conflict of session.conflicts) {
|
|
85
|
-
createNegotiationConflict(this.db, {
|
|
70
|
+
try {
|
|
71
|
+
session = await this.negotiation.negotiate({
|
|
86
72
|
negotiationId,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
73
|
+
language: input.language,
|
|
74
|
+
filePath: input.filePath,
|
|
75
|
+
baseSource: input.baseSource,
|
|
76
|
+
config: input.negotiationConfig,
|
|
77
|
+
left: {
|
|
78
|
+
...input.left,
|
|
79
|
+
rationale: leftRationale || input.left.rationale,
|
|
80
|
+
},
|
|
81
|
+
right: {
|
|
82
|
+
...input.right,
|
|
83
|
+
rationale: rightRationale || input.right.rationale,
|
|
84
|
+
},
|
|
90
85
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
86
|
+
for (const conflict of session.conflicts) {
|
|
87
|
+
createNegotiationConflict(this.db, {
|
|
88
|
+
negotiationId,
|
|
89
|
+
ownershipPath: conflict.path,
|
|
90
|
+
leftType: conflict.leftType,
|
|
91
|
+
rightType: conflict.rightType,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
for (const round of session.rounds) {
|
|
95
|
+
createNegotiationRound(this.db, {
|
|
96
|
+
negotiationId,
|
|
97
|
+
roundNumber: round.round,
|
|
98
|
+
leftScore: round.leftScore,
|
|
99
|
+
rightScore: round.rightScore,
|
|
100
|
+
consensus: round.consensus,
|
|
101
|
+
reasoning: round.reasoning,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
updateNegotiationSessionResolution(this.db, {
|
|
105
|
+
id: negotiationId,
|
|
106
|
+
phase: session.phase === "resolved" ? "resolved" : "escalated",
|
|
107
|
+
resolutionMethod: session.resolution.method,
|
|
108
|
+
winnerAgentId: session.resolution.winnerAgentId,
|
|
109
|
+
confidence: session.resolution.confidence,
|
|
110
|
+
explanation: session.resolution.explanation,
|
|
111
|
+
mergedSource: session.resolution.mergedSource,
|
|
112
|
+
});
|
|
113
|
+
const finalStatus = session.resolution.method === "escalated" ? "failed" : "completed";
|
|
114
|
+
updateTaskStatus(this.db, input.taskId, finalStatus);
|
|
115
|
+
const consensusTrend = this.computeConsensusTrend(session.rounds);
|
|
116
|
+
const recommendedAction = this.recommendNextAction({
|
|
117
|
+
resolutionMethod: session.resolution.method,
|
|
118
|
+
conflictCount: session.conflicts.length,
|
|
119
|
+
confidence: session.resolution.confidence,
|
|
120
|
+
roundCount: session.rounds.length,
|
|
121
|
+
consensusTrend,
|
|
122
|
+
});
|
|
123
|
+
createNegotiationLearning(this.db, {
|
|
94
124
|
negotiationId,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
125
|
+
taskId: input.taskId,
|
|
126
|
+
filePath: input.filePath,
|
|
127
|
+
resolutionMethod: session.resolution.method,
|
|
128
|
+
winnerAgentId: session.resolution.winnerAgentId,
|
|
129
|
+
confidence: session.resolution.confidence,
|
|
130
|
+
conflictCount: session.conflicts.length,
|
|
131
|
+
roundCount: session.rounds.length,
|
|
132
|
+
consensusTrend,
|
|
133
|
+
recommendedAction,
|
|
100
134
|
});
|
|
135
|
+
await this.negotiation.releaseSessionLocks(session);
|
|
136
|
+
return {
|
|
137
|
+
taskId: input.taskId,
|
|
138
|
+
negotiationId,
|
|
139
|
+
finalStatus,
|
|
140
|
+
resolutionMethod: session.resolution.method,
|
|
141
|
+
mergedSource: session.resolution.mergedSource,
|
|
142
|
+
confidence: session.resolution.confidence,
|
|
143
|
+
winnerAgentId: session.resolution.winnerAgentId,
|
|
144
|
+
explanation: session.resolution.explanation,
|
|
145
|
+
conflictCount: session.conflicts.length,
|
|
146
|
+
roundCount: session.rounds.length,
|
|
147
|
+
consensusTrend,
|
|
148
|
+
recommendedAction,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
// Ensure task status reflects failure and locks are released on any error
|
|
153
|
+
updateTaskStatus(this.db, input.taskId, "failed");
|
|
154
|
+
if (session) {
|
|
155
|
+
await this.negotiation.releaseSessionLocks(session).catch(() => { });
|
|
156
|
+
}
|
|
157
|
+
throw err;
|
|
101
158
|
}
|
|
102
|
-
updateNegotiationSessionResolution(this.db, {
|
|
103
|
-
id: negotiationId,
|
|
104
|
-
phase: session.phase === "resolved" ? "resolved" : "escalated",
|
|
105
|
-
resolutionMethod: session.resolution.method,
|
|
106
|
-
winnerAgentId: session.resolution.winnerAgentId,
|
|
107
|
-
confidence: session.resolution.confidence,
|
|
108
|
-
explanation: session.resolution.explanation,
|
|
109
|
-
mergedSource: session.resolution.mergedSource,
|
|
110
|
-
});
|
|
111
|
-
const finalStatus = session.resolution.method === "escalated" ? "failed" : "completed";
|
|
112
|
-
updateTaskStatus(this.db, input.taskId, finalStatus);
|
|
113
|
-
const consensusTrend = this.computeConsensusTrend(session.rounds);
|
|
114
|
-
const recommendedAction = this.recommendNextAction({
|
|
115
|
-
resolutionMethod: session.resolution.method,
|
|
116
|
-
conflictCount: session.conflicts.length,
|
|
117
|
-
confidence: session.resolution.confidence,
|
|
118
|
-
roundCount: session.rounds.length,
|
|
119
|
-
consensusTrend,
|
|
120
|
-
});
|
|
121
|
-
createNegotiationLearning(this.db, {
|
|
122
|
-
negotiationId,
|
|
123
|
-
taskId: input.taskId,
|
|
124
|
-
filePath: input.filePath,
|
|
125
|
-
resolutionMethod: session.resolution.method,
|
|
126
|
-
winnerAgentId: session.resolution.winnerAgentId,
|
|
127
|
-
confidence: session.resolution.confidence,
|
|
128
|
-
conflictCount: session.conflicts.length,
|
|
129
|
-
roundCount: session.rounds.length,
|
|
130
|
-
consensusTrend,
|
|
131
|
-
recommendedAction,
|
|
132
|
-
});
|
|
133
|
-
await this.negotiation.releaseSessionLocks(session);
|
|
134
|
-
return {
|
|
135
|
-
taskId: input.taskId,
|
|
136
|
-
negotiationId,
|
|
137
|
-
finalStatus,
|
|
138
|
-
resolutionMethod: session.resolution.method,
|
|
139
|
-
mergedSource: session.resolution.mergedSource,
|
|
140
|
-
confidence: session.resolution.confidence,
|
|
141
|
-
winnerAgentId: session.resolution.winnerAgentId,
|
|
142
|
-
explanation: session.resolution.explanation,
|
|
143
|
-
conflictCount: session.conflicts.length,
|
|
144
|
-
roundCount: session.rounds.length,
|
|
145
|
-
consensusTrend,
|
|
146
|
-
recommendedAction,
|
|
147
|
-
};
|
|
148
159
|
}
|
|
149
160
|
recordProviderUsage(input) {
|
|
150
161
|
createProviderUsage(this.db, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task_runner.js","sourceRoot":"","sources":["../../src/orchestrator/task_runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAqB,MAAM,4BAA4B,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,kCAAkC,EAClC,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"task_runner.js","sourceRoot":"","sources":["../../src/orchestrator/task_runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +1,32 @@
|
|
|
1
1
|
export const DEFAULT_MODEL_PRICING = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
// OpenRouter models
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"qwen/
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
// Trending models (Feb 2026)
|
|
31
|
-
"minimax-m2.5": { inputPer1kUsd: 0.001, outputPer1kUsd: 0.005 },
|
|
32
|
-
"minimax/minimax-m2.5": { inputPer1kUsd: 0.001, outputPer1kUsd: 0.005 },
|
|
33
|
-
"minimax/minimax-m2.5-20260211": { inputPer1kUsd: 0.001, outputPer1kUsd: 0.005 },
|
|
34
|
-
"deepseek-v3.2": { inputPer1kUsd: 0.00027, outputPer1kUsd: 0.0011 },
|
|
35
|
-
"deepseek/deepseek-v3.2": { inputPer1kUsd: 0.00027, outputPer1kUsd: 0.0011 },
|
|
36
|
-
"deepseek/deepseek-v3.2-20251201": { inputPer1kUsd: 0.00027, outputPer1kUsd: 0.0011 },
|
|
37
|
-
"gemini-3-flash-preview": { inputPer1kUsd: 0.00015, outputPer1kUsd: 0.0006 },
|
|
38
|
-
"google/gemini-3-flash-preview": { inputPer1kUsd: 0.00015, outputPer1kUsd: 0.0006 },
|
|
39
|
-
"google/gemini-3-flash-preview-20251217": { inputPer1kUsd: 0.00015, outputPer1kUsd: 0.0006 },
|
|
40
|
-
"gpt-oss-120b": { inputPer1kUsd: 0.002, outputPer1kUsd: 0.008 },
|
|
41
|
-
"openai/gpt-oss-120b": { inputPer1kUsd: 0.002, outputPer1kUsd: 0.008 },
|
|
42
|
-
"grok-4.1-fast": { inputPer1kUsd: 0.005, outputPer1kUsd: 0.015 },
|
|
43
|
-
"x-ai/grok-4.1-fast": { inputPer1kUsd: 0.005, outputPer1kUsd: 0.015 },
|
|
44
|
-
"trinity-large-preview": { inputPer1kUsd: 0.0, outputPer1kUsd: 0.0 },
|
|
45
|
-
"arcee-ai/trinity-large-preview": { inputPer1kUsd: 0.0, outputPer1kUsd: 0.0 },
|
|
2
|
+
// ── Anthropic direct API ─────────────────────────────────────
|
|
3
|
+
// Prices per 1K tokens (source: Anthropic pricing page)
|
|
4
|
+
"claude-opus-4-6": { inputPer1kUsd: 0.015, outputPer1kUsd: 0.075, cacheReadInputPer1kUsd: 0.0015, cacheWriteInputPer1kUsd: 0.01875 },
|
|
5
|
+
"claude-sonnet-4-6": { inputPer1kUsd: 0.003, outputPer1kUsd: 0.015, cacheReadInputPer1kUsd: 0.0003, cacheWriteInputPer1kUsd: 0.00375 },
|
|
6
|
+
"claude-haiku-4-5-20251001": { inputPer1kUsd: 0.0008, outputPer1kUsd: 0.004, cacheReadInputPer1kUsd: 0.00008, cacheWriteInputPer1kUsd: 0.001 },
|
|
7
|
+
// ── OpenAI direct API ─────────────────────────────────────────
|
|
8
|
+
// Prices per 1K tokens (source: OpenAI pricing page)
|
|
9
|
+
"gpt-4o": { inputPer1kUsd: 0.0025, outputPer1kUsd: 0.01 },
|
|
10
|
+
"gpt-4o-mini": { inputPer1kUsd: 0.00015, outputPer1kUsd: 0.0006 },
|
|
11
|
+
// ── OpenRouter: Anthropic models (via OpenRouter) ─────────────
|
|
12
|
+
"anthropic/claude-opus-4.6": { inputPer1kUsd: 0.015, outputPer1kUsd: 0.075, cacheReadInputPer1kUsd: 0.0015, cacheWriteInputPer1kUsd: 0.01875 },
|
|
13
|
+
"anthropic/claude-sonnet-4.6": { inputPer1kUsd: 0.003, outputPer1kUsd: 0.015, cacheReadInputPer1kUsd: 0.0003, cacheWriteInputPer1kUsd: 0.00375 },
|
|
14
|
+
"anthropic/claude-haiku-4.5": { inputPer1kUsd: 0.0008, outputPer1kUsd: 0.004, cacheReadInputPer1kUsd: 0.00008, cacheWriteInputPer1kUsd: 0.001 },
|
|
15
|
+
// ── OpenRouter: OpenAI models (via OpenRouter) ────────────────
|
|
16
|
+
"openai/gpt-4o": { inputPer1kUsd: 0.0025, outputPer1kUsd: 0.01 },
|
|
17
|
+
"openai/gpt-4o-mini": { inputPer1kUsd: 0.00015, outputPer1kUsd: 0.0006 },
|
|
18
|
+
// ── OpenRouter-exclusive models ───────────────────────────────
|
|
19
|
+
"deepseek/deepseek-r1": { inputPer1kUsd: 0.00055, outputPer1kUsd: 0.00219 },
|
|
20
|
+
"deepseek/deepseek-v3": { inputPer1kUsd: 0.00027, outputPer1kUsd: 0.0011 },
|
|
21
|
+
"google/gemini-flash-1.5": { inputPer1kUsd: 0.000075, outputPer1kUsd: 0.0003 },
|
|
22
|
+
"qwen/qwen-2.5-coder-32b-instruct": { inputPer1kUsd: 0.00007, outputPer1kUsd: 0.00016 },
|
|
23
|
+
"meta-llama/llama-3.3-70b-instruct": { inputPer1kUsd: 0.00012, outputPer1kUsd: 0.0003 },
|
|
24
|
+
"mistralai/mistral-large-2411": { inputPer1kUsd: 0.002, outputPer1kUsd: 0.006 },
|
|
25
|
+
"x-ai/grok-2-1212": { inputPer1kUsd: 0.002, outputPer1kUsd: 0.01 },
|
|
26
|
+
// ── New OpenRouter models ─────────────────────────────────────
|
|
27
|
+
"minimax/minimax-m2.5": { inputPer1kUsd: 0.0003, outputPer1kUsd: 0.0011 },
|
|
28
|
+
"moonshotai/kimi-k2.5": { inputPer1kUsd: 0.00023, outputPer1kUsd: 0.003 },
|
|
29
|
+
"z-ai/glm-5": { inputPer1kUsd: 0.0003, outputPer1kUsd: 0.00255 },
|
|
46
30
|
};
|
|
47
31
|
function estimateCost(usage, pricing) {
|
|
48
32
|
const input = (usage.inputTokens / 1000) * pricing.inputPer1kUsd;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost_tracker.js","sourceRoot":"","sources":["../../src/providers/cost_tracker.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,MAAM,qBAAqB,GAAiC;IACjE,
|
|
1
|
+
{"version":3,"file":"cost_tracker.js","sourceRoot":"","sources":["../../src/providers/cost_tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,7 @@ import { CapabilityRouter } from "./router.js";
|
|
|
2
2
|
import type { DuoPairAssignment } from "../duo/duo_types.js";
|
|
3
3
|
export declare class DuoPairRouter {
|
|
4
4
|
private readonly capabilityRouter;
|
|
5
|
-
|
|
6
|
-
constructor(capabilityRouter: CapabilityRouter, _costTracker?: unknown);
|
|
5
|
+
constructor(capabilityRouter: CapabilityRouter);
|
|
7
6
|
assign(opts: {
|
|
8
7
|
preferredArchitect?: string;
|
|
9
8
|
preferredExecutor?: string;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { scoreAllModelsForRole, } from "./role_scorer.js";
|
|
2
2
|
export class DuoPairRouter {
|
|
3
3
|
capabilityRouter;
|
|
4
|
-
|
|
5
|
-
constructor(capabilityRouter, _costTracker) {
|
|
4
|
+
constructor(capabilityRouter) {
|
|
6
5
|
this.capabilityRouter = capabilityRouter;
|
|
7
|
-
this._costTracker = _costTracker;
|
|
8
6
|
}
|
|
9
7
|
assign(opts) {
|
|
10
8
|
const profiles = this.capabilityRouter.listProfiles();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duo_pair_router.js","sourceRoot":"","sources":["../../src/providers/duo_pair_router.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,GAEtB,MAAM,kBAAkB,CAAC;AAa1B,MAAM,OAAO,aAAa;IAEL;
|
|
1
|
+
{"version":3,"file":"duo_pair_router.js","sourceRoot":"","sources":["../../src/providers/duo_pair_router.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ const OPENROUTER_PROFILES = [
|
|
|
37
37
|
defaultScore: 0.95,
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
model: "anthropic/claude-opus-4
|
|
40
|
+
model: "anthropic/claude-opus-4.6",
|
|
41
41
|
provider: "openrouter",
|
|
42
42
|
capabilities: ["deep_reasoning", "architecture", "code_generation", "tool_use", "streaming"],
|
|
43
43
|
supportsStreaming: true,
|
|
@@ -49,7 +49,7 @@ const OPENROUTER_PROFILES = [
|
|
|
49
49
|
},
|
|
50
50
|
// --- Strong ---
|
|
51
51
|
{
|
|
52
|
-
model: "anthropic/claude-sonnet-4
|
|
52
|
+
model: "anthropic/claude-sonnet-4.6",
|
|
53
53
|
provider: "openrouter",
|
|
54
54
|
capabilities: ["deep_reasoning", "code_generation", "tool_use", "streaming"],
|
|
55
55
|
supportsStreaming: true,
|
|
@@ -196,10 +196,10 @@ const OPENROUTER_PROFILES = [
|
|
|
196
196
|
];
|
|
197
197
|
const OPENROUTER_PRICING = {
|
|
198
198
|
"openai/gpt-5.3-codex": { inputPer1kUsd: 0.015, outputPer1kUsd: 0.06 },
|
|
199
|
-
"anthropic/claude-opus-4
|
|
200
|
-
"anthropic/claude-sonnet-
|
|
199
|
+
"anthropic/claude-opus-4.6": { inputPer1kUsd: 0.015, outputPer1kUsd: 0.075 },
|
|
200
|
+
"anthropic/claude-sonnet-4.6": { inputPer1kUsd: 0.003, outputPer1kUsd: 0.015 },
|
|
201
201
|
"google/gemini-3.0-pro": { inputPer1kUsd: 0.0015, outputPer1kUsd: 0.01 },
|
|
202
|
-
"anthropic/claude-
|
|
202
|
+
"anthropic/claude-haiku-4.5": { inputPer1kUsd: 0.0008, outputPer1kUsd: 0.004 },
|
|
203
203
|
"openai/gpt-5.2": { inputPer1kUsd: 0.01, outputPer1kUsd: 0.04 },
|
|
204
204
|
"openai/gpt-4o": { inputPer1kUsd: 0.0025, outputPer1kUsd: 0.01 },
|
|
205
205
|
"openai/o4-mini": { inputPer1kUsd: 0.003, outputPer1kUsd: 0.012 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/providers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,MAAM,mBAAmB,GAAmB;IAC1C,mBAAmB;IACnB;QACE,KAAK,EAAE,sBAAsB;QAC7B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC;QAC5E,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,MAAO;QACtB,eAAe,EAAE,KAAM;QACvB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;KACnB;IACD;QACE,KAAK,EAAE,2BAA2B;QAClC,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC;QAC5F,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,MAAO;QACtB,eAAe,EAAE,KAAM;QACvB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;KACnB;IACD;QACE,KAAK,EAAE,uBAAuB;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC;QAC5E,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,OAAS;QACxB,eAAe,EAAE,KAAM;QACvB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;KACnB;IACD;QACE,KAAK,EAAE,2BAA2B;QAClC,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC;QAC5F,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,MAAO;QACtB,eAAe,EAAE,KAAM;QACvB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;KACnB;IACD,iBAAiB;IACjB;QACE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/providers/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,39 +112,48 @@ export class OpenRouterProvider {
|
|
|
112
112
|
let finalUsage = { inputTokens: 0, outputTokens: 0 };
|
|
113
113
|
let model = request.model;
|
|
114
114
|
let stopReason = null;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
115
|
+
try {
|
|
116
|
+
for await (const chunk of stream) {
|
|
117
|
+
model = chunk.model ?? model;
|
|
118
|
+
const chunkUsage = chunk.usage;
|
|
119
|
+
if (chunkUsage) {
|
|
120
|
+
finalUsage = {
|
|
121
|
+
inputTokens: chunkUsage.prompt_tokens ?? finalUsage.inputTokens,
|
|
122
|
+
outputTokens: chunkUsage.completion_tokens ?? finalUsage.outputTokens,
|
|
123
|
+
};
|
|
124
|
+
yield { type: "usage", usage: finalUsage };
|
|
125
|
+
}
|
|
126
|
+
const choice = chunk.choices?.[0];
|
|
127
|
+
const delta = choice?.delta;
|
|
128
|
+
const finishReason = choice?.finish_reason;
|
|
129
|
+
if (finishReason) {
|
|
130
|
+
stopReason = finishReason;
|
|
131
|
+
}
|
|
132
|
+
if (typeof delta?.content === "string" && delta.content.length > 0) {
|
|
133
|
+
textParts.push(delta.content);
|
|
134
|
+
yield { type: "text-delta", delta: delta.content };
|
|
135
|
+
}
|
|
136
|
+
const toolCalls = delta?.tool_calls;
|
|
137
|
+
if (toolCalls && toolCalls.length > 0) {
|
|
138
|
+
for (const toolCall of toolCalls) {
|
|
139
|
+
const key = String(toolCall.id ?? toolCall.index ?? "0");
|
|
140
|
+
const existing = toolCallBuffers.get(key) ?? { name: "", args: "" };
|
|
141
|
+
if (typeof toolCall?.function?.name === "string") {
|
|
142
|
+
existing.name = toolCall.function.name;
|
|
143
|
+
}
|
|
144
|
+
if (typeof toolCall?.function?.arguments === "string") {
|
|
145
|
+
existing.args += toolCall.function.arguments;
|
|
146
|
+
}
|
|
147
|
+
toolCallBuffers.set(key, existing);
|
|
143
148
|
}
|
|
144
|
-
toolCallBuffers.set(key, existing);
|
|
145
149
|
}
|
|
146
150
|
}
|
|
147
151
|
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
154
|
+
yield { type: "error", error: normalized };
|
|
155
|
+
throw normalized;
|
|
156
|
+
}
|
|
148
157
|
const parsedCalls = [...toolCallBuffers.entries()].map(([id, raw]) => {
|
|
149
158
|
let input = {};
|
|
150
159
|
if (raw.args.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAU5B,SAAS,UAAU,CAAC,QAAuB;IACzC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,UAAU;aACjC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,KAA+B;IAC9C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B;KACF,CAAC,CAAC,CAAC;AACN,CAAC;
|
|
1
|
+
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"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"}
|