replicas-engine 0.1.1274 → 0.1.1276

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-ZYAIMKKX.js";
12
- import "./chunk-WXOUR6BE.js";
13
- import "./chunk-WOMDGBDP.js";
14
- import "./chunk-6NXMMW2M.js";
11
+ } from "./chunk-CQXHQFAC.js";
12
+ import "./chunk-V5H4AKYX.js";
13
+ import "./chunk-LKQHRWNH.js";
14
+ import "./chunk-CFAC6DWV.js";
15
15
  import "./chunk-UZSNFLDQ.js";
16
- import "./chunk-RMM7QYDD.js";
16
+ import "./chunk-XAAAOOWB.js";
17
17
  import "./chunk-VEQXQN22.js";
18
18
  export {
19
19
  CODEX_ULTRAFAST_SERVICE_TIER,
@@ -5,7 +5,7 @@ import {
5
5
  extractCommandProtectionCommandText,
6
6
  isRecord,
7
7
  parseCodeHostPrUrl
8
- } from "./chunk-RMM7QYDD.js";
8
+ } from "./chunk-XAAAOOWB.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
  HOOK_EXEC_MAX_BUFFER_BYTES
6
- } from "./chunk-RMM7QYDD.js";
6
+ } from "./chunk-XAAAOOWB.js";
7
7
 
8
8
  // src/utils/exec.ts
9
9
  import { exec, execFile } from "child_process";
@@ -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-WOMDGBDP.js";
6
+ } from "./chunk-LKQHRWNH.js";
7
7
  import {
8
8
  ASTER_BASE_URL,
9
9
  ASTER_PROVIDER,
@@ -13,7 +13,7 @@ import {
13
13
  isRecord,
14
14
  readOllamaAuthEnv,
15
15
  readOpenAICompatibleAuthEnv
16
- } from "./chunk-RMM7QYDD.js";
16
+ } from "./chunk-XAAAOOWB.js";
17
17
 
18
18
  // src/managers/codex-asp/notification-dispatch.ts
19
19
  var TURN_STARTED_METHOD = "turn/started";
@@ -10,15 +10,15 @@ import {
10
10
  resolveDiffBase,
11
11
  runGitCommand,
12
12
  setAgentCredentialSnapshot
13
- } from "./chunk-WXOUR6BE.js";
13
+ } from "./chunk-V5H4AKYX.js";
14
14
  import {
15
15
  AppServerProcess,
16
16
  buildCodexAgentEnv
17
- } from "./chunk-WOMDGBDP.js";
17
+ } from "./chunk-LKQHRWNH.js";
18
18
  import {
19
19
  SUBPROCESS_MAX_BUFFER,
20
20
  execFileAsync
21
- } from "./chunk-6NXMMW2M.js";
21
+ } from "./chunk-CFAC6DWV.js";
22
22
  import {
23
23
  isRecord
24
24
  } from "./chunk-UZSNFLDQ.js";
@@ -55,7 +55,7 @@ import {
55
55
  resolveOpenAICompatibleModelsUrl,
56
56
  splitMothershipInstructions,
57
57
  withTimeout
58
- } from "./chunk-RMM7QYDD.js";
58
+ } from "./chunk-XAAAOOWB.js";
59
59
 
60
60
  // src/managers/codex-token-manager.ts
61
61
  import { promises as fs } from "fs";
@@ -291,7 +291,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
291
291
  await this.applyCredentialUpdate(++this.credentialGeneration, async () => {
292
292
  await this.applyCredentialsResponse(data);
293
293
  setAgentCredentialSnapshot("codex", data);
294
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-QOYX22WQ.js");
294
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-CGRUKNN4.js");
295
295
  await restartCodexAspHostIfRunning2();
296
296
  });
297
297
  await this.start(true);
@@ -313,7 +313,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
313
313
  const accountChanged = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.codex?.credentialId !== data.credentialId;
314
314
  await this.applyCredentialsResponse(data);
315
315
  if (restartOnChange && (accountChanged || CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index]))) {
316
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-QOYX22WQ.js");
316
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-CGRUKNN4.js");
317
317
  await restartCodexAspHostIfRunning2();
318
318
  }
319
319
  setAgentCredentialSnapshot("codex", data);
