@monotykamary/localterm-server 2.66.8 → 2.66.10

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.
Files changed (125) hide show
  1. package/dist/agent-git-status.d.ts +3 -0
  2. package/dist/agent-git-status.d.ts.map +1 -0
  3. package/dist/agent-git-status.js +46 -0
  4. package/dist/agent-git-status.js.map +1 -0
  5. package/dist/agent-log-utils.d.ts +18 -0
  6. package/dist/agent-log-utils.d.ts.map +1 -0
  7. package/dist/agent-log-utils.js +123 -0
  8. package/dist/agent-log-utils.js.map +1 -0
  9. package/dist/agent-models.d.ts +4 -0
  10. package/dist/agent-models.d.ts.map +1 -0
  11. package/dist/agent-models.js +100 -0
  12. package/dist/agent-models.js.map +1 -0
  13. package/dist/agent-runner.d.ts +3 -5
  14. package/dist/agent-runner.d.ts.map +1 -1
  15. package/dist/agent-runner.js +8 -522
  16. package/dist/agent-runner.js.map +1 -1
  17. package/dist/agent-session-reader.d.ts +3 -0
  18. package/dist/agent-session-reader.d.ts.map +1 -0
  19. package/dist/agent-session-reader.js +113 -0
  20. package/dist/agent-session-reader.js.map +1 -0
  21. package/dist/build-pty-environment.d.ts +8 -0
  22. package/dist/build-pty-environment.d.ts.map +1 -0
  23. package/dist/build-pty-environment.js +44 -0
  24. package/dist/build-pty-environment.js.map +1 -0
  25. package/dist/caffeinate-automatic-detector.d.ts +57 -0
  26. package/dist/caffeinate-automatic-detector.d.ts.map +1 -0
  27. package/dist/caffeinate-automatic-detector.js +275 -0
  28. package/dist/caffeinate-automatic-detector.js.map +1 -0
  29. package/dist/caffeinate-battery-guard.d.ts +35 -0
  30. package/dist/caffeinate-battery-guard.d.ts.map +1 -0
  31. package/dist/caffeinate-battery-guard.js +190 -0
  32. package/dist/caffeinate-battery-guard.js.map +1 -0
  33. package/dist/caffeinate-manager.d.ts +5 -31
  34. package/dist/caffeinate-manager.d.ts.map +1 -1
  35. package/dist/caffeinate-manager.js +55 -400
  36. package/dist/caffeinate-manager.js.map +1 -1
  37. package/dist/cdp/cdp-client.d.ts +4 -70
  38. package/dist/cdp/cdp-client.d.ts.map +1 -1
  39. package/dist/cdp/cdp-client.js +58 -418
  40. package/dist/cdp/cdp-client.js.map +1 -1
  41. package/dist/cdp/cdp-connection.d.ts +72 -0
  42. package/dist/cdp/cdp-connection.d.ts.map +1 -0
  43. package/dist/cdp/cdp-connection.js +272 -0
  44. package/dist/cdp/cdp-connection.js.map +1 -0
  45. package/dist/cdp/constants.d.ts +6 -0
  46. package/dist/cdp/constants.d.ts.map +1 -0
  47. package/dist/cdp/constants.js +9 -0
  48. package/dist/cdp/constants.js.map +1 -0
  49. package/dist/cdp/target-registry.d.ts +41 -0
  50. package/dist/cdp/target-registry.d.ts.map +1 -0
  51. package/dist/cdp/target-registry.js +118 -0
  52. package/dist/cdp/target-registry.js.map +1 -0
  53. package/dist/constants.d.ts +2 -0
  54. package/dist/constants.d.ts.map +1 -1
  55. package/dist/constants.js +2 -0
  56. package/dist/constants.js.map +1 -1
  57. package/dist/git-branch-metadata.d.ts +11 -0
  58. package/dist/git-branch-metadata.d.ts.map +1 -0
  59. package/dist/git-branch-metadata.js +85 -0
  60. package/dist/git-branch-metadata.js.map +1 -0
  61. package/dist/git-diff-cache.d.ts +13 -0
  62. package/dist/git-diff-cache.d.ts.map +1 -0
  63. package/dist/git-diff-cache.js +32 -0
  64. package/dist/git-diff-cache.js.map +1 -0
  65. package/dist/git-diff-parser.d.ts +15 -0
  66. package/dist/git-diff-parser.d.ts.map +1 -0
  67. package/dist/git-diff-parser.js +196 -0
  68. package/dist/git-diff-parser.js.map +1 -0
  69. package/dist/git-diff-service.d.ts +10 -0
  70. package/dist/git-diff-service.d.ts.map +1 -0
  71. package/dist/git-diff-service.js +395 -0
  72. package/dist/git-diff-service.js.map +1 -0
  73. package/dist/git-diff.d.ts +8 -41
  74. package/dist/git-diff.d.ts.map +1 -1
  75. package/dist/git-diff.js +5 -944
  76. package/dist/git-diff.js.map +1 -1
  77. package/dist/github-pr.d.ts +32 -0
  78. package/dist/github-pr.d.ts.map +1 -0
  79. package/dist/github-pr.js +266 -0
  80. package/dist/github-pr.js.map +1 -0
  81. package/dist/pi-binary-resolver.d.ts +6 -0
  82. package/dist/pi-binary-resolver.d.ts.map +1 -0
  83. package/dist/pi-binary-resolver.js +70 -0
  84. package/dist/pi-binary-resolver.js.map +1 -0
  85. package/dist/pi-rpc-client.d.ts +14 -0
  86. package/dist/pi-rpc-client.d.ts.map +1 -0
  87. package/dist/pi-rpc-client.js +87 -0
  88. package/dist/pi-rpc-client.js.map +1 -0
  89. package/dist/session-client-hub.d.ts +57 -0
  90. package/dist/session-client-hub.d.ts.map +1 -0
  91. package/dist/session-client-hub.js +435 -0
  92. package/dist/session-client-hub.js.map +1 -0
  93. package/dist/session-command-executor.d.ts +14 -0
  94. package/dist/session-command-executor.d.ts.map +1 -0
  95. package/dist/session-command-executor.js +207 -0
  96. package/dist/session-command-executor.js.map +1 -0
  97. package/dist/session-git-event-bridge.d.ts +16 -0
  98. package/dist/session-git-event-bridge.d.ts.map +1 -0
  99. package/dist/session-git-event-bridge.js +56 -0
  100. package/dist/session-git-event-bridge.js.map +1 -0
  101. package/dist/session-lifecycle-policy.d.ts +15 -0
  102. package/dist/session-lifecycle-policy.d.ts.map +1 -0
  103. package/dist/session-lifecycle-policy.js +105 -0
  104. package/dist/session-lifecycle-policy.js.map +1 -0
  105. package/dist/session-manager.d.ts +11 -42
  106. package/dist/session-manager.d.ts.map +1 -1
  107. package/dist/session-manager.js +72 -987
  108. package/dist/session-manager.js.map +1 -1
  109. package/dist/session-output-coordinator.d.ts +21 -0
  110. package/dist/session-output-coordinator.d.ts.map +1 -0
  111. package/dist/session-output-coordinator.js +134 -0
  112. package/dist/session-output-coordinator.js.map +1 -0
  113. package/dist/session-output-transport.d.ts +22 -0
  114. package/dist/session-output-transport.d.ts.map +1 -0
  115. package/dist/session-output-transport.js +160 -0
  116. package/dist/session-output-transport.js.map +1 -0
  117. package/dist/session.d.ts +0 -4
  118. package/dist/session.d.ts.map +1 -1
  119. package/dist/session.js +11 -258
  120. package/dist/session.js.map +1 -1
  121. package/dist/shell-hook-builder.d.ts +16 -0
  122. package/dist/shell-hook-builder.d.ts.map +1 -0
  123. package/dist/shell-hook-builder.js +230 -0
  124. package/dist/shell-hook-builder.js.map +1 -0
  125. package/package.json +1 -1
