replicas-engine 0.1.1042 → 0.1.1044
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-UAEBYHX2.js → asp-host-CIG6J64Z.js} +5 -5
- package/dist/src/chunk-3RXHH2OK.js +232 -0
- package/dist/src/{chunk-CMXKQPDV.js → chunk-A6M7VE2Y.js} +1 -1
- package/dist/src/{chunk-QDIKROO7.js → chunk-EPG6XMVB.js} +3 -3
- package/dist/src/{chunk-TR7NUUT3.js → chunk-GEYFS65S.js} +2 -2
- package/dist/src/{chunk-KXBTOL3R.js → chunk-PZEZIF5C.js} +75 -61
- package/dist/src/{chunk-4VDF2C2U.js → chunk-UMVWJYQQ.js} +6 -6
- package/dist/src/{chunk-XS3QUSHQ.js → chunk-VSDRLCZY.js} +1 -1
- package/dist/src/{chunk-SMBKCCEE.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-UMVWJYQQ.js";
|
|
12
|
+
import "./chunk-GEYFS65S.js";
|
|
13
|
+
import "./chunk-EPG6XMVB.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,
|
|
@@ -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-EPG6XMVB.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
|
+
};
|
|
@@ -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.1044";
|
|
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";
|
|
@@ -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",
|
|
@@ -941,6 +960,32 @@ function getCredentialMethodLabel(agent, method) {
|
|
|
941
960
|
}
|
|
942
961
|
}
|
|
943
962
|
|
|
963
|
+
// ../shared/src/sandbox.ts
|
|
964
|
+
var SANDBOX_LIFECYCLE = {
|
|
965
|
+
AUTO_STOP_MINUTES: 60,
|
|
966
|
+
AUTO_ARCHIVE_MINUTES: 60 * 24 * 7,
|
|
967
|
+
AUTO_DELETE_MINUTES: -1,
|
|
968
|
+
SSH_TOKEN_EXPIRATION_MINUTES: 3 * 60
|
|
969
|
+
};
|
|
970
|
+
var SANDBOX_SKILL_DIRS = [
|
|
971
|
+
".agents/skills",
|
|
972
|
+
".claude/skills",
|
|
973
|
+
".codex/skills",
|
|
974
|
+
".cursor/skills",
|
|
975
|
+
".config/opencode/skills",
|
|
976
|
+
".pi/agent/skills",
|
|
977
|
+
".replicas/skill-registries"
|
|
978
|
+
];
|
|
979
|
+
var SANDBOX_PATHS = {
|
|
980
|
+
HOME_DIR: "/home/user",
|
|
981
|
+
WORKSPACES_DIR: "/home/user/workspaces",
|
|
982
|
+
REPLICAS_DIR: "/home/user/.replicas",
|
|
983
|
+
REPLICAS_CANVAS_DIR: "/home/user/.replicas/canvas",
|
|
984
|
+
REPLICAS_RUNTIME_ENV_FILE: "/home/user/.replicas/runtime-env.sh"
|
|
985
|
+
};
|
|
986
|
+
var WORKSPACE_SIZES = ["small", "large", "ultra"];
|
|
987
|
+
var INVALID_WORKSPACE_SIZE_ERROR = `Invalid size: must be one of ${WORKSPACE_SIZES.join(", ")}`;
|
|
988
|
+
|
|
944
989
|
// ../shared/src/pricing.ts
|
|
945
990
|
var WORKSPACE_SOURCES = ["api", "dashboard", "slack", "linear", "github", "gitlab", "automation", "mothership"];
|
|
946
991
|
var CLIENT_MESSAGE_SOURCES = ["web", "desktop", "mobile", "tui"];
|
|
@@ -1819,9 +1864,11 @@ var headlessAgentRequestSchema = z5.object({
|
|
|
1819
1864
|
prompt: z5.string(),
|
|
1820
1865
|
workingDirectory: z5.string().min(1),
|
|
1821
1866
|
timeoutSeconds: z5.number().int().min(1).max(1800).default(300),
|
|
1867
|
+
thinkingLevel: z5.enum(STANDARD_THINKING_LEVELS).optional(),
|
|
1822
1868
|
codexOauthTokens: z5.object({ accessToken: z5.string(), accountId: z5.string() }).optional(),
|
|
1823
1869
|
outputSchema: z5.record(z5.string(), z5.json())
|
|
1824
1870
|
});
|
|
1871
|
+
var headlessAgentUsagePath = (outputPath) => `${outputPath}.usage`;
|
|
1825
1872
|
|
|
1826
1873
|
// ../shared/src/engine/environment.ts
|
|
1827
1874
|
var DESKTOP_STREAM_PORT = 6080;
|
|
@@ -1863,15 +1910,6 @@ async function readSseStream(body, onEvent, shouldContinue = () => true) {
|
|
|
1863
1910
|
// ../shared/src/types.ts
|
|
1864
1911
|
var ENGINE_SEND_MESSAGE_FAILED_ERROR = "Failed to send message";
|
|
1865
1912
|
|
|
1866
|
-
// ../shared/src/json.ts
|
|
1867
|
-
function safeJsonParse(str, fallback) {
|
|
1868
|
-
try {
|
|
1869
|
-
return JSON.parse(str);
|
|
1870
|
-
} catch {
|
|
1871
|
-
return fallback;
|
|
1872
|
-
}
|
|
1873
|
-
}
|
|
1874
|
-
|
|
1875
1913
|
// ../shared/src/agent-quota.ts
|
|
1876
1914
|
var OUT_OF_CREDITS_PATTERNS = [
|
|
1877
1915
|
/credit balance is too low/,
|
|
@@ -2852,32 +2890,6 @@ function parseFrontmatter(content) {
|
|
|
2852
2890
|
}
|
|
2853
2891
|
}
|
|
2854
2892
|
|
|
2855
|
-
// ../shared/src/sandbox.ts
|
|
2856
|
-
var SANDBOX_LIFECYCLE = {
|
|
2857
|
-
AUTO_STOP_MINUTES: 60,
|
|
2858
|
-
AUTO_ARCHIVE_MINUTES: 60 * 24 * 7,
|
|
2859
|
-
AUTO_DELETE_MINUTES: -1,
|
|
2860
|
-
SSH_TOKEN_EXPIRATION_MINUTES: 3 * 60
|
|
2861
|
-
};
|
|
2862
|
-
var SANDBOX_SKILL_DIRS = [
|
|
2863
|
-
".agents/skills",
|
|
2864
|
-
".claude/skills",
|
|
2865
|
-
".codex/skills",
|
|
2866
|
-
".cursor/skills",
|
|
2867
|
-
".config/opencode/skills",
|
|
2868
|
-
".pi/agent/skills",
|
|
2869
|
-
".replicas/skill-registries"
|
|
2870
|
-
];
|
|
2871
|
-
var SANDBOX_PATHS = {
|
|
2872
|
-
HOME_DIR: "/home/user",
|
|
2873
|
-
WORKSPACES_DIR: "/home/user/workspaces",
|
|
2874
|
-
REPLICAS_DIR: "/home/user/.replicas",
|
|
2875
|
-
REPLICAS_CANVAS_DIR: "/home/user/.replicas/canvas",
|
|
2876
|
-
REPLICAS_RUNTIME_ENV_FILE: "/home/user/.replicas/runtime-env.sh"
|
|
2877
|
-
};
|
|
2878
|
-
var WORKSPACE_SIZES = ["small", "large", "ultra"];
|
|
2879
|
-
var INVALID_WORKSPACE_SIZE_ERROR = `Invalid size: must be one of ${WORKSPACE_SIZES.join(", ")}`;
|
|
2880
|
-
|
|
2881
2893
|
// ../shared/src/learned-skills.ts
|
|
2882
2894
|
var LEARNED_SKILLS_ROOT = `${SANDBOX_PATHS.REPLICAS_DIR}/learned-skills`;
|
|
2883
2895
|
var LEARNED_SKILLS_MANIFEST_PATH = `${LEARNED_SKILLS_ROOT}/manifest.json`;
|
|
@@ -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,
|
|
@@ -9747,6 +9760,7 @@ export {
|
|
|
9747
9760
|
detectEnvironmentAuthMethod,
|
|
9748
9761
|
AGENT_CREDENTIAL_METHODS_IN_ORDER,
|
|
9749
9762
|
describeCredential,
|
|
9763
|
+
SANDBOX_SKILL_DIRS,
|
|
9750
9764
|
isClientMessageSource,
|
|
9751
9765
|
agentCredentialSnapshotSchema,
|
|
9752
9766
|
isSameCredential,
|
|
@@ -9853,7 +9867,6 @@ export {
|
|
|
9853
9867
|
SUBAGENT_MCP_TOOL_NAMES,
|
|
9854
9868
|
parseMcpToolName,
|
|
9855
9869
|
parseFrontmatter,
|
|
9856
|
-
SANDBOX_SKILL_DIRS,
|
|
9857
9870
|
LEARNED_SKILLS_MANIFEST_PATH,
|
|
9858
9871
|
LEARNED_SKILL_DIR_PREFIX,
|
|
9859
9872
|
learnedSkillsManifestSchema,
|
|
@@ -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,
|
|
@@ -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-EPG6XMVB.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-CIG6J64Z.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-CIG6J64Z.js");
|
|
314
314
|
await restartCodexAspHostIfRunning2();
|
|
315
315
|
}
|
|
316
316
|
setAgentCredentialSnapshot("codex", data);
|
|
@@ -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";
|
|
@@ -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
|