@agentex/agent 0.0.38 → 0.0.39

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 (82) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +45 -13
  3. package/dist/providers/antigravity/codec.d.ts +4 -0
  4. package/dist/providers/antigravity/codec.d.ts.map +1 -0
  5. package/dist/providers/antigravity/codec.js +27 -0
  6. package/dist/providers/antigravity/codec.js.map +1 -0
  7. package/dist/providers/antigravity/connection.d.ts +100 -0
  8. package/dist/providers/antigravity/connection.d.ts.map +1 -0
  9. package/dist/providers/antigravity/connection.js +267 -0
  10. package/dist/providers/antigravity/connection.js.map +1 -0
  11. package/dist/providers/antigravity/discovery.d.ts +11 -0
  12. package/dist/providers/antigravity/discovery.d.ts.map +1 -0
  13. package/dist/providers/antigravity/discovery.js +92 -0
  14. package/dist/providers/antigravity/discovery.js.map +1 -0
  15. package/dist/providers/antigravity/execute.d.ts +9 -0
  16. package/dist/providers/antigravity/execute.d.ts.map +1 -0
  17. package/dist/providers/antigravity/execute.js +206 -0
  18. package/dist/providers/antigravity/execute.js.map +1 -0
  19. package/dist/providers/antigravity/index.d.ts +12 -0
  20. package/dist/providers/antigravity/index.d.ts.map +1 -0
  21. package/dist/providers/antigravity/index.js +46 -0
  22. package/dist/providers/antigravity/index.js.map +1 -0
  23. package/dist/providers/antigravity/parse.d.ts +114 -0
  24. package/dist/providers/antigravity/parse.d.ts.map +1 -0
  25. package/dist/providers/antigravity/parse.js +369 -0
  26. package/dist/providers/antigravity/parse.js.map +1 -0
  27. package/dist/providers/antigravity/probe.d.ts +3 -0
  28. package/dist/providers/antigravity/probe.d.ts.map +1 -0
  29. package/dist/providers/antigravity/probe.js +84 -0
  30. package/dist/providers/antigravity/probe.js.map +1 -0
  31. package/dist/providers/antigravity/runtime.d.ts +30 -0
  32. package/dist/providers/antigravity/runtime.d.ts.map +1 -0
  33. package/dist/providers/antigravity/runtime.js +69 -0
  34. package/dist/providers/antigravity/runtime.js.map +1 -0
  35. package/dist/providers/antigravity/session.d.ts +7 -0
  36. package/dist/providers/antigravity/session.d.ts.map +1 -0
  37. package/dist/providers/antigravity/session.js +317 -0
  38. package/dist/providers/antigravity/session.js.map +1 -0
  39. package/dist/providers/gemini/index.d.ts.map +1 -1
  40. package/dist/providers/gemini/index.js +6 -0
  41. package/dist/providers/gemini/index.js.map +1 -1
  42. package/dist/registry.d.ts.map +1 -1
  43. package/dist/registry.js +2 -0
  44. package/dist/registry.js.map +1 -1
  45. package/dist/types.d.ts +6 -5
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/types.js.map +1 -1
  48. package/dist/utils/auth.d.ts +1 -1
  49. package/dist/utils/auth.d.ts.map +1 -1
  50. package/dist/utils/auth.js +79 -1
  51. package/dist/utils/auth.js.map +1 -1
  52. package/dist/utils/binary.d.ts.map +1 -1
  53. package/dist/utils/binary.js +10 -0
  54. package/dist/utils/binary.js.map +1 -1
  55. package/dist/utils/instructions.d.ts.map +1 -1
  56. package/dist/utils/instructions.js +12 -9
  57. package/dist/utils/instructions.js.map +1 -1
  58. package/dist/utils/runtime-homes.d.ts.map +1 -1
  59. package/dist/utils/runtime-homes.js +4 -0
  60. package/dist/utils/runtime-homes.js.map +1 -1
  61. package/dist/utils/skills.d.ts +3 -3
  62. package/dist/utils/skills.d.ts.map +1 -1
  63. package/dist/utils/skills.js +16 -2
  64. package/dist/utils/skills.js.map +1 -1
  65. package/package.json +3 -2
  66. package/src/providers/antigravity/codec.ts +29 -0
  67. package/src/providers/antigravity/connection.ts +304 -0
  68. package/src/providers/antigravity/discovery.ts +90 -0
  69. package/src/providers/antigravity/execute.ts +214 -0
  70. package/src/providers/antigravity/index.ts +48 -0
  71. package/src/providers/antigravity/parse.ts +439 -0
  72. package/src/providers/antigravity/probe.ts +89 -0
  73. package/src/providers/antigravity/runtime.ts +64 -0
  74. package/src/providers/antigravity/session.ts +359 -0
  75. package/src/providers/gemini/index.ts +6 -0
  76. package/src/registry.ts +2 -0
  77. package/src/types.ts +6 -5
  78. package/src/utils/auth.ts +82 -1
  79. package/src/utils/binary.ts +10 -0
  80. package/src/utils/instructions.ts +10 -9
  81. package/src/utils/runtime-homes.ts +4 -0
  82. package/src/utils/skills.ts +17 -4
