@agentex/agent 0.0.38 → 0.0.40

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 (120) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +47 -13
  3. package/dist/history/fs.d.ts.map +1 -1
  4. package/dist/history/fs.js +6 -12
  5. package/dist/history/fs.js.map +1 -1
  6. package/dist/providers/antigravity/codec.d.ts +4 -0
  7. package/dist/providers/antigravity/codec.d.ts.map +1 -0
  8. package/dist/providers/antigravity/codec.js +27 -0
  9. package/dist/providers/antigravity/codec.js.map +1 -0
  10. package/dist/providers/antigravity/connection.d.ts +100 -0
  11. package/dist/providers/antigravity/connection.d.ts.map +1 -0
  12. package/dist/providers/antigravity/connection.js +267 -0
  13. package/dist/providers/antigravity/connection.js.map +1 -0
  14. package/dist/providers/antigravity/discovery.d.ts +11 -0
  15. package/dist/providers/antigravity/discovery.d.ts.map +1 -0
  16. package/dist/providers/antigravity/discovery.js +92 -0
  17. package/dist/providers/antigravity/discovery.js.map +1 -0
  18. package/dist/providers/antigravity/execute.d.ts +9 -0
  19. package/dist/providers/antigravity/execute.d.ts.map +1 -0
  20. package/dist/providers/antigravity/execute.js +206 -0
  21. package/dist/providers/antigravity/execute.js.map +1 -0
  22. package/dist/providers/antigravity/index.d.ts +12 -0
  23. package/dist/providers/antigravity/index.d.ts.map +1 -0
  24. package/dist/providers/antigravity/index.js +46 -0
  25. package/dist/providers/antigravity/index.js.map +1 -0
  26. package/dist/providers/antigravity/parse.d.ts +114 -0
  27. package/dist/providers/antigravity/parse.d.ts.map +1 -0
  28. package/dist/providers/antigravity/parse.js +369 -0
  29. package/dist/providers/antigravity/parse.js.map +1 -0
  30. package/dist/providers/antigravity/probe.d.ts +3 -0
  31. package/dist/providers/antigravity/probe.d.ts.map +1 -0
  32. package/dist/providers/antigravity/probe.js +84 -0
  33. package/dist/providers/antigravity/probe.js.map +1 -0
  34. package/dist/providers/antigravity/runtime.d.ts +30 -0
  35. package/dist/providers/antigravity/runtime.d.ts.map +1 -0
  36. package/dist/providers/antigravity/runtime.js +69 -0
  37. package/dist/providers/antigravity/runtime.js.map +1 -0
  38. package/dist/providers/antigravity/session.d.ts +7 -0
  39. package/dist/providers/antigravity/session.d.ts.map +1 -0
  40. package/dist/providers/antigravity/session.js +317 -0
  41. package/dist/providers/antigravity/session.js.map +1 -0
  42. package/dist/providers/claude/attach.d.ts.map +1 -1
  43. package/dist/providers/claude/attach.js +4 -6
  44. package/dist/providers/claude/attach.js.map +1 -1
  45. package/dist/providers/claude/transcript.d.ts.map +1 -1
  46. package/dist/providers/claude/transcript.js +9 -20
  47. package/dist/providers/claude/transcript.js.map +1 -1
  48. package/dist/providers/codex/attach.d.ts.map +1 -1
  49. package/dist/providers/codex/attach.js +4 -0
  50. package/dist/providers/codex/attach.js.map +1 -1
  51. package/dist/providers/codex/history.d.ts.map +1 -1
  52. package/dist/providers/codex/history.js +11 -0
  53. package/dist/providers/codex/history.js.map +1 -1
  54. package/dist/providers/codex/transcript-normalize.d.ts +12 -3
  55. package/dist/providers/codex/transcript-normalize.d.ts.map +1 -1
  56. package/dist/providers/codex/transcript-normalize.js +87 -10
  57. package/dist/providers/codex/transcript-normalize.js.map +1 -1
  58. package/dist/providers/codex/transcript.d.ts.map +1 -1
  59. package/dist/providers/codex/transcript.js +5 -10
  60. package/dist/providers/codex/transcript.js.map +1 -1
  61. package/dist/providers/codex/usage-scanner.d.ts.map +1 -1
  62. package/dist/providers/codex/usage-scanner.js +4 -6
  63. package/dist/providers/codex/usage-scanner.js.map +1 -1
  64. package/dist/providers/gemini/index.d.ts.map +1 -1
  65. package/dist/providers/gemini/index.js +6 -0
  66. package/dist/providers/gemini/index.js.map +1 -1
  67. package/dist/registry.d.ts.map +1 -1
  68. package/dist/registry.js +2 -0
  69. package/dist/registry.js.map +1 -1
  70. package/dist/types.d.ts +6 -5
  71. package/dist/types.d.ts.map +1 -1
  72. package/dist/types.js.map +1 -1
  73. package/dist/utils/auth.d.ts +1 -1
  74. package/dist/utils/auth.d.ts.map +1 -1
  75. package/dist/utils/auth.js +79 -1
  76. package/dist/utils/auth.js.map +1 -1
  77. package/dist/utils/binary.d.ts.map +1 -1
  78. package/dist/utils/binary.js +10 -0
  79. package/dist/utils/binary.js.map +1 -1
  80. package/dist/utils/instructions.d.ts.map +1 -1
  81. package/dist/utils/instructions.js +12 -9
  82. package/dist/utils/instructions.js.map +1 -1
  83. package/dist/utils/jsonl-lines.d.ts +35 -0
  84. package/dist/utils/jsonl-lines.d.ts.map +1 -0
  85. package/dist/utils/jsonl-lines.js +61 -0
  86. package/dist/utils/jsonl-lines.js.map +1 -0
  87. package/dist/utils/runtime-homes.d.ts.map +1 -1
  88. package/dist/utils/runtime-homes.js +4 -0
  89. package/dist/utils/runtime-homes.js.map +1 -1
  90. package/dist/utils/skills.d.ts +3 -3
  91. package/dist/utils/skills.d.ts.map +1 -1
  92. package/dist/utils/skills.js +16 -2
  93. package/dist/utils/skills.js.map +1 -1
  94. package/package.json +3 -2
  95. package/src/history/fs.ts +6 -12
  96. package/src/providers/antigravity/codec.ts +29 -0
  97. package/src/providers/antigravity/connection.ts +304 -0
  98. package/src/providers/antigravity/discovery.ts +90 -0
  99. package/src/providers/antigravity/execute.ts +214 -0
  100. package/src/providers/antigravity/index.ts +48 -0
  101. package/src/providers/antigravity/parse.ts +439 -0
  102. package/src/providers/antigravity/probe.ts +89 -0
  103. package/src/providers/antigravity/runtime.ts +64 -0
  104. package/src/providers/antigravity/session.ts +359 -0
  105. package/src/providers/claude/attach.ts +4 -6
  106. package/src/providers/claude/transcript.ts +9 -22
  107. package/src/providers/codex/attach.ts +4 -0
  108. package/src/providers/codex/history.ts +11 -0
  109. package/src/providers/codex/transcript-normalize.ts +85 -10
  110. package/src/providers/codex/transcript.ts +5 -11
  111. package/src/providers/codex/usage-scanner.ts +4 -7
  112. package/src/providers/gemini/index.ts +6 -0
  113. package/src/registry.ts +2 -0
  114. package/src/types.ts +6 -5
  115. package/src/utils/auth.ts +82 -1
  116. package/src/utils/binary.ts +10 -0
  117. package/src/utils/instructions.ts +10 -9
  118. package/src/utils/jsonl-lines.ts +80 -0
  119. package/src/utils/runtime-homes.ts +4 -0
  120. package/src/utils/skills.ts +17 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../../src/providers/antigravity/probe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { AgentMode, ProviderConfig, ProviderRuntimeContext } from "../../types.js";
