@geohar/unbien-cli 0.1.2 → 0.3.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/connect.js CHANGED
@@ -19,7 +19,7 @@ import { Shell } from "./tui.js";
19
19
  import { renderAgentsPanel, renderPlanPanel, summariseAgents, summarisePlan, } from "./panels.js";
20
20
  import { renderStreaming, renderThinking, renderTranscript } from "./render.js";
21
21
  import { loadSettings, saveSettings, settingsPath } from "./settings.js";
22
- import { loadPeers, rememberPeer } from "./store.js";
22
+ import { loadPeers, rememberPeer, loadRelays } from "./store.js";
23
23
  function parseArgs(argv) {
24
24
  const positional = [];
25
25
  const flags = new Map();
@@ -70,6 +70,73 @@ function resolveTarget() {
70
70
  relayUrl: explicitRelay ?? peer.relayUrl,
71
71
  };
72
72
  }
73
+ /** Group peers by their relay URL — each group becomes one relay connection. */
74
+ function peersByRelay(peers) {
75
+ const groups = new Map();
76
+ for (const p of peers) {
77
+ const list = groups.get(p.relayUrl) ?? [];
78
+ list.push(p);
79
+ groups.set(p.relayUrl, list);
80
+ }
81
+ return groups;
82
+ }
83
+ /** Relay label for the picker: the relay's registered name if known, else the
84
+ * URL's hostname. Short — it's an inline tag, not a column. */
85
+ function relayLabelFor(url) {
86
+ const remembered = loadRelays().find((r) => r.url === url);
87
+ if (remembered)
88
+ return remembered.name;
89
+ try {
90
+ return new URL(url).hostname;
91
+ }
92
+ catch {
93
+ return url.slice(0, 20);
94
+ }
95
+ }
96
+ /** Fan out to every relay that has peers, list rooms from each machine,
97
+ * aggregate with provenance. Unreachable relays are skipped with a note —
98
+ * one dead relay must not wedge the whole picker. */
99
+ async function listAllSessions(keypair) {
100
+ const groups = peersByRelay(loadPeers());
101
+ const clients = new Map();
102
+ const choices = [];
103
+ const deadRelays = [];
104
+ await Promise.all([...groups.entries()].map(async ([relayUrl, relayPeers]) => {
105
+ // The invite's epk is per-machine; we need one client per relay, but
106
+ // listRooms is scoped per invite.epk — so we create one client per
107
+ // (relay, machine) pair. The FIRST machine on each relay provides the
108
+ // client; subsequent machines on the same relay reuse it (listRooms
109
+ // just sends rooms_check for that machine's epk).
110
+ for (const peer of relayPeers) {
111
+ const invite = {
112
+ token: "",
113
+ epk: peer.epk,
114
+ roomId: "main",
115
+ };
116
+ let client = clients.get(relayUrl);
117
+ if (!client) {
118
+ client = new SessionClient(relayUrl, keypair, invite);
119
+ try {
120
+ await client.connect();
121
+ clients.set(relayUrl, client);
122
+ }
123
+ catch {
124
+ deadRelays.push(relayLabelFor(relayUrl));
125
+ return;
126
+ }
127
+ }
128
+ const label = relayLabelFor(relayUrl);
129
+ const rooms = await client.listRooms();
130
+ for (const room of rooms) {
131
+ choices.push({ ...room, relayUrl, relayLabel: label });
132
+ }
133
+ }
134
+ }));
135
+ if (deadRelays.length > 0) {
136
+ console.error(`[relay] unreachable: ${deadRelays.join(", ")} (skipped)`);
137
+ }
138
+ return { choices, clients };
139
+ }
73
140
  const resolved = resolveTarget();
