@nanonets/graft 0.20.0 → 0.21.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/dist/app/history.d.ts +36 -1
- package/dist/app/history.d.ts.map +1 -1
- package/dist/app/history.js +72 -25
- package/dist/app/history.js.map +1 -1
- package/dist/app/sources.d.ts +13 -0
- package/dist/app/sources.d.ts.map +1 -1
- package/dist/app/sources.js +129 -1
- package/dist/app/sources.js.map +1 -1
- package/dist/brain/claude-md.d.ts +4 -2
- package/dist/brain/claude-md.d.ts.map +1 -1
- package/dist/brain/claude-md.js +4 -3
- package/dist/brain/claude-md.js.map +1 -1
- package/dist/brain/context-files.d.ts +79 -0
- package/dist/brain/context-files.d.ts.map +1 -0
- package/dist/brain/context-files.js +245 -0
- package/dist/brain/context-files.js.map +1 -0
- package/dist/brain/link.d.ts +17 -0
- package/dist/brain/link.d.ts.map +1 -1
- package/dist/brain/link.js +21 -0
- package/dist/brain/link.js.map +1 -1
- package/dist/brain/pull.d.ts +17 -0
- package/dist/brain/pull.d.ts.map +1 -0
- package/dist/brain/pull.js +172 -0
- package/dist/brain/pull.js.map +1 -0
- package/dist/brain/push.d.ts +62 -7
- package/dist/brain/push.d.ts.map +1 -1
- package/dist/brain/push.js +97 -62
- package/dist/brain/push.js.map +1 -1
- package/dist/brain/signup.d.ts +46 -2
- package/dist/brain/signup.d.ts.map +1 -1
- package/dist/brain/signup.js +101 -11
- package/dist/brain/signup.js.map +1 -1
- package/dist/brain/upload.d.ts +61 -0
- package/dist/brain/upload.d.ts.map +1 -0
- package/dist/brain/upload.js +210 -0
- package/dist/brain/upload.js.map +1 -0
- package/dist/brain/watch.d.ts +76 -3
- package/dist/brain/watch.d.ts.map +1 -1
- package/dist/brain/watch.js +263 -39
- package/dist/brain/watch.js.map +1 -1
- package/dist/claude/build-progress.d.ts +29 -0
- package/dist/claude/build-progress.d.ts.map +1 -0
- package/dist/claude/build-progress.js +76 -0
- package/dist/claude/build-progress.js.map +1 -0
- package/dist/cli-picker.d.ts +17 -2
- package/dist/cli-picker.d.ts.map +1 -1
- package/dist/cli-picker.js +103 -22
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.js +423 -187
- package/dist/cli.js.map +1 -1
- package/dist/telemetry/contract.d.ts +16 -3
- package/dist/telemetry/contract.d.ts.map +1 -1
- package/dist/telemetry/contract.js +23 -5
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/util/spinner.d.ts +15 -0
- package/dist/util/spinner.d.ts.map +1 -0
- package/dist/util/spinner.js +52 -0
- package/dist/util/spinner.js.map +1 -0
- package/dist/util/state.d.ts +8 -0
- package/dist/util/state.d.ts.map +1 -1
- package/dist/util/state.js.map +1 -1
- package/package.json +1 -1
package/dist/brain/watch.js
CHANGED
|
@@ -71,6 +71,39 @@ export function stagesFrom(repo) {
|
|
|
71
71
|
error: failed ? (repo?.errorMessage?.trim() || "the read stopped before it finished") : null,
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
+
/** A count from a field Trail may send as a number or as the list itself. */
|
|
75
|
+
const countOf = (v) => (Array.isArray(v) ? v.length : num(v));
|
|
76
|
+
/**
|
|
77
|
+
* The repo state out of an expected-repo body — the polled GET and every SSE
|
|
78
|
+
* `progress` event carry the same shape. Null when there is no repo row.
|
|
79
|
+
*/
|
|
80
|
+
export function parseRepoBody(body) {
|
|
81
|
+
const b = (body ?? {});
|
|
82
|
+
if (!b.repo || typeof b.repo !== "object")
|
|
83
|
+
return null;
|
|
84
|
+
const state = {
|
|
85
|
+
status: String(b.repo.status ?? ""),
|
|
86
|
+
errorMessage: b.repo.error_message,
|
|
87
|
+
ruleCount: num(b.repo.rule_count),
|
|
88
|
+
commitCount: num(b.repo.commit_count),
|
|
89
|
+
threadCount: num(b.repo.thread_count),
|
|
90
|
+
filedSoFar: num(b.build?.filed_so_far),
|
|
91
|
+
foundSoFar: num(b.build?.found_so_far),
|
|
92
|
+
};
|
|
93
|
+
if (b.claude_md || b.context_files) {
|
|
94
|
+
const files = Array.isArray(b.context_files?.files)
|
|
95
|
+
? b.context_files.files
|
|
96
|
+
.filter((f) => f && typeof f === "object")
|
|
97
|
+
.map((f) => ({ kind: String(f.kind ?? ""), path: String(f.path ?? ""), changes: countOf(f.changes) }))
|
|
98
|
+
: undefined;
|
|
99
|
+
state.suggestions = {
|
|
100
|
+
claudeMd: countOf(b.claude_md?.changes),
|
|
101
|
+
contextFiles: b.context_files?.changes !== undefined ? countOf(b.context_files.changes) : (files ?? []).reduce((n, f) => n + f.changes, 0),
|
|
102
|
+
...(files ? { files } : {}),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return state;
|
|
106
|
+
}
|
|
74
107
|
/**
|
|
75
108
|
* Read the repo row this brain is building.
|
|
76
109
|
*
|
|
@@ -86,48 +119,80 @@ export async function fetchRepoState(link, fetchImpl = fetch) {
|
|
|
86
119
|
});
|
|
87
120
|
if (!res.ok)
|
|
88
121
|
return null;
|
|
89
|
-
|
|
90
|
-
if (!body.repo)
|
|
91
|
-
return null;
|
|
92
|
-
return {
|
|
93
|
-
status: String(body.repo.status ?? ""),
|
|
94
|
-
errorMessage: body.repo.error_message,
|
|
95
|
-
ruleCount: num(body.repo.rule_count),
|
|
96
|
-
commitCount: num(body.repo.commit_count),
|
|
97
|
-
threadCount: num(body.repo.thread_count),
|
|
98
|
-
filedSoFar: num(body.build?.filed_so_far),
|
|
99
|
-
foundSoFar: num(body.build?.found_so_far),
|
|
100
|
-
};
|
|
122
|
+
return parseRepoBody(await res.json());
|
|
101
123
|
}
|
|
102
124
|
catch {
|
|
103
125
|
return null;
|
|
104
126
|
}
|
|
105
127
|
}
|
|
106
|
-
/**
|
|
107
|
-
|
|
128
|
+
/** Past tense, for the no-TTY log: each line reports a stage that finished. */
|
|
129
|
+
const DONE_LABEL = {
|
|
130
|
+
reach: "reached the repository",
|
|
131
|
+
read: "read its history",
|
|
132
|
+
mine: "mined the rules",
|
|
133
|
+
file: "filed them into the trail",
|
|
134
|
+
};
|
|
135
|
+
/** What the spinner says while a stage is running. */
|
|
136
|
+
export const DOING_LABEL = {
|
|
137
|
+
reach: "reaching the repository",
|
|
138
|
+
read: "reading its history",
|
|
139
|
+
mine: "mining rules",
|
|
140
|
+
file: "filing the rules",
|
|
141
|
+
};
|
|
142
|
+
/** The first rules there are, from whichever count the row has. */
|
|
143
|
+
export function rulesSoFar(repo) {
|
|
144
|
+
return Math.max(num(repo?.ruleCount), num(repo?.filedSoFar), num(repo?.foundSoFar));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* One printable line per stage that has finished since it was last printed.
|
|
148
|
+
*
|
|
149
|
+
* Only for a log with no terminal to redraw — on a TTY the spinner says which
|
|
150
|
+
* stage is running and these lines are never printed. Filing is left out: the
|
|
151
|
+
* watcher hands the prompt back on the first rules, before filing finishes, and
|
|
152
|
+
* the closing line says how many there are.
|
|
153
|
+
*/
|
|
154
|
+
export function linesFor(view, already, repo = null) {
|
|
108
155
|
const out = [];
|
|
109
156
|
for (const s of view.stages) {
|
|
110
|
-
|
|
111
|
-
// merely still running would bury the four that matter under a hundred
|
|
112
|
-
// that do not — this is a log, not a redrawn frame.
|
|
113
|
-
if (s.state !== "done" && s.state !== "failed")
|
|
157
|
+
if (s.state !== "done" || s.id === "file")
|
|
114
158
|
continue;
|
|
115
159
|
const key = `${s.id}:${s.state}`;
|
|
116
160
|
if (already.has(key))
|
|
117
161
|
continue;
|
|
118
162
|
already.add(key);
|
|
119
|
-
const
|
|
120
|
-
|
|
163
|
+
const rules = rulesSoFar(repo);
|
|
164
|
+
const label = s.id === "mine" && rules > 0
|
|
165
|
+
? `mined the first ${rules.toLocaleString("en-US")} rule${rules === 1 ? "" : "s"}`
|
|
166
|
+
: DONE_LABEL[s.id];
|
|
167
|
+
out.push(` ✓ ${label}`);
|
|
121
168
|
}
|
|
122
169
|
return out;
|
|
123
170
|
}
|
|
171
|
+
/** The stage the build is in now, for the spinner. */
|
|
172
|
+
export function currentStage(view) {
|
|
173
|
+
return (view.stages.find((s) => s.state === "doing" || s.state === "failed") ?? view.stages[view.stages.length - 1]).id;
|
|
174
|
+
}
|
|
175
|
+
/** The failure line: where it stopped, and that nothing was lost. The server's
|
|
176
|
+
* own words follow on the next line, in full. */
|
|
177
|
+
export function failureLines(view) {
|
|
178
|
+
const at = view.stages.find((s) => s.state === "failed")?.id ?? "mine";
|
|
179
|
+
const lines = [`✗ the build stopped while ${DOING_LABEL[at]} · nothing was lost — run graft trail push again`];
|
|
180
|
+
if (view.error)
|
|
181
|
+
lines.push(` ${view.error}`);
|
|
182
|
+
return lines;
|
|
183
|
+
}
|
|
124
184
|
/**
|
|
125
|
-
* Hold until the brain has rules,
|
|
185
|
+
* Hold until the brain has rules, reporting each stage as it settles.
|
|
126
186
|
*
|
|
127
187
|
* Returns on the first rules rather than on the finished job: mining is what
|
|
128
188
|
* fails and it is done by then, and filing the rest is minutes of work nobody
|
|
129
189
|
* needs to watch. The caller prints where to see the rest.
|
|
130
190
|
*
|
|
191
|
+
* Live when the server streams events: each change arrives as it happens
|
|
192
|
+
* instead of up to four seconds late. A stream that drops is reopened up to
|
|
193
|
+
* three times, and after that the watcher polls as it always did — so the
|
|
194
|
+
* worst a broken stream costs is the old behaviour.
|
|
195
|
+
*
|
|
131
196
|
* Fifteen minutes by default. That is far more than the mining now takes, and it
|
|
132
197
|
* stays generous on purpose: a watcher that gives up before the build does would
|
|
133
198
|
* report a healthy build as a timeout, which is the exact confusion this is
|
|
@@ -138,35 +203,194 @@ export async function watchBuild(link, opts = {}) {
|
|
|
138
203
|
const timeoutMs = opts.timeoutMs ?? 15 * 60 * 1000;
|
|
139
204
|
const pollMs = opts.pollMs ?? 4000;
|
|
140
205
|
const write = opts.write ?? ((l) => console.error(l));
|
|
141
|
-
|
|
206
|
+
// Not unref'd: between polls this timer is the only thing the process is
|
|
207
|
+
// waiting on, and an unref'd one let it exit mid-watch with nothing printed.
|
|
208
|
+
const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
209
|
+
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
210
|
+
const stageLines = opts.stageLines !== false;
|
|
142
211
|
const printed = new Set();
|
|
143
212
|
const startedAt = Date.now();
|
|
213
|
+
const deadline = startedAt + timeoutMs;
|
|
144
214
|
// A row we could never read at all, as opposed to one that answered once and
|
|
145
215
|
// then stopped answering: the first is a broken link or a host that is down
|
|
146
216
|
// and is worth saying, the second is a blip the next poll usually covers.
|
|
147
217
|
let everRead = false;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (repo)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
218
|
+
/** One state read → the outcome it settles, or null to keep watching. */
|
|
219
|
+
const settle = (repo) => {
|
|
220
|
+
if (!repo)
|
|
221
|
+
return null;
|
|
222
|
+
everRead = true;
|
|
223
|
+
const view = stagesFrom(repo);
|
|
224
|
+
opts.onState?.(view, repo);
|
|
225
|
+
if (stageLines)
|
|
226
|
+
for (const line of linesFor(view, printed, repo))
|
|
154
227
|
write(line);
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
228
|
+
if (view.error) {
|
|
229
|
+
for (const line of failureLines(view))
|
|
230
|
+
write(line);
|
|
231
|
+
return "failed";
|
|
232
|
+
}
|
|
233
|
+
if (view.done)
|
|
234
|
+
return "completed";
|
|
235
|
+
// The ordinary ending now. The job is still filing the rules the miner
|
|
236
|
+
// has handed over, and still mining the older slices of the history, and
|
|
237
|
+
// neither is worth a terminal sitting on it.
|
|
238
|
+
if (view.ready)
|
|
239
|
+
return "building";
|
|
240
|
+
return null;
|
|
241
|
+
};
|
|
242
|
+
if (opts.events) {
|
|
243
|
+
let drops = 0;
|
|
244
|
+
const maxReconnects = opts.maxReconnects ?? 3;
|
|
245
|
+
while (drops <= maxReconnects && Date.now() < deadline) {
|
|
246
|
+
const r = await streamOnce(link, fetchImpl, settle, deadline, opts.idleMs ?? 45_000);
|
|
247
|
+
if (r.outcome)
|
|
248
|
+
return r.outcome;
|
|
249
|
+
if (r.end === "unsupported" || r.end === "deadline")
|
|
250
|
+
break;
|
|
251
|
+
if (r.end === "done") {
|
|
252
|
+
// The build ended without the event saying how: read the row once.
|
|
253
|
+
const final = settle(await fetchRepoState(link, fetchImpl));
|
|
254
|
+
if (final)
|
|
255
|
+
return final;
|
|
256
|
+
break;
|
|
158
257
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
// has handed over, and still mining the older slices of the history, and
|
|
163
|
-
// neither is worth a terminal sitting on it.
|
|
164
|
-
if (view.ready)
|
|
165
|
-
return "building";
|
|
258
|
+
drops++;
|
|
259
|
+
if (drops <= maxReconnects)
|
|
260
|
+
await sleep(Math.min(1000 * drops, 4000));
|
|
166
261
|
}
|
|
167
|
-
|
|
262
|
+
}
|
|
263
|
+
for (;;) {
|
|
264
|
+
const outcome = settle(await fetchRepoState(link, fetchImpl));
|
|
265
|
+
if (outcome)
|
|
266
|
+
return outcome;
|
|
267
|
+
if (Date.now() >= deadline)
|
|
168
268
|
return everRead ? "timed_out" : "unreachable";
|
|
169
269
|
await sleep(pollMs);
|
|
170
270
|
}
|
|
171
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* An incremental text/event-stream parser: feed it chunks as they arrive,
|
|
274
|
+
* get back the events they completed. Comments (`: ping`) are dropped; a
|
|
275
|
+
* missing `event:` field means `message`, per the spec.
|
|
276
|
+
*/
|
|
277
|
+
export class SseParser {
|
|
278
|
+
buf = "";
|
|
279
|
+
event = "";
|
|
280
|
+
data = [];
|
|
281
|
+
push(chunk) {
|
|
282
|
+
this.buf += chunk;
|
|
283
|
+
const out = [];
|
|
284
|
+
for (;;) {
|
|
285
|
+
const nl = this.buf.search(/\r\n|\r|\n/);
|
|
286
|
+
if (nl < 0)
|
|
287
|
+
break;
|
|
288
|
+
const sep = this.buf.startsWith("\r\n", nl) ? 2 : 1;
|
|
289
|
+
// A lone \r at the very end may be the first half of \r\n: wait for more.
|
|
290
|
+
if (this.buf[nl] === "\r" && sep === 1 && nl === this.buf.length - 1)
|
|
291
|
+
break;
|
|
292
|
+
const line = this.buf.slice(0, nl);
|
|
293
|
+
this.buf = this.buf.slice(nl + sep);
|
|
294
|
+
if (line === "") {
|
|
295
|
+
if (this.data.length > 0)
|
|
296
|
+
out.push({ event: this.event || "message", data: this.data.join("\n") });
|
|
297
|
+
this.event = "";
|
|
298
|
+
this.data = [];
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
if (line.startsWith(":"))
|
|
302
|
+
continue;
|
|
303
|
+
const colon = line.indexOf(":");
|
|
304
|
+
const field = colon < 0 ? line : line.slice(0, colon);
|
|
305
|
+
let value = colon < 0 ? "" : line.slice(colon + 1);
|
|
306
|
+
if (value.startsWith(" "))
|
|
307
|
+
value = value.slice(1);
|
|
308
|
+
if (field === "event")
|
|
309
|
+
this.event = value;
|
|
310
|
+
else if (field === "data")
|
|
311
|
+
this.data.push(value);
|
|
312
|
+
// id and retry are not used: a reconnect starts from a fresh `progress`.
|
|
313
|
+
}
|
|
314
|
+
return out;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* One connection to `GET /events`. Resolves with the outcome when an event
|
|
319
|
+
* settled the watch, or with how the stream ended when none did.
|
|
320
|
+
*/
|
|
321
|
+
async function streamOnce(link, fetchImpl, settle, deadline, idleMs) {
|
|
322
|
+
const ctl = new AbortController();
|
|
323
|
+
let res;
|
|
324
|
+
try {
|
|
325
|
+
res = await fetchImpl(`${baseUrlFor(link)}/api/public/brains/${encodeURIComponent(link.brainId)}/events`, {
|
|
326
|
+
headers: { authorization: `Bearer ${link.token}`, accept: "text/event-stream", "cache-control": "no-cache" },
|
|
327
|
+
signal: ctl.signal,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return { end: "dropped" };
|
|
332
|
+
}
|
|
333
|
+
// A server without the route, or one that answered with something other
|
|
334
|
+
// than a stream: polling is the answer, not three more tries.
|
|
335
|
+
if (res.status === 404 || res.status === 405 || res.status === 501)
|
|
336
|
+
return { end: "unsupported" };
|
|
337
|
+
if (!res.ok)
|
|
338
|
+
return { end: "dropped" };
|
|
339
|
+
const type = res.headers?.get?.("content-type") ?? "text/event-stream";
|
|
340
|
+
if (!res.body || !/event-stream/i.test(type))
|
|
341
|
+
return { end: "unsupported" };
|
|
342
|
+
const reader = res.body.getReader();
|
|
343
|
+
const decoder = new TextDecoder();
|
|
344
|
+
const parser = new SseParser();
|
|
345
|
+
try {
|
|
346
|
+
for (;;) {
|
|
347
|
+
const left = deadline - Date.now();
|
|
348
|
+
if (left <= 0)
|
|
349
|
+
return { end: "deadline" };
|
|
350
|
+
let timer;
|
|
351
|
+
const idle = new Promise((r) => {
|
|
352
|
+
// Not unref'd: while the stream is quiet this timer is what the
|
|
353
|
+
// process is waiting on, and it is cleared the moment a chunk lands.
|
|
354
|
+
timer = setTimeout(() => r("idle"), Math.min(idleMs, left));
|
|
355
|
+
});
|
|
356
|
+
const got = await Promise.race([reader.read(), idle]).finally(() => clearTimeout(timer));
|
|
357
|
+
if (got === "idle")
|
|
358
|
+
return { end: Date.now() >= deadline ? "deadline" : "dropped" };
|
|
359
|
+
if (got.done)
|
|
360
|
+
return { end: "dropped" };
|
|
361
|
+
for (const ev of parser.push(decoder.decode(got.value, { stream: true }))) {
|
|
362
|
+
let payload = null;
|
|
363
|
+
try {
|
|
364
|
+
payload = ev.data ? JSON.parse(ev.data) : null;
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
payload = null;
|
|
368
|
+
}
|
|
369
|
+
if (ev.event === "progress" || ev.event === "message") {
|
|
370
|
+
const outcome = settle(parseRepoBody(payload));
|
|
371
|
+
if (outcome)
|
|
372
|
+
return { outcome };
|
|
373
|
+
}
|
|
374
|
+
else if (ev.event === "done") {
|
|
375
|
+
const outcome = settle(parseRepoBody(payload));
|
|
376
|
+
if (outcome)
|
|
377
|
+
return { outcome };
|
|
378
|
+
return { end: "done" };
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
return { end: "dropped" };
|
|
385
|
+
}
|
|
386
|
+
finally {
|
|
387
|
+
ctl.abort();
|
|
388
|
+
try {
|
|
389
|
+
reader.releaseLock();
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
/* already released by the abort */
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
172
396
|
//# sourceMappingURL=watch.js.map
|
package/dist/brain/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/brain/watch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/brain/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface BuiltGraph {
|
|
2
|
+
nodes: number;
|
|
3
|
+
edges: number;
|
|
4
|
+
files: number;
|
|
5
|
+
}
|
|
6
|
+
/** The totals out of `graft build`'s stdout, or null when it printed none. */
|
|
7
|
+
export declare function parseBuildSummary(stdout: string): BuiltGraph | null;
|
|
8
|
+
/** The last `parsing N/M` in a chunk of the child's stderr. */
|
|
9
|
+
export declare function parseProgress(chunk: string): {
|
|
10
|
+
index: number;
|
|
11
|
+
total: number;
|
|
12
|
+
} | null;
|
|
13
|
+
/**
|
|
14
|
+
* Build the graph for `dir` unless it has one, showing progress on a spinner.
|
|
15
|
+
*
|
|
16
|
+
* `built: false` with no `failed` means there was nothing to do (`--no-build`,
|
|
17
|
+
* or a graph already there). Warning and error lines the build printed come
|
|
18
|
+
* back in `messages`, for the caller to print in full.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildGraphWithProgress(dir: string, opts: {
|
|
21
|
+
build?: boolean;
|
|
22
|
+
cliPath?: string;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
built: boolean;
|
|
25
|
+
graph?: BuiltGraph;
|
|
26
|
+
failed?: boolean;
|
|
27
|
+
messages: string[];
|
|
28
|
+
}>;
|
|
29
|
+
//# sourceMappingURL=build-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-progress.d.ts","sourceRoot":"","sources":["../../src/claude/build-progress.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAID,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAKnE;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIpF;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAmCvF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `graft build`, run from `graft init` as one line that redraws in place.
|
|
3
|
+
*
|
|
4
|
+
* `buildGraphIfMissing` hands the child the terminal, which prints a `parsing
|
|
5
|
+
* N/M: path` line and four more after it. That is the right output for someone
|
|
6
|
+
* who ran `graft build`, and five lines of someone else's output in the middle
|
|
7
|
+
* of init. Here the child's output is read instead: its progress becomes the
|
|
8
|
+
* spinner's `1,204 of 1,942 files`, its totals become init's one summary line,
|
|
9
|
+
* and any warning or error it printed is passed on whole.
|
|
10
|
+
*/
|
|
11
|
+
import { spawn } from "node:child_process";
|
|
12
|
+
import { hasGraftIndex } from "../graph/root.js";
|
|
13
|
+
import { startSpinner } from "../util/spinner.js";
|
|
14
|
+
const n = (s) => Number((s ?? "0").replace(/,/g, "")) || 0;
|
|
15
|
+
/** The totals out of `graft build`'s stdout, or null when it printed none. */
|
|
16
|
+
export function parseBuildSummary(stdout) {
|
|
17
|
+
const wiring = /✓ wiring: ([\d,]+) nodes.*?, ([\d,]+) edges/.exec(stdout);
|
|
18
|
+
if (!wiring)
|
|
19
|
+
return null;
|
|
20
|
+
const parsed = /parsed: [\d,]+ of ([\d,]+) files/.exec(stdout);
|
|
21
|
+
return { nodes: n(wiring[1]), edges: n(wiring[2]), files: n(parsed?.[1]) };
|
|
22
|
+
}
|
|
23
|
+
/** The last `parsing N/M` in a chunk of the child's stderr. */
|
|
24
|
+
export function parseProgress(chunk) {
|
|
25
|
+
let last = null;
|
|
26
|
+
for (const m of chunk.matchAll(/(?:parsing|summarizing) (\d+)\/(\d+)/g))
|
|
27
|
+
last = { index: n(m[1]), total: n(m[2]) };
|
|
28
|
+
return last;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build the graph for `dir` unless it has one, showing progress on a spinner.
|
|
32
|
+
*
|
|
33
|
+
* `built: false` with no `failed` means there was nothing to do (`--no-build`,
|
|
34
|
+
* or a graph already there). Warning and error lines the build printed come
|
|
35
|
+
* back in `messages`, for the caller to print in full.
|
|
36
|
+
*/
|
|
37
|
+
export async function buildGraphWithProgress(dir, opts) {
|
|
38
|
+
if (opts.build === false || !opts.cliPath || hasGraftIndex(dir))
|
|
39
|
+
return { built: false, messages: [] };
|
|
40
|
+
const spinner = startSpinner("building the graph");
|
|
41
|
+
let stdout = "";
|
|
42
|
+
let stderr = "";
|
|
43
|
+
const fmt = (x) => x.toLocaleString("en-US");
|
|
44
|
+
const code = await new Promise((resolve) => {
|
|
45
|
+
const child = spawn(process.execPath, [...process.execArgv, opts.cliPath, "build", "."], {
|
|
46
|
+
cwd: dir,
|
|
47
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
48
|
+
});
|
|
49
|
+
const timer = setTimeout(() => child.kill(), 300_000);
|
|
50
|
+
timer.unref?.();
|
|
51
|
+
child.stdout.setEncoding("utf8");
|
|
52
|
+
child.stderr.setEncoding("utf8");
|
|
53
|
+
child.stdout.on("data", (d) => (stdout += d));
|
|
54
|
+
child.stderr.on("data", (d) => {
|
|
55
|
+
stderr += d;
|
|
56
|
+
const p = parseProgress(d);
|
|
57
|
+
if (p)
|
|
58
|
+
spinner.update(`building the graph · ${fmt(p.index)} of ${fmt(p.total)} files`);
|
|
59
|
+
});
|
|
60
|
+
child.on("error", () => resolve(null));
|
|
61
|
+
child.on("close", (c) => {
|
|
62
|
+
clearTimeout(timer);
|
|
63
|
+
resolve(c);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
spinner.stop();
|
|
67
|
+
const messages = `${stdout}\n${stderr.replace(/\r[^\n]*/g, "\n")}`
|
|
68
|
+
.split("\n")
|
|
69
|
+
.map((l) => l.trimEnd())
|
|
70
|
+
.filter((l) => /^\s*[⚠✗]/.test(l));
|
|
71
|
+
const graph = parseBuildSummary(stdout) ?? undefined;
|
|
72
|
+
if (code !== 0)
|
|
73
|
+
return { built: false, failed: true, messages };
|
|
74
|
+
return { built: true, graph, messages };
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=build-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-progress.js","sourceRoot":"","sources":["../../src/claude/build-progress.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-picker.d.ts
CHANGED
|
@@ -7,6 +7,13 @@ export declare function tilde(path: string, home: string): string;
|
|
|
7
7
|
* can't see in `git status`, so they get named explicitly.
|
|
8
8
|
*/
|
|
9
9
|
export declare function describeWrites(writes: PlannedWrite[], repo: string, home: string, maxShown?: number): string;
|
|
10
|
+
/**
|
|
11
|
+
* The picker's and init's one-line summary: at most two repo entries, a folder
|
|
12
|
+
* written into several times shown once as `folder/` when something else sits
|
|
13
|
+
* beside it, then the count of writes outside the repo. `.claude/, .mcp.json ·
|
|
14
|
+
* + 3 in ~/` rather than five paths nobody reads.
|
|
15
|
+
*/
|
|
16
|
+
export declare function compactWrites(writes: PlannedWrite[], repo: string, home: string, maxShown?: number): string;
|
|
10
17
|
export interface PickerRow {
|
|
11
18
|
id: string;
|
|
12
19
|
detected: boolean;
|
|
@@ -34,11 +41,16 @@ export interface PickerRow {
|
|
|
34
41
|
export declare const TELEMETRY_ROW_ID = "__telemetry";
|
|
35
42
|
export interface PickerState {
|
|
36
43
|
rows: PickerRow[];
|
|
44
|
+
/** Index into {@link visibleRows}, not into `rows`. */
|
|
37
45
|
cursor: number;
|
|
38
46
|
checked: ReadonlySet<string>;
|
|
39
47
|
done: boolean;
|
|
40
48
|
aborted: boolean;
|
|
49
|
+
/** Agents graft cannot find on this machine are folded into one line until `m`. */
|
|
50
|
+
showHidden?: boolean;
|
|
41
51
|
}
|
|
52
|
+
/** The rows on screen: undetected agents only once `m` has unfolded them. */
|
|
53
|
+
export declare function visibleRows(state: PickerState): PickerRow[];
|
|
42
54
|
/**
|
|
43
55
|
* Claude Code starts checked — it's the deep integration — everything else off.
|
|
44
56
|
*
|
|
@@ -48,7 +60,7 @@ export interface PickerState {
|
|
|
48
60
|
export declare function initialPickerState(plan: HostPlan[], repo: string, home: string, opts?: {
|
|
49
61
|
offerTelemetry?: boolean;
|
|
50
62
|
}): PickerState;
|
|
51
|
-
export type PickerKey = 'up' | 'down' | 'space' | 'all' | 'enter' | 'abort';
|
|
63
|
+
export type PickerKey = 'up' | 'down' | 'space' | 'all' | 'more' | 'enter' | 'abort';
|
|
52
64
|
export declare const KEY_UP = "\u001B[A";
|
|
53
65
|
export declare const KEY_DOWN = "\u001B[B";
|
|
54
66
|
export declare const KEY_ESC = "\u001B";
|
|
@@ -63,7 +75,9 @@ export declare function keyOf(chunk: string): PickerKey | null;
|
|
|
63
75
|
*/
|
|
64
76
|
export declare function keysOf(chunk: string): PickerKey[];
|
|
65
77
|
export declare function reducePicker(state: PickerState, key: PickerKey): PickerState;
|
|
66
|
-
export declare function renderPicker(state: PickerState, tty?: boolean
|
|
78
|
+
export declare function renderPicker(state: PickerState, tty?: boolean, opts?: {
|
|
79
|
+
title?: string | null;
|
|
80
|
+
}): string;
|
|
67
81
|
/** Ids in plan order, so output ordering never depends on toggle order. */
|
|
68
82
|
export declare function pickedIds(state: PickerState): string[];
|
|
69
83
|
/** Just the agents, with the setting rows filtered out — what init wires. */
|
|
@@ -84,6 +98,7 @@ export interface Picked {
|
|
|
84
98
|
}
|
|
85
99
|
export declare function runPicker(plan: HostPlan[], repo: string, home: string, opts?: {
|
|
86
100
|
offerTelemetry?: boolean;
|
|
101
|
+
title?: string | null;
|
|
87
102
|
}): Promise<Picked | null>;
|
|
88
103
|
/**
|
|
89
104
|
* Shown when there's no TTY to prompt on and no flag saying what to wire.
|
package/dist/cli-picker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-picker.d.ts","sourceRoot":"","sources":["../src/cli-picker.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM9D,6DAA6D;AAC7D,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAWD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAI,GACX,MAAM,CAmBR;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB;qDACiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd;;iEAE6D;IAC7D,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-picker.d.ts","sourceRoot":"","sources":["../src/cli-picker.ts"],"names":[],"mappings":"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"}
|