@@ -5,14 +5,14 @@ import {
5
5
  getOriginDefaultBranch,
6
6
  monolithRequest,
7
7
  runGitCommand
8
- } from "./chunk-WXOUR6BE.js";
8
+ } from "./chunk-V5H4AKYX.js";
9
9
  import {
10
10
  extractCommandProtectionCommandText,
11
11
  findCommandProtectionGitLookups,
12
12
  findGitCommitSignals,
13
13
  findPrMergeSignals,
14
14
  parseCommandProtectionRequest
15
- } from "./chunk-RMM7QYDD.js";
15
+ } from "./chunk-XAAAOOWB.js";
16
16
 
17
17
  // src/services/command-protection-service.ts
18
18
  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-6NXMMW2M.js";
6
+ } from "./chunk-CFAC6DWV.js";
7
7
  import {
8
8
  isVersionBelow
9
- } from "./chunk-RMM7QYDD.js";
9
+ } from "./chunk-XAAAOOWB.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.1274";
243
+ var ENGINE_PACKAGE_VERSION = "0.1.1276";
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-6NXMMW2M.js";
7
+ } from "./chunk-CFAC6DWV.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-RMM7QYDD.js";
25
+ } from "./chunk-XAAAOOWB.js";
26
26
 
27
27
  // src/runtime-env-loader.ts
28
28
  import { readFileSync } from "fs";