@@ -0,0 +1,369 @@
1
+ /**
2
+ * Parser for Antigravity CLI (`agy`) headless `stream-json` output.
3
+ *
4
+ * Wire contract (https://antigravity.google/docs/cli/headless): one `init`
5
+ * event per process, `step_update` events while a turn runs, and one `result`
6
+ * event per turn. Every line is `{ "event": <name>, <name>: { ... } }`.
7
+ *
8
+ * - `step_update.step_type` is a closed vocabulary; observed values are
9
+ * `user_input`, `agent_response`, `tool`, and `checkpoint`. A step is
10
+ * `ACTIVE` while it runs and `DONE` when it finishes. `agent_response`
11
+ * streams its text as `text_delta` fragments across ACTIVE updates and a
12
+ * final DONE (short replies arrive as a single DONE).
13
+ * - `result.usage`, `num_turns`, and `duration_seconds` are cumulative over
14
+ * the process's session; `response` covers only the turn that emitted it.
15
+ * The parser turns the cumulative counters back into per-turn deltas.
16
+ *
17
+ * The parser is stateful (text accumulates per step, usage is differenced
18
+ * per turn), so use one instance per `agy` process.
19
+ */
20
+ export const ANTIGRAVITY_PROVIDER_TYPE = "antigravity";
21
+ function rec(value) {
22
+ return typeof value === "object" && value !== null && !Array.isArray(value)
23
+ ? value
24
+ : null;
25
+ }
26
+ function str(value) {
27
+ return typeof value === "string" && value.length > 0 ? value : null;
28
+ }
29
+ function num(value) {
30
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
31
+ }
32
+ function parseJsonObject(line) {
33
+ const trimmed = line.trim();
34
+ if (!trimmed.startsWith("{"))
35
+ return null;
36
+ try {
37
+ return rec(JSON.parse(trimmed));
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ export function parseAgyUsage(value) {
44
+ const u = rec(value);
45
+ if (!u)
46
+ return null;
47
+ const inputTokens = num(u["input_tokens"]) ?? 0;
48
+ const outputTokens = num(u["output_tokens"]) ?? 0;
49
+ return {
50
+ inputTokens,
51
+ outputTokens,
52
+ thinkingTokens: num(u["thinking_tokens"]) ?? 0,
53
+ cacheReadTokens: num(u["cache_read_tokens"]) ?? 0,
54
+ totalTokens: num(u["total_tokens"]) ?? inputTokens + outputTokens,
55
+ };
56
+ }
57
+ function subtractUsage(total, previous) {
58
+ if (!previous)
59
+ return total;
60
+ const diff = (a, b) => Math.max(0, a - b);
61
+ return {
62
+ inputTokens: diff(total.inputTokens, previous.inputTokens),
63
+ outputTokens: diff(total.outputTokens, previous.outputTokens),
64
+ thinkingTokens: diff(total.thinkingTokens, previous.thinkingTokens),
65
+ cacheReadTokens: diff(total.cacheReadTokens, previous.cacheReadTokens),
66
+ totalTokens: diff(total.totalTokens, previous.totalTokens),
67
+ };
68
+ }
69
+ /**
70
+ * Map `agy` token counters onto agentex `TokenUsage`. `input_tokens` already
71
+ * includes cache reads (like Codex), and `output_tokens` already includes
72
+ * thinking, so the counters pass through without re-adding anything.
73
+ */
74
+ export function agyUsageToTokenUsage(usage) {
75
+ return {
76
+ inputTokens: usage.inputTokens,
77
+ outputTokens: usage.outputTokens,
78
+ cachedInputTokens: usage.cacheReadTokens,
79
+ };
80
+ }
81
+ /** Key a usage record by model. `agy` reports the model only when one was pinned. */
82
+ export function agyUsageRecord(usage, model) {
83
+ if (!usage)
84
+ return undefined;
85
+ if (usage.inputTokens === 0 && usage.outputTokens === 0 && usage.cacheReadTokens === 0)
86
+ return undefined;
87
+ return { [model ?? "default"]: agyUsageToTokenUsage(usage) };
88
+ }
89
+ function stringifyOutput(value) {
90
+ if (value == null)
91
+ return "";
92
+ if (typeof value === "string")
93
+ return value;
94
+ try {
95
+ return JSON.stringify(value);
96
+ }
97
+ catch {
98
+ return String(value);
99
+ }
100
+ }
101
+ export class AgyStreamParser {
102
+ conversationId;
103
+ model = null;
104
+ permissionMode = null;
105
+ includePartial;
106
+ responseText = new Map();
107
+ thinkingText = new Map();
108
+ toolCallsOpened = new Set();
109
+ previousUsage = null;
110
+ previousDurationSec = 0;
111
+ constructor(options = {}) {
112
+ this.includePartial = options.includePartialMessages === true;
113
+ this.conversationId = options.conversationId ?? null;
114
+ }
115
+ parseLine(line) {
116
+ const event = parseJsonObject(line);
117
+ if (!event)
118
+ return { events: [], result: null };
119
+ const kind = str(event["event"]);
120
+ switch (kind) {
121
+ case "init":
122
+ return { events: this.onInit(event), result: null };
123
+ case "step_update":
124
+ return { events: this.onStep(event), result: null };
125
+ case "result":
126
+ return this.onResult(event);
127
+ default:
128
+ return {
129
+ events: [{ type: "unknown", subtype: kind ?? "unknown", ...this.base(event) }],
130
+ result: null,
131
+ };
132
+ }
133
+ }
134
+ noteConversation(id) {
135
+ const value = str(id);
136
+ if (value)
137
+ this.conversationId = value;
138
+ }
139
+ base(raw, messageId = null) {
140
+ return {
141
+ timestamp: new Date().toISOString(),
142
+ providerType: ANTIGRAVITY_PROVIDER_TYPE,
143
+ sessionId: this.conversationId,
144
+ messageId,
145
+ eventId: null,
146
+ turnId: null,
147
+ parentToolCallId: null,
148
+ raw,
149
+ };
150
+ }
151
+ onInit(event) {
152
+ const init = rec(event["init"]) ?? {};
153
+ this.noteConversation(event["conversation_id"] ?? init["conversation_id"]);
154
+ this.model = str(init["model"]) ?? this.model;
155
+ this.permissionMode = str(init["permission_mode"]) ?? this.permissionMode;
156
+ const tools = Array.isArray(init["tools"])
157
+ ? init["tools"].filter((t) => typeof t === "string")
158
+ : null;
159
+ return [{
160
+ type: "system",
161
+ subtype: "init",
162
+ model: this.model,
163
+ cwd: str(init["cwd"]),
164
+ tools,
165
+ permissionMode: this.permissionMode,
166
+ ...this.base(event),
167
+ }];
168
+ }
169
+ onStep(event) {
170
+ const step = rec(event["step_update"]);
171
+ if (!step)
172
+ return [];
173
+ this.noteConversation(step["conversation_id"]);
174
+ const index = num(step["step_index"]) ?? -1;
175
+ const state = str(step["state"]);
176
+ const done = state !== "ACTIVE";
177
+ const stepId = `${this.conversationId ?? "agy"}:${index}`;
178
+ const type = str(step["step_type"]);
179
+ // Thinking is not part of the documented stream, but the step schema has
180
+ // room for it; surface it if a build sends it rather than dropping it.
181
+ const events = this.onThinking(step, event, index, stepId, done);
182
+ if (type === "user_input" || type === "checkpoint")
183
+ return events;
184
+ if (type === "agent_response") {
185
+ const delta = typeof step["text_delta"] === "string" ? step["text_delta"] : "";
186
+ const text = (this.responseText.get(index) ?? "") + delta;
187
+ this.responseText.set(index, text);
188
+ if (delta && this.includePartial) {
189
+ events.push({ type: "assistant_delta", text: delta, blockIndex: 0, ...this.base(event, stepId) });
190
+ }
191
+ if (done) {
192
+ this.responseText.delete(index);
193
+ if (text.trim())
194
+ events.push({ type: "assistant", text, ...this.base(event, stepId) });
195
+ }
196
+ return events;
197
+ }
198
+ const toolInfo = rec(step["tool_info"]);
199
+ const subagentInfo = rec(step["subagent_info"]);
200
+ if (type === "tool" || toolInfo || subagentInfo) {
201
+ const name = str(step["tool_name"]) ?? str(toolInfo?.["name"]) ?? (subagentInfo ? "subagent" : "tool");
202
+ if (!this.toolCallsOpened.has(index)) {
203
+ this.toolCallsOpened.add(index);
204
+ events.push({
205
+ type: "tool_call",
206
+ toolCallId: stepId,
207
+ name,
208
+ input: toolInfo?.["parameters"] ?? subagentInfo ?? null,
209
+ ...this.base(event, stepId),
210
+ });
211
+ }
212
+ if (done) {
213
+ this.toolCallsOpened.delete(index);
214
+ const error = rec(toolInfo?.["error"]);
215
+ const output = stringifyOutput(toolInfo?.["output"] ?? (subagentInfo ? subagentInfo : null));
216
+ events.push({
217
+ type: "tool_result",
218
+ toolCallId: stepId,
219
+ toolName: name,
220
+ content: output || str(error?.["message"]) || "",
221
+ isError: error !== null,
222
+ exitCode: null,
223
+ ...this.base(event, stepId),
224
+ });
225
+ }
226
+ return events;
227
+ }
228
+ // Forward-compat: a step type this parser does not model yet.
229
+ if (done)
230
+ events.push({ type: "unknown", subtype: type ?? "step_update", ...this.base(event, stepId) });
231
+ return events;
232
+ }
233
+ onThinking(step, event, index, stepId, done) {
234
+ const delta = typeof step["thinking_delta"] === "string" ? step["thinking_delta"] : "";
235
+ if (!delta && !this.thinkingText.has(index))
236
+ return [];
237
+ const events = [];
238
+ const text = (this.thinkingText.get(index) ?? "") + delta;
239
+ this.thinkingText.set(index, text);
240
+ if (delta && this.includePartial) {
241
+ events.push({ type: "thinking_delta", text: delta, blockIndex: 0, ...this.base(event, stepId) });
242
+ }
243
+ if (done) {
244
+ this.thinkingText.delete(index);
245
+ if (text.trim())
246
+ events.push({ type: "thinking", text, ...this.base(event, stepId) });
247
+ }
248
+ return events;
249
+ }
250
+ onResult(event) {
251
+ const payload = rec(event["result"]) ?? {};
252
+ this.noteConversation(payload["conversation_id"]);
253
+ const status = str(payload["status"]) ?? "ERROR";
254
+ const usage = parseAgyUsage(payload["usage"]);
255
+ const turnUsage = usage ? subtractUsage(usage, this.previousUsage) : null;
256
+ if (usage)
257
+ this.previousUsage = usage;
258
+ const durationSec = num(payload["duration_seconds"]);
259
+ const turnDurationMs = durationSec == null
260
+ ? null
261
+ : Math.round(Math.max(0, durationSec - this.previousDurationSec) * 1000);
262
+ if (durationSec != null)
263
+ this.previousDurationSec = durationSec;
264
+ // Steps of a finished turn never complete; don't leak them into the next.
265
+ this.responseText.clear();
266
+ this.thinkingText.clear();
267
+ this.toolCallsOpened.clear();
268
+ const result = {
269
+ status,
270
+ response: typeof payload["response"] === "string" ? payload["response"] : "",
271
+ error: str(payload["error"]),
272
+ conversationId: this.conversationId,
273
+ numTurns: num(payload["num_turns"]),
274
+ turnDurationMs,
275
+ usage,
276
+ turnUsage,
277
+ deniedActions: Array.isArray(payload["denied_actions"]) ? payload["denied_actions"] : null,
278
+ structuredOutput: payload["structured_output"],
279
+ raw: event,
280
+ };
281
+ return {
282
+ events: [{
283
+ type: "result",
284
+ text: result.response,
285
+ costUsd: null,
286
+ isError: status !== "SUCCESS",
287
+ stopReason: null,
288
+ terminalReason: status.toLowerCase(),
289
+ numTurns: result.numTurns,
290
+ durationMs: turnDurationMs,
291
+ ...this.base(event),
292
+ }],
293
+ result,
294
+ };
295
+ }
296
+ }
297
+ /** Parse a complete `stream-json` transcript. Returns every turn's result in order. */
298
+ export function parseAgyStreamJson(stdout, options) {
299
+ const parser = new AgyStreamParser(options);
300
+ const events = [];
301
+ const results = [];
302
+ for (const line of stdout.split(/\r?\n/)) {
303
+ const parsed = parser.parseLine(line);
304
+ events.push(...parsed.events);
305
+ if (parsed.result)
306
+ results.push(parsed.result);
307
+ }
308
+ return { events, results, conversationId: parser.conversationId, model: parser.model };
309
+ }
310
+ /** Parse an `AGY_ERROR: {...}` stderr line, or return null for any other line. */
311
+ export function parseAgyErrorLine(line) {
312
+ const match = line.match(/AGY_ERROR:\s*(\{.*\})\s*$/);
313
+ if (!match?.[1])
314
+ return null;
315
+ const raw = parseJsonObject(match[1]);
316
+ if (!raw)
317
+ return null;
318
+ const code = raw["code"] ?? raw["http_code"] ?? raw["grpc_code"] ?? raw["status_code"] ?? null;
319
+ return {
320
+ message: str(raw["message"]) ?? str(raw["error"]),
321
+ status: str(raw["status"]) ?? str(raw["canonical_status"]) ?? str(raw["canonicalStatus"]),
322
+ code: typeof code === "number" || typeof code === "string" ? code : null,
323
+ retryable: typeof raw["retryable"] === "boolean" ? raw["retryable"] : null,
324
+ raw,
325
+ };
326
+ }
327
+ const AGY_AUTH_PROMPT_RE = /Authentication required|Please (?:visit the URL to log in|sign in)|authentication failed or timed out|not signed in|Failed to sign in/i;
328
+ /** True when `agy` output says the CLI has no usable sign-in. */
329
+ export function isAgyAuthRequired(text) {
330
+ return AGY_AUTH_PROMPT_RE.test(text);
331
+ }
332
+ const RATE_LIMIT_RE = /RESOURCE_EXHAUSTED|rate.?limit|quota|\b429\b/i;
333
+ /** Error code for a failed turn, from the most specific signal available. */
334
+ export function classifyAgyFailure(result, agyError) {
335
+ const text = [result?.error, agyError?.message, agyError?.status, agyError?.code].filter(Boolean).join(" ");
336
+ if (isAgyAuthRequired(text) || /UNAUTHENTICATED|PERMISSION_DENIED|\b401\b/.test(text))
337
+ return "auth_required";
338
+ if (RATE_LIMIT_RE.test(text))
339
+ return "rate_limited";
340
+ if (/invalid model selection|not recognized as a known model/i.test(text))
341
+ return "invalid_model";
342
+ if (result?.status === "WAITING")
343
+ return "waiting_for_input";
344
+ if (result?.status === "INVALID")
345
+ return "invalid_state";
346
+ if (result?.status === "RUNNING")
347
+ return "incomplete_turn";
348
+ return "agent_error";
349
+ }
350
+ /** Map an `agy` result status onto a one-shot `ExecutionStatus`. */
351
+ export function mapAgyExecutionStatus(status) {
352
+ switch (status) {
353
+ case "SUCCESS":
354
+ return "completed";
355
+ case "CANCELED":
356
+ case "INTERRUPTED":
357
+ return "aborted";
358
+ case "WAITING":
359
+ return "blocked";
360
+ default:
361
+ return "failed";
362
+ }
363
+ }
364
+ /** Map an `agy` result status onto a session `TurnResult` status. */
365
+ export function mapAgyTurnStatus(status) {
366
+ const mapped = mapAgyExecutionStatus(status);
367
+ return mapped === "blocked" ? "failed" : mapped;
368
+ }
369
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/providers/antigravity/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ProviderRuntimeContext, ProviderRuntimeReport } from "../../types.js";
2
+ export declare function probeAntigravityCapabilities(ctx?: ProviderRuntimeContext): Promise<ProviderRuntimeReport>;
3
+ //# sourceMappingURL=probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../../src/providers/antigravity/probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AASpF,wBAAsB,4BAA4B,CAChD,GAAG,GAAE,sBAA2B,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CA6EhC"}
@@ -0,0 +1,84 @@
1
+ import { buildEnv, ensurePathInEnv } from "../../utils/env.js";
2
+ import { runChildProcess } from "../../utils/process.js";
3
+ import { listAntigravityModels } from "./discovery.js";
4
+ import { AGY_SIGN_IN_MESSAGE, findAgyBinary } from "./runtime.js";
5
+ /** Flags the adapter relies on. All shipped together in Antigravity CLI 1.1.15. */
6
+ const REQUIRED_FLAGS = ["--input-format", "--output-format", "--conversation", "--mode", "--model"];
7
+ export async function probeAntigravityCapabilities(ctx = {}) {
8
+ let resolved;
9
+ try {
10
+ resolved = await findAgyBinary(ctx);
11
+ }
12
+ catch (error) {
13
+ return {
14
+ binary: {
15
+ status: "missing",
16
+ command: null,
17
+ version: null,
18
+ protocolProfile: null,
19
+ reason: error instanceof Error ? error.message : String(error),
20
+ },
21
+ capabilities: {},
22
+ };
23
+ }
24
+ const env = buildEnv(ctx.env);
25
+ ensurePathInEnv(env);
26
+ const cwd = ctx.cwd ?? process.cwd();
27
+ const run = (runId, args, timeoutSec) => runChildProcess({
28
+ runId,
29
+ command: resolved.bin,
30
+ args: [...resolved.prefixArgs, ...args],
31
+ cwd,
32
+ env,
33
+ timeoutSec,
34
+ }).catch(() => null);
35
+ const [versionRun, helpRun, models] = await Promise.all([
36
+ run("antigravity-version-probe", ["--version"], 5),
37
+ run("antigravity-protocol-probe", ["--help"], 10),
38
+ listAntigravityModels(ctx).catch((error) => (error instanceof Error ? error : new Error(String(error)))),
39
+ ]);
40
+ const version = versionRun
41
+ ? (`${versionRun.stdout}\n${versionRun.stderr}`).match(/\d+\.\d+(?:\.\d+)?/)?.[0] ?? null
42
+ : null;
43
+ const help = helpRun ? `${helpRun.stdout}\n${helpRun.stderr}` : "";
44
+ const missingFlags = REQUIRED_FLAGS.filter((flag) => !help.includes(flag));
45
+ const protocolSupported = help.length > 0 && missingFlags.length === 0 && /stream-json/.test(help);
46
+ const modelError = models instanceof Error ? models : null;
47
+ const modelDiscovery = Array.isArray(models) && models.length > 0;
48
+ const signedOut = modelError?.message === AGY_SIGN_IN_MESSAGE;
49
+ const supported = (value, reason) => ({
50
+ supported: value,
51
+ status: value ? "supported" : "upgrade_required",
52
+ ...(!value && reason ? { reason } : {}),
53
+ });
54
+ return {
55
+ binary: {
56
+ status: protocolSupported ? "supported" : "upgrade_required",
57
+ command: resolved.bin,
58
+ version,
59
+ protocolProfile: protocolSupported ? "agy-stream-json-v1" : null,
60
+ ...(!protocolSupported
61
+ ? { reason: `Update Antigravity CLI (\`agy update\`): missing ${missingFlags.join(", ") || "stream-json support"}` }
62
+ : {}),
63
+ },
64
+ capabilities: {
65
+ sessions: supported(protocolSupported, "Antigravity stream-json input is unavailable"),
66
+ resume: supported(protocolSupported, "Antigravity --conversation resume is unavailable"),
67
+ modelDiscovery: modelDiscovery
68
+ ? supported(true)
69
+ : {
70
+ supported: false,
71
+ // Not signed in is a setup step, not an outdated CLI.
72
+ status: signedOut ? "missing" : "upgrade_required",
73
+ reason: signedOut ? AGY_SIGN_IN_MESSAGE : modelError?.message ?? "Antigravity CLI did not list any models",
74
+ },
75
+ planMode: supported(protocolSupported),
76
+ modes: supported(protocolSupported),
77
+ sessionModelChange: supported(false),
78
+ sessionVariantChange: supported(false),
79
+ sessionEffortChange: supported(false),
80
+ sessionModeChange: supported(false),
81
+ },
82
+ };
83
+ }
84
+ //# sourceMappingURL=probe.js.map
@@ -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"}