replicas-engine 0.1.1335 → 0.1.1337

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-BACQO2PI.js";
12
- import "./chunk-DOYKONMX.js";
13
- import "./chunk-3PQ6CG3I.js";
14
- import "./chunk-BDLWFK5Y.js";
11
+ } from "./chunk-EN3MIIS3.js";
12
+ import "./chunk-255L77KW.js";
13
+ import "./chunk-TRXOPGTJ.js";
14
+ import "./chunk-Y3EUVNQN.js";
15
15
  import "./chunk-UZSNFLDQ.js";
16
- import "./chunk-TP6SGS6C.js";
16
+ import "./chunk-KX3PARGH.js";
17
17
  import "./chunk-VEQXQN22.js";
18
18
  export {
19
19
  CODEX_ULTRAFAST_SERVICE_TIER,
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  SUBPROCESS_MAX_BUFFER,
6
6
  execFileAsync
7
- } from "./chunk-BDLWFK5Y.js";
7
+ } from "./chunk-Y3EUVNQN.js";
8
8
  import {
9
9
  isRecord as isRecord2
10
10
  } from "./chunk-UZSNFLDQ.js";
@@ -21,7 +21,7 @@ import {
21
21
  provisionedDeviceSchema,
22
22
  readReplicasRuntimeEnv,
23
23
  serializePosixEnvFile
24
- } from "./chunk-TP6SGS6C.js";
24
+ } from "./chunk-KX3PARGH.js";
25
25
 
26
26
  // src/runtime-env-loader.ts
27
27
  import { readFileSync } from "fs";
@@ -6,7 +6,7 @@ import {
6
6
  getOriginDefaultBranch,
7
7
  monolithRequest,
8
8
  runGitCommand
9
- } from "./chunk-DOYKONMX.js";
9
+ } from "./chunk-255L77KW.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-TP6SGS6C.js";
17
+ } from "./chunk-KX3PARGH.js";
18
18
 
19
19
  // src/services/command-protection-service.ts
20
20
  import { readFile, stat } from "fs/promises";
@@ -10,15 +10,15 @@ import {
10
10
  resolveDiffBase,
11
11
  runGitCommand,
12
12
  setAgentCredentialSnapshot
13
- } from "./chunk-DOYKONMX.js";
13
+ } from "./chunk-255L77KW.js";
14
14
  import {
15
15
  AppServerProcess,
16
16
  buildCodexAgentEnv
17
- } from "./chunk-3PQ6CG3I.js";
17
+ } from "./chunk-TRXOPGTJ.js";
18
18
  import {
19
19
  SUBPROCESS_MAX_BUFFER,
20
20
  execFileAsync
21
- } from "./chunk-BDLWFK5Y.js";
21
+ } from "./chunk-Y3EUVNQN.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-TP6SGS6C.js";
59
+ } from "./chunk-KX3PARGH.js";
60
60
 
61
61
  // src/managers/codex-token-manager.ts
62
62
  import { promises as fs } from "fs";
@@ -139,6 +139,7 @@ function refreshDelayMs(expiresAtMs, maxMs = 5 * 60 * 1e3) {
139
139
  const ttlMs = expiresAtMs - Date.now();
140
140
  return Number.isFinite(ttlMs) ? Math.max(1e3, Math.min(maxMs, Math.floor(ttlMs * 0.8))) : maxMs;
141
141
  }
