autodev-cli 1.4.189 → 1.4.191
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/out/providers/acp/AcpSession.d.ts +188 -0
- package/out/providers/acp/AcpSession.js +683 -0
- package/out/providers/acp/AcpSession.js.map +1 -0
- package/out/providers/grok/GrokAcpSession.d.ts +11 -112
- package/out/providers/grok/GrokAcpSession.js +40 -493
- package/out/providers/grok/GrokAcpSession.js.map +1 -1
- package/out/providers/grok/authClassify.d.ts +36 -0
- package/out/providers/grok/authClassify.js +44 -1
- package/out/providers/grok/authClassify.js.map +1 -1
- package/out/providers/grok/tui.js +94 -3
- package/out/providers/grok/tui.js.map +1 -1
- package/out/providers/opencode/acp.d.ts +40 -0
- package/out/providers/opencode/acp.js +382 -0
- package/out/providers/opencode/acp.js.map +1 -0
- package/out/providers/opencode/sdk.d.ts +9 -8
- package/out/providers/opencode/sdk.js +30 -5
- package/out/providers/opencode/sdk.js.map +1 -1
- package/out/rateLimit.js +8 -0
- package/out/rateLimit.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,506 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// ---------------------------------------------------------------------------
|
|
3
|
-
// GrokAcpSession —
|
|
4
|
-
// root, that stays alive across MANY turns in a SINGLE process.
|
|
3
|
+
// GrokAcpSession — grok's binding of the shared, provider-agnostic AcpSession.
|
|
5
4
|
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
5
|
+
// The whole ACP client (line-delimited JSON-RPC 2.0: initialize → session/new|
|
|
6
|
+
// load → session/prompt → session/update stream → cancel, one long-lived process
|
|
7
|
+
// per workspace root kept alive across turns) now lives in ../acp/AcpSession.
|
|
8
|
+
// This file is just grok's launch spec + backward-compatible re-exports, so the
|
|
9
|
+
// shipped grok persistent path (1.4.188) keeps working byte-for-byte while
|
|
10
|
+
// opencode (and later copilot/claude) reuse the exact same client.
|
|
11
11
|
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
// Resume now happens ONLY at (re)start via `session/load` — exactly as the user
|
|
17
|
-
// asked ("Resume only when we restart the session").
|
|
18
|
-
//
|
|
19
|
-
// Wire protocol (reverse-engineered against grok 1.0.13; frames captured in the
|
|
20
|
-
// shipping report):
|
|
21
|
-
// - Framing: line-delimited JSON-RPC 2.0 (mirrors StdioMcpClient in
|
|
22
|
-
// src/mcpEmailTest.ts). NOT LSP Content-Length.
|
|
23
|
-
// - initialize {protocolVersion:1, clientCapabilities:{}} ->
|
|
24
|
-
// {protocolVersion, agentCapabilities:{loadSession:true,…}}
|
|
25
|
-
// - session/new {cwd, mcpServers:[]} -> {sessionId, models:{…}}
|
|
26
|
-
// (grok STILL loads its own config MCP servers — mcp_initialized fires even
|
|
27
|
-
// with mcpServers:[], so office/operate MCP keeps working.)
|
|
28
|
-
// - session/load {sessionId, cwd, mcpServers:[]} -> replays the conversation as
|
|
29
|
-
// session/update notifications, then resolves — restores in-process context.
|
|
30
|
-
// - session/prompt {sessionId, prompt:[{type:'text',text}]} ->
|
|
31
|
-
// {stopReason:'end_turn'|'cancelled'|…, _meta:{usage,…}} (the
|
|
32
|
-
// turn-end signal: resolves at turn end).
|
|
33
|
-
// - session/update NOTIFICATIONS stream during a turn:
|
|
34
|
-
// agent_message_chunk {content:{type:'text',text}} -> assistant narration
|
|
35
|
-
// tool_call {toolCallId,title,rawInput} -> PreToolUse
|
|
36
|
-
// tool_call_update {toolCallId,status:'completed',…} -> PostToolUse
|
|
37
|
-
// - session/cancel {sessionId} (notification) cancels the running turn; the
|
|
38
|
-
// process STAYS ALIVE (a later prompt returns normally). Used for stop.
|
|
39
|
-
// - A second session/prompt sent mid-turn is QUEUED by grok (FIFO) and run
|
|
40
|
-
// after the current turn — this is how a mid-run STEER reaches the live
|
|
41
|
-
// process without exiting it.
|
|
42
|
-
//
|
|
43
|
-
// With `--always-approve` grok never sends session/request_permission, and with
|
|
44
|
-
// EMPTY client capabilities grok performs its own fs/terminal I/O (verified) —
|
|
45
|
-
// so the client stays tiny. We still defensively answer any agent→client request.
|
|
12
|
+
// grok specifics: `grok agent --always-approve [-m MODEL] --no-leader … stdio`
|
|
13
|
+
// (parent opts BEFORE `stdio`), `--always-approve` so grok never asks for
|
|
14
|
+
// permission, and the standard-ACP decoder (which already reads grok's real tool
|
|
15
|
+
// name from `_meta['x.ai/tool'].name`).
|
|
46
16
|
// ---------------------------------------------------------------------------
|
|
47
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
48
|
-
if (k2 === undefined) k2 = k;
|
|
49
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
50
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
51
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
52
|
-
}
|
|
53
|
-
Object.defineProperty(o, k2, desc);
|
|
54
|
-
}) : (function(o, m, k, k2) {
|
|
55
|
-
if (k2 === undefined) k2 = k;
|
|
56
|
-
o[k2] = m[k];
|
|
57
|
-
}));
|
|
58
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
59
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
60
|
-
}) : function(o, v) {
|
|
61
|
-
o["default"] = v;
|
|
62
|
-
});
|
|
63
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
64
|
-
var ownKeys = function(o) {
|
|
65
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
66
|
-
var ar = [];
|
|
67
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
68
|
-
return ar;
|
|
69
|
-
};
|
|
70
|
-
return ownKeys(o);
|
|
71
|
-
};
|
|
72
|
-
return function (mod) {
|
|
73
|
-
if (mod && mod.__esModule) return mod;
|
|
74
|
-
var result = {};
|
|
75
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
76
|
-
__setModuleDefault(result, mod);
|
|
77
|
-
return result;
|
|
78
|
-
};
|
|
79
|
-
})();
|
|
80
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
81
|
-
exports.GrokAcpSession = void 0;
|
|
82
|
-
|
|
83
|
-
exports.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const id = String(u['toolCallId'] ?? '');
|
|
107
|
-
// Prefer grok's real tool name from _meta['x.ai/tool'].name; fall back to title.
|
|
108
|
-
const meta = u['_meta'];
|
|
109
|
-
const name = String(meta?.['x.ai/tool']?.name || u['title'] || '').trim();
|
|
110
|
-
return { kind: 'tool_call', id, name, input: u['rawInput'] };
|
|
111
|
-
}
|
|
112
|
-
if (su === 'tool_call_update') {
|
|
113
|
-
const status = String(u['status'] ?? '');
|
|
114
|
-
if (status !== 'completed' && status !== 'failed') {
|
|
115
|
-
return { kind: 'other' };
|
|
116
|
-
}
|
|
117
|
-
const id = String(u['toolCallId'] ?? '');
|
|
118
|
-
return { kind: 'tool_result', id, status, outputText: extractToolOutput(u) };
|
|
119
|
-
}
|
|
120
|
-
return { kind: 'other' };
|
|
121
|
-
}
|
|
122
|
-
/** Best-effort flatten of a tool_call_update's output into a short string. PURE. */
|
|
123
|
-
function extractToolOutput(u) {
|
|
124
|
-
const raw = u['rawOutput'];
|
|
125
|
-
if (typeof raw === 'string') {
|
|
126
|
-
return raw;
|
|
127
|
-
}
|
|
128
|
-
if (raw && typeof raw === 'object') {
|
|
129
|
-
try {
|
|
130
|
-
return JSON.stringify(raw);
|
|
131
|
-
}
|
|
132
|
-
catch { /* ignore */ }
|
|
133
|
-
}
|
|
134
|
-
const content = u['content'];
|
|
135
|
-
if (Array.isArray(content)) {
|
|
136
|
-
const parts = [];
|
|
137
|
-
for (const c of content) {
|
|
138
|
-
const cc = c;
|
|
139
|
-
if (cc?.type === 'text' && typeof cc.text === 'string') {
|
|
140
|
-
parts.push(cc.text);
|
|
141
|
-
}
|
|
142
|
-
else if (cc?.type === 'diff' && typeof cc.newText === 'string') {
|
|
143
|
-
parts.push(cc.newText);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (parts.length) {
|
|
147
|
-
return parts.join('\n');
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return '';
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Classify a session/prompt RESULT into clean-vs-error for the exit file. PURE.
|
|
154
|
-
* - end_turn / max_tokens / max_turn_requests → clean (exit 0)
|
|
155
|
-
* - cancelled → clean (an intentional interrupt, not a failure)
|
|
156
|
-
* - a JSON-RPC error, or any other stopReason → error (exit 1)
|
|
157
|
-
*/
|
|
158
|
-
function classifyAcpResult(result) {
|
|
159
|
-
if (result.error) {
|
|
160
|
-
return { clean: false, stopReason: 'error', error: String(result.error.message || 'jsonrpc error') };
|
|
161
|
-
}
|
|
162
|
-
const sr = String(result.result?.stopReason ?? '');
|
|
163
|
-
const CLEAN = new Set(['end_turn', 'max_tokens', 'max_turn_requests', 'cancelled']);
|
|
164
|
-
return { clean: CLEAN.has(sr), stopReason: sr || 'unknown' };
|
|
165
|
-
}
|
|
18
|
+
exports.GrokAcpSession = exports.GROK_ACP_SPEC = exports.decodeAcpUpdate = exports.AcpSession = exports.classifyAcpResult = exports.extractToolOutput = void 0;
|
|
19
|
+
const AcpSession_1 = require("../acp/AcpSession");
|
|
20
|
+
// Backward-compatible re-exports (tui.ts + test/grokAcpSession.smoke.mjs import
|
|
21
|
+
// these from here). decodeAcpUpdate is the standard decoder — it already handles
|
|
22
|
+
// grok's `_meta['x.ai/tool']` tool-name extraction, so grok behaviour is
|
|
23
|
+
// unchanged.
|
|
24
|
+
var AcpSession_2 = require("../acp/AcpSession");
|
|
25
|
+
Object.defineProperty(exports, "extractToolOutput", { enumerable: true, get: function () { return AcpSession_2.extractToolOutput; } });
|
|
26
|
+
Object.defineProperty(exports, "classifyAcpResult", { enumerable: true, get: function () { return AcpSession_2.classifyAcpResult; } });
|
|
27
|
+
Object.defineProperty(exports, "AcpSession", { enumerable: true, get: function () { return AcpSession_2.AcpSession; } });
|
|
28
|
+
exports.decodeAcpUpdate = AcpSession_1.decodeAcpUpdateStandard;
|
|
29
|
+
/** grok's ACP launch spec — the only provider-specific behaviour. */
|
|
30
|
+
exports.GROK_ACP_SPEC = {
|
|
31
|
+
buildArgs(model, extraArgs) {
|
|
32
|
+
const args = ['agent', '--always-approve'];
|
|
33
|
+
if (model) {
|
|
34
|
+
args.push('-m', model);
|
|
35
|
+
}
|
|
36
|
+
args.push('--no-leader', ...extraArgs, 'stdio');
|
|
37
|
+
return args;
|
|
38
|
+
},
|
|
39
|
+
decodeUpdate: AcpSession_1.decodeAcpUpdateStandard,
|
|
40
|
+
narrationTitle: 'grok',
|
|
41
|
+
narrateReasoning: false,
|
|
42
|
+
};
|
|
166
43
|
/**
|
|
167
|
-
* One persistent `grok agent stdio` process for a workspace root.
|
|
168
|
-
*
|
|
44
|
+
* One persistent `grok agent stdio` process for a workspace root. Thin subclass
|
|
45
|
+
* that injects GROK_ACP_SPEC — all behaviour is in the shared AcpSession.
|
|
169
46
|
*/
|
|
170
|
-
class GrokAcpSession {
|
|
171
|
-
root;
|
|
172
|
-
model;
|
|
173
|
-
bin;
|
|
174
|
-
hooks;
|
|
175
|
-
extraArgs;
|
|
176
|
-
child = null;
|
|
177
|
-
buf = '';
|
|
178
|
-
nextId = 1;
|
|
179
|
-
pending = new Map();
|
|
180
|
-
_sessionId;
|
|
181
|
-
_wantSessionId; // id to session/load on (re)start
|
|
182
|
-
_ready = null;
|
|
183
|
-
_busy = false;
|
|
184
|
-
_startCount = 0;
|
|
185
|
-
earlyStderr = '';
|
|
186
|
-
/** The active PRIMARY turn's stdout sink (assistant text). Null between turns. */
|
|
187
|
-
_sink = null;
|
|
188
|
-
/** Tool-call names by id, so a tool_result can carry the originating name. */
|
|
189
|
-
_toolNames = new Map();
|
|
190
|
-
/** Accumulates assistant chunks so Notification hooks are line-granular, not
|
|
191
|
-
* per-token (grok streams a few chars per chunk — one bubble per token floods
|
|
192
|
-
* the office feed). Flushed on each newline and at turn end. */
|
|
193
|
-
_narrationBuf = '';
|
|
47
|
+
class GrokAcpSession extends AcpSession_1.AcpSession {
|
|
194
48
|
constructor(opts) {
|
|
195
|
-
|
|
196
|
-
this.model = opts.model;
|
|
197
|
-
this.bin = opts.bin;
|
|
198
|
-
this.hooks = opts.hooks;
|
|
199
|
-
this._wantSessionId = opts.initialSessionId;
|
|
200
|
-
this.extraArgs = opts.extraArgs ?? [];
|
|
201
|
-
}
|
|
202
|
-
get pid() { return this.child?.pid; }
|
|
203
|
-
get sessionId() { return this._sessionId; }
|
|
204
|
-
isBusy() { return this._busy; }
|
|
205
|
-
isAlive() { return !!this.child && this.child.exitCode === null && !this.child.killed; }
|
|
206
|
-
/** Spawn + initialize + session/new|load, once. Respawns transparently if dead. */
|
|
207
|
-
async ensureReady() {
|
|
208
|
-
if (this.isAlive() && this._sessionId) {
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (this._ready) {
|
|
212
|
-
return this._ready;
|
|
213
|
-
}
|
|
214
|
-
this._ready = this._startup().catch((err) => { this._ready = null; throw err; });
|
|
215
|
-
return this._ready;
|
|
216
|
-
}
|
|
217
|
-
async _startup() {
|
|
218
|
-
this._spawnChild();
|
|
219
|
-
await this._request('initialize', {
|
|
220
|
-
protocolVersion: 1,
|
|
221
|
-
clientCapabilities: {},
|
|
222
|
-
});
|
|
223
|
-
// Resume-on-(re)start: if a prior session id is known, session/load restores
|
|
224
|
-
// its in-process context; on any failure, fall back to a fresh session/new.
|
|
225
|
-
const want = this._wantSessionId;
|
|
226
|
-
if (want) {
|
|
227
|
-
try {
|
|
228
|
-
const r = await this._request('session/load', { sessionId: want, cwd: this.root, mcpServers: [] });
|
|
229
|
-
if (!r.error) {
|
|
230
|
-
this._sessionId = want;
|
|
231
|
-
this.hooks.log(`Grok ACP: restored session ${want.slice(0, 8)}… (session/load) — context intact`);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
catch (err) {
|
|
235
|
-
this.hooks.log(`Grok ACP: session/load ${want.slice(0, 8)}… failed (${err?.message ?? err}); starting fresh`);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
if (!this._sessionId) {
|
|
239
|
-
const sn = await this._request('session/new', { cwd: this.root, mcpServers: [] });
|
|
240
|
-
const sid = sn.result?.sessionId;
|
|
241
|
-
if (!sid) {
|
|
242
|
-
throw new Error('session/new returned no sessionId');
|
|
243
|
-
}
|
|
244
|
-
this._sessionId = sid;
|
|
245
|
-
this.hooks.log(`Grok ACP: new persistent session ${sid.slice(0, 8)}…`);
|
|
246
|
-
}
|
|
247
|
-
this._wantSessionId = this._sessionId;
|
|
248
|
-
this.hooks.emitHook('SessionStart', { source: this._startCount > 1 ? 'resume' : 'startup' });
|
|
249
|
-
}
|
|
250
|
-
_spawnChild() {
|
|
251
|
-
this._startCount++;
|
|
252
|
-
const args = ['agent', '--always-approve'];
|
|
253
|
-
if (this.model) {
|
|
254
|
-
args.push('-m', this.model);
|
|
255
|
-
}
|
|
256
|
-
args.push('--no-leader', ...this.extraArgs, 'stdio');
|
|
257
|
-
const child = child_process.spawn(this.bin, args, {
|
|
258
|
-
cwd: this.root,
|
|
259
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
260
|
-
env: { ...process.env, TERM: process.env['TERM'] || 'xterm-256color' },
|
|
261
|
-
});
|
|
262
|
-
this.child = child;
|
|
263
|
-
this.buf = '';
|
|
264
|
-
this.earlyStderr = '';
|
|
265
|
-
child.stdout?.setEncoding('utf8');
|
|
266
|
-
child.stdout?.on('data', (chunk) => this._onStdout(chunk));
|
|
267
|
-
child.stderr?.on('data', (chunk) => {
|
|
268
|
-
const s = chunk.toString();
|
|
269
|
-
if (this.earlyStderr.length < 4000) {
|
|
270
|
-
this.earlyStderr += s;
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
child.on('exit', (code, sig) => this._onExit(code, sig));
|
|
274
|
-
child.on('error', (err) => this.hooks.log(`Grok ACP: child error: ${err.message}`));
|
|
275
|
-
}
|
|
276
|
-
_onExit(code, sig) {
|
|
277
|
-
this.hooks.log(`Grok ACP: agent process exited (code=${code} sig=${sig})`);
|
|
278
|
-
this.child = null;
|
|
279
|
-
this._ready = null;
|
|
280
|
-
this._sink = null;
|
|
281
|
-
this._busy = false;
|
|
282
|
-
// Reject any in-flight requests so an awaiting turn resolves (as an error) and
|
|
283
|
-
// the loop can retry — the next turn respawns + session/load restores context.
|
|
284
|
-
const err = { error: { message: `grok agent exited (code=${code} sig=${sig})` } };
|
|
285
|
-
for (const [, p] of this.pending) {
|
|
286
|
-
try {
|
|
287
|
-
p.resolve(err);
|
|
288
|
-
}
|
|
289
|
-
catch { /* ignore */ }
|
|
290
|
-
}
|
|
291
|
-
this.pending.clear();
|
|
292
|
-
}
|
|
293
|
-
_onStdout(chunk) {
|
|
294
|
-
this.buf += chunk;
|
|
295
|
-
let nl;
|
|
296
|
-
while ((nl = this.buf.indexOf('\n')) >= 0) {
|
|
297
|
-
const line = this.buf.slice(0, nl).trim();
|
|
298
|
-
this.buf = this.buf.slice(nl + 1);
|
|
299
|
-
if (!line) {
|
|
300
|
-
continue;
|
|
301
|
-
}
|
|
302
|
-
let msg;
|
|
303
|
-
try {
|
|
304
|
-
msg = JSON.parse(line);
|
|
305
|
-
}
|
|
306
|
-
catch {
|
|
307
|
-
continue;
|
|
308
|
-
}
|
|
309
|
-
this._handle(msg);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
_handle(msg) {
|
|
313
|
-
const id = msg['id'];
|
|
314
|
-
// Response to one of our requests.
|
|
315
|
-
if (typeof id === 'number' && (msg['result'] !== undefined || msg['error'] !== undefined) && this.pending.has(id)) {
|
|
316
|
-
const p = this.pending.get(id);
|
|
317
|
-
this.pending.delete(id);
|
|
318
|
-
p.resolve(msg);
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
// Request FROM the agent (we are the client). With empty caps grok does its
|
|
322
|
-
// own fs/terminal, but answer defensively so nothing ever wedges.
|
|
323
|
-
if (msg['method'] && id !== undefined) {
|
|
324
|
-
const method = String(msg['method']);
|
|
325
|
-
if (method === 'session/request_permission') {
|
|
326
|
-
const params = msg['params'];
|
|
327
|
-
const opts = params?.options ?? [];
|
|
328
|
-
const allow = opts.find((o) => /allow/i.test(o.optionId || o.kind || '')) || opts[0];
|
|
329
|
-
this._send({ jsonrpc: '2.0', id, result: { outcome: { outcome: 'selected', optionId: allow?.optionId } } });
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
// Unknown/unsupported client method → tell grok to handle it itself.
|
|
333
|
-
this._send({ jsonrpc: '2.0', id, error: { code: -32601, message: 'client capability not provided' } });
|
|
334
|
-
}
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
// Notification from the agent.
|
|
338
|
-
if (msg['method'] === 'session/update') {
|
|
339
|
-
this._onUpdate(decodeAcpUpdate(msg));
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
_onUpdate(u) {
|
|
343
|
-
if (u.kind === 'assistant') {
|
|
344
|
-
if (this._sink) {
|
|
345
|
-
try {
|
|
346
|
-
this._sink(u.text);
|
|
347
|
-
}
|
|
348
|
-
catch { /* ignore */ }
|
|
349
|
-
}
|
|
350
|
-
this._narrationBuf += u.text;
|
|
351
|
-
this._flushNarration(false);
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
if (u.kind === 'tool_call') {
|
|
355
|
-
if (!u.name || u.name.startsWith('mcp__')) {
|
|
356
|
-
return;
|
|
357
|
-
} // office logs MCP tools server-side
|
|
358
|
-
this._toolNames.set(u.id, u.name);
|
|
359
|
-
this.hooks.emitHook('PreToolUse', { tool_name: u.name, tool_input: u.input, tool_use_id: u.id });
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
if (u.kind === 'tool_result') {
|
|
363
|
-
const name = this._toolNames.get(u.id);
|
|
364
|
-
if (!name) {
|
|
365
|
-
return;
|
|
366
|
-
} // no matching Pre (skipped mcp tool / replay) — don't emit orphan
|
|
367
|
-
this._toolNames.delete(u.id);
|
|
368
|
-
if (u.status === 'failed') {
|
|
369
|
-
this.hooks.emitHook('PostToolUseFailure', { tool_name: name, tool_use_id: u.id, outcome: 'error', tool_output: { text: u.outputText.slice(0, 2000) } });
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
this.hooks.emitHook('PostToolUse', { tool_name: name, tool_use_id: u.id, tool_output: { text: u.outputText.slice(0, 2000) } });
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
/** Emit completed narration lines as Notification hooks. `final` flushes the
|
|
377
|
-
* trailing partial line (turn end). Keeps the office feed line-granular. */
|
|
378
|
-
_flushNarration(final) {
|
|
379
|
-
let nl;
|
|
380
|
-
while ((nl = this._narrationBuf.indexOf('\n')) >= 0) {
|
|
381
|
-
const line = this._narrationBuf.slice(0, nl);
|
|
382
|
-
this._narrationBuf = this._narrationBuf.slice(nl + 1);
|
|
383
|
-
if (line.trim()) {
|
|
384
|
-
this.hooks.emitHook('Notification', { message: line, title: 'grok', tool_name: 'grok' });
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
if (final && this._narrationBuf.trim()) {
|
|
388
|
-
this.hooks.emitHook('Notification', { message: this._narrationBuf, title: 'grok', tool_name: 'grok' });
|
|
389
|
-
}
|
|
390
|
-
if (final) {
|
|
391
|
-
this._narrationBuf = '';
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
/**
|
|
395
|
-
* Run ONE primary turn: send the prompt and await turn end. Streams assistant
|
|
396
|
-
* text to `sink`. Emits Stop/StopFailure + SessionEnd via the host hooks. The
|
|
397
|
-
* process stays alive afterward.
|
|
398
|
-
*/
|
|
399
|
-
async runTurn(promptText, sink) {
|
|
400
|
-
await this.ensureReady();
|
|
401
|
-
this._busy = true;
|
|
402
|
-
this._sink = sink;
|
|
403
|
-
let res;
|
|
404
|
-
try {
|
|
405
|
-
const r = await this._request('session/prompt', {
|
|
406
|
-
sessionId: this._sessionId,
|
|
407
|
-
prompt: [{ type: 'text', text: promptText }],
|
|
408
|
-
});
|
|
409
|
-
res = classifyAcpResult(r);
|
|
410
|
-
}
|
|
411
|
-
catch (err) {
|
|
412
|
-
res = { clean: false, stopReason: 'exception', error: err?.message ?? String(err) };
|
|
413
|
-
}
|
|
414
|
-
finally {
|
|
415
|
-
this._flushNarration(true);
|
|
416
|
-
this._sink = null;
|
|
417
|
-
this._busy = false;
|
|
418
|
-
}
|
|
419
|
-
if (res.clean) {
|
|
420
|
-
this.hooks.emitHook('Stop', {});
|
|
421
|
-
this.hooks.emitHook('SessionEnd', { reason: 'completed' });
|
|
422
|
-
}
|
|
423
|
-
else {
|
|
424
|
-
this.hooks.emitHook('StopFailure', { exit_code: 1 });
|
|
425
|
-
this.hooks.emitHook('SessionEnd', { reason: 'error' });
|
|
426
|
-
}
|
|
427
|
-
return res;
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Deliver a mid-run STEER to the LIVE process: send an additional
|
|
431
|
-
* session/prompt that grok QUEUES (FIFO) and runs next — without exiting.
|
|
432
|
-
* Returns true if handed to the live agent, false if no live session.
|
|
433
|
-
*/
|
|
434
|
-
steer(text) {
|
|
435
|
-
if (!this.isAlive() || !this._sessionId) {
|
|
436
|
-
return false;
|
|
437
|
-
}
|
|
438
|
-
const t = text.trim();
|
|
439
|
-
if (!t) {
|
|
440
|
-
return false;
|
|
441
|
-
}
|
|
442
|
-
// Fire-and-forget: resolves on its own promptId; we don't tie it to exitFile.
|
|
443
|
-
this._request('session/prompt', { sessionId: this._sessionId, prompt: [{ type: 'text', text: t }] })
|
|
444
|
-
.catch(() => { });
|
|
445
|
-
return true;
|
|
446
|
-
}
|
|
447
|
-
/** Cancel the running turn (process stays alive). */
|
|
448
|
-
cancel() {
|
|
449
|
-
if (!this.isAlive() || !this._sessionId) {
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
452
|
-
this._send({ jsonrpc: '2.0', method: 'session/cancel', params: { sessionId: this._sessionId } });
|
|
453
|
-
}
|
|
454
|
-
/** Kill the persistent process. Preserves the known session id for a later load. */
|
|
455
|
-
close() {
|
|
456
|
-
const c = this.child;
|
|
457
|
-
this.child = null;
|
|
458
|
-
this._ready = null;
|
|
459
|
-
this._sink = null;
|
|
460
|
-
this._busy = false;
|
|
461
|
-
for (const [, p] of this.pending) {
|
|
462
|
-
try {
|
|
463
|
-
p.resolve({ error: { message: 'closed' } });
|
|
464
|
-
}
|
|
465
|
-
catch { /* ignore */ }
|
|
466
|
-
}
|
|
467
|
-
this.pending.clear();
|
|
468
|
-
if (c) {
|
|
469
|
-
try {
|
|
470
|
-
c.stdin?.end();
|
|
471
|
-
}
|
|
472
|
-
catch { /* ignore */ }
|
|
473
|
-
try {
|
|
474
|
-
c.kill('SIGKILL');
|
|
475
|
-
}
|
|
476
|
-
catch { /* ignore */ }
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
_request(method, params) {
|
|
480
|
-
const id = this.nextId++;
|
|
481
|
-
return new Promise((resolve) => {
|
|
482
|
-
this.pending.set(id, { resolve });
|
|
483
|
-
const ok = this._send({ jsonrpc: '2.0', id, method, params });
|
|
484
|
-
if (!ok) {
|
|
485
|
-
this.pending.delete(id);
|
|
486
|
-
resolve({ error: { message: 'stdin write failed (agent not running)' } });
|
|
487
|
-
}
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
_send(obj) {
|
|
491
|
-
const c = this.child;
|
|
492
|
-
if (!c || !c.stdin || c.stdin.destroyed) {
|
|
493
|
-
return false;
|
|
494
|
-
}
|
|
495
|
-
try {
|
|
496
|
-
c.stdin.write(JSON.stringify(obj) + '\n');
|
|
497
|
-
return true;
|
|
498
|
-
}
|
|
499
|
-
catch {
|
|
500
|
-
return false;
|
|
501
|
-
}
|
|
49
|
+
super({ ...opts, spec: exports.GROK_ACP_SPEC });
|
|
502
50
|
}
|
|
503
|
-
get stderrSnapshot() { return this.earlyStderr; }
|
|
504
51
|
}
|
|
505
52
|
exports.GrokAcpSession = GrokAcpSession;
|
|
506
53
|
//# sourceMappingURL=GrokAcpSession.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrokAcpSession.js","sourceRoot":"","sources":["../../../src/providers/grok/GrokAcpSession.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GrokAcpSession.js","sourceRoot":"","sources":["../../../src/providers/grok/GrokAcpSession.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,mEAAmE;AACnE,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,iFAAiF;AACjF,wCAAwC;AACxC,8EAA8E;;;AAE9E,kDAAwE;AAGxE,gFAAgF;AAChF,iFAAiF;AACjF,yEAAyE;AACzE,aAAa;AACb,gDAAqF;AAA5E,+GAAA,iBAAiB,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AAAE,wGAAA,UAAU,OAAA;AAE5C,QAAA,eAAe,GAAG,oCAAuB,CAAC;AAEvD,qEAAqE;AACxD,QAAA,aAAa,GAAkB;IAC1C,SAAS,CAAC,KAAyB,EAAE,SAAmB;QACtD,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY,EAAE,oCAAuB;IACrC,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,KAAK;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAa,cAAe,SAAQ,uBAAU;IAC5C,YAAY,IAIX;QACC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,qBAAa,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AARD,wCAQC"}
|
|
@@ -27,6 +27,42 @@ export declare const GROK_TURN_FAIL_MARKERS: RegExp;
|
|
|
27
27
|
* reporting a generic hard-failure.
|
|
28
28
|
*/
|
|
29
29
|
export declare const GROK_REAUTH_MESSAGE = "reauthentication required \u2014 grok is not logged in (auth.json missing / manual login). Please run: grok login";
|
|
30
|
+
/**
|
|
31
|
+
* Markers in grok's CAPTURED ERROR TEXT — its stderr, a streaming-json
|
|
32
|
+
* `{type:"error"}` record, an error `turn_ended` detail, or an ACP startup
|
|
33
|
+
* stderr snapshot — that mean grok is NOT SIGNED IN: the token expired /
|
|
34
|
+
* `~/.grok/auth.json` is gone / silent refresh failed and grok fell back to its
|
|
35
|
+
* logged-out gate. On a headless/ACP turn grok prints, e.g.:
|
|
36
|
+
* "Not signed in. To authenticate without a browser, run: grok login --device-code"
|
|
37
|
+
* "... set XAI_API_KEY ..."
|
|
38
|
+
* an xAI API "Unauthorized" / 401 body
|
|
39
|
+
* This can NEVER be retried away — the user must re-login — so a turn that fails
|
|
40
|
+
* with any of these must be surfaced as `reauth_required` (loop pauses, office
|
|
41
|
+
* shows 🔑), NOT hammered with `retry 1/10…10/10`.
|
|
42
|
+
*
|
|
43
|
+
* DISTINCT from GROK_AUTH_MARKERS above, which reads the live INTERACTIVE tmux
|
|
44
|
+
* pane (login gate / Failed(ManualLogin)). This one reads grok's HEADLESS / ACP
|
|
45
|
+
* error surface, where the pane never exists. Callers gate it to a FAILED /
|
|
46
|
+
* non-zero turn so grok's own remediation words appearing inside a *successful*
|
|
47
|
+
* answer ("run grok login to …") can never trip a false reauth.
|
|
48
|
+
*
|
|
49
|
+
* Precision notes (see the unit tests for the negatives):
|
|
50
|
+
* - "not signed in", "grok login", "--device-code", "XAI_API_KEY" and
|
|
51
|
+
* "authenticate without a browser" are grok-native logged-out strings that
|
|
52
|
+
* do not appear in ordinary successful output.
|
|
53
|
+
* - a bare "401"/"Unauthorized" is required to be near an xai/grok/api-key/
|
|
54
|
+
* token word (NOT a bare "auth", which appears in ordinary prose like "…401
|
|
55
|
+
* when the user is not authenticated"), so a 404 "session not found" (NOT
|
|
56
|
+
* auth) and unrelated 401-in-prose are excluded.
|
|
57
|
+
*/
|
|
58
|
+
export declare const GROK_NOT_SIGNED_IN_MARKERS: RegExp;
|
|
59
|
+
/**
|
|
60
|
+
* True when grok's captured error text indicates a NOT-SIGNED-IN / auth failure
|
|
61
|
+
* (non-retryable → reauth_required). Pure; the caller supplies grok's error
|
|
62
|
+
* surface (stderr / error record / ACP stderr snapshot) and gates it to a failed
|
|
63
|
+
* turn. Empty/whitespace input is never a match.
|
|
64
|
+
*/
|
|
65
|
+
export declare function isGrokAuthFailure(text: string | null | undefined): boolean;
|
|
30
66
|
export type GrokTurnClass = 'reauth' | 'turn-failed' | null;
|
|
31
67
|
/**
|
|
32
68
|
* Classify a grok pane snapshot + auth-file state into a turn outcome.
|