replicas-engine 0.1.1305 → 0.1.1307

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-SYZXJP4X.js";
12
- import "./chunk-TKAWFIXX.js";
13
- import "./chunk-AS77RMSN.js";
14
- import "./chunk-IHC4JY3Q.js";
11
+ } from "./chunk-3G23Q57G.js";
12
+ import "./chunk-BKLCEPTJ.js";
13
+ import "./chunk-6HBASR47.js";
14
+ import "./chunk-BLVQL2EL.js";
15
15
  import "./chunk-UZSNFLDQ.js";
16
- import "./chunk-QBNBBWCE.js";
16
+ import "./chunk-KQBU62MY.js";
17
17
  import "./chunk-VEQXQN22.js";
18
18
  export {
19
19
  CODEX_ULTRAFAST_SERVICE_TIER,
@@ -6,7 +6,7 @@ import {
6
6
  getOriginDefaultBranch,
7
7
  monolithRequest,
8
8
  runGitCommand
9
- } from "./chunk-TKAWFIXX.js";
9
+ } from "./chunk-BKLCEPTJ.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-QBNBBWCE.js";
17
+ } from "./chunk-KQBU62MY.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-TKAWFIXX.js";
13
+ } from "./chunk-BKLCEPTJ.js";
14
14
  import {
15
15
  AppServerProcess,
16
16
  buildCodexAgentEnv
17
- } from "./chunk-AS77RMSN.js";
17
+ } from "./chunk-6HBASR47.js";
18
18
  import {
19
19
  SUBPROCESS_MAX_BUFFER,
20
20
  execFileAsync
21
- } from "./chunk-IHC4JY3Q.js";
21
+ } from "./chunk-BLVQL2EL.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-QBNBBWCE.js";
59
+ } from "./chunk-KQBU62MY.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-QEZNRY2W.js");
309
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-ES3ZRIPD.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-QEZNRY2W.js");
331
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-ES3ZRIPD.js");
332
332
  await restartCodexAspHostIfRunning2();
333
333
  }
334
334
  setAgentCredentialSnapshot("codex", data);
@@ -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-IHC4JY3Q.js";
6
+ } from "./chunk-BLVQL2EL.js";
7
7
  import {
8
8
  isVersionBelow
9
- } from "./chunk-QBNBBWCE.js";
9
+ } from "./chunk-KQBU62MY.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.1305";
243
+ var ENGINE_PACKAGE_VERSION = "0.1.1307";
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-IHC4JY3Q.js";
7
+ } from "./chunk-BLVQL2EL.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-QBNBBWCE.js";
25
+ } from "./chunk-KQBU62MY.js";
26
26
 
27
27
  // src/runtime-env-loader.ts
28
28
  import { readFileSync } from "fs";
@@ -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-QBNBBWCE.js";
6
+ } from "./chunk-KQBU62MY.js";
7
7
 
8
8
  // src/utils/exec.ts
9
9
  import { exec, execFile } from "child_process";
