lody 0.107.2 → 0.108.0-nightly.0

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/README.md CHANGED
@@ -22,6 +22,23 @@ retain the production-only check. `tsconfig.tests.json` remains the explicit
22
22
  test-inclusive check; existing test typing errors are not part of the production
23
23
  check.
24
24
 
25
+ ## Roost cache recovery tests
26
+
27
+ Regular `pnpm test` runs the Native recovery contract with 1 and 120 retained turns
28
+ (three 40-turn pages). It checks the complete cached history against the owner and
29
+ rejects requests for unchanged pages during recovery.
30
+
31
+ Run the same assertions with 2,000 turns outside regular CI:
32
+
33
+ ```sh
34
+ corepack pnpm --dir apps/cli test:roost-recovery:perf
35
+ ```
36
+
37
+ Run this command from the repository root. The scale test allows 120 seconds for
38
+ the Native SQLite import; regular setup and recovery each keep a 30-second limit.
39
+ Vitest reports recovery's test-body duration separately from the file duration,
40
+ which also includes setup. This is a scale regression test, not a network benchmark.
41
+
25
42
  ## Daemon upgrades and autostart
26
43
 
27
44
  Remote upgrades install globally using the daemon's npm environment, resolve the
@@ -1,11 +1,11 @@
1
- import { s as startProcessLegacy, b as runPromise, c as raceAll, p as promise, d as sleep, t as terminateChildTreeLegacy, e as provide, f as runCommand, g as processLayer } from "./chunks/process-CoLmXmOP.js";
1
+ import { s as startProcessLegacy, b as runPromise, c as raceAll, p as promise, d as sleep, t as terminateChildTreeLegacy, e as provide, f as runCommand, g as processLayer } from "./chunks/process-B57UgtjU.js";
2
2
  import { createServer } from "node:net";
3
3
  import { setTimeout as setTimeout$1 } from "node:timers/promises";
4
4
  import { mkdtemp, writeFile, rm } from "node:fs/promises";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
7
- import { I as IosSimulatorDeviceControlSchema } from "./chunks/ios-simulator-B6mhaluY.js";
8
- import { s as string, o as object, u as union, _ as _enum, n as number, l as literal } from "./chunks/schemas-Bue2bhN8.js";
7
+ import { I as IosSimulatorDeviceControlSchema } from "./chunks/ios-simulator-CIEJaknT.js";
8
+ import { s as string, o as object, u as union, _ as _enum, n as number, l as literal } from "./chunks/schemas-CsULZlsv.js";
9
9
  import "node:child_process";
10
10
  import "node:fs";
11
11
  import "node:url";
@@ -1,4 +1,4 @@
1
- import { h as tracerLogger$1, i as effect, w as withFiber, j as fnUntraced, k as isEffect, C as CurrentLoggers$1, l as loggerMake, m as getAugmentedNamespace, n as commonjsGlobal, o as getDefaultExportFromCjs, q as merge, u as CurrentLogAnnotations, v as succeed, M as MinimumLogLevel, g as processLayer, x as nodeProcessLive, s as startProcessLegacy } from "./process-CoLmXmOP.js";
1
+ import { h as tracerLogger$1, i as effect, w as withFiber, j as fnUntraced, k as isEffect, C as CurrentLoggers$1, l as loggerMake, m as getAugmentedNamespace, n as commonjsGlobal, o as getDefaultExportFromCjs, q as merge, u as succeed, v as CurrentLogAnnotations, M as MinimumLogLevel, g as processLayer, x as nodeProcessLive, s as startProcessLegacy } from "./process-B57UgtjU.js";
2
2
  import { EventEmitter } from "node:events";
3
3
  import require$$0$1 from "util";
4
4
  import os__default$1 from "os";
@@ -19,7 +19,7 @@ import path__default, { join } from "node:path";
19
19
  import os__default, { tmpdir } from "node:os";
20
20
  import fs__default$2, { mkdtemp, writeFile, rm } from "node:fs/promises";
21
21
  import Zlib__default from "node:zlib";
22
- import { o as object, _ as _enum, s as string } from "./schemas-Bue2bhN8.js";
22
+ import { o as object, _ as _enum, s as string } from "./schemas-CsULZlsv.js";
23
23
  const PLATFORM_ENV_VAR = "LODY_PLATFORM";
