replicas-engine 0.1.1340 → 0.1.1341
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.
- package/dist/src/{asp-host-JDGOQWLP.js → asp-host-55HGCROI.js} +5 -5
- package/dist/src/{chunk-MGENJGMN.js → chunk-2HSG7T6G.js} +3 -3
- package/dist/src/{chunk-Q7WE7OXC.js → chunk-6QYHV7TN.js} +2 -2
- package/dist/src/{chunk-XVRSJ6CE.js → chunk-KBCPQGM3.js} +1 -1
- package/dist/src/{chunk-SMDEV7Y6.js → chunk-LSOWOQWI.js} +1 -1
- package/dist/src/{chunk-FA346FXI.js → chunk-OEGLTJHI.js} +2 -2
- package/dist/src/{chunk-76QHBB5F.js → chunk-PQR6H3DK.js} +18 -0
- package/dist/src/{chunk-FG54X6T7.js → chunk-PR4ZRFCP.js} +2 -2
- package/dist/src/{chunk-2SOISK6E.js → chunk-SZLXZ6OW.js} +6 -6
- package/dist/src/command-protection-hook.js +4 -4
- package/dist/src/headless-agent.js +4 -4
- package/dist/src/index.js +85 -69
- package/dist/src/post-tool-pr-hook.js +2 -2
- package/dist/src/subagent-mcp.js +1 -1
- package/package.json +1 -1
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
listRunningCodexModels,
|
|
9
9
|
restartCodexAspHost,
|
|
10
10
|
restartCodexAspHostIfRunning
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-SZLXZ6OW.js";
|
|
12
|
+
import "./chunk-PR4ZRFCP.js";
|
|
13
|
+
import "./chunk-2HSG7T6G.js";
|
|
14
|
+
import "./chunk-KBCPQGM3.js";
|
|
15
15
|
import "./chunk-UZSNFLDQ.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-PQR6H3DK.js";
|
|
17
17
|
import "./chunk-VEQXQN22.js";
|
|
18
18
|
export {
|
|
19
19
|
CODEX_ULTRAFAST_SERVICE_TIER,
|
|
@@ -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-
|
|
6
|
+
} from "./chunk-KBCPQGM3.js";
|
|
7
7
|
import {
|
|
8
8
|
isVersionBelow
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PQR6H3DK.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.
|
|
243
|
+
var ENGINE_PACKAGE_VERSION = "0.1.1341";
|
|
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
|
AspClient
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2HSG7T6G.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-
|
|
18
|
+
} from "./chunk-PQR6H3DK.js";
|
|
19
19
|
|
|
20
20
|
// src/managers/codex-asp/notification-dispatch.ts
|
|
21
21
|
var TURN_STARTED_METHOD = "turn/started";
|
|
@@ -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-
|
|
6
|
+
} from "./chunk-PQR6H3DK.js";
|
|
7
7
|
|
|
8
8
|
// src/utils/exec.ts
|
|
9
9
|
import { exec, execFile } from "child_process";
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
getOriginDefaultBranch,
|
|
7
7
|
monolithRequest,
|
|
8
8
|
runGitCommand
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PR4ZRFCP.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-
|
|
17
|
+
} from "./chunk-PQR6H3DK.js";
|
|
18
18
|
|
|
19
19
|
// src/services/command-protection-service.ts
|
|
20
20
|
import { readFile, stat } from "fs/promises";
|
|
@@ -9357,6 +9357,22 @@ function parseReplicasConfigString(content, filename) {
|
|
|
9357
9357
|
return parseReplicasConfig(parsed, filename);
|
|
9358
9358
|
}
|
|
9359
9359
|
|
|
9360
|
+
// ../shared/src/start-hook-network.ts
|
|
9361
|
+
function proxyRouteCheckScript(proxyAddress) {
|
|
9362
|
+
return [
|
|
9363
|
+
`addr=${proxyAddress ? shellQuotePosix(proxyAddress) : "$(ip -4 route show default dev eth0 | awk '{print $3; exit}')"}`,
|
|
9364
|
+
'[ -n "$addr" ] || exit 0',
|
|
9365
|
+
'ip -4 route get "$addr" 2>/dev/null | head -1',
|
|
9366
|
+
"sudo -n iptables -S 2>/dev/null | grep -E '^-P (INPUT|OUTPUT) DROP|^-A (INPUT|OUTPUT) .*-j (DROP|REJECT)' || true"
|
|
9367
|
+
].join("\n");
|
|
9368
|
+
}
|
|
9369
|
+
function parseProxyRouteCheck(output) {
|
|
9370
|
+
const lines = output.split("\n").filter(Boolean);
|
|
9371
|
+
const route = lines.find((line) => !line.startsWith("-"));
|
|
9372
|
+
if (!route) return void 0;
|
|
9373
|
+
return { device: route.match(/\bdev (\S+)/)?.[1] ?? null, firewallRules: lines.filter((line) => line.startsWith("-")) };
|
|
9374
|
+
}
|
|
9375
|
+
|
|
9360
9376
|
// ../shared/src/auth-errors.ts
|
|
9361
9377
|
var AUTHENTICATION_ERROR_PATTERNS = [
|
|
9362
9378
|
/unauthorized/,
|
|
@@ -10978,6 +10994,8 @@ export {
|
|
|
10978
10994
|
resolveWarmHookConfig,
|
|
10979
10995
|
REPLICAS_CONFIG_FILENAMES,
|
|
10980
10996
|
parseReplicasConfigString,
|
|
10997
|
+
proxyRouteCheckScript,
|
|
10998
|
+
parseProxyRouteCheck,
|
|
10981
10999
|
headlessAgentRequestSchema,
|
|
10982
11000
|
headlessAgentUsagePath,
|
|
10983
11001
|
isClaudeAuthErrorText,
|
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
SUBPROCESS_MAX_BUFFER,
|
|
6
6
|
execFileAsync
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-KBCPQGM3.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-
|
|
24
|
+
} from "./chunk-PQR6H3DK.js";
|
|
25
25
|
|
|
26
26
|
// src/runtime-env-loader.ts
|
|
27
27
|
import { readFileSync } from "fs";
|
|
@@ -10,15 +10,15 @@ import {
|
|
|
10
10
|
resolveDiffBase,
|
|
11
11
|
runGitCommand,
|
|
12
12
|
setAgentCredentialSnapshot
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PR4ZRFCP.js";
|
|
14
14
|
import {
|
|
15
15
|
AppServerProcess,
|
|
16
16
|
buildCodexAgentEnv
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-2HSG7T6G.js";
|
|
18
18
|
import {
|
|
19
19
|
SUBPROCESS_MAX_BUFFER,
|
|
20
20
|
execFileAsync
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-KBCPQGM3.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-
|
|
59
|
+
} from "./chunk-PQR6H3DK.js";
|
|
60
60
|
|
|
61
61
|
// src/managers/codex-token-manager.ts
|
|
62
62
|
import { promises as fs } from "fs";
|
|
@@ -319,7 +319,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
|
|
|
319
319
|
await this.applyCredentialUpdate(++this.credentialGeneration, async () => {
|
|
320
320
|
await this.applyCredentialsResponse(data);
|
|
321
321
|
setAgentCredentialSnapshot("codex", data);
|
|
322
|
-
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-
|
|
322
|
+
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-55HGCROI.js");
|
|
323
323
|
await restartCodexAspHostIfRunning2();
|
|
324
324
|
});
|
|
325
325
|
await this.start(true);
|
|
@@ -341,7 +341,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
|
|
|
341
341
|
const accountChanged = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.codex?.credentialId !== data.credentialId;
|
|
342
342
|
await this.applyCredentialsResponse(data);
|
|
343
343
|
if (restartOnChange && (accountChanged || CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index]))) {
|
|
344
|
-
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-
|
|
344
|
+
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-55HGCROI.js");
|
|
345
345
|
await restartCodexAspHostIfRunning2();
|
|
346
346
|
}
|
|
347
347
|
setAgentCredentialSnapshot("codex", data);
|
|
@@ -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-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-OEGLTJHI.js";
|
|
7
|
+
import "./chunk-PR4ZRFCP.js";
|
|
8
|
+
import "./chunk-KBCPQGM3.js";
|
|
9
9
|
import {
|
|
10
10
|
isRecord
|
|
11
11
|
} from "./chunk-UZSNFLDQ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-PQR6H3DK.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-
|
|
17
|
+
} from "./chunk-6QYHV7TN.js";
|
|
18
18
|
import {
|
|
19
19
|
AppServerProcess,
|
|
20
20
|
buildCodexAgentEnv
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-2HSG7T6G.js";
|
|
22
|
+
import "./chunk-KBCPQGM3.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-
|
|
32
|
+
} from "./chunk-PQR6H3DK.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-
|
|
30
|
+
} from "./chunk-OEGLTJHI.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-
|
|
68
|
+
} from "./chunk-6QYHV7TN.js";
|
|
69
69
|
import {
|
|
70
70
|
publishedPullRequestUrls
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-LSOWOQWI.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-
|
|
146
|
+
} from "./chunk-SZLXZ6OW.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-
|
|
156
|
+
} from "./chunk-PR4ZRFCP.js";
|
|
157
157
|
import {
|
|
158
158
|
getCodexModelProvider
|
|
159
|
-
} from "./chunk-
|
|
159
|
+
} from "./chunk-2HSG7T6G.js";
|
|
160
160
|
import {
|
|
161
161
|
SUBPROCESS_MAX_BUFFER,
|
|
162
162
|
execAsync,
|
|
163
163
|
execFileAsync
|
|
164
|
-
} from "./chunk-
|
|
164
|
+
} from "./chunk-KBCPQGM3.js";
|
|
165
165
|
import {
|
|
166
166
|
isRecord as isRecord2
|
|
167
167
|
} from "./chunk-UZSNFLDQ.js";
|
|
@@ -383,8 +383,10 @@ import {
|
|
|
383
383
|
parseDisplayMessages,
|
|
384
384
|
parseFrontmatter,
|
|
385
385
|
parseMcpToolName,
|
|
386
|
+
parseProxyRouteCheck,
|
|
386
387
|
parseReplicasConfigString,
|
|
387
388
|
percentage,
|
|
389
|
+
proxyRouteCheckScript,
|
|
388
390
|
raceWithTimeout,
|
|
389
391
|
readChatHistoryAppended,
|
|
390
392
|
readChatHistoryPage,
|
|
@@ -417,7 +419,7 @@ import {
|
|
|
417
419
|
workspaceTokenRequestSchema,
|
|
418
420
|
workspaceTokenResponseSchema,
|
|
419
421
|
wrapInTag
|
|
420
|
-
} from "./chunk-
|
|
422
|
+
} from "./chunk-PQR6H3DK.js";
|
|
421
423
|
import {
|
|
422
424
|
cloneMcpConfig,
|
|
423
425
|
ensureCompatibilityImports,
|
|
@@ -8658,7 +8660,7 @@ var require_dist2 = __commonJS({
|
|
|
8658
8660
|
// src/index.ts
|
|
8659
8661
|
import { serve } from "@hono/node-server";
|
|
8660
8662
|
import { Hono as Hono2 } from "hono";
|
|
8661
|
-
import { randomUUID as
|
|
8663
|
+
import { randomUUID as randomUUID11 } from "crypto";
|
|
8662
8664
|
import { connect } from "net";
|
|
8663
8665
|
import { WebSocketServer } from "ws";
|
|
8664
8666
|
|
|
@@ -9489,7 +9491,7 @@ import { existsSync as existsSync3 } from "fs";
|
|
|
9489
9491
|
import { join as join5 } from "path";
|
|
9490
9492
|
import { homedir as homedir5 } from "os";
|
|
9491
9493
|
import { spawn } from "child_process";
|
|
9492
|
-
import {
|
|
9494
|
+
import { createHash as createHash2 } from "crypto";
|
|
9493
9495
|
import { setTimeout as delay } from "timers/promises";
|
|
9494
9496
|
|
|
9495
9497
|
// src/services/environment-details-service.ts
|
|
@@ -9877,6 +9879,18 @@ var StartHookLogsService = class {
|
|
|
9877
9879
|
};
|
|
9878
9880
|
var startHookLogsService = new StartHookLogsService();
|
|
9879
9881
|
|
|
9882
|
+
// src/services/network-check.ts
|
|
9883
|
+
import { networkInterfaces } from "os";
|
|
9884
|
+
var proxyAddress = null;
|
|
9885
|
+
var ipv4 = (address) => address?.replace(/^::ffff:/, "");
|
|
9886
|
+
function recordProxyConnection(socket) {
|
|
9887
|
+
const eth0 = networkInterfaces().eth0?.find((entry) => entry.family === "IPv4")?.address;
|
|
9888
|
+
if (eth0 && ipv4(socket.localAddress) === eth0) proxyAddress = ipv4(socket.remoteAddress) ?? proxyAddress;
|
|
9889
|
+
}
|
|
9890
|
+
function checkProxyRoute() {
|
|
9891
|
+
return execFileAsync("sh", ["-c", proxyRouteCheckScript(proxyAddress)], { timeout: 1e4 }).then(({ stdout }) => parseProxyRouteCheck(stdout), () => void 0);
|
|
9892
|
+
}
|
|
9893
|
+
|
|
9880
9894
|
// src/services/replicas-config-service.ts
|
|
9881
9895
|
var START_HOOK_REPORT_ATTEMPTS = 6;
|
|
9882
9896
|
var START_HOOK_REPORT_RETRY_MS = 2e3;
|
|
@@ -9919,7 +9933,7 @@ var ReplicasConfigService = class {
|
|
|
9919
9933
|
this.hooksFailed = false;
|
|
9920
9934
|
return;
|
|
9921
9935
|
}
|
|
9922
|
-
const runId =
|
|
9936
|
+
const runId = createUuidFromHex(createHash2("sha256").update(`${ENGINE_ENV.REPLICAS_WORKSPACE_ID}:${Date.now()}`).digest("hex"));
|
|
9923
9937
|
const report = async (payload, attempts = 1) => {
|
|
9924
9938
|
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
9925
9939
|
if (await monolithService.sendEvent({ type: "start_hooks", payload: { runId, ...payload } })) return;
|
|
@@ -9927,12 +9941,13 @@ var ReplicasConfigService = class {
|
|
|
9927
9941
|
}
|
|
9928
9942
|
};
|
|
9929
9943
|
this.hooksRunning = true;
|
|
9930
|
-
void beforeHooks.then(() => this.executeStartHooks({ onStart: () => void report({ status: "running" }) })).then((result) => report({
|
|
9944
|
+
void beforeHooks.then(() => this.executeStartHooks({ onStart: () => void report({ status: "running" }) })).then(async (result) => report({
|
|
9931
9945
|
status: result.exitCode === 0 && !result.timedOut ? "succeeded" : "failed",
|
|
9932
9946
|
exitCode: result.exitCode,
|
|
9933
9947
|
timedOut: result.timedOut,
|
|
9934
9948
|
output: result.output.slice(-ENVIRONMENT_HOOK_RUN_LOG_LIMIT),
|
|
9935
|
-
outputChars: result.output.length
|
|
9949
|
+
outputChars: result.output.length,
|
|
9950
|
+
network: await checkProxyRoute()
|
|
9936
9951
|
}, START_HOOK_REPORT_ATTEMPTS), (error) => {
|
|
9937
9952
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
9938
9953
|
this.hooksFailed = true;
|
|
@@ -10331,7 +10346,7 @@ var replicasConfigService = new ReplicasConfigService();
|
|
|
10331
10346
|
// src/services/event-service.ts
|
|
10332
10347
|
import { mkdir as mkdir5 } from "fs/promises";
|
|
10333
10348
|
import { join as join6 } from "path";
|
|
10334
|
-
import { randomUUID
|
|
10349
|
+
import { randomUUID } from "crypto";
|
|
10335
10350
|
var EVENTS_FILE = join6(ENGINE_DIR, "events.jsonl");
|
|
10336
10351
|
var MAX_REPLAY_EVENTS = 2e3;
|
|
10337
10352
|
var MAX_REPLAY_CHARS = 4 * 1024 * 1024;
|
|
@@ -10345,7 +10360,7 @@ function partialKey(event) {
|
|
|
10345
10360
|
var EventService = class {
|
|
10346
10361
|
subscribers = /* @__PURE__ */ new Set();
|
|
10347
10362
|
writer = new StreamWriter();
|
|
10348
|
-
epoch =
|
|
10363
|
+
epoch = randomUUID();
|
|
10349
10364
|
seq = 0;
|
|
10350
10365
|
replay = [];
|
|
10351
10366
|
replayChars = 0;
|
|
@@ -10361,7 +10376,7 @@ var EventService = class {
|
|
|
10361
10376
|
const after = lastEventId ? Number(lastEventId.slice(separator + 1)) : Number.NaN;
|
|
10362
10377
|
const resumed = separator > 0 && lastEventId?.slice(0, separator) === this.epoch && Number.isSafeInteger(after) && after >= this.replayFloor && after <= this.seq;
|
|
10363
10378
|
const opened = {
|
|
10364
|
-
id:
|
|
10379
|
+
id: randomUUID(),
|
|
10365
10380
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
10366
10381
|
type: "engine.stream.opened",
|
|
10367
10382
|
payload: { epoch: this.epoch, seq: this.seq, resumed }
|
|
@@ -10430,7 +10445,7 @@ var eventService = new EventService();
|
|
|
10430
10445
|
// src/services/preview-service.ts
|
|
10431
10446
|
import { mkdir as mkdir6, readFile as readFile5 } from "fs/promises";
|
|
10432
10447
|
import { existsSync as existsSync4 } from "fs";
|
|
10433
|
-
import { randomUUID as
|
|
10448
|
+
import { randomUUID as randomUUID2 } from "crypto";
|
|
10434
10449
|
import { homedir as homedir6 } from "os";
|
|
10435
10450
|
import { dirname, join as join7 } from "path";
|
|
10436
10451
|
var PREVIEW_PORTS_FILE = join7(homedir6(), ".replicas", "preview-ports.json");
|
|
@@ -10469,7 +10484,7 @@ var PreviewService = class {
|
|
|
10469
10484
|
data.previews.push(preview);
|
|
10470
10485
|
await writePreviewsFile(data);
|
|
10471
10486
|
eventService.publish({
|
|
10472
|
-
id:
|
|
10487
|
+
id: randomUUID2(),
|
|
10473
10488
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
10474
10489
|
type: "preview.changed",
|
|
10475
10490
|
payload: { previews: data.previews }
|
|
@@ -10489,7 +10504,7 @@ var PreviewService = class {
|
|
|
10489
10504
|
}
|
|
10490
10505
|
await writePreviewsFile(data);
|
|
10491
10506
|
eventService.publish({
|
|
10492
|
-
id:
|
|
10507
|
+
id: randomUUID2(),
|
|
10493
10508
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
10494
10509
|
type: "preview.changed",
|
|
10495
10510
|
payload: { previews: data.previews }
|
|
@@ -10624,7 +10639,7 @@ function devicesInstruction() {
|
|
|
10624
10639
|
// src/services/chat/chat-service.ts
|
|
10625
10640
|
import { appendFile as appendFile5, copyFile as copyFile2, mkdir as mkdir18, readFile as readFile17, rename as rename3, rm as rm5, stat as stat6 } from "fs/promises";
|
|
10626
10641
|
import { join as join29 } from "path";
|
|
10627
|
-
import { randomUUID as
|
|
10642
|
+
import { randomUUID as randomUUID9 } from "crypto";
|
|
10628
10643
|
|
|
10629
10644
|
// ../shared/src/workspace-chat.ts
|
|
10630
10645
|
var WORKSPACE_CHATS_QUERY_SCHEMA_VERSION = 17;
|
|
@@ -10826,7 +10841,7 @@ import {
|
|
|
10826
10841
|
getSessionMessages,
|
|
10827
10842
|
query
|
|
10828
10843
|
} from "@anthropic-ai/claude-agent-sdk";
|
|
10829
|
-
import { randomUUID as
|
|
10844
|
+
import { randomUUID as randomUUID3 } from "crypto";
|
|
10830
10845
|
import { dirname as dirname3, join as join11 } from "path";
|
|
10831
10846
|
import { mkdir as mkdir8, readdir as readdir3, readFile as readFile7 } from "fs/promises";
|
|
10832
10847
|
import { homedir as homedir7 } from "os";
|
|
@@ -13407,7 +13422,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
|
|
|
13407
13422
|
if (!handler) {
|
|
13408
13423
|
return { behavior: "allow" };
|
|
13409
13424
|
}
|
|
13410
|
-
const requestId =
|
|
13425
|
+
const requestId = randomUUID3();
|
|
13411
13426
|
const toolUseId = options.toolUseID;
|
|
13412
13427
|
const { options: requestOptions, questions: requestQuestions } = handler.getRequest(input);
|
|
13413
13428
|
const result = await new Promise((resolve7) => {
|
|
@@ -13820,7 +13835,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
|
|
|
13820
13835
|
}
|
|
13821
13836
|
return {
|
|
13822
13837
|
type: "user",
|
|
13823
|
-
uuid:
|
|
13838
|
+
uuid: randomUUID3(),
|
|
13824
13839
|
message: {
|
|
13825
13840
|
role: "user",
|
|
13826
13841
|
content
|
|
@@ -14204,7 +14219,7 @@ ${msg.result}` } : { ...msg, errors: [loginFailure, ...msg.errors] } : msg);
|
|
|
14204
14219
|
this.backgroundRecoveryAttempted = true;
|
|
14205
14220
|
this.activePromptStream?.push({
|
|
14206
14221
|
type: "user",
|
|
14207
|
-
uuid:
|
|
14222
|
+
uuid: randomUUID3(),
|
|
14208
14223
|
isSynthetic: true,
|
|
14209
14224
|
session_id: this.sessionId ?? "",
|
|
14210
14225
|
parent_tool_use_id: null,
|
|
@@ -14280,7 +14295,7 @@ ${msg.result}` } : { ...msg, errors: [loginFailure, ...msg.errors] } : msg);
|
|
|
14280
14295
|
type: "system",
|
|
14281
14296
|
subtype: "task_updated",
|
|
14282
14297
|
task_id: taskId,
|
|
14283
|
-
uuid:
|
|
14298
|
+
uuid: randomUUID3(),
|
|
14284
14299
|
session_id: this.sessionId ?? "",
|
|
14285
14300
|
patch: { status: error ? "failed" : "killed", ...error ? { error } : {} }
|
|
14286
14301
|
});
|
|
@@ -40648,7 +40663,7 @@ function createJsonSchemaValidator() {
|
|
|
40648
40663
|
|
|
40649
40664
|
// ../node_modules/.bun/pi-mcp-adapter@2.32.1+04b0d7b0bc944965/node_modules/pi-mcp-adapter/mcp-auth.ts
|
|
40650
40665
|
import { spawnSync } from "child_process";
|
|
40651
|
-
import { createHash as
|
|
40666
|
+
import { createHash as createHash3 } from "crypto";
|
|
40652
40667
|
import { createRequire } from "module";
|
|
40653
40668
|
import { readFileSync as readFileSync3, existsSync as existsSync10, rmSync as rmSync2 } from "fs";
|
|
40654
40669
|
import { dirname as dirname9, join as join17 } from "path";
|
|
@@ -40918,7 +40933,7 @@ function getAuthEntryAccount(serverName) {
|
|
|
40918
40933
|
if (typeof serverName !== "string") {
|
|
40919
40934
|
throw new Error(`Invalid MCP server name: ${JSON.stringify(serverName)}`);
|
|
40920
40935
|
}
|
|
40921
|
-
return `sha256-${
|
|
40936
|
+
return `sha256-${createHash3("sha256").update(serverName, "utf8").digest("hex")}`;
|
|
40922
40937
|
}
|
|
40923
40938
|
function getAuthEntryFilePath(serverName, options) {
|
|
40924
40939
|
return join17(getServerDir(serverName, options), "tokens.json");
|
|
@@ -41047,7 +41062,7 @@ function createChunkManifest(payload) {
|
|
|
41047
41062
|
return {
|
|
41048
41063
|
[AUTH_CHUNK_MANIFEST_KEY]: 1,
|
|
41049
41064
|
chunkCount: Math.ceil(payload.length / AUTH_SECRET_CHUNK_SIZE),
|
|
41050
|
-
chunkDigest:
|
|
41065
|
+
chunkDigest: createHash3("sha256").update(payload, "utf8").digest("hex").slice(0, 16)
|
|
41051
41066
|
};
|
|
41052
41067
|
}
|
|
41053
41068
|
function readChunkedAuthEntry(store, serverName, account, manifest) {
|
|
@@ -43522,7 +43537,7 @@ async function shutdownOAuth(runtime = legacyRuntime) {
|
|
|
43522
43537
|
}
|
|
43523
43538
|
|
|
43524
43539
|
// ../node_modules/.bun/pi-mcp-adapter@2.32.1+04b0d7b0bc944965/node_modules/pi-mcp-adapter/mcp-bearer-store.ts
|
|
43525
|
-
import { createHash as
|
|
43540
|
+
import { createHash as createHash4 } from "crypto";
|
|
43526
43541
|
import { createRequire as createRequire2 } from "module";
|
|
43527
43542
|
import { dirname as dirname10, join as join18 } from "path";
|
|
43528
43543
|
var require3 = createRequire2(import.meta.url);
|
|
@@ -43656,7 +43671,7 @@ function getBearerAccount(serverName) {
|
|
|
43656
43671
|
if (typeof serverName !== "string") {
|
|
43657
43672
|
throw new Error(`Invalid MCP server name: ${JSON.stringify(serverName)}`);
|
|
43658
43673
|
}
|
|
43659
|
-
return `sha256-${
|
|
43674
|
+
return `sha256-${createHash4("sha256").update(serverName, "utf8").digest("hex")}`;
|
|
43660
43675
|
}
|
|
43661
43676
|
function parseBearerPayload(serverName, payload) {
|
|
43662
43677
|
const parsed = parseStoredBearerJson(serverName, payload);
|
|
@@ -44442,7 +44457,7 @@ function traceTransportKind(definition, transport) {
|
|
|
44442
44457
|
|
|
44443
44458
|
// ../node_modules/.bun/pi-mcp-adapter@2.32.1+04b0d7b0bc944965/node_modules/pi-mcp-adapter/request-headers-command.ts
|
|
44444
44459
|
import { spawn as spawn3, spawnSync as spawnSync2 } from "child_process";
|
|
44445
|
-
import { randomUUID as
|
|
44460
|
+
import { randomUUID as randomUUID4 } from "crypto";
|
|
44446
44461
|
var DEFAULT_TIMEOUT_MS = 1e4;
|
|
44447
44462
|
var MAX_OUTPUT_BYTES = 64 * 1024;
|
|
44448
44463
|
var USE_PROCESS_GROUP = process.platform !== "win32";
|
|
@@ -44590,7 +44605,7 @@ async function invokeRequestHeadersCommand(config, envelope, signal) {
|
|
|
44590
44605
|
return new Promise((resolve7, reject) => {
|
|
44591
44606
|
let stdout = Buffer.alloc(0);
|
|
44592
44607
|
let settled = false;
|
|
44593
|
-
const cleanupToken =
|
|
44608
|
+
const cleanupToken = randomUUID4();
|
|
44594
44609
|
const child = spawn3(resolved.command, resolved.args, {
|
|
44595
44610
|
env: { ...resolved.env, [CLEANUP_TOKEN_ENV]: cleanupToken },
|
|
44596
44611
|
stdio: ["pipe", "pipe", "ignore"],
|
|
@@ -48655,14 +48670,14 @@ function formatSize(bytes) {
|
|
|
48655
48670
|
|
|
48656
48671
|
// ../node_modules/.bun/pi-mcp-adapter@2.32.1+04b0d7b0bc944965/node_modules/pi-mcp-adapter/ui-session.ts
|
|
48657
48672
|
import { execFile as execFile6 } from "child_process";
|
|
48658
|
-
import { randomUUID as
|
|
48673
|
+
import { randomUUID as randomUUID7 } from "crypto";
|
|
48659
48674
|
import net from "net";
|
|
48660
48675
|
|
|
48661
48676
|
// ../node_modules/.bun/pi-mcp-adapter@2.32.1+04b0d7b0bc944965/node_modules/pi-mcp-adapter/ui-server.ts
|
|
48662
48677
|
import http2 from "http";
|
|
48663
48678
|
import fs7 from "fs/promises";
|
|
48664
48679
|
import path6 from "path";
|
|
48665
|
-
import { randomUUID as
|
|
48680
|
+
import { randomUUID as randomUUID6 } from "crypto";
|
|
48666
48681
|
|
|
48667
48682
|
// ../node_modules/.bun/pi-mcp-adapter@2.32.1+04b0d7b0bc944965/node_modules/pi-mcp-adapter/host-html-template.ts
|
|
48668
48683
|
var DEFAULT_APP_BRIDGE_MODULE_URL = "/app-bridge.bundle.js";
|
|
@@ -49324,7 +49339,7 @@ function safeInlineJSON2(value) {
|
|
|
49324
49339
|
}
|
|
49325
49340
|
|
|
49326
49341
|
// ../node_modules/.bun/pi-mcp-adapter@2.32.1+04b0d7b0bc944965/node_modules/pi-mcp-adapter/tool-approval.ts
|
|
49327
|
-
import { createHash as
|
|
49342
|
+
import { createHash as createHash5, randomUUID as randomUUID5 } from "crypto";
|
|
49328
49343
|
function stableStringify(value) {
|
|
49329
49344
|
if (value === null || value === void 0 || typeof value !== "object") {
|
|
49330
49345
|
const serialized = JSON.stringify(value);
|
|
@@ -49390,7 +49405,7 @@ async function requestBrokerApproval(state, serverName, toolMeta, args, origin,
|
|
|
49390
49405
|
let acceptingClaim = true;
|
|
49391
49406
|
let handler;
|
|
49392
49407
|
const request = {
|
|
49393
|
-
requestId:
|
|
49408
|
+
requestId: randomUUID5(),
|
|
49394
49409
|
serverName,
|
|
49395
49410
|
originalToolName: toolMeta.originalName,
|
|
49396
49411
|
prefixedToolName: toolMeta.name,
|
|
@@ -49415,7 +49430,7 @@ async function requestBrokerApproval(state, serverName, toolMeta, args, origin,
|
|
|
49415
49430
|
}
|
|
49416
49431
|
}
|
|
49417
49432
|
async function ensureToolCallApproved(state, serverName, toolMeta, args, signal, origin = toolMeta.resourceUri ? "resource" : "proxy", approvalMetadata) {
|
|
49418
|
-
const argsHash =
|
|
49433
|
+
const argsHash = createHash5("sha256").update(stableStringify(args ?? {})).digest("hex");
|
|
49419
49434
|
const cacheKey = `${serverName}\0${toolMeta.originalName}\0${argsHash}`;
|
|
49420
49435
|
const approvedToolCalls = state.approvedToolCalls ??= /* @__PURE__ */ new Map();
|
|
49421
49436
|
if (approvedToolCalls.has(cacheKey)) {
|
|
@@ -49469,8 +49484,8 @@ var MOSHI_DISCOVERY_PORT_START = 8377;
|
|
|
49469
49484
|
var MOSHI_DISCOVERY_PORT_END = 8396;
|
|
49470
49485
|
var nextMoshiDiscoveryPort = MOSHI_DISCOVERY_PORT_START;
|
|
49471
49486
|
async function startUiServer(options) {
|
|
49472
|
-
const sessionToken = options.sessionToken ??
|
|
49473
|
-
const uiResourceToken =
|
|
49487
|
+
const sessionToken = options.sessionToken ?? randomUUID6();
|
|
49488
|
+
const uiResourceToken = randomUUID6();
|
|
49474
49489
|
const log = logger.child({
|
|
49475
49490
|
component: "UiServer",
|
|
49476
49491
|
server: options.serverName,
|
|
@@ -50429,8 +50444,8 @@ async function maybeStartUiSession(state, request) {
|
|
|
50429
50444
|
if (state.uiServer && state.uiServer.serverName === request.serverName && state.uiServer.toolName === request.toolName) {
|
|
50430
50445
|
const existingHandle = state.uiServer;
|
|
50431
50446
|
const streamMode2 = request.streamMode;
|
|
50432
|
-
const streamId2 = streamMode2 ?
|
|
50433
|
-
const streamToken2 = streamMode2 ?
|
|
50447
|
+
const streamId2 = streamMode2 ? randomUUID7() : void 0;
|
|
50448
|
+
const streamToken2 = streamMode2 ? randomUUID7() : void 0;
|
|
50434
50449
|
let active2 = true;
|
|
50435
50450
|
let nextStreamSequence2 = 0;
|
|
50436
50451
|
const cleanupStreamListener = () => {
|
|
@@ -50506,8 +50521,8 @@ async function maybeStartUiSession(state, request) {
|
|
|
50506
50521
|
activeGlimpseWindow = null;
|
|
50507
50522
|
}
|
|
50508
50523
|
const streamMode = request.streamMode;
|
|
50509
|
-
const streamId = streamMode ?
|
|
50510
|
-
const streamToken = streamMode ?
|
|
50524
|
+
const streamId = streamMode ? randomUUID7() : void 0;
|
|
50525
|
+
const streamToken = streamMode ? randomUUID7() : void 0;
|
|
50511
50526
|
const hostContext = streamMode && streamId ? {
|
|
50512
50527
|
[UI_STREAM_HOST_CONTEXT_KEY]: {
|
|
50513
50528
|
mode: streamMode,
|
|
@@ -50519,7 +50534,7 @@ async function maybeStartUiSession(state, request) {
|
|
|
50519
50534
|
let active = true;
|
|
50520
50535
|
let nextStreamSequence = 0;
|
|
50521
50536
|
let handle;
|
|
50522
|
-
const resourceListenerToken =
|
|
50537
|
+
const resourceListenerToken = randomUUID7();
|
|
50523
50538
|
const cleanupListeners = () => {
|
|
50524
50539
|
if (streamToken) {
|
|
50525
50540
|
state.manager.removeUiStreamListener(streamToken);
|
|
@@ -58445,7 +58460,7 @@ var PiManager = class extends CodingAgentManager {
|
|
|
58445
58460
|
};
|
|
58446
58461
|
|
|
58447
58462
|
// src/analytics/agent/activity/agent-chat-activity-tracker-service.ts
|
|
58448
|
-
import { randomUUID as
|
|
58463
|
+
import { randomUUID as randomUUID8 } from "crypto";
|
|
58449
58464
|
|
|
58450
58465
|
// src/analytics/analytics-upload.ts
|
|
58451
58466
|
async function uploadAnalytics(endpoint, body) {
|
|
@@ -58707,7 +58722,7 @@ var AgentChatTurnActivityTracker = class {
|
|
|
58707
58722
|
this.pendingMessages.delete(messageId);
|
|
58708
58723
|
const context = {
|
|
58709
58724
|
chatId,
|
|
58710
|
-
turnId:
|
|
58725
|
+
turnId: randomUUID8(),
|
|
58711
58726
|
provider,
|
|
58712
58727
|
model: attributes.model ?? getDefaultAgentModel(provider),
|
|
58713
58728
|
senderUserId: attributes.senderUserId,
|
|
@@ -58830,7 +58845,7 @@ var AgentChatActivityTrackerService = class {
|
|
|
58830
58845
|
};
|
|
58831
58846
|
|
|
58832
58847
|
// src/analytics/token-usage/agent-token-usage-tracker.ts
|
|
58833
|
-
import { createHash as
|
|
58848
|
+
import { createHash as createHash6 } from "crypto";
|
|
58834
58849
|
|
|
58835
58850
|
// src/analytics/token-usage/types.ts
|
|
58836
58851
|
function calculateCumulativeTokenUsageDelta(current, previous) {
|
|
@@ -59332,7 +59347,7 @@ var AgentTokenUsageTracker = class {
|
|
|
59332
59347
|
harness: event.harness,
|
|
59333
59348
|
records: batch.records.map((record3) => ({
|
|
59334
59349
|
...record3,
|
|
59335
|
-
eventId: record3.eventId ?? createUuidFromHex(
|
|
59350
|
+
eventId: record3.eventId ?? createUuidFromHex(createHash6("sha256").update(JSON.stringify([
|
|
59336
59351
|
event.harness,
|
|
59337
59352
|
event.type,
|
|
59338
59353
|
event.chatId,
|
|
@@ -59424,9 +59439,9 @@ async function resolveContainedFile(root, relativePath) {
|
|
|
59424
59439
|
}
|
|
59425
59440
|
|
|
59426
59441
|
// src/utils/file-revision.ts
|
|
59427
|
-
import { createHash as
|
|
59442
|
+
import { createHash as createHash7 } from "crypto";
|
|
59428
59443
|
function fileRevision(content) {
|
|
59429
|
-
return
|
|
59444
|
+
return createHash7("sha256").update(content).digest("hex");
|
|
59430
59445
|
}
|
|
59431
59446
|
|
|
59432
59447
|
// src/utils/revisioned-text-file.ts
|
|
@@ -59686,7 +59701,7 @@ async function reconcileCanvasItems(filenames) {
|
|
|
59686
59701
|
|
|
59687
59702
|
// src/services/upload-chat-transcripts.ts
|
|
59688
59703
|
import { createReadStream as createReadStream3 } from "fs";
|
|
59689
|
-
import { createHash as
|
|
59704
|
+
import { createHash as createHash8 } from "crypto";
|
|
59690
59705
|
import { readFile as readFile15, readdir as readdir7, stat as stat4 } from "fs/promises";
|
|
59691
59706
|
import { basename as basename3, join as join26 } from "path";
|
|
59692
59707
|
|
|
@@ -59849,7 +59864,7 @@ async function uploadChatTranscriptNow(chatId, filePath, chat, capture) {
|
|
|
59849
59864
|
return capture ? { ...last.artifact, metadata: { ...last.artifact.metadata, captureId: capture.captureId } } : null;
|
|
59850
59865
|
}
|
|
59851
59866
|
if (capture) {
|
|
59852
|
-
const hash =
|
|
59867
|
+
const hash = createHash8("sha256");
|
|
59853
59868
|
for await (const chunk of createReadStream3(filePath, { start: 0, end: size - 1 })) hash.update(chunk);
|
|
59854
59869
|
metadata.captureId = capture.captureId;
|
|
59855
59870
|
metadata.captureReason = capture.reason;
|
|
@@ -60044,7 +60059,7 @@ async function uploadEngineLog(input, timeoutMs) {
|
|
|
60044
60059
|
}
|
|
60045
60060
|
|
|
60046
60061
|
// src/services/chat/fork-handoff.ts
|
|
60047
|
-
import { createHash as
|
|
60062
|
+
import { createHash as createHash9 } from "crypto";
|
|
60048
60063
|
import { mkdir as mkdir17, open as open3, readFile as readFile16, writeFile as writeFile9 } from "fs/promises";
|
|
60049
60064
|
import { homedir as homedir9 } from "os";
|
|
60050
60065
|
import { join as join28 } from "path";
|
|
@@ -60084,7 +60099,7 @@ function tailBlocks(blocks, maxChars) {
|
|
|
60084
60099
|
return { excerpt, truncated: start > 0 };
|
|
60085
60100
|
}
|
|
60086
60101
|
function hashTranscriptBlocks(blocks) {
|
|
60087
|
-
return blocks.map((block) =>
|
|
60102
|
+
return blocks.map((block) => createHash9("sha1").update(block).digest("base64"));
|
|
60088
60103
|
}
|
|
60089
60104
|
function unseenBlocks(seenHashes, blocks) {
|
|
60090
60105
|
const hashes = hashTranscriptBlocks(blocks);
|
|
@@ -60399,7 +60414,7 @@ var ChatService = class {
|
|
|
60399
60414
|
}
|
|
60400
60415
|
const source = request.forkSourceChatId ? this.requireChat(request.forkSourceChatId) : void 0;
|
|
60401
60416
|
const persisted = {
|
|
60402
|
-
id: request.id ??
|
|
60417
|
+
id: request.id ?? randomUUID9(),
|
|
60403
60418
|
provider: request.provider,
|
|
60404
60419
|
title,
|
|
60405
60420
|
createdAt: now,
|
|
@@ -60559,7 +60574,7 @@ var ChatService = class {
|
|
|
60559
60574
|
const detail = errors?.length ? errors.join("\n") : extractFinalResponse(await chat.provider.getHistory(), chat.persisted.provider) ?? "[No response from subagent]";
|
|
60560
60575
|
await this.sendMessage(parentChatId, {
|
|
60561
60576
|
message: formatMothershipEvents([{
|
|
60562
|
-
id:
|
|
60577
|
+
id: randomUUID9(),
|
|
60563
60578
|
at: completedAt,
|
|
60564
60579
|
kind: "finished",
|
|
60565
60580
|
agentId: chat.persisted.id,
|
|
@@ -60636,7 +60651,7 @@ ${decisions}` };
|
|
|
60636
60651
|
thinkingLevel: request.thinkingLevel ?? (request.inheritThinkingLevel ? chat.persisted.thinkingLevel : void 0)
|
|
60637
60652
|
};
|
|
60638
60653
|
const { steer, ...queued } = request;
|
|
60639
|
-
const enqueued = steer ? { ...queued, messageId: queued.messageId ?? `msg_${
|
|
60654
|
+
const enqueued = steer ? { ...queued, messageId: queued.messageId ?? `msg_${randomUUID9()}` } : queued;
|
|
60640
60655
|
if (enqueued.messageId && steer && chat.provider.isProcessing() && (steer === "alone" || chat.provider.getQueue().every(({ steeredAt }) => steeredAt)) && canSteerMessage(chat.persisted.provider, enqueued)) {
|
|
60641
60656
|
chat.steeringOnArrival.add(enqueued.messageId);
|
|
60642
60657
|
}
|
|
@@ -61605,7 +61620,7 @@ ${note}`;
|
|
|
61605
61620
|
}
|
|
61606
61621
|
return {
|
|
61607
61622
|
persisted,
|
|
61608
|
-
historyVersion:
|
|
61623
|
+
historyVersion: randomUUID9(),
|
|
61609
61624
|
provider,
|
|
61610
61625
|
pendingMessageIds: [],
|
|
61611
61626
|
steeringOnArrival: /* @__PURE__ */ new Set(),
|
|
@@ -61975,7 +61990,7 @@ ${note}`;
|
|
|
61975
61990
|
}
|
|
61976
61991
|
async publish(input) {
|
|
61977
61992
|
const event = {
|
|
61978
|
-
id:
|
|
61993
|
+
id: randomUUID9(),
|
|
61979
61994
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
61980
61995
|
...input
|
|
61981
61996
|
};
|
|
@@ -62894,7 +62909,7 @@ ${combinedScript}` : combinedScript;
|
|
|
62894
62909
|
}
|
|
62895
62910
|
|
|
62896
62911
|
// src/services/terminal-service.ts
|
|
62897
|
-
import { randomUUID as
|
|
62912
|
+
import { randomUUID as randomUUID10 } from "crypto";
|
|
62898
62913
|
import { existsSync as existsSync17 } from "fs";
|
|
62899
62914
|
import { spawn as spawn6 } from "node-pty";
|
|
62900
62915
|
import { z as z3 } from "zod";
|
|
@@ -62922,7 +62937,7 @@ var TerminalService = class {
|
|
|
62922
62937
|
code: "limit"
|
|
62923
62938
|
});
|
|
62924
62939
|
}
|
|
62925
|
-
const id =
|
|
62940
|
+
const id = randomUUID10();
|
|
62926
62941
|
const shell = process.env.SHELL && existsSync17(process.env.SHELL) ? process.env.SHELL : "/bin/bash";
|
|
62927
62942
|
const pty = spawn6(shell, ["-l"], {
|
|
62928
62943
|
name: "xterm-256color",
|
|
@@ -64516,7 +64531,7 @@ function startStatusBroadcaster() {
|
|
|
64516
64531
|
if (serialized !== previousRepoStatus) {
|
|
64517
64532
|
previousRepoStatus = serialized;
|
|
64518
64533
|
eventService.publish({
|
|
64519
|
-
id:
|
|
64534
|
+
id: randomUUID11(),
|
|
64520
64535
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
64521
64536
|
type: "repo.status.changed",
|
|
64522
64537
|
payload: { repos }
|
|
@@ -64537,7 +64552,7 @@ function startStatusBroadcaster() {
|
|
|
64537
64552
|
if (engineStatusJson !== previousEngineStatus) {
|
|
64538
64553
|
previousEngineStatus = engineStatusJson;
|
|
64539
64554
|
eventService.publish({
|
|
64540
|
-
id:
|
|
64555
|
+
id: randomUUID11(),
|
|
64541
64556
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
64542
64557
|
type: "engine.status.changed",
|
|
64543
64558
|
payload: { status: engineStatus }
|
|
@@ -64556,7 +64571,7 @@ function startStatusBroadcaster() {
|
|
|
64556
64571
|
previousHookStatus = hookSnapshot;
|
|
64557
64572
|
if (!lastHooksRunning && hooksRunning) {
|
|
64558
64573
|
eventService.publish({
|
|
64559
|
-
id:
|
|
64574
|
+
id: randomUUID11(),
|
|
64560
64575
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
64561
64576
|
type: "hooks.started",
|
|
64562
64577
|
payload: { running: true, completed: false }
|
|
@@ -64565,7 +64580,7 @@ function startStatusBroadcaster() {
|
|
|
64565
64580
|
}
|
|
64566
64581
|
if (hooksRunning) {
|
|
64567
64582
|
eventService.publish({
|
|
64568
|
-
id:
|
|
64583
|
+
id: randomUUID11(),
|
|
64569
64584
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
64570
64585
|
type: "hooks.progress",
|
|
64571
64586
|
payload: { running: true, completed: false }
|
|
@@ -64574,7 +64589,7 @@ function startStatusBroadcaster() {
|
|
|
64574
64589
|
}
|
|
64575
64590
|
if (lastHooksRunning && !hooksRunning && hooksCompleted && !hooksFailed) {
|
|
64576
64591
|
eventService.publish({
|
|
64577
|
-
id:
|
|
64592
|
+
id: randomUUID11(),
|
|
64578
64593
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
64579
64594
|
type: "hooks.completed",
|
|
64580
64595
|
payload: { running: false, completed: true }
|
|
@@ -64583,7 +64598,7 @@ function startStatusBroadcaster() {
|
|
|
64583
64598
|
}
|
|
64584
64599
|
if (lastHooksRunning && !hooksRunning && hooksFailed) {
|
|
64585
64600
|
eventService.publish({
|
|
64586
|
-
id:
|
|
64601
|
+
id: randomUUID11(),
|
|
64587
64602
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
64588
64603
|
type: "hooks.failed",
|
|
64589
64604
|
payload: { running: false, completed: hooksCompleted }
|
|
@@ -64591,7 +64606,7 @@ function startStatusBroadcaster() {
|
|
|
64591
64606
|
});
|
|
64592
64607
|
}
|
|
64593
64608
|
eventService.publish({
|
|
64594
|
-
id:
|
|
64609
|
+
id: randomUUID11(),
|
|
64595
64610
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
64596
64611
|
type: "hooks.status",
|
|
64597
64612
|
payload: {
|
|
@@ -64691,7 +64706,7 @@ async function startBackgroundServices(signal) {
|
|
|
64691
64706
|
{ type: "engine.ready", payload: { version: "v1" } }
|
|
64692
64707
|
]) {
|
|
64693
64708
|
if (signal.aborted) return;
|
|
64694
|
-
await eventService.publish({ id:
|
|
64709
|
+
await eventService.publish({ id: randomUUID11(), ts: (/* @__PURE__ */ new Date()).toISOString(), ...event });
|
|
64695
64710
|
}
|
|
64696
64711
|
if (!signal.aborted) startStatusBroadcaster();
|
|
64697
64712
|
}
|
|
@@ -64726,6 +64741,7 @@ var server2 = serve(
|
|
|
64726
64741
|
}
|
|
64727
64742
|
}
|
|
64728
64743
|
);
|
|
64744
|
+
server2.on("connection", recordProxyConnection);
|
|
64729
64745
|
server2.on("upgrade", (req, socket, head) => {
|
|
64730
64746
|
const sessionId = TERMINAL_SOCKET_PATH.exec(new URL(req.url ?? "/", "http://engine").pathname)?.[1];
|
|
64731
64747
|
if (!sessionId || req.headers["x-replicas-engine-secret"] !== ENGINE_ENV.REPLICAS_ENGINE_SECRET || !lifecycle.active) {
|
|
@@ -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-
|
|
6
|
+
} from "./chunk-LSOWOQWI.js";
|
|
7
7
|
import {
|
|
8
8
|
isRecord
|
|
9
9
|
} from "./chunk-UZSNFLDQ.js";
|
|
10
10
|
import {
|
|
11
11
|
shouldRefreshPullRequests
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PQR6H3DK.js";
|
|
13
13
|
import "./chunk-VEQXQN22.js";
|
|
14
14
|
|
|
15
15
|
// src/services/post-tool-pr-notifier.ts
|
package/dist/src/subagent-mcp.js
CHANGED