@@ -6045,9 +6045,17 @@ var dreamVerdictSchema = dreamVerdictChecksSchema.extend({ approve: z21.boolean(
6045
6045
  var learnedSkillFormatInstruction = (speaker) => `Write a SKILL.md whose frontmatter has a kebab-case \`name\` and a short \`description\` that starts with "Use when" and names the situations it applies to; the body records only what ${speaker} actually said, restated as a direct instruction, usually one to three lines. Every line of a learning is loaded into future sessions, so leave out anything an agent could infer on its own: no headings, explanations, rules, or examples unless ${speaker} stated those specifics themselves. For "from now on, use Conventional Commits", the body is just "Use Conventional Commits for every commit message and PR title."`;
6046
6046
 
6047
6047
  // ../shared/src/user-message-matching.ts
6048
+ var parsedTimestamps = /* @__PURE__ */ new Map();
6048
6049
  function parseTimestampMs(timestamp) {
6049
- const value = typeof timestamp === "number" ? timestamp : Date.parse(timestamp);
6050
- return Number.isFinite(value) ? value : 0;
6050
+ if (typeof timestamp === "number") return Number.isFinite(timestamp) ? timestamp : 0;
6051
+ let value = parsedTimestamps.get(timestamp);
6052
+ if (value === void 0) {
6053
+ const parsed = Date.parse(timestamp);
6054
+ value = Number.isFinite(parsed) ? parsed : 0;
6055
+ if (parsedTimestamps.size >= 5e4) parsedTimestamps.clear();
6056
+ parsedTimestamps.set(timestamp, value);
6057
+ }
6058
+ return value;
6051
6059
  }
6052
6060
  function areUserMessagesWithinMatchWindow(a, b) {
6053
6061
  return a.content === b.content && Math.abs(parseTimestampMs(a.timestamp) - parseTimestampMs(b.timestamp)) <= USER_MESSAGE_MATCH_GRACE_PERIOD_MS;
@@ -8232,6 +8240,7 @@ function isAgentBackendEvent(value) {
8232
8240
  const candidate = value;
8233
8241
  return typeof candidate.timestamp === "string" && typeof candidate.type === "string" && typeof candidate.payload === "object" && candidate.payload !== null;
8234
8242
  }
8243
+ var strippedUserContents = /* @__PURE__ */ new Map();
8235
8244
  function filterDisplayMessages(messages, provider2) {
8236
8245
  let result = messages;
8237
8246
  if (provider2 === "codex") {
@@ -8242,7 +8251,13 @@ function filterDisplayMessages(messages, provider2) {
8242
8251
  }
8243
8252
  result = result.flatMap((msg) => {
8244
8253
  if (msg.type !== "user") return [msg];
8245
- const { content, files, walkthroughs, appshots, annotations } = stripAttachmentNote(stripReplicasInstructionBlock(msg.content).trim());
8254
+ let stripped = strippedUserContents.get(msg.content);
8255
+ if (!stripped) {
8256
+ stripped = stripAttachmentNote(stripReplicasInstructionBlock(msg.content).trim());
8257
+ if (strippedUserContents.size >= 5e3) strippedUserContents.clear();
8258
+ strippedUserContents.set(msg.content, stripped);
8259
+ }
8260
+ const { content, files, walkthroughs, appshots, annotations } = stripped;
8246
8261
  if (INTERRUPTED_MESSAGE_REGEX.test(content)) {
8247
8262
  return [{ id: msg.id, type: "interruption", timestamp: msg.timestamp }];
8248
8263
  }
@@ -5,7 +5,7 @@ import {
5
5
  extractCommandProtectionCommandText,
6
6
  isRecord,
7
7
  parseCodeHostPrUrl
8
- } from "./chunk-QBNBBWCE.js";
8
+ } from "./chunk-KQBU62MY.js";
9
9
 
10
10
  // src/services/published-pull-request-urls.ts
11
11
  function publishedPullRequestUrls(result) {
@@ -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-AS77RMSN.js";
6
+ } from "./chunk-6HBASR47.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-QBNBBWCE.js";
18
+ } from "./chunk-KQBU62MY.js";
19
19
 
20
20
  // src/managers/codex-asp/notification-dispatch.ts
21
21
  var TURN_STARTED_METHOD = "turn/started";
@@ -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-VZXRPXJI.js";
7
- import "./chunk-TKAWFIXX.js";
8
- import "./chunk-IHC4JY3Q.js";
6
+ } from "./chunk-2MMS6MVA.js";
7
+ import "./chunk-BKLCEPTJ.js";
8
+ import "./chunk-BLVQL2EL.js";
9
9
  import {
10
10
  isRecord
11
11
  } from "./chunk-UZSNFLDQ.js";
12
- import "./chunk-QBNBBWCE.js";
12
+ import "./chunk-KQBU62MY.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-NG63G5VA.js";
17
+ } from "./chunk-WPAD4FUY.js";
18
18
  import {
19
19
  AppServerProcess,
20
20
  buildCodexAgentEnv
21
- } from "./chunk-AS77RMSN.js";
22
- import "./chunk-IHC4JY3Q.js";
21
+ } from "./chunk-6HBASR47.js";
22
+ import "./chunk-BLVQL2EL.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-QBNBBWCE.js";
32
+ } from "./chunk-KQBU62MY.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-VZXRPXJI.js";
30
+ } from "./chunk-2MMS6MVA.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-NG63G5VA.js";
68
+ } from "./chunk-WPAD4FUY.js";
69
69
  import {
70
70
  publishedPullRequestUrls
71
- } from "./chunk-DDUTPOJ3.js";
71
+ } from "./chunk-TCQYJSJG.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-SYZXJP4X.js";
146
+ } from "./chunk-3G23Q57G.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-TKAWFIXX.js";
156
+ } from "./chunk-BKLCEPTJ.js";
157
157
  import {
158
158
  getCodexModelProvider
159
- } from "./chunk-AS77RMSN.js";
159
+ } from "./chunk-6HBASR47.js";
160
160
  import {
161
161
  SUBPROCESS_MAX_BUFFER,
162
162
  execAsync,
163
163
  execFileAsync
164
- } from "./chunk-IHC4JY3Q.js";
164
+ } from "./chunk-BLVQL2EL.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-QBNBBWCE.js";
418
+ } from "./chunk-KQBU62MY.js";
419
419
  import {
420
420
  cloneMcpConfig,
421
421
  ensureCompatibilityImports,
@@ -10639,11 +10639,9 @@ function getComparableUserMessage(event) {
10639
10639
  }
10640
10640
  function areDuplicateUserMessages(a, b) {
10641
10641
  if (areSameUserMessageEvents(a, b)) return true;
10642
- const aId = getUserMessageId(a);
10643
- const bId = getUserMessageId(b);
10642
+ const { userMessageId: aId, userMessage: aMessage } = workspaceChatEventSignals(a);
10643
+ const { userMessageId: bId, userMessage: bMessage } = workspaceChatEventSignals(b);
10644
10644
  if (aId !== null && bId !== null && aId !== bId) return false;
10645
- const aMessage = getComparableUserMessage(a);
10646
- const bMessage = getComparableUserMessage(b);
10647
10645
  if (!aMessage || aMessage !== bMessage) return false;
10648
10646
  const aAccepted = isAcceptedUserMessage(a);
10649
10647
  const bAccepted = isAcceptedUserMessage(b);
@@ -10652,7 +10650,7 @@ function areDuplicateUserMessages(a, b) {
10652
10650
  { content: bMessage, timestamp: b.timestamp }
10653
10651
  ) : false;
10654
10652
  }
10655
- var eventJsonCache = /* @__PURE__ */ new WeakMap();
10653
+ var eventSignalsCache = /* @__PURE__ */ new WeakMap();
10656
10654
  function claudeToolResultId(event) {
10657
10655
  if (event.type !== "claude-user") return null;
10658
10656
  const { message } = event.payload;
@@ -10661,17 +10659,18 @@ function claudeToolResultId(event) {
10661
10659
  return isRecord(result) && typeof result.tool_use_id === "string" ? `tool_result:${result.tool_use_id}` : null;
10662
10660
  }
10663
10661
  function workspaceChatEventSignals(event) {
10664
- let json = eventJsonCache.get(event);
10665
- if (json === void 0) {
10666
- json = JSON.stringify(event);
10667
- eventJsonCache.set(event, json);
10662
+ let signals = eventSignalsCache.get(event);
10663
+ if (signals === void 0) {
10664
+ signals = {
10665
+ streamId: getEventStreamId(event) ?? claudeToolResultId(event),
10666
+ json: JSON.stringify(event),
10667
+ userMessage: getComparableUserMessage(event),
10668
+ userMessageId: event.type === QUEUED_MESSAGE_REMOVED_EVENT_TYPE ? null : getUserMessageId(event),
10669
+ timestampMs: getEventTimestampMs(event)
10670
+ };
10671
+ eventSignalsCache.set(event, signals);
10668
10672
  }
10669
- return {
10670
- streamId: getEventStreamId(event) ?? claudeToolResultId(event),
10671
- json,
10672
- userMessage: getComparableUserMessage(event),
10673
- userMessageId: event.type === QUEUED_MESSAGE_REMOVED_EVENT_TYPE ? null : getUserMessageId(event)
10674
- };
10673
+ return signals;
10675
10674
  }
10676
10675
  var emptyIndex = () => ({
10677
10676
  byStreamId: /* @__PURE__ */ new Map(),
@@ -10799,12 +10798,13 @@ function mergeWorkspaceChatHistoryEvents(primary, supplemental, removedMessageId
10799
10798
  );
10800
10799
  }
10801
10800
  function insertChronologically(existing, additions) {
10802
- const sorted = [...additions].sort((a, b) => getEventTimestampMs(a) - getEventTimestampMs(b));
10801
+ const timestampMs2 = (event) => workspaceChatEventSignals(event).timestampMs;
10802
+ const sorted = [...additions].sort((a, b) => timestampMs2(a) - timestampMs2(b));
10803
10803
  const result = [];
10804
10804
  let next = 0;
10805
10805
  for (const event of existing) {
10806
- const ms = getEventTimestampMs(event);
10807
- while (next < sorted.length && getEventTimestampMs(sorted[next]) < ms) result.push(sorted[next++]);
10806
+ const ms = timestampMs2(event);
10807
+ while (next < sorted.length && timestampMs2(sorted[next]) < ms) result.push(sorted[next++]);
10808
10808
  result.push(event);
10809
10809
  }
10810
10810
  result.push(...sorted.slice(next));
@@ -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-DDUTPOJ3.js";
6
+ } from "./chunk-TCQYJSJG.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-UZSNFLDQ.js";
10
10
  import {
11
11
  shouldRefreshPullRequests
12
- } from "./chunk-QBNBBWCE.js";
12
+ } from "./chunk-KQBU62MY.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-QBNBBWCE.js";
14
+ } from "./chunk-KQBU62MY.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.1305",
3
+ "version": "0.1.1307",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",