replicas-engine 0.1.1308 → 0.1.1311

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-XBKJROPE.js";
12
- import "./chunk-CDRCJUTU.js";
13
- import "./chunk-QCV7O27G.js";
14
- import "./chunk-FDLME7OO.js";
11
+ } from "./chunk-O5FOUSFZ.js";
12
+ import "./chunk-FJGC3SKY.js";
13
+ import "./chunk-MF2O6NS5.js";
14
+ import "./chunk-PKLNM4OL.js";
15
15
  import "./chunk-UZSNFLDQ.js";
16
- import "./chunk-JEP6EFK4.js";
16
+ import "./chunk-BG2GDBAV.js";
17
17
  import "./chunk-VEQXQN22.js";
18
18
  export {
19
19
  CODEX_ULTRAFAST_SERVICE_TIER,
@@ -5126,6 +5126,11 @@ var EMPTY_AGENT_DEFAULT_SETTINGS = {
5126
5126
  fast_mode: null
5127
5127
  };
5128
5128
  var DEFAULT_SUBAGENT_MCP_PROVIDERS = [...VALID_AGENT_PROVIDERS];
5129
+ var ALERT_SOUND_FAMILIES = {
5130
+ glass: ["glint", "tap", "ripple", "halo"],
5131
+ wood: ["ready", "pluck", "knock", "bloom", "steps"]
5132
+ };
5133
+ var ALERT_SOUNDS = [...ALERT_SOUND_FAMILIES.glass, ...ALERT_SOUND_FAMILIES.wood];
5129
5134
  var DEFAULT_USER_PREFERENCES = {
5130
5135
  default_agent: null,
5131
5136
  default_model: null,
@@ -5161,7 +5166,9 @@ var DEFAULT_USER_PREFERENCES = {
5161
5166
  default_fast_mode: false,
5162
5167
  auto_compact_tokens: null,
5163
5168
  agent_defaults: { ...EMPTY_AGENT_DEFAULT_SETTINGS },
5164
- fallback_chains: null
5169
+ fallback_chains: null,
5170
+ alert_sound: null,
5171
+ workspace_alerts: {}
5165
5172
  };
5166
5173
  function defaultReplicasAgentAbilities() {
5167
5174
  const abilities = {};
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  AspClient
6
- } from "./chunk-QCV7O27G.js";
6
+ } from "./chunk-MF2O6NS5.js";
7
7
  import {
8
8
  ASTER_BASE_URL,
9
9
  ASTER_PROVIDER,
@@ -15,7 +15,7 @@ import {
15
15
  isRecord,
16
16
  readOllamaAuthEnv,
17
17
  readOpenAICompatibleAuthEnv
18
- } from "./chunk-JEP6EFK4.js";
18
+ } from "./chunk-BG2GDBAV.js";
19
19
 
20
20
  // src/managers/codex-asp/notification-dispatch.ts
21
21
  var TURN_STARTED_METHOD = "turn/started";
@@ -5,7 +5,7 @@ import {
5
5
  extractCommandProtectionCommandText,
6
6
  isRecord,
7
7
  parseCodeHostPrUrl
8
- } from "./chunk-JEP6EFK4.js";
8
+ } from "./chunk-BG2GDBAV.js";
9
9
 
10
10
  // src/services/published-pull-request-urls.ts
11
11
  function publishedPullRequestUrls(result) {
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  SUBPROCESS_MAX_BUFFER,
6
6
  execFileAsync
7
- } from "./chunk-FDLME7OO.js";
7
+ } from "./chunk-PKLNM4OL.js";
8
8
  import {
9
9
  isRecord as isRecord2
10
10
  } from "./chunk-UZSNFLDQ.js";
@@ -22,7 +22,7 @@ import {
22
22
  provisionedDeviceSchema,
23
23
  readReplicasRuntimeEnv,
24
24
  serializePosixEnvFile
25
- } from "./chunk-JEP6EFK4.js";
25
+ } from "./chunk-BG2GDBAV.js";
26
26
 
27
27
  // src/runtime-env-loader.ts
28
28
  import { readFileSync } from "fs";
@@ -6,7 +6,7 @@ import {
6
6
  getOriginDefaultBranch,
7
7
  monolithRequest,
8
8
  runGitCommand
9
- } from "./chunk-CDRCJUTU.js";
9
+ } from "./chunk-FJGC3SKY.js";
10
10
  import {
11
11
  extractCommandProtectionCommandText,
12
12
  findCommandProtectionGitLookups,
@@ -14,7 +14,7 @@ import {
14
14
  findPrMergeSignals,
15
15
  findScoutRepoWriteSignals,
16
16
  parseCommandProtectionRequest
17
- } from "./chunk-JEP6EFK4.js";
17
+ } from "./chunk-BG2GDBAV.js";
18
18
 
