replicas-engine 0.1.239 → 0.1.241

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/README.md CHANGED
@@ -60,7 +60,7 @@ The engine is expected to run in a VM/sandbox with:
60
60
 
61
61
  ### Provisioning contract (what monolith injects before engine start)
62
62
 
63
- From `monolith/src/lib/daytona.ts` + `monolith/src/lib/workspaces.ts`, the VM is expected to be prepped with:
63
+ From `monolith/src/lib/sandbox-helpers.ts` + `monolith/src/lib/workspaces.ts`, the VM is expected to be prepped with:
64
64
 
65
65
  - Git identity (optional but expected for commits):
66
66
  - `git config --global user.name <bot-or-user-name>`
package/dist/src/index.js CHANGED
@@ -151,6 +151,9 @@ function percentage(tokens, maxTokens) {
151
151
  if (!maxTokens || maxTokens <= 0) return 0;
152
152
  return clampPercentage(tokens / maxTokens * 100);
153
153
  }
154
+ function autoCompactThresholdField(autoCompactThreshold) {
155
+ return typeof autoCompactThreshold === "number" && Number.isFinite(autoCompactThreshold) ? { autoCompactThreshold } : {};
156
+ }
154
157
  function clampTokensToWindow(rawTokens, maxTokens) {
155
158
  if (!maxTokens || maxTokens <= 0) return { totalTokens: rawTokens };
156
159
  if (rawTokens <= maxTokens) return { totalTokens: rawTokens };
@@ -180,6 +183,7 @@ function buildCodexTokenUsageContextUsagePayload(usage) {
180
183
  rawMaxTokens: maxTokens,
181
184
  percentage: percentage(totalTokens, maxTokens),
182
185
  compactsAutomatically: true,
186
+ ...autoCompactThresholdField(usage.autoCompactThreshold),
183
187
  categories: compactCategories([
184
188
  {
185
189
  name: "Input context",
@@ -282,20 +286,12 @@ var SANDBOX_LIFECYCLE = {
282
286
  AUTO_DELETE_MINUTES: -1,
283
287
  SSH_TOKEN_EXPIRATION_MINUTES: 3 * 60
284
288
  };
285
- function buildPaths(homeDir) {
286
- return {
287
- HOME_DIR: homeDir,
288
- WORKSPACES_DIR: `${homeDir}/workspaces`,
289
- REPLICAS_DIR: `${homeDir}/.replicas`,
290
- REPLICAS_FILES_DIR: `${homeDir}/.replicas/files`,
291
- REPLICAS_RUNTIME_ENV_FILE: `${homeDir}/.replicas/runtime-env.sh`
292
- };
293
- }
294
- var DAYTONA_PATHS = buildPaths("/home/ubuntu");
295
- var E2B_PATHS = buildPaths("/home/user");
296
289
  var WORKSPACE_SIZES = ["small", "large"];
297
290
  var INVALID_WORKSPACE_SIZE_ERROR = `Invalid size: must be one of ${WORKSPACE_SIZES.join(", ")}`;
298
291
 
292
+ // ../shared/src/e2b.ts
293
+ var E2B_TEMPLATE_NAME = "replicas-sandbox-2026-05-30-v2";
294
+
299
295
  // ../shared/src/runtime-env.ts
300
296
  function parsePosixEnvFile(content) {
301
297
  const result = {};
@@ -1783,7 +1779,6 @@ function isClaudeAuthErrorText(text) {
1783
1779
  }
1784
1780
 
1785
1781
  // ../shared/src/engine/environment.ts
1786
- var DAYTONA_SNAPSHOT_ID = "29-05-2026-royal-york-v10";
1787
1782
  var DESKTOP_NOVNC_PORT = 6080;
1788
1783
 
1789
1784
  // ../shared/src/engine/types.ts
@@ -1794,6 +1789,7 @@ var DEFAULT_CHAT_TITLES = {
1794
1789
  };
1795
1790
  var CLAUDE_OPUS_1M_MODEL = "opus[1m]";
1796
1791
  var LEGACY_CLAUDE_OPUS_1M_MODEL = "opus-1m";
1792
+ var DEFAULT_CODEX_MODEL = "gpt-5.5";
1797
1793
  function normalizeClaudeModel(model) {
1798
1794
  if (model === LEGACY_CLAUDE_OPUS_1M_MODEL) {
1799
1795
  return CLAUDE_OPUS_1M_MODEL;
@@ -1806,7 +1802,7 @@ var MODEL_LABELS = {
1806
1802
  [CLAUDE_OPUS_1M_MODEL]: "Opus 4.8 (1M)",
1807
1803
  [LEGACY_CLAUDE_OPUS_1M_MODEL]: "Opus 4.8 (1M)",
1808
1804
  haiku: "Haiku 4.5",
1809
- "gpt-5.5": "GPT-5.5",
1805
+ [DEFAULT_CODEX_MODEL]: "GPT-5.5",
1810
1806
  "gpt-5.4": "GPT-5.4",
1811
1807
  "gpt-5.4-mini": "GPT-5.4 Mini",
1812
1808
  "gpt-5.3-codex": "GPT-5.3 Codex",
@@ -3309,7 +3305,7 @@ function upsertRepositoryStatus(current, incoming) {
3309
3305
  }
3310
3306
  function createDefaultDetails() {
3311
3307
  return {
3312
- engineVersion: DAYTONA_SNAPSHOT_ID,
3308
+ engineVersion: E2B_TEMPLATE_NAME,
3313
3309
  globalWarmHookCompleted: { status: "n/a", details: null },
3314
3310
  environmentWarmHookCompleted: { status: "n/a", details: null },
3315
3311
  environmentStartHookCompleted: { status: "n/a", details: null },
@@ -3353,7 +3349,7 @@ var EnvironmentDetailsService = class {
3353
3349
  gitService.listRepositories(),
3354
3350
  detectGitIdentityConfigured()
3355
3351
  ]);
3356
- details.engineVersion = DAYTONA_SNAPSHOT_ID;
3352
+ details.engineVersion = E2B_TEMPLATE_NAME;
3357
3353
  details.claudeAuthMethod = detectClaudeAuthMethod();
3358
3354
  details.codexAuthMethod = detectCodexAuthMethod();
3359
3355
  details.gitIdentityConfigured = gitIdentityConfigured;
@@ -5792,7 +5788,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
5792
5788
  rawMaxTokens: Number.isFinite(usage.rawMaxTokens) ? usage.rawMaxTokens : maxTokens,
5793
5789
  percentage: clampPercentage(rawPercentage),
5794
5790
  compactsAutomatically: usage.isAutoCompactEnabled === true,
5795
- ...typeof usage.autoCompactThreshold === "number" && Number.isFinite(usage.autoCompactThreshold) ? { autoCompactThreshold: usage.autoCompactThreshold } : {},
5791
+ ...autoCompactThresholdField(usage.autoCompactThreshold),
5796
5792
  categories: usage.categories.map((category) => ({
5797
5793
  name: category.name,
5798
5794
  tokens: category.tokens,
@@ -6090,7 +6086,7 @@ var AspClient = class {
6090
6086
  // src/managers/codex-asp/app-server-process.ts
6091
6087
  var DEFAULT_CODEX_BINARY = "codex";
6092
6088
  var DEFAULT_CODEX_ARGS = ["app-server", "--listen", "stdio://"];
6093
- var ENGINE_PACKAGE_VERSION = "0.1.239";
6089
+ var ENGINE_PACKAGE_VERSION = "0.1.241";
6094
6090
  var INITIALIZE_METHOD = "initialize";
6095
6091
  var INITIALIZED_NOTIFICATION = "initialized";
6096
6092
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -6357,7 +6353,7 @@ function isCodexAuthError(error) {
6357
6353
  }
6358
6354
 
6359
6355
  // src/managers/codex-asp/mappers.ts
6360
- var DEFAULT_MODEL = "gpt-5.5";
6356
+ var DEFAULT_MODEL = DEFAULT_CODEX_MODEL;
6361
6357
  var THREAD_START_METHOD = "thread/start";
6362
6358
  var THREAD_RESUME_METHOD = "thread/resume";
6363
6359
  var THREAD_READ_METHOD = "thread/read";
@@ -6368,6 +6364,24 @@ var TURN_START_METHOD = "turn/start";
6368
6364
  var TURN_INTERRUPT_METHOD = "turn/interrupt";
6369
6365
  var ACCOUNT_RATE_LIMITS_READ_METHOD = "account/rateLimits/read";
6370
6366
  var MAX_CODEX_ASP_TRANSCRIPT_OUTPUT_CHARS = DEFAULT_HOOK_OUTPUT_PREVIEW_CHARS;
6367
+ var CODEX_ASP_AUTO_COMPACT_RATIO = 0.85;
6368
+ var CODEX_ASP_MODEL_CONTEXT_WINDOWS = {
6369
+ [DEFAULT_MODEL]: 258400
6370
+ };
6371
+ function codexAspAutoCompactTokenLimitForModel(model) {
6372
+ const contextWindow = CODEX_ASP_MODEL_CONTEXT_WINDOWS[model ?? DEFAULT_MODEL];
6373
+ return contextWindow === void 0 ? void 0 : Math.floor(contextWindow * CODEX_ASP_AUTO_COMPACT_RATIO);
6374
+ }
6375
+ function codexAspConfigForModel(model) {
6376
+ const tokenLimit = codexAspAutoCompactTokenLimitForModel(model);
6377
+ return {
6378
+ web_search: "live",
6379
+ ...tokenLimit !== void 0 ? {
6380
+ model_auto_compact_token_limit: tokenLimit,
6381
+ model_auto_compact_token_limit_scope: "total"
6382
+ } : {}
6383
+ };
6384
+ }
6371
6385
  function toReasoningEffort(thinkingLevel) {
6372
6386
  return codexReasoningEffortForThinkingLevel(thinkingLevel);
6373
6387
  }
@@ -6740,27 +6754,29 @@ function mergeCodexAspTranscripts(primary, supplemental) {
6740
6754
  }
6741
6755
  async function buildThreadStartParams(workingDirectory, request, developerInstructions) {
6742
6756
  const additionalDirectories = await getAgentAdditionalDirectories();
6757
+ const model = request.model ?? DEFAULT_MODEL;
6743
6758
  return {
6744
- model: request.model ?? DEFAULT_MODEL,
6759
+ model,
6745
6760
  cwd: workingDirectory,
6746
6761
  runtimeWorkspaceRoots: additionalDirectories,
6747
6762
  sandbox: "danger-full-access",
6748
6763
  developerInstructions: developerInstructions ?? null,
6749
- config: { web_search: "live" },
6764
+ config: codexAspConfigForModel(model),
6750
6765
  experimentalRawEvents: false,
6751
6766
  persistExtendedHistory: false
6752
6767
  };
6753
6768
  }
6754
6769
  async function buildThreadResumeParams(workingDirectory, threadId, request, developerInstructions) {
6755
6770
  const additionalDirectories = await getAgentAdditionalDirectories();
6771
+ const model = request.model ?? DEFAULT_MODEL;
6756
6772
  return {
6757
6773
  threadId,
6758
- model: request.model ?? DEFAULT_MODEL,
6774
+ model,
6759
6775
  cwd: workingDirectory,
6760
6776
  runtimeWorkspaceRoots: additionalDirectories,
6761
6777
  sandbox: "danger-full-access",
6762
6778
  developerInstructions: developerInstructions ?? null,
6763
- config: { web_search: "live" },
6779
+ config: codexAspConfigForModel(model),
6764
6780
  excludeTurns: false,
6765
6781
  persistExtendedHistory: false
6766
6782
  };
@@ -7583,6 +7599,7 @@ var CodexAspManager = class extends CodingAgentManager {
7583
7599
  const payload = buildCodexTokenUsageContextUsagePayload({
7584
7600
  model,
7585
7601
  modelContextWindow: tokenUsage.modelContextWindow,
7602
+ autoCompactThreshold: codexAspAutoCompactTokenLimitForModel(model),
7586
7603
  last: {
7587
7604
  inputTokens: tokenUsage.last.inputTokens,
7588
7605
  outputTokens: tokenUsage.last.outputTokens,
@@ -7607,7 +7624,6 @@ import { existsSync as existsSync6 } from "fs";
7607
7624
  import { join as join14 } from "path";
7608
7625
  import { homedir as homedir12 } from "os";
7609
7626
  import { parse as parseToml, stringify as stringifyToml } from "smol-toml";
7610
- var DEFAULT_MODEL2 = "gpt-5.5";
7611
7627
  var CODEX_CONFIG_PATH = join14(homedir12(), ".codex", "config.toml");
7612
7628
  function isJsonlEvent2(value) {
7613
7629
  if (!isRecord4(value)) {
@@ -7767,7 +7783,7 @@ var CodexManager = class extends CodingAgentManager {
7767
7783
  workingDirectory: this.workingDirectory,
7768
7784
  skipGitRepoCheck: true,
7769
7785
  sandboxMode,
7770
- model: model || DEFAULT_MODEL2,
7786
+ model: model || DEFAULT_CODEX_MODEL,
7771
7787
  webSearchMode,
7772
7788
  additionalDirectories,
7773
7789
  ...codexReasoningEffort ? { modelReasoningEffort: codexReasoningEffort } : {}
@@ -10307,7 +10323,7 @@ function createV1Routes(deps) {
10307
10323
  });
10308
10324
  app2.get("/version", (c) => {
10309
10325
  const response = {
10310
- version: DAYTONA_SNAPSHOT_ID
10326
+ version: E2B_TEMPLATE_NAME
10311
10327
  };
10312
10328
  return c.json(response);
10313
10329
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.239",
3
+ "version": "0.1.241",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",