replicas-engine 0.1.1043 → 0.1.1045
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-3PMUOIHX.js → asp-host-IBTGVRTZ.js} +5 -5
- package/dist/src/{chunk-S5UZOWCH.js → chunk-6EZXQ2C7.js} +3 -3
- package/dist/src/{chunk-HJSDRDGQ.js → chunk-A6M7VE2Y.js} +1 -1
- package/dist/src/{chunk-74PWNTPC.js → chunk-GEYFS65S.js} +2 -2
- package/dist/src/chunk-MRMHCG4U.js +232 -0
- package/dist/src/{chunk-6D6XBIE7.js → chunk-PZEZIF5C.js} +48 -34
- package/dist/src/{chunk-YKJ47TTY.js → chunk-VSDRLCZY.js} +1 -1
- package/dist/src/{chunk-OC3ORVZM.js → chunk-WH5EJYKF.js} +6 -6
- package/dist/src/{chunk-WGZFINQP.js → chunk-ZCIRBGGV.js} +2 -2
- package/dist/src/command-protection-hook.js +4 -4
- package/dist/src/headless-agent.js +159 -19
- package/dist/src/index.js +1493 -1608
- package/dist/src/post-tool-pr-hook.js +2 -2
- package/dist/src/subagent-mcp.js +1 -1
- package/package.json +1 -1
- package/dist/src/chunk-P73LGPQO.js +0 -65
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
listRunningCodexModels,
|
|
9
9
|
restartCodexAspHost,
|
|
10
10
|
restartCodexAspHostIfRunning
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-WH5EJYKF.js";
|
|
12
|
+
import "./chunk-GEYFS65S.js";
|
|
13
|
+
import "./chunk-6EZXQ2C7.js";
|
|
14
|
+
import "./chunk-VSDRLCZY.js";
|
|
15
15
|
import "./chunk-UZSNFLDQ.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-PZEZIF5C.js";
|
|
17
17
|
import "./chunk-VEQXQN22.js";
|
|
18
18
|
export {
|
|
19
19
|
CODEX_ULTRAFAST_SERVICE_TIER,
|
|
@@ -3,10 +3,10 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
execFileAsync
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VSDRLCZY.js";
|
|
7
7
|
import {
|
|
8
8
|
isVersionBelow
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PZEZIF5C.js";
|
|
10
10
|
|
|
11
11
|
// src/utils/codex-agent-env.ts
|
|
12
12
|
function buildCodexAgentEnv(source = process.env) {
|
|
@@ -240,7 +240,7 @@ function getCodexModelProvider(method) {
|
|
|
240
240
|
if (method === "foundry") return "azure";
|
|
241
241
|
return method === "ollama" || method === "openai-compatible" ? "replicas_openai_compatible" : "openai";
|
|
242
242
|
}
|
|
243
|
-
var ENGINE_PACKAGE_VERSION = "0.1.
|
|
243
|
+
var ENGINE_PACKAGE_VERSION = "0.1.1045";
|
|
244
244
|
var INITIALIZE_METHOD = "initialize";
|
|
245
245
|
var INITIALIZED_NOTIFICATION = "initialized";
|
|
246
246
|
var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
|
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
SUBPROCESS_MAX_BUFFER,
|
|
6
6
|
execFileAsync
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VSDRLCZY.js";
|
|
8
8
|
import {
|
|
9
9
|
isRecord as isRecord2
|
|
10
10
|
} from "./chunk-UZSNFLDQ.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
isValidAgentProvider,
|
|
19
19
|
parsePosixEnvFile,
|
|
20
20
|
readReplicasRuntimeEnv
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-PZEZIF5C.js";
|
|
22
22
|
|
|
23
23
|
// src/runtime-env-loader.ts
|
|
24
24
|
import { readFileSync } from "fs";
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __createRequire } from 'node:module';
|
|
3
|
+
const require = __createRequire(import.meta.url);
|
|
4
|
+
import {
|
|
5
|
+
AspClient
|
|
6
|
+
} from "./chunk-6EZXQ2C7.js";
|
|
7
|
+
import {
|
|
8
|
+
ASTER_BASE_URL,
|
|
9
|
+
ASTER_PROVIDER,
|
|
10
|
+
OPENCODE_GO_PROVIDER,
|
|
11
|
+
codexReasoningEffortForThinkingLevel,
|
|
12
|
+
isRecord,
|
|
13
|
+
readOllamaAuthEnv
|
|
14
|
+
} from "./chunk-PZEZIF5C.js";
|
|
15
|
+
|
|
16
|
+
// src/managers/codex-asp/notification-dispatch.ts
|
|
17
|
+
var TURN_STARTED_METHOD = "turn/started";
|
|
18
|
+
var TURN_COMPLETED_METHOD = "turn/completed";
|
|
19
|
+
var TURN_PLAN_UPDATED_METHOD = "turn/plan/updated";
|
|
20
|
+
var THREAD_GOAL_UPDATED_METHOD = "thread/goal/updated";
|
|
21
|
+
var THREAD_GOAL_CLEARED_METHOD = "thread/goal/cleared";
|
|
22
|
+
var ITEM_STARTED_METHOD = "item/started";
|
|
23
|
+
var ITEM_COMPLETED_METHOD = "item/completed";
|
|
24
|
+
var AGENT_MESSAGE_DELTA_METHOD = "item/agentMessage/delta";
|
|
25
|
+
var REASONING_SUMMARY_TEXT_DELTA_METHOD = "item/reasoning/summaryTextDelta";
|
|
26
|
+
var REASONING_TEXT_DELTA_METHOD = "item/reasoning/textDelta";
|
|
27
|
+
var REASONING_SUMMARY_PART_ADDED_METHOD = "item/reasoning/summaryPartAdded";
|
|
28
|
+
var COMMAND_EXECUTION_OUTPUT_DELTA_METHOD = "item/commandExecution/outputDelta";
|
|
29
|
+
var FILE_CHANGE_OUTPUT_DELTA_METHOD = "item/fileChange/outputDelta";
|
|
30
|
+
var ACCOUNT_RATE_LIMITS_UPDATED_METHOD = "account/rateLimits/updated";
|
|
31
|
+
var THREAD_TOKEN_USAGE_UPDATED_METHOD = "thread/tokenUsage/updated";
|
|
32
|
+
var THREAD_COMPACTED_METHOD = "thread/compacted";
|
|
33
|
+
var MODEL_REROUTED_METHOD = "model/rerouted";
|
|
34
|
+
var THREAD_STATUS_CHANGED_METHOD = "thread/status/changed";
|
|
35
|
+
function dispatchAspNotification(notification, handlers) {
|
|
36
|
+
const handler = handlers[notification.method];
|
|
37
|
+
if (!handler) return;
|
|
38
|
+
handler(notification);
|
|
39
|
+
}
|
|
40
|
+
function recoverCompletedTurn(turn, completedItems, agentMessageDeltas) {
|
|
41
|
+
const items = turn.items.length > 0 ? [...turn.items] : [];
|
|
42
|
+
const itemIds = new Set(items.map((item) => item.id));
|
|
43
|
+
for (const item of completedItems) {
|
|
44
|
+
if (itemIds.has(item.id)) continue;
|
|
45
|
+
items.push(item);
|
|
46
|
+
itemIds.add(item.id);
|
|
47
|
+
}
|
|
48
|
+
for (const [itemId, text] of agentMessageDeltas) {
|
|
49
|
+
if (itemIds.has(itemId)) continue;
|
|
50
|
+
items.push({ type: "agentMessage", id: itemId, text, phase: null, memoryCitation: null });
|
|
51
|
+
}
|
|
52
|
+
return items.length > 0 ? { ...turn, items, itemsView: "full" } : turn;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// src/managers/opencode-config.ts
|
|
56
|
+
import { existsSync } from "fs";
|
|
57
|
+
import { readFile } from "fs/promises";
|
|
58
|
+
import { z } from "zod";
|
|
59
|
+
|
|
60
|
+
// src/managers/agent-auth-paths.ts
|
|
61
|
+
import { homedir } from "os";
|
|
62
|
+
import { join } from "path";
|
|
63
|
+
var OPENCODE_AUTH_PATH = join(homedir(), ".local", "share", "opencode", "auth.json");
|
|
64
|
+
var PI_AUTH_PATH = join(homedir(), ".pi", "agent", "auth.json");
|
|
65
|
+
var PI_MCP_CONFIG_PATH = join(homedir(), ".pi", "agent", "mcp.json");
|
|
66
|
+
var MUSE_AUTH_PATH = join(homedir(), ".config", "muse", "auth.json");
|
|
67
|
+
|
|
68
|
+
// src/managers/opencode-config.ts
|
|
69
|
+
var OPENCODE_WORKSPACE_PERMISSION = "allow";
|
|
70
|
+
var OPENCODE_VARIANT_CANDIDATES_BY_THINKING_LEVEL = {
|
|
71
|
+
low: ["low"],
|
|
72
|
+
medium: ["medium"],
|
|
73
|
+
high: ["high"],
|
|
74
|
+
xhigh: ["xhigh", "high"],
|
|
75
|
+
max: ["max", "xhigh", "high"],
|
|
76
|
+
ultra: ["max", "xhigh", "high"],
|
|
77
|
+
ultracode: ["max", "xhigh", "high"]
|
|
78
|
+
};
|
|
79
|
+
async function fetchOpencodeModelVariants(client, directory, provider) {
|
|
80
|
+
const result = await client.v2.model.list({ location: { directory } }, { throwOnError: true });
|
|
81
|
+
return new Map(result.data.data.filter((candidate) => candidate.providerID === provider).map((candidate) => [candidate.id, new Set(candidate.variants.map((variant) => variant.id))]));
|
|
82
|
+
}
|
|
83
|
+
function opencodeThinkingVariant(variants, thinkingLevel) {
|
|
84
|
+
return thinkingLevel ? OPENCODE_VARIANT_CANDIDATES_BY_THINKING_LEVEL[thinkingLevel].find((variant) => variants?.has(variant)) : void 0;
|
|
85
|
+
}
|
|
86
|
+
var opencodeAuthSchema = z.record(z.string(), z.object({
|
|
87
|
+
type: z.string().optional(),
|
|
88
|
+
key: z.string().optional()
|
|
89
|
+
}));
|
|
90
|
+
async function hasOpencodeCredentials(provider) {
|
|
91
|
+
if (provider === "ollama") return !!readOllamaAuthEnv("opencode", process.env);
|
|
92
|
+
if (!existsSync(OPENCODE_AUTH_PATH)) return false;
|
|
93
|
+
try {
|
|
94
|
+
const auth = opencodeAuthSchema.safeParse(JSON.parse(await readFile(OPENCODE_AUTH_PATH, "utf8")));
|
|
95
|
+
return auth.success && auth.data[provider]?.type === "api" && Boolean(auth.data[provider]?.key);
|
|
96
|
+
} catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function getOpencodeProvider() {
|
|
101
|
+
if (readOllamaAuthEnv("opencode", process.env)) return "ollama";
|
|
102
|
+
if (await hasOpencodeCredentials(OPENCODE_GO_PROVIDER)) return OPENCODE_GO_PROVIDER;
|
|
103
|
+
if (await hasOpencodeCredentials(ASTER_PROVIDER)) return ASTER_PROVIDER;
|
|
104
|
+
return "openrouter";
|
|
105
|
+
}
|
|
106
|
+
function getOpenCodeGoModel(model) {
|
|
107
|
+
return model.replace(/^[^/]+\//, "");
|
|
108
|
+
}
|
|
109
|
+
function opencodeConfig(provider, model, providerModels = [model]) {
|
|
110
|
+
let config;
|
|
111
|
+
if (provider === OPENCODE_GO_PROVIDER) {
|
|
112
|
+
config = {
|
|
113
|
+
enabled_providers: [OPENCODE_GO_PROVIDER],
|
|
114
|
+
model: `${OPENCODE_GO_PROVIDER}/${model}`,
|
|
115
|
+
provider: {
|
|
116
|
+
[OPENCODE_GO_PROVIDER]: {
|
|
117
|
+
models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
permission: OPENCODE_WORKSPACE_PERMISSION,
|
|
121
|
+
share: "disabled"
|
|
122
|
+
};
|
|
123
|
+
} else if (provider === ASTER_PROVIDER || provider === "ollama") {
|
|
124
|
+
const ollama = provider === "ollama" ? readOllamaAuthEnv("opencode", process.env) : null;
|
|
125
|
+
config = {
|
|
126
|
+
enabled_providers: [provider],
|
|
127
|
+
model: `${provider}/${model}`,
|
|
128
|
+
provider: {
|
|
129
|
+
[provider]: {
|
|
130
|
+
npm: "@ai-sdk/openai-compatible",
|
|
131
|
+
name: ollama ? "Ollama" : "Aster",
|
|
132
|
+
options: ollama ? { baseURL: `${ollama.baseUrl}/v1`, apiKey: ollama.apiKey } : { baseURL: ASTER_BASE_URL },
|
|
133
|
+
models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
permission: OPENCODE_WORKSPACE_PERMISSION,
|
|
137
|
+
share: "disabled"
|
|
138
|
+
};
|
|
139
|
+
} else {
|
|
140
|
+
config = {
|
|
141
|
+
enabled_providers: ["openrouter"],
|
|
142
|
+
model: `openrouter/${model}`,
|
|
143
|
+
provider: {
|
|
144
|
+
openrouter: {
|
|
145
|
+
models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
permission: OPENCODE_WORKSPACE_PERMISSION,
|
|
149
|
+
share: "disabled"
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return config;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/managers/muse-msp.ts
|
|
156
|
+
import { spawn } from "child_process";
|
|
157
|
+
|
|
158
|
+
// src/utils/uuid-v7.ts
|
|
159
|
+
import { randomBytes } from "crypto";
|
|
160
|
+
function uuidV7() {
|
|
161
|
+
const bytes = randomBytes(16);
|
|
162
|
+
let timestamp = BigInt(Date.now());
|
|
163
|
+
for (let index = 5; index >= 0; index -= 1) {
|
|
164
|
+
bytes[index] = Number(timestamp & 0xffn);
|
|
165
|
+
timestamp >>= 8n;
|
|
166
|
+
}
|
|
167
|
+
bytes[6] = bytes[6] & 15 | 112;
|
|
168
|
+
bytes[8] = bytes[8] & 63 | 128;
|
|
169
|
+
const hex = bytes.toString("hex");
|
|
170
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// src/managers/muse-msp.ts
|
|
174
|
+
function spawnMuseMsp(workingDirectory) {
|
|
175
|
+
const child = spawn("muse", ["serve", "--disable-sandbox", "--trust-workspace"], {
|
|
176
|
+
cwd: workingDirectory,
|
|
177
|
+
env: { ...process.env, MUSE_NO_AUTO_UPDATE: "1", NO_COLOR: "1" },
|
|
178
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
179
|
+
});
|
|
180
|
+
return { child, client: new AspClient({ stdin: child.stdin, stdout: child.stdout, jsonRpcVersion: "2.0" }) };
|
|
181
|
+
}
|
|
182
|
+
async function initializeMuse(client, clientName, timeoutMs) {
|
|
183
|
+
await client.request("initialize", { clientInfo: { name: clientName, version: "1" } }, { timeoutMs });
|
|
184
|
+
client.notify("initialized");
|
|
185
|
+
}
|
|
186
|
+
async function startMuseSession(client, params, timeoutMs) {
|
|
187
|
+
const result = await client.request("session/start", { commandId: uuidV7(), providerId: "meta", ...params }, { timeoutMs });
|
|
188
|
+
const sessionId = isRecord(result) && isRecord(result.session) ? result.session.sessionId : void 0;
|
|
189
|
+
if (typeof sessionId !== "string") throw new Error("Muse did not return a session id.");
|
|
190
|
+
return sessionId;
|
|
191
|
+
}
|
|
192
|
+
function museTurnStartParams(sessionId, input, thinkingLevel) {
|
|
193
|
+
return { commandId: uuidV7(), sessionId, input, reasoningEffort: codexReasoningEffortForThinkingLevel(thinkingLevel) };
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export {
|
|
197
|
+
TURN_STARTED_METHOD,
|
|
198
|
+
TURN_COMPLETED_METHOD,
|
|
199
|
+
TURN_PLAN_UPDATED_METHOD,
|
|
200
|
+
THREAD_GOAL_UPDATED_METHOD,
|
|
201
|
+
THREAD_GOAL_CLEARED_METHOD,
|
|
202
|
+
ITEM_STARTED_METHOD,
|
|
203
|
+
ITEM_COMPLETED_METHOD,
|
|
204
|
+
AGENT_MESSAGE_DELTA_METHOD,
|
|
205
|
+
REASONING_SUMMARY_TEXT_DELTA_METHOD,
|
|
206
|
+
REASONING_TEXT_DELTA_METHOD,
|
|
207
|
+
REASONING_SUMMARY_PART_ADDED_METHOD,
|
|
208
|
+
COMMAND_EXECUTION_OUTPUT_DELTA_METHOD,
|
|
209
|
+
FILE_CHANGE_OUTPUT_DELTA_METHOD,
|
|
210
|
+
ACCOUNT_RATE_LIMITS_UPDATED_METHOD,
|
|
211
|
+
THREAD_TOKEN_USAGE_UPDATED_METHOD,
|
|
212
|
+
THREAD_COMPACTED_METHOD,
|
|
213
|
+
MODEL_REROUTED_METHOD,
|
|
214
|
+
THREAD_STATUS_CHANGED_METHOD,
|
|
215
|
+
dispatchAspNotification,
|
|
216
|
+
recoverCompletedTurn,
|
|
217
|
+
OPENCODE_AUTH_PATH,
|
|
218
|
+
PI_AUTH_PATH,
|
|
219
|
+
PI_MCP_CONFIG_PATH,
|
|
220
|
+
MUSE_AUTH_PATH,
|
|
221
|
+
fetchOpencodeModelVariants,
|
|
222
|
+
opencodeThinkingVariant,
|
|
223
|
+
hasOpencodeCredentials,
|
|
224
|
+
getOpencodeProvider,
|
|
225
|
+
getOpenCodeGoModel,
|
|
226
|
+
opencodeConfig,
|
|
227
|
+
uuidV7,
|
|
228
|
+
spawnMuseMsp,
|
|
229
|
+
initializeMuse,
|
|
230
|
+
startMuseSession,
|
|
231
|
+
museTurnStartParams
|
|
232
|
+
};
|
|
@@ -10,6 +10,25 @@ function isNonEmptyString(value) {
|
|
|
10
10
|
return typeof value === "string" && value.trim().length > 0;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
// ../shared/src/json.ts
|
|
14
|
+
function safeJsonParse(str, fallback) {
|
|
15
|
+
try {
|
|
16
|
+
return JSON.parse(str);
|
|
17
|
+
} catch {
|
|
18
|
+
return fallback;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function extractJsonObject(content) {
|
|
22
|
+
const direct = safeJsonParse(content, null);
|
|
23
|
+
if (direct !== null) return direct;
|
|
24
|
+
const fenced = content.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
25
|
+
const fromFence = fenced ? safeJsonParse(fenced[1], null) : null;
|
|
26
|
+
if (fromFence !== null) return fromFence;
|
|
27
|
+
const start = content.indexOf("{");
|
|
28
|
+
const end = content.lastIndexOf("}");
|
|
29
|
+
return start !== -1 && end > start ? safeJsonParse(content.slice(start, end + 1), null) : null;
|
|
30
|
+
}
|
|
31
|
+
|
|
13
32
|
// ../shared/src/async.ts
|
|
14
33
|
var TIMEOUT = /* @__PURE__ */ Symbol("timeout");
|
|
15
34
|
async function raceWithTimeout(promise, ms) {
|
|
@@ -103,31 +122,6 @@ function getProviderDisplayName(provider2, variant = "short") {
|
|
|
103
122
|
}
|
|
104
123
|
}
|
|
105
124
|
|
|
106
|
-
// ../shared/src/api-casing.ts
|
|
107
|
-
var toCamel = (key) => key.replace(/_([a-z0-9])/g, (_, char) => char.toUpperCase());
|
|
108
|
-
function withCamelCaseKeys(body) {
|
|
109
|
-
if (!isRecord(body)) return body;
|
|
110
|
-
const aliases = Object.entries(body).filter(([key]) => key.includes("_") && !(toCamel(key) in body));
|
|
111
|
-
return aliases.length ? { ...body, ...Object.fromEntries(aliases.map(([key, entry]) => [toCamel(key), entry])) } : body;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// ../shared/src/aster.ts
|
|
115
|
-
var ASTER_PROVIDER = "aster";
|
|
116
|
-
var ASTER_BASE_URL = "https://api.asterlab.ai/v1";
|
|
117
|
-
var ASTER_MODELS = [
|
|
118
|
-
"kimi-k3",
|
|
119
|
-
"glm-5.2",
|
|
120
|
-
"gpt-oss-120b-fast",
|
|
121
|
-
"gpt-oss-120b"
|
|
122
|
-
];
|
|
123
|
-
var DEFAULT_ASTER_MODEL = ASTER_MODELS[0];
|
|
124
|
-
var ASTER_MODEL_LABELS = {
|
|
125
|
-
"kimi-k3": "Kimi K3",
|
|
126
|
-
"glm-5.2": "GLM 5.2",
|
|
127
|
-
"gpt-oss-120b-fast": "GPT-OSS 120B Fast",
|
|
128
|
-
"gpt-oss-120b": "GPT-OSS 120B"
|
|
129
|
-
};
|
|
130
|
-
|
|
131
125
|
// ../shared/src/models-dev.ts
|
|
132
126
|
import { z } from "zod";
|
|
133
127
|
var MODELS_DEV_API_URL = "https://models.dev/api.json";
|
|
@@ -198,6 +192,31 @@ async function fetchOpenCodeGoCatalog(fallbackModelIds = [DEFAULT_OPENCODE_GO_MO
|
|
|
198
192
|
}
|
|
199
193
|
}
|
|
200
194
|
|
|
195
|
+
// ../shared/src/api-casing.ts
|
|
196
|
+
var toCamel = (key) => key.replace(/_([a-z0-9])/g, (_, char) => char.toUpperCase());
|
|
197
|
+
function withCamelCaseKeys(body) {
|
|
198
|
+
if (!isRecord(body)) return body;
|
|
199
|
+
const aliases = Object.entries(body).filter(([key]) => key.includes("_") && !(toCamel(key) in body));
|
|
200
|
+
return aliases.length ? { ...body, ...Object.fromEntries(aliases.map(([key, entry]) => [toCamel(key), entry])) } : body;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// ../shared/src/aster.ts
|
|
204
|
+
var ASTER_PROVIDER = "aster";
|
|
205
|
+
var ASTER_BASE_URL = "https://api.asterlab.ai/v1";
|
|
206
|
+
var ASTER_MODELS = [
|
|
207
|
+
"kimi-k3",
|
|
208
|
+
"glm-5.2",
|
|
209
|
+
"gpt-oss-120b-fast",
|
|
210
|
+
"gpt-oss-120b"
|
|
211
|
+
];
|
|
212
|
+
var DEFAULT_ASTER_MODEL = ASTER_MODELS[0];
|
|
213
|
+
var ASTER_MODEL_LABELS = {
|
|
214
|
+
"kimi-k3": "Kimi K3",
|
|
215
|
+
"glm-5.2": "GLM 5.2",
|
|
216
|
+
"gpt-oss-120b-fast": "GPT-OSS 120B Fast",
|
|
217
|
+
"gpt-oss-120b": "GPT-OSS 120B"
|
|
218
|
+
};
|
|
219
|
+
|
|
201
220
|
// ../shared/src/engine/types.ts
|
|
202
221
|
var DEFAULT_CHAT_TITLES = {
|
|
203
222
|
claude: "Claude Code",
|
|
@@ -1845,9 +1864,11 @@ var headlessAgentRequestSchema = z5.object({
|
|
|
1845
1864
|
prompt: z5.string(),
|
|
1846
1865
|
workingDirectory: z5.string().min(1),
|
|
1847
1866
|
timeoutSeconds: z5.number().int().min(1).max(1800).default(300),
|
|
1867
|
+
thinkingLevel: z5.enum(STANDARD_THINKING_LEVELS).optional(),
|
|
1848
1868
|
codexOauthTokens: z5.object({ accessToken: z5.string(), accountId: z5.string() }).optional(),
|
|
1849
1869
|
outputSchema: z5.record(z5.string(), z5.json())
|
|
1850
1870
|
});
|
|
1871
|
+
var headlessAgentUsagePath = (outputPath) => `${outputPath}.usage`;
|
|
1851
1872
|
|
|
1852
1873
|
// ../shared/src/engine/environment.ts
|
|
1853
1874
|
var DESKTOP_STREAM_PORT = 6080;
|
|
@@ -1889,15 +1910,6 @@ async function readSseStream(body, onEvent, shouldContinue = () => true) {
|
|
|
1889
1910
|
// ../shared/src/types.ts
|
|
1890
1911
|
var ENGINE_SEND_MESSAGE_FAILED_ERROR = "Failed to send message";
|
|
1891
1912
|
|
|
1892
|
-
// ../shared/src/json.ts
|
|
1893
|
-
function safeJsonParse(str, fallback) {
|
|
1894
|
-
try {
|
|
1895
|
-
return JSON.parse(str);
|
|
1896
|
-
} catch {
|
|
1897
|
-
return fallback;
|
|
1898
|
-
}
|
|
1899
|
-
}
|
|
1900
|
-
|
|
1901
1913
|
// ../shared/src/agent-quota.ts
|
|
1902
1914
|
var OUT_OF_CREDITS_PATTERNS = [
|
|
1903
1915
|
/credit balance is too low/,
|
|
@@ -9725,6 +9737,7 @@ export {
|
|
|
9725
9737
|
isRecord,
|
|
9726
9738
|
isNonEmptyString,
|
|
9727
9739
|
safeJsonParse,
|
|
9740
|
+
extractJsonObject,
|
|
9728
9741
|
TIMEOUT,
|
|
9729
9742
|
raceWithTimeout,
|
|
9730
9743
|
withTimeout,
|
|
@@ -9941,6 +9954,7 @@ export {
|
|
|
9941
9954
|
REPLICAS_CONFIG_FILENAMES,
|
|
9942
9955
|
parseReplicasConfigString,
|
|
9943
9956
|
headlessAgentRequestSchema,
|
|
9957
|
+
headlessAgentUsagePath,
|
|
9944
9958
|
isClaudeAuthErrorText,
|
|
9945
9959
|
isCodexAuthError,
|
|
9946
9960
|
serializeMuseAuthFile,
|
|
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
HOOK_EXEC_MAX_BUFFER_BYTES
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PZEZIF5C.js";
|
|
7
7
|
|
|
8
8
|
// src/utils/exec.ts
|
|
9
9
|
import { exec, execFile } from "child_process";
|
|
@@ -10,15 +10,15 @@ import {
|
|
|
10
10
|
resolveDiffBase,
|
|
11
11
|
runGitCommand,
|
|
12
12
|
setAgentCredentialSnapshot
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-GEYFS65S.js";
|
|
14
14
|
import {
|
|
15
15
|
AppServerProcess,
|
|
16
16
|
buildCodexAgentEnv
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6EZXQ2C7.js";
|
|
18
18
|
import {
|
|
19
19
|
SUBPROCESS_MAX_BUFFER,
|
|
20
20
|
execFileAsync
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-VSDRLCZY.js";
|
|
22
22
|
import {
|
|
23
23
|
isRecord
|
|
24
24
|
} from "./chunk-UZSNFLDQ.js";
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
readOllamaAuthEnv,
|
|
54
54
|
resolveOpenAICompatibleModelsUrl,
|
|
55
55
|
withTimeout
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-PZEZIF5C.js";
|
|
57
57
|
|
|
58
58
|
// src/managers/codex-token-manager.ts
|
|
59
59
|
import { promises as fs } from "fs";
|
|
@@ -289,7 +289,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
|
|
|
289
289
|
await this.applyCredentialUpdate(++this.credentialGeneration, async () => {
|
|
290
290
|
await this.applyCredentialsResponse(data);
|
|
291
291
|
setAgentCredentialSnapshot("codex", data);
|
|
292
|
-
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-
|
|
292
|
+
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-IBTGVRTZ.js");
|
|
293
293
|
await restartCodexAspHostIfRunning2();
|
|
294
294
|
});
|
|
295
295
|
await this.start(true);
|
|
@@ -310,7 +310,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
|
|
|
310
310
|
const accountChanged = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.codex?.credentialId !== data.credentialId;
|
|
311
311
|
await this.applyCredentialsResponse(data);
|
|
312
312
|
if (restartOnChange && (accountChanged || CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index]))) {
|
|
313
|
-
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-
|
|
313
|
+
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-IBTGVRTZ.js");
|
|
314
314
|
await restartCodexAspHostIfRunning2();
|
|
315
315
|
}
|
|
316
316
|
setAgentCredentialSnapshot("codex", data);
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
getOriginDefaultBranch,
|
|
6
6
|
monolithRequest,
|
|
7
7
|
runGitCommand
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GEYFS65S.js";
|
|
9
9
|
import {
|
|
10
10
|
extractCommandProtectionCommandText,
|
|
11
11
|
findCommandProtectionGitLookups,
|
|
12
12
|
findGitCommitSignals,
|
|
13
13
|
findPrMergeSignals,
|
|
14
14
|
parseCommandProtectionRequest
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PZEZIF5C.js";
|
|
16
16
|
|
|
17
17
|
// src/services/command-protection-service.ts
|
|
18
18
|
import { readFile, stat } from "fs/promises";
|
|
@@ -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-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-ZCIRBGGV.js";
|
|
7
|
+
import "./chunk-GEYFS65S.js";
|
|
8
|
+
import "./chunk-VSDRLCZY.js";
|
|
9
9
|
import {
|
|
10
10
|
isRecord
|
|
11
11
|
} from "./chunk-UZSNFLDQ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-PZEZIF5C.js";
|
|
13
13
|
import "./chunk-VEQXQN22.js";
|
|
14
14
|
|
|
15
15
|
// src/command-protection-hook.ts
|