24
24
  const LOCAL_WORKSPACE_ID_PREFIX = "lw_";
25
25
  const LOCAL_USER_ID_PREFIX = "local:";
@@ -17044,4 +17044,4 @@ export {
17044
17044
  readLatestLogTail as y,
17045
17045
  createFileLogger as z
17046
17046
  };
17047
- //# sourceMappingURL=cloudflared-native-2AOPFkF0.js.map
17047
+ //# sourceMappingURL=cloudflared-native-DBP9VL7n.js.map
@@ -1,10 +1,10 @@
1
- import { $ as getDaemonWorkspace, a0 as getSessionCommandEnvironment, a1 as getSessionRoomId, a2 as isLoroRepoDocDeleted, a3 as runWithMcpSessionContext, a4 as SessionToolResultSchema, a5 as buildSessionToolServer } from "../index.js";
1
+ import { a0 as getDaemonWorkspace, a1 as getSessionCommandEnvironment, a2 as getSessionRoomId, a3 as isLoroRepoDocDeleted, a4 as runWithMcpSessionContext, a5 as SessionToolResultSchema, a6 as buildSessionToolServer } from "../index.js";
2
2
  import "path";
3
3
  import "node:fs";
4
4
  import "node:readline";
5
5
  import "node:async_hooks";
6
- import "./cloudflared-native-2AOPFkF0.js";
7
- import "./process-CoLmXmOP.js";
6
+ import "./cloudflared-native-DBP9VL7n.js";
7
+ import "./process-B57UgtjU.js";
8
8
  import "node:child_process";
9
9
  import "node:path";
10
10
  import "node:url";
@@ -27,12 +27,12 @@ import "node:util";
27
27
  import "node:os";
28
28
  import "node:fs/promises";
29
29
  import "node:zlib";
30
- import "./schemas-Bue2bhN8.js";
30
+ import "./schemas-CsULZlsv.js";
31
31
  import "node:process";
32
32
  import "./loro_wasm_bg-MVC5eAwd.js";
33
33
  import "./plan-mode-D0D5cnMs.js";
34
- import "./profile-WAvt7jC4.js";
35
- import "./ios-simulator-B6mhaluY.js";
34
+ import "./profile-CL7H2MUB.js";
35
+ import "./ios-simulator-CIEJaknT.js";
36
36
  import "./subagent-events-MVcQFxYe.js";
37
37
  import "node:diagnostics_channel";
38
38
  import "node:assert";
@@ -55,8 +55,8 @@ import "node:crypto";
55
55
  import "fs/promises";
56
56
  import "./workspace-watch-path-policy-BRzhvEkG.js";
57
57
  import "node:string_decoder";
58
- import "./directory-handle-C242tYw5.js";
59
- import "./diff-line-counts-G7qDgMXg.js";
58
+ import "./directory-handle-CaLRQd6-.js";
59
+ import "./diff-line-counts-BxIn6ndj.js";
60
60
  import "perf_hooks";
61
61
  import "better-sqlite3";
62
62
  import "module";
@@ -68,7 +68,7 @@ import "dgram";
68
68
  import "timers/promises";
69
69
  import "node:timers/promises";
70
70
  import "@loro-dev/roost-node";
71
- import "./diff-worker-task-B1Ju3wjo.js";
71
+ import "./diff-worker-task-BHb8VRuV.js";
72
72
  import "node:module";
73
73
  import "node:v8";
74
74
  import "http2";
