@mrrlin-dev/mcp 0.4.48 → 0.4.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.cjs +70 -15
- package/package.json +4 -4
package/dist/bin.cjs
CHANGED
|
@@ -37107,6 +37107,10 @@ var agentCapabilitiesSchema = external_exports.object({
|
|
|
37107
37107
|
listsModels: external_exports.boolean(),
|
|
37108
37108
|
readsRateLimits: external_exports.boolean(),
|
|
37109
37109
|
models: external_exports.array(external_exports.string()),
|
|
37110
|
+
// Picker entries for a provider that has no model-listing RPC (`listsModels: false`): the alias
|
|
37111
|
+
// the CLI accepts as `id`, a human label carrying the version the alias resolves to, and that
|
|
37112
|
+
// resolved model id as the description. Empty for a provider that lists models live.
|
|
37113
|
+
modelCatalog: external_exports.array(external_exports.object({ id: external_exports.string(), displayName: external_exports.string(), description: external_exports.string() })),
|
|
37110
37114
|
sandboxModes: external_exports.array(external_exports.enum(["read-only", "workspace-write", "danger-full-access"])),
|
|
37111
37115
|
poolProviderLabels: external_exports.array(external_exports.string())
|
|
37112
37116
|
});
|
|
@@ -39689,6 +39693,7 @@ var CodexProviderAdapter = class {
|
|
|
39689
39693
|
listsModels: true,
|
|
39690
39694
|
readsRateLimits: true,
|
|
39691
39695
|
models: [],
|
|
39696
|
+
modelCatalog: [],
|
|
39692
39697
|
sandboxModes: ["read-only", "workspace-write", "danger-full-access"],
|
|
39693
39698
|
poolProviderLabels: ["openai"]
|
|
39694
39699
|
};
|
|
@@ -40045,7 +40050,27 @@ function normalizeToolResultContent(content) {
|
|
|
40045
40050
|
}
|
|
40046
40051
|
|
|
40047
40052
|
// ../../packages/agent-client/dist/providers/claude/models.js
|
|
40048
|
-
var
|
|
40053
|
+
var CLAUDE_MODEL_CATALOG = [
|
|
40054
|
+
{ id: "fable", resolvesTo: "claude-fable-5-1" },
|
|
40055
|
+
{ id: "opus", resolvesTo: "claude-opus-5" },
|
|
40056
|
+
{ id: "sonnet", resolvesTo: "claude-sonnet-5" },
|
|
40057
|
+
{ id: "haiku", resolvesTo: "claude-haiku-4-5-20251001" }
|
|
40058
|
+
];
|
|
40059
|
+
var CLAUDE_MODELS = CLAUDE_MODEL_CATALOG.map((entry) => entry.id);
|
|
40060
|
+
function claudeModelLabel(resolvedId) {
|
|
40061
|
+
const parts = resolvedId.replace(/^claude-/, "").split("-").filter(Boolean);
|
|
40062
|
+
const family = parts[0] ?? resolvedId;
|
|
40063
|
+
const version2 = parts.slice(1).filter((p) => /^\d+$/.test(p) && p.length < 8);
|
|
40064
|
+
const name = family.charAt(0).toUpperCase() + family.slice(1);
|
|
40065
|
+
return version2.length > 0 ? `${name} ${version2.join(".")}` : name;
|
|
40066
|
+
}
|
|
40067
|
+
function claudeModelCatalog() {
|
|
40068
|
+
return CLAUDE_MODEL_CATALOG.map((entry) => ({
|
|
40069
|
+
id: entry.id,
|
|
40070
|
+
displayName: claudeModelLabel(entry.resolvesTo),
|
|
40071
|
+
description: entry.resolvesTo
|
|
40072
|
+
}));
|
|
40073
|
+
}
|
|
40049
40074
|
|
|
40050
40075
|
// ../../packages/agent-client/dist/providers/claude/adapter.js
|
|
40051
40076
|
var ClaudeProviderAdapter = class {
|
|
@@ -40055,6 +40080,7 @@ var ClaudeProviderAdapter = class {
|
|
|
40055
40080
|
listsModels: false,
|
|
40056
40081
|
readsRateLimits: false,
|
|
40057
40082
|
models: [...CLAUDE_MODELS],
|
|
40083
|
+
modelCatalog: claudeModelCatalog(),
|
|
40058
40084
|
// The neutral 3-value vocabulary every startThread/startTurn caller speaks; permissionModeFor
|
|
40059
40085
|
// below is what actually translates a (sandbox, approvalPolicy) pair into this provider's
|
|
40060
40086
|
// real --permission-mode. Advertised here so a picker never offers a mode this adapter can't
|
|
@@ -42343,7 +42369,7 @@ Do NOT derail the current task - if the operator has an in-flight question, answ
|
|
|
42343
42369
|
}
|
|
42344
42370
|
|
|
42345
42371
|
// src/_generated/version.ts
|
|
42346
|
-
var PKG_VERSION = "0.4.
|
|
42372
|
+
var PKG_VERSION = "0.4.50";
|
|
42347
42373
|
|
|
42348
42374
|
// src/api-base-url-migrate.ts
|
|
42349
42375
|
var import_node_fs4 = __toESM(require("node:fs"), 1);
|
|
@@ -55087,8 +55113,8 @@ var DEFAULT_DIRECTOR_BRIDGE_ALLOWED_ORIGINS = [
|
|
|
55087
55113
|
// bridge from the owned domain, which is stable across future Vercel project/team moves.
|
|
55088
55114
|
// See docs/reference/deployments.md.
|
|
55089
55115
|
"https://staging.mrrlin.com",
|
|
55090
|
-
// Production web
|
|
55091
|
-
"https://mrrlin
|
|
55116
|
+
// Production web.
|
|
55117
|
+
"https://app.mrrlin.com"
|
|
55092
55118
|
];
|
|
55093
55119
|
var COMPACT_REQUEST_HISTORY_MAX_ITEMS = 500;
|
|
55094
55120
|
function isValidChatHistoryMessage(value) {
|
|
@@ -56478,7 +56504,8 @@ function createBridgeMessageHandler(deps) {
|
|
|
56478
56504
|
let models = null;
|
|
56479
56505
|
let rateLimits = null;
|
|
56480
56506
|
let bootstrapError;
|
|
56481
|
-
|
|
56507
|
+
let fallbackModels = [];
|
|
56508
|
+
let bootstrapProviderId;
|
|
56482
56509
|
try {
|
|
56483
56510
|
if (deps.refreshSelectedProvider) {
|
|
56484
56511
|
await withTimeout2(
|
|
@@ -56488,10 +56515,27 @@ function createBridgeMessageHandler(deps) {
|
|
|
56488
56515
|
).catch(() => {
|
|
56489
56516
|
});
|
|
56490
56517
|
}
|
|
56491
|
-
const
|
|
56492
|
-
|
|
56518
|
+
const bootstrapProvider = resolveProvider(process.env, getSelectedProvider());
|
|
56519
|
+
bootstrapProviderId = bootstrapProvider.id;
|
|
56520
|
+
const bootstrapCapabilities = bootstrapProvider.capabilities();
|
|
56521
|
+
fallbackModels = bootstrapCapabilities.listsModels ? readCodexFallbackModels() : [];
|
|
56522
|
+
if (!bootstrapCapabilities.listsModels) {
|
|
56523
|
+
const staticModels = /* @__PURE__ */ new Map();
|
|
56524
|
+
for (const entry of bootstrapCapabilities.modelCatalog) {
|
|
56525
|
+
addBridgeModel(staticModels, mapBridgeModel({ id: entry.id, model: entry.id, displayName: entry.displayName, description: entry.description }));
|
|
56526
|
+
}
|
|
56527
|
+
for (const alias of bootstrapCapabilities.models) {
|
|
56528
|
+
addBridgeModel(
|
|
56529
|
+
staticModels,
|
|
56530
|
+
mapBridgeModel({ id: alias, model: alias, displayName: alias.charAt(0).toUpperCase() + alias.slice(1) })
|
|
56531
|
+
);
|
|
56532
|
+
}
|
|
56533
|
+
models = staticModels.size > 0 ? [...staticModels.values()] : null;
|
|
56534
|
+
}
|
|
56535
|
+
const needsHandle = bootstrapCapabilities.listsModels || bootstrapCapabilities.readsRateLimits;
|
|
56536
|
+
const codexClient2 = needsHandle ? await deps.acquireCodex(bootstrapProviderId) : null;
|
|
56493
56537
|
try {
|
|
56494
|
-
try {
|
|
56538
|
+
if (codexClient2 && bootstrapCapabilities.listsModels) try {
|
|
56495
56539
|
const raw = await codexClient2.listModels();
|
|
56496
56540
|
const mergedModels = /* @__PURE__ */ new Map();
|
|
56497
56541
|
for (const m of raw) {
|
|
@@ -56517,19 +56561,30 @@ function createBridgeMessageHandler(deps) {
|
|
|
56517
56561
|
bootstrapError = error51 instanceof Error ? error51.message : String(error51);
|
|
56518
56562
|
models = fallbackModels.length > 0 ? fallbackModels : null;
|
|
56519
56563
|
}
|
|
56520
|
-
|
|
56521
|
-
|
|
56522
|
-
|
|
56523
|
-
|
|
56564
|
+
if (codexClient2 && bootstrapCapabilities.readsRateLimits) {
|
|
56565
|
+
try {
|
|
56566
|
+
rateLimits = await codexClient2.readRateLimits();
|
|
56567
|
+
} catch (error51) {
|
|
56568
|
+
bootstrapError ??= error51 instanceof Error ? error51.message : String(error51);
|
|
56569
|
+
}
|
|
56524
56570
|
}
|
|
56525
56571
|
} finally {
|
|
56526
|
-
deps.releaseCodex(bootstrapProviderId);
|
|
56572
|
+
if (codexClient2) deps.releaseCodex(bootstrapProviderId);
|
|
56527
56573
|
}
|
|
56528
56574
|
} catch (error51) {
|
|
56529
56575
|
bootstrapError = error51 instanceof Error ? error51.message : String(error51);
|
|
56530
|
-
models
|
|
56576
|
+
models ??= fallbackModels.length > 0 ? fallbackModels : null;
|
|
56531
56577
|
}
|
|
56532
|
-
sendForSpan({
|
|
56578
|
+
sendForSpan({
|
|
56579
|
+
type: "bootstrap",
|
|
56580
|
+
models,
|
|
56581
|
+
rateLimits,
|
|
56582
|
+
// Which seat this catalog and snapshot describe, so the web keys its model cache by
|
|
56583
|
+
// provider instead of serving one provider's catalog to another.
|
|
56584
|
+
...bootstrapProviderId ? { provider: bootstrapProviderId } : {},
|
|
56585
|
+
...deps.bridgeInstanceId ? { bridgeInstanceId: deps.bridgeInstanceId } : {},
|
|
56586
|
+
...bootstrapError ? { error: bootstrapError } : {}
|
|
56587
|
+
});
|
|
56533
56588
|
return;
|
|
56534
56589
|
}
|
|
56535
56590
|
if (msg.type === "refresh-codex") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrrlin-dev/mcp",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"mrrlin-mcp": "dist/bin.cjs"
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"esbuild": "^0.24.0",
|
|
23
23
|
"tsx": "^4.22.3",
|
|
24
24
|
"@mrrlin/agent-client": "0.0.0",
|
|
25
|
+
"@mrrlin/client": "0.0.0",
|
|
25
26
|
"@mrrlin/director-e2e": "0.0.0",
|
|
27
|
+
"@mrrlin/schemas": "0.0.0",
|
|
26
28
|
"@mrrlin/tsconfig": "0.0.0",
|
|
27
|
-
"@mrrlin/
|
|
28
|
-
"@mrrlin/wiki": "0.0.0",
|
|
29
|
-
"@mrrlin/schemas": "0.0.0"
|
|
29
|
+
"@mrrlin/wiki": "0.0.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@iarna/toml": "^2.2.5",
|