@aui.io/apollo 0.1.9 → 0.1.10
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/node_modules/@aui.io/apollo-cli/bin/apollo.js +8 -5
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/operate.js +3 -10
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/operate.js.map +1 -1
- package/node_modules/@aui.io/apollo-cli/package.json +3 -3
- package/node_modules/@aui.io/apollo-core/dist/src/api/runtime-api.d.ts +13 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/runtime-api.js +17 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/runtime-api.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/services/messaging.d.ts +17 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/messaging.js +27 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/messaging.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/package.json +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/ActionPalette.d.ts +13 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/ActionPalette.js +47 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/ActionPalette.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/registry.d.ts +28 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/registry.js +219 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/registry.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivityDrawer.d.ts +8 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivityDrawer.js +43 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivityDrawer.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivitySummary.d.ts +5 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivitySummary.js +26 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivitySummary.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/operationStore.d.ts +67 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/operationStore.js +138 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/operationStore.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.d.ts +27 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.js +92 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/DiffView.d.ts +46 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/DiffView.js +87 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/DiffView.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/SessionPane.d.ts +15 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/SessionPane.js +38 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/SessionPane.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/ValidationView.d.ts +11 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/ValidationView.js +34 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/ValidationView.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/VersionsView.d.ts +9 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/VersionsView.js +31 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/VersionsView.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/claudeCode.d.ts +23 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/claudeCode.js +293 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/claudeCode.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/index.d.ts +4 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/index.js +13 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/index.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/sessions.d.ts +3 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/sessions.js +36 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/sessions.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/types.d.ts +85 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/types.js +11 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/backend/types.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/data.d.ts +78 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/data.js +279 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/data.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/session.d.ts +64 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/session.js +319 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/session.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/tree.d.ts +25 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/tree.js +69 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/tree.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/context/ContextSwitcher.d.ts +23 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/context/ContextSwitcher.js +60 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/context/ContextSwitcher.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/index.d.ts +17 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/index.js +22 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/index.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/keyprobe.d.ts +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/keyprobe.js +51 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/keyprobe.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/actions.d.ts +15 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/actions.js +111 -19
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/actions.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/clipboard.d.ts +7 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/clipboard.js +33 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/clipboard.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.d.ts +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.js +49 -7
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/ide.d.ts +16 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/ide.js +39 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/ide.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/keydiag.d.ts +17 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/keydiag.js +76 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/keydiag.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/keys.d.ts +64 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/keys.js +105 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/keys.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/modes.d.ts +18 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/modes.js +24 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/modes.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/place.d.ts +7 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/place.js +17 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/place.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.d.ts +25 -6
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.js +108 -17
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/sheet.d.ts +3 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/sheet.js +2 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/sheet.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/opentui-app.js +1780 -243
- package/node_modules/@aui.io/apollo-tui/dist/src/opentui-app.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.d.ts +15 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.js +22 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/FooterHints.d.ts +8 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/FooterHints.js +23 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/FooterHints.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/ModeNav.d.ts +4 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/ModeNav.js +7 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/ModeNav.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/Composer.d.ts +20 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/Composer.js +29 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/Composer.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/InspectorPane.d.ts +15 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/InspectorPane.js +27 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/InspectorPane.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/TalkView.d.ts +30 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/TalkView.js +60 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/TalkView.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/ThreadsPane.d.ts +17 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/ThreadsPane.js +61 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/ThreadsPane.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/data.d.ts +107 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/data.js +235 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/talk/data.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/theme/tokens.d.ts +8 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/theme/tokens.js +9 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/theme/tokens.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/ConfirmPane.d.ts +4 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/ConfirmPane.js +15 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/ConfirmPane.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/OutputPane.d.ts +5 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/OutputPane.js +16 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/OutputPane.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/PickerPane.d.ts +10 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/PickerPane.js +29 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/PickerPane.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/SheetPane.d.ts +4 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/SheetPane.js +22 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/SheetPane.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/package.json +2 -2
- package/package.json +4 -4
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/tabs.d.ts +0 -10
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/tabs.js +0 -19
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/tabs.js.map +0 -1
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
const UNIT_CAP = 400;
|
|
2
|
+
export function sessionCreate(backend) {
|
|
3
|
+
return { units: [], nextId: 1, turn: 0, running: false, backend };
|
|
4
|
+
}
|
|
5
|
+
function append(session, unit) {
|
|
6
|
+
const next = { ...unit, id: session.nextId, turn: session.turn };
|
|
7
|
+
return {
|
|
8
|
+
...session,
|
|
9
|
+
nextId: session.nextId + 1,
|
|
10
|
+
units: [...session.units, next].slice(-UNIT_CAP),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** A new user instruction starts a turn (appends to the same transcript). */
|
|
14
|
+
export function sessionPrompt(session, text) {
|
|
15
|
+
const started = { ...session, turn: session.turn + 1, running: true };
|
|
16
|
+
return append(started, { kind: "prompt", label: text, body: [] });
|
|
17
|
+
}
|
|
18
|
+
/** Terminal events settle pending work — nothing spins afterwards. */
|
|
19
|
+
function settleUnits(units) {
|
|
20
|
+
return units.map((u) => {
|
|
21
|
+
if (u.kind === "action" && u.status === "running") {
|
|
22
|
+
return { ...u, status: "ok", streaming: false };
|
|
23
|
+
}
|
|
24
|
+
if (u.streaming)
|
|
25
|
+
return { ...u, streaming: false };
|
|
26
|
+
return u;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** Append a delta to body lines, splitting embedded newlines. */
|
|
30
|
+
function appendDelta(body, delta) {
|
|
31
|
+
const fragments = delta.split("\n");
|
|
32
|
+
if (body.length === 0)
|
|
33
|
+
return fragments;
|
|
34
|
+
const next = [...body];
|
|
35
|
+
next[next.length - 1] = `${next[next.length - 1]}${fragments[0]}`;
|
|
36
|
+
return [...next, ...fragments.slice(1)];
|
|
37
|
+
}
|
|
38
|
+
/** Replace one unit immutably. */
|
|
39
|
+
function patchUnit(session, index, patch) {
|
|
40
|
+
const units = [...session.units];
|
|
41
|
+
units[index] = { ...units[index], ...patch };
|
|
42
|
+
return { ...session, units };
|
|
43
|
+
}
|
|
44
|
+
function lastIndexBy(units, match) {
|
|
45
|
+
for (let i = units.length - 1; i >= 0; i--) {
|
|
46
|
+
if (match(units[i]))
|
|
47
|
+
return i;
|
|
48
|
+
}
|
|
49
|
+
return -1;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Strip the checkout prefix from event text so tool lines read as repo paths
|
|
53
|
+
* (`bundle/src/program.yaml`, not `/Users/…/agents/x/bundle/src/program.yaml`).
|
|
54
|
+
* Applied at the app seam — works for any backend.
|
|
55
|
+
*/
|
|
56
|
+
export function relativizeEvent(event, root) {
|
|
57
|
+
if (!root)
|
|
58
|
+
return event;
|
|
59
|
+
const prefix = root.endsWith("/") ? root : `${root}/`;
|
|
60
|
+
const strip = (text) => text.split(prefix).join("");
|
|
61
|
+
switch (event.type) {
|
|
62
|
+
case "action":
|
|
63
|
+
return {
|
|
64
|
+
...event,
|
|
65
|
+
label: strip(event.label),
|
|
66
|
+
...(event.detail !== undefined ? { detail: strip(event.detail) } : {}),
|
|
67
|
+
...(event.body !== undefined ? { body: event.body.map(strip) } : {}),
|
|
68
|
+
};
|
|
69
|
+
case "action-start":
|
|
70
|
+
return { ...event, label: strip(event.label) };
|
|
71
|
+
case "action-result":
|
|
72
|
+
return { ...event, body: event.body.map(strip) };
|
|
73
|
+
default:
|
|
74
|
+
return event;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export function sessionEvent(session, event) {
|
|
78
|
+
if (!session.running)
|
|
79
|
+
return session;
|
|
80
|
+
switch (event.type) {
|
|
81
|
+
// Streaming fragments accumulate into a trailing streaming unit; the
|
|
82
|
+
// complete text/action event that follows replaces them (authoritative).
|
|
83
|
+
case "text-delta":
|
|
84
|
+
case "thinking-delta": {
|
|
85
|
+
const kind = event.type === "text-delta" ? "text" : "thinking";
|
|
86
|
+
const last = session.units[session.units.length - 1];
|
|
87
|
+
if (last?.kind === kind && last.streaming) {
|
|
88
|
+
return patchUnit(session, session.units.length - 1, {
|
|
89
|
+
body: appendDelta(last.body, event.text),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return append(session, {
|
|
93
|
+
kind,
|
|
94
|
+
label: kind === "thinking" ? "thinking" : "",
|
|
95
|
+
body: event.text.split("\n"),
|
|
96
|
+
streaming: true,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
case "action-start":
|
|
100
|
+
return append(session, {
|
|
101
|
+
kind: "action",
|
|
102
|
+
label: event.label,
|
|
103
|
+
body: [],
|
|
104
|
+
status: "running",
|
|
105
|
+
actionId: event.id,
|
|
106
|
+
streaming: true,
|
|
107
|
+
});
|
|
108
|
+
case "text": {
|
|
109
|
+
const streamed = lastIndexBy(session.units, (u) => u.kind === "text" && u.streaming === true);
|
|
110
|
+
if (streamed >= 0) {
|
|
111
|
+
return patchUnit(session, streamed, {
|
|
112
|
+
body: event.text.split("\n"),
|
|
113
|
+
streaming: false,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return append(session, { kind: "text", label: "", body: event.text.split("\n") });
|
|
117
|
+
}
|
|
118
|
+
case "action": {
|
|
119
|
+
const label = `${event.label}${event.detail ? ` — ${event.detail}` : ""}`;
|
|
120
|
+
if (event.id) {
|
|
121
|
+
const started = lastIndexBy(session.units, (u) => u.actionId === event.id);
|
|
122
|
+
if (started >= 0) {
|
|
123
|
+
return patchUnit(session, started, {
|
|
124
|
+
label,
|
|
125
|
+
body: event.body ?? [],
|
|
126
|
+
streaming: false,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return append(session, {
|
|
131
|
+
kind: "action",
|
|
132
|
+
label,
|
|
133
|
+
body: event.body ?? [],
|
|
134
|
+
// With a correlation id a result will arrive; without one, nothing is pending.
|
|
135
|
+
status: event.id ? "running" : "ok",
|
|
136
|
+
...(event.id ? { actionId: event.id } : {}),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
case "action-result": {
|
|
140
|
+
const index = lastIndexBy(session.units, (u) => u.actionId === event.id);
|
|
141
|
+
if (index < 0)
|
|
142
|
+
return session;
|
|
143
|
+
const unit = session.units[index];
|
|
144
|
+
return patchUnit(session, index, {
|
|
145
|
+
status: event.ok ? "ok" : "error",
|
|
146
|
+
streaming: false,
|
|
147
|
+
body: event.body.length > 0
|
|
148
|
+
? [...unit.body, ...(unit.body.length > 0 ? [""] : []), "→ result:", ...event.body]
|
|
149
|
+
: unit.body,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
case "error":
|
|
153
|
+
return append({ ...session, running: false, units: settleUnits(session.units) }, { kind: "outcome", label: event.message, body: [], status: "error" });
|
|
154
|
+
case "done":
|
|
155
|
+
return append({ ...session, running: false, units: settleUnits(session.units) }, {
|
|
156
|
+
kind: "outcome",
|
|
157
|
+
label: `turn complete${event.summary ? ` · ${event.summary}` : ""}`,
|
|
158
|
+
body: [],
|
|
159
|
+
status: "ok",
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export function sessionCancel(session) {
|
|
164
|
+
if (!session.running)
|
|
165
|
+
return session;
|
|
166
|
+
return append({ ...session, running: false, units: settleUnits(session.units) }, { kind: "outcome", label: "turn cancelled", body: [], status: "cancelled" });
|
|
167
|
+
}
|
|
168
|
+
/** Word-wrap one line to a width; hard-breaks anything unbreakable. */
|
|
169
|
+
export function wrapText(line, width) {
|
|
170
|
+
const max = Math.max(8, width);
|
|
171
|
+
if (line.length <= max)
|
|
172
|
+
return [line];
|
|
173
|
+
const out = [];
|
|
174
|
+
let rest = line;
|
|
175
|
+
while (rest.length > max) {
|
|
176
|
+
let cut = rest.lastIndexOf(" ", max);
|
|
177
|
+
if (cut <= 0)
|
|
178
|
+
cut = max;
|
|
179
|
+
out.push(rest.slice(0, cut));
|
|
180
|
+
rest = rest.slice(cut).trimStart();
|
|
181
|
+
}
|
|
182
|
+
out.push(rest);
|
|
183
|
+
return out;
|
|
184
|
+
}
|
|
185
|
+
const BODY_INDENT = " ";
|
|
186
|
+
/** Marker + glyph for an action unit: expandability and live status. */
|
|
187
|
+
function actionPrefix(unit, expanded) {
|
|
188
|
+
const marker = unit.body.length > 0 ? (expanded ? "▾" : "▸") : " ";
|
|
189
|
+
const glyph = unit.status === "running" ? "⚙" : unit.status === "error" ? "✕" : "⚙";
|
|
190
|
+
return `${marker} ${glyph} `;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Flatten the session into renderable rows. `width` is the usable pane
|
|
194
|
+
* width — rows are pre-wrapped so row counts (and scroll targets) are exact.
|
|
195
|
+
* `queued` prompts (typed while a turn runs) render as dim trailing rows;
|
|
196
|
+
* they become real prompt units when their turn starts.
|
|
197
|
+
*/
|
|
198
|
+
export function sessionRows(session, expanded, width, queued = []) {
|
|
199
|
+
const rows = [];
|
|
200
|
+
const bodyWidth = width - BODY_INDENT.length;
|
|
201
|
+
session.units.forEach((unit, index) => {
|
|
202
|
+
const spacerBefore = rows.length > 0 && (unit.kind === "prompt" || unit.kind === "outcome");
|
|
203
|
+
if (spacerBefore) {
|
|
204
|
+
rows.push({ unit: index, isLabel: false, tone: "spacer", text: "" });
|
|
205
|
+
}
|
|
206
|
+
switch (unit.kind) {
|
|
207
|
+
case "prompt": {
|
|
208
|
+
wrapText(`you: ${unit.label}`, width).forEach((text, i) => {
|
|
209
|
+
rows.push({ unit: index, isLabel: i === 0, tone: "prompt", text });
|
|
210
|
+
});
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
case "text": {
|
|
214
|
+
let first = true;
|
|
215
|
+
for (const line of unit.body) {
|
|
216
|
+
for (const text of wrapText(line, width)) {
|
|
217
|
+
rows.push({ unit: index, isLabel: first, tone: "prose", text });
|
|
218
|
+
first = false;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
case "thinking": {
|
|
224
|
+
const isOpen = expanded.has(unit.id);
|
|
225
|
+
const marker = unit.body.length > 0 ? (isOpen ? "▾" : "▸") : " ";
|
|
226
|
+
rows.push({
|
|
227
|
+
unit: index,
|
|
228
|
+
isLabel: true,
|
|
229
|
+
tone: "thinking",
|
|
230
|
+
text: `${marker} ✻ thinking${unit.streaming ? "…" : ""}`,
|
|
231
|
+
});
|
|
232
|
+
if (isOpen) {
|
|
233
|
+
for (const line of unit.body) {
|
|
234
|
+
for (const text of wrapText(line, bodyWidth)) {
|
|
235
|
+
rows.push({
|
|
236
|
+
unit: index,
|
|
237
|
+
isLabel: false,
|
|
238
|
+
tone: "body",
|
|
239
|
+
text: `${BODY_INDENT}${text}`,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
case "action": {
|
|
247
|
+
const isOpen = expanded.has(unit.id);
|
|
248
|
+
const prefix = actionPrefix(unit, isOpen);
|
|
249
|
+
const tone = unit.status === "running"
|
|
250
|
+
? "action-running"
|
|
251
|
+
: unit.status === "error"
|
|
252
|
+
? "action-error"
|
|
253
|
+
: "action";
|
|
254
|
+
wrapText(`${prefix}${unit.label}`, width).forEach((text, i) => {
|
|
255
|
+
rows.push({ unit: index, isLabel: i === 0, tone, text });
|
|
256
|
+
});
|
|
257
|
+
if (isOpen) {
|
|
258
|
+
for (const line of unit.body) {
|
|
259
|
+
for (const text of wrapText(line, bodyWidth)) {
|
|
260
|
+
rows.push({
|
|
261
|
+
unit: index,
|
|
262
|
+
isLabel: false,
|
|
263
|
+
tone: "body",
|
|
264
|
+
text: `${BODY_INDENT}${text}`,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
case "outcome": {
|
|
272
|
+
const tone = unit.status === "error"
|
|
273
|
+
? "outcome-error"
|
|
274
|
+
: unit.status === "cancelled"
|
|
275
|
+
? "outcome-cancelled"
|
|
276
|
+
: "outcome-ok";
|
|
277
|
+
const glyph = unit.status === "error" ? "✕" : unit.status === "cancelled" ? "◼" : "✓";
|
|
278
|
+
wrapText(`${glyph} ${unit.label}`, width).forEach((text, i) => {
|
|
279
|
+
rows.push({ unit: index, isLabel: i === 0, tone, text });
|
|
280
|
+
});
|
|
281
|
+
if (unit.status === "ok") {
|
|
282
|
+
rows.push({
|
|
283
|
+
unit: index,
|
|
284
|
+
isLabel: false,
|
|
285
|
+
tone: "hint",
|
|
286
|
+
text: "→ d review diff · v validate · p push",
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
// Live indicator while the backend works (before any queued follow-ups).
|
|
294
|
+
if (session.running) {
|
|
295
|
+
rows.push({
|
|
296
|
+
unit: Math.max(0, session.units.length - 1),
|
|
297
|
+
isLabel: false,
|
|
298
|
+
tone: "action-running",
|
|
299
|
+
text: "…",
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
// Queued prompts trail the transcript (sent when the running turn ends).
|
|
303
|
+
queued.forEach((text, i) => {
|
|
304
|
+
const virtualUnit = session.units.length + i;
|
|
305
|
+
if (rows.length > 0) {
|
|
306
|
+
rows.push({ unit: virtualUnit, isLabel: false, tone: "spacer", text: "" });
|
|
307
|
+
}
|
|
308
|
+
for (const line of wrapText(`you (queued): ${text}`, width)) {
|
|
309
|
+
rows.push({ unit: virtualUnit, isLabel: false, tone: "queued", text: line });
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
return rows;
|
|
313
|
+
}
|
|
314
|
+
/** First row of a unit — the scroll target when the cursor moves. */
|
|
315
|
+
export function unitRowOffset(rows, unitIndex) {
|
|
316
|
+
const at = rows.findIndex((r) => r.unit === unitIndex && r.isLabel);
|
|
317
|
+
return at < 0 ? 0 : at;
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/author/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File tree for the diff/browse sidebar — pure path math, testable.
|
|
3
|
+
* Renders flat path lists as a GitHub-style tree: directories first,
|
|
4
|
+
* single-child directory chains compacted ("a/b/c"), collapsible.
|
|
5
|
+
*/
|
|
6
|
+
export interface TreeEntry {
|
|
7
|
+
path: string;
|
|
8
|
+
status?: "A" | "M" | "D";
|
|
9
|
+
}
|
|
10
|
+
export interface TreeRow {
|
|
11
|
+
/** Full relative path of the node (compacted dirs use the deepest path). */
|
|
12
|
+
path: string;
|
|
13
|
+
/** Display label (dir chains compact to "a/b"). */
|
|
14
|
+
label: string;
|
|
15
|
+
depth: number;
|
|
16
|
+
kind: "dir" | "file";
|
|
17
|
+
status?: "A" | "M" | "D" | undefined;
|
|
18
|
+
/** Dirs only: false when the subtree is hidden. */
|
|
19
|
+
expanded?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Flatten to visible rows, honoring collapsed dirs. `collapsed` keys are the
|
|
23
|
+
* (compacted) dir paths reported in the returned rows.
|
|
24
|
+
*/
|
|
25
|
+
export declare function treeRows(entries: TreeEntry[], collapsed?: ReadonlySet<string>): TreeRow[];
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File tree for the diff/browse sidebar — pure path math, testable.
|
|
3
|
+
* Renders flat path lists as a GitHub-style tree: directories first,
|
|
4
|
+
* single-child directory chains compacted ("a/b/c"), collapsible.
|
|
5
|
+
*/
|
|
6
|
+
function makeDir(name, path) {
|
|
7
|
+
return { name, path, dirs: new Map(), files: [] };
|
|
8
|
+
}
|
|
9
|
+
function insert(root, entry) {
|
|
10
|
+
const segments = entry.path.split("/").filter(Boolean);
|
|
11
|
+
let node = root;
|
|
12
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
13
|
+
const name = segments[i];
|
|
14
|
+
const dirPath = segments.slice(0, i + 1).join("/");
|
|
15
|
+
let child = node.dirs.get(name);
|
|
16
|
+
if (!child) {
|
|
17
|
+
child = makeDir(name, dirPath);
|
|
18
|
+
node.dirs.set(name, child);
|
|
19
|
+
}
|
|
20
|
+
node = child;
|
|
21
|
+
}
|
|
22
|
+
const name = segments[segments.length - 1];
|
|
23
|
+
if (!name)
|
|
24
|
+
return;
|
|
25
|
+
node.files.push({
|
|
26
|
+
name,
|
|
27
|
+
path: entry.path,
|
|
28
|
+
...(entry.status ? { status: entry.status } : {}),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Flatten to visible rows, honoring collapsed dirs. `collapsed` keys are the
|
|
33
|
+
* (compacted) dir paths reported in the returned rows.
|
|
34
|
+
*/
|
|
35
|
+
export function treeRows(entries, collapsed = new Set()) {
|
|
36
|
+
const root = makeDir("", "");
|
|
37
|
+
for (const entry of entries)
|
|
38
|
+
insert(root, entry);
|
|
39
|
+
const rows = [];
|
|
40
|
+
function emit(node, depth) {
|
|
41
|
+
const dirs = [...node.dirs.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
42
|
+
for (let dir of dirs) {
|
|
43
|
+
// Compact chains of empty single-subdir directories (GitHub style).
|
|
44
|
+
let label = dir.name;
|
|
45
|
+
while (dir.dirs.size === 1 && dir.files.length === 0) {
|
|
46
|
+
const only = [...dir.dirs.values()][0];
|
|
47
|
+
label = `${label}/${only.name}`;
|
|
48
|
+
dir = only;
|
|
49
|
+
}
|
|
50
|
+
const expanded = !collapsed.has(dir.path);
|
|
51
|
+
rows.push({ path: dir.path, label, depth, kind: "dir", expanded });
|
|
52
|
+
if (expanded)
|
|
53
|
+
emit(dir, depth + 1);
|
|
54
|
+
}
|
|
55
|
+
const files = [...node.files].sort((a, b) => a.name.localeCompare(b.name));
|
|
56
|
+
for (const file of files) {
|
|
57
|
+
rows.push({
|
|
58
|
+
path: file.path,
|
|
59
|
+
label: file.name,
|
|
60
|
+
depth,
|
|
61
|
+
kind: "file",
|
|
62
|
+
...(file.status ? { status: file.status } : {}),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
emit(root, 0);
|
|
67
|
+
return rows;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/author/tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ScopeStrip } from "../lib/scope.js";
|
|
2
|
+
/**
|
|
3
|
+
* Ctrl+G context switcher (TUI_DESIGN §10): one place to see and change
|
|
4
|
+
* account / place / target. Enter opens the picker for the highlighted row.
|
|
5
|
+
* Rows lead with human names; the full untruncated id (or path) rides along
|
|
6
|
+
* in a lighter color.
|
|
7
|
+
*/
|
|
8
|
+
export interface ContextRow {
|
|
9
|
+
id: "env" | "profile" | "workspace" | "agent" | "project" | "org";
|
|
10
|
+
label: string;
|
|
11
|
+
advanced?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const CONTEXT_ROWS: ContextRow[];
|
|
14
|
+
export interface ContextRowDisplay {
|
|
15
|
+
value: string;
|
|
16
|
+
/** Full id / path — never truncated, rendered faint. */
|
|
17
|
+
detail?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function contextRowValue(scope: ScopeStrip, id: ContextRow["id"]): ContextRowDisplay;
|
|
20
|
+
export declare function ContextSwitcherPane({ scope, cursor, }: {
|
|
21
|
+
scope: ScopeStrip;
|
|
22
|
+
cursor: number;
|
|
23
|
+
}): import("react").ReactNode;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { homeishPath } from "../lib/scope.js";
|
|
3
|
+
import { DIM, FAINT, FG, TEAL, TEAL_DIM } from "../theme/tokens.js";
|
|
4
|
+
export const CONTEXT_ROWS = [
|
|
5
|
+
{ id: "env", label: "Environment" },
|
|
6
|
+
{ id: "profile", label: "Profile" },
|
|
7
|
+
{ id: "workspace", label: "Workspace" },
|
|
8
|
+
{ id: "agent", label: "Agent" },
|
|
9
|
+
{ id: "project", label: "Project" },
|
|
10
|
+
{ id: "org", label: "Organization", advanced: true },
|
|
11
|
+
];
|
|
12
|
+
export function contextRowValue(scope, id) {
|
|
13
|
+
switch (id) {
|
|
14
|
+
case "env":
|
|
15
|
+
return { value: scope.env };
|
|
16
|
+
case "profile":
|
|
17
|
+
return { value: scope.profile };
|
|
18
|
+
case "workspace":
|
|
19
|
+
return {
|
|
20
|
+
value: scope.workspace,
|
|
21
|
+
...(scope.workspacePath
|
|
22
|
+
? { detail: homeishPath(scope.workspacePath) }
|
|
23
|
+
: {}),
|
|
24
|
+
};
|
|
25
|
+
case "agent":
|
|
26
|
+
return {
|
|
27
|
+
value: scope.version !== "—" ? `${scope.agent} @ ${scope.version}` : scope.agent,
|
|
28
|
+
...(scope.agentId ? { detail: scope.agentId } : {}),
|
|
29
|
+
};
|
|
30
|
+
case "project":
|
|
31
|
+
return {
|
|
32
|
+
value: scope.project,
|
|
33
|
+
...(scope.projectId ? { detail: scope.projectId } : {}),
|
|
34
|
+
};
|
|
35
|
+
case "org":
|
|
36
|
+
return {
|
|
37
|
+
value: scope.org,
|
|
38
|
+
...(scope.orgId ? { detail: scope.orgId } : {}),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function ContextSwitcherPane({ scope, cursor, }) {
|
|
43
|
+
const width = Math.max(...CONTEXT_ROWS.map((row) => contextRowValue(scope, row.id).value.length));
|
|
44
|
+
return (_jsxs("box", { title: " context ", style: {
|
|
45
|
+
border: true,
|
|
46
|
+
borderStyle: "rounded",
|
|
47
|
+
borderColor: TEAL_DIM,
|
|
48
|
+
flexDirection: "column",
|
|
49
|
+
flexGrow: 1,
|
|
50
|
+
minHeight: 0,
|
|
51
|
+
width: "100%",
|
|
52
|
+
paddingLeft: 1,
|
|
53
|
+
paddingRight: 1,
|
|
54
|
+
}, children: [CONTEXT_ROWS.map((row, i) => {
|
|
55
|
+
const active = i === cursor;
|
|
56
|
+
const { value, detail } = contextRowValue(scope, row.id);
|
|
57
|
+
return (_jsxs("text", { fg: active ? TEAL : FG, style: { flexShrink: 0 }, children: [active ? "› " : " ", row.label.padEnd(14), _jsx("span", { fg: active ? FG : DIM, children: value.padEnd(width + 2) }), detail && detail !== value ? _jsx("span", { fg: FAINT, children: detail }) : null, row.advanced ? _jsx("span", { fg: FAINT, children: " advanced" }) : null] }, row.id));
|
|
58
|
+
}), _jsxs("text", { fg: FAINT, style: { flexShrink: 0 }, children: [" ", "env/profile follow their default workspace \u00B7 workspace enters (chdir)"] })] }));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ContextSwitcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextSwitcher.js","sourceRoot":"","sources":["../../../src/context/ContextSwitcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
export { GlyphController } from "./components/glyph.js";
|
|
2
2
|
export { GlyphSimulator, IDLE_CONFIG, WORKING_CONFIG, renderGlyphFrame, seedFromString, stepAttractor, } from "./lib/attractor.js";
|
|
3
3
|
export { SLASH_COMMANDS, filterCommands, helpLines, resolveCommand, } from "./lib/commands.js";
|
|
4
|
-
export {
|
|
4
|
+
export { MODES, modeByIndex, modeForJumpTab, otherMode } from "./lib/modes.js";
|
|
5
|
+
export { actionByAlias, buildActionRegistry, scoreAction, searchActions, } from "./actions/registry.js";
|
|
6
|
+
export { matchActivity, matchContext, matchCtrlC, matchHorizontal, matchModeJump, matchModeToggle, matchNewThread, matchPage, matchPalette, matchTalkTarget, matchTurnDebug, matchTurnTrace, } from "./lib/keys.js";
|
|
7
|
+
export { agentOrdinal, beginSend, cancelSend, composerDisabledReason, composerHeight, COMPOSER_KEY_BINDINGS, hasPendingSend, inspectorMeta, lastAgentTurnIndex, messagesToTurns, settleSend, talkLayout, talkRows, threadSummaries, turnRowOffset, } from "./talk/data.js";
|
|
8
|
+
export { threadsRowCount, NEW_THREAD_ROW } from "./talk/ThreadsPane.js";
|
|
9
|
+
export { clipboardCommandFor } from "./lib/clipboard.js";
|
|
10
|
+
export { OperationStore, OPERATION_GLYPH, formatElapsed, isOperationCommand, latestOperation, orderedOperations, } from "./activity/operationStore.js";
|
|
5
11
|
export { effectivePickerFilter, filterPickerItems, resolvePickerAnswer, } from "./lib/picker.js";
|
|
12
|
+
export { KNOWN_IDES, detectIdes, ideTargetDir } from "./lib/ide.js";
|
|
13
|
+
export { changeEntries, changesSummary, defaultDiffStyle, diffLines, fileContentDiff, formatVersionRow, listPlaceFiles, readPlaceFile, relativeTime, splitRows, validationSummary, } from "./author/data.js";
|
|
14
|
+
export { treeRows } from "./author/tree.js";
|
|
15
|
+
export { AUTHOR_BACKENDS, resolveAuthorBackend, } from "./author/backend/index.js";
|
|
16
|
+
export { CLAUDE_ALLOWED_TOOLS, claudeArgs, claudeCodeBackend, cleanVersionOutput, parseClaudeLine, summarizeToolUse, } from "./author/backend/claudeCode.js";
|
|
17
|
+
export { agentDirName, applyNames, clearScopeNameCache, homeishPath, scopeFromContext, } from "./lib/scope.js";
|
|
18
|
+
export { contextRowValue, CONTEXT_ROWS } from "./context/ContextSwitcher.js";
|
|
19
|
+
export { defaultSessionsFile, loadSessions, saveSession, } from "./author/backend/sessions.js";
|
|
20
|
+
export { relativizeEvent, sessionCancel, sessionCreate, sessionEvent, sessionPrompt, sessionRows, unitRowOffset, wrapText, } from "./author/session.js";
|
|
21
|
+
export { describeKey, matchedBindings, probeLine, rawHex, } from "./lib/keydiag.js";
|
|
6
22
|
export declare function main(argv?: string[]): Promise<number>;
|
|
@@ -3,8 +3,24 @@ import { fileURLToPath } from "node:url";
|
|
|
3
3
|
export { GlyphController } from "./components/glyph.js";
|
|
4
4
|
export { GlyphSimulator, IDLE_CONFIG, WORKING_CONFIG, renderGlyphFrame, seedFromString, stepAttractor, } from "./lib/attractor.js";
|
|
5
5
|
export { SLASH_COMMANDS, filterCommands, helpLines, resolveCommand, } from "./lib/commands.js";
|
|
6
|
-
export {
|
|
6
|
+
export { MODES, modeByIndex, modeForJumpTab, otherMode } from "./lib/modes.js";
|
|
7
|
+
export { actionByAlias, buildActionRegistry, scoreAction, searchActions, } from "./actions/registry.js";
|
|
8
|
+
export { matchActivity, matchContext, matchCtrlC, matchHorizontal, matchModeJump, matchModeToggle, matchNewThread, matchPage, matchPalette, matchTalkTarget, matchTurnDebug, matchTurnTrace, } from "./lib/keys.js";
|
|
9
|
+
export { agentOrdinal, beginSend, cancelSend, composerDisabledReason, composerHeight, COMPOSER_KEY_BINDINGS, hasPendingSend, inspectorMeta, lastAgentTurnIndex, messagesToTurns, settleSend, talkLayout, talkRows, threadSummaries, turnRowOffset, } from "./talk/data.js";
|
|
10
|
+
export { threadsRowCount, NEW_THREAD_ROW } from "./talk/ThreadsPane.js";
|
|
11
|
+
export { clipboardCommandFor } from "./lib/clipboard.js";
|
|
12
|
+
export { OperationStore, OPERATION_GLYPH, formatElapsed, isOperationCommand, latestOperation, orderedOperations, } from "./activity/operationStore.js";
|
|
7
13
|
export { effectivePickerFilter, filterPickerItems, resolvePickerAnswer, } from "./lib/picker.js";
|
|
14
|
+
export { KNOWN_IDES, detectIdes, ideTargetDir } from "./lib/ide.js";
|
|
15
|
+
export { changeEntries, changesSummary, defaultDiffStyle, diffLines, fileContentDiff, formatVersionRow, listPlaceFiles, readPlaceFile, relativeTime, splitRows, validationSummary, } from "./author/data.js";
|
|
16
|
+
export { treeRows } from "./author/tree.js";
|
|
17
|
+
export { AUTHOR_BACKENDS, resolveAuthorBackend, } from "./author/backend/index.js";
|
|
18
|
+
export { CLAUDE_ALLOWED_TOOLS, claudeArgs, claudeCodeBackend, cleanVersionOutput, parseClaudeLine, summarizeToolUse, } from "./author/backend/claudeCode.js";
|
|
19
|
+
export { agentDirName, applyNames, clearScopeNameCache, homeishPath, scopeFromContext, } from "./lib/scope.js";
|
|
20
|
+
export { contextRowValue, CONTEXT_ROWS } from "./context/ContextSwitcher.js";
|
|
21
|
+
export { defaultSessionsFile, loadSessions, saveSession, } from "./author/backend/sessions.js";
|
|
22
|
+
export { relativizeEvent, sessionCancel, sessionCreate, sessionEvent, sessionPrompt, sessionRows, unitRowOffset, wrapText, } from "./author/session.js";
|
|
23
|
+
export { describeKey, matchedBindings, probeLine, rawHex, } from "./lib/keydiag.js";
|
|
8
24
|
export async function main(argv = []) {
|
|
9
25
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
10
26
|
process.stderr.write("apollo TUI requires a TTY. Use apollo <command> for scripting.\n");
|
|
@@ -15,6 +31,11 @@ export async function main(argv = []) {
|
|
|
15
31
|
if (typeof process.versions.bun !== "string") {
|
|
16
32
|
return respawnUnderBun(argv);
|
|
17
33
|
}
|
|
34
|
+
// Keybinding probe: shows what this terminal sends for each chord.
|
|
35
|
+
if (argv.includes("--keys")) {
|
|
36
|
+
const { runKeyProbe } = await import("./keyprobe.js");
|
|
37
|
+
return await runKeyProbe();
|
|
38
|
+
}
|
|
18
39
|
try {
|
|
19
40
|
const { runOpenTui } = await import("./opentui-app.js");
|
|
20
41
|
return await runOpenTui();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,cAAc,EACd,SAAS,EACT,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runKeyProbe(): Promise<number>;
|