19
19
  // src/services/command-protection-service.ts
20
20
  import { readFile, stat } from "fs/promises";
@@ -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-FDLME7OO.js";
6
+ } from "./chunk-PKLNM4OL.js";
7
7
  import {
8
8
  isVersionBelow
9
- } from "./chunk-JEP6EFK4.js";
9
+ } from "./chunk-BG2GDBAV.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.1308";
243
+ var ENGINE_PACKAGE_VERSION = "0.1.1311";
244
244
  var INITIALIZE_METHOD = "initialize";
245
245
  var INITIALIZED_NOTIFICATION = "initialized";
246
246
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -10,15 +10,15 @@ import {
10
10
  resolveDiffBase,
11
11
  runGitCommand,
12
12
  setAgentCredentialSnapshot
13
- } from "./chunk-CDRCJUTU.js";
13
+ } from "./chunk-FJGC3SKY.js";
14
14
  import {
15
15
  AppServerProcess,
16
16
  buildCodexAgentEnv
17
- } from "./chunk-QCV7O27G.js";
17
+ } from "./chunk-MF2O6NS5.js";
18
18
  import {
19
19
  SUBPROCESS_MAX_BUFFER,
20
20
  execFileAsync
21
- } from "./chunk-FDLME7OO.js";
21
+ } from "./chunk-PKLNM4OL.js";
22
22
  import {
23
23
  isRecord
24
24
  } from "./chunk-UZSNFLDQ.js";
@@ -56,7 +56,7 @@ import {
56
56
  resolveOpenAICompatibleModelsUrl,
57
57
  splitMothershipInstructions,
58
58
  withTimeout
59
- } from "./chunk-JEP6EFK4.js";
59
+ } from "./chunk-BG2GDBAV.js";
60
60
 
61
61
  // src/managers/codex-token-manager.ts
62
62
  import { promises as fs } from "fs";
@@ -306,7 +306,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
306
306
  await this.applyCredentialUpdate(++this.credentialGeneration, async () => {
307
307
  await this.applyCredentialsResponse(data);
308
308
  setAgentCredentialSnapshot("codex", data);
309
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-UZTWCJFQ.js");
309
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-AOCG2NHN.js");
310
310
  await restartCodexAspHostIfRunning2();
311
311
  });
312
312
  await this.start(true);
@@ -328,7 +328,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
328
328
  const accountChanged = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.codex?.credentialId !== data.credentialId;
329
329
  await this.applyCredentialsResponse(data);
330
330
  if (restartOnChange && (accountChanged || CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index]))) {
331
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-UZTWCJFQ.js");
331
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-AOCG2NHN.js");
332
332
  await restartCodexAspHostIfRunning2();
333
333
  }
334
334
  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-JEP6EFK4.js";
6
+ } from "./chunk-BG2GDBAV.js";
7
7
 
8
8
  // src/utils/exec.ts
9
9
  import { exec, execFile } from "child_process";
@@ -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-KZV23QDU.js";
7
- import "./chunk-CDRCJUTU.js";
8
- import "./chunk-FDLME7OO.js";
6
+ } from "./chunk-GBZIVMEH.js";
7
+ import "./chunk-FJGC3SKY.js";
8
+ import "./chunk-PKLNM4OL.js";
9
9
  import {
10
10
  isRecord
11
11
  } from "./chunk-UZSNFLDQ.js";
12
- import "./chunk-JEP6EFK4.js";
12
+ import "./chunk-BG2GDBAV.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/command-protection-hook.ts
@@ -14,12 +14,12 @@ import {
14
14
  recoverCompletedTurn,
15
15
  spawnMuseMsp,
16
16
  startMuseSession
17
- } from "./chunk-MAMNSZ53.js";
17
+ } from "./chunk-BMOEYO4Y.js";
18
18
  import {
19
19
  AppServerProcess,
20
20
  buildCodexAgentEnv
21
- } from "./chunk-QCV7O27G.js";
22
- import "./chunk-FDLME7OO.js";
21
+ } from "./chunk-MF2O6NS5.js";
22
+ import "./chunk-PKLNM4OL.js";
23
23
  import {
24
24
  AGENT,
25
25
  OPENCODE_GO_PROVIDER,
@@ -29,7 +29,7 @@ import {
29
29
  headlessAgentUsagePath,
30
30
  isRecord,
31
31
  withTimeout
32
- } from "./chunk-JEP6EFK4.js";
32
+ } from "./chunk-BG2GDBAV.js";
33
33
  import "./chunk-VEQXQN22.js";