@@ -4991,6 +4991,8 @@ Don't make one when:
4991
4991
  - It is screenshots, or a before and after of them: upload them as images, which readers can open full screen and zoom. See "Before and after" in \`references/MEDIA.md\`.
4992
4992
  - The user wants a page, site, or component in their project: build that in the repo.
4993
4993
 
4994
+ A long report or write-up goes in the Canvas, and its key charts and comparisons go in a visual in your reply. Never screenshot a report, chart, or diagram you made to show it: a long page shrunk to an image can't be read, and it ignores the reader's theme. Screenshots of app UI you changed are still right.
4995
+
4994
4996
  ## Make it
4995
4997
 
4996
4998
  1. Write the page, for example \`/tmp/visuals/<name>.html\`, following the page rules below.
@@ -5984,6 +5986,27 @@ var REPLICAS_API_STEPS = {
5984
5986
 
5985
5987
  // ../shared/src/user-message-attachments.ts
5986
5988
  var ATTACHMENT_PLACEHOLDER_REGEX = /^\[\d+ (?:(?:images?|files?)(?: and \d+ files?)? attached|(?:image )?attachments?)\]$/;
5989
+ var ANNOTATIONS_NOTE_OPENING = '<replicas_annotations>\nThe user quoted these passages, some with a comment. Address each annotation, and when you do, refer to it as "Annotation N".';
5990
+ var ANNOTATIONS_NOTE_REGEX = /(?:^|\n\n)<replicas_annotations>\n([\s\S]*?)\n<\/replicas_annotations>$/;
5991
+ var ANNOTATION_HEADER_REGEX = /^Annotation \d+$/m;
5992
+ function findAnnotationsNote(content) {
5993
+ const complete = content.match(ANNOTATIONS_NOTE_REGEX);
5994
+ if (complete) return { index: complete.index ?? 0, body: complete[1] };
5995
+ for (const { index } of content.matchAll(/(?:^|\n\n)(?=<r)/g)) {
5996
+ const note = content.slice(index).trimStart();
5997
+ if (note.startsWith(ANNOTATIONS_NOTE_OPENING) || ANNOTATIONS_NOTE_OPENING.startsWith(note)) return { index, body: note.slice("<replicas_annotations>\n".length) };
5998
+ }
5999
+ return null;
6000
+ }
6001
+ function parseAnnotationsNote(body) {
6002
+ return body.split(ANNOTATION_HEADER_REGEX).slice(1).map((entry) => {
6003
+ const lines = entry.trim().split("\n");
6004
+ const quoteLength = lines.findIndex((line) => !line.startsWith(">"));
6005
+ const quote = lines.slice(0, quoteLength === -1 ? void 0 : quoteLength).map((line) => line.replace(/^>\s?/, ""));
6006
+ const comment = quoteLength === -1 ? "" : lines.slice(quoteLength).join("\n").trim();
6007
+ return { text: quote.join("\n"), ...comment ? { comment } : {} };
6008
+ });
6009
+ }
5987
6010
  var APPSHOT_NOTE_REGEX = /(?:^|\n\n)<replicas_appshot app="([^"\n]*)" window="([^"\n]*)" image="(\d+)">\n([^\n<]*)(?:\n\n([^<]*))?\n<\/replicas_appshot>$/;
5988
6011
  var TRUNCATED_APPSHOT_NOTE_REGEX = /(?:^|\n\n)<replicas_appshot app="([^"\n]*)(?:" window="([^"\n]*)(?:" image="(\d*))?)?[^<]*(?:<\/?[a-z_]*)?$/;
5989
6012
  var XML_UNESCAPES = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" };
@@ -6017,11 +6040,14 @@ function stripAttachmentNote(text3) {
6017
6040
  };
6018
6041
  const walkthroughs = takeTrailingNotes(WALKTHROUGH_NOTE_REGEX, TRUNCATED_WALKTHROUGH_NOTE_REGEX, (walkthrough) => ({ path: walkthrough[1], durationSeconds: Number(walkthrough[2] ?? 0), audio: walkthrough[3] === "true" }));
6019
6042
  const appshots = takeTrailingNotes(APPSHOT_NOTE_REGEX, TRUNCATED_APPSHOT_NOTE_REGEX, parseAppshot);
6043
+ const annotationsNote = findAnnotationsNote(content);
6044
+ if (annotationsNote) content = content.slice(0, annotationsNote.index).trim();
6020
6045
  return {
6021
6046
  content,
6022
6047
  files: match ? [...match[1].matchAll(/^- (.+)$/gm)].map(([, path]) => path) : [],
6023
6048
  walkthroughs,
6024
- appshots
6049
+ appshots,
6050
+ annotations: annotationsNote ? parseAnnotationsNote(annotationsNote.body) : []
6025
6051
  };
6026
6052
  }
6027
6053
 
@@ -8039,18 +8065,19 @@ function filterDisplayMessages(messages, provider2) {
8039
8065
  }
8040
8066
  result = result.flatMap((msg) => {
8041
8067
  if (msg.type !== "user") return [msg];
8042
- const { content, files, walkthroughs, appshots } = stripAttachmentNote(stripReplicasInstructionBlock(msg.content).trim());
8068
+ const { content, files, walkthroughs, appshots, annotations } = stripAttachmentNote(stripReplicasInstructionBlock(msg.content).trim());
8043
8069
  if (INTERRUPTED_MESSAGE_REGEX.test(content)) {
8044
8070
  return [{ id: msg.id, type: "interruption", timestamp: msg.timestamp }];
8045
8071
  }
8046
8072
  const cleaned = (msg.images?.length || files.length) && ATTACHMENT_PLACEHOLDER_REGEX.test(content) ? "" : content;
8047
- if (cleaned.length === 0 && !msg.images?.length && files.length === 0 && walkthroughs.length === 0 && appshots.length === 0) return [];
8048
- if (cleaned === msg.content && files.length === 0 && walkthroughs.length === 0 && appshots.length === 0) return [msg];
8073
+ if (cleaned.length === 0 && !msg.images?.length && files.length === 0 && walkthroughs.length === 0 && appshots.length === 0 && annotations.length === 0) return [];
8074
+ if (cleaned === msg.content && files.length === 0 && walkthroughs.length === 0 && appshots.length === 0 && annotations.length === 0) return [msg];
8049
8075
  return [{
8050
8076
  ...msg,
8051
8077
  content: cleaned,
8052
8078
  ...files.length > 0 ? { files } : {},
8053
8079
  ...walkthroughs.length > 0 ? { walkthroughs } : {},
8080
+ ...annotations.length > 0 ? { annotations } : {},
8054
8081
  ...appshots.length > 0 ? { appshots } : {}
8055
8082
  }];
8056
8083
  });
@@ -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-Z52ET7SB.js";
7
- import "./chunk-WXOUR6BE.js";
8
- import "./chunk-6NXMMW2M.js";
6
+ } from "./chunk-FILX4PF6.js";
7
+ import "./chunk-V5H4AKYX.js";
8
+ import "./chunk-CFAC6DWV.js";
9
9
  import {
10
10
  isRecord
11
11
  } from "./chunk-UZSNFLDQ.js";
12
- import "./chunk-RMM7QYDD.js";
12
+ import "./chunk-XAAAOOWB.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/command-protection-hook.ts
@@ -13,12 +13,12 @@ import {
13
13
  recoverCompletedTurn,
14
14
  spawnMuseMsp,
15
15
  startMuseSession
16
- } from "./chunk-P3AROZ62.js";
16
+ } from "./chunk-CQR2T35P.js";
17
17
  import {
18
18
  AppServerProcess,
19
19
  buildCodexAgentEnv
20
- } from "./chunk-WOMDGBDP.js";
21
- import "./chunk-6NXMMW2M.js";
20
+ } from "./chunk-LKQHRWNH.js";
21
+ import "./chunk-CFAC6DWV.js";
22
22
  import {
23
23
  AGENT,
24
24
  OPENCODE_GO_PROVIDER,
@@ -28,7 +28,7 @@ import {
28
28
  headlessAgentUsagePath,
29
29
  isRecord,
30
30
  withTimeout
31
- } from "./chunk-RMM7QYDD.js";
31
+ } from "./chunk-XAAAOOWB.js";
32
32
  import "./chunk-VEQXQN22.js";
33
33
 
34
34
  // 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-Z52ET7SB.js";
30
+ } from "./chunk-FILX4PF6.js";
31
31
  import {
32
32
  ACCOUNT_RATE_LIMITS_UPDATED_METHOD,
33
33
  AGENT_MESSAGE_DELTA_METHOD,
@@ -64,10 +64,10 @@ import {
64
64
  spawnMuseMsp,
65
65
  startMuseSession,
66
66
  uuidV7
67
- } from "./chunk-P3AROZ62.js";
67
+ } from "./chunk-CQR2T35P.js";
68
68
  import {
69
69
  publishedPullRequestUrls
70
- } from "./chunk-JRL36G6S.js";
70
+ } from "./chunk-3HGIRXMN.js";
71
71
  import {
72
72
  ACCOUNT_RATE_LIMITS_READ_METHOD,
73
73
  AsyncLock,
@@ -140,7 +140,7 @@ import {
140
140
  timestampFromSeconds,
141
141
  upsertCredentialFileLines,
142
142
  writeSecureCredentialFile
143
- } from "./chunk-ZYAIMKKX.js";
143
+ } from "./chunk-CQXHQFAC.js";
144
144
  import {
145
145
  ENGINE_ENV,
146
146
  monolithRequest,
@@ -150,15 +150,15 @@ import {
150
150
  resolveDiffBase,
151
151
  setAgentCredentialSnapshot,
152
152
  setLinearSessionId
153
- } from "./chunk-WXOUR6BE.js";
153
+ } from "./chunk-V5H4AKYX.js";
154
154
  import {
155
155
  getCodexModelProvider
156
- } from "./chunk-WOMDGBDP.js";
156
+ } from "./chunk-LKQHRWNH.js";
157
157
  import {
158
158
  SUBPROCESS_MAX_BUFFER,
159
159
  execAsync,
160
160
  execFileAsync
161
- } from "./chunk-6NXMMW2M.js";
161
+ } from "./chunk-CFAC6DWV.js";
162
162
  import {
163
163
  isRecord as isRecord2
164
164
  } from "./chunk-UZSNFLDQ.js";
@@ -402,7 +402,7 @@ import {
402
402
  workspaceTokenRequestSchema,
403
403
  workspaceTokenResponseSchema,
404
404
  wrapInTag
405
- } from "./chunk-RMM7QYDD.js";
405
+ } from "./chunk-XAAAOOWB.js";
406
406
  import {
407
407
  cloneMcpConfig,
408
408
  ensureCompatibilityImports,
@@ -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-JRL36G6S.js";
6
+ } from "./chunk-3HGIRXMN.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-UZSNFLDQ.js";
10
10
  import {
11
11
  shouldRefreshPullRequests
12
- } from "./chunk-RMM7QYDD.js";
12
+ } from "./chunk-XAAAOOWB.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-RMM7QYDD.js";
14
+ } from "./chunk-XAAAOOWB.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.1274",
3
+ "version": "0.1.1276",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",