@onepointfour-packs/flaredeck-agent 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +16 -0
- package/dist/agent.js +38 -1
- package/dist/agent.js.map +1 -1
- package/dist/approval.js +39 -1
- package/dist/approval.js.map +1 -1
- package/dist/browser.d.ts +19 -0
- package/dist/browser.js +261 -0
- package/dist/browser.js.map +1 -0
- package/dist/config.d.ts +18 -0
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/desperation.d.ts +24 -0
- package/dist/desperation.js +64 -0
- package/dist/desperation.js.map +1 -0
- package/dist/engine-antigravity.d.ts +7 -0
- package/dist/engine-antigravity.js +280 -32
- package/dist/engine-antigravity.js.map +1 -1
- package/dist/engine.d.ts +28 -0
- package/dist/engine.js.map +1 -1
- package/dist/env.d.ts +5 -1
- package/dist/env.js +19 -1
- package/dist/env.js.map +1 -1
- package/dist/environment.d.ts +87 -2
- package/dist/environment.js +213 -11
- package/dist/environment.js.map +1 -1
- package/dist/flaredeck-proxy.d.ts +47 -1
- package/dist/flaredeck-proxy.js +120 -3
- package/dist/flaredeck-proxy.js.map +1 -1
- package/dist/gitguard.d.ts +6 -0
- package/dist/gitguard.js +30 -1
- package/dist/gitguard.js.map +1 -1
- package/dist/github.d.ts +23 -1
- package/dist/github.js +105 -28
- package/dist/github.js.map +1 -1
- package/dist/journal.d.ts +23 -0
- package/dist/journal.js +142 -0
- package/dist/journal.js.map +1 -0
- package/dist/localmcp.d.ts +50 -0
- package/dist/localmcp.js +229 -0
- package/dist/localmcp.js.map +1 -0
- package/dist/main.js +13 -1
- package/dist/main.js.map +1 -1
- package/dist/permissions.d.ts +17 -0
- package/dist/permissions.js +38 -1
- package/dist/permissions.js.map +1 -1
- package/dist/runs.js +3 -2
- package/dist/runs.js.map +1 -1
- package/dist/sandbox.d.ts +34 -0
- package/dist/sandbox.js +122 -2
- package/dist/sandbox.js.map +1 -1
- package/dist/schedules.d.ts +1 -1
- package/dist/schedules.js +3 -2
- package/dist/schedules.js.map +1 -1
- package/dist/serve.js +461 -39
- package/dist/serve.js.map +1 -1
- package/dist/setup.d.ts +1 -0
- package/dist/setup.js +99 -0
- package/dist/setup.js.map +1 -0
- package/dist/stream.d.ts +1 -0
- package/dist/team.d.ts +1 -1
- package/dist/team.js +3 -2
- package/dist/team.js.map +1 -1
- package/dist/ui.d.ts +2 -0
- package/dist/ui.js +34 -39
- package/dist/ui.js.map +1 -1
- package/dist/updater-python.d.ts +19 -0
- package/dist/updater-python.js +149 -0
- package/dist/updater-python.js.map +1 -0
- package/dist/workspace.d.ts +2 -0
- package/dist/workspace.js +1 -1
- package/dist/workspace.js.map +1 -1
- package/dist/worktree.d.ts +39 -1
- package/dist/worktree.js +147 -4
- package/dist/worktree.js.map +1 -1
- package/package.json +3 -2
- package/python/sidecar.py +209 -7
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Noticing when an agent has stopped working and started struggling.
|
|
3
|
+
*
|
|
4
|
+
* A turn went: refused for reading outside its workspace, so it read the same place through
|
|
5
|
+
* `node -e` instead; refused for `git push`, so it looked for `push_branch` on PATH, then as a
|
|
6
|
+
* git alias, then under every parent directory. None of that was the work. It was an agent
|
|
7
|
+
* routing around the harness because the harness had told it to do something it could not do —
|
|
8
|
+
* and it would have carried on until the turn ran out.
|
|
9
|
+
*
|
|
10
|
+
* The harness can see this without a model. It knows every refusal and every command. Three
|
|
11
|
+
* refusals in one turn, or the same command four times, is not a bad patch of luck: it is an
|
|
12
|
+
* agent that needs to stop and say so. Its job is meant to be easy — change the code, check the
|
|
13
|
+
* change. Anything else is the harness's problem to fix, not the agent's to work around.
|
|
14
|
+
*/
|
|
15
|
+
/** Said to the agent when it has clearly started fighting the tools. */
|
|
16
|
+
export const STEP_BACK = 'STOP. You have been refused several times in this turn and you are now working around the ' +
|
|
17
|
+
'harness rather than doing the card. That is never the right move: a refusal means the harness ' +
|
|
18
|
+
'is wrong, the turn lacks something, or you have misunderstood what you have — none of which ' +
|
|
19
|
+
'you can fix by finding another way through.\n\n' +
|
|
20
|
+
'Your job is small on purpose: change the code, check the change, say what you did. Everything ' +
|
|
21
|
+
'else — branches, committing, publishing, the environment — is the harness\'s and it has tools ' +
|
|
22
|
+
'for it.\n\n' +
|
|
23
|
+
'Right now: say on the card what you were trying to do and what refused you, message your lead ' +
|
|
24
|
+
'with the same in one line, and stop. Do not try another way around it.';
|
|
25
|
+
/**
|
|
26
|
+
* Only SHELL commands count as repeats.
|
|
27
|
+
*
|
|
28
|
+
* The first version compared tool names, and `view_file` is identical every time — so an agent
|
|
29
|
+
* reading four files looked exactly like an agent trying the same thing four times, and a
|
|
30
|
+
* perfectly ordinary turn was stopped on its first refusal. Reading repeatedly is the work.
|
|
31
|
+
* Running the same shell command repeatedly is the tell, and a shell line carries its arguments,
|
|
32
|
+
* so two of them can actually be compared.
|
|
33
|
+
*/
|
|
34
|
+
const SAME_ENOUGH = (a, b) => {
|
|
35
|
+
if (!a.startsWith('run_command') || !b.startsWith('run_command'))
|
|
36
|
+
return false;
|
|
37
|
+
const strip = (s) => s.replace(/['"`]/g, '').replace(/\s+/g, ' ').slice(0, 48).toLowerCase();
|
|
38
|
+
return strip(a) === strip(b);
|
|
39
|
+
};
|
|
40
|
+
export function watchForDesperation(refusalsAllowed = 3, repeatsAllowed = 4) {
|
|
41
|
+
let refusals = 0;
|
|
42
|
+
let told = false;
|
|
43
|
+
const recent = [];
|
|
44
|
+
return {
|
|
45
|
+
refusals: () => refusals,
|
|
46
|
+
warned: () => told,
|
|
47
|
+
saw(line) {
|
|
48
|
+
if (told)
|
|
49
|
+
return null;
|
|
50
|
+
if (/^refused · /.test(line))
|
|
51
|
+
refusals += 1;
|
|
52
|
+
recent.push(line);
|
|
53
|
+
if (recent.length > 12)
|
|
54
|
+
recent.shift();
|
|
55
|
+
const repeats = recent.filter((l) => SAME_ENOUGH(l, line)).length;
|
|
56
|
+
if (refusals >= refusalsAllowed || repeats >= repeatsAllowed) {
|
|
57
|
+
told = true;
|
|
58
|
+
return STEP_BACK;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=desperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desperation.js","sourceRoot":"","sources":["../src/desperation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,SAAS,GACpB,4FAA4F;IAC5F,gGAAgG;IAChG,8FAA8F;IAC9F,iDAAiD;IACjD,gGAAgG;IAChG,gGAAgG;IAChG,aAAa;IACb,gGAAgG;IAChG,wEAAwE,CAAC;AAU3E;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;IACpD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACrG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,eAAe,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC;IACzE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;QACxB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;QAClB,GAAG,CAAC,IAAY;YACd,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YACtB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,QAAQ,IAAI,CAAC,CAAC;YAE5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAElE,IAAI,QAAQ,IAAI,eAAe,IAAI,OAAO,IAAI,cAAc,EAAE,CAAC;gBAC7D,IAAI,GAAG,IAAI,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -11,6 +11,13 @@ export declare class AntigravityEngine implements Engine {
|
|
|
11
11
|
readonly capabilities: EngineCapabilities;
|
|
12
12
|
run(brief: string, ctx: RunContext): EngineRun;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* The interpreter the harness installed for itself, and whether the one in use IS that. Only that
|
|
16
|
+
* one may be updated: an interpreter the user pointed at, or a system python3 that happens to have
|
|
17
|
+
* the SDK, is theirs.
|
|
18
|
+
*/
|
|
19
|
+
export declare const managedPython: () => string;
|
|
20
|
+
export declare const usingManagedPython: () => boolean;
|
|
14
21
|
export declare function pythonWithSdk(log: (text: string) => void): string;
|
|
15
22
|
/**
|
|
16
23
|
* How this machine talks to Gemini — worked out, never asked for.
|
|
@@ -3,11 +3,16 @@ import { existsSync } from 'node:fs';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { createServer } from 'node:http';
|
|
5
5
|
import { createInterface } from 'node:readline';
|
|
6
|
-
import { dirname, join, resolve } from 'node:path';
|
|
6
|
+
import { basename, dirname, join, resolve } from 'node:path';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
8
|
import { CouldNotWork } from './engine.js';
|
|
9
9
|
import { judgeCommand } from './jevguard.js';
|
|
10
|
-
import {
|
|
10
|
+
import { FLAREDECK_ALLOWED } from './permissions.js';
|
|
11
|
+
import { childEnv } from './env.js';
|
|
12
|
+
import { CLAIMS_DONE, cardIn, workFooter } from './flaredeck-proxy.js';
|
|
13
|
+
import { serveFilteredFlaredeck, serveToolSets } from './localmcp.js';
|
|
14
|
+
import { blockedGitCommand } from './gitguard.js';
|
|
15
|
+
import { foreignWorktree, readsOutside, writesOutside } from './sandbox.js';
|
|
11
16
|
/**
|
|
12
17
|
* The writes an agent makes in the ordinary course of working its own card: saying what it did,
|
|
13
18
|
* leaving a handover, moving the card it holds, asking for a person when it is stuck. None of
|
|
@@ -20,6 +25,8 @@ import { FLAREDECK_READ_TOOLS } from './permissions.js';
|
|
|
20
25
|
* is the work itself; `run_command` is deliberately NOT here — it is the one that can reach past
|
|
21
26
|
* the workspace, and it is judged separately.
|
|
22
27
|
*/
|
|
28
|
+
/** The harness's own MCP servers, served on loopback by `serveToolSets`. */
|
|
29
|
+
const HARNESS_SERVERS = new Set(['git', 'team', 'runs', 'schedules', 'browser']);
|
|
23
30
|
const WORKSPACE_TOOLS = [
|
|
24
31
|
'view_file',
|
|
25
32
|
'find_file',
|
|
@@ -60,11 +67,49 @@ import { loadProviders } from './providers.js';
|
|
|
60
67
|
* on this key is `gemini-3.1-pro-preview` — a preview id, which is the kind that disappears and
|
|
61
68
|
* takes an unattended agent down with it — and `gemini-2.5-pro` is older than these.
|
|
62
69
|
*/
|
|
70
|
+
/**
|
|
71
|
+
* One model for every size.
|
|
72
|
+
*
|
|
73
|
+
* `small` used to mean gemini-3.5-flash-lite, and since an unsized turn falls back to `small`,
|
|
74
|
+
* most work ran on the lightest model there is — including editing TypeScript. HR-0623 is what
|
|
75
|
+
* that buys: a four-line pluralisation fix that broke "3 of 8 people" into "3 people of 8
|
|
76
|
+
* people", took three attempts, and came with an offered screenshot that did not exist.
|
|
77
|
+
*
|
|
78
|
+
* Sizing still routes the OTHER engine, and still decides intake. It just no longer decides how
|
|
79
|
+
* capable the model doing the work is.
|
|
80
|
+
*/
|
|
63
81
|
const GEMINI_MODELS = {
|
|
64
|
-
small: 'gemini-3.
|
|
82
|
+
small: 'gemini-3.8-flash',
|
|
65
83
|
medium: 'gemini-3.8-flash',
|
|
66
84
|
large: 'gemini-3.8-flash',
|
|
67
85
|
};
|
|
86
|
+
/**
|
|
87
|
+
* How hard it thinks, which is now the only thing SIZE changes.
|
|
88
|
+
*
|
|
89
|
+
* The SDK takes minimal | low | medium | high | extra_high and we were setting none of it. Since
|
|
90
|
+
* all three sizes now use one model, this is where a big card and a small one differ.
|
|
91
|
+
*
|
|
92
|
+
* `small` is medium rather than low: low is for reformatting and regex, and a four-line
|
|
93
|
+
* pluralisation fix is exactly the kind of card that has been going wrong. Anything bigger gets
|
|
94
|
+
* high, which is what pays off on multi-file debugging.
|
|
95
|
+
*
|
|
96
|
+
* Nothing uses extra_high. Medium is 3.8-flash's own default and high is as far as the published
|
|
97
|
+
* guidance for this model goes; pushing a flash model past that spends tokens for little, and an
|
|
98
|
+
* unsupported level is a tuning knob failing a card.
|
|
99
|
+
*/
|
|
100
|
+
const GEMINI_THINKING = {
|
|
101
|
+
small: 'medium',
|
|
102
|
+
medium: 'high',
|
|
103
|
+
large: 'high',
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Where this agent may read: its checkout, the worktrees cut from it, and its scratch space.
|
|
107
|
+
* The worktrees live BESIDE the repo rather than inside it, so the repo alone is not enough.
|
|
108
|
+
*/
|
|
109
|
+
function workspaceRoots(ctx) {
|
|
110
|
+
const repo = ctx.config.repo.replace(/\/+$/, '');
|
|
111
|
+
return [repo, join(dirname(repo), `.worktrees-${basename(repo)}`), ...(ctx.sandbox ? [ctx.sandbox] : [])];
|
|
112
|
+
}
|
|
68
113
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
69
114
|
const SIDECAR = resolve(join(HERE, '..', 'python', 'sidecar.py'));
|
|
70
115
|
export class AntigravityEngine {
|
|
@@ -80,31 +125,106 @@ export class AntigravityEngine {
|
|
|
80
125
|
denyToolCall: true,
|
|
81
126
|
rewriteToolInput: true,
|
|
82
127
|
redactToolOutput: false,
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
steerMidTurn:
|
|
128
|
+
// The sidecar reads the response's chunk stream rather than awaiting its text, so a turn can
|
|
129
|
+
// be interrupted: a steer cancels the response in flight and becomes the next message, with
|
|
130
|
+
// the conversation's history intact.
|
|
131
|
+
steerMidTurn: true,
|
|
87
132
|
resumeSession: true,
|
|
88
133
|
};
|
|
89
134
|
run(brief, ctx) {
|
|
90
135
|
let child = null;
|
|
91
136
|
let guard = null;
|
|
137
|
+
let local = null;
|
|
138
|
+
// The checkout this turn works in. It was `config.repo` — the SHARED checkout every worktree
|
|
139
|
+
// is cut from — so a Gemini agent branched, edited and committed in the wrong place however
|
|
140
|
+
// carefully the harness prepared a worktree for it. HR-0033 is what that looks like from the
|
|
141
|
+
// outside: a branch pushed from the shared checkout containing another card's commit and none
|
|
142
|
+
// of its own work.
|
|
143
|
+
// Two different questions, and conflating them sent an agent hunting the whole filesystem.
|
|
144
|
+
//
|
|
145
|
+
// WRITABLE is the one directory this turn may change: its worktree, or scratch space when it
|
|
146
|
+
// has no card. CWD is where it starts looking, and scratch space is an EMPTY directory — a
|
|
147
|
+
// turn woken by a message began there, found no repository, and ran `find / -name
|
|
148
|
+
// OrgChart.tsx`. It needs to SEE the checkout to orient; it just must not write to it.
|
|
149
|
+
const writable = ctx.sandbox && existsSync(ctx.sandbox) ? ctx.sandbox : ctx.config.repo;
|
|
150
|
+
const cwd = existsSync(join(writable, '.git')) ? writable : ctx.config.repo;
|
|
92
151
|
const events = (async function* () {
|
|
152
|
+
// Two sources, one stream: the guard sees the tools as they happen, the sidecar's stdout
|
|
153
|
+
// carries the text when the turn ends. A `for await` over stdout alone cannot interleave
|
|
154
|
+
// the first, and stdout stays silent until the end — so there is nothing to piggyback on.
|
|
93
155
|
const pending = [];
|
|
94
|
-
|
|
156
|
+
let wake = null;
|
|
157
|
+
const bump = () => { const w = wake; wake = null; w?.(); };
|
|
158
|
+
const push = (event) => { pending.push(event); bump(); };
|
|
159
|
+
const { server, url } = await startGuard(ctx, push);
|
|
95
160
|
guard = server;
|
|
96
|
-
|
|
161
|
+
// The harness's own tool sets, over local MCP. Same definitions the other engine runs in
|
|
162
|
+
// process — git, team, runs, schedules — which this engine simply was not being given.
|
|
163
|
+
const served = await serveToolSets({
|
|
164
|
+
...(ctx.tools.git ? { git: ctx.tools.git.server } : {}),
|
|
165
|
+
...(ctx.tools.team ? { team: ctx.tools.team.server } : {}),
|
|
166
|
+
...(ctx.tools.runs ? { runs: ctx.tools.runs.server } : {}),
|
|
167
|
+
...(ctx.tools.schedules ? { schedules: ctx.tools.schedules.server } : {}),
|
|
168
|
+
...(ctx.tools.browser ? { browser: ctx.tools.browser.server } : {}),
|
|
169
|
+
}, (note) => push({ kind: 'tool', name: note }));
|
|
170
|
+
local = served;
|
|
171
|
+
// FlareDeck through the harness rather than straight at the server: the SDK lists tools
|
|
172
|
+
// itself, so a direct URL is the harness having no say in what this engine is offered.
|
|
173
|
+
const fd = ctx.keep
|
|
174
|
+
? await serveFilteredFlaredeck({
|
|
175
|
+
url: ctx.config.mcpUrl,
|
|
176
|
+
token: async () => ctx.token,
|
|
177
|
+
keep: ctx.keep,
|
|
178
|
+
onError: (note) => push({ kind: 'tool', name: note }),
|
|
179
|
+
watch: async (name, args) => {
|
|
180
|
+
ctx.noteCard?.(cardIn(args));
|
|
181
|
+
// Said and saved, together — the same footer the other engine's proxy appends.
|
|
182
|
+
if (ctx.saved && (name === 'create-card-comment' || name === 'send-message')) {
|
|
183
|
+
const field = name === 'send-message' ? 'message' : 'comment';
|
|
184
|
+
const body = args[field];
|
|
185
|
+
const footer = workFooter(await ctx.saved());
|
|
186
|
+
if (typeof body === 'string' && footer && !body.includes('*— '))
|
|
187
|
+
args[field] = body + footer;
|
|
188
|
+
}
|
|
189
|
+
if (ctx.finish && CLAIMS_DONE(name, args))
|
|
190
|
+
return ctx.finish();
|
|
191
|
+
return null;
|
|
192
|
+
},
|
|
193
|
+
})
|
|
194
|
+
: null;
|
|
195
|
+
if (fd) {
|
|
196
|
+
// Said out loud because it was silently not happening: the filter was in the build, worked
|
|
197
|
+
// in isolation, and the SDK still cached 41 tool schemas for a worker.
|
|
198
|
+
push({ kind: 'tool', name: `flaredeck via the harness · ${fd.dropped()} tool(s) withheld` });
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
push({ kind: 'tool', name: 'flaredeck direct — NOT filtered (no tool policy for this agent)' });
|
|
202
|
+
}
|
|
203
|
+
push({
|
|
204
|
+
kind: 'tool',
|
|
205
|
+
name: `model: ${GEMINI_MODELS[ctx.size ?? 'small']} · thinking ${GEMINI_THINKING[ctx.size ?? 'small']}`
|
|
206
|
+
+ `${ctx.size ? ` (${ctx.size})` : ''}`,
|
|
207
|
+
});
|
|
208
|
+
if (served.servers.length) {
|
|
209
|
+
push({ kind: 'tool', name: `harness tools: ${served.servers.map((x) => x.name).join(', ')}` });
|
|
210
|
+
}
|
|
211
|
+
const python = pythonWithSdk((t) => { push({ kind: 'tool', name: t }); });
|
|
97
212
|
while (pending.length)
|
|
98
213
|
yield pending.shift();
|
|
99
214
|
child = spawn(python, [SIDECAR], {
|
|
100
|
-
cwd
|
|
101
|
-
env:
|
|
215
|
+
cwd,
|
|
216
|
+
env: childEnv(geminiEnv()),
|
|
102
217
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
103
218
|
});
|
|
104
219
|
// The sidecar's stderr is the SDK's own complaints — a missing wheel, a bad key. Losing it
|
|
105
220
|
// would turn every failure into "the agent did nothing".
|
|
106
221
|
let stderr = '';
|
|
107
222
|
child.stderr.on('data', (d) => { stderr += String(d); });
|
|
223
|
+
// Without this, a failed spawn — a missing interpreter, a cwd that is not there — raises an
|
|
224
|
+
// unhandled 'error' on the ChildProcess and takes the WHOLE DAEMON down: every other card,
|
|
225
|
+
// the queue, the pane. It is one card that could not be worked.
|
|
226
|
+
const spawnFailed = { why: null };
|
|
227
|
+
child.on('error', (e) => { spawnFailed.why = e; });
|
|
108
228
|
// A sidecar that dies before saying anything — a missing wheel, the wrong interpreter, a
|
|
109
229
|
// bad key — would otherwise end this generator with no events and no error, which reads as
|
|
110
230
|
// "the agent did nothing" and is the worst way to fail. Its exit is recorded here and
|
|
@@ -114,27 +234,51 @@ export class AntigravityEngine {
|
|
|
114
234
|
child.stdin.write(`${JSON.stringify({
|
|
115
235
|
type: 'run',
|
|
116
236
|
brief,
|
|
117
|
-
|
|
237
|
+
// The standing brief, as system instructions. This was never sent: the sidecar defaulted
|
|
238
|
+
// it to an empty string, so a Gemini agent ran with NO standing instructions at all —
|
|
239
|
+
// nothing about being unattended, nothing about its own account, none of the rules the
|
|
240
|
+
// other engine gets on every turn. It was being judged on conventions it had never read.
|
|
241
|
+
...(ctx.standing ? { system_instructions: ctx.standing } : {}),
|
|
242
|
+
cwd,
|
|
243
|
+
// What it may CHANGE, which is not always where it starts. The SDK confines its built-in
|
|
244
|
+
// file tools to this, so a turn with no card cannot edit the shared checkout it is
|
|
245
|
+
// reading from.
|
|
246
|
+
workspaces: [writable],
|
|
118
247
|
guard_url: url,
|
|
119
248
|
// FlareDeck over HTTP with the harness's own token, rather than reimplementing the tools
|
|
120
|
-
// in Python
|
|
121
|
-
//
|
|
122
|
-
mcp: [
|
|
249
|
+
// in Python — and the harness's own sets alongside it, served from the same definitions
|
|
250
|
+
// the other engine uses. Neither is a second implementation.
|
|
251
|
+
mcp: [
|
|
252
|
+
{
|
|
123
253
|
name: ctx.config.mcpServerName,
|
|
124
|
-
url: ctx.config.mcpUrl,
|
|
125
|
-
|
|
126
|
-
|
|
254
|
+
url: fd ? fd.url : ctx.config.mcpUrl,
|
|
255
|
+
// The harness's own endpoint is on loopback and adds the token itself.
|
|
256
|
+
headers: fd ? {} : { Authorization: `Bearer ${ctx.token}` },
|
|
257
|
+
},
|
|
258
|
+
// Loopback, so no header: nothing off this machine can reach them.
|
|
259
|
+
...served.servers.map((x) => ({ name: x.name, url: x.url, headers: {} })),
|
|
260
|
+
],
|
|
127
261
|
// What the harness discovered on this server moments ago. The SDK exposes no way to ask a
|
|
128
262
|
// live session what tools it has, and the daemon refuses a card when the count is zero —
|
|
129
263
|
// rightly, since a session that silently lost FlareDeck would work the card blind.
|
|
130
|
-
tool_names:
|
|
264
|
+
tool_names: [
|
|
265
|
+
...(ctx.tools.flaredeck?.toolNames ?? []),
|
|
266
|
+
...(ctx.tools.git?.toolNames ?? []),
|
|
267
|
+
...(ctx.tools.team?.toolNames ?? []),
|
|
268
|
+
...(ctx.tools.runs?.toolNames ?? []),
|
|
269
|
+
...(ctx.tools.schedules?.toolNames ?? []),
|
|
270
|
+
...(ctx.tools.browser?.toolNames ?? []),
|
|
271
|
+
],
|
|
131
272
|
...(ctx.resume ? { resume: ctx.resume } : {}),
|
|
132
273
|
// Mapped from the SIZE, never from `ctx.model` — that is the other engine's name for the
|
|
133
274
|
// same decision, and `claude-sonnet-5-5` is a 404 here that fails the card on every retry.
|
|
134
275
|
...(GEMINI_MODELS[ctx.size ?? 'small'] ? { model: GEMINI_MODELS[ctx.size ?? 'small'] } : {}),
|
|
276
|
+
thinking_level: GEMINI_THINKING[ctx.size ?? 'small'],
|
|
135
277
|
})}\n`);
|
|
136
278
|
let sawEvent = false;
|
|
137
|
-
|
|
279
|
+
let failure = null;
|
|
280
|
+
let finished = false;
|
|
281
|
+
const pump = (async () => {
|
|
138
282
|
for await (const line of createInterface({ input: child.stdout })) {
|
|
139
283
|
if (!line.trim())
|
|
140
284
|
continue;
|
|
@@ -154,9 +298,14 @@ export class AntigravityEngine {
|
|
|
154
298
|
if (msg.type === 'event') {
|
|
155
299
|
sawEvent = true;
|
|
156
300
|
const { type: _t, ...event } = msg;
|
|
157
|
-
|
|
301
|
+
push(event);
|
|
158
302
|
}
|
|
159
303
|
}
|
|
304
|
+
if (!sawEvent && spawnFailed.why) {
|
|
305
|
+
throw new CouldNotWork(`The Gemini sidecar could not be started: ${spawnFailed.why.message}\n` +
|
|
306
|
+
`interpreter: ${python}\nworking directory: ${cwd}\n` +
|
|
307
|
+
`An ENOENT here names the interpreter even when the missing thing is the directory.`);
|
|
308
|
+
}
|
|
160
309
|
if (!sawEvent) {
|
|
161
310
|
const why = ended.at ? `exited ${ended.at.code ?? ended.at.signal}` : 'produced nothing';
|
|
162
311
|
throw new CouldNotWork(`The Gemini sidecar ${why} without starting.\n` +
|
|
@@ -164,17 +313,38 @@ export class AntigravityEngine {
|
|
|
164
313
|
`Check that ${python} has the SDK: \`pip install google-antigravity\`, or point ` +
|
|
165
314
|
`FLAREDECK_AGENT_PYTHON at an interpreter that does.`);
|
|
166
315
|
}
|
|
316
|
+
})().catch((e) => { failure = e; }).finally(() => { finished = true; bump(); });
|
|
317
|
+
try {
|
|
318
|
+
for (;;) {
|
|
319
|
+
while (pending.length)
|
|
320
|
+
yield pending.shift();
|
|
321
|
+
if (finished)
|
|
322
|
+
break;
|
|
323
|
+
await new Promise((resolve) => { wake = resolve; });
|
|
324
|
+
}
|
|
325
|
+
if (failure)
|
|
326
|
+
throw failure;
|
|
167
327
|
}
|
|
168
328
|
finally {
|
|
169
329
|
guard?.close();
|
|
330
|
+
local?.close();
|
|
331
|
+
fd?.close();
|
|
170
332
|
child?.kill();
|
|
333
|
+
await pump;
|
|
171
334
|
}
|
|
172
335
|
})();
|
|
173
336
|
return {
|
|
174
337
|
events,
|
|
175
|
-
async steer() {
|
|
176
|
-
|
|
177
|
-
|
|
338
|
+
async steer(text) {
|
|
339
|
+
if (!child?.stdin.writable)
|
|
340
|
+
return false;
|
|
341
|
+
try {
|
|
342
|
+
child.stdin.write(`${JSON.stringify({ type: 'steer', text })}\n`);
|
|
343
|
+
return true;
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
178
348
|
},
|
|
179
349
|
async stop() {
|
|
180
350
|
try {
|
|
@@ -213,6 +383,13 @@ function hasSdk(python) {
|
|
|
213
383
|
return false;
|
|
214
384
|
}
|
|
215
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* The interpreter the harness installed for itself, and whether the one in use IS that. Only that
|
|
388
|
+
* one may be updated: an interpreter the user pointed at, or a system python3 that happens to have
|
|
389
|
+
* the SDK, is theirs.
|
|
390
|
+
*/
|
|
391
|
+
export const managedPython = () => MANAGED_PYTHON;
|
|
392
|
+
export const usingManagedPython = () => resolvedPython === MANAGED_PYTHON;
|
|
216
393
|
export function pythonWithSdk(log) {
|
|
217
394
|
if (resolvedPython)
|
|
218
395
|
return resolvedPython;
|
|
@@ -290,7 +467,11 @@ function gcloudProject() {
|
|
|
290
467
|
* would have them answering each other's tool calls. Bound to 127.0.0.1 so nothing off this
|
|
291
468
|
* machine can reach it.
|
|
292
469
|
*/
|
|
293
|
-
async function startGuard(ctx
|
|
470
|
+
async function startGuard(ctx,
|
|
471
|
+
// Every tool this agent uses is consulted here, which makes the guard the only place that knows
|
|
472
|
+
// what a Gemini turn is DOING while it does it. One `agent.chat()` returns at the very end, so
|
|
473
|
+
// without this the pane has nothing to show for minutes at a time.
|
|
474
|
+
saw) {
|
|
294
475
|
const server = createServer((req, res) => {
|
|
295
476
|
let body = '';
|
|
296
477
|
req.on('data', (d) => { body += d; });
|
|
@@ -301,19 +482,47 @@ async function startGuard(ctx) {
|
|
|
301
482
|
}
|
|
302
483
|
catch { /* answered as a denial below */ }
|
|
303
484
|
const reply = (o) => { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify(o)); };
|
|
485
|
+
// A refusal the person watching cannot see looks like an agent flailing for no reason —
|
|
486
|
+
// which is exactly how it looked. Both the model and the pane are told, from one place, so
|
|
487
|
+
// a guard added later cannot be silent to either by forgetting.
|
|
488
|
+
const deny = (why) => {
|
|
489
|
+
saw({ kind: 'tool', name: `refused · ${why.replace(/\s+/g, ' ').slice(0, 110)}` });
|
|
490
|
+
return reply({ allow: false, reason: why });
|
|
491
|
+
};
|
|
304
492
|
if (req.url === '/tool-call') {
|
|
493
|
+
// Not reported here: the turn's own chunk stream names every tool call, with its
|
|
494
|
+
// arguments and any failure. This hook ran before that existed, and keeping it would
|
|
495
|
+
// print each call twice.
|
|
305
496
|
// The same pre-approval the other engine gets from `allowedTools`: FlareDeck's READ tools
|
|
306
497
|
// never reach the decider. Without this every get-card-details would post an approval
|
|
307
498
|
// request on a card and wait for a person, which is not an agent.
|
|
308
499
|
const name = String(payload.name ?? '');
|
|
309
500
|
const fromFlaredeck = String(payload.server ?? '') === ctx.config.mcpServerName;
|
|
310
|
-
if (fromFlaredeck &&
|
|
501
|
+
if (fromFlaredeck && FLAREDECK_ALLOWED.includes(name)) {
|
|
502
|
+
return reply({ allow: true });
|
|
503
|
+
}
|
|
504
|
+
if (fromFlaredeck && ctx.noteCard)
|
|
505
|
+
ctx.noteCard(cardIn((payload.args ?? {})));
|
|
506
|
+
// The harness's OWN sets, now served over local MCP. They are pre-approved exactly as
|
|
507
|
+
// they are for the other engine, where they sit in `allowedTools` — the harness wrote
|
|
508
|
+
// them and each gates itself where it needs to (merge_and_promote asks a person inside
|
|
509
|
+
// itself). Without this they would reach the decider and stop for approval, which is how
|
|
510
|
+
// you give an agent a publish tool it still cannot use.
|
|
511
|
+
if (HARNESS_SERVERS.has(String(payload.server ?? ''))) {
|
|
311
512
|
return reply({ allow: true });
|
|
312
513
|
}
|
|
313
|
-
//
|
|
314
|
-
//
|
|
315
|
-
|
|
316
|
-
|
|
514
|
+
// The same finish gate the other engine gets in its tool proxy. This engine reaches
|
|
515
|
+
// FlareDeck over HTTP, so the guard is the only place the harness still sees the call.
|
|
516
|
+
if (fromFlaredeck && ctx.finish && CLAIMS_DONE(name, (payload.args ?? {}))) {
|
|
517
|
+
const why = await ctx.finish();
|
|
518
|
+
if (why)
|
|
519
|
+
return deny(why);
|
|
520
|
+
}
|
|
521
|
+
// Working in its own checkout is the job too. The other engine gets the same freedom from
|
|
522
|
+
// auto mode; without it a Gemini agent could not open a file. These reach the directory
|
|
523
|
+
// the sidecar was started in, which is the card's worktree — that is enforced by WHERE it
|
|
524
|
+
// runs, not by this list, and the comment that used to claim it here was wrong for as
|
|
525
|
+
// long as the cwd was the shared checkout.
|
|
317
526
|
if (!payload.server && WORKSPACE_TOOLS.includes(name)) {
|
|
318
527
|
return reply({ allow: true });
|
|
319
528
|
}
|
|
@@ -321,6 +530,42 @@ async function startGuard(ctx) {
|
|
|
321
530
|
// SAME Jev gate the other engine's Bash does — not a second copy of the rules.
|
|
322
531
|
if (!payload.server && name === 'run_command') {
|
|
323
532
|
const command = String(payload.args?.CommandLine ?? '');
|
|
533
|
+
// Reads outside the workspace. Everything this card needs is in the checkout or its
|
|
534
|
+
// worktrees; the rest of the home directory is other people's work and the harness's
|
|
535
|
+
// own keys.
|
|
536
|
+
const nosy = readsOutside(command, [...workspaceRoots(ctx), `${homedir()}/.gemini/antigravity`], homedir());
|
|
537
|
+
if (nosy)
|
|
538
|
+
return deny(nosy);
|
|
539
|
+
// Writes outside the one writable directory, refused exactly as the other engine
|
|
540
|
+
// refuses them. The SDK confines its own file tools to the workspace; the shell is not
|
|
541
|
+
// one of its tools, so without this a turn could write anywhere it could reach.
|
|
542
|
+
const mayChange = ctx.sandbox && existsSync(ctx.sandbox) ? ctx.sandbox : ctx.config.repo;
|
|
543
|
+
const strays = writesOutside(command, mayChange);
|
|
544
|
+
if (strays)
|
|
545
|
+
return deny(strays);
|
|
546
|
+
// `git push` cannot work here — the remote's pushurl is deliberately dead so that one
|
|
547
|
+
// sanctioned door does the publishing. The other engine has a push_branch tool; this
|
|
548
|
+
// one has no way to reach it, so the guard performs the same publish when it is asked.
|
|
549
|
+
// Its own checkout, like the other engine's sandbox hook. Sibling worktrees look
|
|
550
|
+
// identical, so following a path out of a card comment wastes a whole turn.
|
|
551
|
+
if (ctx.sandbox) {
|
|
552
|
+
const elsewhere = foreignWorktree(command, ctx.sandbox);
|
|
553
|
+
if (elsewhere)
|
|
554
|
+
return deny(elsewhere);
|
|
555
|
+
}
|
|
556
|
+
// The hard rules first — the ones the other engine gets from gitGuard. This path went
|
|
557
|
+
// straight to Jev, so publishing and remote rewriting were only ever soft-judged here.
|
|
558
|
+
const forbidden = blockedGitCommand(command);
|
|
559
|
+
if (forbidden && !/(^|[\s;&|(])git\b[^\n;&|]*\bpush\b/.test(command)) {
|
|
560
|
+
return deny(forbidden);
|
|
561
|
+
}
|
|
562
|
+
if (/(^|[\s;&|(])git\b[^\n;&|]*\bpush\b/.test(command) && ctx.publish) {
|
|
563
|
+
const result = await ctx.publish();
|
|
564
|
+
saw({ kind: 'tool', name: `publish · ${result.ok ? 'pushed' : 'refused'}` });
|
|
565
|
+
return deny(result.text);
|
|
566
|
+
}
|
|
567
|
+
if (forbidden)
|
|
568
|
+
return deny(forbidden);
|
|
324
569
|
const verdict = await judgeCommand({
|
|
325
570
|
apiKey: loadProviders().openrouter?.apiKey ?? '',
|
|
326
571
|
decider: ctx.decider,
|
|
@@ -329,7 +574,10 @@ async function startGuard(ctx) {
|
|
|
329
574
|
repo: ctx.config.repo,
|
|
330
575
|
card: () => null,
|
|
331
576
|
}, command);
|
|
332
|
-
|
|
577
|
+
// Jev declining without words still has to say something useful.
|
|
578
|
+
return verdict.allow
|
|
579
|
+
? reply({ allow: true })
|
|
580
|
+
: deny(verdict.reason || 'The command guard declined this and gave no reason. Do not retry it unchanged.');
|
|
333
581
|
}
|
|
334
582
|
// Reporting on its own card is the JOB, not a privilege. The other engine runs in auto
|
|
335
583
|
// mode, where a classifier waves routine calls through before they ever reach a decider;
|
|
@@ -341,7 +589,7 @@ async function startGuard(ctx) {
|
|
|
341
589
|
return reply({ allow: true });
|
|
342
590
|
}
|
|
343
591
|
const decision = await ctx.decider({ toolName: String(payload.name ?? 'unknown'), input: payload.args ?? {} }, { signal: new AbortController().signal });
|
|
344
|
-
return
|
|
592
|
+
return decision.allow ? reply({ allow: true }) : deny(decision.reason);
|
|
345
593
|
}
|
|
346
594
|
// The engine cannot redact, so this is a report, not a rewrite — the harness decides what
|
|
347
595
|
// to do about it, and at minimum it is in the log rather than nowhere.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-antigravity.js","sourceRoot":"","sources":["../src/engine-antigravity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine-antigravity.js","sourceRoot":"","sources":["../src/engine-antigravity.ts"],"names":[],"mappings":"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"}
|