@enderfga/claw-orchestrator 4.5.1 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/bin/cli.js +1 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/agy-conversation.d.ts +2 -0
- package/dist/src/agy-conversation.js +10 -0
- package/dist/src/agy-conversation.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +14 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/models.js +93 -5
- package/dist/src/models.js.map +1 -1
- package/dist/src/persistent-agy-session.d.ts +60 -0
- package/dist/src/persistent-agy-session.js +225 -0
- package/dist/src/persistent-agy-session.js.map +1 -0
- package/dist/src/persistent-cursor-session.js +2 -4
- package/dist/src/persistent-cursor-session.js.map +1 -1
- package/dist/src/persistent-custom-session.js +5 -32
- package/dist/src/persistent-custom-session.js.map +1 -1
- package/dist/src/persistent-gemini-session.js +3 -5
- package/dist/src/persistent-gemini-session.js.map +1 -1
- package/dist/src/persistent-opencode-session.js +2 -6
- package/dist/src/persistent-opencode-session.js.map +1 -1
- package/dist/src/persistent-session.js +2 -8
- package/dist/src/persistent-session.js.map +1 -1
- package/dist/src/sanitize.d.ts +23 -0
- package/dist/src/sanitize.js +57 -0
- package/dist/src/sanitize.js.map +1 -0
- package/dist/src/session-manager.d.ts +8 -0
- package/dist/src/session-manager.js +67 -20
- package/dist/src/session-manager.js.map +1 -1
- package/dist/src/types.d.ts +5 -2
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -1
- package/package.json +1 -1
- package/skills/SKILL.md +7 -5
- package/skills/references/claude-cli-tracking.md +3 -1
- package/skills/references/cli.md +4 -3
- package/skills/references/getting-started.md +1 -1
- package/skills/references/mcp.md +1 -1
- package/skills/references/multi-engine.md +47 -5
- package/skills/references/sessions.md +2 -2
- package/skills/references/tools.md +2 -2
package/dist/src/models.js
CHANGED
|
@@ -7,6 +7,19 @@
|
|
|
7
7
|
// ─── Model Definitions ───────────────────────────────────────────────────────
|
|
8
8
|
const MODELS = [
|
|
9
9
|
// ── Anthropic ──────────────────────────────────────────────────────────
|
|
10
|
+
// Fable 5 — first model of the Claude 5 family, a Mythos-class tier above
|
|
11
|
+
// Opus. $10/$50 per Mtok, cache read $1 (0.1× input), full 1M-token context
|
|
12
|
+
// at standard pricing (no long-context surcharge). Claude Mythos 5 is the
|
|
13
|
+
// same model at the same price but limited-availability (approved orgs
|
|
14
|
+
// only), so we register only Fable.
|
|
15
|
+
{
|
|
16
|
+
id: 'claude-fable-5',
|
|
17
|
+
engine: 'claude',
|
|
18
|
+
provider: 'anthropic',
|
|
19
|
+
pricing: { input: 10, output: 50, cached: 1 },
|
|
20
|
+
aliases: ['fable'],
|
|
21
|
+
contextWindow: 1_000_000,
|
|
22
|
+
},
|
|
10
23
|
// Opus 4.x pricing is flat across the generation; 4.7/4.8 mirror 4.6's
|
|
11
24
|
// input:5 / output:25 / cached:0.5. Fast mode (Opus 4.8) bills at 2× the
|
|
12
25
|
// standard rate, but it's a human-interactive `/fast` toggle the CLI never
|
|
@@ -74,6 +87,35 @@ const MODELS = [
|
|
|
74
87
|
pricing: { input: 5, output: 30, cached: 0.5 },
|
|
75
88
|
contextWindow: 1_000_000,
|
|
76
89
|
},
|
|
90
|
+
// ── OpenAI GPT-5.6 (limited preview) ──────────────────────────────────
|
|
91
|
+
// Three-tier family, API + Codex only (NOT served to ChatGPT-account Codex
|
|
92
|
+
// auth — verified empirically: the API 400s with "not supported when using
|
|
93
|
+
// Codex with a ChatGPT account", so we keep gpt-5.5 as the Codex default).
|
|
94
|
+
// Ids and pricing from OpenAI's official pricing page; context windows per
|
|
95
|
+
// launch coverage (1M Sol/Terra, 400K Luna — not yet on the pricing page).
|
|
96
|
+
// Bare `gpt-5.6` is accepted by the API (likely a Sol alias) but is not a
|
|
97
|
+
// documented id, so it stays unregistered and passes through verbatim.
|
|
98
|
+
{
|
|
99
|
+
id: 'gpt-5.6-sol',
|
|
100
|
+
engine: 'codex',
|
|
101
|
+
provider: 'openai',
|
|
102
|
+
pricing: { input: 5, output: 30, cached: 0.5 },
|
|
103
|
+
contextWindow: 1_000_000,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 'gpt-5.6-terra',
|
|
107
|
+
engine: 'codex',
|
|
108
|
+
provider: 'openai',
|
|
109
|
+
pricing: { input: 2.5, output: 15, cached: 0.25 },
|
|
110
|
+
contextWindow: 1_000_000,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
id: 'gpt-5.6-luna',
|
|
114
|
+
engine: 'codex',
|
|
115
|
+
provider: 'openai',
|
|
116
|
+
pricing: { input: 1, output: 6, cached: 0.1 },
|
|
117
|
+
contextWindow: 400_000,
|
|
118
|
+
},
|
|
77
119
|
// ── OpenAI GPT-5.4 ────────────────────────────────────────────────────
|
|
78
120
|
{
|
|
79
121
|
id: 'gpt-5.4',
|
|
@@ -135,6 +177,31 @@ const MODELS = [
|
|
|
135
177
|
aliases: ['gemini-flash'],
|
|
136
178
|
contextWindow: 1_000_000,
|
|
137
179
|
},
|
|
180
|
+
// ── Google Antigravity (agy) ───────────────────────────────────────────
|
|
181
|
+
// Antigravity CLI is Gemini CLI's successor (consumer Gemini CLI stopped
|
|
182
|
+
// serving 2026-06-18). Consumer agy auth is subscription-based with no
|
|
183
|
+
// per-token billing, and agy emits no usage data, so token counts for this
|
|
184
|
+
// engine are ESTIMATED. Pricing mirrors Gemini API list rates so costUsd
|
|
185
|
+
// approximates equivalent API value; use overrideModelPricing() to zero it
|
|
186
|
+
// out for subscription accounting. Slugs verified against agy 1.0.16
|
|
187
|
+
// (`agy models`); agy also proxies Claude/GPT-OSS models, passed through
|
|
188
|
+
// unregistered. Unknown slugs silently fall back to agy's default model.
|
|
189
|
+
{
|
|
190
|
+
id: 'gemini-3.5-flash',
|
|
191
|
+
engine: 'agy',
|
|
192
|
+
provider: 'google',
|
|
193
|
+
pricing: { input: 0.5, output: 3 },
|
|
194
|
+
aliases: ['agy-flash'],
|
|
195
|
+
contextWindow: 1_000_000,
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
id: 'gemini-3.1-pro',
|
|
199
|
+
engine: 'agy',
|
|
200
|
+
provider: 'google',
|
|
201
|
+
pricing: { input: 2, output: 12 },
|
|
202
|
+
aliases: ['agy-pro'],
|
|
203
|
+
contextWindow: 1_000_000,
|
|
204
|
+
},
|
|
138
205
|
// ── Google Gemini 2.5 (stable) ─────────────────────────────────────────
|
|
139
206
|
{
|
|
140
207
|
id: 'gemini-2.5-pro',
|
|
@@ -209,6 +276,17 @@ export function resolveAlias(alias) {
|
|
|
209
276
|
}
|
|
210
277
|
/** Resolve model string to engine + canonical model. Pattern fallback for unknown models. */
|
|
211
278
|
export function resolveEngineAndModel(model) {
|
|
279
|
+
// The `agy/` vendor prefix pins the Antigravity engine (mirroring the strip
|
|
280
|
+
// lists in resolveProvider/getContextWindow/getModelPricing). It must win
|
|
281
|
+
// over both the registry and the pattern heuristics: agy proxies Claude and
|
|
282
|
+
// GPT-OSS models that are registered to other engines, and a bare
|
|
283
|
+
// `gemini-*` heuristic would route `agy/gemini-3.5-flash` to the gemini
|
|
284
|
+
// engine — the opposite of the prefix's intent. Other vendor prefixes are
|
|
285
|
+
// deliberately NOT stripped here: prefixed strings fall through to the
|
|
286
|
+
// claude engine, which proxies them to the gateway.
|
|
287
|
+
if (model.startsWith('agy/')) {
|
|
288
|
+
return { engine: 'agy', model: resolveAlias(model.slice('agy/'.length)) };
|
|
289
|
+
}
|
|
212
290
|
// 1. Exact match (id or alias)
|
|
213
291
|
const known = lookupModel(model);
|
|
214
292
|
if (known)
|
|
@@ -227,7 +305,7 @@ export function resolveEngineAndModel(model) {
|
|
|
227
305
|
export function resolveProvider(model) {
|
|
228
306
|
// Strip vendor prefixes
|
|
229
307
|
let clean = model;
|
|
230
|
-
for (const prefix of ['anthropic/', 'openai/', 'openai-codex/', 'gemini/', 'google/', 'cursor/']) {
|
|
308
|
+
for (const prefix of ['anthropic/', 'openai/', 'openai-codex/', 'gemini/', 'google/', 'agy/', 'cursor/']) {
|
|
231
309
|
if (clean.startsWith(prefix)) {
|
|
232
310
|
clean = clean.slice(prefix.length);
|
|
233
311
|
break;
|
|
@@ -238,7 +316,12 @@ export function resolveProvider(model) {
|
|
|
238
316
|
return { provider: known.provider, apiModel: known.id };
|
|
239
317
|
// Pattern fallback
|
|
240
318
|
const lower = clean.toLowerCase();
|
|
241
|
-
if (lower.includes('claude') ||
|
|
319
|
+
if (lower.includes('claude') ||
|
|
320
|
+
lower.includes('opus') ||
|
|
321
|
+
lower.includes('sonnet') ||
|
|
322
|
+
lower.includes('haiku') ||
|
|
323
|
+
lower.includes('fable') ||
|
|
324
|
+
lower.includes('mythos'))
|
|
242
325
|
return { provider: 'anthropic', apiModel: clean };
|
|
243
326
|
if (lower.includes('gemini'))
|
|
244
327
|
return { provider: 'google', apiModel: clean };
|
|
@@ -254,7 +337,7 @@ export function resolveProvider(model) {
|
|
|
254
337
|
}
|
|
255
338
|
/** Get context window size for a model. Returns 200k default for unknown models. */
|
|
256
339
|
export function getContextWindow(model) {
|
|
257
|
-
const clean = model.replace(/^(anthropic|openai|openai-codex|google|gemini|cursor)\//g, '');
|
|
340
|
+
const clean = model.replace(/^(anthropic|openai|openai-codex|google|gemini|agy|cursor)\//g, '');
|
|
258
341
|
const known = lookupModel(clean);
|
|
259
342
|
return known?.contextWindow ?? 200_000;
|
|
260
343
|
}
|
|
@@ -262,7 +345,7 @@ export function getContextWindow(model) {
|
|
|
262
345
|
export function getModelPricing(model, defaultModel = 'claude-sonnet-4-6') {
|
|
263
346
|
if (!model)
|
|
264
347
|
return lookupModel(defaultModel)?.pricing ?? { input: 0, output: 0 };
|
|
265
|
-
const clean = model.replace(/^(anthropic|openai|openai-codex|google|gemini|cursor)\//g, '');
|
|
348
|
+
const clean = model.replace(/^(anthropic|openai|openai-codex|google|gemini|agy|cursor)\//g, '');
|
|
266
349
|
// Check overrides first
|
|
267
350
|
const override = _pricingOverrides.get(clean);
|
|
268
351
|
if (override)
|
|
@@ -316,7 +399,12 @@ export function isGeminiModel(model) {
|
|
|
316
399
|
/** Check if a model string is a Claude model. */
|
|
317
400
|
export function isClaudeModel(model) {
|
|
318
401
|
const l = model.toLowerCase();
|
|
319
|
-
return l.includes('claude') ||
|
|
402
|
+
return (l.includes('claude') ||
|
|
403
|
+
l.includes('opus') ||
|
|
404
|
+
l.includes('sonnet') ||
|
|
405
|
+
l.includes('haiku') ||
|
|
406
|
+
l.includes('fable') ||
|
|
407
|
+
l.includes('mythos'));
|
|
320
408
|
}
|
|
321
409
|
/** Rough token estimate: ~4 chars per token. */
|
|
322
410
|
export function estimateTokens(text) {
|
package/dist/src/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Antigravity Session — wraps Google `agy` CLI (Antigravity CLI)
|
|
3
|
+
*
|
|
4
|
+
* Antigravity CLI is Google's successor to Gemini CLI (consumer tiers of
|
|
5
|
+
* Gemini CLI stopped serving 2026-06-18). Like Codex/Gemini, each send()
|
|
6
|
+
* spawns a new `agy` process in print mode.
|
|
7
|
+
*
|
|
8
|
+
* agy (verified against 1.0.16) has NO structured output mode — stdout is
|
|
9
|
+
* the plain response text. Two behaviors make this a real engine rather
|
|
10
|
+
* than a custom-engine recipe:
|
|
11
|
+
*
|
|
12
|
+
* - Conversation continuity: agy logs `Created conversation <uuid>` to
|
|
13
|
+
* its log file. We pass a private --log-file per session, harvest the
|
|
14
|
+
* ID after the first send, and pass `--conversation <id>` on subsequent
|
|
15
|
+
* sends — true multi-turn context, like Codex thread resume.
|
|
16
|
+
* - Timeout coherence: agy enforces its own --print-timeout (default 5m);
|
|
17
|
+
* we derive it from the send timeout so the two never disagree.
|
|
18
|
+
*
|
|
19
|
+
* Token usage is estimated (~4 chars/token) since agy emits no usage data.
|
|
20
|
+
* Unknown --model values do not error — agy silently falls back to its
|
|
21
|
+
* default model (verified empirically on 1.0.16).
|
|
22
|
+
*/
|
|
23
|
+
import type { SessionConfig, SessionSendOptions, TurnResult } from './types.js';
|
|
24
|
+
import { BaseOneShotSession } from './base-oneshot-session.js';
|
|
25
|
+
export declare class PersistentAgySession extends BaseOneShotSession {
|
|
26
|
+
/**
|
|
27
|
+
* Antigravity conversation ID for this session. Captured from the agy log
|
|
28
|
+
* file after the first turn, then reused via `--conversation <id>` so the
|
|
29
|
+
* model sees prior turns. Seeded from `resumeSessionId` when provided.
|
|
30
|
+
*/
|
|
31
|
+
private agyConversationId;
|
|
32
|
+
constructor(config: SessionConfig, agyBin?: string);
|
|
33
|
+
/** Expose the captured conversation ID for resume tooling and stats overlay. */
|
|
34
|
+
get conversationId(): string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* One log file per session (agy re-creates it each run; the harvest regex
|
|
37
|
+
* only needs the latest `Created conversation` line). Deterministic path so
|
|
38
|
+
* stop() can clean it up.
|
|
39
|
+
*/
|
|
40
|
+
private get _logFile();
|
|
41
|
+
/**
|
|
42
|
+
* Build the agy spawn args for this turn.
|
|
43
|
+
*
|
|
44
|
+
* First turn: `agy -p <msg> --log-file <tmp> [--sandbox|--dangerously-skip-permissions] [--model M] --print-timeout Ns`
|
|
45
|
+
* Resume turns: same + `--conversation <id>`
|
|
46
|
+
*/
|
|
47
|
+
private _buildArgs;
|
|
48
|
+
/**
|
|
49
|
+
* Harvest the conversation ID from the agy log file. New conversations log
|
|
50
|
+
* `Created conversation <uuid>`; resumed ones only log lookups, so an
|
|
51
|
+
* existing ID is never overwritten by a miss.
|
|
52
|
+
*/
|
|
53
|
+
private _harvestConversationId;
|
|
54
|
+
private _warnHarvestMiss;
|
|
55
|
+
protected _run(message: string, options: SessionSendOptions): Promise<TurnResult>;
|
|
56
|
+
/** Clean up the per-session log file along with the base teardown. */
|
|
57
|
+
stop(): void;
|
|
58
|
+
/** Override getStats to expose the captured conversation ID. */
|
|
59
|
+
getStats(): ReturnType<BaseOneShotSession['getStats']>;
|
|
60
|
+
}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Antigravity Session — wraps Google `agy` CLI (Antigravity CLI)
|
|
3
|
+
*
|
|
4
|
+
* Antigravity CLI is Google's successor to Gemini CLI (consumer tiers of
|
|
5
|
+
* Gemini CLI stopped serving 2026-06-18). Like Codex/Gemini, each send()
|
|
6
|
+
* spawns a new `agy` process in print mode.
|
|
7
|
+
*
|
|
8
|
+
* agy (verified against 1.0.16) has NO structured output mode — stdout is
|
|
9
|
+
* the plain response text. Two behaviors make this a real engine rather
|
|
10
|
+
* than a custom-engine recipe:
|
|
11
|
+
*
|
|
12
|
+
* - Conversation continuity: agy logs `Created conversation <uuid>` to
|
|
13
|
+
* its log file. We pass a private --log-file per session, harvest the
|
|
14
|
+
* ID after the first send, and pass `--conversation <id>` on subsequent
|
|
15
|
+
* sends — true multi-turn context, like Codex thread resume.
|
|
16
|
+
* - Timeout coherence: agy enforces its own --print-timeout (default 5m);
|
|
17
|
+
* we derive it from the send timeout so the two never disagree.
|
|
18
|
+
*
|
|
19
|
+
* Token usage is estimated (~4 chars/token) since agy emits no usage data.
|
|
20
|
+
* Unknown --model values do not error — agy silently falls back to its
|
|
21
|
+
* default model (verified empirically on 1.0.16).
|
|
22
|
+
*/
|
|
23
|
+
import { spawn } from 'node:child_process';
|
|
24
|
+
import * as fs from 'node:fs';
|
|
25
|
+
import * as os from 'node:os';
|
|
26
|
+
import * as path from 'node:path';
|
|
27
|
+
import { estimateTokens } from './models.js';
|
|
28
|
+
import { sanitizeSecrets } from './sanitize.js';
|
|
29
|
+
import { extractCreatedAgyConversationId, isAgyConversationId } from './agy-conversation.js';
|
|
30
|
+
import { SESSION_EVENT } from './constants.js';
|
|
31
|
+
import { BaseOneShotSession } from './base-oneshot-session.js';
|
|
32
|
+
// ─── PersistentAgySession ───────────────────────────────────────────────────
|
|
33
|
+
export class PersistentAgySession extends BaseOneShotSession {
|
|
34
|
+
/**
|
|
35
|
+
* Antigravity conversation ID for this session. Captured from the agy log
|
|
36
|
+
* file after the first turn, then reused via `--conversation <id>` so the
|
|
37
|
+
* model sees prior turns. Seeded from `resumeSessionId` when provided.
|
|
38
|
+
*/
|
|
39
|
+
agyConversationId;
|
|
40
|
+
constructor(config, agyBin) {
|
|
41
|
+
super(config, agyBin || process.env.AGY_BIN || 'agy', {
|
|
42
|
+
enginePrefix: 'agy',
|
|
43
|
+
defaultModel: 'gemini-3.5-flash',
|
|
44
|
+
supportsCachedTokens: false,
|
|
45
|
+
engineDisplayName: 'Antigravity',
|
|
46
|
+
});
|
|
47
|
+
// Non-UUID ids (synthetic session ids from persistence/restart paths) are
|
|
48
|
+
// ignored: starting a fresh conversation beats resuming a broken one.
|
|
49
|
+
if (isAgyConversationId(config.resumeSessionId)) {
|
|
50
|
+
this.agyConversationId = config.resumeSessionId;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Expose the captured conversation ID for resume tooling and stats overlay. */
|
|
54
|
+
get conversationId() {
|
|
55
|
+
return this.agyConversationId;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* One log file per session (agy re-creates it each run; the harvest regex
|
|
59
|
+
* only needs the latest `Created conversation` line). Deterministic path so
|
|
60
|
+
* stop() can clean it up.
|
|
61
|
+
*/
|
|
62
|
+
get _logFile() {
|
|
63
|
+
return path.join(os.tmpdir(), `agy-${this.sessionId}.log`);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Build the agy spawn args for this turn.
|
|
67
|
+
*
|
|
68
|
+
* First turn: `agy -p <msg> --log-file <tmp> [--sandbox|--dangerously-skip-permissions] [--model M] --print-timeout Ns`
|
|
69
|
+
* Resume turns: same + `--conversation <id>`
|
|
70
|
+
*/
|
|
71
|
+
_buildArgs(message, timeoutMs) {
|
|
72
|
+
const args = ['-p', message, '--log-file', this._logFile];
|
|
73
|
+
// Permission mode. agy has no fine-grained permission flags (verified on
|
|
74
|
+
// 1.0.16): bypass maps to --dangerously-skip-permissions, `default` maps
|
|
75
|
+
// to --sandbox (terminal-restricted). Other modes run agy's own default
|
|
76
|
+
// approval behavior — which blocks on unapproved tools in print mode, so
|
|
77
|
+
// bypassPermissions (the SessionConfig default) is the practical choice
|
|
78
|
+
// for headless work.
|
|
79
|
+
if (this.options.permissionMode === 'bypassPermissions' || this.options.dangerouslySkipPermissions) {
|
|
80
|
+
args.push('--dangerously-skip-permissions');
|
|
81
|
+
}
|
|
82
|
+
else if (this.options.permissionMode === 'default' || this.options.permissionMode === 'manual') {
|
|
83
|
+
args.push('--sandbox');
|
|
84
|
+
}
|
|
85
|
+
// Use the SessionManager-resolved model when available so documented
|
|
86
|
+
// aliases (agy-pro → gemini-3.1-pro) do not silently fall back to agy's
|
|
87
|
+
// default model.
|
|
88
|
+
const configuredModel = this.options.resolvedModel || this.options.model;
|
|
89
|
+
const model = configuredModel ? this.resolveModel(configuredModel.replace(/^agy\//, '')) : undefined;
|
|
90
|
+
if (model)
|
|
91
|
+
args.push('--model', model);
|
|
92
|
+
if (this.agyConversationId)
|
|
93
|
+
args.push('--conversation', this.agyConversationId);
|
|
94
|
+
// agy enforces its own print-mode timeout (default 5m). Derive it from the
|
|
95
|
+
// send timeout (+5s margin) so our timer, not agy's, decides the outcome.
|
|
96
|
+
args.push('--print-timeout', `${Math.ceil(timeoutMs / 1000) + 5}s`);
|
|
97
|
+
return args;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Harvest the conversation ID from the agy log file. New conversations log
|
|
101
|
+
* `Created conversation <uuid>`; resumed ones only log lookups, so an
|
|
102
|
+
* existing ID is never overwritten by a miss.
|
|
103
|
+
*/
|
|
104
|
+
_harvestConversationId() {
|
|
105
|
+
// Once harvested (or seeded) the ID is final for the life of the session
|
|
106
|
+
// — skip the synchronous whole-log re-read on every later turn.
|
|
107
|
+
if (this.agyConversationId)
|
|
108
|
+
return;
|
|
109
|
+
try {
|
|
110
|
+
const log = fs.readFileSync(this._logFile, 'utf8');
|
|
111
|
+
this.agyConversationId = extractCreatedAgyConversationId(log);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// Log file missing — agy failed before logging anything
|
|
115
|
+
}
|
|
116
|
+
if (!this.agyConversationId) {
|
|
117
|
+
// Without an ID every later send silently starts a fresh conversation.
|
|
118
|
+
// Make that observable — if this fires on every turn, agy most likely
|
|
119
|
+
// reworded its log line and the harvest regex needs updating.
|
|
120
|
+
this._warnHarvestMiss();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
_warnHarvestMiss() {
|
|
124
|
+
if (this._stats.turns !== 0)
|
|
125
|
+
return;
|
|
126
|
+
this.emit(SESSION_EVENT.LOG, '[agy] no conversation ID found in log after turn — resume unavailable; the next send starts a fresh conversation');
|
|
127
|
+
}
|
|
128
|
+
_run(message, options) {
|
|
129
|
+
const timeout = options.timeout || 300_000;
|
|
130
|
+
const args = this._buildArgs(message, timeout);
|
|
131
|
+
return new Promise((resolve, reject) => {
|
|
132
|
+
let resultText = '';
|
|
133
|
+
let stderr = '';
|
|
134
|
+
let settled = false;
|
|
135
|
+
const proc = spawn(this.engineBin, args, {
|
|
136
|
+
cwd: this.options.cwd,
|
|
137
|
+
env: { ...process.env },
|
|
138
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
139
|
+
});
|
|
140
|
+
this.currentProc = proc;
|
|
141
|
+
const timer = setTimeout(() => {
|
|
142
|
+
if (!settled) {
|
|
143
|
+
settled = true;
|
|
144
|
+
proc.kill('SIGTERM');
|
|
145
|
+
reject(new Error('Timeout waiting for Antigravity response'));
|
|
146
|
+
}
|
|
147
|
+
}, timeout);
|
|
148
|
+
// Plain-text stdout — forward chunks as streaming text
|
|
149
|
+
proc.stdout?.on('data', (data) => {
|
|
150
|
+
const chunk = data.toString();
|
|
151
|
+
resultText += chunk;
|
|
152
|
+
try {
|
|
153
|
+
options.callbacks?.onText?.(chunk);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// User callback error
|
|
157
|
+
}
|
|
158
|
+
this.emit(SESSION_EVENT.TEXT, chunk);
|
|
159
|
+
});
|
|
160
|
+
proc.stderr?.on('data', (data) => {
|
|
161
|
+
const sanitized = sanitizeSecrets(data.toString());
|
|
162
|
+
stderr += sanitized;
|
|
163
|
+
this.emit(SESSION_EVENT.LOG, `[agy-stderr] ${sanitized}`);
|
|
164
|
+
});
|
|
165
|
+
proc.on('close', (code) => {
|
|
166
|
+
clearTimeout(timer);
|
|
167
|
+
this.currentProc = null;
|
|
168
|
+
// Harvest BEFORE the settled check: a turn that hit the wrapper
|
|
169
|
+
// timeout has already rejected (settled), but agy may still have
|
|
170
|
+
// logged `Created conversation <uuid>` before being killed. Skipping
|
|
171
|
+
// the harvest here would lose the ID permanently and every later
|
|
172
|
+
// send would silently start a fresh conversation.
|
|
173
|
+
this._harvestConversationId();
|
|
174
|
+
if (settled)
|
|
175
|
+
return;
|
|
176
|
+
settled = true;
|
|
177
|
+
this._recordTurnComplete();
|
|
178
|
+
const text = resultText.replace(/\n$/, '');
|
|
179
|
+
// No usage events exist in agy — always estimate
|
|
180
|
+
if (text.length > 0 || code === 0) {
|
|
181
|
+
this._stats.tokensIn += estimateTokens(message);
|
|
182
|
+
this._stats.tokensOut += estimateTokens(text);
|
|
183
|
+
this._updateCost();
|
|
184
|
+
}
|
|
185
|
+
this._addHistory({ text, code });
|
|
186
|
+
const event = {
|
|
187
|
+
type: 'result',
|
|
188
|
+
result: text,
|
|
189
|
+
stop_reason: code === 0 ? 'end_turn' : 'error',
|
|
190
|
+
};
|
|
191
|
+
this.emit(SESSION_EVENT.RESULT, event);
|
|
192
|
+
this.emit(SESSION_EVENT.TURN_COMPLETE, event);
|
|
193
|
+
if (code !== 0) {
|
|
194
|
+
reject(new Error(stderr || `Antigravity exited with code ${code}`));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
resolve({ text, event });
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
proc.on('error', (err) => {
|
|
201
|
+
clearTimeout(timer);
|
|
202
|
+
if (!settled) {
|
|
203
|
+
settled = true;
|
|
204
|
+
reject(err);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/** Clean up the per-session log file along with the base teardown. */
|
|
210
|
+
stop() {
|
|
211
|
+
super.stop();
|
|
212
|
+
try {
|
|
213
|
+
fs.unlinkSync(this._logFile);
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
// Never created, or already gone
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/** Override getStats to expose the captured conversation ID. */
|
|
220
|
+
getStats() {
|
|
221
|
+
const base = super.getStats();
|
|
222
|
+
return { ...base, agyConversationId: this.agyConversationId };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=persistent-agy-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent-agy-session.js","sourceRoot":"","sources":["../../src/persistent-agy-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import { spawn } from 'node:child_process';
|
|
14
14
|
import * as readline from 'node:readline';
|
|
15
15
|
import { estimateTokens } from './models.js';
|
|
16
|
+
import { sanitizeSecrets } from './sanitize.js';
|
|
16
17
|
import { SESSION_EVENT } from './constants.js';
|
|
17
18
|
import { BaseOneShotSession } from './base-oneshot-session.js';
|
|
18
19
|
// ─── PersistentCursorSession ────────────────────────────────────────────────
|
|
@@ -91,10 +92,7 @@ export class PersistentCursorSession extends BaseOneShotSession {
|
|
|
91
92
|
}
|
|
92
93
|
});
|
|
93
94
|
proc.stderr?.on('data', (data) => {
|
|
94
|
-
const sanitized = data
|
|
95
|
-
.toString()
|
|
96
|
-
.replace(/CURSOR_API_KEY=[^\s]+/g, 'CURSOR_API_KEY=***')
|
|
97
|
-
.replace(/Bearer [a-zA-Z0-9_-]+/g, 'Bearer ***');
|
|
95
|
+
const sanitized = sanitizeSecrets(data.toString());
|
|
98
96
|
stderr += sanitized;
|
|
99
97
|
this.emit(SESSION_EVENT.LOG, `[cursor-stderr] ${sanitized}`);
|
|
100
98
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-cursor-session.js","sourceRoot":"","sources":["../../src/persistent-cursor-session.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"persistent-cursor-session.js","sourceRoot":"","sources":["../../src/persistent-cursor-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
import { spawn } from 'node:child_process';
|
|
18
18
|
import { EventEmitter } from 'node:events';
|
|
19
19
|
import * as readline from 'node:readline';
|
|
20
|
-
import RE2 from 're2';
|
|
21
20
|
import * as fs from 'node:fs';
|
|
22
21
|
import * as path from 'node:path';
|
|
23
22
|
import { getModelPricing as _getModelPricingBase, } from './types.js';
|
|
24
23
|
import { resolveAlias, estimateTokens } from './models.js';
|
|
24
|
+
import { buildSanitizer } from './sanitize.js';
|
|
25
25
|
import { CONTEXT_HIGH_THRESHOLD, MAX_HISTORY_ITEMS, DEFAULT_HISTORY_LIMIT, SESSION_READY_TIMEOUT_MS, SESSION_READY_FALLBACK_MS, TURN_TIMEOUT_MS, COMPACT_TIMEOUT_MS, STOP_SIGKILL_DELAY_MS, SESSION_EVENT, } from './constants.js';
|
|
26
26
|
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
27
27
|
function getModelPricing(model, engineConfig) {
|
|
@@ -40,36 +40,6 @@ function resolveBin(engineConfig) {
|
|
|
40
40
|
}
|
|
41
41
|
return engineConfig.bin;
|
|
42
42
|
}
|
|
43
|
-
/** Build sanitizer function from config patterns + common defaults */
|
|
44
|
-
function buildSanitizer(engineConfig) {
|
|
45
|
-
const patterns = [
|
|
46
|
-
// Always sanitize Bearer tokens and common API key patterns
|
|
47
|
-
{ re: /Bearer [a-zA-Z0-9_-]+/g, replacement: 'Bearer ***' },
|
|
48
|
-
{ re: /sk-[a-zA-Z0-9_-]{10,}/g, replacement: 'sk-***' },
|
|
49
|
-
];
|
|
50
|
-
if (engineConfig.sanitizePatterns) {
|
|
51
|
-
for (const p of engineConfig.sanitizePatterns) {
|
|
52
|
-
try {
|
|
53
|
-
// RE2 runs in linear time and never backtracks, so a user-supplied
|
|
54
|
-
// sanitize pattern cannot trigger ReDoS on attacker-influenced output.
|
|
55
|
-
patterns.push({ re: new RE2(p, 'g'), replacement: '***' });
|
|
56
|
-
}
|
|
57
|
-
catch (err) {
|
|
58
|
-
// A silently-dropped sanitize pattern means secrets stop being redacted
|
|
59
|
-
// — make it visible so the operator fixes the typo.
|
|
60
|
-
console.warn(`[custom-session:${engineConfig.name}] ignoring invalid sanitizePattern ${JSON.stringify(p)}: ${err.message}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return (text) => {
|
|
65
|
-
let result = text;
|
|
66
|
-
for (const { re, replacement } of patterns) {
|
|
67
|
-
re.lastIndex = 0;
|
|
68
|
-
result = result.replace(re, replacement);
|
|
69
|
-
}
|
|
70
|
-
return result;
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
43
|
// ─── PersistentCustomSession ───────────────────────────────────────────────
|
|
74
44
|
export class PersistentCustomSession extends EventEmitter {
|
|
75
45
|
options;
|
|
@@ -109,7 +79,10 @@ export class PersistentCustomSession extends EventEmitter {
|
|
|
109
79
|
}
|
|
110
80
|
this.engineConfig = config.customEngine;
|
|
111
81
|
this.engineBin = resolveBin(this.engineConfig);
|
|
112
|
-
this.sanitize = buildSanitizer(
|
|
82
|
+
this.sanitize = buildSanitizer({
|
|
83
|
+
extraPatterns: this.engineConfig.sanitizePatterns,
|
|
84
|
+
label: `custom-session:${this.engineConfig.name}`,
|
|
85
|
+
});
|
|
113
86
|
this.options = {
|
|
114
87
|
...config,
|
|
115
88
|
permissionMode: config.permissionMode || 'acceptEdits',
|