@monotykamary/localterm-server 2.0.5 → 2.1.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.
Files changed (40) hide show
  1. package/dist/constants.d.ts +1 -0
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +4 -0
  4. package/dist/constants.js.map +1 -1
  5. package/dist/git-diff.d.ts.map +1 -1
  6. package/dist/git-diff.js +288 -483
  7. package/dist/git-diff.js.map +1 -1
  8. package/dist/utils/run-git.d.ts +7 -0
  9. package/dist/utils/run-git.d.ts.map +1 -0
  10. package/dist/utils/run-git.js +44 -0
  11. package/dist/utils/run-git.js.map +1 -0
  12. package/package.json +1 -3
  13. package/dist/cdp/open-background-tab.d.ts +0 -33
  14. package/dist/cdp/open-background-tab.d.ts.map +0 -1
  15. package/dist/cdp/open-background-tab.js +0 -98
  16. package/dist/cdp/open-background-tab.js.map +0 -1
  17. package/dist/finding-store.d.ts +0 -21
  18. package/dist/finding-store.d.ts.map +0 -1
  19. package/dist/finding-store.js +0 -155
  20. package/dist/finding-store.js.map +0 -1
  21. package/dist/utils/compute-patch.d.ts +0 -7
  22. package/dist/utils/compute-patch.d.ts.map +0 -1
  23. package/dist/utils/compute-patch.js +0 -74
  24. package/dist/utils/compute-patch.js.map +0 -1
  25. package/dist/utils/parse-osc-finding.d.ts +0 -7
  26. package/dist/utils/parse-osc-finding.d.ts.map +0 -1
  27. package/dist/utils/parse-osc-finding.js +0 -55
  28. package/dist/utils/parse-osc-finding.js.map +0 -1
  29. package/dist/utils/reconcile-file-stats.d.ts +0 -7
  30. package/dist/utils/reconcile-file-stats.d.ts.map +0 -1
  31. package/dist/utils/reconcile-file-stats.js +0 -45
  32. package/dist/utils/reconcile-file-stats.js.map +0 -1
  33. package/dist/utils/resolve-cwd-for-pid.d.ts +0 -2
  34. package/dist/utils/resolve-cwd-for-pid.d.ts.map +0 -1
  35. package/dist/utils/resolve-cwd-for-pid.js +0 -29
  36. package/dist/utils/resolve-cwd-for-pid.js.map +0 -1
  37. package/dist/utils/rewrite-kitty-file-transmission.d.ts +0 -2
  38. package/dist/utils/rewrite-kitty-file-transmission.d.ts.map +0 -1
  39. package/dist/utils/rewrite-kitty-file-transmission.js +0 -147
  40. package/dist/utils/rewrite-kitty-file-transmission.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"compute-patch.js","sourceRoot":"","sources":["../../src/utils/compute-patch.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export interface ParsedFinding {
2
- severity: "info" | "warn" | "error" | "clear";
3
- title: string;
4
- dedupKey: string | null;
5
- }
6
- export declare const parseOscFindingsFromChunk: (data: string) => ParsedFinding[];
7
- //# sourceMappingURL=parse-osc-finding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-osc-finding.d.ts","sourceRoot":"","sources":["../../src/utils/parse-osc-finding.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,KAAG,aAAa,EA2CrE,CAAC"}
@@ -1,55 +0,0 @@
1
- // OSC 7888 (localterm automation finding) format:
2
- // ESC ] 7888 ; automation-finding ; <severity> ; <title> [ ; <dedupKey> ] ST
3
- // where ST is either BEL (0x07) or ESC \ (0x1b 0x5c).
4
- //
5
- // severity is one of: info, warn, error, clear
6
- // title is a short human-readable summary (e.g. "Tests failing in src/utils")
7
- // dedupKey is optional; when absent the server synthesizes one from the title
8
- //
9
- // Emitted by automation commands to report structured findings back to the
10
- // server. Multiple findings can be emitted in one session. A severity of
11
- // "clear" signals that nothing is worth reporting (auto-resolves open findings).
12
- import { MAX_AUTOMATION_FINDING_TITLE_LENGTH } from "../constants.js";
13
- const OSC_FINDING_PREFIX = "\x1b]7888;automation-finding;";
14
- const BEL = "\x07";
15
- const ST = "\x1b\\";
16
- const VALID_SEVERITIES = new Set(["info", "warn", "error", "clear"]);
17
- export const parseOscFindingsFromChunk = (data) => {
18
- const findings = [];
19
- let searchFrom = 0;
20
- while (searchFrom < data.length) {
21
- const start = data.indexOf(OSC_FINDING_PREFIX, searchFrom);
22
- if (start === -1)
23
- break;
24
- const payloadStart = start + OSC_FINDING_PREFIX.length;
25
- const belIndex = data.indexOf(BEL, payloadStart);
26
- const stIndex = data.indexOf(ST, payloadStart);
27
- let payloadEnd;
28
- if (belIndex !== -1 && (stIndex === -1 || belIndex < stIndex)) {
29
- payloadEnd = belIndex;
30
- }
31
- else if (stIndex !== -1) {
32
- payloadEnd = stIndex;
33
- }
34
- else {
35
- break;
36
- }
37
- const payload = data.slice(payloadStart, payloadEnd);
38
- const parts = payload.split(";");
39
- const severity = parts[0];
40
- const title = parts.slice(1, -1).join(";") || parts[1] || "";
41
- const dedupKey = parts.length >= 3 ? parts[parts.length - 1] : null;
42
- if (VALID_SEVERITIES.has(severity) &&
43
- title.length > 0 &&
44
- title.length <= MAX_AUTOMATION_FINDING_TITLE_LENGTH) {
45
- findings.push({
46
- severity: severity,
47
- title,
48
- dedupKey,
49
- });
50
- }
51
- searchFrom = payloadEnd + 1;
52
- }
53
- return findings;
54
- };
55
- //# sourceMappingURL=parse-osc-finding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-osc-finding.js","sourceRoot":"","sources":["../../src/utils/parse-osc-finding.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,+EAA+E;AAC/E,sDAAsD;AACtD,EAAE;AACF,+CAA+C;AAC/C,8EAA8E;AAC9E,8EAA8E;AAC9E,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,iFAAiF;AAEjF,OAAO,EAAE,mCAAmC,EAAE,MAAM,iBAAiB,CAAC;AAEtE,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAC3D,MAAM,GAAG,GAAG,MAAM,CAAC;AACnB,MAAM,EAAE,GAAG,QAAQ,CAAC;AAEpB,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAQrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAmB,EAAE;IACzE,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,MAAM;QAExB,MAAM,YAAY,GAAG,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAE/C,IAAI,UAAkB,CAAC;QACvB,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;YAC9D,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1B,UAAU,GAAG,OAAO,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpE,IACE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,KAAK,CAAC,MAAM,IAAI,mCAAmC,EACnD,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,QAAqC;gBAC/C,KAAK;gBACL,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAED,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- export interface FileAddDel {
2
- additions: number;
3
- deletions: number;
4
- binary: boolean;
5
- }
6
- export declare const reconcileFileStats: <T extends FileAddDel>(files: T[], totalInsertions: number, totalDeletions: number) => void;
7
- //# sourceMappingURL=reconcile-file-stats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-file-stats.d.ts","sourceRoot":"","sources":["../../src/utils/reconcile-file-stats.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,UAAU,EACrD,OAAO,CAAC,EAAE,EACV,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,KACrB,IA+BF,CAAC"}
@@ -1,45 +0,0 @@
1
- // Reconcile per-file +/- counts toward the authoritative aggregate from
2
- // git's diff.stats(). jsdiff's per-file patch counts (computePatchFromContents)
3
- // drift from git's totals on trailing-newline / line-ending edge cases, and the
4
- // drift accumulates across a large diff — so nudge each file ±1 toward the
5
- // aggregate until they match. Per-file counts must never go negative (the wire
6
- // schema rejects them), so a surplus (per-file sum exceeds the aggregate) is
7
- // only taken from files that have room; any leftover remainder is left
8
- // unreconciled rather than producing a negative count.
9
- export const reconcileFileStats = (files, totalInsertions, totalDeletions) => {
10
- let computedAdds = 0;
11
- let computedDels = 0;
12
- for (const file of files) {
13
- if (file.binary)
14
- continue;
15
- computedAdds += file.additions;
16
- computedDels += file.deletions;
17
- }
18
- let remainingAdd = totalInsertions - computedAdds;
19
- let remainingDel = totalDeletions - computedDels;
20
- if (remainingAdd === 0 && remainingDel === 0)
21
- return;
22
- for (const file of files) {
23
- if (file.binary)
24
- continue;
25
- if (remainingAdd > 0) {
26
- file.additions += 1;
27
- remainingAdd -= 1;
28
- }
29
- else if (remainingAdd < 0 && file.additions > 0) {
30
- file.additions -= 1;
31
- remainingAdd += 1;
32
- }
33
- if (remainingDel > 0) {
34
- file.deletions += 1;
35
- remainingDel -= 1;
36
- }
37
- else if (remainingDel < 0 && file.deletions > 0) {
38
- file.deletions -= 1;
39
- remainingDel += 1;
40
- }
41
- if (remainingAdd === 0 && remainingDel === 0)
42
- break;
43
- }
44
- };
45
- //# sourceMappingURL=reconcile-file-stats.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-file-stats.js","sourceRoot":"","sources":["../../src/utils/reconcile-file-stats.ts"],"names":[],"mappings":"AAMA,wEAAwE;AACxE,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,+EAA+E;AAC/E,6EAA6E;AAC7E,uEAAuE;AACvE,uDAAuD;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAU,EACV,eAAuB,EACvB,cAAsB,EAChB,EAAE;IACR,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM;YAAE,SAAS;QAC1B,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC;QAC/B,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;IAClD,IAAI,YAAY,GAAG,cAAc,GAAG,YAAY,CAAC;IACjD,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO;IAErD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM;YAAE,SAAS;QAC1B,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,YAAY,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,YAAY,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,YAAY,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,YAAY,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC;YAAE,MAAM;IACtD,CAAC;AACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const resolveCwdForPid: (pid: number) => Promise<string | null>;
2
- //# sourceMappingURL=resolve-cwd-for-pid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-cwd-for-pid.d.ts","sourceRoot":"","sources":["../../src/utils/resolve-cwd-for-pid.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAuBzE,CAAC"}
@@ -1,29 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { readlink } from "node:fs/promises";
3
- import { promisify } from "node:util";
4
- import { CWD_RESOLVE_TIMEOUT_MS } from "../constants.js";
5
- const execFileAsync = promisify(execFile);
6
- export const resolveCwdForPid = async (pid) => {
7
- if (!Number.isFinite(pid) || pid <= 0)
8
- return null;
9
- if (process.platform === "linux") {
10
- try {
11
- return await readlink(`/proc/${pid}/cwd`);
12
- }
13
- catch {
14
- return null;
15
- }
16
- }
17
- if (process.platform === "darwin") {
18
- try {
19
- const { stdout } = await execFileAsync("lsof", ["-a", "-p", String(pid), "-d", "cwd", "-Fn"], { timeout: CWD_RESOLVE_TIMEOUT_MS, windowsHide: true });
20
- const cwdLine = stdout.split("\n").find((line) => line.startsWith("n"));
21
- return cwdLine ? cwdLine.slice(1) : null;
22
- }
23
- catch {
24
- return null;
25
- }
26
- }
27
- return null;
28
- };
29
- //# sourceMappingURL=resolve-cwd-for-pid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-cwd-for-pid.js","sourceRoot":"","sources":["../../src/utils/resolve-cwd-for-pid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;IAC5E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CACpC,MAAM,EACN,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAC7C,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,IAAI,EAAE,CACvD,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACxE,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const createKittyFileRewriter: () => ((data: string) => string);
2
- //# sourceMappingURL=rewrite-kitty-file-transmission.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rewrite-kitty-file-transmission.d.ts","sourceRoot":"","sources":["../../src/utils/rewrite-kitty-file-transmission.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,uBAAuB,QAAO,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CA+DnE,CAAC"}
@@ -1,147 +0,0 @@
1
- import { readFileSync, statSync } from "node:fs";
2
- const MAX_CHUNK_BYTES = 4096;
3
- const MAX_FILE_SIZE_BYTES = 32 * 1024 * 1024;
4
- export const createKittyFileRewriter = () => {
5
- let state = { type: "passthrough" };
6
- return (data) => {
7
- const input = Buffer.from(data, "binary");
8
- const out = [];
9
- let index = 0;
10
- while (index < input.length) {
11
- switch (state.type) {
12
- case "passthrough": {
13
- if (input[index] === 0x1b &&
14
- index + 2 < input.length &&
15
- input[index + 1] === 0x5f &&
16
- input[index + 2] === 0x47) {
17
- state = { type: "in_apc", controlData: [] };
18
- index += 3;
19
- }
20
- else {
21
- out.push(input[index]);
22
- index += 1;
23
- }
24
- break;
25
- }
26
- case "in_apc": {
27
- if (input[index] === 0x3b) {
28
- state = { type: "in_payload", controlData: state.controlData, payload: [] };
29
- index += 1;
30
- }
31
- else if (input[index] === 0x1b &&
32
- index + 1 < input.length &&
33
- input[index + 1] === 0x5c) {
34
- const rewritten = rewriteIfFileTransmission(state.controlData, []);
35
- pushAll(out, rewritten);
36
- state = { type: "passthrough" };
37
- index += 2;
38
- }
39
- else {
40
- state.controlData.push(input[index]);
41
- index += 1;
42
- }
43
- break;
44
- }
45
- case "in_payload": {
46
- if (input[index] === 0x1b && index + 1 < input.length && input[index + 1] === 0x5c) {
47
- const rewritten = rewriteIfFileTransmission(state.controlData, state.payload);
48
- pushAll(out, rewritten);
49
- state = { type: "passthrough" };
50
- index += 2;
51
- }
52
- else {
53
- state.payload.push(input[index]);
54
- index += 1;
55
- }
56
- break;
57
- }
58
- }
59
- }
60
- return Buffer.from(out).toString("binary");
61
- };
62
- };
63
- const pushAll = (out, str) => {
64
- for (let index = 0; index < str.length; index++) {
65
- out.push(str.charCodeAt(index));
66
- }
67
- };
68
- const rewriteIfFileTransmission = (controlData, payload) => {
69
- const controlStr = String.fromCharCode(...controlData);
70
- const payloadStr = String.fromCharCode(...payload);
71
- if (!hasFileTransmission(controlStr)) {
72
- const separator = payloadStr ? ";" : "";
73
- return `\x1b_G${controlStr}${separator}${payloadStr}\x1b\\`;
74
- }
75
- if (!payloadStr) {
76
- const imageId = extractValue(controlStr, "i") ?? "0";
77
- return `\x1b_Gi=${imageId};EINVAL:empty file path\x1b\\`;
78
- }
79
- const filePath = decodeKittyBase64(payloadStr);
80
- if (!filePath) {
81
- const imageId = extractValue(controlStr, "i") ?? "0";
82
- return `\x1b_Gi=${imageId};EINVAL:invalid base64 file path\x1b\\`;
83
- }
84
- let fileData;
85
- try {
86
- const fileStat = statSync(filePath);
87
- if (fileStat.size > MAX_FILE_SIZE_BYTES) {
88
- const imageId = extractValue(controlStr, "i") ?? "0";
89
- return `\x1b_Gi=${imageId};EINVAL:file too large\x1b\\`;
90
- }
91
- fileData = readFileSync(filePath);
92
- }
93
- catch {
94
- const imageId = extractValue(controlStr, "i") ?? "0";
95
- return `\x1b_Gi=${imageId};EINVAL:cannot read file\x1b\\`;
96
- }
97
- const newControl = controlStr.replace(/t=f/g, "t=d");
98
- const base64Data = fileData
99
- .toString("base64")
100
- .replace(/\+/g, "-")
101
- .replace(/\//g, "_")
102
- .replace(/=+$/, "");
103
- const chunks = [];
104
- for (let offset = 0; offset < base64Data.length; offset += MAX_CHUNK_BYTES) {
105
- chunks.push(base64Data.slice(offset, offset + MAX_CHUNK_BYTES));
106
- }
107
- if (chunks.length <= 1) {
108
- const chunk = chunks[0] ?? "";
109
- return `\x1b_G${newControl},m=0;${chunk}\x1b\\`;
110
- }
111
- const parts = [];
112
- for (let chunkIndex = 0; chunkIndex < chunks.length; chunkIndex++) {
113
- const isFirst = chunkIndex === 0;
114
- const isLast = chunkIndex === chunks.length - 1;
115
- const chunkControl = isFirst ? `${newControl},m=1` : isLast ? "m=0" : "m=1";
116
- parts.push(`\x1b_G${chunkControl};${chunks[chunkIndex]}\x1b\\`);
117
- }
118
- return parts.join("");
119
- };
120
- const decodeKittyBase64 = (encoded) => {
121
- try {
122
- const standard = encoded.replace(/-/g, "+").replace(/_/g, "/");
123
- return Buffer.from(standard, "base64").toString("utf8");
124
- }
125
- catch {
126
- return null;
127
- }
128
- };
129
- const hasFileTransmission = (controlStr) => {
130
- for (const pair of controlStr.split(",")) {
131
- const eqIndex = pair.indexOf("=");
132
- if (eqIndex !== -1 && pair.slice(0, eqIndex) === "t" && pair.slice(eqIndex + 1) === "f") {
133
- return true;
134
- }
135
- }
136
- return false;
137
- };
138
- const extractValue = (controlStr, key) => {
139
- for (const pair of controlStr.split(",")) {
140
- const eqIndex = pair.indexOf("=");
141
- if (eqIndex !== -1 && pair.slice(0, eqIndex) === key) {
142
- return pair.slice(eqIndex + 1);
143
- }
144
- }
145
- return undefined;
146
- };
147
- //# sourceMappingURL=rewrite-kitty-file-transmission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rewrite-kitty-file-transmission.js","sourceRoot":"","sources":["../../src/utils/rewrite-kitty-file-transmission.ts"],"names":[],"mappings":"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"}