@@ -0,0 +1,395 @@
1
+ import fs from "node:fs";
2
+ import fsPromises from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { GIT_BINARY_SNIFF_BYTES, GIT_EMPTY_TREE_HASH, GIT_MAX_PATCH_BYTES_PER_FILE, GIT_MAX_TOTAL_PATCH_BYTES, GIT_MAX_UNTRACKED_FILE_BYTES, GIT_MAX_UNTRACKED_FILES, } from "./constants.js";
5
+ import { getCurrentBranch, isGitRepo, resolveDefaultBase, verifyRef, } from "./git-branch-metadata.js";
6
+ import { readDiffCache, writeDiffCache } from "./git-diff-cache.js";
7
+ import { buildUntrackedPatch, countLines, indexPatchesByPath, parseNameStatusZ, parseNumstatZ, } from "./git-diff-parser.js";
8
+ import { detectPrDeduped, readPrCache } from "./github-pr.js";
9
+ import { runGit } from "./utils/run-git.js";
10
+ const WORKING_OPTIONS = { mode: "working" };
11
+ const EMPTY_SUMMARY = {
12
+ isRepo: false,
13
+ files: 0,
14
+ additions: 0,
15
+ deletions: 0,
16
+ binaries: 0,
17
+ branch: null,
18
+ };
19
+ const runGitText = async (cwd, args) => {
20
+ const result = await runGit(cwd, args);
21
+ return result.stdout.toString("utf8");
22
+ };
23
+ // `git diff` flags shared by every diff invocation so numstat, name-status and
24
+ // patch all walk the same diff queue (same rename detection, same file order).
25
+ const DIFF_RENAME_FLAG = "--find-renames";
26
+ // working mode compares against HEAD (or the empty tree when the branch is
27
+ // unborn). branch mode compares against the merge-base of HEAD and the base
28
+ // ref, so only changes since the branches diverged are shown.
29
+ const resolveDiffBaseRef = async (cwd) => {
30
+ const result = await runGit(cwd, ["rev-parse", "--verify", "-q", "HEAD"]);
31
+ return result.exitCode === 0 ? "HEAD" : GIT_EMPTY_TREE_HASH;
32
+ };
33
+ const resolveEffectiveBaseRef = async (cwd, options) => {
34
+ if (options.mode !== "branch")
35
+ return resolveDiffBaseRef(cwd);
36
+ let baseRef = options.base?.trim() || null;
37
+ if (baseRef && !(await verifyRef(cwd, baseRef)))
38
+ baseRef = null;
39
+ // No explicit user override: a fork PR compares against its upstream base
40
+ // (the PR's base repo's default branch), not the fork's own default. The PR is
41
+ // read from the per-(cwd, branch) cache populated by getGitBranchPr — no GitHub
42
+ // round-trip in the warm case, so the diff stays local and the cache's branch
43
+ // key means a branch switch naturally misses. A cold cache (the viewer opened
44
+ // branch mode before getGitBranchPr landed, or a refresh raced it) resolves the
45
+ // PR inline via detectPrDeduped — which shares any in-flight getGitBranchPr
46
+ // call — rather than silently falling back to the fork's origin, which would
47
+ // mismatch the PR's base. A cached null (known no-PR) skips; so does a PR whose
48
+ // base resolves no usable ref; both degrade to the repo default below.
49
+ if (!baseRef) {
50
+ const currentBranch = await getCurrentBranch(cwd);
51
+ if (currentBranch) {
52
+ let cachedPr = readPrCache(cwd, currentBranch);
53
+ if (cachedPr === undefined) {
54
+ await detectPrDeduped(cwd);
55
+ cachedPr = readPrCache(cwd, currentBranch);
56
+ }
57
+ // detectPr resolved (and fetched, if needed) the base ref alongside the
58
+ // GitHub call, so the diff path reads it warm — no remote resolution here.
59
+ if (cachedPr?.baseRef)
60
+ baseRef = cachedPr.baseRef;
61
+ }
62
+ }
63
+ if (!baseRef)
64
+ baseRef = (await resolveDefaultBase(cwd))?.ref ?? null;
65
+ if (!baseRef)
66
+ return null;
67
+ const mergeBase = await runGit(cwd, ["merge-base", baseRef, "HEAD"]);
68
+ if (mergeBase.exitCode === 0)
69
+ return mergeBase.stdout.toString("utf8").trim();
70
+ if (!(await verifyRef(cwd, baseRef)))
71
+ return null;
72
+ return runGitText(cwd, ["rev-parse", "--verify", baseRef]);
73
+ };
74
+ const readUntrackedFile = async (cwd, filePath) => {
75
+ const absolutePath = path.join(cwd, filePath);
76
+ try {
77
+ const stat = await fsPromises.stat(absolutePath);
78
+ if (!stat.isFile())
79
+ return null;
80
+ const bytesToRead = Math.min(stat.size, GIT_MAX_UNTRACKED_FILE_BYTES);
81
+ const buffer = Buffer.alloc(bytesToRead);
82
+ const handle = await fsPromises.open(absolutePath, "r");
83
+ try {
84
+ const { buffer: readBuffer } = await handle.read(buffer, 0, bytesToRead, 0);
85
+ const sniffEnd = Math.min(readBuffer.length, GIT_BINARY_SNIFF_BYTES);
86
+ const binary = readBuffer.subarray(0, sniffEnd).includes(0);
87
+ const truncated = stat.size > GIT_MAX_UNTRACKED_FILE_BYTES;
88
+ const content = binary ? null : truncated ? null : readBuffer.toString("utf8");
89
+ const lines = binary ? 0 : content ? countLines(content) : 0;
90
+ return { path: filePath, binary, lines, content, truncated };
91
+ }
92
+ finally {
93
+ await handle.close();
94
+ }
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ };
100
+ const collectUntrackedFiles = async (cwd) => {
101
+ const result = await runGit(cwd, ["ls-files", "--others", "--exclude-standard", "-z"]);
102
+ if (result.exitCode !== 0)
103
+ return [];
104
+ const paths = result.stdout.toString("utf8").split("\0").filter(Boolean);
105
+ const files = [];
106
+ for (const filePath of paths) {
107
+ if (files.length >= GIT_MAX_UNTRACKED_FILES)
108
+ break;
109
+ const file = await readUntrackedFile(cwd, filePath);
110
+ if (file)
111
+ files.push(file);
112
+ }
113
+ return files;
114
+ };
115
+ // One full diff pass for `(cwd)` against `baseRef`. Three parallel `git diff`
116
+ // invocations (numstat for counts+binary, name-status for the status letter +
117
+ // rename old path, patch for the body) walk the same diff queue. numstat and
118
+ // name-status are NUL-delimited and unambiguous; they're the source of truth
119
+ // for the file list. The patch output is keyed by path rather than paired
120
+ // positionally, because a single numstat entry can span several `diff --git`
121
+ // blocks (a symlink is deleted as mode 120000 and re-added as a regular file:
122
+ // git emits that as a deletion + an addition sharing one path, so there's no
123
+ // 1:1 with numstat entries). Untracked files are folded in from `ls-files`
124
+ // with synthesized patches (git's own diff never lists untracked files).
125
+ const buildDiffCache = async (cwd, baseRef) => {
126
+ const [numstatRes, nameStatusRes, patchRes] = await Promise.all([
127
+ runGit(cwd, [
128
+ "-c",
129
+ "core.quotepath=false",
130
+ "diff",
131
+ DIFF_RENAME_FLAG,
132
+ "--numstat",
133
+ "-z",
134
+ baseRef,
135
+ ]),
136
+ runGit(cwd, [
137
+ "-c",
138
+ "core.quotepath=false",
139
+ "diff",
140
+ DIFF_RENAME_FLAG,
141
+ "--name-status",
142
+ "-z",
143
+ baseRef,
144
+ ]),
145
+ runGit(cwd, ["-c", "core.quotepath=false", "diff", DIFF_RENAME_FLAG, "--patch", baseRef]),
146
+ ]);
147
+ if (numstatRes.exitCode !== 0 || patchRes.exitCode !== 0)
148
+ return null;
149
+ const numstat = parseNumstatZ(numstatRes.stdout.toString("utf8"));
150
+ const statuses = parseNameStatusZ(nameStatusRes.stdout.toString("utf8"));
151
+ const patchesByPath = indexPatchesByPath(patchRes.stdout.toString("utf8"));
152
+ const untracked = await collectUntrackedFiles(cwd);
153
+ const fileMeta = [];
154
+ const filePatchByPath = new Map();
155
+ const fileBinaryByPath = new Map();
156
+ const filePatchOmittedByPath = new Map();
157
+ let totalPatchBytes = 0;
158
+ let additions = 0;
159
+ let deletions = 0;
160
+ let binaries = 0;
161
+ for (let index = 0; index < numstat.length; index += 1) {
162
+ const entry = numstat[index];
163
+ const status = statuses.get(entry.path) ?? "modified";
164
+ const oldPath = status === "renamed" ? entry.oldPath : null;
165
+ let patchText = null;
166
+ let patchOmitted = false;
167
+ if (entry.binary) {
168
+ binaries += 1;
169
+ }
170
+ else {
171
+ const rawPatch = patchesByPath.get(entry.path) ?? null;
172
+ if (rawPatch === null ||
173
+ rawPatch.length > GIT_MAX_PATCH_BYTES_PER_FILE ||
174
+ totalPatchBytes + rawPatch.length > GIT_MAX_TOTAL_PATCH_BYTES) {
175
+ patchOmitted = true;
176
+ }
177
+ else {
178
+ patchText = rawPatch;
179
+ totalPatchBytes += rawPatch.length;
180
+ }
181
+ additions += entry.additions;
182
+ deletions += entry.deletions;
183
+ }
184
+ fileMeta.push({
185
+ path: entry.path,
186
+ oldPath,
187
+ status,
188
+ additions: entry.additions,
189
+ deletions: entry.deletions,
190
+ binary: entry.binary,
191
+ });
192
+ filePatchByPath.set(entry.path, patchText);
193
+ fileBinaryByPath.set(entry.path, entry.binary);
194
+ filePatchOmittedByPath.set(entry.path, patchOmitted);
195
+ }
196
+ for (const file of untracked) {
197
+ const patch = file.binary
198
+ ? null
199
+ : file.truncated || file.content === null
200
+ ? null
201
+ : buildUntrackedPatch(file.content);
202
+ let patchOmitted = file.truncated;
203
+ if (patch !== null) {
204
+ if (patch.length > GIT_MAX_PATCH_BYTES_PER_FILE ||
205
+ totalPatchBytes + patch.length > GIT_MAX_TOTAL_PATCH_BYTES) {
206
+ patchOmitted = true;
207
+ }
208
+ else {
209
+ totalPatchBytes += patch.length;
210
+ }
211
+ }
212
+ const fileAdditions = file.binary ? 0 : file.lines;
213
+ if (file.binary)
214
+ binaries += 1;
215
+ additions += fileAdditions;
216
+ fileMeta.push({
217
+ path: file.path,
218
+ oldPath: null,
219
+ status: "untracked",
220
+ additions: fileAdditions,
221
+ deletions: 0,
222
+ binary: file.binary,
223
+ });
224
+ filePatchByPath.set(file.path, patchOmitted ? null : patch);
225
+ fileBinaryByPath.set(file.path, file.binary);
226
+ filePatchOmittedByPath.set(file.path, patchOmitted);
227
+ }
228
+ const summary = {
229
+ isRepo: true,
230
+ files: fileMeta.length,
231
+ additions,
232
+ deletions,
233
+ binaries,
234
+ branch: await getCurrentBranch(cwd),
235
+ };
236
+ return {
237
+ summary,
238
+ fileMeta,
239
+ filePatchByPath,
240
+ fileBinaryByPath,
241
+ filePatchOmittedByPath,
242
+ builtAt: Date.now(),
243
+ };
244
+ };
245
+ const ensureDiffCache = async (cwd, options) => {
246
+ // Read the cache before resolving the base ref — that resolution does git work
247
+ // (rev-parse + merge-base) on every call, so for the per-file patch endpoint
248
+ // (where the cache is warm on nearly every request) checking first keeps it a
249
+ // pure map lookup with no subprocess.
250
+ const cached = readDiffCache(cwd, options.mode, options.base ?? null);
251
+ if (cached)
252
+ return cached;
253
+ const baseRef = await resolveEffectiveBaseRef(cwd, options);
254
+ if (baseRef === null)
255
+ return null;
256
+ const cache = await buildDiffCache(cwd, baseRef);
257
+ if (cache)
258
+ writeDiffCache(cwd, options.mode, options.base ?? null, cache);
259
+ return cache;
260
+ };
261
+ export const getGitDiffSummary = async (cwd, options = WORKING_OPTIONS) => {
262
+ const cached = readDiffCache(cwd, options.mode, options.base ?? null);
263
+ if (cached)
264
+ return cached.summary;
265
+ if (!(await isGitRepo(cwd)))
266
+ return EMPTY_SUMMARY;
267
+ try {
268
+ const baseRef = await resolveEffectiveBaseRef(cwd, options);
269
+ if (baseRef === null)
270
+ return { ...EMPTY_SUMMARY, isRepo: true };
271
+ const branch = await getCurrentBranch(cwd);
272
+ // Summary is pushed on every git-dirty signal, so it stays on the cheap
273
+ // numstat-only path (no patch) unless a cache is already warm.
274
+ const numstatRes = await runGit(cwd, [
275
+ "-c",
276
+ "core.quotepath=false",
277
+ "diff",
278
+ DIFF_RENAME_FLAG,
279
+ "--numstat",
280
+ "-z",
281
+ baseRef,
282
+ ]);
283
+ if (numstatRes.exitCode !== 0)
284
+ return { ...EMPTY_SUMMARY, isRepo: true };
285
+ let additions = 0;
286
+ let deletions = 0;
287
+ let binaries = 0;
288
+ let fileCount = 0;
289
+ for (const entry of parseNumstatZ(numstatRes.stdout.toString("utf8"))) {
290
+ fileCount += 1;
291
+ if (entry.binary) {
292
+ binaries += 1;
293
+ continue;
294
+ }
295
+ additions += entry.additions;
296
+ deletions += entry.deletions;
297
+ }
298
+ const untracked = await collectUntrackedFiles(cwd);
299
+ for (const file of untracked) {
300
+ fileCount += 1;
301
+ if (file.binary) {
302
+ binaries += 1;
303
+ }
304
+ else {
305
+ additions += file.lines;
306
+ }
307
+ }
308
+ return { isRepo: true, files: fileCount, additions, deletions, binaries, branch };
309
+ }
310
+ catch {
311
+ return { ...EMPTY_SUMMARY, isRepo: true };
312
+ }
313
+ };
314
+ export const getGitDiff = async (cwd, options = WORKING_OPTIONS) => {
315
+ const cached = readDiffCache(cwd, options.mode, options.base ?? null);
316
+ if (cached) {
317
+ return { isRepo: true, files: mapCacheFiles(cached) };
318
+ }
319
+ if (!(await isGitRepo(cwd)))
320
+ return { isRepo: false, files: [] };
321
+ const cache = await ensureDiffCache(cwd, options);
322
+ if (!cache)
323
+ return { isRepo: true, files: [] };
324
+ return { isRepo: true, files: mapCacheFiles(cache) };
325
+ };
326
+ const mapCacheFiles = (cache) => cache.fileMeta.map((meta) => ({
327
+ path: meta.path,
328
+ oldPath: meta.oldPath,
329
+ status: meta.status,
330
+ additions: meta.additions,
331
+ deletions: meta.deletions,
332
+ binary: meta.binary,
333
+ patch: cache.filePatchByPath.get(meta.path) ?? null,
334
+ patchOmitted: cache.filePatchOmittedByPath.get(meta.path) ?? false,
335
+ }));
336
+ export const getGitDiffFiles = async (cwd, options = WORKING_OPTIONS) => {
337
+ const cached = readDiffCache(cwd, options.mode, options.base ?? null);
338
+ if (cached)
339
+ return { isRepo: true, files: cached.fileMeta };
340
+ if (!(await isGitRepo(cwd)))
341
+ return { isRepo: false, files: [] };
342
+ const cache = await ensureDiffCache(cwd, options);
343
+ if (!cache)
344
+ return { isRepo: true, files: [] };
345
+ return { isRepo: true, files: cache.fileMeta };
346
+ };
347
+ export const getGitDiffFilePatch = async (cwd, requestedPath, options = WORKING_OPTIONS) => {
348
+ const empty = { patch: null, patchOmitted: false, binary: false };
349
+ const cache = await ensureDiffCache(cwd, options);
350
+ if (!cache)
351
+ return empty;
352
+ // O(1) lookup: the full diff pass that the per-file patch needs was already
353
+ // computed once for this (cwd, mode, base) and cached. This was the O(N²)
354
+ // regression — each per-file request re-ran the whole-tree diff + a jsdiff
355
+ // for every file. Now it's a map lookup.
356
+ if (cache.filePatchByPath.has(requestedPath)) {
357
+ return {
358
+ patch: cache.filePatchByPath.get(requestedPath) ?? null,
359
+ patchOmitted: cache.filePatchOmittedByPath.get(requestedPath) ?? false,
360
+ binary: cache.fileBinaryByPath.get(requestedPath) ?? false,
361
+ };
362
+ }
363
+ // An untracked path the cache didn't cover (created between the cache build
364
+ // and this request) falls back to synthesizing from the working tree.
365
+ return getGitDiffFilePatchFromWorkingTree(cwd, requestedPath);
366
+ };
367
+ const getGitDiffFilePatchFromWorkingTree = async (cwd, requestedPath) => {
368
+ const empty = { patch: null, patchOmitted: false, binary: false };
369
+ const absolutePath = path.join(cwd, requestedPath);
370
+ try {
371
+ const stat = fs.statSync(absolutePath);
372
+ if (!stat.isFile())
373
+ return empty;
374
+ const bytesToRead = Math.min(stat.size, GIT_MAX_UNTRACKED_FILE_BYTES);
375
+ const buffer = Buffer.alloc(bytesToRead);
376
+ const handle = fs.openSync(absolutePath, "r");
377
+ fs.readSync(handle, buffer, 0, bytesToRead, 0);
378
+ fs.closeSync(handle);
379
+ const sniffEnd = Math.min(buffer.length, GIT_BINARY_SNIFF_BYTES);
380
+ if (buffer.subarray(0, sniffEnd).includes(0)) {
381
+ return { patch: null, patchOmitted: false, binary: true };
382
+ }
383
+ const truncated = stat.size > GIT_MAX_UNTRACKED_FILE_BYTES;
384
+ const content = truncated ? null : buffer.toString("utf8");
385
+ const patch = truncated || content === null ? null : buildUntrackedPatch(content);
386
+ if (patch !== null && patch.length > GIT_MAX_PATCH_BYTES_PER_FILE) {
387
+ return { patch: null, patchOmitted: true, binary: false };
388
+ }
389
+ return { patch, patchOmitted: truncated, binary: false };
390
+ }
391
+ catch {
392
+ return empty;
393
+ }
394
+ };
395
+ //# sourceMappingURL=git-diff-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-diff-service.js","sourceRoot":"","sources":["../src/git-diff-service.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,9 @@
1
- import type { GitBranchInfo, GitBranchPr, GitBranchPrMergeable, GitBranchPrState, GitDiffFileListResponse, GitDiffFilePatch, GitDiffFileStatus, GitDiffMode, GitDiffResponse, GitDiffSummary } from "./types.js";
2
- export interface GitDiffOptions {
3
- mode: GitDiffMode;
4
- base?: string | null;
5
- }
6
- export declare const invalidateGitDiffCache: (cwd: string) => void;
7
- export declare const buildUntrackedPatch: (content: string) => string;
8
- export declare const splitPatchByFile: (raw: string) => string[];
9
- export interface NumstatEntry {
10
- path: string;
11
- oldPath: string | null;
12
- additions: number;
13
- deletions: number;
14
- binary: boolean;
15
- }
16
- export declare const parseNumstatZ: (raw: string) => NumstatEntry[];
17
- export declare const parseNameStatusZ: (raw: string) => Map<string, GitDiffFileStatus>;
18
- export declare const getGitDiffSummary: (cwd: string, options?: GitDiffOptions) => Promise<GitDiffSummary>;
19
- export declare const getGitDiff: (cwd: string, options?: GitDiffOptions) => Promise<GitDiffResponse>;
20
- export declare const getGitDiffFiles: (cwd: string, options?: GitDiffOptions) => Promise<GitDiffFileListResponse>;
21
- export declare const getGitDiffFilePatch: (cwd: string, requestedPath: string, options?: GitDiffOptions) => Promise<GitDiffFilePatch>;
22
- interface PrApiData {
23
- number: number;
24
- title: string;
25
- baseRefName: string;
26
- url: string | null;
27
- state: GitBranchPrState;
28
- isDraft: boolean;
29
- mergeable: GitBranchPrMergeable;
30
- headOwner: string | null;
31
- baseRepoFullName: string | null;
32
- mergedAt: string | null;
33
- }
34
- export interface PrFetcher {
35
- list(slug: string, branch: string, state: string, perPage: number): Promise<PrApiData[]>;
36
- }
37
- export declare const setPrFetcher: (fetcher: PrFetcher) => void;
38
- export declare const listGithubRemoteSlugs: (cwd: string) => Promise<string[]>;
39
- export declare const getGitBranchInfo: (cwd: string) => Promise<GitBranchInfo>;
40
- export declare const getGitBranchPr: (cwd: string) => Promise<GitBranchPr | null>;
41
- export {};
1
+ export { getGitBranchInfo } from "./git-branch-metadata.js";
2
+ export { invalidateGitDiffCache } from "./git-diff-cache.js";
3
+ export { buildUntrackedPatch, parseNameStatusZ, parseNumstatZ, splitPatchByFile, } from "./git-diff-parser.js";
4
+ export { getGitDiff, getGitDiffFilePatch, getGitDiffFiles, getGitDiffSummary, } from "./git-diff-service.js";
5
+ export { getGitBranchPr, listGithubRemoteSlugs, setPrFetcher } from "./github-pr.js";
6
+ export type { NumstatEntry } from "./git-diff-parser.js";
7
+ export type { GitDiffOptions } from "./git-diff-service.js";
8
+ export type { PrFetcher } from "./github-pr.js";
42
9
  //# sourceMappingURL=git-diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../src/git-diff.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAEhB,uBAAuB,EAEvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA8DD,eAAO,MAAM,sBAAsB,QAAS,MAAM,KAAG,IAEpD,CAAC;AAyMF,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,MAQrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,KAAG,MAAM,EAC8B,CAAC;AAEpF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,QAAS,MAAM,KAAG,YAAY,EAsBvD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,KAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAsB3E,CAAC;AAwQF,eAAO,MAAM,iBAAiB,QACvB,MAAM,YACF,cAAc,KACtB,OAAO,CAAC,cAAc,CAoDxB,CAAC;AAEF,eAAO,MAAM,UAAU,QAChB,MAAM,YACF,cAAc,KACtB,OAAO,CAAC,eAAe,CASzB,CAAC;AAcF,eAAO,MAAM,eAAe,QACrB,MAAM,YACF,cAAc,KACtB,OAAO,CAAC,uBAAuB,CAOjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,QACzB,MAAM,iBACI,MAAM,YACZ,cAAc,KACtB,OAAO,CAAC,gBAAgB,CAoB1B,CAAC;AAmCF,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,oBAAoB,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAuBD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CAC1F;AAkFD,eAAO,MAAM,YAAY,YAAa,SAAS,KAAG,IAEjD,CAAC;AA8JF,eAAO,MAAM,qBAAqB,QAAe,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAGzE,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAe,MAAM,KAAG,OAAO,CAAC,aAAa,CA0BzE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAe,MAAM,KAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAI5E,CAAC"}
1
+ {"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../src/git-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}