@@ -100,4 +100,4 @@ async function executeDaemonSessionTool(context, name, args) {
100
100
  export {
101
101
  executeDaemonSessionTool
102
102
  };
103
- //# sourceMappingURL=daemon-session-tools-C-Yrq3QD.js.map
103
+ //# sourceMappingURL=daemon-session-tools-DLk0L4Ya.js.map
@@ -1,7 +1,7 @@
1
1
  import { mkdtempSync, writeFileSync, rmSync } from "node:fs";
2
2
  import os__default from "node:os";
3
3
  import path__default from "node:path";
4
- import { a as runCommandTextSyncLegacy } from "./process-CoLmXmOP.js";
4
+ import { a as runCommandTextSyncLegacy } from "./process-B57UgtjU.js";
5
5
  function Diff() {
6
6
  }
7
7
  Diff.prototype = {
@@ -682,4 +682,4 @@ export {
682
682
  countTextLines as a,
683
683
  computeLineCounts as c
684
684
  };
685
- //# sourceMappingURL=diff-line-counts-G7qDgMXg.js.map
685
+ //# sourceMappingURL=diff-line-counts-BxIn6ndj.js.map
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { open, stat } from "node:fs/promises";
3
- import { c as computeLineCounts } from "./diff-line-counts-G7qDgMXg.js";
3
+ import { c as computeLineCounts } from "./diff-line-counts-BxIn6ndj.js";
4
4
  async function runDiffWorkerTask(input) {
5
5
  const lineCounts = computeLineCounts(input.oldText, input.newText);
6
6
  if (input.kind === "line-count") return { kind: input.kind, lineCounts };
@@ -58,4 +58,4 @@ function nodeErrorCode(error) {
58
58
  export {
59
59
  runDiffWorkerTask as r
60
60
  };
61
- //# sourceMappingURL=diff-worker-task-B1Ju3wjo.js.map
61
+ //# sourceMappingURL=diff-worker-task-BHb8VRuV.js.map
@@ -1,8 +1,8 @@
1
- import { o as object, s as string, l as literal, b as boolean, _ as _enum, u as union, n as number, d as discriminatedUnion, a as array, r as record, t as tuple, c as unknown } from "./schemas-Bue2bhN8.js";
1
+ import { o as object, s as string, l as literal, b as boolean, _ as _enum, u as union, n as number, d as discriminatedUnion, a as array, r as record, t as tuple, c as unknown } from "./schemas-CsULZlsv.js";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import path__default from "node:path";
4
- import { r as runCommandTextLegacy } from "./process-CoLmXmOP.js";
5
- import { a as countTextLines } from "./diff-line-counts-G7qDgMXg.js";
4
+ import { r as runCommandTextLegacy } from "./process-B57UgtjU.js";
5
+ import { a as countTextLines } from "./diff-line-counts-BxIn6ndj.js";
6
6
  _enum(["host", "write", "read"]);
7
7
  _enum([
8
8
  "not-started",
@@ -197,9 +197,11 @@ const CodeCollabV2SaveTextResponseSchema = discriminatedUnion("status", [
197
197
  CodeCollabV2SaveTextOkSchema,
198
198
  CodeCollabV2SaveTextConflictSchema
199
199
  ]);
200
+ const CodeCollabAllChangesScopeSchema = _enum(["branch", "uncommitted"]);
200
201
  const CodeCollabV2OpenCurrentDiffRequestSchema = object({
201
202
  sessionId: string().trim().min(1),
202
- path: string().min(1)
203
+ path: string().min(1),
204
+ scope: CodeCollabAllChangesScopeSchema.optional()
203
205
  }).strict();
204
206
  const CodeCollabV2DiffSnapshotSchema = discriminatedUnion("kind", [
205
207
  object({
@@ -223,14 +225,22 @@ const CodeCollabV2OpenCurrentDiffResponseSchema = discriminatedUnion("status", [
223
225
  object({
224
226
  status: literal("unavailable"),
225
227
  path: string().min(1),
226
- reason: _enum(["base_unavailable", "not_changed", "transient_io", "unsupported_binary"]),
228
+ reason: _enum([
229
+ "base_unavailable",
230
+ "not_changed",
231
+ "transient_io",
232
+ "unsupported_binary",
233
+ "not_a_git_worktree",
234
+ "no_commits"
235
+ ]),
227
236
  message: string().min(1).optional()
228
237
  }).strict()
229
238
  ]);
230
239
  const CodeCollabV2OpenAllChangesDiffRequestSchema = object({
231
240
  sessionId: string().trim().min(1),
232
241
  // Inline this file first (the file the user clicked) regardless of size ordering.
233
- focusPath: string().min(1).optional()
242
+ focusPath: string().min(1).optional(),
243
+ scope: CodeCollabAllChangesScopeSchema.optional()
234
244
  }).strict();
235
245
  const CodeCollabV2AllChangesDiffEntrySchema = discriminatedUnion("status", [
236
246
  object({
@@ -272,7 +282,7 @@ const CodeCollabV2OpenAllChangesDiffResponseSchema = discriminatedUnion("status"
272
282
  }).strict(),
273
283
  object({
274
284
  status: literal("unavailable"),
275
- reason: _enum(["base_unavailable", "transient_io"]),
285
+ reason: _enum(["base_unavailable", "transient_io", "not_a_git_worktree", "no_commits"]),
276
286
  message: string().min(1).optional()
277
287
  }).strict()
278
288
  ]);
@@ -858,15 +868,15 @@ function gitDiffBaseRefCandidates(preferredBaseBranch) {
858
868
  return [.../* @__PURE__ */ new Set([...refs, "origin/main", "main", "origin/master", "master", "origin/HEAD"])];
859
869
  }
860
870
  const GIT_MAX_BUFFER_BYTES = 64 * 1024 * 1024;
861
- async function isInsideGitWorktree(workspaceRoot) {
862
- const inside = await runGit(workspaceRoot, ["rev-parse", "--is-inside-work-tree"]);
871
+ async function isInsideGitWorktree(workspaceRoot, signal) {
872
+ const inside = await runGit(workspaceRoot, ["rev-parse", "--is-inside-work-tree"], signal);
863
873
  return inside.ok && inside.stdout.trim() === "true";
864
874
  }
865
875
  async function scanGitDirectoryEntries(options) {
866
876
  if (!options.recursive) {
867
877
  return null;
868
878
  }
869
- const result = await runGitLsFiles(options.directoryAbsolutePath);
879
+ const result = await runGitLsFiles(options.directoryAbsolutePath, options.signal);
870
880
  if (!result.ok) {
871
881
  return null;
872
882
  }
@@ -877,20 +887,24 @@ async function scanGitDirectoryEntries(options) {
877
887
  relativeFilePaths: result.paths
878
888
  });
879
889
  }
880
- async function runGitLsFiles(cwd) {
881
- const [listed, deleted] = await Promise.all([
882
- runGit(cwd, [
883
- "ls-files",
884
- "-z",
885
- "--cached",
886
- "--others",
887
- "--exclude-standard",
888
- "--deduplicate",
889
- "--",
890
- "."
891
- ]),
892
- runGit(cwd, ["ls-files", "--deleted", "-z", "--", "."])
890
+ async function runGitLsFiles(cwd, signal) {
891
+ const results = await Promise.allSettled([
892
+ runGit(
893
+ cwd,
894
+ ["ls-files", "-z", "--cached", "--others", "--exclude-standard", "--deduplicate", "--", "."],
895
+ signal
896
+ ),
897
+ runGit(cwd, ["ls-files", "--deleted", "-z", "--", "."], signal)
893
898
  ]);
899
+ for (const result of results) {
900
+ if (result.status === "rejected") throw result.reason;
901
+ }
902
+ const [listedResult, deletedResult] = results;
903
+ if (listedResult?.status !== "fulfilled" || deletedResult?.status !== "fulfilled") {
904
+ throw new Error("Git listing did not settle");
905
+ }
906
+ const listed = listedResult.value;
907
+ const deleted = deletedResult.value;
894
908
  if (!listed.ok) {
895
909
  return { ok: false };
896
910
  }
@@ -901,33 +915,43 @@ async function runGitLsFiles(cwd) {
901
915
  };
902
916
  }
903
917
  async function computeAllChanges(workspaceRoot, options = {}) {
904
- const diffBase = options.diffBase ?? await resolveAllChangesDiffBase(workspaceRoot, options.preferredBaseBranch);
918
+ const diffBase = options.diffBase ?? await resolveAllChangesDiffBase(workspaceRoot, options.preferredBaseBranch, options.signal);
905
919
  const diffTarget = diffBase ?? "HEAD";
906
- const [numstat, nameStatus, untracked] = await Promise.all([
920
+ const results = await Promise.allSettled([
907
921
  // `--numstat` cannot use `-z`, so disable `core.quotePath` to keep non-ASCII paths
908
922
  // raw (matching the `-z` outputs below); otherwise they are mis-keyed and lose their
909
923
  // All Changes diff counts.
910
- runGit(workspaceRoot, [
911
- "-c",
912
- "core.quotePath=false",
913
- "diff",
914
- "--numstat",
915
- "--no-renames",
916
- "--relative",
917
- diffTarget,
918
- "--"
919
- ]),
920
- runGit(workspaceRoot, [
921
- "diff",
922
- "--name-status",
923
- "--no-renames",
924
- "-z",
925
- "--relative",
926
- diffTarget,
927
- "--"
928
- ]),
929
- runGit(workspaceRoot, ["ls-files", "--others", "--exclude-standard", "-z"])
924
+ runGit(
925
+ workspaceRoot,
926
+ [
927
+ "-c",
928
+ "core.quotePath=false",
929
+ "diff",
930
+ "--numstat",
931
+ "--no-renames",
932
+ "--relative",
933
+ diffTarget,
934
+ "--"
935
+ ],
936
+ options.signal
937
+ ),
938
+ runGit(
939
+ workspaceRoot,
940
+ ["diff", "--name-status", "--no-renames", "-z", "--relative", diffTarget, "--"],
941
+ options.signal
942
+ ),
943
+ runGit(workspaceRoot, ["ls-files", "--others", "--exclude-standard", "-z"], options.signal)
930
944
  ]);
945
+ for (const result of results) {
946
+ if (result.status === "rejected") throw result.reason;
947
+ }
948
+ const [numstatResult, nameStatusResult, untrackedResult] = results;
949
+ if (numstatResult?.status !== "fulfilled" || nameStatusResult?.status !== "fulfilled" || untrackedResult?.status !== "fulfilled") {
950
+ throw new Error("Git diff did not settle");
951
+ }
952
+ const numstat = numstatResult.value;
953
+ const nameStatus = nameStatusResult.value;
954
+ const untracked = untrackedResult.value;
931
955
  if (!numstat.ok && !nameStatus.ok && !untracked.ok) {
932
956
  return {};
933
957
  }
@@ -956,48 +980,62 @@ async function computeAllChanges(workspaceRoot, options = {}) {
956
980
  }
957
981
  if (untracked.ok) {
958
982
  for (const filePath of untracked.stdout.split("\0")) {
983
+ options.signal?.throwIfAborted();
959
984
  if (!filePath) continue;
960
985
  const normalizedPath = normalizeGitPath(filePath);
961
986
  if (!(normalizedPath in changes)) {
962
- changes[normalizedPath] = await lineStatsForUntrackedFile(workspaceRoot, normalizedPath);
987
+ changes[normalizedPath] = await lineStatsForUntrackedFile(
988
+ workspaceRoot,
989
+ normalizedPath,
990
+ options.signal
991
+ );
963
992
  }
964
993
  }
965
994
  }
966
995
  return changes;
967
996
  }
968
- async function resolveAllChangesDiffBase(workspaceRoot, preferredBaseBranch) {
969
- if (!await isInsideGitWorktree(workspaceRoot)) {
997
+ async function resolveAllChangesDiffBase(workspaceRoot, preferredBaseBranch, signal) {
998
+ if (!await isInsideGitWorktree(workspaceRoot, signal)) {
970
999
  return null;
971
1000
  }
972
- const baseRef = await resolveAllChangesBaseRef(workspaceRoot, preferredBaseBranch);
1001
+ const baseRef = await resolveAllChangesBaseRef(workspaceRoot, preferredBaseBranch, signal);
973
1002
  if (baseRef) {
974
- const mergeBase = await runGit(workspaceRoot, ["merge-base", baseRef, "HEAD"]);
1003
+ const mergeBase = await runGit(workspaceRoot, ["merge-base", baseRef, "HEAD"], signal);
975
1004
  const trimmed = mergeBase.ok ? mergeBase.stdout.trim() : "";
976
1005
  if (trimmed) {
977
1006
  return trimmed;
978
1007
  }
979
1008
  }
980
- const head = await runGit(workspaceRoot, ["rev-parse", "--verify", "HEAD^{commit}"]);
1009
+ const head = await resolveGitHeadCommit(workspaceRoot, signal);
1010
+ return head;
1011
+ }
1012
+ async function resolveGitHeadCommit(workspaceRoot, signal) {
1013
+ const head = await runGit(workspaceRoot, ["rev-parse", "--verify", "HEAD^{commit}"], signal);
981
1014
  return head.ok && head.stdout.trim() ? head.stdout.trim() : null;
982
1015
  }
983
- async function resolveAllChangesBaseRef(workspaceRoot, preferredBaseBranch) {
1016
+ async function resolveAllChangesBaseRef(workspaceRoot, preferredBaseBranch, signal) {
984
1017
  const candidates = gitDiffBaseRefCandidates(preferredBaseBranch);
985
1018
  for (const candidate of candidates) {
986
- const exists = await runGit(workspaceRoot, ["rev-parse", "--verify", `${candidate}^{commit}`]);
1019
+ const exists = await runGit(
1020
+ workspaceRoot,
1021
+ ["rev-parse", "--verify", `${candidate}^{commit}`],
1022
+ signal
1023
+ );
987
1024
  if (exists.ok) {
988
1025
  return candidate;
989
1026
  }
990
1027
  }
991
1028
  return null;
992
1029
  }
993
- async function lineStatsForUntrackedFile(workspaceRoot, workspacePath) {
1030
+ async function lineStatsForUntrackedFile(workspaceRoot, workspacePath, signal) {
994
1031
  try {
995
1032
  const absolutePath = path__default.resolve(workspaceRoot, workspacePath);
996
- const bytes = await readFile(absolutePath);
1033
+ const bytes = await readFile(absolutePath, { signal });
997
1034
  if (hasBinaryNul(bytes)) return true;
998
1035
  const text = decodeUtf8(bytes);
999
1036
  return { diff: [countTextLines(text), 0] };
1000
1037
  } catch {
1038
+ signal?.throwIfAborted();
1001
1039
  return true;
1002
1040
  }
1003
1041
  }
@@ -1023,16 +1061,21 @@ function parseDeletedPathsFromNameStatus(stdout) {
1023
1061
  }
1024
1062
  return deleted;
1025
1063
  }
1026
- async function runGit(cwd, args) {
1064
+ async function runGit(cwd, args, signal) {
1027
1065
  try {
1028
- const { stdout } = await runCommandTextLegacy({
1029
- command: "git",
1030
- args: ["-C", cwd, ...args],
1031
- maxOutputBytes: GIT_MAX_BUFFER_BYTES,
1032
- check: "exit-0"
1033
- });
1066
+ signal?.throwIfAborted();
1067
+ const { stdout } = await runCommandTextLegacy(
1068
+ {
1069
+ command: "git",
1070
+ args: ["-C", cwd, ...args],
1071
+ maxOutputBytes: GIT_MAX_BUFFER_BYTES,
1072
+ check: "exit-0"
1073
+ },
1074
+ { signal }
1075
+ );
1034
1076
  return { ok: true, stdout };
1035
1077
  } catch {
1078
+ signal?.throwIfAborted();
1036
1079
  return { ok: false };
1037
1080
  }
1038
1081
  }
@@ -1178,4 +1221,4 @@ export {
1178
1221
  CodeCollabV2RpcContentEnvelopeSchema as y,
1179
1222
  deriveCodeCollabV2ContentKeyId as z
1180
1223
  };
1181
- //# sourceMappingURL=directory-handle-C242tYw5.js.map
1224
+ //# sourceMappingURL=directory-handle-CaLRQd6-.js.map
@@ -1,11 +1,11 @@
1
1
  import { c as createRoostSessionData } from "../index.js";
2
- import { E, a, H, b, d, e, f, R, S, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, F, G, I, J, K, L, M, N, O, P, Q, T, U, V, W, X, Y, Z, _ } from "../index.js";
2
+ import { E, a, H, b, d, e, f, R, S, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, F, G, I, J, K, L, M, N, O, P, Q, T, U, V, W, X, Y, Z, _, $ } from "../index.js";
3
3
  import "path";
4
4
  import "node:fs";
5
5
  import "node:readline";
6
6
  import "node:async_hooks";
7
- import "./cloudflared-native-2AOPFkF0.js";
8
- import "./process-CoLmXmOP.js";
7
+ import "./cloudflared-native-DBP9VL7n.js";
8
+ import "./process-B57UgtjU.js";
9
9
  import "node:child_process";
10
10
  import "node:path";
11
11
  import "node:url";
@@ -28,12 +28,12 @@ import "node:util";
28
28
  import "node:os";
29
29
  import "node:fs/promises";
30
30
  import "node:zlib";
31
- import "./schemas-Bue2bhN8.js";
31
+ import "./schemas-CsULZlsv.js";
32
32
  import "node:process";
33
33
  import "./loro_wasm_bg-MVC5eAwd.js";
34
34
  import "./plan-mode-D0D5cnMs.js";
35
- import "./profile-WAvt7jC4.js";
36
- import "./ios-simulator-B6mhaluY.js";
35
+ import "./profile-CL7H2MUB.js";
36
+ import "./ios-simulator-CIEJaknT.js";
37
37
  import "./subagent-events-MVcQFxYe.js";
38
38
  import "node:diagnostics_channel";
39
39
  import "node:assert";
@@ -56,8 +56,8 @@ import "node:crypto";
56
56
  import "fs/promises";
57
57
  import "./workspace-watch-path-policy-BRzhvEkG.js";
58
58
  import "node:string_decoder";
59
- import "./directory-handle-C242tYw5.js";
60
- import "./diff-line-counts-G7qDgMXg.js";
59
+ import "./directory-handle-CaLRQd6-.js";
60
+ import "./diff-line-counts-BxIn6ndj.js";
61
61
  import "perf_hooks";
62
62
  import "better-sqlite3";
63
63
  import "module";
@@ -69,7 +69,7 @@ import "dgram";
69
69
  import "timers/promises";
70
70
  import "node:timers/promises";
71
71
  import "@loro-dev/roost-node";
72
- import "./diff-worker-task-B1Ju3wjo.js";
72
+ import "./diff-worker-task-BHb8VRuV.js";
73
73
  import "node:module";
74
74
  import "node:v8";
75
75
  import "http2";
@@ -83,49 +83,50 @@ export {
83
83
  f as HistoryImportRefused,
84
84
  R as ROOST_CLEAR_FIELDS_KEY,
85
85
  S as SESSION_DIRECTORY_INPUT_CONFIG_KEYS,
86
- g as SessionTurnTokenUsageSchema,
87
- h as addSessionTurnTokenUsage,
88
- i as applyHistoryAction,
89
- j as applyMarkTurnSeen,
90
- k as applyOpenAssistantTurn,
91
- l as applyRespondPermission,
92
- m as applyResumeAssistant,
93
- n as areStringArraysEqual,
94
- o as buildOperationProgressContent,
95
- p as createAssistantTurn,
96
- q as createImportCursor,
97
- r as createLoroSessionData,
98
- s as createRoostDirectoryRow,
99
- t as createRoostHistoryReader,
86
+ g as SessionHistoryContentPatchSchema,
87
+ h as SessionTurnTokenUsageSchema,
88
+ i as addSessionTurnTokenUsage,
89
+ j as applyHistoryAction,
90
+ k as applyMarkTurnSeen,
91
+ l as applyOpenAssistantTurn,
92
+ m as applyRespondPermission,
93
+ n as applyResumeAssistant,
94
+ o as areStringArraysEqual,
95
+ p as buildOperationProgressContent,
96
+ q as createAssistantTurn,
97
+ r as createImportCursor,
98
+ s as createLoroSessionData,
99
+ t as createRoostDirectoryRow,
100
+ u as createRoostHistoryReader,
100
101
  createRoostSessionData,
101
- u as decideHistoryConflictResolution,
102
- v as decideHistoryRefresh,
103
- w as findProgressMessageId,
104
- x as getOperationProgressTargetKey,
105
- y as getOperationProgressTurnId,
106
- z as hashHistoryEntry,
107
- A as hashHistoryEntryForVersion,
108
- B as hashHistoryEntryV2,
109
- C as hashHistoryForStoredVersion,
110
- D as hashText,
111
- F as historyActionTarget,
112
- G as isEmptySessionTurnTokenUsage,
113
- I as markAssistantTurnFinished,
114
- J as markTurnSeenBlocked,
115
- K as mergeOperationProgressContent,
116
- L as pageVisibleTranscript,
117
- M as planEditableTailReplacement,
118
- N as planHistoryImport,
119
- O as projectRoostSegments,
120
- P as readLatestTurn,
121
- Q as readSessionHistory,
122
- T as readSessionTurnTokenUsage,
123
- U as resolveEditableTail,
124
- V as resolveImportHashVersion,
125
- W as resolveImportedTurnHashes,
126
- X as resolveStoredHashVersion,
127
- Y as selectTurnOutput,
128
- Z as setFieldTo,
129
- _ as storedBaselineHashes
102
+ v as decideHistoryConflictResolution,
103
+ w as decideHistoryRefresh,
104
+ x as findProgressMessageId,
105
+ y as getOperationProgressTargetKey,
106
+ z as getOperationProgressTurnId,
107
+ A as hashHistoryEntry,
108
+ B as hashHistoryEntryForVersion,
109
+ C as hashHistoryEntryV2,
110
+ D as hashHistoryForStoredVersion,
111
+ F as hashText,
112
+ G as historyActionTarget,
113
+ I as isEmptySessionTurnTokenUsage,
114
+ J as markAssistantTurnFinished,
115
+ K as markTurnSeenBlocked,
116
+ L as mergeOperationProgressContent,
117
+ M as pageVisibleTranscript,
118
+ N as planEditableTailReplacement,
119
+ O as planHistoryImport,
120
+ P as projectRoostSegments,
121
+ Q as readLatestTurn,
122
+ T as readSessionHistory,
123
+ U as readSessionTurnTokenUsage,
124
+ V as resolveEditableTail,
125
+ W as resolveImportHashVersion,
126
+ X as resolveImportedTurnHashes,
127
+ Y as resolveStoredHashVersion,
128
+ Z as selectTurnOutput,
129
+ _ as setFieldTo,
130
+ $ as storedBaselineHashes
130
131
  };
131
- //# sourceMappingURL=index-DuduZto9.js.map
132
+ //# sourceMappingURL=index-BOtRa7m1.js.map
@@ -1,6 +1,6 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import path__default from "node:path";
3
- import { r as runCommandTextLegacy } from "./process-CoLmXmOP.js";
3
+ import { r as runCommandTextLegacy } from "./process-B57UgtjU.js";
4
4
  import { d as parseReviewMarkdown, v as validateParsedReviewDocument, f as validateResolvedBlock, a as countLines, b as createSparseTextForRanges } from "./sparse-text-DcovXrdo.js";
5
5
  import "node:child_process";
6
6
  import "node:fs";
@@ -315,4 +315,4 @@ function formatGitError(error) {
315
315
  export {
316
316
  resolveReviewBundle
317
317
  };
318
- //# sourceMappingURL=index-BPsHGk5B.js.map
318
+ //# sourceMappingURL=index-CH73vPUo.js.map
@@ -1,4 +1,4 @@
1
- import { o as object, l as literal, s as string, d as discriminatedUnion, _ as _enum, a as array, b as boolean, n as number, u as union } from "./schemas-Bue2bhN8.js";
1
+ import { o as object, l as literal, s as string, d as discriminatedUnion, _ as _enum, a as array, b as boolean, n as number, u as union } from "./schemas-CsULZlsv.js";
2
2
  const RPC_SECRET_PUBLIC_KEY_TYPE = "rpc-secret-public-key-v1";
3
3
  const RPC_SECRET_ENVELOPE_TYPE = "rpc-secret-envelope-v1";
4
4
  const RPC_SECRET_ALGORITHM = "ECDH-P256-AES-256-GCM";
@@ -158,4 +158,4 @@ export {
158
158
  IosSimulatorDeviceControlRequestSchema as k,
159
159
  IosSimulatorUdidSchema as l
160
160
  };
161
- //# sourceMappingURL=ios-simulator-B6mhaluY.js.map
161
+ //# sourceMappingURL=ios-simulator-CIEJaknT.js.map