2
+ import { type ResolvedBinary } from "../../utils/binary.js";
3
+ /** Running `agy` with no arguments signs in through the browser. */
4
+ export declare const AGY_LOGIN_COMMAND = "agy";
5
+ export declare const AGY_SIGN_IN_MESSAGE = "Antigravity CLI is not signed in. Run `agy` once to sign in.";
6
+ export declare function findAgyBinary(ctx?: ProviderRuntimeContext): Promise<ResolvedBinary>;
7
+ /**
8
+ * The CLI's execution modes (`--mode`). `default` is request-review: file
9
+ * edits wait for approval, which headless runs settle by policy. Shell
10
+ * commands follow the permission rules in every mode.
11
+ */
12
+ export declare const ANTIGRAVITY_MODES: AgentMode[];
13
+ /** The `--mode` value for a config, or null for the CLI default. */
14
+ export declare function resolveAgyMode(config: ProviderConfig): string | null;
15
+ /**
16
+ * Arguments for a headless `agy` process that reads user messages as NDJSON
17
+ * on stdin and writes `stream-json` events. One process serves a whole
18
+ * session; one-shot runs write a single message and close stdin.
19
+ */
20
+ export declare function buildAgyArgs(config: ProviderConfig, options: {
21
+ resumeId: string | null;
22
+ model: string | null;
23
+ }): string[];
24
+ /**
25
+ * The conversation to resume from saved params, or null. Antigravity scopes
26
+ * conversations to the directory they ran in, so params saved under a
27
+ * different cwd start fresh instead of resuming somewhere unexpected.
28
+ */
29
+ export declare function readAgyResumeId(params: Record<string, unknown> | null | undefined, cwd: string): string | null;
30
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/providers/antigravity/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExE,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,eAAO,MAAM,mBAAmB,iEAAiE,CAAC;AAElG,wBAAgB,aAAa,CAAC,GAAG,GAAE,sBAA2B,GAAG,OAAO,CAAC,cAAc,CAAC,CAEvF;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAIxC,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAKpE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,EAAE,CAYzH;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9G"}
@@ -0,0 +1,69 @@
1
+ import * as path from "node:path";
2
+ import { findBinary } from "../../utils/binary.js";
3
+ /** Running `agy` with no arguments signs in through the browser. */
4
+ export const AGY_LOGIN_COMMAND = "agy";
5
+ export const AGY_SIGN_IN_MESSAGE = "Antigravity CLI is not signed in. Run `agy` once to sign in.";
6
+ export function findAgyBinary(ctx = {}) {
7
+ return findBinary("agy", ctx.config?.command);
8
+ }
9
+ /**
10
+ * The CLI's execution modes (`--mode`). `default` is request-review: file
11
+ * edits wait for approval, which headless runs settle by policy. Shell
12
+ * commands follow the permission rules in every mode.
13
+ */
14
+ export const ANTIGRAVITY_MODES = [
15
+ { id: "default", name: "Default", description: "Review file edits before they are applied" },
16
+ { id: "accept-edits", name: "Accept edits", description: "Apply file edits without asking" },
17
+ { id: "plan", name: "Plan", description: "Investigate read-only and propose a plan before editing" },
18
+ ];
19
+ /** The `--mode` value for a config, or null for the CLI default. */
20
+ export function resolveAgyMode(config) {
21
+ if (config.planMode)
22
+ return "plan";
23
+ const requested = config.modeId ?? config.mode;
24
+ if (!requested || requested === "default")
25
+ return null;
26
+ return requested;
27
+ }
28
+ /**
29
+ * Arguments for a headless `agy` process that reads user messages as NDJSON
30
+ * on stdin and writes `stream-json` events. One process serves a whole
31
+ * session; one-shot runs write a single message and close stdin.
32
+ */
33
+ export function buildAgyArgs(config, options) {
34
+ const args = ["--input-format", "stream-json", "--output-format", "stream-json"];
35
+ if (options.resumeId)
36
+ args.push("--conversation", options.resumeId);
37
+ if (options.model)
38
+ args.push("--model", options.model);
39
+ if (config.effort)
40
+ args.push("--effort", config.effort);
41
+ const mode = resolveAgyMode(config);
42
+ if (mode)
43
+ args.push("--mode", mode);
44
+ // Plan mode is the more conservative intent and wins over skipPermissions.
45
+ if (config.skipPermissions && !config.planMode)
46
+ args.push("--dangerously-skip-permissions");
47
+ if (config.sandbox)
48
+ args.push("--sandbox");
49
+ if (config.extraArgs)
50
+ args.push(...config.extraArgs);
51
+ return args;
52
+ }
53
+ /**
54
+ * The conversation to resume from saved params, or null. Antigravity scopes
55
+ * conversations to the directory they ran in, so params saved under a
56
+ * different cwd start fresh instead of resuming somewhere unexpected.
57
+ */
58
+ export function readAgyResumeId(params, cwd) {
59
+ if (!params)
60
+ return null;
61
+ const id = params["sessionId"] ?? params["session_id"] ?? params["conversationId"];
62
+ if (typeof id !== "string" || !id.trim())
63
+ return null;
64
+ const savedCwd = params["cwd"];
65
+ if (typeof savedCwd === "string" && savedCwd && path.resolve(savedCwd) !== path.resolve(cwd))
66
+ return null;
67
+ return id.trim();
68
+ }
69
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/providers/antigravity/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AgentSession, SessionContext } from "../../types.js";
2
+ /**
3
+ * Open a multi-turn Antigravity session. Throws when `agy` is not installed.
4
+ * The process starts on the first `send()`.
5
+ */
6
+ export declare function createAntigravitySession(ctx: SessionContext): Promise<AgentSession>;
7
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/providers/antigravity/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAOZ,cAAc,EAOf,MAAM,gBAAgB,CAAC;AA4BxB;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAYzF"}
@@ -0,0 +1,317 @@
1
+ import { GoalController, EMULATED_GOAL_CAPABILITY } from "../../goals/index.js";
2
+ import { buildEnv, ensurePathInEnv } from "../../utils/env.js";
3
+ import { resolveInstructions } from "../../utils/instructions.js";
4
+ import { injectHomeSkills } from "../../utils/skills.js";
5
+ import { uuidv7 } from "../../utils/uuid.js";
6
+ import { AgyConnection, firstAgyErrorLine, interruptAgyTurn, } from "./connection.js";
7
+ import { ANTIGRAVITY_PROVIDER_TYPE, AgyStreamParser, agyUsageRecord, classifyAgyFailure, mapAgyTurnStatus, } from "./parse.js";
8
+ import { AGY_SIGN_IN_MESSAGE, buildAgyArgs, findAgyBinary, readAgyResumeId } from "./runtime.js";
9
+ /**
10
+ * Open a multi-turn Antigravity session. Throws when `agy` is not installed.
11
+ * The process starts on the first `send()`.
12
+ */
13
+ export async function createAntigravitySession(ctx) {
14
+ const binary = await findAgyBinary(ctx);
15
+ const config = ctx.config ?? {};
16
+ const instructions = await resolveInstructions(config.instructionsFile);
17
+ if (config.skillDirs && config.skillDirs.length > 0) {
18
+ try {
19
+ await injectHomeSkills(config.skillDirs, "antigravity");
20
+ }
21
+ catch {
22
+ // Non-fatal
23
+ }
24
+ }
25
+ return new AntigravitySession(ctx, binary, instructions);
26
+ }
27
+ /**
28
+ * One `agy --input-format stream-json --output-format stream-json` process
29
+ * holds the conversation across turns. The CLI has no control protocol, so
30
+ * an interrupt is a SIGINT (Ctrl+C); when that ends the process, the next
31
+ * `send()` starts a new one on the same conversation with `--conversation`.
32
+ */
33
+ class AntigravitySession {
34
+ ctx;
35
+ binary;
36
+ _state = "idle";
37
+ conversationId;
38
+ connection = null;
39
+ parser = null;
40
+ active = null;
41
+ /** Events received from agy processes, to tell whether one saw a message. */
42
+ connectionEvents = 0;
43
+ draining = false;
44
+ /** Instructions go into the first message of a conversation this session starts. */
45
+ pendingInstructions;
46
+ cwd;
47
+ goals;
48
+ constructor(ctx, binary, instructions) {
49
+ this.ctx = ctx;
50
+ this.binary = binary;
51
+ this.cwd = ctx.cwd ?? process.cwd();
52
+ this.conversationId = readAgyResumeId(ctx.sessionParams, this.cwd);
53
+ this.pendingInstructions = this.conversationId ? null : instructions;
54
+ this.goals = new GoalController({
55
+ providerType: ANTIGRAVITY_PROVIDER_TYPE,
56
+ capability: EMULATED_GOAL_CAPABILITY,
57
+ getSessionId: () => this.sessionId,
58
+ send: (message) => this.send(message),
59
+ dispatch: (event) => void this.dispatch(event),
60
+ });
61
+ if (ctx.signal) {
62
+ if (ctx.signal.aborted)
63
+ void this.close();
64
+ else
65
+ ctx.signal.addEventListener("abort", () => void this.close(), { once: true });
66
+ }
67
+ }
68
+ get sessionId() {
69
+ return this.parser?.conversationId ?? this.conversationId;
70
+ }
71
+ get state() {
72
+ return this._state;
73
+ }
74
+ async send(message, options) {
75
+ if (this._state === "closed")
76
+ throw new Error("Session is closed");
77
+ if (this.draining)
78
+ throw new Error("Session is draining — no new sends accepted");
79
+ if (this.active) {
80
+ throw new Error("Antigravity session is busy — a turn is already in progress (concurrentSend not supported)");
81
+ }
82
+ const uuid = uuidv7();
83
+ const turnId = uuidv7();
84
+ const abort = new AbortController();
85
+ const text = this.pendingInstructions ? `${this.pendingInstructions}\n\n${message}` : message;
86
+ this.pendingInstructions = null;
87
+ this._state = "thinking";
88
+ const done = this.runTurn(text, turnId, abort, options);
89
+ this.active = { turnId, abort, done };
90
+ void done.then((result) => this.goals.onTurnSettled(result)).catch(() => undefined);
91
+ return { uuid, result: done };
92
+ }
93
+ ensureConnection() {
94
+ if (this.connection?.alive)
95
+ return this.connection;
96
+ const config = this.ctx.config ?? {};
97
+ // A replacement process picks the conversation back up where it stopped.
98
+ this.conversationId = this.sessionId;
99
+ const parser = new AgyStreamParser({
100
+ includePartialMessages: config.includePartialMessages,
101
+ conversationId: this.conversationId,
102
+ });
103
+ const env = buildEnv(this.ctx.env);
104
+ ensurePathInEnv(env);
105
+ this.ctx.onLifecycle?.({ phase: "spawning" });
106
+ const connection = new AgyConnection({
107
+ command: this.binary.bin,
108
+ args: [
109
+ ...this.binary.prefixArgs,
110
+ ...buildAgyArgs(config, { resumeId: this.conversationId, model: config.model ?? null }),
111
+ ],
112
+ cwd: this.cwd,
113
+ env,
114
+ parser,
115
+ // Lines a replaced process prints on its way out belong to no turn.
116
+ onEvent: async (event) => {
117
+ if (this.connection === connection)
118
+ await this.onEvent(event);
119
+ },
120
+ ...(this.ctx.onOutput ? { onOutput: this.ctx.onOutput } : {}),
121
+ });
122
+ if (connection.pid != null)
123
+ this.ctx.onLifecycle?.({ phase: "running", pid: connection.pid });
124
+ this.connection = connection;
125
+ this.parser = parser;
126
+ return connection;
127
+ }
128
+ async runTurn(text, turnId, abort, options) {
129
+ await this.emitTurnEdge({ type: "turn_start", turnId, trigger: "send" });
130
+ const timeoutSec = options?.timeoutSec ?? this.ctx.config?.timeoutSec;
131
+ const graceSec = this.ctx.config?.graceSec;
132
+ let timer = null;
133
+ const guards = [
134
+ new Promise((resolve) => abort.signal.addEventListener("abort", () => resolve("aborted"), { once: true })),
135
+ ];
136
+ if (timeoutSec && timeoutSec > 0) {
137
+ guards.push(new Promise((resolve) => { timer = setTimeout(() => resolve("timeout"), timeoutSec * 1000); }));
138
+ }
139
+ const onSendAbort = () => abort.abort();
140
+ if (options?.signal) {
141
+ if (options.signal.aborted)
142
+ abort.abort();
143
+ else
144
+ options.signal.addEventListener("abort", onSendAbort, { once: true });
145
+ }
146
+ let connection = this.ensureConnection();
147
+ try {
148
+ let result = null;
149
+ let reason = "result";
150
+ for (let attempt = 0; result === null; attempt++) {
151
+ const eventsBefore = this.connectionEvents;
152
+ const pending = connection.nextTurn();
153
+ connection.write(text);
154
+ const first = await Promise.race([pending, ...guards]);
155
+ if (first === "timeout" || first === "aborted") {
156
+ const outcome = await interruptAgyTurn(connection, pending, graceSec);
157
+ // agy may report INTERRUPTED and then exit. Learn which before the
158
+ // next send, so it never lands on a process that is going away.
159
+ if (outcome?.result)
160
+ await connection.waitForExit(500);
161
+ // Without an INTERRUPTED result the process was stopped; a late result
162
+ // from it must never settle the next turn.
163
+ if ((!outcome?.result || !connection.alive) && this.connection === connection)
164
+ this.connection = null;
165
+ result = {
166
+ summary: outcome?.result?.response.trim() || null,
167
+ ...this.usageOf(outcome),
168
+ costUsd: null,
169
+ status: first,
170
+ errorCode: first,
171
+ errorMessage: first === "timeout" ? "Turn exceeded its timeout" : "Turn aborted",
172
+ };
173
+ reason = "cancelled";
174
+ }
175
+ else if (attempt === 0 && !first.result && first.exited && !first.authRequired
176
+ && this.connectionEvents === eventsBefore && this._state !== "closed") {
177
+ // The process exited without ever acknowledging the message (it was
178
+ // already shutting down). Run it on a fresh process for the same
179
+ // conversation instead of failing a turn agy never started.
180
+ if (this.connection === connection)
181
+ this.connection = null;
182
+ connection = this.ensureConnection();
183
+ }
184
+ else {
185
+ result = this.toTurnResult(first);
186
+ reason = first.result ? "result" : "session_closed";
187
+ }
188
+ }
189
+ await this.emitTurnEdge({ type: "turn_end", turnId, trigger: "send", reason });
190
+ return result;
191
+ }
192
+ finally {
193
+ if (timer)
194
+ clearTimeout(timer);
195
+ options?.signal?.removeEventListener("abort", onSendAbort);
196
+ this.active = null;
197
+ if (!connection.alive && this.connection === connection)
198
+ this.connection = null;
199
+ if (this._state !== "closed")
200
+ this._state = "idle";
201
+ }
202
+ }
203
+ usageOf(outcome) {
204
+ const usage = agyUsageRecord(outcome?.result?.turnUsage ?? null, this.parser?.model ?? this.ctx.config?.model ?? null);
205
+ return usage ? { usage } : {};
206
+ }
207
+ toTurnResult(outcome) {
208
+ const { result } = outcome;
209
+ if (result) {
210
+ const status = mapAgyTurnStatus(result.status);
211
+ if (status === "completed") {
212
+ return { summary: result.response.trim() || null, ...this.usageOf(outcome), costUsd: null, status, errorCode: null, errorMessage: null };
213
+ }
214
+ const errorCode = status === "aborted"
215
+ ? "aborted"
216
+ : outcome.authRequired ? "auth_required" : classifyAgyFailure(result, outcome.agyError);
217
+ return {
218
+ summary: result.response.trim() || null,
219
+ ...this.usageOf(outcome),
220
+ costUsd: null,
221
+ status,
222
+ errorCode,
223
+ errorMessage: errorCode === "auth_required"
224
+ ? AGY_SIGN_IN_MESSAGE
225
+ : result.error ?? outcome.agyError?.message ?? `Antigravity turn ended with ${result.status}`,
226
+ };
227
+ }
228
+ if (outcome.authRequired) {
229
+ return { summary: null, costUsd: null, status: "failed", errorCode: "auth_required", errorMessage: AGY_SIGN_IN_MESSAGE };
230
+ }
231
+ return {
232
+ summary: null,
233
+ costUsd: null,
234
+ status: "failed",
235
+ errorCode: "process_exited",
236
+ errorMessage: outcome.agyError?.message
237
+ ?? firstAgyErrorLine(outcome.stderr)
238
+ ?? `Antigravity CLI exited (code ${outcome.exitCode ?? "null"}${outcome.signal ? `, ${outcome.signal}` : ""}) before finishing the turn`,
239
+ };
240
+ }
241
+ async onEvent(event) {
242
+ this.connectionEvents++;
243
+ if (this._state !== "closed") {
244
+ if (event.type === "tool_call")
245
+ this._state = "tool_executing";
246
+ else if (event.type === "assistant" || event.type === "thinking" || event.type === "tool_result")
247
+ this._state = "thinking";
248
+ }
249
+ await this.dispatch(event);
250
+ }
251
+ async emitTurnEdge(edge) {
252
+ await this.dispatch({
253
+ ...edge,
254
+ timestamp: new Date().toISOString(),
255
+ providerType: ANTIGRAVITY_PROVIDER_TYPE,
256
+ sessionId: this.sessionId,
257
+ messageId: null,
258
+ eventId: null,
259
+ parentToolCallId: null,
260
+ raw: {},
261
+ });
262
+ }
263
+ async dispatch(event) {
264
+ if (!this.ctx.onEvent)
265
+ return;
266
+ try {
267
+ await this.ctx.onEvent(event);
268
+ }
269
+ catch {
270
+ /* a throwing handler must not break the stream */
271
+ }
272
+ }
273
+ async cancel(_uuid) {
274
+ // One message per turn and no queue, so there is never a queued message to drop.
275
+ return { cancelled: false };
276
+ }
277
+ async stopTask(_taskId) {
278
+ return { stopped: false };
279
+ }
280
+ setGoal(objective, options) {
281
+ return this.goals.setGoal(objective, options);
282
+ }
283
+ clearGoal(options) {
284
+ return this.goals.clearGoal(options);
285
+ }
286
+ getGoal() {
287
+ return this.goals.getGoal();
288
+ }
289
+ async interrupt() {
290
+ const active = this.active;
291
+ if (!active)
292
+ return;
293
+ active.abort.abort();
294
+ await active.done.catch(() => undefined);
295
+ }
296
+ async drain() {
297
+ this.draining = true;
298
+ if (this.active)
299
+ await this.active.done.catch(() => undefined);
300
+ await this.close();
301
+ }
302
+ async close() {
303
+ if (this._state === "closed" && !this.connection)
304
+ return;
305
+ this._state = "closed";
306
+ const active = this.active;
307
+ if (active) {
308
+ active.abort.abort();
309
+ await active.done.catch(() => undefined);
310
+ }
311
+ const connection = this.connection;
312
+ this.connection = null;
313
+ if (connection)
314
+ await connection.terminate(this.ctx.config?.graceSec);
315
+ }
316
+ }
317
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/providers/antigravity/session.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/attach.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAKb,iBAAiB,EAEjB,aAAa,EACd,MAAM,gBAAgB,CAAC;AA0GxB;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA8D5B"}
1
+ {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/attach.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAKb,iBAAiB,EAEjB,aAAa,EACd,MAAM,gBAAgB,CAAC;AAyGxB;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA8D5B"}
@@ -1,7 +1,7 @@
1
1
  import { createReadStream } from "node:fs";
2
2
  import { stat } from "node:fs/promises";
3
- import * as readline from "node:readline";
4
3
  import { assertSessionRecord, createSessionRecord, MalformedSessionRecordError, } from "../../sessions/record.js";
4
+ import { readJsonlLines } from "../../utils/jsonl-lines.js";
5
5
  import { getRuntimeHomeEnvVar } from "../../utils/runtime-homes.js";
6
6
  import { claudeSessionCodec } from "./codec.js";
7
7
  import { findClaudeTranscriptBySessionId, getClaudeTranscriptPath, readClaudeTranscript, } from "./transcript.js";
@@ -60,15 +60,14 @@ const EMPTY = {
60
60
  * preceding completed one.
61
61
  */
62
62
  async function classifyLastTurn(filePath) {
63
- const stream = createReadStream(filePath, { encoding: "utf8" });
63
+ const stream = createReadStream(filePath);
64
64
  stream.on("error", () => { });
65
- const lines = readline.createInterface({ input: stream, crlfDelay: Infinity });
66
65
  let lastTurn = "unknown";
67
66
  try {
68
- for await (const line of lines) {
67
+ for await (const line of readJsonlLines(stream)) {
69
68
  let raw;
70
69
  try {
71
- raw = JSON.parse(line);
70
+ raw = JSON.parse(line.text);
72
71
  }
73
72
  catch {
74
73
  continue;
@@ -89,7 +88,6 @@ async function classifyLastTurn(filePath) {
89
88
  return "unknown";
90
89
  }
91
90
  finally {
92
- lines.close();
93
91
  stream.destroy();
94
92
  }
95
93
  return lastTurn;
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/providers/claude/attach.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/providers/claude/attach.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,KAAK,EAAmB,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGlF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AA4BxC;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE;AAMD,MAAM,WAAW,8BAA8B;IAC7C,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAqCnC;AAMD,MAAM,WAAW,2BAA2B;IAC1C,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAuBvC;AAkED,MAAM,WAAW,2BAA2B;IAC1C,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,KAAK,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAuB,oBAAoB,CACzC,IAAI,EAAE,2BAA2B,GAChC,aAAa,CAAC,qBAAqB,CAAC,CAuDtC;AAmBD,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiDtF;AAMD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAwB1D,CAAC"}
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,KAAK,EAAmB,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGlF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AA4BxC;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE;AAMD,MAAM,WAAW,8BAA8B;IAC7C,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAqCnC;AAMD,MAAM,WAAW,2BAA2B;IAC1C,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAuBvC;AAgED,MAAM,WAAW,2BAA2B;IAC1C,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,KAAK,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAuB,oBAAoB,CACzC,IAAI,EAAE,2BAA2B,GAChC,aAAa,CAAC,qBAAqB,CAAC,CA4CtC;AAmBD,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiDtF;AAMD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAwB1D,CAAC"}
@@ -22,7 +22,7 @@ import { createReadStream } from "node:fs";
22
22
  import { readdir, realpath, stat, open as fsOpen } from "node:fs/promises";
23
23
  import * as os from "node:os";
24
24
  import * as path from "node:path";
25
- import * as readline from "node:readline";
25
+ import { readJsonlLines } from "../../utils/jsonl-lines.js";
26
26
  import { getDefaultRuntimeHome, getRuntimeHomeEnvVar } from "../../utils/runtime-homes.js";
27
27
  import { parseStreamLine } from "./parse.js";
28
28
  /**
@@ -202,14 +202,13 @@ async function readCwdFromTranscript(filePath) {
202
202
  if (!fh)
203
203
  return null;
204
204
  try {
205
- const stream = fh.createReadStream({ encoding: "utf8", autoClose: false });
206
- const rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
205
+ const stream = fh.createReadStream({ autoClose: false });
207
206
  let count = 0;
208
207
  try {
209
- for await (const raw of rl) {
208
+ for await (const line of readJsonlLines(stream)) {
210
209
  if (++count > 50)
211
210
  break;
212
- const trimmed = raw.trim();
211
+ const trimmed = line.text.trim();
213
212
  if (!trimmed)
214
213
  continue;
215
214
  try {
@@ -231,7 +230,6 @@ async function readCwdFromTranscript(filePath) {
231
230
  }
232
231
  }
233
232
  finally {
234
- rl.close();
235
233
  stream.destroy();
236
234
  }
237
235
  }
@@ -268,23 +266,15 @@ export async function* readClaudeTranscript(opts) {
268
266
  if (!(await pathExists(filePath)))
269
267
  return;
270
268
  const stream = createReadStream(filePath, { start: fromOffset, encoding: undefined });
271
- // Suppress stray ENOENT (file deleted between stat and open) — readline
269
+ // Suppress stray ENOENT (file deleted between stat and open) — the stream
272
270
  // raises the same condition through its own iterator, which we catch below.
273
271
  stream.on("error", () => { });
274
- const rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
275
- let pos = fromOffset;
276
272
  let stillSkippingPastSince = !!sinceEventId;
277
273
  try {
278
- for await (const line of rl) {
279
- // readline strips the trailing `\n` (and the `\r` from `\r\n`). Claude
280
- // writes Unix line endings, so we account for `\n` only. A `\r\n` file
281
- // would yield offsets 1 byte short per line — accepted as a corner
282
- // case; resume from such an offset would skip one stray `\r`.
283
- const lineByteLen = Buffer.byteLength(line, "utf8");
284
- pos += lineByteLen + 1;
285
- if (!line)
274
+ for await (const line of readJsonlLines(stream, fromOffset)) {
275
+ if (!line.text)
286
276
  continue;
287
- const trimmed = line.trim();
277
+ const trimmed = line.text.trim();
288
278
  if (!trimmed)
289
279
  continue;
290
280
  if (looksLikeSkippedType(trimmed))
@@ -300,7 +290,7 @@ export async function* readClaudeTranscript(opts) {
300
290
  continue;
301
291
  }
302
292
  for (const event of events) {
303
- yield { event, offset: pos };
293
+ yield { event, offset: line.end };
304
294
  }
305
295
  }
306
296
  }
@@ -311,7 +301,6 @@ export async function* readClaudeTranscript(opts) {
311
301
  throw err;
312
302
  }
313
303
  finally {
314
- rl.close();
315
304
  stream.destroy();
316
305
  }
317
306
  }