@geohar/unbien-cli 0.1.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/README.md +72 -0
- package/dist/client.d.ts +89 -0
- package/dist/client.js +210 -0
- package/dist/client.js.map +1 -0
- package/dist/commands.d.ts +59 -0
- package/dist/commands.js +273 -0
- package/dist/commands.js.map +1 -0
- package/dist/connect.d.ts +2 -0
- package/dist/connect.js +475 -0
- package/dist/connect.js.map +1 -0
- package/dist/identity.d.ts +2 -0
- package/dist/identity.js +30 -0
- package/dist/identity.js.map +1 -0
- package/dist/invite.d.ts +10 -0
- package/dist/invite.js +28 -0
- package/dist/invite.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.js +20 -0
- package/dist/main.js.map +1 -0
- package/dist/panels.d.ts +40 -0
- package/dist/panels.js +155 -0
- package/dist/panels.js.map +1 -0
- package/dist/picker.d.ts +6 -0
- package/dist/picker.js +95 -0
- package/dist/picker.js.map +1 -0
- package/dist/plan.d.ts +30 -0
- package/dist/plan.js +132 -0
- package/dist/plan.js.map +1 -0
- package/dist/reduce.d.ts +45 -0
- package/dist/reduce.js +123 -0
- package/dist/reduce.js.map +1 -0
- package/dist/render.d.ts +13 -0
- package/dist/render.js +91 -0
- package/dist/render.js.map +1 -0
- package/dist/replay.d.ts +2 -0
- package/dist/replay.js +57 -0
- package/dist/replay.js.map +1 -0
- package/dist/settings.d.ts +27 -0
- package/dist/settings.js +31 -0
- package/dist/settings.js.map +1 -0
- package/dist/store.d.ts +13 -0
- package/dist/store.js +20 -0
- package/dist/store.js.map +1 -0
- package/dist/theme.d.ts +7 -0
- package/dist/theme.js +110 -0
- package/dist/theme.js.map +1 -0
- package/dist/tui.d.ts +78 -0
- package/dist/tui.js +265 -0
- package/dist/tui.js.map +1 -0
- package/package.json +58 -0
package/dist/commands.js
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slash commands. Where pi has a first-class rpc verb we issue that verb and pi
|
|
3
|
+
* acts; only fork/branch go over un-bien's own plane, because they need a pi
|
|
4
|
+
* command context that the rpc dispatch path doesn't carry.
|
|
5
|
+
*/
|
|
6
|
+
import { SelectList } from "@earendil-works/pi-tui";
|
|
7
|
+
import { getSelectListTheme } from "@earendil-works/pi-coding-agent";
|
|
8
|
+
/**
|
|
9
|
+
* pi-plan's `/plan` semantics: a bare call toggles, and the explicit verbs set
|
|
10
|
+
* a state. The mode persists, so a pinned panel survives reconnects.
|
|
11
|
+
*/
|
|
12
|
+
function cyclePanel(ctx, key, label, args) {
|
|
13
|
+
const [verb = "toggle", arg] = args.trim().split(/\s+/);
|
|
14
|
+
const current = ctx.settings[key];
|
|
15
|
+
// pi-plan's filters + a row cap, on the plan panel only.
|
|
16
|
+
if (key === "planMode") {
|
|
17
|
+
if (verb === "filter") {
|
|
18
|
+
if (arg === "done")
|
|
19
|
+
ctx.settings.planShowDone = !ctx.settings.planShowDone;
|
|
20
|
+
else if (arg === "context")
|
|
21
|
+
ctx.settings.planShowContext = !ctx.settings.planShowContext;
|
|
22
|
+
else {
|
|
23
|
+
ctx.print([" /plan filter done|context"]);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
ctx.saveSettings();
|
|
27
|
+
ctx.print([
|
|
28
|
+
` showDone=${ctx.settings.planShowDone} showContext=${ctx.settings.planShowContext}`,
|
|
29
|
+
]);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (verb === "lines") {
|
|
33
|
+
const rows = Number(arg);
|
|
34
|
+
if (!Number.isFinite(rows) || rows < 1) {
|
|
35
|
+
ctx.print([` /plan lines <n> (now: ${ctx.settings.planMaxRows})`]);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
ctx.settings.planMaxRows = Math.floor(rows);
|
|
39
|
+
ctx.saveSettings();
|
|
40
|
+
ctx.print([` plan rows → ${ctx.settings.planMaxRows}`]);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
let next;
|
|
45
|
+
switch (verb) {
|
|
46
|
+
case "toggle":
|
|
47
|
+
next = current === "hidden" ? "expanded" : "hidden";
|
|
48
|
+
break;
|
|
49
|
+
case "expand":
|
|
50
|
+
case "show":
|
|
51
|
+
next = "expanded";
|
|
52
|
+
break;
|
|
53
|
+
case "collapse":
|
|
54
|
+
next = "collapsed";
|
|
55
|
+
break;
|
|
56
|
+
case "hide":
|
|
57
|
+
next = "hidden";
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
ctx.print([
|
|
61
|
+
key === "planMode"
|
|
62
|
+
? ` /plan toggle|expand|collapse|hide|filter done|filter context|lines <n> (now: ${current})`
|
|
63
|
+
: ` /${label} toggle|expand|collapse|hide (now: ${current})`,
|
|
64
|
+
]);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
ctx.settings[key] = next;
|
|
68
|
+
ctx.saveSettings();
|
|
69
|
+
}
|
|
70
|
+
function oneLine(text, max = 72) {
|
|
71
|
+
const flat = text.replace(/\s+/g, " ").trim();
|
|
72
|
+
return flat.length > max ? `${flat.slice(0, max - 1)}…` : flat;
|
|
73
|
+
}
|
|
74
|
+
function entryText(entry) {
|
|
75
|
+
return (entry.message?.content ?? [])
|
|
76
|
+
.filter((block) => block.type === "text")
|
|
77
|
+
.map((block) => block.text ?? "")
|
|
78
|
+
.join(" ");
|
|
79
|
+
}
|
|
80
|
+
/** Fork points are the USER turns — the messages you can rewind to. */
|
|
81
|
+
function forkPoints(entries) {
|
|
82
|
+
return entries.filter((e) => e.type === "message" && e.message?.role === "user" && e.id);
|
|
83
|
+
}
|
|
84
|
+
async function chooseEntry(ctx, title) {
|
|
85
|
+
const points = forkPoints(ctx.entries());
|
|
86
|
+
if (points.length === 0) {
|
|
87
|
+
ctx.print([" no fork points — no user messages in the walked history"]);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const items = points.map((entry) => ({
|
|
91
|
+
value: entry.id,
|
|
92
|
+
label: oneLine(entryText(entry)) || entry.id.slice(0, 8),
|
|
93
|
+
}));
|
|
94
|
+
const picked = await ctx.choose(title, items);
|
|
95
|
+
return picked?.value ?? null;
|
|
96
|
+
}
|
|
97
|
+
export const COMMANDS = [
|
|
98
|
+
{
|
|
99
|
+
name: "help",
|
|
100
|
+
summary: "list commands",
|
|
101
|
+
run: (ctx) => ctx.print(COMMANDS.map((c) => ` /${c.name.padEnd(10)} ${c.summary}`)),
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "plan",
|
|
105
|
+
summary: "pin the plan: toggle|expand|collapse|hide|filter|lines <n>",
|
|
106
|
+
run: (ctx, args) => cyclePanel(ctx, "planMode", "plan", args),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: "subagents",
|
|
110
|
+
summary: "pin the subagents fleet: toggle|expand|collapse|hide",
|
|
111
|
+
run: (ctx, args) => cyclePanel(ctx, "subagentsMode", "subagents", args),
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "fork",
|
|
115
|
+
summary: "fork a NEW session from an earlier message",
|
|
116
|
+
run: async (ctx, args) => {
|
|
117
|
+
const entryId = args.trim() || (await chooseEntry(ctx, "Fork from:"));
|
|
118
|
+
if (!entryId)
|
|
119
|
+
return;
|
|
120
|
+
// ctx.fork lives only on a pi COMMAND context, so this goes over ub.
|
|
121
|
+
ctx.client.sendUb("session_fork", { entry_id: entryId });
|
|
122
|
+
ctx.print([
|
|
123
|
+
` forking from ${entryId.slice(0, 8)}… (a new session opens)`,
|
|
124
|
+
]);
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: "branch",
|
|
129
|
+
summary: "branch IN PLACE from an earlier message",
|
|
130
|
+
run: async (ctx, args) => {
|
|
131
|
+
const entryId = args.trim() || (await chooseEntry(ctx, "Branch at:"));
|
|
132
|
+
if (!entryId)
|
|
133
|
+
return;
|
|
134
|
+
ctx.client.sendUb("session_navigate", { entry_id: entryId });
|
|
135
|
+
ctx.print([` branching at ${entryId.slice(0, 8)}…`]);
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: "tree",
|
|
140
|
+
summary: "browse turns; f forks a new session, b branches in place",
|
|
141
|
+
run: async (ctx) => {
|
|
142
|
+
const points = forkPoints(ctx.entries());
|
|
143
|
+
if (points.length === 0) {
|
|
144
|
+
ctx.print([" no turns yet — has history finished replaying?"]);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const picked = await ctx.chooseAction("Conversation turns:", points.map((entry) => ({
|
|
148
|
+
value: entry.id,
|
|
149
|
+
label: oneLine(entryText(entry)) || entry.id.slice(0, 8),
|
|
150
|
+
})), "↑/↓ move · f fork (new session) · b branch (in place) · esc", ["f", "b"]);
|
|
151
|
+
if (!picked)
|
|
152
|
+
return;
|
|
153
|
+
const entryId = picked.item.value;
|
|
154
|
+
if (picked.action === "b") {
|
|
155
|
+
ctx.client.sendUb("session_navigate", { entry_id: entryId });
|
|
156
|
+
ctx.print([` branching at ${entryId.slice(0, 8)}…`]);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
ctx.client.sendUb("session_fork", { entry_id: entryId });
|
|
160
|
+
ctx.print([
|
|
161
|
+
` forking from ${entryId.slice(0, 8)}… (a new session opens)`,
|
|
162
|
+
]);
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: "model",
|
|
168
|
+
summary: "switch model",
|
|
169
|
+
run: async (ctx) => {
|
|
170
|
+
// The host answers `{ models, current }`, not a bare array.
|
|
171
|
+
const data = await ctx.client.request("get_available_models");
|
|
172
|
+
const models = data?.models ?? [];
|
|
173
|
+
if (models.length === 0) {
|
|
174
|
+
ctx.print([
|
|
175
|
+
" no models reported by the host",
|
|
176
|
+
data?.current
|
|
177
|
+
? ` current: ${data.current.provider}/${data.current.id}`
|
|
178
|
+
: " (the session may not have resolved its catalogue yet)",
|
|
179
|
+
]);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const picked = await ctx.choose("Model:", models.map((m) => ({
|
|
183
|
+
value: `${m.provider}/${m.id}`,
|
|
184
|
+
label: m.name ?? m.id,
|
|
185
|
+
description: m.provider,
|
|
186
|
+
})));
|
|
187
|
+
if (!picked)
|
|
188
|
+
return;
|
|
189
|
+
const [provider, ...rest] = picked.value.split("/");
|
|
190
|
+
await ctx.client.request("set_model", {
|
|
191
|
+
provider,
|
|
192
|
+
modelId: rest.join("/"),
|
|
193
|
+
});
|
|
194
|
+
ctx.print([` model → ${picked.value}`]);
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
name: "thinking",
|
|
199
|
+
summary: "set thinking level",
|
|
200
|
+
run: async (ctx, args) => {
|
|
201
|
+
// `get_available_thinking_levels` is not bridged, so offer pi's own set
|
|
202
|
+
// and let the host reject a level the model doesn't support.
|
|
203
|
+
const levels = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
204
|
+
const level = args.trim() ||
|
|
205
|
+
(await ctx.choose("Thinking:", levels.map((l) => ({ value: l, label: l }))))?.value;
|
|
206
|
+
if (!level)
|
|
207
|
+
return;
|
|
208
|
+
await ctx.client.request("set_thinking_level", { level });
|
|
209
|
+
ctx.print([` thinking → ${level}`]);
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
name: "compact",
|
|
214
|
+
summary: "compact the session context",
|
|
215
|
+
run: async (ctx) => {
|
|
216
|
+
ctx.print([" compacting…"]);
|
|
217
|
+
await ctx.client.request("compact", {}, 120_000);
|
|
218
|
+
ctx.print([" compacted"]);
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
name: "abort",
|
|
223
|
+
summary: "abort the current turn",
|
|
224
|
+
run: (ctx) => {
|
|
225
|
+
ctx.client.abort();
|
|
226
|
+
ctx.print([" abort sent"]);
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: "set",
|
|
231
|
+
summary: "toggle a client setting (e.g. /set streamThinking on)",
|
|
232
|
+
run: (ctx, args) => {
|
|
233
|
+
const [key, value] = args.trim().split(/\s+/);
|
|
234
|
+
const toggles = ["streamThinking", "showThinking"];
|
|
235
|
+
const isToggle = (k) => toggles.includes(k);
|
|
236
|
+
if (!isToggle(key)) {
|
|
237
|
+
ctx.print([
|
|
238
|
+
` settings (${ctx.settingsPath}):`,
|
|
239
|
+
...toggles.map((t) => ` ${t} = ${ctx.settings[t]}`),
|
|
240
|
+
` theme = ${ctx.settings.theme ?? "(pi's setting)"}`,
|
|
241
|
+
" usage: /set <name> on|off",
|
|
242
|
+
]);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (value !== "on" && value !== "off") {
|
|
246
|
+
ctx.print([
|
|
247
|
+
` ${key} = ${ctx.settings[key]} — pass on or off to change`,
|
|
248
|
+
]);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
ctx.settings[key] = value === "on";
|
|
252
|
+
ctx.saveSettings();
|
|
253
|
+
ctx.print([` ${key} → ${ctx.settings[key]} (saved)`]);
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
name: "quit",
|
|
258
|
+
summary: "detach (the remote session keeps running)",
|
|
259
|
+
run: (ctx) => ctx.quit(),
|
|
260
|
+
},
|
|
261
|
+
];
|
|
262
|
+
export function findCommand(input) {
|
|
263
|
+
if (!input.startsWith("/"))
|
|
264
|
+
return null;
|
|
265
|
+
const [verb, ...rest] = input.slice(1).split(" ");
|
|
266
|
+
const command = COMMANDS.find((c) => c.name === verb);
|
|
267
|
+
return command ? { command, args: rest.join(" ") } : null;
|
|
268
|
+
}
|
|
269
|
+
/** Chooser used when no TUI is available: prints a numbered list instead. */
|
|
270
|
+
export function selectListFor(items, maxVisible = 10) {
|
|
271
|
+
return new SelectList(items, maxVisible, getSelectListTheme());
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|