@spinabot/brigade 1.15.0 → 1.17.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/auth/profiles.d.ts +24 -0
- package/dist/auth/profiles.d.ts.map +1 -1
- package/dist/auth/profiles.js +44 -0
- package/dist/auth/profiles.js.map +1 -1
- package/dist/buildstamp.json +1 -1
- package/dist/cli/commands/connect.d.ts.map +1 -1
- package/dist/cli/commands/connect.js +101 -12
- package/dist/cli/commands/connect.js.map +1 -1
- package/dist/cli/commands/gateway.d.ts.map +1 -1
- package/dist/cli/commands/gateway.js +40 -2
- package/dist/cli/commands/gateway.js.map +1 -1
- package/dist/core/auth-bridge.d.ts +4 -0
- package/dist/core/auth-bridge.d.ts.map +1 -1
- package/dist/core/auth-bridge.js +105 -12
- package/dist/core/auth-bridge.js.map +1 -1
- package/dist/core/server.js +64 -1
- package/dist/core/server.js.map +1 -1
- package/dist/core/ws-subscription-filter.d.ts.map +1 -1
- package/dist/core/ws-subscription-filter.js +13 -2
- package/dist/core/ws-subscription-filter.js.map +1 -1
- package/package.json +1 -1
package/dist/auth/profiles.d.ts
CHANGED
|
@@ -72,6 +72,30 @@ export declare function upsertOAuthProfile(agentId: string, args: {
|
|
|
72
72
|
clientSecret?: string;
|
|
73
73
|
metadata?: Record<string, unknown>;
|
|
74
74
|
}): string;
|
|
75
|
+
/**
|
|
76
|
+
* Persist a REFRESHED OAuth credential back into an existing oauth profile,
|
|
77
|
+
* in place. Pi's AuthStorage auto-refreshes an expired subscription token on
|
|
78
|
+
* use, and every provider that matters (Anthropic / OpenAI-Codex / Google)
|
|
79
|
+
* ROTATES the refresh token on each refresh — the response carries a NEW
|
|
80
|
+
* refresh token and invalidates the old one. If we never write the rotated
|
|
81
|
+
* token back, the next gateway boot re-reads the stale on-disk refresh token,
|
|
82
|
+
* the refresh 401s, and the login dies a day or two after onboarding. This is
|
|
83
|
+
* the write-back path that closes that gap, generically for any provider.
|
|
84
|
+
*
|
|
85
|
+
* Non-destructive: preserves the profile's clientSecret (sealed `key`), alias,
|
|
86
|
+
* refs we don't touch, and existing metadata; only the token fields are
|
|
87
|
+
* overwritten. Writing a literal token CLEARS any stale `accessRef`/`refreshRef`
|
|
88
|
+
* so the fresh literal wins on the next read (see `resolveRefValue`). Goes
|
|
89
|
+
* through the same mode-aware `writeProfiles` choke point, so convex mode seals
|
|
90
|
+
* the new access/refresh columns. Returns false when no oauth profile exists for
|
|
91
|
+
* `provider` (nothing to update — e.g. an env-only credential).
|
|
92
|
+
*/
|
|
93
|
+
export declare function updateOAuthTokens(agentId: string, provider: string, tokens: {
|
|
94
|
+
access?: string;
|
|
95
|
+
refresh?: string;
|
|
96
|
+
expires?: number;
|
|
97
|
+
metadata?: Record<string, unknown>;
|
|
98
|
+
}): boolean;
|
|
75
99
|
export declare function upsertApiKeyRefProfile(agentId: string, args: {
|
|
76
100
|
provider: string;
|
|
77
101
|
alias?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACvC;AAkBD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAIpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAqBD;+DAC+D;AAC/D,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,aAAa,GACnB,IAAI,CAGN;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,iBAAiB;AACjB,wBAAgB,yBAAyB,IAAI,IAAI,CAIhD;AA4CD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAiDtD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAmB9D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAW3E;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAuBxD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAOrE;AASD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC1F,MAAM,CAYR;AAQD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAClG,OAAO,CAyBT;AAKD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACvG,MAAM,CAYR;AAID,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC5F,MAAM,CAYR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACzG,MAAM,CAYR"}
|
package/dist/auth/profiles.js
CHANGED
|
@@ -229,6 +229,50 @@ export function upsertOAuthProfile(agentId, args) {
|
|
|
229
229
|
writeProfiles(agentId, file);
|
|
230
230
|
return id;
|
|
231
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Persist a REFRESHED OAuth credential back into an existing oauth profile,
|
|
234
|
+
* in place. Pi's AuthStorage auto-refreshes an expired subscription token on
|
|
235
|
+
* use, and every provider that matters (Anthropic / OpenAI-Codex / Google)
|
|
236
|
+
* ROTATES the refresh token on each refresh — the response carries a NEW
|
|
237
|
+
* refresh token and invalidates the old one. If we never write the rotated
|
|
238
|
+
* token back, the next gateway boot re-reads the stale on-disk refresh token,
|
|
239
|
+
* the refresh 401s, and the login dies a day or two after onboarding. This is
|
|
240
|
+
* the write-back path that closes that gap, generically for any provider.
|
|
241
|
+
*
|
|
242
|
+
* Non-destructive: preserves the profile's clientSecret (sealed `key`), alias,
|
|
243
|
+
* refs we don't touch, and existing metadata; only the token fields are
|
|
244
|
+
* overwritten. Writing a literal token CLEARS any stale `accessRef`/`refreshRef`
|
|
245
|
+
* so the fresh literal wins on the next read (see `resolveRefValue`). Goes
|
|
246
|
+
* through the same mode-aware `writeProfiles` choke point, so convex mode seals
|
|
247
|
+
* the new access/refresh columns. Returns false when no oauth profile exists for
|
|
248
|
+
* `provider` (nothing to update — e.g. an env-only credential).
|
|
249
|
+
*/
|
|
250
|
+
export function updateOAuthTokens(agentId, provider, tokens) {
|
|
251
|
+
const file = readProfiles(agentId);
|
|
252
|
+
const matches = Object.entries(file.profiles).filter(([, p]) => p?.type === "oauth" && p?.provider === provider);
|
|
253
|
+
if (matches.length === 0)
|
|
254
|
+
return false;
|
|
255
|
+
// Prefer the default-alias profile; otherwise the first oauth profile found.
|
|
256
|
+
const defaultId = profileId(provider);
|
|
257
|
+
const [id, prof] = matches.find(([eid]) => eid === defaultId) ?? matches[0];
|
|
258
|
+
const next = { ...prof };
|
|
259
|
+
if (tokens.access !== undefined) {
|
|
260
|
+
next.access = tokens.access;
|
|
261
|
+
delete next.accessRef;
|
|
262
|
+
}
|
|
263
|
+
if (tokens.refresh !== undefined) {
|
|
264
|
+
next.refresh = tokens.refresh;
|
|
265
|
+
delete next.refreshRef;
|
|
266
|
+
}
|
|
267
|
+
if (tokens.expires !== undefined)
|
|
268
|
+
next.expires = tokens.expires;
|
|
269
|
+
if (tokens.metadata !== undefined) {
|
|
270
|
+
next.metadata = { ...(prof.metadata ?? {}), ...tokens.metadata };
|
|
271
|
+
}
|
|
272
|
+
file.profiles[id] = sanitizeProfileShape(next);
|
|
273
|
+
writeProfiles(agentId, file);
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
232
276
|
// Ref-mode counterpart: stores a structured BrigadeSecretRef instead of the
|
|
233
277
|
// literal key. The literal `key` field is NOT persisted — sanitizeProfileShape
|
|
234
278
|
// drops it when keyRef is present.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"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"}
|
package/dist/buildstamp.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"builtAt":
|
|
1
|
+
{"builtAt":1782663695479,"head":"527b9597022d11aafb612dcb14458cd5d8d1066f","version":"1.17.0"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAMN,GAAG,EACH,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAuBpD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,WAAW,EAAE,OAAO,GAAG,IAAI,CAejF;AAED,MAAM,WAAW,qBAAqB;IACrC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC7B,iFAAiF;IACjF,KAAK,IAAI,OAAO,CAAC;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACtC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,aAAa,CAAC,CAsHhG;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAClC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,aAAa,EACrB,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CA86ExB"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* Ollama, BYO-endpoint) still need the full `brigade onboard` wizard.
|
|
20
20
|
*/
|
|
21
21
|
import process from "node:process";
|
|
22
|
+
import { randomUUID } from "node:crypto";
|
|
22
23
|
import { CancellableLoader, CombinedAutocompleteProvider, ProcessTerminal, Text, TUI, } from "@earendil-works/pi-tui";
|
|
23
24
|
import { BrigadeEditor } from "../../ui/editor.js";
|
|
24
25
|
import { PROVIDERS, findProvider } from "../../providers/catalog.js";
|
|
@@ -212,6 +213,16 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
212
213
|
tui.addChild(header);
|
|
213
214
|
const divider = new Text(brand.dim("─".repeat(80)), 0, 0);
|
|
214
215
|
tui.addChild(divider);
|
|
216
|
+
// Persistent status FOOTER. Pi-TUI renders a viewport anchored to the
|
|
217
|
+
// focused editor at the bottom, so the top header (brand wordmark + this
|
|
218
|
+
// model/token line) scrolls ABOVE the viewport as soon as a streamed reply
|
|
219
|
+
// fills the screen — the operator loses sight of the model + token/cost
|
|
220
|
+
// readout exactly when a turn is running. The footer lives in the
|
|
221
|
+
// always-visible bottom region (added after the editor, alongside the hint
|
|
222
|
+
// lines), and `updateHeader` paints the same live status into it. Declared
|
|
223
|
+
// here so the first `updateHeader()` (before the editor is built) can target
|
|
224
|
+
// it; added to the tree below, right under the editor.
|
|
225
|
+
const footer = new Text("", 0, 0);
|
|
215
226
|
// Cumulative usage — accumulated from state snapshots so a reconnect picks
|
|
216
227
|
// up where we left off instead of zeroing the totals on the user's screen.
|
|
217
228
|
let lastSnapshot = null;
|
|
@@ -296,13 +307,30 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
296
307
|
// server-side subscribe (so we only drop frames that explicitly stamp a
|
|
297
308
|
// DIFFERENT lane — frames with no stamp at all fall through, preserving
|
|
298
309
|
// back-compat with older gateway builds that don't tag broadcasts yet).
|
|
299
|
-
const isOffLane = (frameAgentId, frameSessionId) => {
|
|
310
|
+
const isOffLane = (frameAgentId, frameSessionId, subagentDepth) => {
|
|
300
311
|
if (boundAgentId !== undefined && typeof frameAgentId === "string" && frameAgentId.length > 0) {
|
|
301
312
|
if (frameAgentId !== boundAgentId)
|
|
302
313
|
return true;
|
|
303
314
|
}
|
|
315
|
+
// A SUB-AGENT of the bound agent is in-lane regardless of its session id.
|
|
316
|
+
// Sub-agent STREAMING pi frames carry a child Pi-session UUID (NOT the
|
|
317
|
+
// `…:subagent:…` descendant key), so the session-prefix check below can't
|
|
318
|
+
// catch them — the depth tag is the reliable signal. Without this, the
|
|
319
|
+
// operator watching the parent turn never sees the sub-agent working
|
|
320
|
+
// (only its approval prompts, which DO carry the descendant key, slipped
|
|
321
|
+
// through). The agent already matched above, so this can't leak another
|
|
322
|
+
// agent's sub-agents.
|
|
323
|
+
if (typeof subagentDepth === "number" && subagentDepth > 0)
|
|
324
|
+
return false;
|
|
304
325
|
if (boundSessionKey !== undefined && typeof frameSessionId === "string" && frameSessionId.length > 0) {
|
|
305
|
-
|
|
326
|
+
// In-lane = the bound session OR a sub-agent DESCENDANT of it. A
|
|
327
|
+
// spawned sub-agent runs under a child key (`<bound>:subagent:<id>`),
|
|
328
|
+
// so its live frames + approval prompts belong to the operator
|
|
329
|
+
// watching this lane — without this they'd be dropped, the sub-agent's
|
|
330
|
+
// work would be invisible, and its `bash` approval prompt would never
|
|
331
|
+
// render (the turn hangs until the approval times out). Trailing ":"
|
|
332
|
+
// prevents a sibling (`…:main2`) from matching (`…:main`).
|
|
333
|
+
if (frameSessionId !== boundSessionKey && !frameSessionId.startsWith(`${boundSessionKey}:`))
|
|
306
334
|
return true;
|
|
307
335
|
}
|
|
308
336
|
return false;
|
|
@@ -471,6 +499,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
471
499
|
const sessionLabel = formatSessionLabel(lastSnapshot?.sessionKey);
|
|
472
500
|
const sessionSegment = sessionLabel ? ` ${brand.dim(`· ${sessionLabel}`)}` : "";
|
|
473
501
|
header.setText(` ${dot} 🦁 ${brand.white(personaLabel)}${crewSegment}${sessionSegment} ${brand.dim(`${provider} · ${modelId}${tokens}${cost}`)}${usageStr}${brand.dim(elapsed)}${brand.dim(tail)}`);
|
|
502
|
+
// Mirror the live model + token/cost/context readout into the bottom
|
|
503
|
+
// status footer so it survives the viewport scroll while a turn streams
|
|
504
|
+
// (the top header scrolls out of view; this stays pinned by the editor).
|
|
505
|
+
footer.setText(` ${dot} ${brand.dim(`${provider} · ${modelId}${tokens}${cost}`)}${usageStr}${brand.dim(elapsed)}${brand.dim(tail)}`);
|
|
474
506
|
};
|
|
475
507
|
/**
|
|
476
508
|
* Tick the elapsed-time display every second while the agent is busy.
|
|
@@ -503,6 +535,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
503
535
|
const editor = new BrigadeEditor(tui, editorTheme);
|
|
504
536
|
tui.addChild(editor);
|
|
505
537
|
tui.setFocus(editor);
|
|
538
|
+
// Pin the live status line directly under the editor — the bottom region
|
|
539
|
+
// Pi-TUI keeps in view (the hint lines below also live here). This is what
|
|
540
|
+
// keeps `provider · model · tokens · cost` visible while a reply streams.
|
|
541
|
+
tui.addChild(footer);
|
|
506
542
|
// Slash-command autocomplete (Pi-TUI built-in). Connect-mode list omits
|
|
507
543
|
// `/provider` (it can't run the wizard against the remote gateway's
|
|
508
544
|
// filesystem) and `/clear` (chat-only). See chat.ts for the full set.
|
|
@@ -586,6 +622,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
586
622
|
description: "show/bind the connection's active agent id",
|
|
587
623
|
argumentHint: "[<agent-id>]",
|
|
588
624
|
},
|
|
625
|
+
{
|
|
626
|
+
name: "new",
|
|
627
|
+
description: "start a fresh thread (new session, clean screen, no prior context)",
|
|
628
|
+
},
|
|
589
629
|
{
|
|
590
630
|
name: "session",
|
|
591
631
|
description: "show/bind the connection's active session key",
|
|
@@ -616,7 +656,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
616
656
|
// inline — the credential write happens on the GATEWAY side (`add-provider`
|
|
617
657
|
// RPC), so it works from connect mode too. Subscription / local / custom
|
|
618
658
|
// providers still need `brigade onboard` on the gateway machine.
|
|
619
|
-
tui.addChild(new Text(brand.dim(" connect-mode: /agent /agents /sessions · /model /provider /thinking /reasoning · /abort /steer /compact · /usage /help"), 0, 0));
|
|
659
|
+
tui.addChild(new Text(brand.dim(" connect-mode: /new /agent /agents /session /sessions · /model /provider /thinking /reasoning · /abort /steer /compact · /usage /help"), 0, 0));
|
|
620
660
|
tui.addChild(new Text(brand.dim(" Enter to send · Ctrl+C abort · /usage /abort /reasoning · /help for full list"), 0, 0));
|
|
621
661
|
const insertBeforeEditor = (component) => {
|
|
622
662
|
const children = tui.children;
|
|
@@ -924,6 +964,15 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
924
964
|
// overlapping clears/rebuilds against the shared render maps.
|
|
925
965
|
let resumeInFlight = false;
|
|
926
966
|
let resumePending = false;
|
|
967
|
+
// Resume = ONE idempotent operation: "attach to the bound thread and render
|
|
968
|
+
// its current truth." It fires identically on initial connect AND on
|
|
969
|
+
// reconnect/resync — both land the operator in the SAME thread with its
|
|
970
|
+
// history, so the screen never disagrees with what the agent actually
|
|
971
|
+
// remembers (best-in-class default: ChatGPT/Claude.ai/Cursor/Hermes all land
|
|
972
|
+
// you in your thread WITH history). A genuinely clean slate is `/new` (a real
|
|
973
|
+
// empty thread), never a blanked view of a thread that's secretly full.
|
|
974
|
+
// The replay is BOUNDED server-side — the `resume` RPC caps how many
|
|
975
|
+
// transcript messages it ships — so a 10k-message thread stays snappy.
|
|
927
976
|
const doResume = async () => {
|
|
928
977
|
if (resumeInFlight) {
|
|
929
978
|
resumePending = true;
|
|
@@ -946,8 +995,8 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
946
995
|
renderTranscriptMessage(m);
|
|
947
996
|
// Recover the non-transcript events too ("nothing lost"): recent
|
|
948
997
|
// system-event notices, then any tool-approval prompts STILL pending
|
|
949
|
-
// on this session — re-rendered answerable
|
|
950
|
-
//
|
|
998
|
+
// on this session — re-rendered answerable so a prompt that arrived or
|
|
999
|
+
// was missed doesn't strand the turn.
|
|
951
1000
|
for (const ev of snap.recentSystemEvents ?? [])
|
|
952
1001
|
renderSystemEventLine(ev);
|
|
953
1002
|
for (const appr of snap.pendingApprovals ?? [])
|
|
@@ -1040,9 +1089,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1040
1089
|
// their own applySubscription() from their handlers below.
|
|
1041
1090
|
if (!seededSubscription && (boundAgentId !== undefined || boundSessionKey !== undefined)) {
|
|
1042
1091
|
seededSubscription = true;
|
|
1043
|
-
// Subscribe to the bound lane, THEN resume to load this
|
|
1044
|
-
//
|
|
1045
|
-
//
|
|
1092
|
+
// Subscribe to the bound lane, THEN resume to load this thread's
|
|
1093
|
+
// (bounded) history from the gateway's source of truth, so the operator
|
|
1094
|
+
// lands back where they left off — the same operation reconnect/resync
|
|
1095
|
+
// use. Runs once per connection. `/new` is the path to a fresh thread.
|
|
1046
1096
|
void applySubscription().finally(() => {
|
|
1047
1097
|
void doResume();
|
|
1048
1098
|
});
|
|
@@ -1062,7 +1112,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1062
1112
|
// don't belong to the lane this TUI is bound to. Server-side subscribe
|
|
1063
1113
|
// should already filter this, but a race between /agent rebind + the
|
|
1064
1114
|
// next gated-tool frame can still leak a stale one here.
|
|
1065
|
-
if (isOffLane(req.agentId, req.sessionId)) {
|
|
1115
|
+
if (isOffLane(req.agentId, req.sessionId, req.subagentDepth)) {
|
|
1066
1116
|
return;
|
|
1067
1117
|
}
|
|
1068
1118
|
renderApprovalPrompt(req);
|
|
@@ -1074,7 +1124,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1074
1124
|
// Wave N3 (bug #3) — defensive lane drop. Stamped log entries from
|
|
1075
1125
|
// off-lane agents get silently dropped here, matching the same
|
|
1076
1126
|
// filter the server's subscribe applies.
|
|
1077
|
-
if (isOffLane(entry.agentId, entry.sessionId))
|
|
1127
|
+
if (isOffLane(entry.agentId, entry.sessionId, entry.subagentDepth))
|
|
1078
1128
|
return;
|
|
1079
1129
|
// Scrub the server-pushed log message before rendering (see
|
|
1080
1130
|
// `scrubRenderable`) — these can carry forwarded model/tool text.
|
|
@@ -1097,7 +1147,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1097
1147
|
client.on("system-event", (event) => {
|
|
1098
1148
|
// Wave N3 (bug #3) — defensive lane drop. Cron-fired events stamped
|
|
1099
1149
|
// for another agent shouldn't surface on this operator's connect TUI.
|
|
1100
|
-
if (isOffLane(event.agentId, event.sessionId))
|
|
1150
|
+
if (isOffLane(event.agentId, event.sessionId, event.subagentDepth))
|
|
1101
1151
|
return;
|
|
1102
1152
|
renderSystemEventLine(event);
|
|
1103
1153
|
});
|
|
@@ -1112,7 +1162,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1112
1162
|
// filters via subscribe; this catches the gap between an /agent or
|
|
1113
1163
|
// /session rebind and the gateway's next-frame view of the new
|
|
1114
1164
|
// binding (or a legacy gateway that doesn't filter at all).
|
|
1115
|
-
if (isOffLane(payload.agentId, payload.sessionId))
|
|
1165
|
+
if (isOffLane(payload.agentId, payload.sessionId, subagentDepth))
|
|
1116
1166
|
return;
|
|
1117
1167
|
const depth = typeof subagentDepth === "number" ? subagentDepth : 0;
|
|
1118
1168
|
const subIndent = depth > 0 ? " ".repeat(depth) : "";
|
|
@@ -1219,6 +1269,24 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1219
1269
|
insertBeforeEditor(indicator);
|
|
1220
1270
|
break;
|
|
1221
1271
|
}
|
|
1272
|
+
case "tool_execution_update": {
|
|
1273
|
+
// LIVE tool output. Pi streams a tool's accumulating result via
|
|
1274
|
+
// `onUpdate` (e.g. `bash` fires stdout/stderr as it runs); the
|
|
1275
|
+
// gateway forwards each as a `tool_execution_update`. Repaint the
|
|
1276
|
+
// ⚡ chip with the running preview so the operator watches the tool
|
|
1277
|
+
// work in real time instead of a static spinner. The repaint is
|
|
1278
|
+
// coalesced through the streaming debouncer so a chatty command
|
|
1279
|
+
// can't thrash the terminal.
|
|
1280
|
+
const liveIndicator = pendingTools.get(event.toolCallId);
|
|
1281
|
+
if (liveIndicator) {
|
|
1282
|
+
const summary = summarizeToolResult(event.partialResult, { preserveNewlines: false });
|
|
1283
|
+
const previewText = scrubRenderable(summary.preview);
|
|
1284
|
+
const tail = summary.hasContent ? ` ${brand.dim(`· ${previewText}`)}` : "";
|
|
1285
|
+
liveIndicator.setText(`${subIndent} ${brand.tool("⚡")} ${brand.tool(event.toolName)}${tail}`);
|
|
1286
|
+
scheduleStreamingRender();
|
|
1287
|
+
}
|
|
1288
|
+
break;
|
|
1289
|
+
}
|
|
1222
1290
|
case "tool_execution_end": {
|
|
1223
1291
|
const indicator = pendingTools.get(event.toolCallId);
|
|
1224
1292
|
if (indicator) {
|
|
@@ -1463,6 +1531,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1463
1531
|
`- ${chalk.bold("/abort")} — stop the in-flight turn\n` +
|
|
1464
1532
|
`- ${chalk.bold("/usage")} — show token + cost totals for this session\n` +
|
|
1465
1533
|
`- ${chalk.bold("/reasoning <on|off>")} — show/hide the model's thinking blocks before replies (default: off)\n` +
|
|
1534
|
+
`- ${chalk.bold("/new")} — start a fresh thread (new session, clean screen, no prior context)\n` +
|
|
1466
1535
|
`- ${chalk.bold("/agent [<id>]")} — show/bind the connection's active agent\n` +
|
|
1467
1536
|
`- ${chalk.bold("/session [<key>]")} — show/bind the connection's active session\n` +
|
|
1468
1537
|
`- ${chalk.bold("/agents")} — list every agent the gateway knows about\n` +
|
|
@@ -1486,6 +1555,26 @@ export async function wireConnectUi(tui, client, initialAgentId) {
|
|
|
1486
1555
|
// agent's `main` lane. With `/session agent:main:whatsapp:<jid>` an
|
|
1487
1556
|
// operator can intervene in a runaway channel turn from the TUI.
|
|
1488
1557
|
// No-arg form prints the current binding.
|
|
1558
|
+
// /new — start a genuinely fresh thread. Binds the connection to a NEW
|
|
1559
|
+
// session key under the current agent (the gateway opens a fresh
|
|
1560
|
+
// transcript on the first prompt, so the agent starts with NO prior
|
|
1561
|
+
// context), clears the screen, and re-subscribes. This is the ONE true
|
|
1562
|
+
// clean-slate affordance: a normal launch lands you back in your existing
|
|
1563
|
+
// thread WITH its (bounded) history — the best-in-class default — and
|
|
1564
|
+
// `/new` is how you deliberately start over. Mirrors OpenClaw's `/new` and
|
|
1565
|
+
// Claude.ai/ChatGPT "new chat"; `/sessions` lists threads, `/session <key>`
|
|
1566
|
+
// jumps back to one.
|
|
1567
|
+
if (trimmed === "/new") {
|
|
1568
|
+
editor.setText("");
|
|
1569
|
+
const agentForNew = boundAgentId ?? lastSnapshot?.agentId ?? "main";
|
|
1570
|
+
const freshKey = `agent:${agentForNew}:t-${randomUUID().slice(0, 8)}`;
|
|
1571
|
+
boundSessionKey = freshKey;
|
|
1572
|
+
clearTranscriptRegion();
|
|
1573
|
+
insertBeforeEditor(new Text(` ${brand.amber("✓")} ${brand.dim("new thread")} ${brand.amber(freshKey)}`, 0, 0));
|
|
1574
|
+
updateHeader();
|
|
1575
|
+
void applySubscription();
|
|
1576
|
+
return;
|
|
1577
|
+
}
|
|
1489
1578
|
if (trimmed === "/session" || trimmed.startsWith("/session ")) {
|
|
1490
1579
|
editor.setText("");
|
|
1491
1580
|
const arg = trimmed === "/session" ? "" : trimmed.slice("/session ".length).trim();
|