34
34
 
35
35
  // src/headless-agent.ts
package/dist/src/index.js CHANGED
@@ -27,7 +27,7 @@ import {
27
27
  evaluateCommandProtection,
28
28
  extractToolCommand,
29
29
  reportCommandProtectionBlock
30
- } from "./chunk-KZV23QDU.js";
30
+ } from "./chunk-GBZIVMEH.js";
31
31
  import {
32
32
  ACCOUNT_RATE_LIMITS_UPDATED_METHOD,
33
33
  AGENT_MESSAGE_DELTA_METHOD,
@@ -65,10 +65,10 @@ import {
65
65
  spawnMuseMsp,
66
66
  startMuseSession,
67
67
  uuidV7
68
- } from "./chunk-MAMNSZ53.js";
68
+ } from "./chunk-BMOEYO4Y.js";
69
69
  import {
70
70
  publishedPullRequestUrls
71
- } from "./chunk-Z5IQAQDK.js";
71
+ } from "./chunk-CPBB3JKK.js";
72
72
  import {
73
73
  ACCOUNT_RATE_LIMITS_READ_METHOD,
74
74
  AsyncLock,
@@ -143,7 +143,7 @@ import {
143
143
  timestampFromSeconds,
144
144
  upsertCredentialFileLines,
145
145
  writeSecureCredentialFile
146
- } from "./chunk-XBKJROPE.js";
146
+ } from "./chunk-O5FOUSFZ.js";
147
147
  import {
148
148
  ENGINE_ENV,
149
149
  monolithRequest,
@@ -153,15 +153,15 @@ import {
153
153
  resolveDiffBase,
154
154
  setAgentCredentialSnapshot,
155
155
  setLinearSessionId
156
- } from "./chunk-CDRCJUTU.js";
156
+ } from "./chunk-FJGC3SKY.js";
157
157
  import {
158
158
  getCodexModelProvider
159
- } from "./chunk-QCV7O27G.js";
159
+ } from "./chunk-MF2O6NS5.js";
160
160
  import {
161
161
  SUBPROCESS_MAX_BUFFER,
162
162
  execAsync,
163
163
  execFileAsync
164
- } from "./chunk-FDLME7OO.js";
164
+ } from "./chunk-PKLNM4OL.js";
165
165
  import {
166
166
  isRecord as isRecord2
167
167
  } from "./chunk-UZSNFLDQ.js";