74
141
  if (!resolved) {
75
142
  console.error("usage:\n" +
@@ -108,7 +175,7 @@ let syncWindow = null;
108
175
  let quitting = false;
109
176
  function hardQuit(reason) {
110
177
  if (quitting)
111
- process.exit(130);
178
+ process.exit(130); // double-interrupt: immediate (already quitting)
112
179
  quitting = true;
113
180
  // Once the shell exists, pi owns the terminal — let its teardown run rather
114
181
  // than restoring stdin by hand (which loses the original raw-mode state).
@@ -124,10 +191,31 @@ function hardQuit(reason) {
124
191
  /* stdin already torn down */
125
192
  }
126
193
  process.stderr.write(`\n[exit] ${reason}\n`);
127
- process.exit(130);
194
+ Shell.exitAfterDrain(130);
128
195
  }
129
196
  process.on("SIGINT", () => hardQuit("interrupted"));
130
197
  process.on("SIGTERM", () => hardQuit("terminated"));
198
+ // UNCAUGHT/UNHANDLED SAFETY NET: an error thrown from an async event handler
199
+ // (a relay frame that triggers an unhandled path — e.g. a mesh revocation
200
+ // notification) kills the process with the terminal still in raw mode: no
201
+ // echo, no cursor, Kitty protocol active. These handlers restore the terminal
202
+ // before exiting, whatever went wrong. They are the LAST resort — everything
203
+ // above tries to tear down cleanly first.
204
+ function emergencyRestore(reason, err) {
205
+ try {
206
+ if (shell)
207
+ shell.quit();
208
+ else if (process.stdin.isTTY)
209
+ process.stdin.setRawMode(false);
210
+ }
211
+ catch {
212
+ /* terminal already gone */
213
+ }
214
+ process.stderr.write(`\n[exit] ${reason}: ${err instanceof Error ? err.message : String(err)}\n`);
215
+ Shell.exitAfterDrain(1);
216
+ }
217
+ process.on("uncaughtException", (err) => emergencyRestore("uncaught exception", err));
218
+ process.on("unhandledRejection", (reason) => emergencyRestore("unhandled rejection", reason));
131
219
  const debug = flags.has("debug");
132
220
  function trace(direction, detail) {
133
221
  if (debug)
@@ -138,7 +226,9 @@ const appliedTheme = await applyTheme(flags.get("theme") ?? settings.theme);
138
226
  if (appliedTheme.startsWith("dark ("))
139
227
  console.error(`[theme] ${appliedTheme}`);
140
228
  const { invite, relayUrl } = resolved;
141
- const client = new SessionClient(relayUrl, loadOrCreateIdentity(), invite);
229
+ let client = new SessionClient(relayUrl, loadOrCreateIdentity(), invite);
230
+ // Note: in the multi-relay path, the client's internals may be re-bound to
231
+ // the chosen relay's connection after the session picker (see below).
142
232
  const width = process.stdout.columns ?? 100;
143
233
  /** Frames seen so far; the transcript is re-reduced from the whole stream. */
144
234
  const seen = [];
@@ -154,18 +244,42 @@ function emit(lines) {
154
244
  for (const line of lines)
155
245
  console.log(line);
156
246
  }
247
+ // RENDER COALESCING (the CLI wedge fix): envelopes arrive in bursts during
248
+ // streaming, and draw() is O(n) per call (full reduce + renderTranscript).
249
+ // Calling it on EVERY envelope starves the event loop — WebSocket reads, TUI
250
+ // repaints, and keystrokes all queue behind a synchronous render cascade.
251
+ // This coalesces to AT MOST one render per event-loop turn (setImmediate
252
+ // fires after I/O, unlike process.nextTick which runs before it).
253
+ // WINDOWED DRAW (the O(n) fix): renderTranscript + setTranscript were O(n)
254
+ // per draw — for long sessions, every streaming delta re-rendered the entire
255
+ // conversation. Two caps:
256
+ // 1. ITEM WINDOW: only the last DRAW_ITEM_WINDOW items go to renderTranscript
257
+ // (the TUI scrolls from the bottom; anything above ~10 screens is wasted)
258
+ // 2. LINE CAP: the rendered lines are capped to DRAW_LINE_CAP for the TUI
259
+ // The reduce is still O(n) but it's a cheap loop — the RENDER was the cost.
260
+ const DRAW_ITEM_WINDOW = 80;
261
+ const DRAW_LINE_CAP = 2_000;
262
+ let drawPending = false;
157
263
  function draw() {
158
- const lines = renderTranscript(reduce(seen), width, cwd, !settings.showThinking);
159
- if (shell) {
160
- // The shell owns the screen, so hand it the whole transcript: history
161
- // replay re-reduces from scratch and would otherwise duplicate rows.
162
- shell.setTranscript(lines);
163
- }
164
- else {
165
- for (const line of lines.slice(drawn))
166
- console.log(line);
167
- }
168
- drawn = lines.length;
264
+ if (drawPending)
265
+ return;
266
+ drawPending = true;
267
+ setImmediate(() => {
268
+ drawPending = false;
269
+ const items = reduce(seen);
270
+ // WINDOW: the TUI shows the bottom — older items are dead render cost
271
+ const windowed = items.length > DRAW_ITEM_WINDOW ? items.slice(-DRAW_ITEM_WINDOW) : items;
272
+ const lines = renderTranscript(windowed, width, cwd, !settings.showThinking);
273
+ const capped = lines.length > DRAW_LINE_CAP ? lines.slice(-DRAW_LINE_CAP) : lines;
274
+ if (shell) {
275
+ shell.setTranscript(capped);
276
+ }
277
+ else {
278
+ for (const line of capped.slice(Math.max(0, drawn - (lines.length - capped.length))))
279
+ console.log(line);
280
+ }
281
+ drawn = lines.length;
282
+ });
169
283
  }
170
284
  /** Assistant text accumulated from deltas while a turn is in flight. */
171
285
  let streaming = "";
@@ -259,69 +373,74 @@ function paintWidgets() {
259
373
  }
260
374
  shell.setWidgets(lines);
261
375
  }
262
- client.on("envelope", (env) => {
263
- const kind = env.rpc ? "rpc" : env.evt ? "evt" : "ub";
264
- const inner = (env.rpc ?? env.evt ?? env.ub);
265
- trace("in", `${kind} ${inner?.type ?? "?"}`);
266
- if (env.ub && inner?.type === "session_sync_end")
267
- closeSyncWindow();
268
- // Panels are ephemeral view state, not transcript.
269
- if (panels.apply(env)) {
270
- paintWidgets();
271
- return;
272
- }
273
- const rpc = env.rpc;
274
- if (rpc?.type === "extension_ui_request")
275
- handleUiRequest(rpc);
276
- if (rpc)
277
- applyStreaming(rpc);
278
- seen.push(env);
279
- if (!rpc || TRANSCRIPT_FRAMES.has(String(rpc.type)))
280
- draw();
281
- // Busy state comes from the turn lifecycle; the running tool's name makes the
282
- // indicator say what it is waiting on rather than just that it is waiting.
283
- if (rpc?.type === "turn_start" || rpc?.type === "agent_start") {
284
- shell?.setStatus({ working: true, activity: "thinking" });
285
- }
286
- else if (rpc?.type === "tool_execution_start") {
287
- shell?.setStatus({
288
- working: true,
289
- activity: String(rpc.toolName ?? "tool"),
290
- });
291
- }
292
- else if (rpc?.type === "tool_execution_end") {
293
- shell?.setStatus({ working: true, activity: "thinking" });
294
- }
295
- else if (rpc?.type === "turn_end" ||
296
- rpc?.type === "agent_end" ||
297
- rpc?.type === "agent_settled") {
298
- shell?.setStatus({ working: false, activity: undefined });
299
- }
300
- });
301
- client.on("relayControl", (frame) => {
302
- trace("relay", String(frame.type ?? Object.keys(frame).join(",")));
303
- });
304
- client.on("control", (frame) => {
305
- trace("in", `control ${String(frame.type)}`);
306
- // session_sync replays pending asks on the STOCK path (`sender.send`), not
307
- // the envelope, so they arrive here rather than as {rpc} frames.
308
- if (frame.type === "extension_ui_request") {
309
- handleUiRequest(frame);
310
- return;
311
- }
312
- if (frame.type === "pair_error") {
313
- console.error(`[pair failed] ${String(frame.message ?? frame.code ?? "")}`);
314
- process.exit(1);
315
- }
316
- if (frame.type === "error" && frame.code === "unknown_peer") {
317
- console.error("[not paired] run `/unbien pair` and pass the new invite.");
318
- process.exit(1);
319
- }
320
- });
321
- client.on("close", () => {
322
- console.error("[relay] connection closed");
323
- process.exit(1);
324
- });
376
+ /** Wire the SessionClient event surface — called on whichever client the
377
+ * multi-relay picker promoted (single-relay: the original, called once). */
378
+ function wireClient(c) {
379
+ c.on("envelope", (env) => {
380
+ const kind = env.rpc ? "rpc" : env.evt ? "evt" : "ub";
381
+ const inner = (env.rpc ?? env.evt ?? env.ub);
382
+ trace("in", `${kind} ${inner?.type ?? "?"}`);
383
+ if (env.ub && inner?.type === "session_sync_end")
384
+ closeSyncWindow();
385
+ // Panels are ephemeral view state, not transcript.
386
+ if (panels.apply(env)) {
387
+ paintWidgets();
388
+ return;
389
+ }
390
+ const rpc = env.rpc;
391
+ if (rpc?.type === "extension_ui_request")
392
+ handleUiRequest(rpc);
393
+ if (rpc)
394
+ applyStreaming(rpc);
395
+ seen.push(env);
396
+ if (!rpc || TRANSCRIPT_FRAMES.has(String(rpc.type)))
397
+ draw();
398
+ // Busy state comes from the turn lifecycle; the running tool's name makes the
399
+ // indicator say what it is waiting on rather than just that it is waiting.
400
+ if (rpc?.type === "turn_start" || rpc?.type === "agent_start") {
401
+ shell?.setStatus({ working: true, activity: "thinking" });
402
+ }
403
+ else if (rpc?.type === "tool_execution_start") {
404
+ shell?.setStatus({
405
+ working: true,
406
+ activity: String(rpc.toolName ?? "tool"),
407
+ });
408
+ }
409
+ else if (rpc?.type === "tool_execution_end") {
410
+ shell?.setStatus({ working: true, activity: "thinking" });
411
+ }
412
+ else if (rpc?.type === "turn_end" ||
413
+ rpc?.type === "agent_end" ||
414
+ rpc?.type === "agent_settled") {
415
+ shell?.setStatus({ working: false, activity: undefined });
416
+ }
417
+ });
418
+ client.on("relayControl", (frame) => {
419
+ trace("relay", String(frame.type ?? Object.keys(frame).join(",")));
420
+ });
421
+ client.on("control", (frame) => {
422
+ trace("in", `control ${String(frame.type)}`);
423
+ // session_sync replays pending asks on the STOCK path (`sender.send`), not
424
+ // the envelope, so they arrive here rather than as {rpc} frames.
425
+ if (frame.type === "extension_ui_request") {
426
+ handleUiRequest(frame);
427
+ return;
428
+ }
429
+ if (frame.type === "pair_error") {
430
+ console.error(`[pair failed] ${String(frame.message ?? frame.code ?? "")}`);
431
+ Shell.exitAfterDrain(1);
432
+ }
433
+ if (frame.type === "error" && frame.code === "unknown_peer") {
434
+ console.error("[not paired] run `/unbien pair` and pass the new invite.");
435
+ Shell.exitAfterDrain(1);
436
+ }
437
+ });
438
+ c.on("close", () => {
439
+ console.error("[relay] connection closed");
440
+ Shell.exitAfterDrain(1);
441
+ });
442
+ }
443
+ wireClient(client);
325
444
  function describeSession(room, index) {
326
445
  const label = room.name ?? room.sessionId?.slice(0, 8) ?? room.room_id;
327
446
  const child = room.parent ? " (subagent)" : "";
@@ -368,28 +487,52 @@ if (invite.token) {
368
487
  });
369
488
  console.error("[paired] machine remembered — future runs need no token");
370
489
  }
371
- const rooms = await client.listRooms();
372
- if (rooms.length === 0) {
490
+ // MULTI-RELAY SESSION LISTING: fan out to every relay with paired peers,
491
+ // aggregate rooms with provenance. Falls back to the single-relay path when
492
+ // only one relay is in play (identical to the pre-multi-relay behavior).
493
+ const relayGroups = peersByRelay(loadPeers());
494
+ const multiRelay = !target?.startsWith("unbien://") && relayGroups.size > 1;
495
+ let choices;
496
+ let clientsByRelay = null;
497
+ if (multiRelay) {
498
+ const result = await listAllSessions(loadOrCreateIdentity());
499
+ choices = result.choices;
500
+ clientsByRelay = result.clients;
501
+ // Close the non-chosen relay clients after picking (below).
502
+ }
503
+ else {
504
+ // NOTE: client.connect() was ALREADY called above (line ~497) — the
505
+ // single-relay path reuses that connection. Calling it again would
506
+ // register duplicate message handlers (every envelope processed twice:
507
+ // the duplicate-transcript + relay-wedge bug).
508
+ const rooms = await client.listRooms();
509
+ const label = relayLabelFor(relayUrl);
510
+ choices = rooms.map((room) => ({ ...room, relayUrl, relayLabel: label }));
511
+ }
512
+ if (choices.length === 0) {
373
513
  console.error("[sessions] none open — is a pi running on that machine?");
374
514
  process.exit(1);
375
515
  }
376
516
  if (flags.has("list")) {
377
- console.error("Sessions on this machine:\n");
378
- rooms.forEach((room, i) => console.error(describeSession(room, i)));
517
+ console.error("Sessions:\n");
518
+ choices.forEach((room, i) => {
519
+ const relay = multiRelay ? ` [${room.relayLabel}]` : "";
520
+ console.error(` ${describeSession(room, i)}${relay}`);
521
+ });
379
522
  process.exit(0);
380
523
  }
381
524
  const wantedId = flags.get("session");
382
525
  const wantedName = flags.get("session-name");
383
526
  let chosen;
384
527
  if (wantedId) {
385
- chosen = rooms.find((r) => matchesSessionId(r, wantedId)) ?? null;
528
+ chosen = choices.find((r) => matchesSessionId(r, wantedId)) ?? null;
386
529
  if (!chosen)
387
530
  console.error(`[sessions] no session with id "${wantedId}"`);
388
531
  }
389
532
  else if (wantedName) {
390
533
  // Names are user-set and NOT unique, so an ambiguous one must not silently
391
534
  // pick a session — that would attach to an arbitrary agent.
392
- const named = rooms.filter((r) => r.name === wantedName);
535
+ const named = choices.filter((r) => r.name === wantedName && (!multiRelay || r.relayUrl === relayUrl));
393
536
  if (named.length > 1) {
394
537
  console.error(`[sessions] "${wantedName}" is ambiguous — use --session:`);
395
538
  named.forEach((room, i) => console.error(describeSession(room, i)));
@@ -400,10 +543,38 @@ else if (wantedName) {
400
543
  console.error(`[sessions] no session named "${wantedName}"`);
401
544
  }
402
545
  else {
403
- chosen = await pickRoom(rooms);
546
+ chosen = await pickRoom(choices);
404
547
  }
405
548
  if (!chosen)
406
549
  process.exit(1);
550
+ // MULTI-RELAY: promote the chosen relay's client, close the others.
551
+ if (multiRelay && clientsByRelay) {
552
+ const promoted = chosen.relayUrl
553
+ ? clientsByRelay.get(chosen.relayUrl)
554
+ : undefined;
555
+ for (const [url, c] of clientsByRelay) {
556
+ if (url !== chosen.relayUrl) {
557
+ try {
558
+ c.close();
559
+ }
560
+ catch {
561
+ /* already down */
562
+ }
563
+ }
564
+ }
565
+ if (promoted) {
566
+ // Adopt the promoted client wholesale: event listeners re-wired below
567
+ // (the original client's listeners stay on the abandoned instance).
568
+ try {
569
+ client.close();
570
+ }
571
+ catch {
572
+ /* not connected */
573
+ }
574
+ client = promoted;
575
+ wireClient(client);
576
+ }
577
+ }
407
578
  client.room = chosen.room_id;
408
579
  cwd = chosen.cwd ?? cwd;
409
580
  console.error(`[attached] ${chosen.name ?? chosen.room_id} — ${chosen.cwd ?? "?"}\n` +
@@ -537,7 +708,7 @@ function commandContext() {
537
708
  },
538
709
  settingsPath: settingsPath(),
539
710
  print: emit,
540
- quit: () => (shell ? shell.quit() : process.exit(0)),
711
+ quit: () => (shell ? shell.quit() : Shell.exitAfterDrain(0)),
541
712
  choose: (title, items) => shell ? shell.choose(title, items) : (items[0] ?? null),
542
713
  chooseAction: (title, items, hint, keys) => shell
543
714
  ? shell.chooseAction(title, items, hint, keys)
@@ -574,6 +745,32 @@ async function submit(text) {
574
745
  }
575
746
  return;
576
747
  }
748
+ // /connect (or /sessions): switch to a different session on this machine
749
+ // without quitting. Lists rooms, picks one, clears local state, re-syncs.
750
+ if (text === "/connect" || text === "/sessions") {
751
+ const rooms = await client.listRooms();
752
+ // Exclude the current room from the picker (it's where we already are)
753
+ const others = rooms.filter((r) => r.room_id !== client.room);
754
+ if (others.length === 0) {
755
+ emit([" no other sessions open on this machine"]);
756
+ return;
757
+ }
758
+ const chosen = await pickRoom(others);
759
+ if (!chosen)
760
+ return;
761
+ client.room = chosen.room_id;
762
+ // Reset the local transcript state — the new session's sync rebuilds it
763
+ seen.length = 0;
764
+ walkedEntries = [];
765
+ drawn = 0;
766
+ syncWindow = new Set();
767
+ client.requestSync();
768
+ emit([
769
+ ` switched to ${chosen.name ?? chosen.room_id.slice(0, 8)} — ${chosen.cwd ?? "?"}`,
770
+ " transcript rebuilding from sync…",
771
+ ]);
772
+ return;
773
+ }
577
774
  if (text.startsWith("/steer "))
578
775
  client.steer(text.slice(7));
579
776
  else if (text.startsWith("/"))
@@ -609,7 +806,7 @@ if (process.stdin.isTTY) {
609
806
  catch {
610
807
  /* already down */
611
808
  }
612
- process.exit(0);
809
+ Shell.exitAfterDrain(0);
613
810
  });
614
811
  shell.start();
615
812
  // The footer's model comes from pi's own state, not from room_meta.
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
@@ -3,18 +3,27 @@
3
3
  const COMMANDS = new Map([
4
4
  ["connect", () => import("./connect.js")],
5
5
  ["replay", () => import("./replay.js")],
6
+ ["pair", () => import("./pair.js")],
7
+ ["relay", () => import("./relay.js")],
6
8
  ]);
7
9
  const [command] = process.argv.slice(2);
8
- const load = command ? COMMANDS.get(command) : undefined;
10
+ // DEFAULT to `connect` when no subcommand given: the overwhelmingly common
11
+ // case is attaching to the machine (or resuming a remembered one); the usage
12
+ // banner still shows the full surface for discovery.
13
+ const verb = command ?? (COMMANDS.has("connect") ? "connect" : undefined);
14
+ const load = verb ? COMMANDS.get(verb) : undefined;
9
15
  if (!load) {
10
- console.error("usage: unbien <command> [options]\n\n" +
11
- " connect attach to a live pi session over the relay\n" +
12
- " replay render a captured envelope stream from a file\n\n" +
16
+ console.error(`usage: unbien [command] [options]\n\n` +
17
+ " connect attach to a live pi session over the relay (default)\n" +
18
+ " replay render a captured envelope stream from a file\n" +
19
+ " pair pair with a machine (paste its unbien:// invite)\n" +
20
+ " relay manage remembered relays (add / remove / list)\n\n" +
13
21
  "run `unbien <command>` with no arguments for its options.");
14
22
  process.exit(command ? 1 : 0);
15
23
  }
16
24
  // The subcommands parse `process.argv.slice(2)` themselves, so drop the verb.
17
- process.argv.splice(2, 1);
25
+ if (verb)
26
+ process.argv.splice(2, 1);
18
27
  await load();
19
28
  export {};
20
29
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,6CAA6C;AAE7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;CACxC,CAAC,CAAA;AAEF,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAExD,IAAI,CAAC,IAAI,EAAE,CAAC;IACV,OAAO,CAAC,KAAK,CACX,uCAAuC;QACrC,0DAA0D;QAC1D,+DAA+D;QAC/D,2DAA2D,CAC9D,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,CAAC;AAED,8EAA8E;AAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACzB,MAAM,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,6CAA6C;AAE7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;CACtC,CAAC,CAAA;AAEF,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACvC,2EAA2E;AAC3E,6EAA6E;AAC7E,qDAAqD;AACrD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACzE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAElD,IAAI,CAAC,IAAI,EAAE,CAAC;IACV,OAAO,CAAC,KAAK,CACX,uCAAuC;QACrC,oEAAoE;QACpE,6DAA6D;QAC7D,gEAAgE;QAChE,gEAAgE;QAChE,2DAA2D,CAC9D,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,CAAC;AAED,8EAA8E;AAC9E,IAAI,IAAI;IAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACnC,MAAM,IAAI,EAAE,CAAA"}
package/dist/pair.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/pair.js ADDED
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env node
2
+ /** `unbien pair <invite-uri>` — pair this CLI device with a machine's token.
3
+ *
4
+ * A thin standalone command: connect.ts's inline pairing (inside the full
5
+ * session-attach flow) needs the relay connect + room plumbing; this is JUST
6
+ * the pair-and-remember step, so re-pairing after a revoke (or pairing a
7
+ * second machine) doesn't require a full connect round-trip.
8
+ *
9
+ * Usage:
10
+ * unbien pair <unbien://pair?t=…&epk=…&rm=…>
11
+ * unbien pair --name my-laptop <unbien://pair?t=…&epk=…&rm=…>
12
+ */
13
+ import { SessionClient } from "./client.js";
14
+ import { loadOrCreateIdentity } from "./identity.js";
15
+ import { parseInvite } from "./invite.js";
16
+ import { rememberPeer, loadPeers, loadRelays } from "./store.js";
17
+ const args = process.argv.slice(2);
18
+ let name = "unbien-cli";
19
+ let relayFlag = "";
20
+ const positional = [];
21
+ for (let i = 0; i < args.length; i++) {
22
+ const arg = args[i];
23
+ if (arg === "--name" || arg === "-n") {
24
+ name = args[++i] ?? name;
25
+ }
26
+ else if (arg === "--relay" || arg === "-r") {
27
+ relayFlag = args[++i] ?? "";
28
+ }
29
+ else if (arg === "--help" || arg === "-h") {
30
+ console.log("usage: unbien pair [--name <device-name>] <unbien://pair?t=…&epk=…&rm=…>\n" +
31
+ "\n" +
32
+ " --name, -n device name shown in the machine's /unbien devices list\n" +
33
+ " (default: unbien-cli)\n");
34
+ process.exit(0);
35
+ }
36
+ else {
37
+ positional.push(arg);
38
+ }
39
+ }
40
+ const raw = positional[0];
41
+ if (!raw) {
42
+ // No invite given — show remembered machines for context
43
+ const peers = loadPeers();
44
+ if (peers.length > 0) {
45
+ console.error("Already paired with:\n" +
46
+ peers
47
+ .map((p) => ` ${p.name} (${p.epk.slice(0, 8)}…) → ${p.relayUrl}`)
48
+ .join("\n") +
49
+ "\n\nTo pair a new machine (or re-pair after a revoke), run /unbien pair\n" +
50
+ "on the machine and paste the resulting unbien:// URI here.");
51
+ }
52
+ else {
53
+ console.error("No paired machines yet. Run /unbien pair on the machine you want to\n" +
54
+ "connect to, then: unbien pair <unbien://pair?t=…&epk=…&rm=…>");
55
+ }
56
+ process.exit(1);
57
+ }
58
+ const invite = parseInvite(raw);
59
+ // Relay URL: the URI itself doesn't carry it (rm= is the room, not the relay)
60
+ // — same resolution as connect.ts: --relay flag, else UNBIEN_RELAY env.
61
+ let relayUrl = relayFlag || process.env["UNBIEN_RELAY"] || "";
62
+ if (!relayUrl) {
63
+ // FALL BACK to the relay registry: if exactly one relay is remembered,
64
+ // use it; if multiple, list them and ask for --relay.
65
+ const relays = loadRelays();
66
+ if (relays.length === 1) {
67
+ relayUrl = relays[0].url;
68
+ console.error(`[pair] using remembered relay: ${relays[0].name} (${relayUrl})`);
69
+ }
70
+ else if (relays.length > 1) {
71
+ console.error("Multiple relays remembered — pick one:\n" +
72
+ relays.map((r) => ` --relay ${r.url} (${r.name})`).join("\n"));
73
+ process.exit(1);
74
+ }
75
+ else {
76
+ console.error("No relay URL. Pass --relay <url>, set UNBIEN_RELAY, or add one:\n" +
77
+ " unbien relay add <url>");
78
+ process.exit(1);
79
+ }
80
+ }
81
+ const keypair = loadOrCreateIdentity();
82
+ const client = new SessionClient(relayUrl, keypair, invite);
83
+ try {
84
+ await client.connect();
85
+ client.pair(name);
86
+ rememberPeer({
87
+ epk: invite.epk,
88
+ relayUrl,
89
+ name,
90
+ pairedAt: new Date().toISOString(),
91
+ });
92
+ console.error(`[paired] ${name} → machine ${invite.epk.slice(0, 8)}… (relay ${relayUrl})\n` +
93
+ "Run `unbien` (or `unbien connect`) to attach to sessions.");
94
+ client.close();
95
+ }
96
+ catch (err) {
97
+ console.error(`[pair] failed: ${err instanceof Error ? err.message : String(err)}`);
98
+ process.exit(1);
99
+ }
100
+ //# sourceMappingURL=pair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pair.js","sourceRoot":"","sources":["../src/pair.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/relay.js ADDED
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ /** `unbien relay <subcommand>` — manage remembered relays.
3
+ *
4
+ * unbien relay add <url> [name] remember a relay
5
+ * unbien relay remove <url|name> forget a relay
6
+ * unbien relay list show remembered relays (default)
7
+ *
8
+ * The relay registry is advisory: peers carry their own relay URLs (set at
9
+ * pair time), and the ambient UNBIEN_RELAY env still works. The registry is
10
+ * what `unbien pair` offers when you haven't specified --relay, and what
11
+ * `unbien connect` falls back to when a peer has no stored URL.
12
+ */
13
+ import { loadRelays, rememberRelay, forgetRelay } from "./store.js";
14
+ const [verb, ...rest] = process.argv.slice(2);
15
+ function normalizeUrl(raw) {
16
+ let url = raw.trim();
17
+ if (!url.startsWith("ws://") && !url.startsWith("wss://") && !url.startsWith("http://") && !url.startsWith("https://")) {
18
+ url = `http://${url}`;
19
+ }
20
+ // Accept http(s) for input; the client converts to ws(s) on connect.
21
+ return url.replace(/\/+$/, "");
22
+ }
23
+ switch (verb) {
24
+ case "add": {
25
+ const url = rest[0];
26
+ if (!url) {
27
+ console.error("usage: unbien relay add <url> [name]");
28
+ process.exit(1);
29
+ }
30
+ const name = rest[1] ??
31
+ (() => {
32
+ try {
33
+ return new URL(normalizeUrl(url)).hostname;
34
+ }
35
+ catch {
36
+ return url;
37
+ }
38
+ })();
39
+ rememberRelay({
40
+ url: normalizeUrl(url),
41
+ name,
42
+ addedAt: new Date().toISOString(),
43
+ });
44
+ console.error(`[relay] remembered ${name} → ${normalizeUrl(url)}`);
45
+ break;
46
+ }
47
+ case "remove": {
48
+ const target = rest[0];
49
+ if (!target) {
50
+ console.error("usage: unbien relay remove <url|name>");
51
+ process.exit(1);
52
+ }
53
+ if (forgetRelay(target)) {
54
+ console.error(`[relay] removed ${target}`);
55
+ }
56
+ else {
57
+ console.error(`[relay] no match for ${target}`);
58
+ process.exit(1);
59
+ }
60
+ break;
61
+ }
62
+ case "list":
63
+ default: {
64
+ const relays = loadRelays();
65
+ if (relays.length === 0) {
66
+ console.error("No remembered relays. Add one:\n" +
67
+ " unbien relay add <url> [name]\n" +
68
+ "\n" +
69
+ "Peers already carry their own relay URLs (set at pair time); the\n" +
70
+ "registry is the fallback for `unbien pair` without --relay.");
71
+ }
72
+ else {
73
+ console.error("Relays:\n" +
74
+ relays.map((r) => ` ${r.name} → ${r.url}`).join("\n"));
75
+ }
76
+ break;
77
+ }
78
+ }
79
+ //# sourceMappingURL=relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -11,3 +11,11 @@ export interface PairedPeer {
11
11
  }
12
12
  export declare function loadPeers(path?: string): PairedPeer[];
13
13
  export declare function rememberPeer(peer: PairedPeer, path?: string): void;
14
+ export interface RememberedRelay {
15
+ url: string;
16
+ name: string;
17
+ addedAt: string;
18
+ }
19
+ export declare function loadRelays(path?: string): RememberedRelay[];
20
+ export declare function rememberRelay(relay: RememberedRelay, path?: string): void;
21
+ export declare function forgetRelay(urlOrName: string, path?: string): boolean;
package/dist/store.js CHANGED
@@ -17,4 +17,28 @@ export function rememberPeer(peer, path = STORE_PATH) {
17
17
  mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
18
18
  writeFileSync(path, JSON.stringify({ peers }, null, 2), { mode: 0o600 });
19
19
  }
20
+ const RELAYS_PATH = join(homedir(), ".local", "state", "un-bien", "proxy-relays.json");
21
+ export function loadRelays(path = RELAYS_PATH) {
22
+ try {
23
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
24
+ return parsed.relays ?? [];
25
+ }
26
+ catch {
27
+ return [];
28
+ }
29
+ }
30
+ export function rememberRelay(relay, path = RELAYS_PATH) {
31
+ const relays = loadRelays(path).filter((r) => r.url !== relay.url);
32
+ relays.push(relay);
33
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
34
+ writeFileSync(path, JSON.stringify({ relays }, null, 2), { mode: 0o600 });
35
+ }
36
+ export function forgetRelay(urlOrName, path = RELAYS_PATH) {
37
+ const relays = loadRelays(path);
38
+ const filtered = relays.filter((r) => r.url !== urlOrName && r.name !== urlOrName);
39
+ if (filtered.length === relays.length)
40
+ return false;
41
+ writeFileSync(path, JSON.stringify({ relays: filtered }, null, 2), { mode: 0o600 });
42
+ return true;
43
+ }
20
44
  //# sourceMappingURL=store.js.map
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAczC,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,EAAE,EACT,QAAQ,EACR,OAAO,EACP,SAAS,EACT,kBAAkB,CACnB,CAAA;AAED,MAAM,UAAU,SAAS,CAAC,IAAI,GAAG,UAAU;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAEnD,CAAA;QACD,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,IAAI,GAAG,UAAU;IAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1D,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAC1E,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/tui.d.ts CHANGED
@@ -42,6 +42,15 @@ export declare class Shell {
42
42
  * in teardown can't leave the process stranded.
43
43
  */
44
44
  quit(): void;
45
+ /** EXIT AFTER STDOUT DRAINS (the Ctrl-C wedge fix): process.exit() is
46
+ * immediate and can fire before the terminal-restoration escape sequences
47
+ * (Kitty pop, raw-mode restore, cursor reposition — all synchronous
48
+ * process.stdout.write() calls inside tui.stop()) have actually reached the
49
+ * terminal. The terminal is left in whatever mid-teardown state the last
50
+ * flushed byte happened to be in: raw mode on, no echo, Kitty protocol
51
+ * active. This waits for the write buffer to drain (or a short watchdog)
52
+ * before terminating. */
53
+ static exitAfterDrain(code: number): void;
45
54
  /**
46
55
  * The in-flight turn is REWRITTEN on every delta, so it can't be appended to
47
56
  * the transcript. It renders in its own region and is cleared the moment the
@@ -50,6 +59,10 @@ export declare class Shell {
50
59
  setLive(lines: readonly string[]): void;
51
60
  stop(): void;
52
61
  setStatus(patch: Partial<ShellStatus>): void;
62
+ /** BACKFILL phase: muted-color spinner while replaying history. Distinct
63
+ * from the agent-working state (accent color) so the user can tell
64
+ * "loading your transcript" from "the agent is thinking." */
65
+ setLoading(on: boolean): void;
53
66
  /**
54
67
  * Transcript must live INSIDE the TUI: a full repaint emits `\x1b[3J`, which
55
68
  * clears the scrollback buffer, so anything written straight to stdout is
package/dist/tui.js CHANGED
@@ -74,6 +74,13 @@ export class Shell {
74
74
  this.footer = new Text(this.renderFooter());
75
75
  const theme = activeTheme();
76
76
  this.working = new Loader(this.tui, (s) => theme.fg("accent", s), (s) => theme.fg("muted", s), "");
77
+ // LOADER VISIBILITY FIX: the constructor's setIndicator() call invokes
78
+ // start() → updateDisplay() which renders the spinner frame (⠋) even with
79
+ // an empty message — the spinner is visible from construction. Clear the
80
+ // text directly to hide it; setStatus brings it back on the first
81
+ // working=true.
82
+ this.working.setText("");
83
+ this.working.stop();
77
84
  this.tui.addChild(this.transcript);
78
85
  this.tui.addChild(this.notes);
79
86
  this.tui.addChild(this.live);
@@ -124,10 +131,28 @@ export class Shell {
124
131
  catch {
125
132
  /* fall through to the watchdog rather than stranding the process */
126
133
  }
127
- const watchdog = setTimeout(() => process.exit(130), 250);
134
+ const watchdog = setTimeout(() => Shell.exitAfterDrain(130), 250);
128
135
  watchdog.unref();
129
136
  this.onQuit();
130
137
  }
138
+ /** EXIT AFTER STDOUT DRAINS (the Ctrl-C wedge fix): process.exit() is
139
+ * immediate and can fire before the terminal-restoration escape sequences
140
+ * (Kitty pop, raw-mode restore, cursor reposition — all synchronous
141
+ * process.stdout.write() calls inside tui.stop()) have actually reached the
142
+ * terminal. The terminal is left in whatever mid-teardown state the last
143
+ * flushed byte happened to be in: raw mode on, no echo, Kitty protocol
144
+ * active. This waits for the write buffer to drain (or a short watchdog)
145
+ * before terminating. */
146
+ static exitAfterDrain(code) {
147
+ if (process.stdout.writableLength === 0) {
148
+ process.exit(code);
149
+ }
150
+ process.stdout.once("drain", () => process.exit(code));
151
+ // Watchdog: a pipe or a loaded system can stall the drain — 100ms is
152
+ // more than enough for a few hundred bytes of escape sequences.
153
+ const bail = setTimeout(() => process.exit(code), 100);
154
+ bail.unref();
155
+ }
131
156
  /**
132
157
  * The in-flight turn is REWRITTEN on every delta, so it can't be appended to
133
158
  * the transcript. It renders in its own region and is cleared the moment the
@@ -144,21 +169,50 @@ export class Shell {
144
169
  setStatus(patch) {
145
170
  this.status = { ...this.status, ...patch };
146
171
  // The spinner animates only while the agent is working; leaving it running
147
- // costs a repaint every frame for no information.
172
+ // costs a repaint every frame for no information. LOADER VISIBILITY FIX:
173
+ // stop() alone only stops the interval — the LAST RENDERED FRAME (⠋ etc.)
174
+ // stays on screen. Clear the text directly to hide it.
148
175
  const working = this.status.working === true;
149
176
  if (working !== this.isWorking) {
150
177
  this.isWorking = working;
151
178
  if (working) {
152
179
  this.working.start();
180
+ this.working.setMessage(this.status.activity ?? "working");
153
181
  }
154
182
  else {
155
183
  this.working.stop();
184
+ this.working.setText("");
156
185
  }
157
186
  }
158
- this.working.setMessage(working ? (this.status.activity ?? "working") : "");
187
+ else if (working) {
188
+ // Same busy state, different activity label — just update the message
189
+ this.working.setMessage(this.status.activity ?? "working");
190
+ }
159
191
  this.footer.setText(this.renderFooter());
160
192
  this.tui.requestRender();
161
193
  }
194
+ /** BACKFILL phase: muted-color spinner while replaying history. Distinct
195
+ * from the agent-working state (accent color) so the user can tell
196
+ * "loading your transcript" from "the agent is thinking." */
197
+ setLoading(on) {
198
+ if (on) {
199
+ this.working.setIndicator({
200
+ frames: ["◇", "◈", "◆", "◈"], // geometric, distinct from the agent's braille
201
+ intervalMs: 400, // slower — it's a bulk load, not thinking
202
+ });
203
+ this.working.start();
204
+ this.working.setMessage("replaying history");
205
+ this.isWorking = true;
206
+ }
207
+ else {
208
+ // Restore the agent spinner (default braille frames at the normal rate)
209
+ this.working.setIndicator(undefined);
210
+ this.working.stop();
211
+ this.working.setText("");
212
+ this.isWorking = false;
213
+ }
214
+ this.tui.requestRender();
215
+ }
162
216
  /**
163
217
  * Transcript must live INSIDE the TUI: a full repaint emits `\x1b[3J`, which
164
218
  * clears the scrollback buffer, so anything written straight to stdout is
package/dist/tui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geohar/unbien-cli",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "unbien — a terminal client for remote Pi coding-agent sessions. Attach over an un-bien relay and render the transcript with pi's own TUI components: markdown, syntax highlighting, native tool cards, and your pi theme.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,7 +41,7 @@
41
41
  "dependencies": {
42
42
  "@earendil-works/pi-coding-agent": ">=0.84.3",
43
43
  "@earendil-works/pi-tui": "^0.84.4",
44
- "@geohar/un-bien": "0.18.2"
44
+ "@geohar/un-bien": "0.19.0"
45
45
  },
46
46
  "files": [
47
47
  "dist",