@geohar/unbien-cli 0.1.1 → 0.2.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/ask.d.ts +94 -0
- package/dist/ask.js +71 -0
- package/dist/ask.js.map +1 -0
- package/dist/connect.js +345 -66
- package/dist/connect.js.map +1 -1
- package/dist/main.js +14 -5
- package/dist/main.js.map +1 -1
- package/dist/pair.d.ts +2 -0
- package/dist/pair.js +100 -0
- package/dist/pair.js.map +1 -0
- package/dist/reduce.js +10 -1
- package/dist/reduce.js.map +1 -1
- package/dist/relay.d.ts +2 -0
- package/dist/relay.js +79 -0
- package/dist/relay.js.map +1 -0
- package/dist/store.d.ts +8 -0
- package/dist/store.js +24 -0
- package/dist/store.js.map +1 -1
- package/dist/tui.d.ts +9 -0
- package/dist/tui.js +19 -1
- package/dist/tui.js.map +1 -1
- package/package.json +2 -2
package/dist/ask.d.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-ask flows and the `extension_ui_request` surface.
|
|
3
|
+
*
|
|
4
|
+
* A flow arrives as ONE request whose `id` IS the flowId, carrying an `ask`
|
|
5
|
+
* envelope with the full question set. The reply echoes that id plus an `ask`
|
|
6
|
+
* enrichment so multi-select, custom text and notes survive the round trip.
|
|
7
|
+
*/
|
|
8
|
+
export type AskQuestionType = "single" | "multi" | "preview";
|
|
9
|
+
export interface AskOption {
|
|
10
|
+
value: string;
|
|
11
|
+
label: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
preview?: string;
|
|
14
|
+
/**
|
|
15
|
+
* pi-ask's "the user should type an answer" marker. It appears as exactly
|
|
16
|
+
* ONE option, never mixed with real choices, and wants `customText` with no
|
|
17
|
+
* `values` — submitting the literal option value would answer with the token
|
|
18
|
+
* "freeform" instead of what was typed.
|
|
19
|
+
*/
|
|
20
|
+
freeform?: boolean;
|
|
21
|
+
/** Presentation metadata only; it never changes the submitted value. */
|
|
22
|
+
recommended?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface AskQuestion {
|
|
25
|
+
id: string;
|
|
26
|
+
label?: string;
|
|
27
|
+
prompt: string;
|
|
28
|
+
type: AskQuestionType;
|
|
29
|
+
required?: boolean;
|
|
30
|
+
/** The type actually presented, after any host-side policy/toggle. */
|
|
31
|
+
presentedType?: AskQuestionType;
|
|
32
|
+
options: AskOption[];
|
|
33
|
+
}
|
|
34
|
+
export interface AskEnrichment {
|
|
35
|
+
flow_id: string;
|
|
36
|
+
tool_call_id?: string | null;
|
|
37
|
+
source?: string;
|
|
38
|
+
title?: string;
|
|
39
|
+
questions: AskQuestion[];
|
|
40
|
+
}
|
|
41
|
+
/** A live `extension_ui_request` awaiting an answer. */
|
|
42
|
+
export interface AskPrompt {
|
|
43
|
+
id: string;
|
|
44
|
+
method: string;
|
|
45
|
+
title?: string;
|
|
46
|
+
placeholder?: string;
|
|
47
|
+
options?: string[];
|
|
48
|
+
ask?: AskEnrichment;
|
|
49
|
+
}
|
|
50
|
+
export interface AskAnswer {
|
|
51
|
+
values?: string[];
|
|
52
|
+
customText?: string;
|
|
53
|
+
note?: string;
|
|
54
|
+
optionNotes?: Record<string, string>;
|
|
55
|
+
}
|
|
56
|
+
export declare const effectiveType: (q: AskQuestion) => AskQuestionType;
|
|
57
|
+
/**
|
|
58
|
+
* How a `notify` relates to the open prompts.
|
|
59
|
+
*
|
|
60
|
+
* A notify is NOT prompt content. The bridge emits one with `id === flowId`
|
|
61
|
+
* when a flow resolves, so treating every notify as a transcript row both
|
|
62
|
+
* spams the log and (if stored as a prompt) re-presents a resolved ask.
|
|
63
|
+
* Design 01M1CF5FYMWHAGVZX3RDM50E34.
|
|
64
|
+
*/
|
|
65
|
+
export type NotifyRouting = {
|
|
66
|
+
kind: "dismiss";
|
|
67
|
+
id: string;
|
|
68
|
+
} | {
|
|
69
|
+
kind: "notice";
|
|
70
|
+
level: string;
|
|
71
|
+
text: string;
|
|
72
|
+
} | {
|
|
73
|
+
kind: "drop";
|
|
74
|
+
};
|
|
75
|
+
export declare function routeNotify(frame: {
|
|
76
|
+
id?: unknown;
|
|
77
|
+
notifyType?: unknown;
|
|
78
|
+
message?: unknown;
|
|
79
|
+
}, isOpen: (id: string) => boolean): NotifyRouting;
|
|
80
|
+
/**
|
|
81
|
+
* Which shown flows are stale after a reconciliation window closes.
|
|
82
|
+
*
|
|
83
|
+
* The host replays only flows still awaiting an answer (`pendingRequests()`
|
|
84
|
+
* maps `activeFlows`, which the `completed` event deletes), so a replayed ask
|
|
85
|
+
* is provably unanswered and one we show that was NOT replayed has provably
|
|
86
|
+
* resolved. `replayed === null` means no window was in flight: fail open and
|
|
87
|
+
* retire nothing, so a dropped terminator can't clear a live prompt.
|
|
88
|
+
*/
|
|
89
|
+
export declare function staleFlows(shown: Iterable<string>, replayed: ReadonlySet<string> | null): string[];
|
|
90
|
+
/** The reply for a completed flow. `value` keeps degraded clients working. */
|
|
91
|
+
export declare function answerResponse(prompt: AskPrompt, answers: Record<string, AskAnswer>): Record<string, unknown>;
|
|
92
|
+
export declare function cancelResponse(prompt: AskPrompt): Record<string, unknown>;
|
|
93
|
+
/** Confirm/select/input without a pi-ask envelope — pi's own dialog surface. */
|
|
94
|
+
export declare function plainResponse(prompt: AskPrompt, picked: string | boolean): Record<string, unknown>;
|
package/dist/ask.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-ask flows and the `extension_ui_request` surface.
|
|
3
|
+
*
|
|
4
|
+
* A flow arrives as ONE request whose `id` IS the flowId, carrying an `ask`
|
|
5
|
+
* envelope with the full question set. The reply echoes that id plus an `ask`
|
|
6
|
+
* enrichment so multi-select, custom text and notes survive the round trip.
|
|
7
|
+
*/
|
|
8
|
+
export const effectiveType = (q) => q.presentedType ?? q.type;
|
|
9
|
+
export function routeNotify(frame, isOpen) {
|
|
10
|
+
const id = typeof frame.id === "string" ? frame.id : undefined;
|
|
11
|
+
const level = String(frame.notifyType ?? "info");
|
|
12
|
+
const text = String(frame.message ?? "");
|
|
13
|
+
// A warning is actionable (answer rejected, flow expired): show it inline and
|
|
14
|
+
// leave any open ask standing as the retry surface.
|
|
15
|
+
if (level === "warning" || level === "error") {
|
|
16
|
+
return { kind: "notice", level, text };
|
|
17
|
+
}
|
|
18
|
+
// Resolution of an ask we are showing: retract it, render nothing.
|
|
19
|
+
if (id && isOpen(id))
|
|
20
|
+
return { kind: "dismiss", id };
|
|
21
|
+
// A resolution ack for a flow we never showed (someone else answered).
|
|
22
|
+
if (id)
|
|
23
|
+
return { kind: "drop" };
|
|
24
|
+
return { kind: "notice", level, text };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Which shown flows are stale after a reconciliation window closes.
|
|
28
|
+
*
|
|
29
|
+
* The host replays only flows still awaiting an answer (`pendingRequests()`
|
|
30
|
+
* maps `activeFlows`, which the `completed` event deletes), so a replayed ask
|
|
31
|
+
* is provably unanswered and one we show that was NOT replayed has provably
|
|
32
|
+
* resolved. `replayed === null` means no window was in flight: fail open and
|
|
33
|
+
* retire nothing, so a dropped terminator can't clear a live prompt.
|
|
34
|
+
*/
|
|
35
|
+
export function staleFlows(shown, replayed) {
|
|
36
|
+
if (!replayed)
|
|
37
|
+
return [];
|
|
38
|
+
return [...shown].filter((id) => !replayed.has(id));
|
|
39
|
+
}
|
|
40
|
+
/** The reply for a completed flow. `value` keeps degraded clients working. */
|
|
41
|
+
export function answerResponse(prompt, answers) {
|
|
42
|
+
const flowId = prompt.ask?.flow_id ?? prompt.id;
|
|
43
|
+
const first = prompt.ask?.questions[0];
|
|
44
|
+
const firstAnswer = first ? answers[first.id] : undefined;
|
|
45
|
+
// `value` is the label-shaped scalar a strict client would have sent; the
|
|
46
|
+
// `ask` envelope carries the structured truth.
|
|
47
|
+
const value = firstAnswer?.customText ?? firstAnswer?.values?.join(", ") ?? "";
|
|
48
|
+
return {
|
|
49
|
+
type: "extension_ui_response",
|
|
50
|
+
id: prompt.id,
|
|
51
|
+
value,
|
|
52
|
+
ask: { flow_id: flowId, kind: "answer", mode: "submit", answers },
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function cancelResponse(prompt) {
|
|
56
|
+
const flowId = prompt.ask?.flow_id ?? prompt.id;
|
|
57
|
+
return {
|
|
58
|
+
type: "extension_ui_response",
|
|
59
|
+
id: prompt.id,
|
|
60
|
+
cancelled: true,
|
|
61
|
+
ask: { flow_id: flowId, kind: "cancel" },
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/** Confirm/select/input without a pi-ask envelope — pi's own dialog surface. */
|
|
65
|
+
export function plainResponse(prompt, picked) {
|
|
66
|
+
if (typeof picked === "boolean") {
|
|
67
|
+
return { type: "extension_ui_response", id: prompt.id, confirmed: picked };
|
|
68
|
+
}
|
|
69
|
+
return { type: "extension_ui_response", id: prompt.id, value: picked };
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=ask.js.map
|
package/dist/ask.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
|
package/dist/connect.js
CHANGED
|
@@ -10,6 +10,7 @@ import { SessionClient } from "./client.js";
|
|
|
10
10
|
import { applyTheme, availableThemes } from "./theme.js";
|
|
11
11
|
import { loadOrCreateIdentity } from "./identity.js";
|
|
12
12
|
import { parseInvite } from "./invite.js";
|
|
13
|
+
import { answerResponse, cancelResponse, effectiveType, plainResponse, routeNotify, staleFlows, } from "./ask.js";
|
|
13
14
|
import { findCommand, } from "./commands.js";
|
|
14
15
|
import { PanelStore } from "./panels.js";
|
|
15
16
|
import { pickSession } from "./picker.js";
|
|
@@ -18,7 +19,7 @@ import { Shell } from "./tui.js";
|
|
|
18
19
|
import { renderAgentsPanel, renderPlanPanel, summariseAgents, summarisePlan, } from "./panels.js";
|
|
19
20
|
import { renderStreaming, renderThinking, renderTranscript } from "./render.js";
|
|
20
21
|
import { loadSettings, saveSettings, settingsPath } from "./settings.js";
|
|
21
|
-
import { loadPeers, rememberPeer } from "./store.js";
|
|
22
|
+
import { loadPeers, rememberPeer, loadRelays } from "./store.js";
|
|
22
23
|
function parseArgs(argv) {
|
|
23
24
|
const positional = [];
|
|
24
25
|
const flags = new Map();
|
|
@@ -69,6 +70,73 @@ function resolveTarget() {
|
|
|
69
70
|
relayUrl: explicitRelay ?? peer.relayUrl,
|
|
70
71
|
};
|
|
71
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
|
+
}
|
|
72
140
|
const resolved = resolveTarget();
|
|
73
141
|
if (!resolved) {
|
|
74
142
|
console.error("usage:\n" +
|
|
@@ -93,10 +161,21 @@ if (!resolved) {
|
|
|
93
161
|
// this module is still initialising, and a `let` read in its temporal dead
|
|
94
162
|
// zone would throw instead of exiting.
|
|
95
163
|
let shell = null;
|
|
164
|
+
/** Flows we are showing, keyed by request id (which IS the pi-ask flowId). */
|
|
165
|
+
const openAsks = new Map();
|
|
166
|
+
/**
|
|
167
|
+
* Open sync window: the flow ids the host replayed since we asked. A push can
|
|
168
|
+
* be lost (a dismissal notify we never saw), so the PULL reconciles — anything
|
|
169
|
+
* we still show that the host did NOT replay has since resolved.
|
|
170
|
+
*
|
|
171
|
+
* Null means no window in flight, which deliberately FAILS OPEN: a dropped
|
|
172
|
+
* terminator must never retire a live prompt.
|
|
173
|
+
*/
|
|
174
|
+
let syncWindow = null;
|
|
96
175
|
let quitting = false;
|
|
97
176
|
function hardQuit(reason) {
|
|
98
177
|
if (quitting)
|
|
99
|
-
process.exit(130);
|
|
178
|
+
process.exit(130); // double-interrupt: immediate (already quitting)
|
|
100
179
|
quitting = true;
|
|
101
180
|
// Once the shell exists, pi owns the terminal — let its teardown run rather
|
|
102
181
|
// than restoring stdin by hand (which loses the original raw-mode state).
|
|
@@ -112,7 +191,7 @@ function hardQuit(reason) {
|
|
|
112
191
|
/* stdin already torn down */
|
|
113
192
|
}
|
|
114
193
|
process.stderr.write(`\n[exit] ${reason}\n`);
|
|
115
|
-
|
|
194
|
+
Shell.exitAfterDrain(130);
|
|
116
195
|
}
|
|
117
196
|
process.on("SIGINT", () => hardQuit("interrupted"));
|
|
118
197
|
process.on("SIGTERM", () => hardQuit("terminated"));
|
|
@@ -126,7 +205,9 @@ const appliedTheme = await applyTheme(flags.get("theme") ?? settings.theme);
|
|
|
126
205
|
if (appliedTheme.startsWith("dark ("))
|
|
127
206
|
console.error(`[theme] ${appliedTheme}`);
|
|
128
207
|
const { invite, relayUrl } = resolved;
|
|
129
|
-
|
|
208
|
+
let client = new SessionClient(relayUrl, loadOrCreateIdentity(), invite);
|
|
209
|
+
// Note: in the multi-relay path, the client's internals may be re-bound to
|
|
210
|
+
// the chosen relay's connection after the session picker (see below).
|
|
130
211
|
const width = process.stdout.columns ?? 100;
|
|
131
212
|
/** Frames seen so far; the transcript is re-reduced from the whole stream. */
|
|
132
213
|
const seen = [];
|
|
@@ -247,59 +328,74 @@ function paintWidgets() {
|
|
|
247
328
|
}
|
|
248
329
|
shell.setWidgets(lines);
|
|
249
330
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
331
|
+
/** Wire the SessionClient event surface — called on whichever client the
|
|
332
|
+
* multi-relay picker promoted (single-relay: the original, called once). */
|
|
333
|
+
function wireClient(c) {
|
|
334
|
+
c.on("envelope", (env) => {
|
|
335
|
+
const kind = env.rpc ? "rpc" : env.evt ? "evt" : "ub";
|
|
336
|
+
const inner = (env.rpc ?? env.evt ?? env.ub);
|
|
337
|
+
trace("in", `${kind} ${inner?.type ?? "?"}`);
|
|
338
|
+
if (env.ub && inner?.type === "session_sync_end")
|
|
339
|
+
closeSyncWindow();
|
|
340
|
+
// Panels are ephemeral view state, not transcript.
|
|
341
|
+
if (panels.apply(env)) {
|
|
342
|
+
paintWidgets();
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
const rpc = env.rpc;
|
|
346
|
+
if (rpc?.type === "extension_ui_request")
|
|
347
|
+
handleUiRequest(rpc);
|
|
348
|
+
if (rpc)
|
|
349
|
+
applyStreaming(rpc);
|
|
350
|
+
seen.push(env);
|
|
351
|
+
if (!rpc || TRANSCRIPT_FRAMES.has(String(rpc.type)))
|
|
352
|
+
draw();
|
|
353
|
+
// Busy state comes from the turn lifecycle; the running tool's name makes the
|
|
354
|
+
// indicator say what it is waiting on rather than just that it is waiting.
|
|
355
|
+
if (rpc?.type === "turn_start" || rpc?.type === "agent_start") {
|
|
356
|
+
shell?.setStatus({ working: true, activity: "thinking" });
|
|
357
|
+
}
|
|
358
|
+
else if (rpc?.type === "tool_execution_start") {
|
|
359
|
+
shell?.setStatus({
|
|
360
|
+
working: true,
|
|
361
|
+
activity: String(rpc.toolName ?? "tool"),
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
else if (rpc?.type === "tool_execution_end") {
|
|
365
|
+
shell?.setStatus({ working: true, activity: "thinking" });
|
|
366
|
+
}
|
|
367
|
+
else if (rpc?.type === "turn_end" ||
|
|
368
|
+
rpc?.type === "agent_end" ||
|
|
369
|
+
rpc?.type === "agent_settled") {
|
|
370
|
+
shell?.setStatus({ working: false, activity: undefined });
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
client.on("relayControl", (frame) => {
|
|
374
|
+
trace("relay", String(frame.type ?? Object.keys(frame).join(",")));
|
|
375
|
+
});
|
|
376
|
+
client.on("control", (frame) => {
|
|
377
|
+
trace("in", `control ${String(frame.type)}`);
|
|
378
|
+
// session_sync replays pending asks on the STOCK path (`sender.send`), not
|
|
379
|
+
// the envelope, so they arrive here rather than as {rpc} frames.
|
|
380
|
+
if (frame.type === "extension_ui_request") {
|
|
381
|
+
handleUiRequest(frame);
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
if (frame.type === "pair_error") {
|
|
385
|
+
console.error(`[pair failed] ${String(frame.message ?? frame.code ?? "")}`);
|
|
386
|
+
process.exit(1);
|
|
387
|
+
}
|
|
388
|
+
if (frame.type === "error" && frame.code === "unknown_peer") {
|
|
389
|
+
console.error("[not paired] run `/unbien pair` and pass the new invite.");
|
|
390
|
+
process.exit(1);
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
c.on("close", () => {
|
|
394
|
+
console.error("[relay] connection closed");
|
|
296
395
|
process.exit(1);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
client
|
|
300
|
-
console.error("[relay] connection closed");
|
|
301
|
-
process.exit(1);
|
|
302
|
-
});
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
wireClient(client);
|
|
303
399
|
function describeSession(room, index) {
|
|
304
400
|
const label = room.name ?? room.sessionId?.slice(0, 8) ?? room.room_id;
|
|
305
401
|
const child = room.parent ? " (subagent)" : "";
|
|
@@ -337,37 +433,58 @@ catch (err) {
|
|
|
337
433
|
// A token means this is a first pairing; a remembered machine skips straight
|
|
338
434
|
// to routing, since the extension auto-attaches any peer it already trusts.
|
|
339
435
|
if (invite.token) {
|
|
340
|
-
client.pair(flags.get("name") ?? "unbien-
|
|
436
|
+
client.pair(flags.get("name") ?? "unbien-cli");
|
|
341
437
|
rememberPeer({
|
|
342
438
|
epk: invite.epk,
|
|
343
439
|
relayUrl,
|
|
344
|
-
name: flags.get("name") ?? "unbien-
|
|
440
|
+
name: flags.get("name") ?? "unbien-cli",
|
|
345
441
|
pairedAt: new Date().toISOString(),
|
|
346
442
|
});
|
|
347
443
|
console.error("[paired] machine remembered — future runs need no token");
|
|
348
444
|
}
|
|
349
|
-
|
|
350
|
-
|
|
445
|
+
// MULTI-RELAY SESSION LISTING: fan out to every relay with paired peers,
|
|
446
|
+
// aggregate rooms with provenance. Falls back to the single-relay path when
|
|
447
|
+
// only one relay is in play (identical to the pre-multi-relay behavior).
|
|
448
|
+
const relayGroups = peersByRelay(loadPeers());
|
|
449
|
+
const multiRelay = !target?.startsWith("unbien://") && relayGroups.size > 1;
|
|
450
|
+
let choices;
|
|
451
|
+
let clientsByRelay = null;
|
|
452
|
+
if (multiRelay) {
|
|
453
|
+
const result = await listAllSessions(loadOrCreateIdentity());
|
|
454
|
+
choices = result.choices;
|
|
455
|
+
clientsByRelay = result.clients;
|
|
456
|
+
// Close the non-chosen relay clients after picking (below).
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
await client.connect();
|
|
460
|
+
const rooms = await client.listRooms();
|
|
461
|
+
const label = relayLabelFor(relayUrl);
|
|
462
|
+
choices = rooms.map((room) => ({ ...room, relayUrl, relayLabel: label }));
|
|
463
|
+
}
|
|
464
|
+
if (choices.length === 0) {
|
|
351
465
|
console.error("[sessions] none open — is a pi running on that machine?");
|
|
352
466
|
process.exit(1);
|
|
353
467
|
}
|
|
354
468
|
if (flags.has("list")) {
|
|
355
|
-
console.error("Sessions
|
|
356
|
-
|
|
469
|
+
console.error("Sessions:\n");
|
|
470
|
+
choices.forEach((room, i) => {
|
|
471
|
+
const relay = multiRelay ? ` [${room.relayLabel}]` : "";
|
|
472
|
+
console.error(` ${describeSession(room, i)}${relay}`);
|
|
473
|
+
});
|
|
357
474
|
process.exit(0);
|
|
358
475
|
}
|
|
359
476
|
const wantedId = flags.get("session");
|
|
360
477
|
const wantedName = flags.get("session-name");
|
|
361
478
|
let chosen;
|
|
362
479
|
if (wantedId) {
|
|
363
|
-
chosen =
|
|
480
|
+
chosen = choices.find((r) => matchesSessionId(r, wantedId)) ?? null;
|
|
364
481
|
if (!chosen)
|
|
365
482
|
console.error(`[sessions] no session with id "${wantedId}"`);
|
|
366
483
|
}
|
|
367
484
|
else if (wantedName) {
|
|
368
485
|
// Names are user-set and NOT unique, so an ambiguous one must not silently
|
|
369
486
|
// pick a session — that would attach to an arbitrary agent.
|
|
370
|
-
const named =
|
|
487
|
+
const named = choices.filter((r) => r.name === wantedName && (!multiRelay || r.relayUrl === relayUrl));
|
|
371
488
|
if (named.length > 1) {
|
|
372
489
|
console.error(`[sessions] "${wantedName}" is ambiguous — use --session:`);
|
|
373
490
|
named.forEach((room, i) => console.error(describeSession(room, i)));
|
|
@@ -378,16 +495,159 @@ else if (wantedName) {
|
|
|
378
495
|
console.error(`[sessions] no session named "${wantedName}"`);
|
|
379
496
|
}
|
|
380
497
|
else {
|
|
381
|
-
chosen = await pickRoom(
|
|
498
|
+
chosen = await pickRoom(choices);
|
|
382
499
|
}
|
|
383
500
|
if (!chosen)
|
|
384
501
|
process.exit(1);
|
|
502
|
+
// MULTI-RELAY: promote the chosen relay's client, close the others.
|
|
503
|
+
if (multiRelay && clientsByRelay) {
|
|
504
|
+
const promoted = chosen.relayUrl
|
|
505
|
+
? clientsByRelay.get(chosen.relayUrl)
|
|
506
|
+
: undefined;
|
|
507
|
+
for (const [url, c] of clientsByRelay) {
|
|
508
|
+
if (url !== chosen.relayUrl) {
|
|
509
|
+
try {
|
|
510
|
+
c.close();
|
|
511
|
+
}
|
|
512
|
+
catch {
|
|
513
|
+
/* already down */
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
if (promoted) {
|
|
518
|
+
// Adopt the promoted client wholesale: event listeners re-wired below
|
|
519
|
+
// (the original client's listeners stay on the abandoned instance).
|
|
520
|
+
try {
|
|
521
|
+
client.close();
|
|
522
|
+
}
|
|
523
|
+
catch {
|
|
524
|
+
/* not connected */
|
|
525
|
+
}
|
|
526
|
+
client = promoted;
|
|
527
|
+
wireClient(client);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
385
530
|
client.room = chosen.room_id;
|
|
386
531
|
cwd = chosen.cwd ?? cwd;
|
|
387
532
|
console.error(`[attached] ${chosen.name ?? chosen.room_id} — ${chosen.cwd ?? "?"}\n` +
|
|
388
533
|
"type a prompt, /help for commands, Ctrl-C to exit\n");
|
|
389
534
|
// The first frame to a trusted peer is what triggers the extension's attach.
|
|
535
|
+
// Opening the window BEFORE the request: the replay arrives ahead of the
|
|
536
|
+
// terminator, and anything still open that isn't replayed has since resolved.
|
|
537
|
+
syncWindow = new Set();
|
|
390
538
|
client.requestSync();
|
|
539
|
+
/** Set while an ask wants free text: the next submitted line answers it. */
|
|
540
|
+
let awaitingText = null;
|
|
541
|
+
/**
|
|
542
|
+
* Close the reconciliation window: any ask we are still showing that the host
|
|
543
|
+
* did NOT replay has resolved without us seeing the dismissal, so retire it.
|
|
544
|
+
* The host only replays flows still awaiting an answer, which is what makes
|
|
545
|
+
* "not replayed" mean "answered" rather than "maybe missed".
|
|
546
|
+
*/
|
|
547
|
+
function closeSyncWindow() {
|
|
548
|
+
const replayed = syncWindow;
|
|
549
|
+
syncWindow = null;
|
|
550
|
+
for (const id of staleFlows(openAsks.keys(), replayed)) {
|
|
551
|
+
openAsks.delete(id);
|
|
552
|
+
if (awaitingText?.prompt.id === id)
|
|
553
|
+
awaitingText = null;
|
|
554
|
+
emit([" (clarification resolved elsewhere)"]);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
function handleUiRequest(rpc) {
|
|
558
|
+
if (typeof rpc.id === "string")
|
|
559
|
+
syncWindow?.add(rpc.id);
|
|
560
|
+
if (rpc.method === "notify") {
|
|
561
|
+
const routed = routeNotify(rpc, (id) => openAsks.has(id));
|
|
562
|
+
if (routed.kind === "dismiss") {
|
|
563
|
+
openAsks.delete(routed.id);
|
|
564
|
+
if (awaitingText?.prompt.id === routed.id)
|
|
565
|
+
awaitingText = null;
|
|
566
|
+
emit([" (clarification resolved elsewhere)"]);
|
|
567
|
+
}
|
|
568
|
+
// notice → the reducer already renders it; drop → nothing to do.
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
// SAFETY: the non-notify extension_ui_request shapes (select/confirm/input/
|
|
572
|
+
// editor) are exactly AskPrompt's fields, and every one of them is optional
|
|
573
|
+
// here except `id`/`method`, which the dispatch above has already matched.
|
|
574
|
+
// presentAsk reads nothing it doesn't first check.
|
|
575
|
+
const prompt = rpc;
|
|
576
|
+
openAsks.set(prompt.id, prompt);
|
|
577
|
+
void presentAsk(prompt);
|
|
578
|
+
}
|
|
579
|
+
function respond(frame, promptId) {
|
|
580
|
+
openAsks.delete(promptId);
|
|
581
|
+
if (awaitingText?.prompt.id === promptId)
|
|
582
|
+
awaitingText = null;
|
|
583
|
+
client.sendEnvelope({ rpc: frame });
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Present a flow question by question. Scoped to select / confirm / input —
|
|
587
|
+
* the realistic ask surface the app also implements; an `editor` degrades to
|
|
588
|
+
* free text rather than pretending to be an editor.
|
|
589
|
+
*/
|
|
590
|
+
async function presentAsk(prompt) {
|
|
591
|
+
if (!shell)
|
|
592
|
+
return;
|
|
593
|
+
const questions = prompt.ask?.questions ?? [];
|
|
594
|
+
const header = prompt.ask?.title ?? prompt.title ?? "Clarification";
|
|
595
|
+
if (prompt.method === "confirm") {
|
|
596
|
+
const picked = await shell.choose(header, [
|
|
597
|
+
{ value: "yes", label: "Yes" },
|
|
598
|
+
{ value: "no", label: "No" },
|
|
599
|
+
]);
|
|
600
|
+
if (!picked)
|
|
601
|
+
return respond(cancelResponse(prompt), prompt.id);
|
|
602
|
+
return respond(plainResponse(prompt, picked.value === "yes"), prompt.id);
|
|
603
|
+
}
|
|
604
|
+
// No pi-ask envelope: pi's own select/input dialog.
|
|
605
|
+
if (questions.length === 0) {
|
|
606
|
+
if (prompt.method === "select" && prompt.options?.length) {
|
|
607
|
+
const picked = await shell.choose(header, prompt.options.map((o) => ({ value: o, label: o })));
|
|
608
|
+
if (!picked)
|
|
609
|
+
return respond(cancelResponse(prompt), prompt.id);
|
|
610
|
+
return respond(plainResponse(prompt, picked.value), prompt.id);
|
|
611
|
+
}
|
|
612
|
+
emit([` ${header}`, " (type your answer and press enter)"]);
|
|
613
|
+
awaitingText = { prompt, questionId: "" };
|
|
614
|
+
return;
|
|
615
|
+
}
|
|
616
|
+
const answers = {};
|
|
617
|
+
for (const question of questions) {
|
|
618
|
+
if (question.options.length === 0) {
|
|
619
|
+
emit([` ${question.prompt}`, " (type your answer and press enter)"]);
|
|
620
|
+
awaitingText = { prompt, questionId: question.id };
|
|
621
|
+
return; // the submit handler resumes the flow
|
|
622
|
+
}
|
|
623
|
+
// pi-ask encodes "the user should type an answer" as exactly ONE option
|
|
624
|
+
// marked `freeform`, never mixed with real choices. Presenting that as a
|
|
625
|
+
// one-item list would submit the literal "freeform" token instead of what
|
|
626
|
+
// the user typed — it wants customText and NO values.
|
|
627
|
+
if (question.options.length === 1 && question.options[0]?.freeform) {
|
|
628
|
+
emit([` ${question.prompt}`, " (type your answer and press enter)"]);
|
|
629
|
+
awaitingText = { prompt, questionId: question.id };
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
const type = effectiveType(question);
|
|
633
|
+
const picked = await shell.choose(question.prompt, question.options.map((o) => ({
|
|
634
|
+
value: o.value,
|
|
635
|
+
// `recommended` is presentation-only metadata; surface it as a marker
|
|
636
|
+
// rather than letting it change the value we submit.
|
|
637
|
+
label: o.recommended ? `${o.label} ★` : o.label,
|
|
638
|
+
description: o.description ?? (type === "preview" ? o.preview : ""),
|
|
639
|
+
})));
|
|
640
|
+
if (!picked)
|
|
641
|
+
return respond(cancelResponse(prompt), prompt.id);
|
|
642
|
+
answers[question.id] = { values: [picked.value] };
|
|
643
|
+
if (type === "multi") {
|
|
644
|
+
// Honest degradation: the list picks one, so say so rather than
|
|
645
|
+
// silently sending a single value for a multi-select.
|
|
646
|
+
emit([` (${question.label ?? question.id}: one option sent)`]);
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
respond(answerResponse(prompt, answers), prompt.id);
|
|
650
|
+
}
|
|
391
651
|
function commandContext() {
|
|
392
652
|
return {
|
|
393
653
|
client,
|
|
@@ -408,6 +668,25 @@ function commandContext() {
|
|
|
408
668
|
};
|
|
409
669
|
}
|
|
410
670
|
async function submit(text) {
|
|
671
|
+
// An ask waiting on free text owns the next line — otherwise the answer would
|
|
672
|
+
// be sent to the agent as a fresh prompt while it sits blocked on the dialog.
|
|
673
|
+
if (awaitingText) {
|
|
674
|
+
const { prompt, questionId } = awaitingText;
|
|
675
|
+
awaitingText = null;
|
|
676
|
+
if (text === "/cancel") {
|
|
677
|
+
respond(cancelResponse(prompt), prompt.id);
|
|
678
|
+
emit([" clarification cancelled"]);
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
if (questionId) {
|
|
682
|
+
respond(answerResponse(prompt, { [questionId]: { customText: text } }), prompt.id);
|
|
683
|
+
}
|
|
684
|
+
else {
|
|
685
|
+
respond(plainResponse(prompt, text), prompt.id);
|
|
686
|
+
}
|
|
687
|
+
emit([" answer sent"]);
|
|
688
|
+
return;
|
|
689
|
+
}
|
|
411
690
|
const found = findCommand(text);
|
|
412
691
|
if (found) {
|
|
413
692
|
try {
|
|
@@ -453,7 +732,7 @@ if (process.stdin.isTTY) {
|
|
|
453
732
|
catch {
|
|
454
733
|
/* already down */
|
|
455
734
|
}
|
|
456
|
-
|
|
735
|
+
Shell.exitAfterDrain(0);
|
|
457
736
|
});
|
|
458
737
|
shell.start();
|
|
459
738
|
// The footer's model comes from pi's own state, not from room_meta.
|
package/dist/connect.js.map
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
11
|
-
" connect attach to a live pi session over the relay\n" +
|
|
12
|
-
" replay render a captured envelope stream from a file\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
|
-
|
|
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;
|
|
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
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
|
package/dist/pair.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pair.js","sourceRoot":"","sources":["../src/pair.ts"],"names":[],"mappings":"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"}
|
package/dist/reduce.js
CHANGED
|
@@ -109,9 +109,18 @@ export function reduce(envelopes) {
|
|
|
109
109
|
case "extension_ui_request": {
|
|
110
110
|
if (rpc.method !== "notify")
|
|
111
111
|
break;
|
|
112
|
+
// A notify is NOT transcript content by default: the ui bridge emits
|
|
113
|
+
// one with id === flowId when a pi-ask flow RESOLVES, so rendering
|
|
114
|
+
// every notify turns each answered ask into a log row ("Clarification
|
|
115
|
+
// resolved."). Only an actionable one earns a row; the rest are
|
|
116
|
+
// routed live by the client, which knows what is open.
|
|
117
|
+
// Design 01M1CF5FYMWHAGVZX3RDM50E34.
|
|
118
|
+
const level = String(rpc.notifyType ?? "info");
|
|
119
|
+
if (level !== "warning" && level !== "error")
|
|
120
|
+
break;
|
|
112
121
|
items.push({
|
|
113
122
|
kind: "notice",
|
|
114
|
-
level
|
|
123
|
+
level,
|
|
115
124
|
text: String(rpc.message ?? ""),
|
|
116
125
|
});
|
|
117
126
|
break;
|
package/dist/reduce.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../src/reduce.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../src/reduce.ts"],"names":[],"mappings":"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"}
|
package/dist/relay.d.ts
ADDED
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
|
package/dist/tui.js
CHANGED
|
@@ -124,10 +124,28 @@ export class Shell {
|
|
|
124
124
|
catch {
|
|
125
125
|
/* fall through to the watchdog rather than stranding the process */
|
|
126
126
|
}
|
|
127
|
-
const watchdog = setTimeout(() =>
|
|
127
|
+
const watchdog = setTimeout(() => Shell.exitAfterDrain(130), 250);
|
|
128
128
|
watchdog.unref();
|
|
129
129
|
this.onQuit();
|
|
130
130
|
}
|
|
131
|
+
/** EXIT AFTER STDOUT DRAINS (the Ctrl-C wedge fix): process.exit() is
|
|
132
|
+
* immediate and can fire before the terminal-restoration escape sequences
|
|
133
|
+
* (Kitty pop, raw-mode restore, cursor reposition — all synchronous
|
|
134
|
+
* process.stdout.write() calls inside tui.stop()) have actually reached the
|
|
135
|
+
* terminal. The terminal is left in whatever mid-teardown state the last
|
|
136
|
+
* flushed byte happened to be in: raw mode on, no echo, Kitty protocol
|
|
137
|
+
* active. This waits for the write buffer to drain (or a short watchdog)
|
|
138
|
+
* before terminating. */
|
|
139
|
+
static exitAfterDrain(code) {
|
|
140
|
+
if (process.stdout.writableLength === 0) {
|
|
141
|
+
process.exit(code);
|
|
142
|
+
}
|
|
143
|
+
process.stdout.once("drain", () => process.exit(code));
|
|
144
|
+
// Watchdog: a pipe or a loaded system can stall the drain — 100ms is
|
|
145
|
+
// more than enough for a few hundred bytes of escape sequences.
|
|
146
|
+
const bail = setTimeout(() => process.exit(code), 100);
|
|
147
|
+
bail.unref();
|
|
148
|
+
}
|
|
131
149
|
/**
|
|
132
150
|
* The in-flight turn is REWRITTEN on every delta, so it can't be appended to
|
|
133
151
|
* the transcript. It renders in its own region and is cleared the moment the
|
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":"AAAA;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAc,MAAM,iCAAiC,CAAA;AAChF,OAAO,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,eAAe,EACf,UAAU,EACV,IAAI,EACJ,aAAa,GAId,MAAM,wBAAwB,CAAA;AAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;AAErE;;;GAGG;AACH,MAAM,KAAK;IACD,KAAK,GAAa,EAAE,CAAA;IAE5B,MAAM,CAAC,KAAwB;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,KAAwB;QAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,UAAU;QACR,+CAA+C;IACjD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF;AAED,0EAA0E;AAC1E,SAAS,WAAW;IAClB,OAAQ,UAAoC,CAAC,SAAS,CAAE,CAAA;AAC1D,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,KAAK,GAAG,WAAW,EAAE,CAAA;IAC3B,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,UAAU,EAAE,kBAAkB,EAAE;KACjC,CAAA;AACH,CAAC;AAWD,MAAM,OAAO,KAAK;IAyBG;IAxBV,GAAG,GAAG,IAAI,aAAa,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;IACtC,MAAM,CAAQ;IACd,MAAM,CAAM;IACZ,OAAO,CAAQ;IACxB,SAAS,GAAG,KAAK,CAAA;IACjB,QAAQ,GAAG,KAAK,CAAA;IACxB,yEAAyE;IACxD,IAAI,GAAG,IAAI,KAAK,EAAE,CAAA;IAClB,UAAU,GAAG,IAAI,KAAK,EAAE,CAAA;IACzC,yEAAyE;IACxD,OAAO,GAAG,IAAI,KAAK,EAAE,CAAA;IACtC;;;;OAIG;IACc,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAC5B,MAAM,CAAa;IAC3B,iFAAiF;IACzE,OAAO,GAAsB,IAAI,CAAA;IAEzC,YACE,MAAmB,EACnB,QAAgC,EACf,SAAqB,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAA1C,WAAM,GAAN,MAAM,CAAoC;QAE3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACvB,IAAI,OAAO;gBAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC,CAAA;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,WAAW,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CACvB,IAAI,CAAC,GAAG,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAC3B,EAAE,CACH,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACH,qEAAqE;QACrE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QAChB,0EAA0E;QAC1E,sEAAsE;QACtE,2EAA2E;QAC3E,2EAA2E;QAC3E,+CAA+C;QAC/C,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAY,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAAE,OAAO,SAAS,CAAA;YAC9D,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAA,CAAC,0BAA0B;YACzE,IAAI,CAAC,IAAI,EAAE,CAAA;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;QACjE,QAAQ,CAAC,KAAK,EAAE,CAAA;QAChB,IAAI,CAAC,MAAM,EAAE,CAAA;IACf,CAAC;IAED;;;;;;;8BAO0B;IAC1B,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACtD,qEAAqE;QACrE,gEAAgE;QAChE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACtD,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAwB;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACvD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IAC1B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACjB,CAAC;IAED,SAAS,CAAC,KAA2B;QACnC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAC1C,2EAA2E;QAC3E,kDAAkD;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAA;QAC5C,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAA;YACxB,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;YACrB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAwB;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IAC1B,CAAC;IAED,6DAA6D;IAC7D,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IAC1B,CAAC;IAED,2DAA2D;IAC3D,UAAU,CAAC,KAAwB;QACjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IAC1B,CAAC;IAED,6EAA6E;IAC7E,aAAa,CAAC,KAAwB;QACpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACH,YAAY,CACV,KAAa,EACb,KAAmB,EACnB,IAAY,EACZ,IAAuB;QAEvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,EAAE,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,CAAC,MAAmD,EAAE,EAAE;gBACrE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBAC1B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;gBACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC9B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;gBACxB,OAAO,CAAC,MAAM,CAAC,CAAA;YACjB,CAAC,CAAA;YACD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,OAAO,SAAS,CAAA;gBACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;oBACnC,IAAI,IAAI;wBAAE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;gBAC1B,CAAC;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC,CAAA;YACD,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACjE,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACvB,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YAChC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACvB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,2EAA2E;IAC3E,MAAM,CAAC,KAAa,EAAE,KAAmB;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;YACtC,MAAM,MAAM,GAAG,CAAC,MAAyB,EAAE,EAAE;gBAC3C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBAC1B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC9B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;gBACxB,OAAO,CAAC,MAAM,CAAC,CAAA;YACjB,CAAC,CAAA;YACD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;YACtB,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACvB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAA;IAC9B,CAAC;IAEO,YAAY;QAClB,MAAM,KAAK,GAAG,WAAW,EAAE,CAAA;QAC3B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACrD,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACtD,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geohar/unbien-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.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.
|
|
44
|
+
"@geohar/un-bien": "0.18.2"
|
|
45
45
|
},
|
|
46
46
|
"files": [
|
|
47
47
|
"dist",
|