@simonepri/refined-antigravity-acp 0.1.0 → 0.1.2
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/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +56 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/index.server.d.ts +4 -0
- package/dist/index.server.d.ts.map +1 -0
- package/dist/index.server.js +7 -0
- package/dist/index.server.js.map +1 -0
- package/dist/src/agy-patch.d.ts +65 -0
- package/dist/src/agy-patch.d.ts.map +1 -0
- package/dist/src/agy-patch.js +351 -0
- package/dist/src/agy-patch.js.map +1 -0
- package/dist/src/auth.d.ts +27 -0
- package/dist/src/auth.d.ts.map +1 -0
- package/dist/src/auth.js +113 -0
- package/dist/src/auth.js.map +1 -0
- package/dist/src/command.d.ts +5 -0
- package/dist/src/command.d.ts.map +1 -0
- package/dist/src/command.js +74 -0
- package/dist/src/command.js.map +1 -0
- package/dist/src/connector.d.ts +188 -0
- package/dist/src/connector.d.ts.map +1 -0
- package/dist/src/connector.js +1138 -0
- package/dist/src/connector.js.map +1 -0
- package/dist/src/history.d.ts +12 -0
- package/dist/src/history.d.ts.map +1 -0
- package/dist/src/history.js +152 -0
- package/dist/src/history.js.map +1 -0
- package/dist/src/mcp-proxy.d.ts +83 -0
- package/dist/src/mcp-proxy.d.ts.map +1 -0
- package/dist/src/mcp-proxy.js +308 -0
- package/dist/src/mcp-proxy.js.map +1 -0
- package/dist/src/provider.d.ts +11 -0
- package/dist/src/provider.d.ts.map +1 -0
- package/dist/src/provider.js +31 -0
- package/dist/src/provider.js.map +1 -0
- package/dist/src/sanitize.d.ts +29 -0
- package/dist/src/sanitize.d.ts.map +1 -0
- package/dist/src/sanitize.js +237 -0
- package/dist/src/sanitize.js.map +1 -0
- package/dist/src/skills.d.ts +17 -0
- package/dist/src/skills.d.ts.map +1 -0
- package/dist/src/skills.js +140 -0
- package/dist/src/skills.js.map +1 -0
- package/dist/src/steering.d.ts +30 -0
- package/dist/src/steering.d.ts.map +1 -0
- package/dist/src/steering.js +174 -0
- package/dist/src/steering.js.map +1 -0
- package/package.json +20 -13
- package/paseo-plugin.json +0 -1
- package/readme.md +3 -5
- package/.fallowrc.json +0 -11
- package/.github/workflows/ci.yml +0 -24
- package/.github/workflows/release.yml +0 -41
- package/.oxlintignore +0 -2
- package/.oxlintrc.json +0 -152
- package/.release-please-manifest.json +0 -3
- package/bin/cli.ts +0 -58
- package/index.server.ts +0 -9
- package/pnpm-workspace.yaml +0 -44
- package/release-please-config.json +0 -13
- package/server/agy-patch.test.ts +0 -445
- package/server/agy-patch.ts +0 -445
- package/server/auth.test.ts +0 -51
- package/server/auth.ts +0 -122
- package/server/command.test.ts +0 -18
- package/server/command.ts +0 -92
- package/server/connector.test.ts +0 -1136
- package/server/connector.ts +0 -1386
- package/server/history.test.ts +0 -139
- package/server/history.ts +0 -157
- package/server/mcp-proxy.test.ts +0 -368
- package/server/mcp-proxy.ts +0 -375
- package/server/provider.test.ts +0 -11
- package/server/provider.ts +0 -37
- package/server/sanitize.test.ts +0 -174
- package/server/sanitize.ts +0 -286
- package/server/skills.test.ts +0 -121
- package/server/skills.ts +0 -183
- package/server/steering.test.ts +0 -405
- package/server/steering.ts +0 -199
- package/tsconfig.json +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":""}
|
package/dist/bin/cli.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import readline from "node:readline";
|
|
3
|
+
import { createAntigravityConnector } from "../src/connector.js";
|
|
4
|
+
async function main() {
|
|
5
|
+
const connector = createAntigravityConnector();
|
|
6
|
+
const stream = await connector();
|
|
7
|
+
const reader = stream.readable.getReader();
|
|
8
|
+
(async () => {
|
|
9
|
+
try {
|
|
10
|
+
while (true) {
|
|
11
|
+
const { done, value } = await reader.read();
|
|
12
|
+
if (done)
|
|
13
|
+
break;
|
|
14
|
+
process.stdout.write(JSON.stringify(value) + "\n");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
console.error("[refined-antigravity-acp] Stdio readable stream error:", err);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
})();
|
|
22
|
+
const writer = stream.writable.getWriter();
|
|
23
|
+
const rl = readline.createInterface({
|
|
24
|
+
input: process.stdin,
|
|
25
|
+
terminal: false,
|
|
26
|
+
});
|
|
27
|
+
rl.on("line", (line) => {
|
|
28
|
+
const trimmed = line.trim();
|
|
29
|
+
if (!trimmed)
|
|
30
|
+
return;
|
|
31
|
+
try {
|
|
32
|
+
const msg = JSON.parse(trimmed);
|
|
33
|
+
writer.write(msg).catch((err) => {
|
|
34
|
+
console.error("[refined-antigravity-acp] Failed to forward ACP message:", err);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Drop malformed input line
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
rl.on("close", async () => {
|
|
42
|
+
try {
|
|
43
|
+
await writer.close();
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Writer may already be closed
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
process.on("SIGINT", () => process.exit(0));
|
|
50
|
+
process.on("SIGTERM", () => process.exit(0));
|
|
51
|
+
}
|
|
52
|
+
main().catch((err) => {
|
|
53
|
+
console.error("[refined-antigravity-acp] Fatal error:", err);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,0BAA0B,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC3C,CAAC,KAAK,IAAI,EAAE;QACV,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,GAAG,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../index.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,mBAAmB,cAG7D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createAntigravityProvider } from "./src/provider.js";
|
|
2
|
+
export { createAntigravityProvider } from "./src/provider.js";
|
|
3
|
+
export default function contribute(server) {
|
|
4
|
+
server.registerProvider(createAntigravityProvider());
|
|
5
|
+
return () => { };
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=index.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.server.js","sourceRoot":"","sources":["../index.server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAA2B;IAC5D,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,CAAC,CAAC;IACrD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export declare const EVENT_PROCESSOR_ENTRY = "google3/third_party/py/google/antigravity/connections/local/event_processor.py";
|
|
2
|
+
export declare const PYCACHE_PREFIX = "google3/third_party/py/google/antigravity/connections/local/__pycache__/event_processor.";
|
|
3
|
+
export declare const ZIP_EOCD_MAGIC = 101010256;
|
|
4
|
+
export declare const ZIP_CD_MAGIC = 33639248;
|
|
5
|
+
export declare const ZIP_LOCAL_MAGIC = 67324752;
|
|
6
|
+
export declare const ORIGINAL_ANCHOR = " elif (\n tsu.state\n == localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE\n ):";
|
|
7
|
+
export declare const REPLACEMENT_CODE = " elif tsu.state in (\n localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE,\n localharness_pb2.TrajectoryStateUpdate.State.STATE_WAITING_FOR_TASKS,\n ):";
|
|
8
|
+
export declare const PROMPT_ANCHOR = "elif (\n tsu.state\n == localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE):";
|
|
9
|
+
export declare const PROMPT_REPLACEMENT = " elif tsu.state in (\n localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE,\n localharness_pb2.TrajectoryStateUpdate.State.STATE_WAITING_FOR_TASKS,\n ):";
|
|
10
|
+
export type PatchClassification = "patchable" | "already-fixed" | "unrecognized" | "entry-missing";
|
|
11
|
+
export interface ZipEntryInfo {
|
|
12
|
+
name: string;
|
|
13
|
+
method: number;
|
|
14
|
+
crc32: number;
|
|
15
|
+
compSize: number;
|
|
16
|
+
uncompSize: number;
|
|
17
|
+
localHeaderOffset: number;
|
|
18
|
+
cdEntryOffset: number;
|
|
19
|
+
nameLength: number;
|
|
20
|
+
extraLength: number;
|
|
21
|
+
commentLength: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ZipArchiveInfo {
|
|
24
|
+
eocdOffset: number;
|
|
25
|
+
cdOffset: number;
|
|
26
|
+
cdSize: number;
|
|
27
|
+
cdStart: number;
|
|
28
|
+
baseOffset: number;
|
|
29
|
+
entries: Map<string, ZipEntryInfo>;
|
|
30
|
+
}
|
|
31
|
+
export interface PatchOptions {
|
|
32
|
+
cacheBaseDir?: string;
|
|
33
|
+
force?: boolean;
|
|
34
|
+
skipSign?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface PatchResult {
|
|
37
|
+
path: string;
|
|
38
|
+
patched: boolean;
|
|
39
|
+
classification: PatchClassification;
|
|
40
|
+
cached: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function findEocd(buf: Buffer): number;
|
|
43
|
+
export declare function parseZipArchive(buf: Buffer): ZipArchiveInfo | null;
|
|
44
|
+
export declare function getEntryData(buf: Buffer, zip: ZipArchiveInfo, entry: ZipEntryInfo): Buffer | null;
|
|
45
|
+
export declare function findAnchorAndReplacement(text: string): {
|
|
46
|
+
anchor: string;
|
|
47
|
+
replacement: string;
|
|
48
|
+
} | null;
|
|
49
|
+
export declare function shortenDecorativeComments(text: string, delta: number): string | null;
|
|
50
|
+
export declare function patchEventProcessorContent(content: string): string | null;
|
|
51
|
+
export declare function classifyBuffer(buf: Buffer): PatchClassification;
|
|
52
|
+
export declare function classifyBinary(filePath: string): PatchClassification;
|
|
53
|
+
export declare function patchBuffer(buf: Buffer): {
|
|
54
|
+
patched: boolean;
|
|
55
|
+
classification: PatchClassification;
|
|
56
|
+
};
|
|
57
|
+
export declare function getCacheKey(realpath: string, stat?: {
|
|
58
|
+
size: number;
|
|
59
|
+
mtimeMs: number;
|
|
60
|
+
}): string;
|
|
61
|
+
export declare function getCacheBaseDir(customDir?: string): string;
|
|
62
|
+
export declare function gcCache(baseDir: string, currentKey?: string): void;
|
|
63
|
+
export declare function patchBinary(srcPath: string, options?: PatchOptions): PatchResult;
|
|
64
|
+
export declare function ensurePatchedBinary(srcPath: string, options?: PatchOptions): string;
|
|
65
|
+
//# sourceMappingURL=agy-patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agy-patch.d.ts","sourceRoot":"","sources":["../../src/agy-patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import zlib from "node:zlib";
|
|
6
|
+
import { execFileSync } from "node:child_process";
|
|
7
|
+
export const EVENT_PROCESSOR_ENTRY = "google3/third_party/py/google/antigravity/connections/local/event_processor.py";
|
|
8
|
+
export const PYCACHE_PREFIX = "google3/third_party/py/google/antigravity/connections/local/__pycache__/event_processor.";
|
|
9
|
+
export const ZIP_EOCD_MAGIC = 0x06054b50;
|
|
10
|
+
export const ZIP_CD_MAGIC = 0x02014b50;
|
|
11
|
+
export const ZIP_LOCAL_MAGIC = 0x04034b50;
|
|
12
|
+
export const ORIGINAL_ANCHOR = ` elif (
|
|
13
|
+
tsu.state
|
|
14
|
+
== localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE
|
|
15
|
+
):`;
|
|
16
|
+
export const REPLACEMENT_CODE = ` elif tsu.state in (
|
|
17
|
+
localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE,
|
|
18
|
+
localharness_pb2.TrajectoryStateUpdate.State.STATE_WAITING_FOR_TASKS,
|
|
19
|
+
):`;
|
|
20
|
+
export const PROMPT_ANCHOR = `elif (
|
|
21
|
+
tsu.state
|
|
22
|
+
== localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE):`;
|
|
23
|
+
export const PROMPT_REPLACEMENT = ` elif tsu.state in (
|
|
24
|
+
localharness_pb2.TrajectoryStateUpdate.State.STATE_FULLY_IDLE,
|
|
25
|
+
localharness_pb2.TrajectoryStateUpdate.State.STATE_WAITING_FOR_TASKS,
|
|
26
|
+
):`;
|
|
27
|
+
function isValidEocd(buf, pos) {
|
|
28
|
+
if (pos + 22 > buf.length)
|
|
29
|
+
return false;
|
|
30
|
+
const cdSize = buf.readUInt32LE(pos + 12);
|
|
31
|
+
const cdStart = pos - cdSize;
|
|
32
|
+
if (cdStart < 0)
|
|
33
|
+
return false;
|
|
34
|
+
if (cdSize === 0)
|
|
35
|
+
return true;
|
|
36
|
+
if (cdStart + 4 > buf.length)
|
|
37
|
+
return false;
|
|
38
|
+
return buf.readUInt32LE(cdStart) === ZIP_CD_MAGIC;
|
|
39
|
+
}
|
|
40
|
+
export function findEocd(buf) {
|
|
41
|
+
if (buf.length < 22)
|
|
42
|
+
return -1;
|
|
43
|
+
const signature = Buffer.from([0x50, 0x4b, 0x05, 0x06]);
|
|
44
|
+
let pos = buf.length - 22;
|
|
45
|
+
while (pos >= 0) {
|
|
46
|
+
pos = buf.lastIndexOf(signature, pos);
|
|
47
|
+
if (pos === -1)
|
|
48
|
+
return -1;
|
|
49
|
+
if (isValidEocd(buf, pos))
|
|
50
|
+
return pos;
|
|
51
|
+
pos -= 1;
|
|
52
|
+
}
|
|
53
|
+
return -1;
|
|
54
|
+
}
|
|
55
|
+
function parseCdEntries(buf, cdStart, cdSize) {
|
|
56
|
+
const entries = new Map();
|
|
57
|
+
let pos = cdStart;
|
|
58
|
+
const cdEnd = cdStart + cdSize;
|
|
59
|
+
while (pos + 46 <= cdEnd) {
|
|
60
|
+
if (buf.readUInt32LE(pos) !== ZIP_CD_MAGIC)
|
|
61
|
+
break;
|
|
62
|
+
const method = buf.readUInt16LE(pos + 10);
|
|
63
|
+
const crc32 = buf.readUInt32LE(pos + 16);
|
|
64
|
+
const compSize = buf.readUInt32LE(pos + 20);
|
|
65
|
+
const uncompSize = buf.readUInt32LE(pos + 24);
|
|
66
|
+
const nameLength = buf.readUInt16LE(pos + 28);
|
|
67
|
+
const extraLength = buf.readUInt16LE(pos + 30);
|
|
68
|
+
const commentLength = buf.readUInt16LE(pos + 32);
|
|
69
|
+
const localHeaderOffset = buf.readUInt32LE(pos + 42);
|
|
70
|
+
const nameStart = pos + 46;
|
|
71
|
+
const nameEnd = nameStart + nameLength;
|
|
72
|
+
if (nameEnd > cdEnd)
|
|
73
|
+
break;
|
|
74
|
+
const name = buf.toString("utf8", nameStart, nameEnd);
|
|
75
|
+
entries.set(name, {
|
|
76
|
+
name,
|
|
77
|
+
method,
|
|
78
|
+
crc32,
|
|
79
|
+
compSize,
|
|
80
|
+
uncompSize,
|
|
81
|
+
localHeaderOffset,
|
|
82
|
+
cdEntryOffset: pos,
|
|
83
|
+
nameLength,
|
|
84
|
+
extraLength,
|
|
85
|
+
commentLength,
|
|
86
|
+
});
|
|
87
|
+
pos += 46 + nameLength + extraLength + commentLength;
|
|
88
|
+
}
|
|
89
|
+
return entries;
|
|
90
|
+
}
|
|
91
|
+
export function parseZipArchive(buf) {
|
|
92
|
+
const eocdOffset = findEocd(buf);
|
|
93
|
+
if (eocdOffset < 0)
|
|
94
|
+
return null;
|
|
95
|
+
const cdSize = buf.readUInt32LE(eocdOffset + 12);
|
|
96
|
+
const cdOffset = buf.readUInt32LE(eocdOffset + 16);
|
|
97
|
+
const cdStart = eocdOffset - cdSize;
|
|
98
|
+
const baseOffset = cdStart - cdOffset;
|
|
99
|
+
const entries = parseCdEntries(buf, cdStart, cdSize);
|
|
100
|
+
return {
|
|
101
|
+
eocdOffset,
|
|
102
|
+
cdOffset,
|
|
103
|
+
cdSize,
|
|
104
|
+
cdStart,
|
|
105
|
+
baseOffset,
|
|
106
|
+
entries,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export function getEntryData(buf, zip, entry) {
|
|
110
|
+
const absLocalHdr = zip.baseOffset + entry.localHeaderOffset;
|
|
111
|
+
if (absLocalHdr < 0 || absLocalHdr + 30 > buf.length)
|
|
112
|
+
return null;
|
|
113
|
+
if (buf.readUInt32LE(absLocalHdr) !== ZIP_LOCAL_MAGIC)
|
|
114
|
+
return null;
|
|
115
|
+
const localNameLen = buf.readUInt16LE(absLocalHdr + 26);
|
|
116
|
+
const localExtraLen = buf.readUInt16LE(absLocalHdr + 28);
|
|
117
|
+
const dataOffset = absLocalHdr + 30 + localNameLen + localExtraLen;
|
|
118
|
+
const dataEnd = dataOffset + entry.uncompSize;
|
|
119
|
+
if (dataEnd > buf.length)
|
|
120
|
+
return null;
|
|
121
|
+
return buf.subarray(dataOffset, dataEnd);
|
|
122
|
+
}
|
|
123
|
+
export function findAnchorAndReplacement(text) {
|
|
124
|
+
if (text.includes(ORIGINAL_ANCHOR)) {
|
|
125
|
+
return { anchor: ORIGINAL_ANCHOR, replacement: REPLACEMENT_CODE };
|
|
126
|
+
}
|
|
127
|
+
if (text.includes(PROMPT_ANCHOR)) {
|
|
128
|
+
return { anchor: PROMPT_ANCHOR, replacement: PROMPT_REPLACEMENT };
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
export function shortenDecorativeComments(text, delta) {
|
|
133
|
+
if (delta <= 0)
|
|
134
|
+
return text;
|
|
135
|
+
const matches = [...text.matchAll(/([ \t]*# -{20,})/g)];
|
|
136
|
+
if (matches.length === 0)
|
|
137
|
+
return null;
|
|
138
|
+
if (matches.length >= 2) {
|
|
139
|
+
const d1 = Math.ceil(delta / 2);
|
|
140
|
+
const d2 = Math.floor(delta / 2);
|
|
141
|
+
const m1 = matches[0];
|
|
142
|
+
const m2 = matches[1];
|
|
143
|
+
if (m1[0].length <= d1 + 5 || m2[0].length <= d2 + 5)
|
|
144
|
+
return null;
|
|
145
|
+
const s1 = m1[0].slice(0, m1[0].length - d1);
|
|
146
|
+
const s2 = m2[0].slice(0, m2[0].length - d2);
|
|
147
|
+
return (text.slice(0, m1.index) +
|
|
148
|
+
s1 +
|
|
149
|
+
text.slice(m1.index + m1[0].length, m2.index) +
|
|
150
|
+
s2 +
|
|
151
|
+
text.slice(m2.index + m2[0].length));
|
|
152
|
+
}
|
|
153
|
+
const m = matches[0];
|
|
154
|
+
if (m[0].length <= delta + 5)
|
|
155
|
+
return null;
|
|
156
|
+
const s = m[0].slice(0, m[0].length - delta);
|
|
157
|
+
return text.slice(0, m.index) + s + text.slice(m.index + m[0].length);
|
|
158
|
+
}
|
|
159
|
+
export function patchEventProcessorContent(content) {
|
|
160
|
+
const pair = findAnchorAndReplacement(content);
|
|
161
|
+
if (!pair)
|
|
162
|
+
return null;
|
|
163
|
+
const delta = Buffer.byteLength(pair.replacement, "utf8") - Buffer.byteLength(pair.anchor, "utf8");
|
|
164
|
+
const shortened = shortenDecorativeComments(content, delta);
|
|
165
|
+
if (!shortened)
|
|
166
|
+
return null;
|
|
167
|
+
const patched = shortened.replace(pair.anchor, pair.replacement);
|
|
168
|
+
if (Buffer.byteLength(patched, "utf8") !== Buffer.byteLength(content, "utf8")) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
return patched;
|
|
172
|
+
}
|
|
173
|
+
export function classifyBuffer(buf) {
|
|
174
|
+
const zip = parseZipArchive(buf);
|
|
175
|
+
if (!zip)
|
|
176
|
+
return "unrecognized";
|
|
177
|
+
const entry = zip.entries.get(EVENT_PROCESSOR_ENTRY);
|
|
178
|
+
if (!entry)
|
|
179
|
+
return "entry-missing";
|
|
180
|
+
if (entry.method !== 0)
|
|
181
|
+
return "unrecognized";
|
|
182
|
+
const data = getEntryData(buf, zip, entry);
|
|
183
|
+
if (!data)
|
|
184
|
+
return "unrecognized";
|
|
185
|
+
const text = data.toString("utf8");
|
|
186
|
+
if (text.includes("STATE_WAITING_FOR_TASKS")) {
|
|
187
|
+
return "already-fixed";
|
|
188
|
+
}
|
|
189
|
+
const pair = findAnchorAndReplacement(text);
|
|
190
|
+
if (!pair)
|
|
191
|
+
return "unrecognized";
|
|
192
|
+
const delta = Buffer.byteLength(pair.replacement, "utf8") - Buffer.byteLength(pair.anchor, "utf8");
|
|
193
|
+
const shortened = shortenDecorativeComments(text, delta);
|
|
194
|
+
if (!shortened)
|
|
195
|
+
return "unrecognized";
|
|
196
|
+
return "patchable";
|
|
197
|
+
}
|
|
198
|
+
export function classifyBinary(filePath) {
|
|
199
|
+
try {
|
|
200
|
+
const buf = fs.readFileSync(filePath);
|
|
201
|
+
return classifyBuffer(buf);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return "unrecognized";
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function renameSiblingPyc(buf, zip) {
|
|
208
|
+
for (const entry of zip.entries.values()) {
|
|
209
|
+
if (!entry.name.startsWith(PYCACHE_PREFIX) || !entry.name.endsWith(".pyc")) {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const cdExtPos = entry.cdEntryOffset + 46 + entry.nameLength - 4;
|
|
213
|
+
if (buf.subarray(cdExtPos, cdExtPos + 4).toString("utf8") === ".pyc") {
|
|
214
|
+
buf.write(".bak", cdExtPos, "utf8");
|
|
215
|
+
}
|
|
216
|
+
const localHdrPos = zip.baseOffset + entry.localHeaderOffset;
|
|
217
|
+
const localNameLen = buf.readUInt16LE(localHdrPos + 26);
|
|
218
|
+
const localExtPos = localHdrPos + 30 + localNameLen - 4;
|
|
219
|
+
if (buf.subarray(localExtPos, localExtPos + 4).toString("utf8") === ".pyc") {
|
|
220
|
+
buf.write(".bak", localExtPos, "utf8");
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
export function patchBuffer(buf) {
|
|
225
|
+
const classification = classifyBuffer(buf);
|
|
226
|
+
if (classification !== "patchable") {
|
|
227
|
+
return { patched: false, classification };
|
|
228
|
+
}
|
|
229
|
+
const zip = parseZipArchive(buf);
|
|
230
|
+
const entry = zip.entries.get(EVENT_PROCESSOR_ENTRY);
|
|
231
|
+
const data = getEntryData(buf, zip, entry);
|
|
232
|
+
const text = data.toString("utf8");
|
|
233
|
+
const patchedText = patchEventProcessorContent(text);
|
|
234
|
+
if (!patchedText) {
|
|
235
|
+
return { patched: false, classification: "unrecognized" };
|
|
236
|
+
}
|
|
237
|
+
const localHdrPos = zip.baseOffset + entry.localHeaderOffset;
|
|
238
|
+
const localNameLen = buf.readUInt16LE(localHdrPos + 26);
|
|
239
|
+
const localExtraLen = buf.readUInt16LE(localHdrPos + 28);
|
|
240
|
+
const dataOffset = localHdrPos + 30 + localNameLen + localExtraLen;
|
|
241
|
+
buf.write(patchedText, dataOffset, "utf8");
|
|
242
|
+
const newCrc = zlib.crc32(buf.subarray(dataOffset, dataOffset + entry.uncompSize));
|
|
243
|
+
buf.writeUInt32LE(newCrc, localHdrPos + 14);
|
|
244
|
+
buf.writeUInt32LE(newCrc, entry.cdEntryOffset + 16);
|
|
245
|
+
renameSiblingPyc(buf, zip);
|
|
246
|
+
return { patched: true, classification: "already-fixed" };
|
|
247
|
+
}
|
|
248
|
+
export function getCacheKey(realpath, stat) {
|
|
249
|
+
const s = stat ?? fs.statSync(realpath);
|
|
250
|
+
return crypto
|
|
251
|
+
.createHash("sha256")
|
|
252
|
+
.update(`${realpath}:${s.size}:${s.mtimeMs}`)
|
|
253
|
+
.digest("hex")
|
|
254
|
+
.slice(0, 32);
|
|
255
|
+
}
|
|
256
|
+
export function getCacheBaseDir(customDir) {
|
|
257
|
+
if (customDir)
|
|
258
|
+
return customDir;
|
|
259
|
+
const pluginData = process.env.PASEO_PLUGIN_DATA_DIR ?? path.join(os.homedir(), ".paseo", "plugin-data");
|
|
260
|
+
return path.join(pluginData, "antigravity", "bin");
|
|
261
|
+
}
|
|
262
|
+
function cloneFile(src, dst) {
|
|
263
|
+
try {
|
|
264
|
+
fs.copyFileSync(src, dst, fs.constants.COPYFILE_FICLONE);
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
fs.copyFileSync(src, dst);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function reSignBinary(dst) {
|
|
271
|
+
if (process.platform !== "darwin")
|
|
272
|
+
return;
|
|
273
|
+
try {
|
|
274
|
+
execFileSync("codesign", ["--force", "-s", "-", "--preserve-metadata=entitlements,flags", dst], { stdio: "ignore" });
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// Gracefully ignore codesign errors
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
export function gcCache(baseDir, currentKey) {
|
|
281
|
+
if (!fs.existsSync(baseDir))
|
|
282
|
+
return;
|
|
283
|
+
try {
|
|
284
|
+
const entries = fs.readdirSync(baseDir, { withFileTypes: true });
|
|
285
|
+
for (const entry of entries) {
|
|
286
|
+
if (!entry.isDirectory())
|
|
287
|
+
continue;
|
|
288
|
+
if (currentKey && entry.name === currentKey)
|
|
289
|
+
continue;
|
|
290
|
+
fs.rmSync(path.join(baseDir, entry.name), {
|
|
291
|
+
recursive: true,
|
|
292
|
+
force: true,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// Non-fatal if GC fails
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function resolveCacheTarget(srcPath, customBase) {
|
|
301
|
+
const realPath = fs.realpathSync(srcPath);
|
|
302
|
+
const stat = fs.statSync(realPath);
|
|
303
|
+
const key = getCacheKey(realPath, stat);
|
|
304
|
+
const cacheBase = getCacheBaseDir(customBase);
|
|
305
|
+
const cacheDir = path.join(cacheBase, key);
|
|
306
|
+
const dstPath = path.join(cacheDir, path.basename(realPath));
|
|
307
|
+
return { realPath, key, cacheBase, cacheDir, dstPath };
|
|
308
|
+
}
|
|
309
|
+
function cloneAndPatch(realPath, dstPath, cacheDir, skipSign) {
|
|
310
|
+
fs.mkdirSync(cacheDir, { recursive: true, mode: 0o755 });
|
|
311
|
+
const tempDst = `${dstPath}.tmp.${Date.now()}`;
|
|
312
|
+
cloneFile(realPath, tempDst);
|
|
313
|
+
fs.chmodSync(tempDst, 0o755);
|
|
314
|
+
const buf = fs.readFileSync(tempDst);
|
|
315
|
+
const patchRes = patchBuffer(buf);
|
|
316
|
+
if (!patchRes.patched) {
|
|
317
|
+
fs.rmSync(tempDst, { force: true });
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
fs.writeFileSync(tempDst, buf);
|
|
321
|
+
if (!skipSign) {
|
|
322
|
+
reSignBinary(tempDst);
|
|
323
|
+
}
|
|
324
|
+
fs.renameSync(tempDst, dstPath);
|
|
325
|
+
return true;
|
|
326
|
+
}
|
|
327
|
+
export function patchBinary(srcPath, options) {
|
|
328
|
+
if (process.env.PASEO_AGY_NO_PATCH === "1") {
|
|
329
|
+
return { path: srcPath, patched: false, classification: "unrecognized", cached: false };
|
|
330
|
+
}
|
|
331
|
+
const { realPath, key, cacheBase, cacheDir, dstPath } = resolveCacheTarget(srcPath, options?.cacheBaseDir);
|
|
332
|
+
if (!options?.force && fs.existsSync(dstPath)) {
|
|
333
|
+
gcCache(cacheBase, key);
|
|
334
|
+
return { path: dstPath, patched: false, classification: "already-fixed", cached: true };
|
|
335
|
+
}
|
|
336
|
+
const classification = classifyBinary(realPath);
|
|
337
|
+
if (classification !== "patchable") {
|
|
338
|
+
return { path: srcPath, patched: false, classification, cached: false };
|
|
339
|
+
}
|
|
340
|
+
const ok = cloneAndPatch(realPath, dstPath, cacheDir, options?.skipSign);
|
|
341
|
+
if (!ok) {
|
|
342
|
+
return { path: srcPath, patched: false, classification: "unrecognized", cached: false };
|
|
343
|
+
}
|
|
344
|
+
gcCache(cacheBase, key);
|
|
345
|
+
return { path: dstPath, patched: true, classification: "already-fixed", cached: false };
|
|
346
|
+
}
|
|
347
|
+
export function ensurePatchedBinary(srcPath, options) {
|
|
348
|
+
const res = patchBinary(srcPath, options);
|
|
349
|
+
return res.path;
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=agy-patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agy-patch.js","sourceRoot":"","sources":["../../src/agy-patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the path to the ACP token JSON file under the Gemini home directory.
|
|
3
|
+
*/
|
|
4
|
+
export declare function getAcpTokenPath(): string;
|
|
5
|
+
/**
|
|
6
|
+
* Checks if the local ACP token file contains an active refresh token.
|
|
7
|
+
*/
|
|
8
|
+
export declare function hasValidRefreshToken(tokenPath?: string): boolean;
|
|
9
|
+
export declare function readKeychainCredentials(): {
|
|
10
|
+
refreshToken: string;
|
|
11
|
+
clientId?: string;
|
|
12
|
+
} | null;
|
|
13
|
+
/**
|
|
14
|
+
* Writes an authorized_user credential blob to the ACP token path with mode 0600.
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeAcpTokenFile(tokenPath: string, refreshToken: string, clientId?: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Syncs credentials from the official `agy` CLI's Keychain entry (`antigravity`)
|
|
19
|
+
* into `~/.gemini/antigravity-acp/acp_token.json` if the token file is missing or invalid.
|
|
20
|
+
*/
|
|
21
|
+
export declare function syncAgyCredentials(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Ensures the user is authenticated with Antigravity before starting the ACP server.
|
|
24
|
+
* Throws an actionable error directing the user to run `agy` in their terminal.
|
|
25
|
+
*/
|
|
26
|
+
export declare function ensureAuthenticated(): void;
|
|
27
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,MAA0B,GAAG,OAAO,CAQnF;AAiBD,wBAAgB,uBAAuB,IAAI;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoB5F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAeN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAiB5C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAO1C"}
|