replicas-engine 0.1.1310 → 0.1.1312

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,9 +8,9 @@ import {
8
8
  listRunningCodexModels,
9
9
  restartCodexAspHost,
10
10
  restartCodexAspHostIfRunning
11
- } from "./chunk-77XPI2HV.js";
11
+ } from "./chunk-4FC4NBAH.js";
12
12
  import "./chunk-FJGC3SKY.js";
13
- import "./chunk-GEKCOYIC.js";
13
+ import "./chunk-D6BGWZZE.js";
14
14
  import "./chunk-PKLNM4OL.js";
15
15
  import "./chunk-UZSNFLDQ.js";
16
16
  import "./chunk-BG2GDBAV.js";
@@ -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-GEKCOYIC.js";
6
+ } from "./chunk-D6BGWZZE.js";
7
7
  import {
8
8
  ASTER_BASE_URL,
9
9
  ASTER_PROVIDER,
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  AppServerProcess,
16
16
  buildCodexAgentEnv
17
- } from "./chunk-GEKCOYIC.js";
17
+ } from "./chunk-D6BGWZZE.js";
18
18
  import {
19
19
  SUBPROCESS_MAX_BUFFER,
20
20
  execFileAsync
@@ -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-3CZEGHOZ.js");
309
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-5YBXALSS.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-3CZEGHOZ.js");
331
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-5YBXALSS.js");
332
332
  await restartCodexAspHostIfRunning2();
333
333
  }
334
334
  setAgentCredentialSnapshot("codex", data);
@@ -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.1310";
243
+ var ENGINE_PACKAGE_VERSION = "0.1.1312";
244
244
  var INITIALIZE_METHOD = "initialize";
245
245
  var INITIALIZED_NOTIFICATION = "initialized";
246
246
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -14,11 +14,11 @@ import {
14
14
  recoverCompletedTurn,
15
15
  spawnMuseMsp,
16
16
  startMuseSession
17
- } from "./chunk-UGRKIEEG.js";
17
+ } from "./chunk-3KI4Z7U5.js";
18
18
  import {
19
19
  AppServerProcess,
20
20
  buildCodexAgentEnv
21
- } from "./chunk-GEKCOYIC.js";
21
+ } from "./chunk-D6BGWZZE.js";
22
22
  import "./chunk-PKLNM4OL.js";
23
23
  import {
24
24
  AGENT,
package/dist/src/index.js CHANGED
@@ -65,7 +65,7 @@ import {
65
65
  spawnMuseMsp,
66
66
  startMuseSession,
67
67
  uuidV7
68
- } from "./chunk-UGRKIEEG.js";
68
+ } from "./chunk-3KI4Z7U5.js";
69
69
  import {
70
70
  publishedPullRequestUrls
71
71
  } from "./chunk-CPBB3JKK.js";
@@ -143,7 +143,7 @@ import {
143
143
  timestampFromSeconds,
144
144
  upsertCredentialFileLines,
145
145
  writeSecureCredentialFile
146
- } from "./chunk-77XPI2HV.js";
146
+ } from "./chunk-4FC4NBAH.js";
147
147
  import {
148
148
  ENGINE_ENV,
149
149
  monolithRequest,
@@ -156,7 +156,7 @@ import {
156
156
  } from "./chunk-FJGC3SKY.js";
157
157
  import {
158
158
  getCodexModelProvider
159
- } from "./chunk-GEKCOYIC.js";
159
+ } from "./chunk-D6BGWZZE.js";
160
160
  import {
161
161
  SUBPROCESS_MAX_BUFFER,
162
162
  execAsync,
@@ -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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.1310",
3
+ "version": "0.1.1312",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",