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.
@@ -8,12 +8,12 @@ import {
8
8
  listRunningCodexModels,
9
9
  restartCodexAspHost,
10
10
  restartCodexAspHostIfRunning
11
- } from "./chunk-4VDF2C2U.js";
12
- import "./chunk-TR7NUUT3.js";
13
- import "./chunk-QDIKROO7.js";
14
- import "./chunk-XS3QUSHQ.js";
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-KXBTOL3R.js";
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
+ };
@@ -5,7 +5,7 @@ import {
5
5
  extractCommandProtectionCommandText,
6
6
  isRecord,
7
7
  parseCodeHostPrUrl
8
- } from "./chunk-KXBTOL3R.js";
8
+ } from "./chunk-PZEZIF5C.js";
9
9
 
10
10
  // src/services/published-pull-request-urls.ts
11
11
  function publishedPullRequestUrls(result) {
@@ -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-XS3QUSHQ.js";
6
+ } from "./chunk-VSDRLCZY.js";
7
7
  import {
8
8
  isVersionBelow
9
- } from "./chunk-KXBTOL3R.js";
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.1042";
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-XS3QUSHQ.js";
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-KXBTOL3R.js";
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-TR7NUUT3.js";
13
+ } from "./chunk-GEYFS65S.js";
14
14
  import {
15
15
  AppServerProcess,
16
16
  buildCodexAgentEnv
17
- } from "./chunk-QDIKROO7.js";
17
+ } from "./chunk-EPG6XMVB.js";
18
18
  import {
19
19
  SUBPROCESS_MAX_BUFFER,
20
20
  execFileAsync
21
- } from "./chunk-XS3QUSHQ.js";
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-KXBTOL3R.js";
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-UAEBYHX2.js");
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-UAEBYHX2.js");
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-KXBTOL3R.js";
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-TR7NUUT3.js";
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-KXBTOL3R.js";
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-SMBKCCEE.js";
7
- import "./chunk-TR7NUUT3.js";
8
- import "./chunk-XS3QUSHQ.js";
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-KXBTOL3R.js";
12
+ import "./chunk-PZEZIF5C.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/command-protection-hook.ts