replicas-engine 0.1.803 → 0.1.805
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/src/{asp-host-XJZVAUPU.js → asp-host-42FUJJKM.js} +4 -4
- package/dist/src/{chunk-QBLEGBFV.js → chunk-6TQWCSXK.js} +1 -1
- package/dist/src/{chunk-2LUYBPAX.js → chunk-CXQQAL5B.js} +2 -2
- package/dist/src/{chunk-T5ENS6BG.js → chunk-O57ARVYZ.js} +1 -1
- package/dist/src/{chunk-QU3TVTVW.js → chunk-RBSDAHZ7.js} +216 -182
- package/dist/src/{chunk-CN7WBEPB.js → chunk-RKEFQSWQ.js} +2 -2
- package/dist/src/{chunk-W6XLA2JR.js → chunk-ZR7K5GRR.js} +4 -4
- package/dist/src/command-protection-hook.js +3 -3
- package/dist/src/deepseek-command-protection-plugin.js +4 -4
- package/dist/src/headless-agent.js +2 -2
- package/dist/src/index.js +9 -38
- package/dist/src/post-tool-pr-hook.js +2 -2
- package/dist/src/relay-mcp.js +1 -1
- package/package.json +1 -1
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
getCodexAspHost,
|
|
6
6
|
restartCodexAspHost,
|
|
7
7
|
restartCodexAspHostIfRunning
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-ZR7K5GRR.js";
|
|
9
|
+
import "./chunk-6TQWCSXK.js";
|
|
10
|
+
import "./chunk-CXQQAL5B.js";
|
|
11
11
|
import "./chunk-UZSNFLDQ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-RBSDAHZ7.js";
|
|
13
13
|
import "./chunk-VEQXQN22.js";
|
|
14
14
|
export {
|
|
15
15
|
getCodexAspHost,
|
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
HOOK_EXEC_MAX_BUFFER_BYTES,
|
|
6
6
|
isVersionBelow
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RBSDAHZ7.js";
|
|
8
8
|
|
|
9
9
|
// src/utils/codex-agent-env.ts
|
|
10
10
|
function buildCodexAgentEnv(source = process.env) {
|
|
@@ -241,7 +241,7 @@ var DEFAULT_CODEX_ARGS = [
|
|
|
241
241
|
var MIN_CODEX_CLI_VERSION = "0.153.3";
|
|
242
242
|
var CODEX_UPGRADE_TIMEOUT_MS = 12e4;
|
|
243
243
|
var codexCliVersionEnsured = null;
|
|
244
|
-
var ENGINE_PACKAGE_VERSION = "0.1.
|
|
244
|
+
var ENGINE_PACKAGE_VERSION = "0.1.805";
|
|
245
245
|
var INITIALIZE_METHOD = "initialize";
|
|
246
246
|
var INITIALIZED_NOTIFICATION = "initialized";
|
|
247
247
|
var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
|
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
findCodeHostPullRequestUrls,
|
|
6
6
|
mayCreatePullRequest
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RBSDAHZ7.js";
|
|
8
8
|
|
|
9
9
|
// src/services/post-tool-pr-notifier.ts
|
|
10
10
|
async function notifyPostToolUse(toolName, toolInput, toolResult) {
|
|
@@ -108,6 +108,76 @@ var ASTER_MODEL_LABELS = {
|
|
|
108
108
|
"gpt-oss-120b": "GPT-OSS 120B"
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
+
// ../shared/src/models-dev.ts
|
|
112
|
+
import { z } from "zod";
|
|
113
|
+
var MODELS_DEV_API_URL = "https://models.dev/api.json";
|
|
114
|
+
var MODELS_DEV_CACHE_MS = 5 * 6e4;
|
|
115
|
+
var modelsDevCatalogSchema = z.record(z.string(), z.object({
|
|
116
|
+
models: z.record(z.string(), z.object({
|
|
117
|
+
id: z.string().optional(),
|
|
118
|
+
name: z.string(),
|
|
119
|
+
description: z.string().optional(),
|
|
120
|
+
status: z.enum(["alpha", "beta", "deprecated"]).optional(),
|
|
121
|
+
provider: z.object({ npm: z.string().optional() }).optional(),
|
|
122
|
+
cost: z.object({
|
|
123
|
+
input: z.number().finite().nonnegative().optional(),
|
|
124
|
+
output: z.number().finite().nonnegative().optional(),
|
|
125
|
+
cache_read: z.number().finite().nonnegative().optional(),
|
|
126
|
+
cache_write: z.number().finite().nonnegative().optional()
|
|
127
|
+
}).optional()
|
|
128
|
+
}))
|
|
129
|
+
}));
|
|
130
|
+
var catalogCache;
|
|
131
|
+
var catalogRequest;
|
|
132
|
+
async function fetchModelsDevCatalog() {
|
|
133
|
+
if (catalogCache && catalogCache.expiresAt > Date.now()) return catalogCache.catalog;
|
|
134
|
+
catalogRequest ??= (async () => {
|
|
135
|
+
const response = await fetch(MODELS_DEV_API_URL, { signal: AbortSignal.timeout(5e3) });
|
|
136
|
+
if (!response.ok) throw new Error(`Failed to load models.dev catalog (${response.status})`);
|
|
137
|
+
return modelsDevCatalogSchema.parse(await response.json());
|
|
138
|
+
})();
|
|
139
|
+
try {
|
|
140
|
+
const catalog = await catalogRequest;
|
|
141
|
+
catalogCache = { catalog, expiresAt: Date.now() + MODELS_DEV_CACHE_MS };
|
|
142
|
+
return catalog;
|
|
143
|
+
} catch (error) {
|
|
144
|
+
if (catalogCache) return catalogCache.catalog;
|
|
145
|
+
throw error;
|
|
146
|
+
} finally {
|
|
147
|
+
catalogRequest = void 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// ../shared/src/credentials/opencode-go.ts
|
|
152
|
+
var OPENCODE_GO_PROVIDER = "opencode-go";
|
|
153
|
+
var OPENCODE_GO_BASE_URL = "https://opencode.ai/zen/go/v1";
|
|
154
|
+
var DEFAULT_OPENCODE_GO_MODEL = "glm-5.3";
|
|
155
|
+
async function fetchOpenCodeGoCatalog(fallbackModelIds = [DEFAULT_OPENCODE_GO_MODEL]) {
|
|
156
|
+
try {
|
|
157
|
+
const provider = (await fetchModelsDevCatalog())[OPENCODE_GO_PROVIDER];
|
|
158
|
+
if (!provider) throw new Error("OpenCode Go model catalog is unavailable");
|
|
159
|
+
const models = Object.fromEntries(
|
|
160
|
+
Object.entries(provider.models).filter(([, definition]) => definition.status !== "deprecated" && definition.status !== "alpha").map(([id, definition]) => [id, {
|
|
161
|
+
id: definition.id ?? id,
|
|
162
|
+
name: definition.name,
|
|
163
|
+
api: definition.provider?.npm === "@ai-sdk/anthropic" ? "anthropic-messages" : definition.provider?.npm === "@ai-sdk/openai" ? "openai-responses" : void 0,
|
|
164
|
+
...definition.description ? { description: definition.description } : {},
|
|
165
|
+
...definition.status ? { status: definition.status } : {}
|
|
166
|
+
}])
|
|
167
|
+
);
|
|
168
|
+
if (Object.keys(models).length === 0) throw new Error("OpenCode Go model catalog is unavailable");
|
|
169
|
+
return { models, authoritative: true };
|
|
170
|
+
} catch {
|
|
171
|
+
return {
|
|
172
|
+
authoritative: false,
|
|
173
|
+
models: Object.fromEntries(fallbackModelIds.map((id) => [id, {
|
|
174
|
+
id,
|
|
175
|
+
name: id === DEFAULT_OPENCODE_GO_MODEL ? "GLM 5.3" : id
|
|
176
|
+
}]))
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
111
181
|
// ../shared/src/type-guards.ts
|
|
112
182
|
function isRecord(value) {
|
|
113
183
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -462,7 +532,7 @@ function paginateEngineLogContent(input) {
|
|
|
462
532
|
}
|
|
463
533
|
|
|
464
534
|
// ../shared/src/analytics/types.ts
|
|
465
|
-
import { z } from "zod";
|
|
535
|
+
import { z as z2 } from "zod";
|
|
466
536
|
|
|
467
537
|
// ../shared/src/credentials/types.ts
|
|
468
538
|
var CREDENTIAL_SCOPE = {
|
|
@@ -595,10 +665,10 @@ function hasAgentChatActivityFields(value) {
|
|
|
595
665
|
function isAgentChatActivityRecord(value) {
|
|
596
666
|
return hasAgentChatActivityFields(value) && typeof value.provider === "string" && isValidAgentProvider(value.provider);
|
|
597
667
|
}
|
|
598
|
-
var agentCredentialSnapshotSchema =
|
|
599
|
-
method:
|
|
600
|
-
scope:
|
|
601
|
-
revision:
|
|
668
|
+
var agentCredentialSnapshotSchema = z2.object({
|
|
669
|
+
method: z2.enum(CREDENTIAL_METHOD),
|
|
670
|
+
scope: z2.enum(CREDENTIAL_SCOPE),
|
|
671
|
+
revision: z2.string().optional()
|
|
602
672
|
});
|
|
603
673
|
function isAuthMethod(value) {
|
|
604
674
|
return typeof value === "string" && Object.values(CREDENTIAL_METHOD).some((method) => method === value);
|
|
@@ -725,7 +795,7 @@ function coerceChatGoalPayload(payload) {
|
|
|
725
795
|
var CONTEXT_USAGE_EVENT_TYPE = "context-usage";
|
|
726
796
|
|
|
727
797
|
// ../shared/src/engine/v1.ts
|
|
728
|
-
import { z as
|
|
798
|
+
import { z as z3 } from "zod";
|
|
729
799
|
var MERGED_MESSAGE_SEPARATOR = "\n\n<!-- replicas:merged -->\n\n";
|
|
730
800
|
var ENGINE_HEALTH_WAIT_HEADER = "X-Replicas-Health-Wait";
|
|
731
801
|
var ENGINE_HEALTH_WAIT_QUERY_PARAM = "wait_ms";
|
|
@@ -733,70 +803,70 @@ var ENGINE_HEALTH_MAX_WAIT_MS = 2e3;
|
|
|
733
803
|
function getChatExecutionProvider(chat) {
|
|
734
804
|
return chat.provider === "relay" ? chat.relayBaseProvider ?? DEFAULT_RELAY_BASE_PROVIDER : chat.provider;
|
|
735
805
|
}
|
|
736
|
-
var createChatRequestSchema =
|
|
737
|
-
id:
|
|
738
|
-
createdAt:
|
|
739
|
-
provider:
|
|
740
|
-
relayBaseProvider:
|
|
741
|
-
title:
|
|
742
|
-
parentChatId:
|
|
743
|
-
clientRequestId:
|
|
806
|
+
var createChatRequestSchema = z3.object({
|
|
807
|
+
id: z3.string().uuid().optional(),
|
|
808
|
+
createdAt: z3.string().datetime().optional(),
|
|
809
|
+
provider: z3.enum(VALID_AGENT_PROVIDERS),
|
|
810
|
+
relayBaseProvider: z3.enum(VALID_CODING_AGENT_PROVIDERS).optional(),
|
|
811
|
+
title: z3.string().min(1).optional(),
|
|
812
|
+
parentChatId: z3.string().uuid().optional(),
|
|
813
|
+
clientRequestId: z3.string().min(1).max(128).optional()
|
|
744
814
|
}).refine((request) => request.provider === "relay" || request.relayBaseProvider === void 0, {
|
|
745
815
|
message: "relayBaseProvider is only valid for Relay chats"
|
|
746
816
|
});
|
|
747
|
-
var spawnRelaySubagentRequestSchema =
|
|
748
|
-
provider:
|
|
749
|
-
prompt:
|
|
750
|
-
model:
|
|
751
|
-
thinkingLevel:
|
|
752
|
-
title:
|
|
753
|
-
timeoutMinutes:
|
|
817
|
+
var spawnRelaySubagentRequestSchema = z3.object({
|
|
818
|
+
provider: z3.enum(VALID_AGENT_PROVIDERS),
|
|
819
|
+
prompt: z3.string().min(1),
|
|
820
|
+
model: z3.string().min(1).optional(),
|
|
821
|
+
thinkingLevel: z3.enum(VALID_THINKING_LEVELS).optional(),
|
|
822
|
+
title: z3.string().min(1).optional(),
|
|
823
|
+
timeoutMinutes: z3.number().positive().max(1440).optional()
|
|
754
824
|
});
|
|
755
|
-
var messageRelaySubagentRequestSchema =
|
|
756
|
-
message:
|
|
757
|
-
model:
|
|
758
|
-
thinkingLevel:
|
|
759
|
-
timeoutMinutes:
|
|
825
|
+
var messageRelaySubagentRequestSchema = z3.object({
|
|
826
|
+
message: z3.string().min(1),
|
|
827
|
+
model: z3.string().min(1).optional(),
|
|
828
|
+
thinkingLevel: z3.enum(VALID_THINKING_LEVELS).optional(),
|
|
829
|
+
timeoutMinutes: z3.number().positive().max(1440).optional()
|
|
760
830
|
});
|
|
761
|
-
var sendChatMessageRequestSchema =
|
|
762
|
-
messageId:
|
|
763
|
-
submittedAt:
|
|
764
|
-
message:
|
|
765
|
-
model:
|
|
766
|
-
customInstructions:
|
|
767
|
-
planMode:
|
|
768
|
-
images:
|
|
769
|
-
type:
|
|
770
|
-
source:
|
|
771
|
-
|
|
772
|
-
|
|
831
|
+
var sendChatMessageRequestSchema = z3.object({
|
|
832
|
+
messageId: z3.string().min(1).optional(),
|
|
833
|
+
submittedAt: z3.string().datetime().optional(),
|
|
834
|
+
message: z3.string().min(1),
|
|
835
|
+
model: z3.string().optional(),
|
|
836
|
+
customInstructions: z3.string().optional(),
|
|
837
|
+
planMode: z3.boolean().optional(),
|
|
838
|
+
images: z3.array(z3.object({
|
|
839
|
+
type: z3.literal("image"),
|
|
840
|
+
source: z3.discriminatedUnion("type", [
|
|
841
|
+
z3.object({ type: z3.literal("base64"), media_type: z3.enum(IMAGE_MEDIA_TYPES), data: z3.string().min(1) }),
|
|
842
|
+
z3.object({ type: z3.literal("url"), url: z3.string().url() })
|
|
773
843
|
])
|
|
774
844
|
})).optional(),
|
|
775
|
-
canvasUploadIds:
|
|
776
|
-
thinkingLevel:
|
|
777
|
-
goalMode:
|
|
778
|
-
fastMode:
|
|
779
|
-
enableInteractiveTools:
|
|
780
|
-
type:
|
|
781
|
-
merge:
|
|
782
|
-
idempotencyKey:
|
|
783
|
-
automationId:
|
|
784
|
-
environmentId:
|
|
785
|
-
senderUserId:
|
|
786
|
-
senderEmail:
|
|
787
|
-
senderDisplayName:
|
|
788
|
-
senderAvatarUrl:
|
|
789
|
-
errorNotificationTarget:
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
type:
|
|
794
|
-
provider:
|
|
795
|
-
resource:
|
|
796
|
-
repositoryId:
|
|
797
|
-
resourceNumber:
|
|
845
|
+
canvasUploadIds: z3.array(z3.string().min(1)).optional(),
|
|
846
|
+
thinkingLevel: z3.enum(VALID_THINKING_LEVELS).optional(),
|
|
847
|
+
goalMode: z3.boolean().optional(),
|
|
848
|
+
fastMode: z3.boolean().optional(),
|
|
849
|
+
enableInteractiveTools: z3.boolean().optional(),
|
|
850
|
+
type: z3.string().min(1).optional(),
|
|
851
|
+
merge: z3.boolean().optional(),
|
|
852
|
+
idempotencyKey: z3.string().min(1).max(128).optional(),
|
|
853
|
+
automationId: z3.string().optional(),
|
|
854
|
+
environmentId: z3.string().min(1).optional(),
|
|
855
|
+
senderUserId: z3.string().optional(),
|
|
856
|
+
senderEmail: z3.string().optional(),
|
|
857
|
+
senderDisplayName: z3.string().optional(),
|
|
858
|
+
senderAvatarUrl: z3.string().optional(),
|
|
859
|
+
errorNotificationTarget: z3.discriminatedUnion("type", [
|
|
860
|
+
z3.object({ type: z3.literal("slack") }),
|
|
861
|
+
z3.object({ type: z3.literal("linear"), sessionId: z3.string().min(1) }),
|
|
862
|
+
z3.object({
|
|
863
|
+
type: z3.literal("code_host"),
|
|
864
|
+
provider: z3.enum(["github", "gitlab"]),
|
|
865
|
+
resource: z3.enum(["issue", "pull_request"]),
|
|
866
|
+
repositoryId: z3.string().min(1),
|
|
867
|
+
resourceNumber: z3.number().int().positive()
|
|
798
868
|
}),
|
|
799
|
-
|
|
869
|
+
z3.object({ type: z3.literal("automation"), executionId: z3.string().min(1) })
|
|
800
870
|
]).optional()
|
|
801
871
|
}).passthrough();
|
|
802
872
|
function isChatMessageSender(value) {
|
|
@@ -1264,45 +1334,45 @@ function gitIdentityConfigCommands(identity, scope = "global") {
|
|
|
1264
1334
|
}
|
|
1265
1335
|
|
|
1266
1336
|
// ../shared/src/headless-agent.ts
|
|
1267
|
-
import { z as
|
|
1268
|
-
var headlessAgentRequestBaseSchema =
|
|
1269
|
-
agent:
|
|
1337
|
+
import { z as z4 } from "zod";
|
|
1338
|
+
var headlessAgentRequestBaseSchema = z4.object({
|
|
1339
|
+
agent: z4.custom(
|
|
1270
1340
|
(value) => typeof value === "string" && isValidCodingAgentProvider(value)
|
|
1271
1341
|
),
|
|
1272
|
-
model:
|
|
1273
|
-
prompt:
|
|
1274
|
-
workingDirectory:
|
|
1275
|
-
timeoutSeconds:
|
|
1276
|
-
codexOauthTokens:
|
|
1342
|
+
model: z4.string().min(1),
|
|
1343
|
+
prompt: z4.string(),
|
|
1344
|
+
workingDirectory: z4.string().min(1),
|
|
1345
|
+
timeoutSeconds: z4.number().int().min(1).max(1800).default(300),
|
|
1346
|
+
codexOauthTokens: z4.object({ accessToken: z4.string(), accountId: z4.string() }).optional()
|
|
1277
1347
|
});
|
|
1278
|
-
var headlessAgentInputFileSchema =
|
|
1279
|
-
path:
|
|
1280
|
-
downloadUrl:
|
|
1348
|
+
var headlessAgentInputFileSchema = z4.object({
|
|
1349
|
+
path: z4.string().min(1),
|
|
1350
|
+
downloadUrl: z4.url()
|
|
1281
1351
|
});
|
|
1282
|
-
var headlessAgentOutputFileSchema =
|
|
1283
|
-
path:
|
|
1284
|
-
uploadUrl:
|
|
1285
|
-
contentType:
|
|
1286
|
-
minChars:
|
|
1287
|
-
maxChars:
|
|
1352
|
+
var headlessAgentOutputFileSchema = z4.object({
|
|
1353
|
+
path: z4.string().min(1),
|
|
1354
|
+
uploadUrl: z4.url(),
|
|
1355
|
+
contentType: z4.string().min(1),
|
|
1356
|
+
minChars: z4.number().int().positive().optional(),
|
|
1357
|
+
maxChars: z4.number().int().positive().optional()
|
|
1288
1358
|
});
|
|
1289
|
-
var headlessAgentRequestSchema =
|
|
1359
|
+
var headlessAgentRequestSchema = z4.discriminatedUnion("mode", [
|
|
1290
1360
|
headlessAgentRequestBaseSchema.extend({
|
|
1291
|
-
mode:
|
|
1292
|
-
outputSchema:
|
|
1361
|
+
mode: z4.literal("structured"),
|
|
1362
|
+
outputSchema: z4.record(z4.string(), z4.json())
|
|
1293
1363
|
}),
|
|
1294
1364
|
headlessAgentRequestBaseSchema.extend({
|
|
1295
|
-
mode:
|
|
1296
|
-
inputFiles:
|
|
1297
|
-
outputFiles:
|
|
1298
|
-
sensitiveValues:
|
|
1365
|
+
mode: z4.literal("filesystem"),
|
|
1366
|
+
inputFiles: z4.array(headlessAgentInputFileSchema),
|
|
1367
|
+
outputFiles: z4.array(headlessAgentOutputFileSchema),
|
|
1368
|
+
sensitiveValues: z4.array(z4.string())
|
|
1299
1369
|
})
|
|
1300
1370
|
]);
|
|
1301
|
-
var headlessFilesystemAgentResultSchema =
|
|
1302
|
-
message:
|
|
1303
|
-
files:
|
|
1304
|
-
sha256:
|
|
1305
|
-
sizeBytes:
|
|
1371
|
+
var headlessFilesystemAgentResultSchema = z4.object({
|
|
1372
|
+
message: z4.string(),
|
|
1373
|
+
files: z4.record(z4.string(), z4.object({
|
|
1374
|
+
sha256: z4.string().regex(/^[a-f0-9]{64}$/),
|
|
1375
|
+
sizeBytes: z4.number().int().nonnegative()
|
|
1306
1376
|
}))
|
|
1307
1377
|
});
|
|
1308
1378
|
|
|
@@ -1378,55 +1448,55 @@ function describeAuthFallback(payload) {
|
|
|
1378
1448
|
}
|
|
1379
1449
|
|
|
1380
1450
|
// ../shared/src/chat-fork.ts
|
|
1381
|
-
import { z as
|
|
1451
|
+
import { z as z6 } from "zod";
|
|
1382
1452
|
|
|
1383
1453
|
// ../shared/src/fallback-chains.ts
|
|
1384
|
-
import { z as
|
|
1385
|
-
var fallbackHarnessStepSchema =
|
|
1386
|
-
kind:
|
|
1387
|
-
provider:
|
|
1388
|
-
model:
|
|
1389
|
-
thinkingLevel:
|
|
1454
|
+
import { z as z5 } from "zod";
|
|
1455
|
+
var fallbackHarnessStepSchema = z5.object({
|
|
1456
|
+
kind: z5.literal("harness"),
|
|
1457
|
+
provider: z5.enum(VALID_AGENT_PROVIDERS),
|
|
1458
|
+
model: z5.string().min(1),
|
|
1459
|
+
thinkingLevel: z5.enum(VALID_THINKING_LEVELS).optional()
|
|
1390
1460
|
});
|
|
1391
|
-
var fallbackPlanStepSchema =
|
|
1392
|
-
|
|
1461
|
+
var fallbackPlanStepSchema = z5.discriminatedUnion("kind", [
|
|
1462
|
+
z5.object({ kind: z5.literal("credentials"), methods: z5.array(z5.custom(isAuthMethod)).min(1) }),
|
|
1393
1463
|
fallbackHarnessStepSchema
|
|
1394
1464
|
]);
|
|
1395
|
-
var fallbackPlanResponseSchema =
|
|
1465
|
+
var fallbackPlanResponseSchema = z5.object({ steps: z5.array(fallbackPlanStepSchema) });
|
|
1396
1466
|
|
|
1397
1467
|
// ../shared/src/chat-fork.ts
|
|
1398
|
-
var quotaLimitKindSchema =
|
|
1399
|
-
var chatForkInfoSchema =
|
|
1400
|
-
source:
|
|
1401
|
-
chatId:
|
|
1402
|
-
provider:
|
|
1403
|
-
title:
|
|
1468
|
+
var quotaLimitKindSchema = z6.enum(["rate_limit", "out_of_credits"]);
|
|
1469
|
+
var chatForkInfoSchema = z6.object({
|
|
1470
|
+
source: z6.object({
|
|
1471
|
+
chatId: z6.string().min(1),
|
|
1472
|
+
provider: z6.enum(VALID_AGENT_PROVIDERS),
|
|
1473
|
+
title: z6.string()
|
|
1404
1474
|
}),
|
|
1405
|
-
trigger:
|
|
1475
|
+
trigger: z6.enum(["manual", "auto"]),
|
|
1406
1476
|
reason: quotaLimitKindSchema.optional(),
|
|
1407
|
-
state:
|
|
1408
|
-
error:
|
|
1409
|
-
startedAt:
|
|
1410
|
-
completedAt:
|
|
1477
|
+
state: z6.enum(["preparing", "ready", "failed"]),
|
|
1478
|
+
error: z6.string().optional(),
|
|
1479
|
+
startedAt: z6.string(),
|
|
1480
|
+
completedAt: z6.string().optional()
|
|
1411
1481
|
});
|
|
1412
1482
|
function coerceChatForkInfo(value) {
|
|
1413
1483
|
const parsed = chatForkInfoSchema.safeParse(value);
|
|
1414
1484
|
return parsed.success ? parsed.data : null;
|
|
1415
1485
|
}
|
|
1416
|
-
var forkChatRequestSchema =
|
|
1417
|
-
provider:
|
|
1418
|
-
model:
|
|
1419
|
-
thinkingLevel:
|
|
1420
|
-
title:
|
|
1421
|
-
message:
|
|
1422
|
-
id:
|
|
1423
|
-
clientRequestId:
|
|
1424
|
-
enableInteractiveTools:
|
|
1486
|
+
var forkChatRequestSchema = z6.object({
|
|
1487
|
+
provider: z6.enum(VALID_AGENT_PROVIDERS),
|
|
1488
|
+
model: z6.string().min(1).optional(),
|
|
1489
|
+
thinkingLevel: z6.enum(VALID_THINKING_LEVELS).optional(),
|
|
1490
|
+
title: z6.string().min(1).max(200).optional(),
|
|
1491
|
+
message: z6.string().trim().optional(),
|
|
1492
|
+
id: z6.string().uuid().optional(),
|
|
1493
|
+
clientRequestId: z6.string().min(1).max(128).optional(),
|
|
1494
|
+
enableInteractiveTools: z6.boolean().optional(),
|
|
1425
1495
|
// Server-injected by the monolith from the authenticated request; never trusted from clients.
|
|
1426
|
-
senderUserId:
|
|
1427
|
-
senderEmail:
|
|
1428
|
-
senderDisplayName:
|
|
1429
|
-
senderAvatarUrl:
|
|
1496
|
+
senderUserId: z6.string().optional(),
|
|
1497
|
+
senderEmail: z6.string().optional(),
|
|
1498
|
+
senderDisplayName: z6.string().optional(),
|
|
1499
|
+
senderAvatarUrl: z6.string().optional()
|
|
1430
1500
|
});
|
|
1431
1501
|
function describeQuotaLimit(reason) {
|
|
1432
1502
|
return reason === "out_of_credits" ? "ran out of credits" : "hit its usage limit";
|
|
@@ -1435,10 +1505,10 @@ function describeChatForkReason(reason, provider) {
|
|
|
1435
1505
|
return reason ? `${getProviderDisplayName(provider)} ${describeQuotaLimit(reason)}` : null;
|
|
1436
1506
|
}
|
|
1437
1507
|
var AGENT_QUOTA_EXHAUSTED_EVENT_TYPE = "agent-quota-exhausted";
|
|
1438
|
-
var agentQuotaExhaustedPayloadSchema =
|
|
1439
|
-
provider:
|
|
1508
|
+
var agentQuotaExhaustedPayloadSchema = z6.object({
|
|
1509
|
+
provider: z6.enum(VALID_CODING_AGENT_PROVIDERS),
|
|
1440
1510
|
reason: quotaLimitKindSchema,
|
|
1441
|
-
detail:
|
|
1511
|
+
detail: z6.string().optional(),
|
|
1442
1512
|
forkTo: fallbackHarnessStepSchema.optional()
|
|
1443
1513
|
});
|
|
1444
1514
|
function defaultForkChatTitle(source, provider) {
|
|
@@ -1729,15 +1799,14 @@ function skillNamesFromCommand(command) {
|
|
|
1729
1799
|
}
|
|
1730
1800
|
|
|
1731
1801
|
// ../shared/src/urls.ts
|
|
1732
|
-
var HOME_PATH = "/home";
|
|
1733
1802
|
var DASHBOARD_PATH = "/dashboard";
|
|
1734
1803
|
var WEB_APP_PATHS = {
|
|
1735
|
-
home:
|
|
1736
|
-
onboarding:
|
|
1737
|
-
workspaces:
|
|
1738
|
-
automations:
|
|
1739
|
-
environment:
|
|
1740
|
-
analytics:
|
|
1804
|
+
home: "/",
|
|
1805
|
+
onboarding: "/onboarding",
|
|
1806
|
+
workspaces: "/workspace",
|
|
1807
|
+
automations: "/automations",
|
|
1808
|
+
environment: "/environment",
|
|
1809
|
+
analytics: "/analytics",
|
|
1741
1810
|
dashboard: DASHBOARD_PATH,
|
|
1742
1811
|
agents: `${DASHBOARD_PATH}/agents`,
|
|
1743
1812
|
integrations: `${DASHBOARD_PATH}/integrations`,
|
|
@@ -1757,6 +1826,7 @@ var WEB_APP_PATHS = {
|
|
|
1757
1826
|
};
|
|
1758
1827
|
var LEGACY_WEB_APP_PATHS = {
|
|
1759
1828
|
app: "/app",
|
|
1829
|
+
home: "/home",
|
|
1760
1830
|
dashboardWorkspaces: `${DASHBOARD_PATH}/workspaces`
|
|
1761
1831
|
};
|
|
1762
1832
|
var PR_URL_REGEX = /github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/;
|
|
@@ -2472,7 +2542,7 @@ For each media file, the CLI prints an embed line and a dashboard link:
|
|
|
2472
2542
|
|
|
2473
2543
|
1. Default and organization access print \`Replicas chat embed: \`; this authenticated URL renders inline in Replicas chat **only** \u2014 see below.
|
|
2474
2544
|
2. Public access (\`--access public\` or \`--share\`) prints \`\` as the Forge embed instead. This is the public, stable bearer URL for GitHub fallback embeds when native \`--attach\` is unavailable and sharing is authorized.
|
|
2475
|
-
3. \`View in Replicas: <deep-link>\` is a per-file dashboard URL of the form \`https://replicas.dev/workspaces/<workspace-id>?media=<media-id>\` that opens directly to that specific file.
|
|
2545
|
+
3. \`View in Replicas: <deep-link>\` is a per-file dashboard URL of the form \`https://app.replicas.dev/workspaces/<workspace-id>?media=<media-id>\` that opens directly to that specific file.
|
|
2476
2546
|
|
|
2477
2547
|
Match each "View in Replicas" line to the embed line directly above it \u2014 that's the deep link for that file.
|
|
2478
2548
|
|
|
@@ -2501,7 +2571,7 @@ replicas media upload screenshot.png --name "Login page" --access public
|
|
|
2501
2571
|
| \`https://api.replicas.dev/v1/media/<id>\` (inside \`\`) | Authenticated API redirect to a presigned blob \u2014 requires the Replicas chat session | **Only** in the Replicas chat reply. Nowhere else. |
|
|
2502
2572
|
| \`https://replicas.dev/organizations/<organization-id>/media/<media-id>\` | Organization-only page printed by \`--access organization\` | Pull requests and other places where every viewer belongs to the Replicas organization. |
|
|
2503
2573
|
| \`https://api.replicas.dev/v1/media/public/<id>/<token>\` | Opt-in public bearer URL printed by \`--access public\` or \`--share\` | The Replicas chat reply and GitHub fallback embeds, for image, video, or audio media. |
|
|
2504
|
-
| \`https://replicas.dev/workspaces/<workspace-id>?media=<media-id>\` | Authenticated dashboard deep link that opens the media file in the workspace | Everywhere external: Slack, GitHub, GitLab, Linear, PR bodies, comments, emails. |
|
|
2574
|
+
| \`https://app.replicas.dev/workspaces/<workspace-id>?media=<media-id>\` | Authenticated dashboard deep link that opens the media file in the workspace | Everywhere external: Slack, GitHub, GitLab, Linear, PR bodies, comments, emails. |
|
|
2505
2575
|
|
|
2506
2576
|
### NEVER link the API redirect URL outside the Replicas chat reply
|
|
2507
2577
|
|
|
@@ -2520,7 +2590,7 @@ This rule has no exceptions:
|
|
|
2520
2590
|
For an organization-only HTML page, use the \`Forge link\` printed by \`--access organization\`. For other authenticated media references, use the dashboard form:
|
|
2521
2591
|
|
|
2522
2592
|
\`\`\`
|
|
2523
|
-
https://replicas.dev/workspaces/<workspace-id>?media=<media-id>
|
|
2593
|
+
https://app.replicas.dev/workspaces/<workspace-id>?media=<media-id>
|
|
2524
2594
|
\`\`\`
|
|
2525
2595
|
|
|
2526
2596
|
The \`media=<media-id>\` query param opens that specific file in the workspace.
|
|
@@ -2569,7 +2639,7 @@ await replicas.slack.call('files.completeUploadExternal', {
|
|
|
2569
2639
|
files: [{ id: reservation.file_id, title: 'Screenshot' }],
|
|
2570
2640
|
channel_id: 'CHANNEL_ID',
|
|
2571
2641
|
thread_ts: 'THREAD_TS',
|
|
2572
|
-
initial_comment: '<https://replicas.dev/workspaces/<workspace-id>?media=<media-id>|View in Replicas>',
|
|
2642
|
+
initial_comment: '<https://app.replicas.dev/workspaces/<workspace-id>?media=<media-id>|View in Replicas>',
|
|
2573
2643
|
});
|
|
2574
2644
|
\`\`\`
|
|
2575
2645
|
|
|
@@ -2629,7 +2699,7 @@ curl -s -X PUT "$UPLOAD_URL" \\
|
|
|
2629
2699
|
--data-binary @"$FILE"
|
|
2630
2700
|
|
|
2631
2701
|
# 3. Reference assetUrl inline in the comment body, alongside the dashboard link.
|
|
2632
|
-
BODY=$(printf '\\n\\n[View in Replicas](https://replicas.dev/workspaces/%s?media=%s)' \\
|
|
2702
|
+
BODY=$(printf '\\n\\n[View in Replicas](https://app.replicas.dev/workspaces/%s?media=%s)' \\
|
|
2633
2703
|
"$ASSET_URL" "$REPLICAS_WORKSPACE_ID" "$MEDIA_ID")
|
|
2634
2704
|
|
|
2635
2705
|
jq -n \\
|
|
@@ -2659,7 +2729,7 @@ Check \`gh --version\` before choosing the delivery path. On a supported host wi
|
|
|
2659
2729
|
Before the change:
|
|
2660
2730
|
|
|
2661
2731
|

|
|
2662
|
-
[View in Replicas](https://replicas.dev/workspaces/<workspace-id>?media=<before-media-id>)
|
|
2732
|
+
[View in Replicas](https://app.replicas.dev/workspaces/<workspace-id>?media=<before-media-id>)
|
|
2663
2733
|
\`\`\`
|
|
2664
2734
|
|
|
2665
2735
|
\`\`\`bash
|
|
@@ -3458,6 +3528,7 @@ var DEFAULT_USER_PREFERENCES = {
|
|
|
3458
3528
|
codex_hidden_models: null,
|
|
3459
3529
|
cursor_hidden_models: null,
|
|
3460
3530
|
openrouter_models: null,
|
|
3531
|
+
opencode_go_models: null,
|
|
3461
3532
|
close_workspace_on_pr_close: true,
|
|
3462
3533
|
close_workspace_on_pr_merge: true,
|
|
3463
3534
|
default_environment_id: null,
|
|
@@ -6262,46 +6333,6 @@ var PLANS = {
|
|
|
6262
6333
|
var TEAM_PLAN = PLANS.team;
|
|
6263
6334
|
var ENTERPRISE_PLAN = PLANS.enterprise;
|
|
6264
6335
|
|
|
6265
|
-
// ../shared/src/models-dev.ts
|
|
6266
|
-
import { z as z6 } from "zod";
|
|
6267
|
-
var MODELS_DEV_API_URL = "https://models.dev/api.json";
|
|
6268
|
-
var MODELS_DEV_CACHE_MS = 5 * 6e4;
|
|
6269
|
-
var modelsDevCatalogSchema = z6.record(z6.string(), z6.object({
|
|
6270
|
-
models: z6.record(z6.string(), z6.object({
|
|
6271
|
-
id: z6.string().optional(),
|
|
6272
|
-
name: z6.string(),
|
|
6273
|
-
description: z6.string().optional(),
|
|
6274
|
-
status: z6.enum(["alpha", "beta", "deprecated"]).optional(),
|
|
6275
|
-
provider: z6.object({ npm: z6.string().optional() }).optional(),
|
|
6276
|
-
cost: z6.object({
|
|
6277
|
-
input: z6.number().finite().nonnegative().optional(),
|
|
6278
|
-
output: z6.number().finite().nonnegative().optional(),
|
|
6279
|
-
cache_read: z6.number().finite().nonnegative().optional(),
|
|
6280
|
-
cache_write: z6.number().finite().nonnegative().optional()
|
|
6281
|
-
}).optional()
|
|
6282
|
-
}))
|
|
6283
|
-
}));
|
|
6284
|
-
var catalogCache;
|
|
6285
|
-
var catalogRequest;
|
|
6286
|
-
async function fetchModelsDevCatalog() {
|
|
6287
|
-
if (catalogCache && catalogCache.expiresAt > Date.now()) return catalogCache.catalog;
|
|
6288
|
-
catalogRequest ??= (async () => {
|
|
6289
|
-
const response = await fetch(MODELS_DEV_API_URL, { signal: AbortSignal.timeout(5e3) });
|
|
6290
|
-
if (!response.ok) throw new Error(`Failed to load models.dev catalog (${response.status})`);
|
|
6291
|
-
return modelsDevCatalogSchema.parse(await response.json());
|
|
6292
|
-
})();
|
|
6293
|
-
try {
|
|
6294
|
-
const catalog = await catalogRequest;
|
|
6295
|
-
catalogCache = { catalog, expiresAt: Date.now() + MODELS_DEV_CACHE_MS };
|
|
6296
|
-
return catalog;
|
|
6297
|
-
} catch (error) {
|
|
6298
|
-
if (catalogCache) return catalogCache.catalog;
|
|
6299
|
-
throw error;
|
|
6300
|
-
} finally {
|
|
6301
|
-
catalogRequest = void 0;
|
|
6302
|
-
}
|
|
6303
|
-
}
|
|
6304
|
-
|
|
6305
6336
|
// ../shared/src/egress.ts
|
|
6306
6337
|
var EGRESS_CIPHER = "2022-blake3-aes-256-gcm";
|
|
6307
6338
|
var EGRESS_KEY_BYTES = 32;
|
|
@@ -7628,6 +7659,10 @@ export {
|
|
|
7628
7659
|
ASTER_MODELS,
|
|
7629
7660
|
DEFAULT_ASTER_MODEL,
|
|
7630
7661
|
ASTER_MODEL_LABELS,
|
|
7662
|
+
OPENCODE_GO_PROVIDER,
|
|
7663
|
+
OPENCODE_GO_BASE_URL,
|
|
7664
|
+
DEFAULT_OPENCODE_GO_MODEL,
|
|
7665
|
+
fetchOpenCodeGoCatalog,
|
|
7631
7666
|
DEFAULT_CHAT_TITLES,
|
|
7632
7667
|
isDefaultChat,
|
|
7633
7668
|
CLAUDE_FABLE_5_1_MODEL,
|
|
@@ -7746,7 +7781,6 @@ export {
|
|
|
7746
7781
|
clampTokensToWindow,
|
|
7747
7782
|
buildCodexTokenUsageContextUsagePayload,
|
|
7748
7783
|
extractLatestContextUsage,
|
|
7749
|
-
fetchModelsDevCatalog,
|
|
7750
7784
|
SANDBOX_PATHS,
|
|
7751
7785
|
REPLICAS_RUNTIME_ENV_ALIASES,
|
|
7752
7786
|
readReplicasRuntimeEnv,
|
|
@@ -3,12 +3,12 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
monolithRequest
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6TQWCSXK.js";
|
|
7
7
|
import {
|
|
8
8
|
extractCommandProtectionCommandText,
|
|
9
9
|
findGitCommitSignals,
|
|
10
10
|
findPrMergeSignals
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-RBSDAHZ7.js";
|
|
12
12
|
|
|
13
13
|
// src/services/command-protection-service.ts
|
|
14
14
|
var DEFAULT_COMMAND_PROTECTION_BLOCK_MESSAGE = "Blocked by Replicas command protection.";
|
|
@@ -5,18 +5,18 @@ import {
|
|
|
5
5
|
ENGINE_ENV,
|
|
6
6
|
monolithRequest,
|
|
7
7
|
setAgentCredentialSnapshot
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6TQWCSXK.js";
|
|
9
9
|
import {
|
|
10
10
|
AppServerProcess,
|
|
11
11
|
buildCodexAgentEnv
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CXQQAL5B.js";
|
|
13
13
|
import {
|
|
14
14
|
CODEX_AUTH_ENV_KEYS,
|
|
15
15
|
CODEX_AUTH_ENV_KEYS_BY_METHOD,
|
|
16
16
|
codexAuthEnvFromResponse,
|
|
17
17
|
createErrorResult,
|
|
18
18
|
createSuccessResult
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RBSDAHZ7.js";
|
|
20
20
|
|
|
21
21
|
// src/managers/codex-token-manager.ts
|
|
22
22
|
import { promises as fs } from "fs";
|
|
@@ -232,7 +232,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
|
|
|
232
232
|
const data = await response.json();
|
|
233
233
|
await this.applyCredentialsResponse(data);
|
|
234
234
|
if (restartOnChange && CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index])) {
|
|
235
|
-
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-
|
|
235
|
+
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-42FUJJKM.js");
|
|
236
236
|
await restartCodexAspHostIfRunning2();
|
|
237
237
|
}
|
|
238
238
|
if (data.scope) {
|
|
@@ -3,12 +3,12 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
evaluateCommandProtection
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-RKEFQSWQ.js";
|
|
7
|
+
import "./chunk-6TQWCSXK.js";
|
|
8
8
|
import {
|
|
9
9
|
isRecord
|
|
10
10
|
} from "./chunk-UZSNFLDQ.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-RBSDAHZ7.js";
|
|
12
12
|
import "./chunk-VEQXQN22.js";
|
|
13
13
|
|
|
14
14
|
// src/command-protection-hook.ts
|
|
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
evaluateCommandProtection
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RKEFQSWQ.js";
|
|
7
7
|
import {
|
|
8
8
|
notifyPostToolUse
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-O57ARVYZ.js";
|
|
10
|
+
import "./chunk-6TQWCSXK.js";
|
|
11
11
|
import "./chunk-UZSNFLDQ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-RBSDAHZ7.js";
|
|
13
13
|
import "./chunk-VEQXQN22.js";
|
|
14
14
|
|
|
15
15
|
// src/deepseek-command-protection-plugin.ts
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
AppServerProcess,
|
|
10
10
|
buildCodexAgentEnv
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CXQQAL5B.js";
|
|
12
12
|
import {
|
|
13
13
|
AGENT,
|
|
14
14
|
getMemoryOutputSafetyViolation,
|
|
15
15
|
headlessAgentRequestSchema
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-RBSDAHZ7.js";
|
|
17
17
|
import "./chunk-VEQXQN22.js";
|
|
18
18
|
|
|
19
19
|
// src/headless-agent.ts
|
package/dist/src/index.js
CHANGED
|
@@ -91,7 +91,7 @@ import {
|
|
|
91
91
|
evaluateCommandProtection,
|
|
92
92
|
extractToolCommand,
|
|
93
93
|
reportCommandProtectionBlock
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-RKEFQSWQ.js";
|
|
95
95
|
import {
|
|
96
96
|
ACCOUNT_RATE_LIMITS_UPDATED_METHOD,
|
|
97
97
|
AGENT_MESSAGE_DELTA_METHOD,
|
|
@@ -124,20 +124,20 @@ import {
|
|
|
124
124
|
recordCredentialFallback,
|
|
125
125
|
recordExhaustedCredential,
|
|
126
126
|
restartCodexAspHost
|
|
127
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-ZR7K5GRR.js";
|
|
128
128
|
import {
|
|
129
129
|
ENGINE_ENV,
|
|
130
130
|
IS_WARMING_MODE,
|
|
131
131
|
monolithRequest,
|
|
132
132
|
monolithService,
|
|
133
133
|
setAgentCredentialSnapshot
|
|
134
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-6TQWCSXK.js";
|
|
135
135
|
import {
|
|
136
136
|
AspClient,
|
|
137
137
|
SUBPROCESS_MAX_BUFFER,
|
|
138
138
|
execAsync,
|
|
139
139
|
execFileAsync
|
|
140
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-CXQQAL5B.js";
|
|
141
141
|
import {
|
|
142
142
|
isRecord as isRecord2
|
|
143
143
|
} from "./chunk-UZSNFLDQ.js";
|
|
@@ -187,6 +187,7 @@ import {
|
|
|
187
187
|
DEFAULT_HOOK_OUTPUT_PREVIEW_CHARS,
|
|
188
188
|
DEFAULT_KIMI_MODEL,
|
|
189
189
|
DEFAULT_MUSE_MODEL,
|
|
190
|
+
DEFAULT_OPENCODE_GO_MODEL,
|
|
190
191
|
DEFAULT_OPENCODE_MODEL,
|
|
191
192
|
DEFAULT_PI_MODEL,
|
|
192
193
|
DEFAULT_RELAY_BASE_PROVIDER,
|
|
@@ -208,6 +209,8 @@ import {
|
|
|
208
209
|
MEMORY_INDEX_FILENAME,
|
|
209
210
|
MEMORY_ROOT,
|
|
210
211
|
MERGED_MESSAGE_SEPARATOR,
|
|
212
|
+
OPENCODE_GO_BASE_URL,
|
|
213
|
+
OPENCODE_GO_PROVIDER,
|
|
211
214
|
QUEUED_MESSAGE_REMOVED_EVENT_TYPE,
|
|
212
215
|
REMOVED_MESSAGE_IDS_PAYLOAD_KEY,
|
|
213
216
|
REPLICAS_CONFIG_FILENAMES,
|
|
@@ -256,7 +259,7 @@ import {
|
|
|
256
259
|
extractLatestContextUsage,
|
|
257
260
|
extractToolResultText,
|
|
258
261
|
fetchAiGatewayModels,
|
|
259
|
-
|
|
262
|
+
fetchOpenCodeGoCatalog,
|
|
260
263
|
findCodeHostPullRequestUrls,
|
|
261
264
|
forkChatRequestSchema,
|
|
262
265
|
formatChatForkHandoffMessage,
|
|
@@ -338,7 +341,7 @@ import {
|
|
|
338
341
|
spawnRelaySubagentRequestSchema,
|
|
339
342
|
stripAgentDiagnosticErrors,
|
|
340
343
|
withTimeout
|
|
341
|
-
} from "./chunk-
|
|
344
|
+
} from "./chunk-RBSDAHZ7.js";
|
|
342
345
|
import {
|
|
343
346
|
__commonJS,
|
|
344
347
|
__export,
|
|
@@ -18335,38 +18338,6 @@ import { randomBytes as randomBytes3 } from "crypto";
|
|
|
18335
18338
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
18336
18339
|
import { Agent } from "undici";
|
|
18337
18340
|
import { z as z3 } from "zod";
|
|
18338
|
-
|
|
18339
|
-
// ../shared/src/credentials/opencode-go.ts
|
|
18340
|
-
var OPENCODE_GO_PROVIDER = "opencode-go";
|
|
18341
|
-
var OPENCODE_GO_BASE_URL = "https://opencode.ai/zen/go/v1";
|
|
18342
|
-
var DEFAULT_OPENCODE_GO_MODEL = "glm-5.2";
|
|
18343
|
-
async function fetchOpenCodeGoCatalog(fallbackModelIds = [DEFAULT_OPENCODE_GO_MODEL]) {
|
|
18344
|
-
try {
|
|
18345
|
-
const provider = (await fetchModelsDevCatalog())[OPENCODE_GO_PROVIDER];
|
|
18346
|
-
if (!provider) throw new Error("OpenCode Go model catalog is unavailable");
|
|
18347
|
-
const models = Object.fromEntries(
|
|
18348
|
-
Object.entries(provider.models).filter(([, definition]) => definition.status !== "deprecated" && definition.status !== "alpha").map(([id, definition]) => [id, {
|
|
18349
|
-
id: definition.id ?? id,
|
|
18350
|
-
name: definition.name,
|
|
18351
|
-
api: definition.provider?.npm === "@ai-sdk/anthropic" ? "anthropic-messages" : definition.provider?.npm === "@ai-sdk/openai" ? "openai-responses" : void 0,
|
|
18352
|
-
...definition.description ? { description: definition.description } : {},
|
|
18353
|
-
...definition.status ? { status: definition.status } : {}
|
|
18354
|
-
}])
|
|
18355
|
-
);
|
|
18356
|
-
if (Object.keys(models).length === 0) throw new Error("OpenCode Go model catalog is unavailable");
|
|
18357
|
-
return { models, authoritative: true };
|
|
18358
|
-
} catch {
|
|
18359
|
-
return {
|
|
18360
|
-
authoritative: false,
|
|
18361
|
-
models: Object.fromEntries(fallbackModelIds.map((id) => [id, {
|
|
18362
|
-
id,
|
|
18363
|
-
name: id === DEFAULT_OPENCODE_GO_MODEL ? "GLM 5.2" : id
|
|
18364
|
-
}]))
|
|
18365
|
-
};
|
|
18366
|
-
}
|
|
18367
|
-
}
|
|
18368
|
-
|
|
18369
|
-
// src/managers/opencode-manager.ts
|
|
18370
18341
|
import {
|
|
18371
18342
|
createOpencodeClient,
|
|
18372
18343
|
createOpencodeServer
|
|
@@ -3,11 +3,11 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
notifyPostToolUse
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-O57ARVYZ.js";
|
|
7
7
|
import {
|
|
8
8
|
isRecord
|
|
9
9
|
} from "./chunk-UZSNFLDQ.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-RBSDAHZ7.js";
|
|
11
11
|
import "./chunk-VEQXQN22.js";
|
|
12
12
|
|
|
13
13
|
// src/post-tool-pr-hook.ts
|
package/dist/src/relay-mcp.js
CHANGED