@@ -415,7 +415,7 @@ import {
415
415
  workspaceTokenRequestSchema,
416
416
  workspaceTokenResponseSchema,
417
417
  wrapInTag
418
- } from "./chunk-JEP6EFK4.js";
418
+ } from "./chunk-BG2GDBAV.js";
419
419
  import {
420
420
  cloneMcpConfig,
421
421
  ensureCompatibilityImports,
@@ -11330,12 +11330,12 @@ var AuthFallbackCoordinator = class {
11330
11330
  record;
11331
11331
  context;
11332
11332
  /** `attempted` is the credential the failed turn ran on, which another chat may already have replaced. */
11333
- fallBack(reason, detail, attempted, resetsAt) {
11333
+ fallBack(reason, detail, attempted, resetsAt, afterLimit = false) {
11334
11334
  let lock = fallbackLocks.get(this.provider);
11335
11335
  if (!lock) fallbackLocks.set(this.provider, lock = new AsyncLock());
11336
- return lock.run(() => this.fallBackNow(reason, detail, attempted, resetsAt));
11336
+ return lock.run(() => this.fallBackNow(reason, detail, attempted, resetsAt, afterLimit));
11337
11337
  }
11338
- async fallBackNow(reason, detail, attempted, resetsAt) {
11338
+ async fallBackNow(reason, detail, attempted, resetsAt, afterLimit) {
11339
11339
  const tokenManager = SWAPPABLE_AGENTS[this.provider];
11340
11340
  const live = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS[this.provider];
11341
11341
  const exhausted = attempted ?? live;
@@ -11357,7 +11357,7 @@ var AuthFallbackCoordinator = class {
11357
11357
  for (const step of steps) {
11358
11358
  if (step.kind === "harness") {
11359
11359
  if (!forkable || !isAgentAvailable(step.provider)) continue;
11360
- if (reason === "auth_failed" || reason === "model_unavailable") continue;
11360
+ if ((reason === "auth_failed" || reason === "model_unavailable") && !afterLimit) continue;
11361
11361
  return { outcome: "fork", target: step };
11362
11362
  }
11363
11363
  if (alreadyReplaced && live) {
@@ -11737,9 +11737,9 @@ var CodingAgentManager = class _CodingAgentManager {
11737
11737
  this.getHistorySink()?.append(event);
11738
11738
  }, options.fallbackContext ?? (() => ({ excludeProviders: [], forkable: false }))) : null;
11739
11739
  }
11740
- async fallBackCredential(reason, detail, attempted, resetsAt) {
11740
+ async fallBackCredential(reason, detail, attempted, resetsAt, afterLimit = false) {
11741
11741
  if (!this.authFallback) return { outcome: "unavailable" };
11742
- const result = await this.authFallback.fallBack(reason, detail, attempted, resetsAt);
11742
+ const result = await this.authFallback.fallBack(reason, detail, attempted, resetsAt, afterLimit);
11743
11743
  if (result.outcome === "switched" && result.model) await this.onModelSwitched(result.model);
11744
11744
  return result;
11745
11745
  }
@@ -13479,6 +13479,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
13479
13479
  let loginRevoked = false;
13480
13480
  let namedLogin;
13481
13481
  let failedCredentials = [];
13482
+ let walkLimit;
13482
13483
  let attempt = 0;
13483
13484
  let authRetries = 0;
13484
13485
  let transientRetries = 0;
@@ -13538,8 +13539,10 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
13538
13539
  const detail = error instanceof ClaudeQuotaError || error instanceof ClaudeModelUnavailableError ? error.message : extractErrorText(error);
13539
13540
  const repeated = !!attemptedCredential && failedCredentials.some((failed) => isSameCredential(failed, attemptedCredential));
13540
13541
  if (attemptedCredential) failedCredentials.push(attemptedCredential);
13541
- const fallback = repeated ? { outcome: "unavailable" } : await this.fallBackCredential(reason, detail, attemptedCredential, error instanceof ClaudeQuotaError ? error.resetsAt : void 0);
13542
+ const limit = quotaKind ? { kind: quotaKind, credential: attemptedCredential } : walkLimit;
13543
+ const fallback = repeated ? { outcome: "unavailable" } : await this.fallBackCredential(reason, detail, attemptedCredential, error instanceof ClaudeQuotaError ? error.resetsAt : void 0, !!walkLimit);
13542
13544
  if (fallback.outcome === "switched") {
13545
+ walkLimit = limit;
13543
13546
  if (isAuthError) {
13544
13547
  this.turnLoginFailure ??= describeLoginFailure("claude", attemptedCredential ?? namedLogin, resolveClaudeAuthMethodForMessage(), loginRevoked);
13545
13548
  }
@@ -13551,8 +13554,11 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
13551
13554
  attempt++;
13552
13555
  continue;
13553
13556
  }
13554
- if (quotaKind) {
13555
- await this.emitQuotaExhaustedEvent(quotaKind, fallback, detail, attemptedCredential);
13557
+ if (limit && (quotaKind || fallback.outcome === "fork")) {
13558
+ if (isAuthError) {
13559
+ this.turnLoginFailure ??= describeLoginFailure("claude", attemptedCredential ?? namedLogin, resolveClaudeAuthMethodForMessage(), loginRevoked);
13560
+ }
13561
+ await this.emitQuotaExhaustedEvent(limit.kind, fallback, detail, limit.credential);
13556
13562
  return;
13557
13563
  }
13558
13564
  if (modelUnavailable) {
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  publishedPullRequestUrls
6
- } from "./chunk-Z5IQAQDK.js";
6
+ } from "./chunk-CPBB3JKK.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-UZSNFLDQ.js";
10
10
  import {
11
11
  shouldRefreshPullRequests
12
- } from "./chunk-JEP6EFK4.js";
12
+ } from "./chunk-BG2GDBAV.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/services/post-tool-pr-notifier.ts
@@ -11,7 +11,7 @@ import {
11
11
  spawnSubagentRequestSchema,
12
12
  subagentResponseSchema,
13
13
  waitSubagentRequestSchema
14
- } from "./chunk-JEP6EFK4.js";
14
+ } from "./chunk-BG2GDBAV.js";
15
15
  import "./chunk-VEQXQN22.js";
16
16
 
17
17
  // src/subagent-mcp.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.1308",
3
+ "version": "0.1.1311",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",