@musistudio/claude-code-router 1.0.21 → 1.0.23
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 +37 -7
- package/README_zh.md +36 -7
- package/dist/cli.js +631 -581
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -1517,19 +1517,19 @@ var require_process_warning = __commonJS({
|
|
|
1517
1517
|
if (typeof unlimited !== "boolean") throw new Error("Warning opts.unlimited must be a boolean");
|
|
1518
1518
|
code = code.toUpperCase();
|
|
1519
1519
|
let warningContainer = {
|
|
1520
|
-
[name]: function(a,
|
|
1520
|
+
[name]: function(a, b, c) {
|
|
1521
1521
|
if (warning.emitted === true && warning.unlimited !== true) {
|
|
1522
1522
|
return;
|
|
1523
1523
|
}
|
|
1524
1524
|
warning.emitted = true;
|
|
1525
|
-
process.emitWarning(warning.format(a,
|
|
1525
|
+
process.emitWarning(warning.format(a, b, c), warning.name, warning.code);
|
|
1526
1526
|
}
|
|
1527
1527
|
};
|
|
1528
1528
|
if (unlimited) {
|
|
1529
1529
|
warningContainer = {
|
|
1530
|
-
[name]: function(a,
|
|
1530
|
+
[name]: function(a, b, c) {
|
|
1531
1531
|
warning.emitted = true;
|
|
1532
|
-
process.emitWarning(warning.format(a,
|
|
1532
|
+
process.emitWarning(warning.format(a, b, c), warning.name, warning.code);
|
|
1533
1533
|
}
|
|
1534
1534
|
};
|
|
1535
1535
|
}
|
|
@@ -1538,12 +1538,12 @@ var require_process_warning = __commonJS({
|
|
|
1538
1538
|
warning.message = message;
|
|
1539
1539
|
warning.unlimited = unlimited;
|
|
1540
1540
|
warning.code = code;
|
|
1541
|
-
warning.format = function(a,
|
|
1541
|
+
warning.format = function(a, b, c) {
|
|
1542
1542
|
let formatted;
|
|
1543
|
-
if (a &&
|
|
1544
|
-
formatted = format(message, a,
|
|
1545
|
-
} else if (a &&
|
|
1546
|
-
formatted = format(message, a,
|
|
1543
|
+
if (a && b && c) {
|
|
1544
|
+
formatted = format(message, a, b, c);
|
|
1545
|
+
} else if (a && b) {
|
|
1546
|
+
formatted = format(message, a, b);
|
|
1547
1547
|
} else if (a) {
|
|
1548
1548
|
formatted = format(message, a);
|
|
1549
1549
|
} else {
|
|
@@ -7299,8 +7299,8 @@ var require_multistream = __commonJS({
|
|
|
7299
7299
|
};
|
|
7300
7300
|
}
|
|
7301
7301
|
}
|
|
7302
|
-
function compareByLevel(a,
|
|
7303
|
-
return a.level -
|
|
7302
|
+
function compareByLevel(a, b) {
|
|
7303
|
+
return a.level - b.level;
|
|
7304
7304
|
}
|
|
7305
7305
|
function initLoopVar(length, dedupe) {
|
|
7306
7306
|
return dedupe ? length - 1 : 0;
|
|
@@ -12189,22 +12189,22 @@ var require_code = __commonJS({
|
|
|
12189
12189
|
i++;
|
|
12190
12190
|
}
|
|
12191
12191
|
}
|
|
12192
|
-
function mergeExprItems(a,
|
|
12193
|
-
if (
|
|
12192
|
+
function mergeExprItems(a, b) {
|
|
12193
|
+
if (b === '""')
|
|
12194
12194
|
return a;
|
|
12195
12195
|
if (a === '""')
|
|
12196
|
-
return
|
|
12196
|
+
return b;
|
|
12197
12197
|
if (typeof a == "string") {
|
|
12198
|
-
if (
|
|
12198
|
+
if (b instanceof Name || a[a.length - 1] !== '"')
|
|
12199
12199
|
return;
|
|
12200
|
-
if (typeof
|
|
12201
|
-
return `${a.slice(0, -1)}${
|
|
12202
|
-
if (
|
|
12203
|
-
return a.slice(0, -1) +
|
|
12200
|
+
if (typeof b != "string")
|
|
12201
|
+
return `${a.slice(0, -1)}${b}"`;
|
|
12202
|
+
if (b[0] === '"')
|
|
12203
|
+
return a.slice(0, -1) + b.slice(1);
|
|
12204
12204
|
return;
|
|
12205
12205
|
}
|
|
12206
|
-
if (typeof
|
|
12207
|
-
return `"${a}${
|
|
12206
|
+
if (typeof b == "string" && b[0] === '"' && !(a instanceof Name))
|
|
12207
|
+
return `"${a}${b.slice(1)}`;
|
|
12208
12208
|
return;
|
|
12209
12209
|
}
|
|
12210
12210
|
function strConcat(c1, c2) {
|
|
@@ -13097,7 +13097,7 @@ var require_codegen = __commonJS({
|
|
|
13097
13097
|
}
|
|
13098
13098
|
exports2.or = or;
|
|
13099
13099
|
function mappend(op) {
|
|
13100
|
-
return (x,
|
|
13100
|
+
return (x, y2) => x === code_1.nil ? y2 : y2 === code_1.nil ? x : (0, code_1._)`${par(x)} ${op} ${par(y2)}`;
|
|
13101
13101
|
}
|
|
13102
13102
|
function par(x) {
|
|
13103
13103
|
return x instanceof code_1.Name ? x : (0, code_1._)`(${x})`;
|
|
@@ -14097,33 +14097,33 @@ var require_subschema = __commonJS({
|
|
|
14097
14097
|
var require_fast_deep_equal = __commonJS({
|
|
14098
14098
|
"node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js"(exports2, module2) {
|
|
14099
14099
|
"use strict";
|
|
14100
|
-
module2.exports = function equal(a,
|
|
14101
|
-
if (a ===
|
|
14102
|
-
if (a &&
|
|
14103
|
-
if (a.constructor !==
|
|
14100
|
+
module2.exports = function equal(a, b) {
|
|
14101
|
+
if (a === b) return true;
|
|
14102
|
+
if (a && b && typeof a == "object" && typeof b == "object") {
|
|
14103
|
+
if (a.constructor !== b.constructor) return false;
|
|
14104
14104
|
var length, i, keys;
|
|
14105
14105
|
if (Array.isArray(a)) {
|
|
14106
14106
|
length = a.length;
|
|
14107
|
-
if (length !=
|
|
14107
|
+
if (length != b.length) return false;
|
|
14108
14108
|
for (i = length; i-- !== 0; )
|
|
14109
|
-
if (!equal(a[i],
|
|
14109
|
+
if (!equal(a[i], b[i])) return false;
|
|
14110
14110
|
return true;
|
|
14111
14111
|
}
|
|
14112
|
-
if (a.constructor === RegExp) return a.source ===
|
|
14113
|
-
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() ===
|
|
14114
|
-
if (a.toString !== Object.prototype.toString) return a.toString() ===
|
|
14112
|
+
if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
|
|
14113
|
+
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
|
|
14114
|
+
if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
|
|
14115
14115
|
keys = Object.keys(a);
|
|
14116
14116
|
length = keys.length;
|
|
14117
|
-
if (length !== Object.keys(
|
|
14117
|
+
if (length !== Object.keys(b).length) return false;
|
|
14118
14118
|
for (i = length; i-- !== 0; )
|
|
14119
|
-
if (!Object.prototype.hasOwnProperty.call(
|
|
14119
|
+
if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
|
|
14120
14120
|
for (i = length; i-- !== 0; ) {
|
|
14121
14121
|
var key = keys[i];
|
|
14122
|
-
if (!equal(a[key],
|
|
14122
|
+
if (!equal(a[key], b[key])) return false;
|
|
14123
14123
|
}
|
|
14124
14124
|
return true;
|
|
14125
14125
|
}
|
|
14126
|
-
return a !== a &&
|
|
14126
|
+
return a !== a && b !== b;
|
|
14127
14127
|
};
|
|
14128
14128
|
}
|
|
14129
14129
|
});
|
|
@@ -20043,8 +20043,8 @@ var require_resolvers = __commonJS({
|
|
|
20043
20043
|
mergedSchema[keyword] = Math.max(...values);
|
|
20044
20044
|
}
|
|
20045
20045
|
function commonMultiple(keyword, values, mergedSchema) {
|
|
20046
|
-
const gcd = (a,
|
|
20047
|
-
const lcm = (a,
|
|
20046
|
+
const gcd = (a, b) => !b ? a : gcd(b, a % b);
|
|
20047
|
+
const lcm = (a, b) => a * b / gcd(a, b);
|
|
20048
20048
|
let scale = 1;
|
|
20049
20049
|
for (const value of values) {
|
|
20050
20050
|
while (value * scale % 1 !== 0) {
|
|
@@ -20157,8 +20157,8 @@ var require_merge_json_schemas = __commonJS({
|
|
|
20157
20157
|
for (const array of arrays) {
|
|
20158
20158
|
const temp = [];
|
|
20159
20159
|
for (const x of result) {
|
|
20160
|
-
for (const
|
|
20161
|
-
temp.push([...x,
|
|
20160
|
+
for (const y2 of array) {
|
|
20161
|
+
temp.push([...x, y2]);
|
|
20162
20162
|
}
|
|
20163
20163
|
}
|
|
20164
20164
|
result = temp;
|
|
@@ -21497,11 +21497,11 @@ var require_timestamp = __commonJS({
|
|
|
21497
21497
|
const matches = DATE.exec(str);
|
|
21498
21498
|
if (!matches)
|
|
21499
21499
|
return false;
|
|
21500
|
-
const
|
|
21500
|
+
const y2 = +matches[1];
|
|
21501
21501
|
const m = +matches[2];
|
|
21502
21502
|
const d = +matches[3];
|
|
21503
21503
|
return m >= 1 && m <= 12 && d >= 1 && (d <= DAYS[m] || // leap year: https://tools.ietf.org/html/rfc3339#appendix-C
|
|
21504
|
-
m === 2 && d === 29 && (
|
|
21504
|
+
m === 2 && d === 29 && (y2 % 100 === 0 ? y2 % 400 === 0 : y2 % 4 === 0));
|
|
21505
21505
|
}
|
|
21506
21506
|
function validTime(str) {
|
|
21507
21507
|
const matches = TIME.exec(str);
|
|
@@ -23605,16 +23605,16 @@ var require_identifiers = __commonJS({
|
|
|
23605
23605
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/identifiers.js"(exports2, module2) {
|
|
23606
23606
|
"use strict";
|
|
23607
23607
|
var numeric = /^[0-9]+$/;
|
|
23608
|
-
var compareIdentifiers = (a,
|
|
23608
|
+
var compareIdentifiers = (a, b) => {
|
|
23609
23609
|
const anum = numeric.test(a);
|
|
23610
|
-
const bnum = numeric.test(
|
|
23610
|
+
const bnum = numeric.test(b);
|
|
23611
23611
|
if (anum && bnum) {
|
|
23612
23612
|
a = +a;
|
|
23613
|
-
|
|
23613
|
+
b = +b;
|
|
23614
23614
|
}
|
|
23615
|
-
return a ===
|
|
23615
|
+
return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
|
|
23616
23616
|
};
|
|
23617
|
-
var rcompareIdentifiers = (a,
|
|
23617
|
+
var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);
|
|
23618
23618
|
module2.exports = {
|
|
23619
23619
|
compareIdentifiers,
|
|
23620
23620
|
rcompareIdentifiers
|
|
@@ -23728,18 +23728,18 @@ var require_semver = __commonJS({
|
|
|
23728
23728
|
let i = 0;
|
|
23729
23729
|
do {
|
|
23730
23730
|
const a = this.prerelease[i];
|
|
23731
|
-
const
|
|
23732
|
-
debug("prerelease compare", i, a,
|
|
23733
|
-
if (a === void 0 &&
|
|
23731
|
+
const b = other.prerelease[i];
|
|
23732
|
+
debug("prerelease compare", i, a, b);
|
|
23733
|
+
if (a === void 0 && b === void 0) {
|
|
23734
23734
|
return 0;
|
|
23735
|
-
} else if (
|
|
23735
|
+
} else if (b === void 0) {
|
|
23736
23736
|
return 1;
|
|
23737
23737
|
} else if (a === void 0) {
|
|
23738
23738
|
return -1;
|
|
23739
|
-
} else if (a ===
|
|
23739
|
+
} else if (a === b) {
|
|
23740
23740
|
continue;
|
|
23741
23741
|
} else {
|
|
23742
|
-
return compareIdentifiers(a,
|
|
23742
|
+
return compareIdentifiers(a, b);
|
|
23743
23743
|
}
|
|
23744
23744
|
} while (++i);
|
|
23745
23745
|
}
|
|
@@ -23750,18 +23750,18 @@ var require_semver = __commonJS({
|
|
|
23750
23750
|
let i = 0;
|
|
23751
23751
|
do {
|
|
23752
23752
|
const a = this.build[i];
|
|
23753
|
-
const
|
|
23754
|
-
debug("build compare", i, a,
|
|
23755
|
-
if (a === void 0 &&
|
|
23753
|
+
const b = other.build[i];
|
|
23754
|
+
debug("build compare", i, a, b);
|
|
23755
|
+
if (a === void 0 && b === void 0) {
|
|
23756
23756
|
return 0;
|
|
23757
|
-
} else if (
|
|
23757
|
+
} else if (b === void 0) {
|
|
23758
23758
|
return 1;
|
|
23759
23759
|
} else if (a === void 0) {
|
|
23760
23760
|
return -1;
|
|
23761
|
-
} else if (a ===
|
|
23761
|
+
} else if (a === b) {
|
|
23762
23762
|
continue;
|
|
23763
23763
|
} else {
|
|
23764
|
-
return compareIdentifiers(a,
|
|
23764
|
+
return compareIdentifiers(a, b);
|
|
23765
23765
|
}
|
|
23766
23766
|
} while (++i);
|
|
23767
23767
|
}
|
|
@@ -24047,7 +24047,7 @@ var require_compare = __commonJS({
|
|
|
24047
24047
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare.js"(exports2, module2) {
|
|
24048
24048
|
"use strict";
|
|
24049
24049
|
var SemVer = require_semver();
|
|
24050
|
-
var compare = (a,
|
|
24050
|
+
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
|
|
24051
24051
|
module2.exports = compare;
|
|
24052
24052
|
}
|
|
24053
24053
|
});
|
|
@@ -24057,7 +24057,7 @@ var require_rcompare = __commonJS({
|
|
|
24057
24057
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rcompare.js"(exports2, module2) {
|
|
24058
24058
|
"use strict";
|
|
24059
24059
|
var compare = require_compare();
|
|
24060
|
-
var rcompare = (a,
|
|
24060
|
+
var rcompare = (a, b, loose) => compare(b, a, loose);
|
|
24061
24061
|
module2.exports = rcompare;
|
|
24062
24062
|
}
|
|
24063
24063
|
});
|
|
@@ -24067,7 +24067,7 @@ var require_compare_loose = __commonJS({
|
|
|
24067
24067
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-loose.js"(exports2, module2) {
|
|
24068
24068
|
"use strict";
|
|
24069
24069
|
var compare = require_compare();
|
|
24070
|
-
var compareLoose = (a,
|
|
24070
|
+
var compareLoose = (a, b) => compare(a, b, true);
|
|
24071
24071
|
module2.exports = compareLoose;
|
|
24072
24072
|
}
|
|
24073
24073
|
});
|
|
@@ -24077,9 +24077,9 @@ var require_compare_build = __commonJS({
|
|
|
24077
24077
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-build.js"(exports2, module2) {
|
|
24078
24078
|
"use strict";
|
|
24079
24079
|
var SemVer = require_semver();
|
|
24080
|
-
var compareBuild = (a,
|
|
24080
|
+
var compareBuild = (a, b, loose) => {
|
|
24081
24081
|
const versionA = new SemVer(a, loose);
|
|
24082
|
-
const versionB = new SemVer(
|
|
24082
|
+
const versionB = new SemVer(b, loose);
|
|
24083
24083
|
return versionA.compare(versionB) || versionA.compareBuild(versionB);
|
|
24084
24084
|
};
|
|
24085
24085
|
module2.exports = compareBuild;
|
|
@@ -24091,7 +24091,7 @@ var require_sort = __commonJS({
|
|
|
24091
24091
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/sort.js"(exports2, module2) {
|
|
24092
24092
|
"use strict";
|
|
24093
24093
|
var compareBuild = require_compare_build();
|
|
24094
|
-
var sort = (list, loose) => list.sort((a,
|
|
24094
|
+
var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
|
|
24095
24095
|
module2.exports = sort;
|
|
24096
24096
|
}
|
|
24097
24097
|
});
|
|
@@ -24101,7 +24101,7 @@ var require_rsort = __commonJS({
|
|
|
24101
24101
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rsort.js"(exports2, module2) {
|
|
24102
24102
|
"use strict";
|
|
24103
24103
|
var compareBuild = require_compare_build();
|
|
24104
|
-
var rsort = (list, loose) => list.sort((a,
|
|
24104
|
+
var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
|
|
24105
24105
|
module2.exports = rsort;
|
|
24106
24106
|
}
|
|
24107
24107
|
});
|
|
@@ -24111,7 +24111,7 @@ var require_gt = __commonJS({
|
|
|
24111
24111
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gt.js"(exports2, module2) {
|
|
24112
24112
|
"use strict";
|
|
24113
24113
|
var compare = require_compare();
|
|
24114
|
-
var gt = (a,
|
|
24114
|
+
var gt = (a, b, loose) => compare(a, b, loose) > 0;
|
|
24115
24115
|
module2.exports = gt;
|
|
24116
24116
|
}
|
|
24117
24117
|
});
|
|
@@ -24121,7 +24121,7 @@ var require_lt = __commonJS({
|
|
|
24121
24121
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lt.js"(exports2, module2) {
|
|
24122
24122
|
"use strict";
|
|
24123
24123
|
var compare = require_compare();
|
|
24124
|
-
var lt = (a,
|
|
24124
|
+
var lt = (a, b, loose) => compare(a, b, loose) < 0;
|
|
24125
24125
|
module2.exports = lt;
|
|
24126
24126
|
}
|
|
24127
24127
|
});
|
|
@@ -24131,7 +24131,7 @@ var require_eq = __commonJS({
|
|
|
24131
24131
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/eq.js"(exports2, module2) {
|
|
24132
24132
|
"use strict";
|
|
24133
24133
|
var compare = require_compare();
|
|
24134
|
-
var eq = (a,
|
|
24134
|
+
var eq = (a, b, loose) => compare(a, b, loose) === 0;
|
|
24135
24135
|
module2.exports = eq;
|
|
24136
24136
|
}
|
|
24137
24137
|
});
|
|
@@ -24141,7 +24141,7 @@ var require_neq = __commonJS({
|
|
|
24141
24141
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/neq.js"(exports2, module2) {
|
|
24142
24142
|
"use strict";
|
|
24143
24143
|
var compare = require_compare();
|
|
24144
|
-
var neq = (a,
|
|
24144
|
+
var neq = (a, b, loose) => compare(a, b, loose) !== 0;
|
|
24145
24145
|
module2.exports = neq;
|
|
24146
24146
|
}
|
|
24147
24147
|
});
|
|
@@ -24151,7 +24151,7 @@ var require_gte = __commonJS({
|
|
|
24151
24151
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gte.js"(exports2, module2) {
|
|
24152
24152
|
"use strict";
|
|
24153
24153
|
var compare = require_compare();
|
|
24154
|
-
var gte = (a,
|
|
24154
|
+
var gte = (a, b, loose) => compare(a, b, loose) >= 0;
|
|
24155
24155
|
module2.exports = gte;
|
|
24156
24156
|
}
|
|
24157
24157
|
});
|
|
@@ -24161,7 +24161,7 @@ var require_lte = __commonJS({
|
|
|
24161
24161
|
"node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lte.js"(exports2, module2) {
|
|
24162
24162
|
"use strict";
|
|
24163
24163
|
var compare = require_compare();
|
|
24164
|
-
var lte = (a,
|
|
24164
|
+
var lte = (a, b, loose) => compare(a, b, loose) <= 0;
|
|
24165
24165
|
module2.exports = lte;
|
|
24166
24166
|
}
|
|
24167
24167
|
});
|
|
@@ -24176,38 +24176,38 @@ var require_cmp = __commonJS({
|
|
|
24176
24176
|
var gte = require_gte();
|
|
24177
24177
|
var lt = require_lt();
|
|
24178
24178
|
var lte = require_lte();
|
|
24179
|
-
var cmp = (a, op,
|
|
24179
|
+
var cmp = (a, op, b, loose) => {
|
|
24180
24180
|
switch (op) {
|
|
24181
24181
|
case "===":
|
|
24182
24182
|
if (typeof a === "object") {
|
|
24183
24183
|
a = a.version;
|
|
24184
24184
|
}
|
|
24185
|
-
if (typeof
|
|
24186
|
-
|
|
24185
|
+
if (typeof b === "object") {
|
|
24186
|
+
b = b.version;
|
|
24187
24187
|
}
|
|
24188
|
-
return a ===
|
|
24188
|
+
return a === b;
|
|
24189
24189
|
case "!==":
|
|
24190
24190
|
if (typeof a === "object") {
|
|
24191
24191
|
a = a.version;
|
|
24192
24192
|
}
|
|
24193
|
-
if (typeof
|
|
24194
|
-
|
|
24193
|
+
if (typeof b === "object") {
|
|
24194
|
+
b = b.version;
|
|
24195
24195
|
}
|
|
24196
|
-
return a !==
|
|
24196
|
+
return a !== b;
|
|
24197
24197
|
case "":
|
|
24198
24198
|
case "=":
|
|
24199
24199
|
case "==":
|
|
24200
|
-
return eq(a,
|
|
24200
|
+
return eq(a, b, loose);
|
|
24201
24201
|
case "!=":
|
|
24202
|
-
return neq(a,
|
|
24202
|
+
return neq(a, b, loose);
|
|
24203
24203
|
case ">":
|
|
24204
|
-
return gt(a,
|
|
24204
|
+
return gt(a, b, loose);
|
|
24205
24205
|
case ">=":
|
|
24206
|
-
return gte(a,
|
|
24206
|
+
return gte(a, b, loose);
|
|
24207
24207
|
case "<":
|
|
24208
|
-
return lt(a,
|
|
24208
|
+
return lt(a, b, loose);
|
|
24209
24209
|
case "<=":
|
|
24210
|
-
return lte(a,
|
|
24210
|
+
return lte(a, b, loose);
|
|
24211
24211
|
default:
|
|
24212
24212
|
throw new TypeError(`Invalid operator: ${op}`);
|
|
24213
24213
|
}
|
|
@@ -25062,7 +25062,7 @@ var require_simplify = __commonJS({
|
|
|
25062
25062
|
const set = [];
|
|
25063
25063
|
let first = null;
|
|
25064
25064
|
let prev = null;
|
|
25065
|
-
const v = versions.sort((a,
|
|
25065
|
+
const v = versions.sort((a, b) => compare(a, b, options));
|
|
25066
25066
|
for (const version2 of v) {
|
|
25067
25067
|
const included = satisfies(version2, range, options);
|
|
25068
25068
|
if (included) {
|
|
@@ -25246,19 +25246,19 @@ var require_subset = __commonJS({
|
|
|
25246
25246
|
}
|
|
25247
25247
|
return true;
|
|
25248
25248
|
};
|
|
25249
|
-
var higherGT = (a,
|
|
25249
|
+
var higherGT = (a, b, options) => {
|
|
25250
25250
|
if (!a) {
|
|
25251
|
-
return
|
|
25251
|
+
return b;
|
|
25252
25252
|
}
|
|
25253
|
-
const comp = compare(a.semver,
|
|
25254
|
-
return comp > 0 ? a : comp < 0 ?
|
|
25253
|
+
const comp = compare(a.semver, b.semver, options);
|
|
25254
|
+
return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a;
|
|
25255
25255
|
};
|
|
25256
|
-
var lowerLT = (a,
|
|
25256
|
+
var lowerLT = (a, b, options) => {
|
|
25257
25257
|
if (!a) {
|
|
25258
|
-
return
|
|
25258
|
+
return b;
|
|
25259
25259
|
}
|
|
25260
|
-
const comp = compare(a.semver,
|
|
25261
|
-
return comp < 0 ? a : comp > 0 ?
|
|
25260
|
+
const comp = compare(a.semver, b.semver, options);
|
|
25261
|
+
return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a;
|
|
25262
25262
|
};
|
|
25263
25263
|
module2.exports = subset;
|
|
25264
25264
|
}
|
|
@@ -26477,11 +26477,11 @@ var require_util2 = __commonJS({
|
|
|
26477
26477
|
var CTRL = "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?";
|
|
26478
26478
|
exports2.strToChars = (str) => {
|
|
26479
26479
|
const charsRegex = /(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|c([@A-Z[\\\]^?])|([0tnvfr]))/g;
|
|
26480
|
-
return str.replace(charsRegex, (s,
|
|
26480
|
+
return str.replace(charsRegex, (s, b, lbs, a16, b16, dctrl, eslsh) => {
|
|
26481
26481
|
if (lbs) {
|
|
26482
26482
|
return s;
|
|
26483
26483
|
}
|
|
26484
|
-
let code =
|
|
26484
|
+
let code = b ? 8 : a16 ? parseInt(a16, 16) : b16 ? parseInt(b16, 16) : dctrl ? CTRL.indexOf(dctrl) : {
|
|
26485
26485
|
0: 0,
|
|
26486
26486
|
t: 9,
|
|
26487
26487
|
n: 10,
|
|
@@ -27330,7 +27330,7 @@ var require_handler_storage = __commonJS({
|
|
|
27330
27330
|
throw new Error("find-my-way supports a maximum of 31 route handlers per node when there are constraints, limit reached");
|
|
27331
27331
|
}
|
|
27332
27332
|
this.handlers.push(handlerObject);
|
|
27333
|
-
this.handlers.sort((a,
|
|
27333
|
+
this.handlers.sort((a, b) => Object.keys(a.constraints).length - Object.keys(b.constraints).length);
|
|
27334
27334
|
if (!isMergedTree) {
|
|
27335
27335
|
this._compileGetHandlerMatchingConstraints(constrainer, constraints);
|
|
27336
27336
|
}
|
|
@@ -30410,10 +30410,10 @@ var require_dist4 = __commonJS({
|
|
|
30410
30410
|
var pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/;
|
|
30411
30411
|
var __toString = Object.prototype.toString;
|
|
30412
30412
|
var NullObject = /* @__PURE__ */ (() => {
|
|
30413
|
-
const
|
|
30413
|
+
const C = function() {
|
|
30414
30414
|
};
|
|
30415
|
-
|
|
30416
|
-
return
|
|
30415
|
+
C.prototype = /* @__PURE__ */ Object.create(null);
|
|
30416
|
+
return C;
|
|
30417
30417
|
})();
|
|
30418
30418
|
function parse(str, options) {
|
|
30419
30419
|
const obj = new NullObject();
|
|
@@ -30571,19 +30571,19 @@ var require_process_warning2 = __commonJS({
|
|
|
30571
30571
|
if (typeof unlimited !== "boolean") throw new Error("Warning opts.unlimited must be a boolean");
|
|
30572
30572
|
code = code.toUpperCase();
|
|
30573
30573
|
let warningContainer = {
|
|
30574
|
-
[name]: function(a,
|
|
30574
|
+
[name]: function(a, b, c) {
|
|
30575
30575
|
if (warning.emitted === true && warning.unlimited !== true) {
|
|
30576
30576
|
return;
|
|
30577
30577
|
}
|
|
30578
30578
|
warning.emitted = true;
|
|
30579
|
-
process.emitWarning(warning.format(a,
|
|
30579
|
+
process.emitWarning(warning.format(a, b, c), warning.name, warning.code);
|
|
30580
30580
|
}
|
|
30581
30581
|
};
|
|
30582
30582
|
if (unlimited) {
|
|
30583
30583
|
warningContainer = {
|
|
30584
|
-
[name]: function(a,
|
|
30584
|
+
[name]: function(a, b, c) {
|
|
30585
30585
|
warning.emitted = true;
|
|
30586
|
-
process.emitWarning(warning.format(a,
|
|
30586
|
+
process.emitWarning(warning.format(a, b, c), warning.name, warning.code);
|
|
30587
30587
|
}
|
|
30588
30588
|
};
|
|
30589
30589
|
}
|
|
@@ -30592,12 +30592,12 @@ var require_process_warning2 = __commonJS({
|
|
|
30592
30592
|
warning.message = message;
|
|
30593
30593
|
warning.unlimited = unlimited;
|
|
30594
30594
|
warning.code = code;
|
|
30595
|
-
warning.format = function(a,
|
|
30595
|
+
warning.format = function(a, b, c) {
|
|
30596
30596
|
let formatted;
|
|
30597
|
-
if (a &&
|
|
30598
|
-
formatted = format(message, a,
|
|
30599
|
-
} else if (a &&
|
|
30600
|
-
formatted = format(message, a,
|
|
30597
|
+
if (a && b && c) {
|
|
30598
|
+
formatted = format(message, a, b, c);
|
|
30599
|
+
} else if (a && b) {
|
|
30600
|
+
formatted = format(message, a, b);
|
|
30601
30601
|
} else if (a) {
|
|
30602
30602
|
formatted = format(message, a);
|
|
30603
30603
|
} else {
|
|
@@ -32538,7 +32538,7 @@ var require_fastify = __commonJS({
|
|
|
32538
32538
|
listen,
|
|
32539
32539
|
server,
|
|
32540
32540
|
addresses: function() {
|
|
32541
|
-
const binded = this[kServerBindings].map((
|
|
32541
|
+
const binded = this[kServerBindings].map((b) => b.address());
|
|
32542
32542
|
binded.push(this.server.address());
|
|
32543
32543
|
return binded.filter((adr) => adr);
|
|
32544
32544
|
},
|
|
@@ -37824,12 +37824,12 @@ var require_webidl = __commonJS({
|
|
|
37824
37824
|
}
|
|
37825
37825
|
return V2;
|
|
37826
37826
|
};
|
|
37827
|
-
webidl.converters.TypedArray = function(V2,
|
|
37828
|
-
if (webidl.util.Type(V2) !== OBJECT || !types.isTypedArray(V2) || V2.constructor.name !==
|
|
37827
|
+
webidl.converters.TypedArray = function(V2, T2, prefix, name, opts) {
|
|
37828
|
+
if (webidl.util.Type(V2) !== OBJECT || !types.isTypedArray(V2) || V2.constructor.name !== T2.name) {
|
|
37829
37829
|
throw webidl.errors.conversionFailed({
|
|
37830
37830
|
prefix,
|
|
37831
37831
|
argument: `${name} ("${webidl.util.Stringify(V2)}")`,
|
|
37832
|
-
types: [
|
|
37832
|
+
types: [T2.name]
|
|
37833
37833
|
});
|
|
37834
37834
|
}
|
|
37835
37835
|
if (opts?.allowShared === false && types.isSharedArrayBuffer(V2.buffer)) {
|
|
@@ -38882,15 +38882,15 @@ var require_formdata = __commonJS({
|
|
|
38882
38882
|
}
|
|
38883
38883
|
}
|
|
38884
38884
|
[nodeUtil.inspect.custom](depth, options) {
|
|
38885
|
-
const state = this.#state.reduce((a,
|
|
38886
|
-
if (a[
|
|
38887
|
-
if (Array.isArray(a[
|
|
38888
|
-
a[
|
|
38885
|
+
const state = this.#state.reduce((a, b) => {
|
|
38886
|
+
if (a[b.name]) {
|
|
38887
|
+
if (Array.isArray(a[b.name])) {
|
|
38888
|
+
a[b.name].push(b.value);
|
|
38889
38889
|
} else {
|
|
38890
|
-
a[
|
|
38890
|
+
a[b.name] = [a[b.name], b.value];
|
|
38891
38891
|
}
|
|
38892
38892
|
} else {
|
|
38893
|
-
a[
|
|
38893
|
+
a[b.name] = b.value;
|
|
38894
38894
|
}
|
|
38895
38895
|
return a;
|
|
38896
38896
|
}, { __proto__: null });
|
|
@@ -42132,11 +42132,11 @@ var require_balanced_pool = __commonJS({
|
|
|
42132
42132
|
var kWeight = Symbol("kWeight");
|
|
42133
42133
|
var kMaxWeightPerServer = Symbol("kMaxWeightPerServer");
|
|
42134
42134
|
var kErrorPenalty = Symbol("kErrorPenalty");
|
|
42135
|
-
function getGreatestCommonDivisor(a,
|
|
42136
|
-
if (a === 0) return
|
|
42137
|
-
while (
|
|
42138
|
-
const t =
|
|
42139
|
-
|
|
42135
|
+
function getGreatestCommonDivisor(a, b) {
|
|
42136
|
+
if (a === 0) return b;
|
|
42137
|
+
while (b !== 0) {
|
|
42138
|
+
const t = b;
|
|
42139
|
+
b = a % b;
|
|
42140
42140
|
a = t;
|
|
42141
42141
|
}
|
|
42142
42142
|
return a;
|
|
@@ -42217,7 +42217,7 @@ var require_balanced_pool = __commonJS({
|
|
|
42217
42217
|
if (!dispatcher) {
|
|
42218
42218
|
return;
|
|
42219
42219
|
}
|
|
42220
|
-
const allClientsBusy = this[kClients].map((pool) => pool[kNeedDrain]).reduce((a,
|
|
42220
|
+
const allClientsBusy = this[kClients].map((pool) => pool[kNeedDrain]).reduce((a, b) => a && b, true);
|
|
42221
42221
|
if (allClientsBusy) {
|
|
42222
42222
|
return;
|
|
42223
42223
|
}
|
|
@@ -47932,8 +47932,8 @@ var require_headers = __commonJS({
|
|
|
47932
47932
|
}
|
|
47933
47933
|
return headersList.sortedMap = headers;
|
|
47934
47934
|
}
|
|
47935
|
-
function compareHeaderName(a,
|
|
47936
|
-
return a[0] <
|
|
47935
|
+
function compareHeaderName(a, b) {
|
|
47936
|
+
return a[0] < b[0] ? -1 : 1;
|
|
47937
47937
|
}
|
|
47938
47938
|
var HeadersList = class _HeadersList {
|
|
47939
47939
|
/** @type {[string, string][]|null} */
|
|
@@ -54958,7 +54958,7 @@ var initConfig = async () => {
|
|
|
54958
54958
|
return config;
|
|
54959
54959
|
};
|
|
54960
54960
|
|
|
54961
|
-
// node_modules/.pnpm/@musistudio+llms@1.0.
|
|
54961
|
+
// node_modules/.pnpm/@musistudio+llms@1.0.10_ws@8.18.3_zod@3.25.67/node_modules/@musistudio/llms/dist/esm/server.mjs
|
|
54962
54962
|
var import_fastify = __toESM(require_fastify(), 1);
|
|
54963
54963
|
var import_cors = __toESM(require_cors(), 1);
|
|
54964
54964
|
var import_fs = require("fs");
|
|
@@ -54973,7 +54973,7 @@ var Z = ((s) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(
|
|
|
54973
54973
|
if (typeof require < "u") return require.apply(this, arguments);
|
|
54974
54974
|
throw Error('Dynamic require of "' + s + '" is not supported');
|
|
54975
54975
|
});
|
|
54976
|
-
var
|
|
54976
|
+
var I = class {
|
|
54977
54977
|
config = {};
|
|
54978
54978
|
options;
|
|
54979
54979
|
constructor(e = { jsonPath: "./config.json" }) {
|
|
@@ -55037,85 +55037,85 @@ var $ = class {
|
|
|
55037
55037
|
return this.options.initialConfig && e.push("Initial Config"), this.options.useJsonFile && this.options.jsonPath && e.push(`JSON: ${this.options.jsonPath}`), this.options.useEnvFile && e.push(`ENV: ${this.options.envPath}`), this.options.useEnvironmentVariables && e.push("Environment Variables"), `Config sources: ${e.join(", ")}`;
|
|
55038
55038
|
}
|
|
55039
55039
|
};
|
|
55040
|
-
function
|
|
55040
|
+
function y(...s) {
|
|
55041
55041
|
if (console.log(...s), !(process.env.LOG === "true")) return;
|
|
55042
|
-
let n = `[${(/* @__PURE__ */ new Date()).toISOString()}] ${Array.isArray(s) ? s.map((
|
|
55043
|
-
`,
|
|
55044
|
-
import_node_fs.default.appendFileSync(
|
|
55042
|
+
let n = `[${(/* @__PURE__ */ new Date()).toISOString()}] ${Array.isArray(s) ? s.map((r) => typeof r == "object" ? JSON.stringify(r) : String(r)).join(" ") : ""}
|
|
55043
|
+
`, o = process.env.LOG_FILE || "app.log";
|
|
55044
|
+
import_node_fs.default.appendFileSync(o, n, "utf8");
|
|
55045
55045
|
}
|
|
55046
55046
|
function L(s, e = 500, t = "internal_error", n = "api_error") {
|
|
55047
|
-
let
|
|
55048
|
-
return
|
|
55047
|
+
let o = new Error(s);
|
|
55048
|
+
return o.statusCode = e, o.code = t, o.type = n, o;
|
|
55049
55049
|
}
|
|
55050
55050
|
async function le(s, e, t) {
|
|
55051
55051
|
e.log.error(s);
|
|
55052
|
-
let n = s.statusCode || 500,
|
|
55053
|
-
return t.code(n).send(
|
|
55052
|
+
let n = s.statusCode || 500, o = { error: { message: s.message || "Internal Server Error", type: s.type || "api_error", code: s.code || "internal_error" } };
|
|
55053
|
+
return t.code(n).send(o);
|
|
55054
55054
|
}
|
|
55055
55055
|
function de(s, e, t) {
|
|
55056
55056
|
let n = new Headers({ "Content-Type": "application/json" });
|
|
55057
|
-
t.headers && Object.entries(t.headers).forEach(([d,
|
|
55058
|
-
n.set(d,
|
|
55057
|
+
t.headers && Object.entries(t.headers).forEach(([d, l]) => {
|
|
55058
|
+
n.set(d, l);
|
|
55059
55059
|
});
|
|
55060
|
-
let
|
|
55060
|
+
let o, r = AbortSignal.timeout(t.TIMEOUT ?? 60 * 1e3 * 60);
|
|
55061
55061
|
if (t.signal) {
|
|
55062
|
-
let d = new AbortController(),
|
|
55063
|
-
t.signal.addEventListener("abort",
|
|
55064
|
-
} else
|
|
55065
|
-
let
|
|
55066
|
-
return t.httpsProxy && (
|
|
55062
|
+
let d = new AbortController(), l = () => d.abort();
|
|
55063
|
+
t.signal.addEventListener("abort", l), r.addEventListener("abort", l), o = d.signal;
|
|
55064
|
+
} else o = r;
|
|
55065
|
+
let c = { method: "POST", headers: n, body: JSON.stringify(e), signal: o };
|
|
55066
|
+
return t.httpsProxy && (c.dispatcher = new import_undici.ProxyAgent(new URL(t.httpsProxy).toString())), y("final request:", typeof s == "string" ? s : s.toString(), t.httpsProxy, c), fetch(typeof s == "string" ? s : s.toString(), c);
|
|
55067
55067
|
}
|
|
55068
|
-
var
|
|
55068
|
+
var ue = async (s) => {
|
|
55069
55069
|
s.get("/", async (t, n) => ({ message: "LLMs API", version: "1.0.0" })), s.get("/health", async (t, n) => ({ status: "ok", timestamp: (/* @__PURE__ */ new Date()).toISOString() }));
|
|
55070
55070
|
let e = s._server.transformerService.getTransformersWithEndpoint();
|
|
55071
|
-
for (let { name: t, transformer: n } of e) n.endPoint && s.post(n.endPoint, async (
|
|
55072
|
-
let
|
|
55073
|
-
if (!
|
|
55074
|
-
let
|
|
55071
|
+
for (let { name: t, transformer: n } of e) n.endPoint && s.post(n.endPoint, async (o, r) => {
|
|
55072
|
+
let c = o.body, d = o.provider, l = s._server.providerService.getProvider(d);
|
|
55073
|
+
if (!l) throw L(`Provider '${d}' not found`, 404, "provider_not_found");
|
|
55074
|
+
let i = c, p = {};
|
|
55075
55075
|
if (typeof n.transformRequestOut == "function") {
|
|
55076
|
-
let
|
|
55077
|
-
|
|
55076
|
+
let a = await n.transformRequestOut(c);
|
|
55077
|
+
a.body ? (i = a.body, p = a.config || {}) : i = a;
|
|
55078
55078
|
}
|
|
55079
|
-
if (
|
|
55080
|
-
if (!
|
|
55081
|
-
let v = await
|
|
55082
|
-
v.body ? (
|
|
55079
|
+
if (y("use transformers:", l.transformer?.use), l.transformer?.use?.length) for (let a of l.transformer.use) {
|
|
55080
|
+
if (!a || typeof a.transformRequestIn != "function") continue;
|
|
55081
|
+
let v = await a.transformRequestIn(i, l);
|
|
55082
|
+
v.body ? (i = v.body, p = { ...p, ...v.config }) : i = v;
|
|
55083
55083
|
}
|
|
55084
|
-
if (
|
|
55085
|
-
let
|
|
55084
|
+
if (l.transformer?.[o.body.model]?.use?.length) for (let a of l.transformer[o.body.model].use) !a || typeof a.transformRequestIn != "function" || (i = await a.transformRequestIn(i, l));
|
|
55085
|
+
let _ = p.url || new URL(l.baseUrl), k = await de(_, i, { httpsProxy: s._server.configService.getHttpsProxy(), ...p, headers: { Authorization: `Bearer ${l.apiKey}`, ...p?.headers || {} } });
|
|
55086
55086
|
if (!k.ok) {
|
|
55087
|
-
let
|
|
55088
|
-
throw
|
|
55087
|
+
let a = await k.text();
|
|
55088
|
+
throw y(`Error response from ${_}: ${a}`), L(`Error from provider: ${a}`, k.status, "provider_response_error");
|
|
55089
55089
|
}
|
|
55090
55090
|
let g = k;
|
|
55091
|
-
if (
|
|
55092
|
-
if (
|
|
55093
|
-
return n.transformResponseIn && (g = await n.transformResponseIn(g)), g.ok ||
|
|
55091
|
+
if (l.transformer?.use?.length) for (let a of l.transformer.use) !a || typeof a.transformResponseOut != "function" || (g = await a.transformResponseOut(g));
|
|
55092
|
+
if (l.transformer?.[o.body.model]?.use?.length) for (let a of l.transformer[o.body.model].use) !a || typeof a.transformResponseOut != "function" || (g = await a.transformResponseOut(g));
|
|
55093
|
+
return n.transformResponseIn && (g = await n.transformResponseIn(g)), g.ok || r.code(g.status), c?.stream === true ? (r.header("Content-Type", "text/event-stream"), r.header("Cache-Control", "no-cache"), r.header("Connection", "keep-alive"), r.send(g.body)) : g.json();
|
|
55094
55094
|
});
|
|
55095
55095
|
s.post("/providers", { schema: { body: { type: "object", properties: { id: { type: "string" }, name: { type: "string" }, type: { type: "string", enum: ["openai", "anthropic"] }, baseUrl: { type: "string" }, apiKey: { type: "string" }, models: { type: "array", items: { type: "string" } } }, required: ["id", "name", "type", "baseUrl", "apiKey", "models"] } } }, async (t, n) => {
|
|
55096
|
-
let { name:
|
|
55097
|
-
if (!
|
|
55098
|
-
if (!
|
|
55096
|
+
let { name: o, type: r, baseUrl: c, apiKey: d, models: l } = t.body;
|
|
55097
|
+
if (!o?.trim()) throw L("Provider name is required", 400, "invalid_request");
|
|
55098
|
+
if (!c || !Ce(c)) throw L("Valid base URL is required", 400, "invalid_request");
|
|
55099
55099
|
if (!d?.trim()) throw L("API key is required", 400, "invalid_request");
|
|
55100
|
-
if (!
|
|
55100
|
+
if (!l || !Array.isArray(l) || l.length === 0) throw L("At least one model is required", 400, "invalid_request");
|
|
55101
55101
|
if (s._server.providerService.getProvider(id)) throw L(`Provider with ID '${id}' already exists`, 400, "provider_exists");
|
|
55102
55102
|
return s._server.providerService.registerProvider(t.body);
|
|
55103
55103
|
}), s.get("/providers", async (t, n) => s._server.providerService.getProviders()), s.get("/providers/:id", { schema: { params: { type: "object", properties: { id: { type: "string" } }, required: ["id"] } } }, async (t, n) => {
|
|
55104
|
-
let
|
|
55105
|
-
return
|
|
55104
|
+
let o = s._server.providerService.getProvider(t.params.id);
|
|
55105
|
+
return o || n.code(404).send({ error: "Provider not found" });
|
|
55106
55106
|
}), s.put("/providers/:id", { schema: { params: { type: "object", properties: { id: { type: "string" } }, required: ["id"] }, body: { type: "object", properties: { name: { type: "string" }, type: { type: "string", enum: ["openai", "anthropic"] }, baseUrl: { type: "string" }, apiKey: { type: "string" }, models: { type: "array", items: { type: "string" } }, enabled: { type: "boolean" } } } } }, async (t, n) => {
|
|
55107
|
-
let
|
|
55108
|
-
return
|
|
55107
|
+
let o = s._server.providerService.updateProvider(t.params.id, t.body);
|
|
55108
|
+
return o || n.code(404).send({ error: "Provider not found" });
|
|
55109
55109
|
}), s.delete("/providers/:id", { schema: { params: { type: "object", properties: { id: { type: "string" } }, required: ["id"] } } }, async (t, n) => s._server.providerService.deleteProvider(t.params.id) ? { message: "Provider deleted successfully" } : n.code(404).send({ error: "Provider not found" })), s.patch("/providers/:id/toggle", { schema: { params: { type: "object", properties: { id: { type: "string" } }, required: ["id"] }, body: { type: "object", properties: { enabled: { type: "boolean" } }, required: ["enabled"] } } }, async (t, n) => s._server.providerService.toggleProvider(t.params.id, t.body.enabled) ? { message: `Provider ${t.body.enabled ? "enabled" : "disabled"} successfully` } : n.code(404).send({ error: "Provider not found" }));
|
|
55110
55110
|
};
|
|
55111
|
-
function
|
|
55111
|
+
function Ce(s) {
|
|
55112
55112
|
try {
|
|
55113
55113
|
return new URL(s), true;
|
|
55114
55114
|
} catch {
|
|
55115
55115
|
return false;
|
|
55116
55116
|
}
|
|
55117
55117
|
}
|
|
55118
|
-
var
|
|
55118
|
+
var F = class {
|
|
55119
55119
|
constructor(e) {
|
|
55120
55120
|
this.providerService = e;
|
|
55121
55121
|
}
|
|
@@ -55152,7 +55152,7 @@ var q = class {
|
|
|
55152
55152
|
return this.providerService.getModelRoutes();
|
|
55153
55153
|
}
|
|
55154
55154
|
};
|
|
55155
|
-
var
|
|
55155
|
+
var q = class {
|
|
55156
55156
|
constructor(e, t) {
|
|
55157
55157
|
this.configService = e;
|
|
55158
55158
|
this.transformerService = t;
|
|
@@ -55172,31 +55172,31 @@ var F = class {
|
|
|
55172
55172
|
try {
|
|
55173
55173
|
if (!t.name || !t.api_base_url || !t.api_key) return;
|
|
55174
55174
|
let n = {};
|
|
55175
|
-
t.transformer && Object.keys(t.transformer).forEach((
|
|
55176
|
-
|
|
55177
|
-
if (Array.isArray(
|
|
55178
|
-
let
|
|
55179
|
-
if (
|
|
55180
|
-
}
|
|
55181
|
-
if (typeof
|
|
55182
|
-
}).filter((
|
|
55183
|
-
if (Array.isArray(
|
|
55184
|
-
let
|
|
55185
|
-
if (
|
|
55186
|
-
}
|
|
55187
|
-
if (typeof
|
|
55188
|
-
}).filter((
|
|
55189
|
-
}), this.registerProvider({ name: t.name, baseUrl: t.api_base_url, apiKey: t.api_key, models: t.models || [], transformer: t.transformer ? n : void 0 }),
|
|
55175
|
+
t.transformer && Object.keys(t.transformer).forEach((o) => {
|
|
55176
|
+
o === "use" ? Array.isArray(t.transformer.use) && (n.use = t.transformer.use.map((r) => {
|
|
55177
|
+
if (Array.isArray(r) && typeof r[0] == "string") {
|
|
55178
|
+
let c = this.transformerService.getTransformer(r[0]);
|
|
55179
|
+
if (c) return new c(r[1]);
|
|
55180
|
+
}
|
|
55181
|
+
if (typeof r == "string") return this.transformerService.getTransformer(r);
|
|
55182
|
+
}).filter((r) => typeof r < "u")) : Array.isArray(t.transformer[o]?.use) && (n[o] = { use: t.transformer[o].use.map((r) => {
|
|
55183
|
+
if (Array.isArray(r) && typeof r[0] == "string") {
|
|
55184
|
+
let c = this.transformerService.getTransformer(r[0]);
|
|
55185
|
+
if (c) return new c(r[1]);
|
|
55186
|
+
}
|
|
55187
|
+
if (typeof r == "string") return this.transformerService.getTransformer(r);
|
|
55188
|
+
}).filter((r) => typeof r < "u") });
|
|
55189
|
+
}), this.registerProvider({ name: t.name, baseUrl: t.api_base_url, apiKey: t.api_key, models: t.models || [], transformer: t.transformer ? n : void 0 }), y(`${t.name} provider registered`);
|
|
55190
55190
|
} catch (n) {
|
|
55191
|
-
|
|
55191
|
+
y(`${t.name} provider registered error: ${n}`);
|
|
55192
55192
|
}
|
|
55193
55193
|
});
|
|
55194
55194
|
}
|
|
55195
55195
|
registerProvider(e) {
|
|
55196
55196
|
let t = { ...e };
|
|
55197
55197
|
return this.providers.set(t.name, t), e.models.forEach((n) => {
|
|
55198
|
-
let
|
|
55199
|
-
this.modelRoutes.set(
|
|
55198
|
+
let o = `${t.name},${n}`, r = { provider: t.name, model: n, fullModel: o };
|
|
55199
|
+
this.modelRoutes.set(o, r), this.modelRoutes.has(n) || this.modelRoutes.set(n, r);
|
|
55200
55200
|
}), t;
|
|
55201
55201
|
}
|
|
55202
55202
|
getProviders() {
|
|
@@ -55208,20 +55208,20 @@ var F = class {
|
|
|
55208
55208
|
updateProvider(e, t) {
|
|
55209
55209
|
let n = this.providers.get(e);
|
|
55210
55210
|
if (!n) return null;
|
|
55211
|
-
let
|
|
55212
|
-
return this.providers.set(e,
|
|
55213
|
-
let
|
|
55214
|
-
this.modelRoutes.delete(
|
|
55215
|
-
}), t.models.forEach((
|
|
55216
|
-
let
|
|
55217
|
-
this.modelRoutes.set(
|
|
55218
|
-
})),
|
|
55211
|
+
let o = { ...n, ...t, updatedAt: /* @__PURE__ */ new Date() };
|
|
55212
|
+
return this.providers.set(e, o), t.models && (n.models.forEach((r) => {
|
|
55213
|
+
let c = `${n.id},${r}`;
|
|
55214
|
+
this.modelRoutes.delete(c), this.modelRoutes.delete(r);
|
|
55215
|
+
}), t.models.forEach((r) => {
|
|
55216
|
+
let c = `${n.name},${r}`, d = { provider: n.name, model: r, fullModel: c };
|
|
55217
|
+
this.modelRoutes.set(c, d), this.modelRoutes.has(r) || this.modelRoutes.set(r, d);
|
|
55218
|
+
})), o;
|
|
55219
55219
|
}
|
|
55220
55220
|
deleteProvider(e) {
|
|
55221
55221
|
let t = this.providers.get(e);
|
|
55222
55222
|
return t ? (t.models.forEach((n) => {
|
|
55223
|
-
let
|
|
55224
|
-
this.modelRoutes.delete(
|
|
55223
|
+
let o = `${t.name},${n}`;
|
|
55224
|
+
this.modelRoutes.delete(o), this.modelRoutes.delete(n);
|
|
55225
55225
|
}), this.providers.delete(e), true) : false;
|
|
55226
55226
|
}
|
|
55227
55227
|
toggleProvider(e, t) {
|
|
@@ -55247,8 +55247,8 @@ var F = class {
|
|
|
55247
55247
|
parseTransformerConfig(e) {
|
|
55248
55248
|
return e ? Array.isArray(e) ? e.reduce((t, n) => {
|
|
55249
55249
|
if (Array.isArray(n)) {
|
|
55250
|
-
let [
|
|
55251
|
-
t[
|
|
55250
|
+
let [o, r = {}] = n;
|
|
55251
|
+
t[o] = r;
|
|
55252
55252
|
} else t[n] = {};
|
|
55253
55253
|
return t;
|
|
55254
55254
|
}, {}) : e : {};
|
|
@@ -55262,38 +55262,64 @@ var F = class {
|
|
|
55262
55262
|
}), { object: "list", data: e };
|
|
55263
55263
|
}
|
|
55264
55264
|
};
|
|
55265
|
-
var
|
|
55265
|
+
var T = [];
|
|
55266
|
+
for (let s = 0; s < 256; ++s) T.push((s + 256).toString(16).slice(1));
|
|
55267
|
+
function fe(s, e = 0) {
|
|
55268
|
+
return (T[s[e + 0]] + T[s[e + 1]] + T[s[e + 2]] + T[s[e + 3]] + "-" + T[s[e + 4]] + T[s[e + 5]] + "-" + T[s[e + 6]] + T[s[e + 7]] + "-" + T[s[e + 8]] + T[s[e + 9]] + "-" + T[s[e + 10]] + T[s[e + 11]] + T[s[e + 12]] + T[s[e + 13]] + T[s[e + 14]] + T[s[e + 15]]).toLowerCase();
|
|
55269
|
+
}
|
|
55270
|
+
var J = new Uint8Array(256);
|
|
55271
|
+
var U = J.length;
|
|
55272
|
+
function ee() {
|
|
55273
|
+
return U > J.length - 16 && ((0, import_crypto.randomFillSync)(J), U = 0), J.slice(U, U += 16);
|
|
55274
|
+
}
|
|
55275
|
+
var te = { randomUUID: import_crypto2.randomUUID };
|
|
55276
|
+
function Re(s, e, t) {
|
|
55277
|
+
if (te.randomUUID && !e && !s) return te.randomUUID();
|
|
55278
|
+
s = s || {};
|
|
55279
|
+
let n = s.random ?? s.rng?.() ?? ee();
|
|
55280
|
+
if (n.length < 16) throw new Error("Random bytes length must be >= 16");
|
|
55281
|
+
if (n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128, e) {
|
|
55282
|
+
if (t = t || 0, t < 0 || t + 16 > e.length) throw new RangeError(`UUID byte range ${t}:${t + 15} is out of buffer bounds`);
|
|
55283
|
+
for (let o = 0; o < 16; ++o) e[t + o] = n[o];
|
|
55284
|
+
return e;
|
|
55285
|
+
}
|
|
55286
|
+
return fe(n);
|
|
55287
|
+
}
|
|
55288
|
+
var H = Re;
|
|
55289
|
+
var j = class {
|
|
55266
55290
|
name = "Anthropic";
|
|
55267
55291
|
endPoint = "/v1/messages";
|
|
55268
|
-
transformRequestOut(e) {
|
|
55269
|
-
|
|
55292
|
+
async transformRequestOut(e) {
|
|
55293
|
+
y("Anthropic Request:", JSON.stringify(e, null, 2));
|
|
55270
55294
|
let t = [];
|
|
55271
55295
|
if (e.system) {
|
|
55272
55296
|
if (typeof e.system == "string") t.push({ role: "system", content: e.system });
|
|
55273
|
-
else if (Array.isArray(e.system)) {
|
|
55274
|
-
let
|
|
55275
|
-
t.push({ role: "system", content:
|
|
55276
|
-
}
|
|
55277
|
-
}
|
|
55278
|
-
return JSON.parse(JSON.stringify(e.messages || []))?.forEach((
|
|
55279
|
-
if (
|
|
55280
|
-
|
|
55281
|
-
|
|
55282
|
-
|
|
55283
|
-
|
|
55284
|
-
|
|
55285
|
-
|
|
55286
|
-
|
|
55287
|
-
|
|
55297
|
+
else if (Array.isArray(e.system) && e.system.length) {
|
|
55298
|
+
let r = e.system.filter((c) => c.type === "text" && c.text).map((c) => ({ type: "text", text: c.text, cache_control: c.cache_control }));
|
|
55299
|
+
t.push({ role: "system", content: r });
|
|
55300
|
+
}
|
|
55301
|
+
}
|
|
55302
|
+
return JSON.parse(JSON.stringify(e.messages || []))?.forEach((r, c) => {
|
|
55303
|
+
if (r.role === "user" || r.role === "assistant") {
|
|
55304
|
+
if (typeof r.content == "string") {
|
|
55305
|
+
t.push({ role: r.role, content: r.content });
|
|
55306
|
+
return;
|
|
55307
|
+
}
|
|
55308
|
+
if (Array.isArray(r.content)) {
|
|
55309
|
+
if (r.role === "user") {
|
|
55310
|
+
let d = r.content.filter((i) => i.type === "tool_result" && i.tool_use_id);
|
|
55311
|
+
d.length && d.forEach((i, p) => {
|
|
55312
|
+
let _ = { role: "tool", content: typeof i.content == "string" ? i.content : JSON.stringify(i.content), tool_call_id: i.tool_use_id, cache_control: i.cache_control };
|
|
55313
|
+
t.push(_);
|
|
55288
55314
|
});
|
|
55289
|
-
let
|
|
55290
|
-
|
|
55291
|
-
} else if (
|
|
55292
|
-
let
|
|
55293
|
-
|
|
55315
|
+
let l = r.content.filter((i) => i.type === "text" && i.text || i.type === "image" && i.source);
|
|
55316
|
+
l.length && t.push({ role: "user", content: l.map((i) => i?.type === "image" ? { type: "image_url", image_url: { url: i.source?.type === "base64" ? i.source.data : i.source.url }, media_type: i.source.media_type } : i) });
|
|
55317
|
+
} else if (r.role === "assistant") {
|
|
55318
|
+
let d = { role: "assistant", content: null }, l = r.content.filter((p) => p.type === "text" && p.text);
|
|
55319
|
+
l.length && (d.content = l.map((p) => p.text).join(`
|
|
55294
55320
|
`));
|
|
55295
|
-
let
|
|
55296
|
-
|
|
55321
|
+
let i = r.content.filter((p) => p.type === "tool_use" && p.id);
|
|
55322
|
+
i.length && (d.tool_calls = i.map((p) => ({ id: p.id, type: "function", function: { name: p.name, arguments: JSON.stringify(p.input || {}) } }))), t.push(d);
|
|
55297
55323
|
}
|
|
55298
55324
|
return;
|
|
55299
55325
|
}
|
|
@@ -55306,8 +55332,8 @@ var U = class {
|
|
|
55306
55332
|
let n = await this.convertOpenAIStreamToAnthropic(e.body);
|
|
55307
55333
|
return new Response(n, { headers: { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", Connection: "keep-alive" } });
|
|
55308
55334
|
} else {
|
|
55309
|
-
let n = await e.json(),
|
|
55310
|
-
return new Response(JSON.stringify(
|
|
55335
|
+
let n = await e.json(), o = this.convertOpenAIResponseToAnthropic(n);
|
|
55336
|
+
return new Response(JSON.stringify(o), { headers: { "Content-Type": "application/json" } });
|
|
55311
55337
|
}
|
|
55312
55338
|
}
|
|
55313
55339
|
convertAnthropicToolsToUnified(e) {
|
|
@@ -55315,157 +55341,176 @@ var U = class {
|
|
|
55315
55341
|
}
|
|
55316
55342
|
async convertOpenAIStreamToAnthropic(e) {
|
|
55317
55343
|
return new ReadableStream({ async start(n) {
|
|
55318
|
-
let
|
|
55319
|
-
if (!
|
|
55344
|
+
let o = new TextEncoder(), r = `msg_${Date.now()}`, c = "unknown", d = false, l = false, i = false, p = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), k = 0, g = 0, u = 0, a = false, v = false, h = 0, f = (x) => {
|
|
55345
|
+
if (!a) try {
|
|
55320
55346
|
n.enqueue(x);
|
|
55321
|
-
let
|
|
55322
|
-
|
|
55323
|
-
} catch (
|
|
55324
|
-
if (
|
|
55325
|
-
else throw
|
|
55347
|
+
let b = new TextDecoder().decode(x);
|
|
55348
|
+
y("send data:", b.trim());
|
|
55349
|
+
} catch (b) {
|
|
55350
|
+
if (b instanceof TypeError && b.message.includes("Controller is already closed")) a = true;
|
|
55351
|
+
else throw y(`send data error: ${b.message}`), b;
|
|
55326
55352
|
}
|
|
55327
55353
|
}, m = () => {
|
|
55328
|
-
if (!
|
|
55329
|
-
n.close(),
|
|
55354
|
+
if (!a) try {
|
|
55355
|
+
n.close(), a = true;
|
|
55330
55356
|
} catch (x) {
|
|
55331
|
-
if (x instanceof TypeError && x.message.includes("Controller is already closed"))
|
|
55357
|
+
if (x instanceof TypeError && x.message.includes("Controller is already closed")) a = true;
|
|
55332
55358
|
else throw x;
|
|
55333
55359
|
}
|
|
55334
|
-
},
|
|
55360
|
+
}, S = null;
|
|
55335
55361
|
try {
|
|
55336
|
-
|
|
55337
|
-
let x = new TextDecoder(),
|
|
55338
|
-
for (; !
|
|
55339
|
-
let { done: X, value: me } = await
|
|
55362
|
+
S = e.getReader();
|
|
55363
|
+
let x = new TextDecoder(), b = "";
|
|
55364
|
+
for (; !a; ) {
|
|
55365
|
+
let { done: X, value: me } = await S.read();
|
|
55340
55366
|
if (X) break;
|
|
55341
|
-
|
|
55342
|
-
let se =
|
|
55367
|
+
b += x.decode(me, { stream: true });
|
|
55368
|
+
let se = b.split(`
|
|
55343
55369
|
`);
|
|
55344
|
-
|
|
55370
|
+
b = se.pop() || "";
|
|
55345
55371
|
for (let ie of se) {
|
|
55346
|
-
if (
|
|
55372
|
+
if (a || i) break;
|
|
55347
55373
|
if (!ie.startsWith("data: ")) continue;
|
|
55348
55374
|
let Q = ie.slice(6);
|
|
55349
55375
|
if (Q !== "[DONE]") try {
|
|
55350
55376
|
let O = JSON.parse(Q);
|
|
55351
|
-
if (k++,
|
|
55352
|
-
let
|
|
55353
|
-
|
|
55354
|
-
data: ${JSON.stringify(
|
|
55377
|
+
if (k++, y("Original Response:", JSON.stringify(O, null, 2)), O.error) {
|
|
55378
|
+
let C = { type: "error", message: { type: "api_error", message: JSON.stringify(O.error) } };
|
|
55379
|
+
f(o.encode(`event: error
|
|
55380
|
+
data: ${JSON.stringify(C)}
|
|
55355
55381
|
|
|
55356
55382
|
`));
|
|
55357
55383
|
continue;
|
|
55358
55384
|
}
|
|
55359
|
-
if (
|
|
55385
|
+
if (c = O.model || c, !d && !a && !i) {
|
|
55360
55386
|
d = true;
|
|
55361
|
-
let
|
|
55362
|
-
|
|
55363
|
-
data: ${JSON.stringify(
|
|
55387
|
+
let C = { type: "message_start", message: { id: r, type: "message", role: "assistant", content: [], model: c, stop_reason: null, stop_sequence: null, usage: { input_tokens: 1, output_tokens: 1 } } };
|
|
55388
|
+
f(o.encode(`event: message_start
|
|
55389
|
+
data: ${JSON.stringify(C)}
|
|
55364
55390
|
|
|
55365
55391
|
`));
|
|
55366
55392
|
}
|
|
55367
55393
|
let w = O.choices?.[0];
|
|
55368
55394
|
if (!w) continue;
|
|
55369
|
-
if (w?.delta?.thinking && !
|
|
55395
|
+
if (w?.delta?.thinking && !a && !i) {
|
|
55370
55396
|
if (!v) {
|
|
55371
|
-
let
|
|
55372
|
-
|
|
55373
|
-
data: ${JSON.stringify(
|
|
55397
|
+
let C = { type: "content_block_start", index: h, content_block: { type: "thinking", thinking: "" } };
|
|
55398
|
+
f(o.encode(`event: content_block_start
|
|
55399
|
+
data: ${JSON.stringify(C)}
|
|
55374
55400
|
|
|
55375
55401
|
`)), v = true;
|
|
55376
55402
|
}
|
|
55377
55403
|
if (w.delta.thinking.signature) {
|
|
55378
|
-
let
|
|
55379
|
-
|
|
55380
|
-
data: ${JSON.stringify(
|
|
55404
|
+
let C = { type: "content_block_delta", index: h, delta: { type: "signature_delta", signature: w.delta.thinking.signature } };
|
|
55405
|
+
f(o.encode(`event: content_block_delta
|
|
55406
|
+
data: ${JSON.stringify(C)}
|
|
55381
55407
|
|
|
55382
55408
|
`));
|
|
55383
|
-
let
|
|
55384
|
-
|
|
55385
|
-
data: ${JSON.stringify(
|
|
55409
|
+
let R = { type: "content_block_stop", index: h };
|
|
55410
|
+
f(o.encode(`event: content_block_stop
|
|
55411
|
+
data: ${JSON.stringify(R)}
|
|
55386
55412
|
|
|
55387
55413
|
`)), h++;
|
|
55388
55414
|
} else if (w.delta.thinking.content) {
|
|
55389
|
-
let
|
|
55390
|
-
|
|
55391
|
-
data: ${JSON.stringify(
|
|
55415
|
+
let C = { type: "content_block_delta", index: h, delta: { type: "thinking_delta", thinking: w.delta.thinking.content || "" } };
|
|
55416
|
+
f(o.encode(`event: content_block_delta
|
|
55417
|
+
data: ${JSON.stringify(C)}
|
|
55392
55418
|
|
|
55393
55419
|
`));
|
|
55394
55420
|
}
|
|
55395
55421
|
}
|
|
55396
|
-
if (w?.delta?.content && !
|
|
55397
|
-
if (g++, !
|
|
55398
|
-
|
|
55399
|
-
let
|
|
55400
|
-
|
|
55401
|
-
data: ${JSON.stringify(
|
|
55422
|
+
if (w?.delta?.content && !a && !i) {
|
|
55423
|
+
if (g++, !l && !i) {
|
|
55424
|
+
l = true;
|
|
55425
|
+
let C = { type: "content_block_start", index: h, content_block: { type: "text", text: "" } };
|
|
55426
|
+
f(o.encode(`event: content_block_start
|
|
55427
|
+
data: ${JSON.stringify(C)}
|
|
55402
55428
|
|
|
55403
55429
|
`));
|
|
55404
55430
|
}
|
|
55405
|
-
if (!
|
|
55406
|
-
let
|
|
55407
|
-
|
|
55408
|
-
data: ${JSON.stringify(
|
|
55431
|
+
if (!a && !i) {
|
|
55432
|
+
let C = { type: "content_block_delta", index: h, delta: { type: "text_delta", text: w.delta.content } };
|
|
55433
|
+
f(o.encode(`event: content_block_delta
|
|
55434
|
+
data: ${JSON.stringify(C)}
|
|
55409
55435
|
|
|
55410
55436
|
`));
|
|
55411
55437
|
}
|
|
55412
55438
|
}
|
|
55413
|
-
if (w?.delta?.
|
|
55414
|
-
|
|
55415
|
-
|
|
55416
|
-
|
|
55417
|
-
|
|
55418
|
-
|
|
55419
|
-
|
|
55420
|
-
|
|
55421
|
-
|
|
55439
|
+
if (w?.delta?.annotations?.length && !a && !i) {
|
|
55440
|
+
let C = { type: "content_block_stop", index: h };
|
|
55441
|
+
f(o.encode(`event: content_block_stop
|
|
55442
|
+
data: ${JSON.stringify(C)}
|
|
55443
|
+
|
|
55444
|
+
`)), l = false, w?.delta?.annotations.forEach((R, P, he) => {
|
|
55445
|
+
h++;
|
|
55446
|
+
let E = { type: "content_block_start", index: h, content_block: { type: "web_search_tool_result", tool_use_id: `srvtoolu_${H()}`, content: [{ type: "web_search_result", title: R.url_citation.title, url: R.url_citation.url }] } };
|
|
55447
|
+
f(o.encode(`event: content_block_start
|
|
55448
|
+
data: ${JSON.stringify(E)}
|
|
55449
|
+
|
|
55450
|
+
`));
|
|
55451
|
+
let A = { type: "content_block_stop", index: h };
|
|
55452
|
+
f(o.encode(`event: content_block_stop
|
|
55453
|
+
data: ${JSON.stringify(A)}
|
|
55454
|
+
|
|
55455
|
+
`));
|
|
55456
|
+
});
|
|
55457
|
+
}
|
|
55458
|
+
if (w?.delta?.tool_calls && !a && !i) {
|
|
55459
|
+
u++;
|
|
55460
|
+
let C = /* @__PURE__ */ new Set();
|
|
55461
|
+
for (let R of w.delta.tool_calls) {
|
|
55462
|
+
if (a) break;
|
|
55463
|
+
let P = R.index ?? 0;
|
|
55464
|
+
if (C.has(P)) continue;
|
|
55465
|
+
if (C.add(P), !_.has(P)) {
|
|
55466
|
+
let E = l ? _.size + 1 : _.size;
|
|
55422
55467
|
if (E !== 0) {
|
|
55423
|
-
|
|
55424
|
-
let
|
|
55425
|
-
|
|
55426
|
-
data: ${JSON.stringify(
|
|
55468
|
+
y("content_block_stop2");
|
|
55469
|
+
let ge = { type: "content_block_stop", index: h };
|
|
55470
|
+
f(o.encode(`event: content_block_stop
|
|
55471
|
+
data: ${JSON.stringify(ge)}
|
|
55427
55472
|
|
|
55428
55473
|
`)), h++;
|
|
55429
55474
|
}
|
|
55430
|
-
|
|
55431
|
-
let
|
|
55432
|
-
|
|
55475
|
+
_.set(P, E);
|
|
55476
|
+
let A = R.id || `call_${Date.now()}_${P}`, M = R.function?.name || `tool_${P}`, N = { type: "content_block_start", index: h, content_block: { type: "tool_use", id: A, name: M, input: {} } };
|
|
55477
|
+
f(o.encode(`event: content_block_start
|
|
55433
55478
|
data: ${JSON.stringify(N)}
|
|
55434
55479
|
|
|
55435
55480
|
`));
|
|
55436
|
-
let
|
|
55437
|
-
|
|
55438
|
-
} else if (
|
|
55439
|
-
let E =
|
|
55440
|
-
E.id.startsWith("call_") && E.name.startsWith("tool_") && (E.id =
|
|
55481
|
+
let $ = { id: A, name: M, arguments: "", contentBlockIndex: E };
|
|
55482
|
+
p.set(P, $);
|
|
55483
|
+
} else if (R.id && R.function?.name) {
|
|
55484
|
+
let E = p.get(P);
|
|
55485
|
+
E.id.startsWith("call_") && E.name.startsWith("tool_") && (E.id = R.id, E.name = R.function.name);
|
|
55441
55486
|
}
|
|
55442
|
-
if (
|
|
55443
|
-
if (
|
|
55444
|
-
let
|
|
55445
|
-
if (
|
|
55446
|
-
|
|
55487
|
+
if (R.function?.arguments && !a && !i) {
|
|
55488
|
+
if (_.get(P) === void 0) continue;
|
|
55489
|
+
let A = p.get(P);
|
|
55490
|
+
if (A) {
|
|
55491
|
+
A.arguments += R.function.arguments;
|
|
55447
55492
|
try {
|
|
55448
|
-
let
|
|
55493
|
+
let M = null, N = A.arguments.trim();
|
|
55449
55494
|
if (N.startsWith("{") && N.endsWith("}")) try {
|
|
55450
|
-
|
|
55451
|
-
} catch (
|
|
55452
|
-
|
|
55495
|
+
M = JSON.parse(N);
|
|
55496
|
+
} catch ($) {
|
|
55497
|
+
y("Tool call index:", P, "error", $.message);
|
|
55453
55498
|
}
|
|
55454
|
-
} catch (
|
|
55455
|
-
|
|
55499
|
+
} catch (M) {
|
|
55500
|
+
y("Tool call index:", P, "error", M.message);
|
|
55456
55501
|
}
|
|
55457
55502
|
}
|
|
55458
55503
|
try {
|
|
55459
|
-
let
|
|
55460
|
-
|
|
55461
|
-
data: ${JSON.stringify(
|
|
55504
|
+
let M = { type: "content_block_delta", index: h, delta: { type: "input_json_delta", partial_json: R.function.arguments } };
|
|
55505
|
+
f(o.encode(`event: content_block_delta
|
|
55506
|
+
data: ${JSON.stringify(M)}
|
|
55462
55507
|
|
|
55463
55508
|
`));
|
|
55464
55509
|
} catch {
|
|
55465
55510
|
try {
|
|
55466
|
-
let N =
|
|
55467
|
-
|
|
55468
|
-
data: ${JSON.stringify(
|
|
55511
|
+
let N = R.function.arguments.replace(/[\x00-\x1F\x7F-\x9F]/g, "").replace(/\\/g, "\\\\").replace(/"/g, '\\"'), $ = { type: "content_block_delta", index: h, delta: { type: "input_json_delta", partial_json: N } };
|
|
55512
|
+
f(o.encode(`event: content_block_delta
|
|
55513
|
+
data: ${JSON.stringify($)}
|
|
55469
55514
|
|
|
55470
55515
|
`));
|
|
55471
55516
|
} catch (N) {
|
|
@@ -55475,134 +55520,159 @@ data: ${JSON.stringify(H)}
|
|
|
55475
55520
|
}
|
|
55476
55521
|
}
|
|
55477
55522
|
}
|
|
55478
|
-
if (w?.finish_reason && !
|
|
55479
|
-
if (
|
|
55480
|
-
|
|
55481
|
-
let
|
|
55482
|
-
|
|
55483
|
-
data: ${JSON.stringify(
|
|
55523
|
+
if (w?.finish_reason && !a && !i) {
|
|
55524
|
+
if (i = true, g === 0 && u === 0 && console.error("Warning: No content in the stream response!"), (l || u > 0) && !a) {
|
|
55525
|
+
y("content_block_stop hasTextContentStarted");
|
|
55526
|
+
let C = { type: "content_block_stop", index: h };
|
|
55527
|
+
f(o.encode(`event: content_block_stop
|
|
55528
|
+
data: ${JSON.stringify(C)}
|
|
55484
55529
|
|
|
55485
55530
|
`));
|
|
55486
55531
|
}
|
|
55487
|
-
if (!
|
|
55532
|
+
if (!a) {
|
|
55488
55533
|
let P = { type: "message_delta", delta: { stop_reason: { stop: "end_turn", length: "max_tokens", tool_calls: "tool_use", content_filter: "stop_sequence" }[w.finish_reason] || "end_turn", stop_sequence: null }, usage: { input_tokens: O.usage?.prompt_tokens || 0, output_tokens: O.usage?.completion_tokens || 0 } };
|
|
55489
|
-
|
|
55534
|
+
f(o.encode(`event: message_delta
|
|
55490
55535
|
data: ${JSON.stringify(P)}
|
|
55491
55536
|
|
|
55492
55537
|
`));
|
|
55493
55538
|
}
|
|
55494
|
-
if (!
|
|
55495
|
-
let
|
|
55496
|
-
|
|
55497
|
-
data: ${JSON.stringify(
|
|
55539
|
+
if (!a) {
|
|
55540
|
+
let C = { type: "message_stop" };
|
|
55541
|
+
f(o.encode(`event: message_stop
|
|
55542
|
+
data: ${JSON.stringify(C)}
|
|
55498
55543
|
|
|
55499
55544
|
`));
|
|
55500
55545
|
}
|
|
55501
55546
|
break;
|
|
55502
55547
|
}
|
|
55503
55548
|
} catch (O) {
|
|
55504
|
-
|
|
55549
|
+
y(`parseError: ${O.name} message: ${O.message} stack: ${O.stack} data: ${Q}`);
|
|
55505
55550
|
}
|
|
55506
55551
|
}
|
|
55507
55552
|
}
|
|
55508
55553
|
m();
|
|
55509
55554
|
} catch (x) {
|
|
55510
|
-
if (!
|
|
55555
|
+
if (!a) try {
|
|
55511
55556
|
n.error(x);
|
|
55512
|
-
} catch (
|
|
55513
|
-
console.error(
|
|
55557
|
+
} catch (b) {
|
|
55558
|
+
console.error(b);
|
|
55514
55559
|
}
|
|
55515
55560
|
} finally {
|
|
55516
|
-
if (
|
|
55517
|
-
|
|
55561
|
+
if (S) try {
|
|
55562
|
+
S.releaseLock();
|
|
55518
55563
|
} catch (x) {
|
|
55519
55564
|
console.error(x);
|
|
55520
55565
|
}
|
|
55521
55566
|
}
|
|
55522
55567
|
}, cancel(n) {
|
|
55523
|
-
|
|
55568
|
+
y("cancle stream:", n);
|
|
55524
55569
|
} });
|
|
55525
55570
|
}
|
|
55526
55571
|
convertOpenAIResponseToAnthropic(e) {
|
|
55527
|
-
|
|
55572
|
+
y("Original OpenAI response:", JSON.stringify(e, null, 2));
|
|
55528
55573
|
let t = e.choices[0];
|
|
55529
55574
|
if (!t) throw new Error("No choices found in OpenAI response");
|
|
55530
55575
|
let n = [];
|
|
55531
|
-
|
|
55576
|
+
if (t.message.annotations) {
|
|
55577
|
+
let r = `srvtoolu_${H()}`;
|
|
55578
|
+
n.push({ type: "server_tool_use", id: r, name: "web_search", input: { query: "" } }), n.push({ type: "web_search_tool_result", tool_use_id: r, content: t.message.annotations.map((c) => ({ type: "web_search_result", url: c.url_citation.url, title: c.url_citation.title })) });
|
|
55579
|
+
}
|
|
55580
|
+
t.message.content && n.push({ type: "text", text: t.message.content }), t.message.tool_calls && t.message.tool_calls.length > 0 && t.message.tool_calls.forEach((r, c) => {
|
|
55532
55581
|
let d = {};
|
|
55533
55582
|
try {
|
|
55534
|
-
let
|
|
55535
|
-
typeof
|
|
55583
|
+
let l = r.function.arguments || "{}";
|
|
55584
|
+
typeof l == "object" ? d = l : typeof l == "string" && (d = JSON.parse(l));
|
|
55536
55585
|
} catch {
|
|
55537
|
-
d = { text:
|
|
55586
|
+
d = { text: r.function.arguments || "" };
|
|
55538
55587
|
}
|
|
55539
|
-
n.push({ type: "tool_use", id:
|
|
55588
|
+
n.push({ type: "tool_use", id: r.id, name: r.function.name, input: d });
|
|
55540
55589
|
});
|
|
55541
|
-
let
|
|
55542
|
-
return
|
|
55590
|
+
let o = { id: e.id, type: "message", role: "assistant", model: e.model, content: n, stop_reason: t.finish_reason === "stop" ? "end_turn" : t.finish_reason === "length" ? "max_tokens" : t.finish_reason === "tool_calls" ? "tool_use" : t.finish_reason === "content_filter" ? "stop_sequence" : "end_turn", stop_sequence: null, usage: { input_tokens: e.usage?.prompt_tokens || 0, output_tokens: e.usage?.completion_tokens || 0 } };
|
|
55591
|
+
return y("Conversion complete, final Anthropic response:", JSON.stringify(o, null, 2)), o;
|
|
55543
55592
|
}
|
|
55544
55593
|
};
|
|
55545
|
-
function
|
|
55594
|
+
function ne(s) {
|
|
55546
55595
|
if (!(!s || typeof s != "object")) {
|
|
55547
55596
|
if (Array.isArray(s)) {
|
|
55548
|
-
s.forEach(
|
|
55597
|
+
s.forEach(ne);
|
|
55549
55598
|
return;
|
|
55550
55599
|
}
|
|
55551
55600
|
delete s.$schema, delete s.additionalProperties, s.type === "string" && s.format && !["enum", "date-time"].includes(s.format) && delete s.format, Object.keys(s).forEach((e) => {
|
|
55552
|
-
|
|
55601
|
+
ne(s[e]);
|
|
55553
55602
|
});
|
|
55554
55603
|
}
|
|
55555
55604
|
}
|
|
55556
|
-
var
|
|
55605
|
+
var D = class {
|
|
55557
55606
|
name = "gemini";
|
|
55558
55607
|
endPoint = "/v1beta/models/:modelAndAction";
|
|
55559
|
-
transformRequestIn(e, t) {
|
|
55608
|
+
async transformRequestIn(e, t) {
|
|
55560
55609
|
return { body: { contents: e.messages.map((n) => {
|
|
55561
|
-
let
|
|
55562
|
-
n.role === "assistant" ?
|
|
55563
|
-
let
|
|
55564
|
-
return typeof n.content == "string" ?
|
|
55565
|
-
if (
|
|
55566
|
-
|
|
55567
|
-
|
|
55610
|
+
let o;
|
|
55611
|
+
n.role === "assistant" ? o = "model" : (["user", "system", "tool"].includes(n.role), o = "user");
|
|
55612
|
+
let r = [];
|
|
55613
|
+
return typeof n.content == "string" ? r.push({ text: n.content }) : Array.isArray(n.content) && r.push(...n.content.map((c) => {
|
|
55614
|
+
if (c.type === "text") return { text: c.text || "" };
|
|
55615
|
+
if (c.type === "image_url") return c.image_url.url.startsWith("http") ? { file_data: { mime_type: c.media_type, file_uri: c.image_url.url } } : { inlineData: { mime_type: c.media_type, data: c.image_url.url } };
|
|
55616
|
+
})), Array.isArray(n.tool_calls) && r.push(...n.tool_calls.map((c) => ({ functionCall: { id: c.id || `tool_${Math.random().toString(36).substring(2, 15)}`, name: c.function.name, args: JSON.parse(c.function.arguments || "{}") } }))), { role: o, parts: r };
|
|
55617
|
+
}), tools: [{ functionDeclarations: e.tools?.filter((n) => n.function.name !== "web_search")?.map((n) => (n.function.parameters && ne(n.function.parameters), { name: n.function.name, description: n.function.description, parameters: n.function.parameters })) || [] }, e.tools?.find((n) => n.function.name === "web_search") ? { google_search: {} } : void 0] }, config: { url: new URL(`./${e.model}:${e.stream ? "streamGenerateContent?alt=sse" : "generateContent"}`, t.baseUrl), headers: { "x-goog-api-key": t.apiKey, Authorization: void 0 } } };
|
|
55568
55618
|
}
|
|
55569
55619
|
transformRequestOut(e) {
|
|
55570
|
-
let t = e.contents, n = e.tools,
|
|
55571
|
-
return Array.isArray(t) && t.forEach((
|
|
55572
|
-
typeof
|
|
55573
|
-
}), Array.isArray(n) && (
|
|
55574
|
-
Array.isArray(
|
|
55575
|
-
|
|
55620
|
+
let t = e.contents, n = e.tools, o = e.model, r = e.max_tokens, c = e.temperature, d = e.stream, l = e.tool_choice, i = { messages: [], model: o, max_tokens: r, temperature: c, stream: d, tool_choice: l };
|
|
55621
|
+
return Array.isArray(t) && t.forEach((p) => {
|
|
55622
|
+
typeof p == "string" ? i.messages.push({ role: "user", content: p }) : typeof p.text == "string" ? i.messages.push({ role: "user", content: p.text || null }) : p.role === "user" ? i.messages.push({ role: "user", content: p?.parts?.map((_) => ({ type: "text", text: _.text || "" })) || [] }) : p.role === "model" && i.messages.push({ role: "assistant", content: p?.parts?.map((_) => ({ type: "text", text: _.text || "" })) || [] });
|
|
55623
|
+
}), Array.isArray(n) && (i.tools = [], n.forEach((p) => {
|
|
55624
|
+
Array.isArray(p.functionDeclarations) && p.functionDeclarations.forEach((_) => {
|
|
55625
|
+
i.tools.push({ type: "function", function: { name: _.name, description: _.description, parameters: _.parameters } });
|
|
55576
55626
|
});
|
|
55577
|
-
})),
|
|
55627
|
+
})), i;
|
|
55578
55628
|
}
|
|
55579
55629
|
async transformResponseOut(e) {
|
|
55580
55630
|
if (e.headers.get("Content-Type")?.includes("application/json")) {
|
|
55581
|
-
let t = await e.json(), n = t.candidates[0].content.parts
|
|
55631
|
+
let t = await e.json(), n = t.candidates[0].content.parts?.filter((r) => r.functionCall)?.map((r) => ({ id: r.functionCall?.id || `tool_${Math.random().toString(36).substring(2, 15)}`, type: "function", function: { name: r.functionCall?.name, arguments: JSON.stringify(r.functionCall?.args || {}) } })), o = { id: t.responseId, choices: [{ finish_reason: t.candidates[0].finishReason?.toLowerCase() || null, index: 0, message: { content: t.candidates[0].content.parts?.filter((r) => r.text)?.map((r) => r.text)?.join(`
|
|
55582
55632
|
`), role: "assistant", tool_calls: n.length > 0 ? n : void 0 } }], created: parseInt((/* @__PURE__ */ new Date()).getTime() / 1e3 + "", 10), model: t.modelVersion, object: "chat.completion", usage: { completion_tokens: t.usageMetadata.candidatesTokenCount, prompt_tokens: t.usageMetadata.promptTokenCount, total_tokens: t.usageMetadata.totalTokenCount } };
|
|
55583
|
-
return new Response(JSON.stringify(
|
|
55633
|
+
return new Response(JSON.stringify(o), { status: e.status, statusText: e.statusText, headers: e.headers });
|
|
55584
55634
|
} else if (e.headers.get("Content-Type")?.includes("stream")) {
|
|
55585
55635
|
if (!e.body) return e;
|
|
55586
|
-
let t = new TextDecoder(), n = new TextEncoder(),
|
|
55587
|
-
|
|
55588
|
-
|
|
55589
|
-
|
|
55590
|
-
|
|
55591
|
-
|
|
55592
|
-
|
|
55593
|
-
|
|
55594
|
-
|
|
55595
|
-
|
|
55596
|
-
|
|
55597
|
-
|
|
55598
|
-
|
|
55636
|
+
let t = new TextDecoder(), n = new TextEncoder(), o = (c, d) => {
|
|
55637
|
+
if (c.startsWith("data: ")) {
|
|
55638
|
+
let l = c.slice(6).trim();
|
|
55639
|
+
if (l) {
|
|
55640
|
+
y("gemini chunk:", l);
|
|
55641
|
+
try {
|
|
55642
|
+
let i = JSON.parse(l);
|
|
55643
|
+
y("groundingMetadata: ", JSON.stringify(i.candidates[0].groundingMetadata));
|
|
55644
|
+
let p = i.candidates[0].content.parts?.filter((k) => k.functionCall)?.map((k) => ({ id: k.functionCall?.id || `tool_${Math.random().toString(36).substring(2, 15)}`, type: "function", function: { name: k.functionCall?.name, arguments: JSON.stringify(k.functionCall?.args || {}) } })), _ = { choices: [{ delta: { role: "assistant", content: i.candidates[0].content.parts?.filter((k) => k.text)?.map((k) => k.text)?.join(`
|
|
55645
|
+
`), tool_calls: p.length > 0 ? p : void 0 }, finish_reason: i.candidates[0].finishReason?.toLowerCase() || null, index: i.candidates[0].index || p.length > 0 ? 1 : 0, logprobs: null }], created: parseInt((/* @__PURE__ */ new Date()).getTime() / 1e3 + "", 10), id: i.responseId || "", model: i.modelVersion || "", object: "chat.completion.chunk", system_fingerprint: "fp_a49d71b8a1", usage: { completion_tokens: i.usageMetadata.candidatesTokenCount, prompt_tokens: i.usageMetadata.promptTokenCount, total_tokens: i.usageMetadata.totalTokenCount } };
|
|
55646
|
+
i.candidates[0]?.groundingMetadata?.groundingChunks?.length && (_.choices[0].delta.annotations = i.candidates[0].groundingMetadata.groundingChunks.map((k, g) => {
|
|
55647
|
+
let u = i.candidates[0]?.groundingMetadata?.groundingSupports?.filter((a) => a.groundingChunkIndices.includes(g));
|
|
55648
|
+
return { type: "url_citation", url_citation: { url: k.web.uri, title: k.web.title, content: u?.[0].segment.text, start_index: u?.[0].segment.startIndex, end_index: u?.[0].segment.endIndex } };
|
|
55649
|
+
})), d.enqueue(n.encode(`data: ${JSON.stringify(_)}
|
|
55599
55650
|
|
|
55600
55651
|
`));
|
|
55652
|
+
} catch (i) {
|
|
55653
|
+
y("Error parsing Gemini stream chunk", l, i.message);
|
|
55654
|
+
}
|
|
55601
55655
|
}
|
|
55602
|
-
}
|
|
55603
|
-
|
|
55656
|
+
}
|
|
55657
|
+
}, r = new ReadableStream({ async start(c) {
|
|
55658
|
+
let d = e.body.getReader(), l = "";
|
|
55659
|
+
try {
|
|
55660
|
+
for (; ; ) {
|
|
55661
|
+
let { done: i, value: p } = await d.read();
|
|
55662
|
+
if (i) {
|
|
55663
|
+
l && o(l, c);
|
|
55664
|
+
break;
|
|
55665
|
+
}
|
|
55666
|
+
l += t.decode(p, { stream: true });
|
|
55667
|
+
let _ = l.split(`
|
|
55668
|
+
`);
|
|
55669
|
+
l = _.pop() || "";
|
|
55670
|
+
for (let k of _) o(k, c);
|
|
55671
|
+
}
|
|
55672
|
+
} catch (i) {
|
|
55673
|
+
c.error(i);
|
|
55604
55674
|
} finally {
|
|
55605
|
-
|
|
55675
|
+
c.close();
|
|
55606
55676
|
}
|
|
55607
55677
|
} });
|
|
55608
55678
|
return new Response(r, { status: e.status, statusText: e.statusText, headers: e.headers });
|
|
@@ -55610,7 +55680,7 @@ var J = class {
|
|
|
55610
55680
|
return e;
|
|
55611
55681
|
}
|
|
55612
55682
|
};
|
|
55613
|
-
var
|
|
55683
|
+
var B = class {
|
|
55614
55684
|
name = "deepseek";
|
|
55615
55685
|
transformRequestIn(e) {
|
|
55616
55686
|
return e.max_tokens && e.max_tokens > 8192 && (e.max_tokens = 8192), e;
|
|
@@ -55621,41 +55691,41 @@ var j = class {
|
|
|
55621
55691
|
return new Response(JSON.stringify(t), { status: e.status, statusText: e.statusText, headers: e.headers });
|
|
55622
55692
|
} else if (e.headers.get("Content-Type")?.includes("stream")) {
|
|
55623
55693
|
if (!e.body) return e;
|
|
55624
|
-
let t = new TextDecoder(), n = new TextEncoder(),
|
|
55625
|
-
let
|
|
55694
|
+
let t = new TextDecoder(), n = new TextEncoder(), o = "", r = false, c = new ReadableStream({ async start(d) {
|
|
55695
|
+
let l = e.body.getReader();
|
|
55626
55696
|
try {
|
|
55627
55697
|
for (; ; ) {
|
|
55628
|
-
let { done:
|
|
55629
|
-
if (
|
|
55630
|
-
let k = t.decode(
|
|
55698
|
+
let { done: i, value: p } = await l.read();
|
|
55699
|
+
if (i) break;
|
|
55700
|
+
let k = t.decode(p, { stream: true }).split(`
|
|
55631
55701
|
`);
|
|
55632
55702
|
for (let g of k) if (g.startsWith("data: ") && g.trim() !== "data: [DONE]") try {
|
|
55633
|
-
let
|
|
55634
|
-
if (
|
|
55635
|
-
|
|
55636
|
-
let
|
|
55637
|
-
delete
|
|
55638
|
-
let v = `data: ${JSON.stringify(
|
|
55703
|
+
let u = JSON.parse(g.slice(6));
|
|
55704
|
+
if (u.choices?.[0]?.delta?.reasoning_content) {
|
|
55705
|
+
o += u.choices[0].delta.reasoning_content;
|
|
55706
|
+
let a = { ...u, choices: [{ ...u.choices[0], delta: { ...u.choices[0].delta, thinking: { content: u.choices[0].delta.reasoning_content } } }] };
|
|
55707
|
+
delete a.choices[0].delta.reasoning_content;
|
|
55708
|
+
let v = `data: ${JSON.stringify(a)}
|
|
55639
55709
|
|
|
55640
55710
|
`;
|
|
55641
55711
|
d.enqueue(n.encode(v));
|
|
55642
55712
|
continue;
|
|
55643
55713
|
}
|
|
55644
|
-
if (
|
|
55645
|
-
|
|
55646
|
-
let
|
|
55714
|
+
if (u.choices?.[0]?.delta?.content && o && !r) {
|
|
55715
|
+
r = true;
|
|
55716
|
+
let a = Date.now().toString(), v = { ...u, choices: [{ ...u.choices[0], delta: { ...u.choices[0].delta, content: null, thinking: { content: o, signature: a } } }] };
|
|
55647
55717
|
delete v.choices[0].delta.reasoning_content;
|
|
55648
55718
|
let h = `data: ${JSON.stringify(v)}
|
|
55649
55719
|
|
|
55650
55720
|
`;
|
|
55651
55721
|
d.enqueue(n.encode(h));
|
|
55652
55722
|
}
|
|
55653
|
-
if (
|
|
55654
|
-
|
|
55655
|
-
let
|
|
55723
|
+
if (u.choices[0]?.delta?.reasoning_content && delete u.choices[0].delta.reasoning_content, u.choices?.[0]?.delta && Object.keys(u.choices[0].delta).length > 0) {
|
|
55724
|
+
r && u.choices[0].index++;
|
|
55725
|
+
let a = `data: ${JSON.stringify(u)}
|
|
55656
55726
|
|
|
55657
55727
|
`;
|
|
55658
|
-
d.enqueue(n.encode(
|
|
55728
|
+
d.enqueue(n.encode(a));
|
|
55659
55729
|
}
|
|
55660
55730
|
} catch {
|
|
55661
55731
|
d.enqueue(n.encode(g + `
|
|
@@ -55664,23 +55734,23 @@ var j = class {
|
|
|
55664
55734
|
else d.enqueue(n.encode(g + `
|
|
55665
55735
|
`));
|
|
55666
55736
|
}
|
|
55667
|
-
} catch (
|
|
55668
|
-
d.error(
|
|
55737
|
+
} catch (i) {
|
|
55738
|
+
d.error(i);
|
|
55669
55739
|
} finally {
|
|
55670
55740
|
try {
|
|
55671
|
-
|
|
55672
|
-
} catch (
|
|
55673
|
-
console.error("Error releasing reader lock:",
|
|
55741
|
+
l.releaseLock();
|
|
55742
|
+
} catch (i) {
|
|
55743
|
+
console.error("Error releasing reader lock:", i);
|
|
55674
55744
|
}
|
|
55675
55745
|
d.close();
|
|
55676
55746
|
}
|
|
55677
55747
|
} });
|
|
55678
|
-
return new Response(
|
|
55748
|
+
return new Response(c, { status: e.status, statusText: e.statusText, headers: { "Content-Type": e.headers.get("Content-Type") || "text/plain", "Cache-Control": "no-cache", Connection: "keep-alive" } });
|
|
55679
55749
|
}
|
|
55680
55750
|
return e;
|
|
55681
55751
|
}
|
|
55682
55752
|
};
|
|
55683
|
-
var
|
|
55753
|
+
var W = class {
|
|
55684
55754
|
name = "tooluse";
|
|
55685
55755
|
transformRequestIn(e) {
|
|
55686
55756
|
return e.messages.push({ role: "system", content: "<system-reminder>Tool mode is active. The user expects you to proactively execute the most suitable tool to help complete the task. \nBefore invoking a tool, you must carefully evaluate whether it matches the current task. If no available tool is appropriate for the task, you MUST call the `ExitTool` to exit tool mode \u2014 this is the only valid way to terminate tool mode.\nAlways prioritize completing the user's task effectively and efficiently by using tools whenever appropriate.</system-reminder>" }), e.tools?.length && (e.tool_choice = "required", e.tools.unshift({ type: "function", function: { name: "ExitTool", description: `Use this tool when you are in tool mode and have completed the task. This is the only valid way to exit tool mode.
|
|
@@ -55693,33 +55763,33 @@ Examples:
|
|
|
55693
55763
|
if (e.headers.get("Content-Type")?.includes("application/json")) {
|
|
55694
55764
|
let t = await e.json();
|
|
55695
55765
|
if (t?.choices[0]?.message.tool_calls?.length && t?.choices[0]?.message.tool_calls[0]?.function?.name === "ExitTool") {
|
|
55696
|
-
let n = t?.choices[0]?.message.tool_calls[0],
|
|
55697
|
-
t.choices[0].message.content =
|
|
55766
|
+
let n = t?.choices[0]?.message.tool_calls[0], o = JSON.parse(n.function.arguments || "{}");
|
|
55767
|
+
t.choices[0].message.content = o.response || "", delete t.choices[0].message.tool_calls;
|
|
55698
55768
|
}
|
|
55699
55769
|
return new Response(JSON.stringify(t), { status: e.status, statusText: e.statusText, headers: e.headers });
|
|
55700
55770
|
} else if (e.headers.get("Content-Type")?.includes("stream")) {
|
|
55701
55771
|
if (!e.body) return e;
|
|
55702
|
-
let t = new TextDecoder(), n = new TextEncoder(),
|
|
55703
|
-
let
|
|
55772
|
+
let t = new TextDecoder(), n = new TextEncoder(), o = -1, r = "", c = new ReadableStream({ async start(d) {
|
|
55773
|
+
let l = e.body.getReader();
|
|
55704
55774
|
try {
|
|
55705
55775
|
for (; ; ) {
|
|
55706
|
-
let { done:
|
|
55707
|
-
if (
|
|
55708
|
-
let k = t.decode(
|
|
55776
|
+
let { done: i, value: p } = await l.read();
|
|
55777
|
+
if (i) break;
|
|
55778
|
+
let k = t.decode(p, { stream: true }).split(`
|
|
55709
55779
|
`);
|
|
55710
55780
|
for (let g of k) if (g.startsWith("data: ") && g.trim() !== "data: [DONE]") try {
|
|
55711
|
-
let
|
|
55712
|
-
if (
|
|
55713
|
-
let
|
|
55714
|
-
if (
|
|
55715
|
-
|
|
55781
|
+
let u = JSON.parse(g.slice(6));
|
|
55782
|
+
if (u.choices[0]?.delta?.tool_calls?.length) {
|
|
55783
|
+
let a = u.choices[0].delta.tool_calls[0];
|
|
55784
|
+
if (a.function?.name === "ExitTool") {
|
|
55785
|
+
o = a.index;
|
|
55716
55786
|
continue;
|
|
55717
|
-
} else if (
|
|
55718
|
-
|
|
55787
|
+
} else if (o > -1 && a.index === o && a.function.arguments) {
|
|
55788
|
+
r += a.function.arguments;
|
|
55719
55789
|
try {
|
|
55720
|
-
let v = JSON.parse(
|
|
55721
|
-
|
|
55722
|
-
let h = `data: ${JSON.stringify(
|
|
55790
|
+
let v = JSON.parse(r);
|
|
55791
|
+
u.choices = [{ delta: { role: "assistant", content: v.response || "" } }];
|
|
55792
|
+
let h = `data: ${JSON.stringify(u)}
|
|
55723
55793
|
|
|
55724
55794
|
`;
|
|
55725
55795
|
d.enqueue(n.encode(h));
|
|
@@ -55728,11 +55798,11 @@ Examples:
|
|
|
55728
55798
|
continue;
|
|
55729
55799
|
}
|
|
55730
55800
|
}
|
|
55731
|
-
if (
|
|
55732
|
-
let
|
|
55801
|
+
if (u.choices?.[0]?.delta && Object.keys(u.choices[0].delta).length > 0) {
|
|
55802
|
+
let a = `data: ${JSON.stringify(u)}
|
|
55733
55803
|
|
|
55734
55804
|
`;
|
|
55735
|
-
d.enqueue(n.encode(
|
|
55805
|
+
d.enqueue(n.encode(a));
|
|
55736
55806
|
}
|
|
55737
55807
|
} catch {
|
|
55738
55808
|
d.enqueue(n.encode(g + `
|
|
@@ -55741,52 +55811,28 @@ Examples:
|
|
|
55741
55811
|
else d.enqueue(n.encode(g + `
|
|
55742
55812
|
`));
|
|
55743
55813
|
}
|
|
55744
|
-
} catch (
|
|
55745
|
-
d.error(
|
|
55814
|
+
} catch (i) {
|
|
55815
|
+
d.error(i);
|
|
55746
55816
|
} finally {
|
|
55747
55817
|
try {
|
|
55748
|
-
|
|
55749
|
-
} catch (
|
|
55750
|
-
console.error("Error releasing reader lock:",
|
|
55818
|
+
l.releaseLock();
|
|
55819
|
+
} catch (i) {
|
|
55820
|
+
console.error("Error releasing reader lock:", i);
|
|
55751
55821
|
}
|
|
55752
55822
|
d.close();
|
|
55753
55823
|
}
|
|
55754
55824
|
} });
|
|
55755
|
-
return new Response(
|
|
55825
|
+
return new Response(c, { status: e.status, statusText: e.statusText, headers: { "Content-Type": e.headers.get("Content-Type") || "text/plain", "Cache-Control": "no-cache", Connection: "keep-alive" } });
|
|
55756
55826
|
}
|
|
55757
55827
|
return e;
|
|
55758
55828
|
}
|
|
55759
55829
|
};
|
|
55760
|
-
var
|
|
55761
|
-
for (let s = 0; s < 256; ++s) b.push((s + 256).toString(16).slice(1));
|
|
55762
|
-
function ue(s, e = 0) {
|
|
55763
|
-
return (b[s[e + 0]] + b[s[e + 1]] + b[s[e + 2]] + b[s[e + 3]] + "-" + b[s[e + 4]] + b[s[e + 5]] + "-" + b[s[e + 6]] + b[s[e + 7]] + "-" + b[s[e + 8]] + b[s[e + 9]] + "-" + b[s[e + 10]] + b[s[e + 11]] + b[s[e + 12]] + b[s[e + 13]] + b[s[e + 14]] + b[s[e + 15]]).toLowerCase();
|
|
55764
|
-
}
|
|
55765
|
-
var z = new Uint8Array(256);
|
|
55766
|
-
var B = z.length;
|
|
55767
|
-
function te() {
|
|
55768
|
-
return B > z.length - 16 && ((0, import_crypto.randomFillSync)(z), B = 0), z.slice(B, B += 16);
|
|
55769
|
-
}
|
|
55770
|
-
var ne = { randomUUID: import_crypto2.randomUUID };
|
|
55771
|
-
function Re(s, e, t) {
|
|
55772
|
-
if (ne.randomUUID && !e && !s) return ne.randomUUID();
|
|
55773
|
-
s = s || {};
|
|
55774
|
-
let n = s.random ?? s.rng?.() ?? te();
|
|
55775
|
-
if (n.length < 16) throw new Error("Random bytes length must be >= 16");
|
|
55776
|
-
if (n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128, e) {
|
|
55777
|
-
if (t = t || 0, t < 0 || t + 16 > e.length) throw new RangeError(`UUID byte range ${t}:${t + 15} is out of buffer bounds`);
|
|
55778
|
-
for (let r = 0; r < 16; ++r) e[t + r] = n[r];
|
|
55779
|
-
return e;
|
|
55780
|
-
}
|
|
55781
|
-
return ue(n);
|
|
55782
|
-
}
|
|
55783
|
-
var I = Re;
|
|
55784
|
-
var V = class {
|
|
55830
|
+
var z = class {
|
|
55785
55831
|
name = "openrouter";
|
|
55786
|
-
transformRequestIn(e) {
|
|
55832
|
+
async transformRequestIn(e) {
|
|
55787
55833
|
return e.model.includes("claude") || e.messages.forEach((t) => {
|
|
55788
55834
|
Array.isArray(t.content) ? t.content.forEach((n) => {
|
|
55789
|
-
n.cache_control && delete n.cache_control;
|
|
55835
|
+
n.cache_control && delete n.cache_control, n.type === "image_url" && (n.image_url.url.startsWith("http") || (n.image_url.url = `data:${n.media_type};base64,${n.image_url.url}`), delete n.media_type);
|
|
55790
55836
|
}) : t.cache_control && delete t.cache_control;
|
|
55791
55837
|
}), e;
|
|
55792
55838
|
}
|
|
@@ -55796,109 +55842,109 @@ var V = class {
|
|
|
55796
55842
|
return new Response(JSON.stringify(t), { status: e.status, statusText: e.statusText, headers: e.headers });
|
|
55797
55843
|
} else if (e.headers.get("Content-Type")?.includes("stream")) {
|
|
55798
55844
|
if (!e.body) return e;
|
|
55799
|
-
let t = new TextDecoder(), n = new TextEncoder(),
|
|
55800
|
-
let
|
|
55801
|
-
let h =
|
|
55845
|
+
let t = new TextDecoder(), n = new TextEncoder(), o = false, r = "", c = false, d = false, l = "", i = new ReadableStream({ async start(p) {
|
|
55846
|
+
let _ = e.body.getReader(), k = (u, a, v) => {
|
|
55847
|
+
let h = u.split(`
|
|
55802
55848
|
`);
|
|
55803
|
-
for (let
|
|
55849
|
+
for (let f of h) f.trim() && a.enqueue(v.encode(f + `
|
|
55804
55850
|
`));
|
|
55805
|
-
}, g = (
|
|
55806
|
-
let { controller: v, encoder: h } =
|
|
55807
|
-
if (
|
|
55808
|
-
let
|
|
55851
|
+
}, g = (u, a) => {
|
|
55852
|
+
let { controller: v, encoder: h } = a;
|
|
55853
|
+
if (u.startsWith("data: ") && u.trim() !== "data: [DONE]") {
|
|
55854
|
+
let f = u.slice(6);
|
|
55809
55855
|
try {
|
|
55810
|
-
let m = JSON.parse(
|
|
55811
|
-
if (m.usage && (
|
|
55856
|
+
let m = JSON.parse(f);
|
|
55857
|
+
if (m.usage && (y("usage", m.usage, d), m.choices[0].finish_reason = d ? "tool_calls" : "stop"), m.choices?.[0]?.finish_reason === "error" && v.enqueue(h.encode(`data: ${JSON.stringify({ error: m.choices?.[0].error })}
|
|
55812
55858
|
|
|
55813
|
-
`)), m.choices?.[0]?.delta?.content && !
|
|
55814
|
-
|
|
55859
|
+
`)), m.choices?.[0]?.delta?.content && !a.hasTextContent() && a.setHasTextContent(true), m.choices?.[0]?.delta?.reasoning) {
|
|
55860
|
+
a.appendReasoningContent(m.choices[0].delta.reasoning);
|
|
55815
55861
|
let x = { ...m, choices: [{ ...m.choices?.[0], delta: { ...m.choices[0].delta, thinking: { content: m.choices[0].delta.reasoning } } }] };
|
|
55816
55862
|
x.choices?.[0]?.delta && delete x.choices[0].delta.reasoning;
|
|
55817
|
-
let
|
|
55863
|
+
let b = `data: ${JSON.stringify(x)}
|
|
55818
55864
|
|
|
55819
55865
|
`;
|
|
55820
|
-
v.enqueue(h.encode(
|
|
55866
|
+
v.enqueue(h.encode(b));
|
|
55821
55867
|
return;
|
|
55822
55868
|
}
|
|
55823
|
-
if (m.choices?.[0]?.delta?.content &&
|
|
55824
|
-
|
|
55825
|
-
let x = Date.now().toString(),
|
|
55826
|
-
|
|
55827
|
-
let X = `data: ${JSON.stringify(
|
|
55869
|
+
if (m.choices?.[0]?.delta?.content && a.reasoningContent() && !a.isReasoningComplete()) {
|
|
55870
|
+
a.setReasoningComplete(true);
|
|
55871
|
+
let x = Date.now().toString(), b = { ...m, choices: [{ ...m.choices?.[0], delta: { ...m.choices[0].delta, content: null, thinking: { content: a.reasoningContent(), signature: x } } }] };
|
|
55872
|
+
b.choices?.[0]?.delta && delete b.choices[0].delta.reasoning;
|
|
55873
|
+
let X = `data: ${JSON.stringify(b)}
|
|
55828
55874
|
|
|
55829
55875
|
`;
|
|
55830
55876
|
v.enqueue(h.encode(X));
|
|
55831
55877
|
}
|
|
55832
55878
|
m.choices?.[0]?.delta?.reasoning && delete m.choices[0].delta.reasoning, m.choices?.[0]?.delta?.tool_calls?.length && !Number.isNaN(parseInt(m.choices?.[0]?.delta?.tool_calls[0].id, 10)) && m.choices?.[0]?.delta?.tool_calls.forEach((x) => {
|
|
55833
|
-
x.id = `call_${
|
|
55834
|
-
}), m.choices?.[0]?.delta?.tool_calls?.length && !d && (
|
|
55835
|
-
let
|
|
55879
|
+
x.id = `call_${H()}`;
|
|
55880
|
+
}), m.choices?.[0]?.delta?.tool_calls?.length && !d && (y("hasToolCall", true), d = true), m.choices?.[0]?.delta?.tool_calls?.length && a.hasTextContent() && (typeof m.choices[0].index == "number" ? m.choices[0].index += 1 : m.choices[0].index = 1);
|
|
55881
|
+
let S = `data: ${JSON.stringify(m)}
|
|
55836
55882
|
|
|
55837
55883
|
`;
|
|
55838
|
-
v.enqueue(h.encode(
|
|
55884
|
+
v.enqueue(h.encode(S));
|
|
55839
55885
|
} catch {
|
|
55840
|
-
v.enqueue(h.encode(
|
|
55886
|
+
v.enqueue(h.encode(u + `
|
|
55841
55887
|
`));
|
|
55842
55888
|
}
|
|
55843
|
-
} else v.enqueue(h.encode(
|
|
55889
|
+
} else v.enqueue(h.encode(u + `
|
|
55844
55890
|
`));
|
|
55845
55891
|
};
|
|
55846
55892
|
try {
|
|
55847
55893
|
for (; ; ) {
|
|
55848
|
-
let { done:
|
|
55849
|
-
if (
|
|
55850
|
-
|
|
55894
|
+
let { done: u, value: a } = await _.read();
|
|
55895
|
+
if (u) {
|
|
55896
|
+
l.trim() && k(l, p, n);
|
|
55851
55897
|
break;
|
|
55852
55898
|
}
|
|
55853
|
-
if (!
|
|
55899
|
+
if (!a || a.length === 0) continue;
|
|
55854
55900
|
let v;
|
|
55855
55901
|
try {
|
|
55856
|
-
v = t.decode(
|
|
55857
|
-
} catch (
|
|
55858
|
-
console.warn("Failed to decode chunk",
|
|
55902
|
+
v = t.decode(a, { stream: true });
|
|
55903
|
+
} catch (f) {
|
|
55904
|
+
console.warn("Failed to decode chunk", f);
|
|
55859
55905
|
continue;
|
|
55860
55906
|
}
|
|
55861
55907
|
if (v.length === 0) continue;
|
|
55862
|
-
if (
|
|
55908
|
+
if (l += v, l.length > 1e6) {
|
|
55863
55909
|
console.warn("Buffer size exceeds limit, processing partial data");
|
|
55864
|
-
let
|
|
55910
|
+
let f = l.split(`
|
|
55865
55911
|
`);
|
|
55866
|
-
|
|
55867
|
-
for (let m of
|
|
55868
|
-
g(m, { controller:
|
|
55869
|
-
} catch (
|
|
55870
|
-
console.error("Error processing line:", m,
|
|
55912
|
+
l = f.pop() || "";
|
|
55913
|
+
for (let m of f) if (m.trim()) try {
|
|
55914
|
+
g(m, { controller: p, encoder: n, hasTextContent: () => o, setHasTextContent: (S) => o = S, reasoningContent: () => r, appendReasoningContent: (S) => r += S, isReasoningComplete: () => c, setReasoningComplete: (S) => c = S });
|
|
55915
|
+
} catch (S) {
|
|
55916
|
+
console.error("Error processing line:", m, S), p.enqueue(n.encode(m + `
|
|
55871
55917
|
`));
|
|
55872
55918
|
}
|
|
55873
55919
|
continue;
|
|
55874
55920
|
}
|
|
55875
|
-
let h =
|
|
55921
|
+
let h = l.split(`
|
|
55876
55922
|
`);
|
|
55877
|
-
|
|
55878
|
-
for (let
|
|
55879
|
-
g(
|
|
55923
|
+
l = h.pop() || "";
|
|
55924
|
+
for (let f of h) if (f.trim()) try {
|
|
55925
|
+
g(f, { controller: p, encoder: n, hasTextContent: () => o, setHasTextContent: (m) => o = m, reasoningContent: () => r, appendReasoningContent: (m) => r += m, isReasoningComplete: () => c, setReasoningComplete: (m) => c = m });
|
|
55880
55926
|
} catch (m) {
|
|
55881
|
-
console.error("Error processing line:",
|
|
55927
|
+
console.error("Error processing line:", f, m), p.enqueue(n.encode(f + `
|
|
55882
55928
|
`));
|
|
55883
55929
|
}
|
|
55884
55930
|
}
|
|
55885
|
-
} catch (
|
|
55886
|
-
console.error("Stream error:",
|
|
55931
|
+
} catch (u) {
|
|
55932
|
+
console.error("Stream error:", u), p.error(u);
|
|
55887
55933
|
} finally {
|
|
55888
55934
|
try {
|
|
55889
|
-
|
|
55890
|
-
} catch (
|
|
55891
|
-
console.error("Error releasing reader lock:",
|
|
55935
|
+
_.releaseLock();
|
|
55936
|
+
} catch (u) {
|
|
55937
|
+
console.error("Error releasing reader lock:", u);
|
|
55892
55938
|
}
|
|
55893
|
-
|
|
55939
|
+
p.close();
|
|
55894
55940
|
}
|
|
55895
55941
|
} });
|
|
55896
|
-
return new Response(
|
|
55942
|
+
return new Response(i, { status: e.status, statusText: e.statusText, headers: { "Content-Type": e.headers.get("Content-Type") || "text/plain", "Cache-Control": "no-cache", Connection: "keep-alive" } });
|
|
55897
55943
|
}
|
|
55898
55944
|
return e;
|
|
55899
55945
|
}
|
|
55900
55946
|
};
|
|
55901
|
-
var
|
|
55947
|
+
var V = class {
|
|
55902
55948
|
constructor(e) {
|
|
55903
55949
|
this.options = e;
|
|
55904
55950
|
this.max_tokens = this.options?.max_tokens;
|
|
@@ -55926,58 +55972,58 @@ var G = class {
|
|
|
55926
55972
|
return new Response(JSON.stringify(t), { status: e.status, statusText: e.statusText, headers: e.headers });
|
|
55927
55973
|
} else if (e.headers.get("Content-Type")?.includes("stream")) {
|
|
55928
55974
|
if (!e.body) return e;
|
|
55929
|
-
let t = new TextDecoder(), n = new TextEncoder(),
|
|
55930
|
-
let
|
|
55975
|
+
let t = new TextDecoder(), n = new TextEncoder(), o = false, r = "", c = false, d = "", l = new ReadableStream({ async start(i) {
|
|
55976
|
+
let p = e.body.getReader(), _ = (g, u, a) => {
|
|
55931
55977
|
let v = g.split(`
|
|
55932
55978
|
`);
|
|
55933
|
-
for (let h of v) h.trim() &&
|
|
55979
|
+
for (let h of v) h.trim() && u.enqueue(a.encode(h + `
|
|
55934
55980
|
`));
|
|
55935
|
-
}, k = (g,
|
|
55936
|
-
let { controller:
|
|
55981
|
+
}, k = (g, u) => {
|
|
55982
|
+
let { controller: a, encoder: v } = u;
|
|
55937
55983
|
if (g.startsWith("data: ") && g.trim() !== "data: [DONE]") {
|
|
55938
55984
|
let h = g.slice(6);
|
|
55939
55985
|
try {
|
|
55940
|
-
let
|
|
55941
|
-
if (
|
|
55942
|
-
|
|
55943
|
-
|
|
55944
|
-
}),
|
|
55945
|
-
let m = `data: ${JSON.stringify(
|
|
55986
|
+
let f = JSON.parse(h);
|
|
55987
|
+
if (f.error) throw new Error(JSON.stringify(f));
|
|
55988
|
+
f.choices?.[0]?.delta?.content && !u.hasTextContent() && u.setHasTextContent(true), f.choices?.[0]?.delta?.tool_calls?.length && f.choices?.[0]?.delta?.tool_calls.forEach((S) => {
|
|
55989
|
+
S.id = `call_${H()}`;
|
|
55990
|
+
}), f.choices?.[0]?.delta?.tool_calls?.length && u.hasTextContent() && (typeof f.choices[0].index == "number" ? f.choices[0].index += 1 : f.choices[0].index = 1);
|
|
55991
|
+
let m = `data: ${JSON.stringify(f)}
|
|
55946
55992
|
|
|
55947
55993
|
`;
|
|
55948
|
-
|
|
55994
|
+
a.enqueue(v.encode(m));
|
|
55949
55995
|
} catch {
|
|
55950
|
-
|
|
55996
|
+
a.enqueue(v.encode(g + `
|
|
55951
55997
|
`));
|
|
55952
55998
|
}
|
|
55953
|
-
} else
|
|
55999
|
+
} else a.enqueue(v.encode(g + `
|
|
55954
56000
|
`));
|
|
55955
56001
|
};
|
|
55956
56002
|
try {
|
|
55957
56003
|
for (; ; ) {
|
|
55958
|
-
let { done: g, value:
|
|
56004
|
+
let { done: g, value: u } = await p.read();
|
|
55959
56005
|
if (g) {
|
|
55960
|
-
d.trim() &&
|
|
56006
|
+
d.trim() && _(d, i, n);
|
|
55961
56007
|
break;
|
|
55962
56008
|
}
|
|
55963
|
-
if (!
|
|
55964
|
-
let
|
|
56009
|
+
if (!u || u.length === 0) continue;
|
|
56010
|
+
let a;
|
|
55965
56011
|
try {
|
|
55966
|
-
|
|
56012
|
+
a = t.decode(u, { stream: true });
|
|
55967
56013
|
} catch (h) {
|
|
55968
56014
|
console.warn("Failed to decode chunk", h);
|
|
55969
56015
|
continue;
|
|
55970
56016
|
}
|
|
55971
|
-
if (
|
|
55972
|
-
if (d +=
|
|
56017
|
+
if (a.length === 0) continue;
|
|
56018
|
+
if (d += a, d.length > 1e6) {
|
|
55973
56019
|
console.warn("Buffer size exceeds limit, processing partial data");
|
|
55974
56020
|
let h = d.split(`
|
|
55975
56021
|
`);
|
|
55976
56022
|
d = h.pop() || "";
|
|
55977
|
-
for (let
|
|
55978
|
-
k(
|
|
56023
|
+
for (let f of h) if (f.trim()) try {
|
|
56024
|
+
k(f, { controller: i, encoder: n, hasTextContent: () => o, setHasTextContent: (m) => o = m, reasoningContent: () => r, appendReasoningContent: (m) => r += m, isReasoningComplete: () => c, setReasoningComplete: (m) => c = m });
|
|
55979
56025
|
} catch (m) {
|
|
55980
|
-
console.error("Error processing line:",
|
|
56026
|
+
console.error("Error processing line:", f, m), i.enqueue(n.encode(f + `
|
|
55981
56027
|
`));
|
|
55982
56028
|
}
|
|
55983
56029
|
continue;
|
|
@@ -55986,24 +56032,24 @@ var G = class {
|
|
|
55986
56032
|
`);
|
|
55987
56033
|
d = v.pop() || "";
|
|
55988
56034
|
for (let h of v) if (h.trim()) try {
|
|
55989
|
-
k(h, { controller:
|
|
55990
|
-
} catch (
|
|
55991
|
-
console.error("Error processing line:", h,
|
|
56035
|
+
k(h, { controller: i, encoder: n, hasTextContent: () => o, setHasTextContent: (f) => o = f, reasoningContent: () => r, appendReasoningContent: (f) => r += f, isReasoningComplete: () => c, setReasoningComplete: (f) => c = f });
|
|
56036
|
+
} catch (f) {
|
|
56037
|
+
console.error("Error processing line:", h, f), i.enqueue(n.encode(h + `
|
|
55992
56038
|
`));
|
|
55993
56039
|
}
|
|
55994
56040
|
}
|
|
55995
56041
|
} catch (g) {
|
|
55996
|
-
console.error("Stream error:", g),
|
|
56042
|
+
console.error("Stream error:", g), i.error(g);
|
|
55997
56043
|
} finally {
|
|
55998
56044
|
try {
|
|
55999
|
-
|
|
56045
|
+
p.releaseLock();
|
|
56000
56046
|
} catch (g) {
|
|
56001
56047
|
console.error("Error releasing reader lock:", g);
|
|
56002
56048
|
}
|
|
56003
|
-
|
|
56049
|
+
i.close();
|
|
56004
56050
|
}
|
|
56005
56051
|
} });
|
|
56006
|
-
return new Response(
|
|
56052
|
+
return new Response(l, { status: e.status, statusText: e.statusText, headers: { "Content-Type": e.headers.get("Content-Type") || "text/plain", "Cache-Control": "no-cache", Connection: "keep-alive" } });
|
|
56007
56053
|
}
|
|
56008
56054
|
return e;
|
|
56009
56055
|
}
|
|
@@ -56018,14 +56064,14 @@ var K = class {
|
|
|
56018
56064
|
}), e;
|
|
56019
56065
|
}
|
|
56020
56066
|
};
|
|
56021
|
-
var pe = { AnthropicTransformer:
|
|
56067
|
+
var pe = { AnthropicTransformer: j, GeminiTransformer: D, DeepseekTransformer: B, TooluseTransformer: W, OpenrouterTransformer: z, MaxTokenTransformer: V, GroqTransformer: G, CleancacheTransformer: K };
|
|
56022
56068
|
var Y = class {
|
|
56023
56069
|
constructor(e) {
|
|
56024
56070
|
this.configService = e;
|
|
56025
56071
|
}
|
|
56026
56072
|
transformers = /* @__PURE__ */ new Map();
|
|
56027
56073
|
registerTransformer(e, t) {
|
|
56028
|
-
this.transformers.set(e, t),
|
|
56074
|
+
this.transformers.set(e, t), y(`register transformer: ${e}${t.endPoint ? ` (endpoint: ${t.endPoint})` : " (no endpoint)"}`);
|
|
56029
56075
|
}
|
|
56030
56076
|
getTransformer(e) {
|
|
56031
56077
|
return this.transformers.get(e);
|
|
@@ -56054,26 +56100,26 @@ var Y = class {
|
|
|
56054
56100
|
async registerTransformerFromConfig(e) {
|
|
56055
56101
|
try {
|
|
56056
56102
|
let t = import_node_module.default._load;
|
|
56057
|
-
if (import_node_module.default._load = function(n,
|
|
56058
|
-
return n === "claude-code-router" ? { log:
|
|
56103
|
+
if (import_node_module.default._load = function(n, o, r) {
|
|
56104
|
+
return n === "claude-code-router" ? { log: y } : t.apply(import_node_module.default, arguments);
|
|
56059
56105
|
}, e.path) {
|
|
56060
56106
|
let n = Z(Z.resolve(e.path));
|
|
56061
56107
|
if (n) {
|
|
56062
|
-
let
|
|
56063
|
-
if (!
|
|
56064
|
-
return this.registerTransformer(
|
|
56108
|
+
let o = new n(e.options);
|
|
56109
|
+
if (!o.name) throw new Error(`Transformer instance from ${e.path} does not have a name property.`);
|
|
56110
|
+
return this.registerTransformer(o.name, o), true;
|
|
56065
56111
|
}
|
|
56066
56112
|
}
|
|
56067
56113
|
return false;
|
|
56068
56114
|
} catch (t) {
|
|
56069
|
-
return
|
|
56115
|
+
return y(`load transformer (${e.path}) error:`, t.message, t.stack), false;
|
|
56070
56116
|
}
|
|
56071
56117
|
}
|
|
56072
56118
|
async initialize() {
|
|
56073
56119
|
try {
|
|
56074
56120
|
await this.registerDefaultTransformersInternal(), await this.loadFromConfig();
|
|
56075
56121
|
} catch (e) {
|
|
56076
|
-
|
|
56122
|
+
y("TransformerService init error:", e);
|
|
56077
56123
|
}
|
|
56078
56124
|
}
|
|
56079
56125
|
async registerDefaultTransformersInternal() {
|
|
@@ -56086,7 +56132,7 @@ var Y = class {
|
|
|
56086
56132
|
}
|
|
56087
56133
|
});
|
|
56088
56134
|
} catch (e) {
|
|
56089
|
-
|
|
56135
|
+
y("transformer regist error:", e);
|
|
56090
56136
|
}
|
|
56091
56137
|
}
|
|
56092
56138
|
async loadFromConfig() {
|
|
@@ -56094,8 +56140,8 @@ var Y = class {
|
|
|
56094
56140
|
for (let t of e) await this.registerTransformerFromConfig(t);
|
|
56095
56141
|
}
|
|
56096
56142
|
};
|
|
56097
|
-
function
|
|
56098
|
-
let s = (0, import_fastify.default)({});
|
|
56143
|
+
function Pe() {
|
|
56144
|
+
let s = (0, import_fastify.default)({ bodyLimit: 52428800 });
|
|
56099
56145
|
return s.setErrorHandler(le), s.register(import_cors.default), s;
|
|
56100
56146
|
}
|
|
56101
56147
|
var re = class {
|
|
@@ -56105,9 +56151,9 @@ var re = class {
|
|
|
56105
56151
|
providerService;
|
|
56106
56152
|
transformerService;
|
|
56107
56153
|
constructor(e = {}) {
|
|
56108
|
-
this.configService = new
|
|
56109
|
-
this.providerService = new
|
|
56110
|
-
}), this.app =
|
|
56154
|
+
this.configService = new I(e), this.transformerService = new Y(this.configService), this.transformerService.initialize().finally(() => {
|
|
56155
|
+
this.providerService = new q(this.configService, this.transformerService), this.llmService = new F(this.providerService);
|
|
56156
|
+
}), this.app = Pe();
|
|
56111
56157
|
}
|
|
56112
56158
|
async register(e, t) {
|
|
56113
56159
|
await this.app.register(e, t);
|
|
@@ -56117,33 +56163,33 @@ var re = class {
|
|
|
56117
56163
|
}
|
|
56118
56164
|
async start() {
|
|
56119
56165
|
try {
|
|
56120
|
-
this.app._server = this, this.app.addHook("preHandler", async (n,
|
|
56166
|
+
this.app._server = this, this.app.addHook("preHandler", async (n, o) => {
|
|
56121
56167
|
try {
|
|
56122
|
-
let
|
|
56123
|
-
if (!
|
|
56124
|
-
let [
|
|
56125
|
-
|
|
56168
|
+
let r = n.body;
|
|
56169
|
+
if (!r || !r.model) return o.code(400).send({ error: "Missing model in request body" });
|
|
56170
|
+
let [c, d] = r.model.split(",");
|
|
56171
|
+
r.model = d, n.provider = c;
|
|
56126
56172
|
return;
|
|
56127
|
-
} catch (
|
|
56128
|
-
return n.log.error("Error in modelProviderMiddleware:",
|
|
56173
|
+
} catch (r) {
|
|
56174
|
+
return n.log.error("Error in modelProviderMiddleware:", r), o.code(500).send({ error: "Internal server error" });
|
|
56129
56175
|
}
|
|
56130
|
-
}), this.app.register(
|
|
56176
|
+
}), this.app.register(ue);
|
|
56131
56177
|
let e = await this.app.listen({ port: parseInt(this.configService.get("PORT") || "3000", 10), host: this.configService.get("HOST") || "127.0.0.1" });
|
|
56132
|
-
|
|
56178
|
+
y(`\u{1F680} LLMs API server listening on ${e}`);
|
|
56133
56179
|
let t = async (n) => {
|
|
56134
|
-
|
|
56180
|
+
y(`Received ${n}, shutting down gracefully...`), await this.app.close(), process.exit(0);
|
|
56135
56181
|
};
|
|
56136
56182
|
process.on("SIGINT", () => t("SIGINT")), process.on("SIGTERM", () => t("SIGTERM"));
|
|
56137
56183
|
} catch (e) {
|
|
56138
|
-
|
|
56184
|
+
y(`Error starting server: ${e}`), process.exit(1);
|
|
56139
56185
|
}
|
|
56140
56186
|
}
|
|
56141
56187
|
};
|
|
56142
|
-
var
|
|
56188
|
+
var ln = re;
|
|
56143
56189
|
|
|
56144
56190
|
// src/server.ts
|
|
56145
56191
|
var createServer = (config) => {
|
|
56146
|
-
const server = new
|
|
56192
|
+
const server = new ln(config);
|
|
56147
56193
|
return server;
|
|
56148
56194
|
};
|
|
56149
56195
|
|
|
@@ -56188,6 +56234,9 @@ var getUseModel = (req, tokenCount, config) => {
|
|
|
56188
56234
|
log("Using think model for ", req.body.thinking);
|
|
56189
56235
|
return config.Router.think;
|
|
56190
56236
|
}
|
|
56237
|
+
if (Array.isArray(req.body.tools) && req.body.tools.some((tool) => tool.type?.startsWith("web_search")) && config.Router.webSearch) {
|
|
56238
|
+
return config.Router.webSearch;
|
|
56239
|
+
}
|
|
56191
56240
|
return config.Router.default;
|
|
56192
56241
|
};
|
|
56193
56242
|
var router = async (req, res, config) => {
|
|
@@ -56335,14 +56384,15 @@ function getServicePid() {
|
|
|
56335
56384
|
return null;
|
|
56336
56385
|
}
|
|
56337
56386
|
}
|
|
56338
|
-
function getServiceInfo() {
|
|
56387
|
+
async function getServiceInfo() {
|
|
56339
56388
|
const pid = getServicePid();
|
|
56340
56389
|
const running = isServiceRunning();
|
|
56390
|
+
const config = await readConfigFile();
|
|
56341
56391
|
return {
|
|
56342
56392
|
running,
|
|
56343
56393
|
pid,
|
|
56344
|
-
port:
|
|
56345
|
-
endpoint:
|
|
56394
|
+
port: config.PORT,
|
|
56395
|
+
endpoint: `http://127.0.0.1:${config.PORT}`,
|
|
56346
56396
|
pidFile: PID_FILE,
|
|
56347
56397
|
referenceCount: getReferenceCount()
|
|
56348
56398
|
};
|
|
@@ -56383,7 +56433,7 @@ async function run(options = {}) {
|
|
|
56383
56433
|
"\u26A0\uFE0F API key is not set. HOST is forced to 127.0.0.1."
|
|
56384
56434
|
);
|
|
56385
56435
|
}
|
|
56386
|
-
const port =
|
|
56436
|
+
const port = config.PORT || 3456;
|
|
56387
56437
|
savePid(process.pid);
|
|
56388
56438
|
process.on("SIGINT", () => {
|
|
56389
56439
|
console.log("Received SIGINT, cleaning up...");
|
|
@@ -56419,8 +56469,8 @@ async function run(options = {}) {
|
|
|
56419
56469
|
}
|
|
56420
56470
|
|
|
56421
56471
|
// src/utils/status.ts
|
|
56422
|
-
function showStatus() {
|
|
56423
|
-
const info = getServiceInfo();
|
|
56472
|
+
async function showStatus() {
|
|
56473
|
+
const info = await getServiceInfo();
|
|
56424
56474
|
console.log("\n\u{1F4CA} Claude Code Router Status");
|
|
56425
56475
|
console.log("\u2550".repeat(40));
|
|
56426
56476
|
if (info.running) {
|
|
@@ -56474,7 +56524,7 @@ async function executeCodeCommand(args = []) {
|
|
|
56474
56524
|
const env = {
|
|
56475
56525
|
...process.env,
|
|
56476
56526
|
ANTHROPIC_AUTH_TOKEN: "test",
|
|
56477
|
-
ANTHROPIC_BASE_URL: `http://127.0.0.1
|
|
56527
|
+
ANTHROPIC_BASE_URL: `http://127.0.0.1:${config.PORT || 3456}`,
|
|
56478
56528
|
API_TIMEOUT_MS: "600000"
|
|
56479
56529
|
};
|
|
56480
56530
|
if (config?.APIKEY) {
|
|
@@ -56504,7 +56554,7 @@ async function executeCodeCommand(args = []) {
|
|
|
56504
56554
|
}
|
|
56505
56555
|
|
|
56506
56556
|
// package.json
|
|
56507
|
-
var version = "1.0.
|
|
56557
|
+
var version = "1.0.23";
|
|
56508
56558
|
|
|
56509
56559
|
// src/cli.ts
|
|
56510
56560
|
var import_child_process2 = require("child_process");
|
|
@@ -56565,7 +56615,7 @@ async function main() {
|
|
|
56565
56615
|
}
|
|
56566
56616
|
break;
|
|
56567
56617
|
case "status":
|
|
56568
|
-
showStatus();
|
|
56618
|
+
await showStatus();
|
|
56569
56619
|
break;
|
|
56570
56620
|
case "code":
|
|
56571
56621
|
if (!isServiceRunning()) {
|