142
+ var SHARED_REFRESH_MS = 1e4;
142
143
  var BaseRefreshManager = class {
143
144
  constructor(managerName, intervalMs = 15 * 60 * 1e3) {
144
145
  this.managerName = managerName;
@@ -158,6 +159,7 @@ var BaseRefreshManager = class {
158
159
  credentialUpdate = Promise.resolve();
159
160
  intervalHandle = null;
160
161
  pendingRefresh = null;
162
+ recentRefresh = null;
161
163
  health;
162
164
  async start(skipInitialRefresh = false) {
163
165
  if (this.intervalHandle) {
@@ -262,6 +264,17 @@ var BaseRefreshManager = class {
262
264
  }, delayMs);
263
265
  console.log(`[${this.managerName}] Token refresh scheduled in ${Math.round(delayMs / 1e3)} seconds`);
264
266
  }
267
+ refreshShared(rejected = false) {
268
+ if (!rejected && this.recentRefresh && Date.now() - this.recentRefresh.startedAt < SHARED_REFRESH_MS) {
269
+ return this.recentRefresh.result;
270
+ }
271
+ const recent = { startedAt: Date.now(), result: this.refreshOnce() };
272
+ this.recentRefresh = recent;
273
+ void recent.result.then((result) => {
274
+ if (!result.ok && this.recentRefresh === recent) this.recentRefresh = null;
275
+ });
276
+ return recent.result;
277
+ }
265
278
  async refreshOnce(force = false) {
266
279
  if (!force && this.getSkipReason()) {
267
280
  return createSuccessResult();
@@ -306,7 +319,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
306
319
  await this.applyCredentialUpdate(++this.credentialGeneration, async () => {
307
320
  await this.applyCredentialsResponse(data);
308
321
  setAgentCredentialSnapshot("codex", data);
309
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-DTHXBS7M.js");
322
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-KKYDT332.js");
310
323
  await restartCodexAspHostIfRunning2();
311
324
  });
312
325
  await this.start(true);
@@ -328,7 +341,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
328
341
  const accountChanged = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.codex?.credentialId !== data.credentialId;
329
342
  await this.applyCredentialsResponse(data);
330
343
  if (restartOnChange && (accountChanged || CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index]))) {
331
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-DTHXBS7M.js");
344
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-KKYDT332.js");
332
345
  await restartCodexAspHostIfRunning2();
333
346
  }
334
347
  setAgentCredentialSnapshot("codex", data);
@@ -5,7 +5,7 @@ import {
5
5
  extractCommandProtectionCommandText,
6
6
  isRecord,
7
7
  parseCodeHostPrUrl
8
- } from "./chunk-TP6SGS6C.js";
8
+ } from "./chunk-KX3PARGH.js";
9
9
 
10
10
  // src/services/published-pull-request-urls.ts
11
11
  function publishedPullRequestUrls(result) {
@@ -2156,7 +2156,7 @@ refresh_credential() {
2156
2156
  esac
2157
2157
  [ -n "\${REPLICAS_ENGINE_SECRET:-}" ] || return 1
2158
2158
  command -v curl >/dev/null 2>&1 || return 1
2159
- curl --silent --fail --connect-timeout 1 --max-time 5 -X POST -H "X-Replicas-Engine-Secret: $REPLICAS_ENGINE_SECRET" "http://127.0.0.1:\${REPLICAS_ENGINE_PORT:-${ENGINE_PORT}}$refresh_path" >/dev/null 2>&1
2159
+ curl --silent --fail --connect-timeout 1 --max-time 5 -X POST -H "X-Replicas-Engine-Secret: $REPLICAS_ENGINE_SECRET" "http://127.0.0.1:\${REPLICAS_ENGINE_PORT:-${ENGINE_PORT}}$refresh_path$2" >/dev/null 2>&1
2160
2160
  }
2161
2161
 
2162
2162
  if [ "$1" = "get" ]; then
@@ -2190,7 +2190,7 @@ if [ "$1" = "get" ]; then
2190
2190
  elif [ "$1" = "erase" ]; then
2191
2191
  username=$(printf '%s
2192
2192
  ' "$request" | sed -n 's/^username=//p' | head -n 1)
2193
- refresh_credential "$username" || true
2193
+ refresh_credential "$username" "?rejected" || true
2194
2194
  fi
2195
2195
  exit 0
2196
2196
  `;
@@ -9898,6 +9898,7 @@ function shouldRefreshPullRequests(toolName, toolInput) {
9898
9898
  import { z as z23 } from "zod";
9899
9899
  var linearSessionMetadataSchema = z23.object({
9900
9900
  via_mothership: z23.boolean().optional(),
9901
+ attached: z23.boolean().optional(),
9901
9902
  issue_id: z23.string(),
9902
9903
  issue_identifier: z23.string(),
9903
9904
  issue_title: z23.string(),
@@ -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-3PQ6CG3I.js";
6
+ } from "./chunk-TRXOPGTJ.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-TP6SGS6C.js";
18
+ } from "./chunk-KX3PARGH.js";
19
19
 
20
20
  // src/managers/codex-asp/notification-dispatch.ts
21
21
  var TURN_STARTED_METHOD = "turn/started";
@@ -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-BDLWFK5Y.js";
6
+ } from "./chunk-Y3EUVNQN.js";
7
7
  import {
8
8
  isVersionBelow
9
- } from "./chunk-TP6SGS6C.js";
9
+ } from "./chunk-KX3PARGH.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.1334";
243
+ var ENGINE_PACKAGE_VERSION = "0.1.1335";
244
244
  var INITIALIZE_METHOD = "initialize";
245
245
  var INITIALIZED_NOTIFICATION = "initialized";
246
246
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -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-TP6SGS6C.js";
6
+ } from "./chunk-KX3PARGH.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-RH7Z62FZ.js";
7
- import "./chunk-DOYKONMX.js";
8
- import "./chunk-BDLWFK5Y.js";
6
+ } from "./chunk-63D726GL.js";
7
+ import "./chunk-255L77KW.js";
8
+ import "./chunk-Y3EUVNQN.js";
9
9
  import {
10
10
  isRecord
11
11
  } from "./chunk-UZSNFLDQ.js";
12
- import "./chunk-TP6SGS6C.js";
12
+ import "./chunk-KX3PARGH.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-VZTMUL75.js";
17
+ } from "./chunk-MIQVNW5K.js";
18
18
  import {
19
19
  AppServerProcess,
20
20
  buildCodexAgentEnv
21
- } from "./chunk-3PQ6CG3I.js";
22
- import "./chunk-BDLWFK5Y.js";
21
+ } from "./chunk-TRXOPGTJ.js";
22
+ import "./chunk-Y3EUVNQN.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-TP6SGS6C.js";
32
+ } from "./chunk-KX3PARGH.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-RH7Z62FZ.js";
30
+ } from "./chunk-63D726GL.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-VZTMUL75.js";
68
+ } from "./chunk-MIQVNW5K.js";
69
69
  import {
70
70
  publishedPullRequestUrls
71
- } from "./chunk-JI5JLM5L.js";
71
+ } from "./chunk-GXH3ND2D.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-BACQO2PI.js";
146
+ } from "./chunk-EN3MIIS3.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-DOYKONMX.js";
156
+ } from "./chunk-255L77KW.js";
157
157
  import {
158
158
  getCodexModelProvider
159
- } from "./chunk-3PQ6CG3I.js";
159
+ } from "./chunk-TRXOPGTJ.js";
160
160
  import {
161
161
  SUBPROCESS_MAX_BUFFER,
162
162
  execAsync,
163
163
  execFileAsync
164
- } from "./chunk-BDLWFK5Y.js";
164
+ } from "./chunk-Y3EUVNQN.js";
165
165
  import {
166
166
  isRecord as isRecord2
167
167
  } from "./chunk-UZSNFLDQ.js";
@@ -417,7 +417,7 @@ import {
417
417
  workspaceTokenRequestSchema,
418
418
  workspaceTokenResponseSchema,
419
419
  wrapInTag
420
- } from "./chunk-TP6SGS6C.js";
420
+ } from "./chunk-KX3PARGH.js";
421
421
  import {
422
422
  cloneMcpConfig,
423
423
  ensureCompatibilityImports,
@@ -12298,9 +12298,9 @@ var LinearEventForwarder = class {
12298
12298
  // src/services/refresh-repo-state.ts
12299
12299
  async function refreshRepoStatuses(observedBranchesByRepo) {
12300
12300
  await Promise.all([
12301
- githubTokenManager.refreshOnce().catch(() => {
12301
+ githubTokenManager.refreshShared().catch(() => {
12302
12302
  }),
12303
- gitlabTokenManager.refreshOnce().catch(() => {
12303
+ gitlabTokenManager.refreshShared().catch(() => {
12304
12304
  })
12305
12305
  ]);
12306
12306
  return gitService.refreshRepos(observedBranchesByRepo);
@@ -64464,7 +64464,7 @@ app.get("/token-refresh/health", async (c) => {
64464
64464
  });
64465
64465
  });
64466
64466
  app.post(GITHUB_CREDENTIAL_REFRESH_PATH, async (c) => {
64467
- const result = await githubTokenManager.refreshOnce();
64467
+ const result = await githubTokenManager.refreshShared(c.req.query("rejected") !== void 0);
64468
64468
  if (!result.ok) {
64469
64469
  return c.json({
64470
64470
  error: "Failed to refresh GitHub credentials",
@@ -64474,7 +64474,7 @@ app.post(GITHUB_CREDENTIAL_REFRESH_PATH, async (c) => {
64474
64474
  return c.body(null, 204);
64475
64475
  });
64476
64476
  app.post(GITLAB_CREDENTIAL_REFRESH_PATH, async (c) => {
64477
- const result = await gitlabTokenManager.refreshOnce();
64477
+ const result = await gitlabTokenManager.refreshShared(c.req.query("rejected") !== void 0);
64478
64478
  if (!result.ok) {
64479
64479
  return c.json({
64480
64480
  error: "Failed to refresh GitLab credentials",
@@ -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-JI5JLM5L.js";
6
+ } from "./chunk-GXH3ND2D.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-UZSNFLDQ.js";
10
10
  import {
11
11
  shouldRefreshPullRequests
12
- } from "./chunk-TP6SGS6C.js";
12
+ } from "./chunk-KX3PARGH.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-TP6SGS6C.js";
14
+ } from "./chunk-KX3PARGH.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.1335",
3
+ "version": "0.1.1337",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",