u-foo 3.0.9 → 3.0.11
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 +25 -9
- package/README.zh-CN.md +22 -9
- package/dist/tui/darwin-arm64/ufoo-tui +0 -0
- package/dist/tui/darwin-x64/ufoo-tui +0 -0
- package/dist/tui/linux-arm64/ufoo-tui +0 -0
- package/dist/tui/linux-x64/ufoo-tui +0 -0
- package/package.json +12 -4
- package/scripts/pack-tui.js +112 -0
- package/scripts/postinstall.js +11 -0
- package/src/agents/activity/activityReconcile.js +106 -0
- package/src/agents/activity/activityStatePublisher.js +31 -2
- package/src/agents/activity/index.js +1 -0
- package/src/agents/launch/launcher.js +19 -0
- package/src/agents/launch/ptyRunner.js +20 -1
- package/src/app/chat/ChatController.js +433 -0
- package/src/app/chat/agentDirectory.js +63 -0
- package/src/app/chat/agentEnter.js +70 -0
- package/src/app/chat/agentIdentity.js +50 -0
- package/src/app/chat/bootstrap.js +66 -0
- package/src/app/chat/commandExecutor.js +108 -0
- package/src/app/chat/commands.js +38 -1
- package/src/app/chat/dashboardView.js +6 -2
- package/src/app/chat/historyStore.js +181 -0
- package/src/app/chat/index.js +14 -2
- package/src/app/chat/inputSubmitHandler.js +21 -7
- package/src/app/chat/ipcBuilders.js +52 -0
- package/src/app/chat/multiWindow/paneManager.js +10 -1
- package/src/app/chat/multiWindow/renderer.js +1 -1
- package/src/app/chat/multiWindow/vtFrame.js +93 -0
- package/src/app/chat/streamState.js +182 -0
- package/src/app/cli/features/doctor.js +22 -0
- package/src/code/UcodeController.js +156 -0
- package/src/code/context/planGraphService.js +4 -0
- package/src/code/repl.js +4 -3
- package/src/code/runtime/taskLoop.js +46 -50
- package/src/code/tui.js +13 -2
- package/src/code/ucodeSlashDispatch.js +241 -0
- package/src/coordination/bus/activate.js +3 -0
- package/src/runtime/contracts/schemas/ufoo-ui-v1/envelope.json +28 -0
- package/src/runtime/contracts/uiProtocol.js +190 -0
- package/src/ui/{ink/chatLogModel.js → chatLogModel.js} +2 -2
- package/src/ui/dashboardBridge.js +81 -0
- package/src/ui/format/index.js +2 -2
- package/src/ui/index.js +8 -4
- package/src/ui/multiPaneBusMirror.js +137 -0
- package/src/ui/multiWindowHandoff.js +232 -0
- package/src/ui/ptyHandoff.js +23 -0
- package/src/ui/rustChatHost.js +1520 -0
- package/src/ui/rustMultiSession.js +497 -0
- package/src/ui/rustUcodeHost.js +999 -0
- package/src/ui/scrollbackReplay.js +82 -0
- package/src/ui/settingsBridge.js +49 -0
- package/src/ui/toolMergeBridge.js +66 -0
- package/src/ui/tuiLauncher.js +105 -0
- package/src/ui/ucodeStatusLine.js +74 -0
- package/src/ui/uiHostServer.js +339 -0
- package/src/ui/MIGRATION.md +0 -334
- package/src/ui/ink/ChatApp.js +0 -4152
- package/src/ui/ink/DashboardBar.js +0 -691
- package/src/ui/ink/InkDemo.js +0 -96
- package/src/ui/ink/MultilineInput.js +0 -662
- package/src/ui/ink/UcodeApp.js +0 -1675
- package/src/ui/ink/agentMirror.js +0 -730
- package/src/ui/ink/chatReducer.js +0 -473
- package/src/ui/runInk.js +0 -66
package/src/ui/ink/InkDemo.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Minimal Ink smoke-test app for ufoo.
|
|
5
|
-
*
|
|
6
|
-
* Renders a banner, a scrolling log, a status line and a single-line input.
|
|
7
|
-
* Used to verify that ink runs under our Node + CJS environment, that
|
|
8
|
-
* keypress/resize/Ctrl+C all behave, and that we can drive it from a CJS
|
|
9
|
-
* entry point.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
function createInkDemo({ React, ink, onExit, interactive = true }) {
|
|
13
|
-
const { useEffect, useState, useCallback } = React;
|
|
14
|
-
const { Box, Text, useInput, useApp, useStdout } = ink;
|
|
15
|
-
const h = React.createElement;
|
|
16
|
-
|
|
17
|
-
return function InkDemo(_props) {
|
|
18
|
-
const [logs, setLogs] = useState([
|
|
19
|
-
"ufoo ink demo · type something and press Enter",
|
|
20
|
-
"press q or Ctrl+C to quit",
|
|
21
|
-
]);
|
|
22
|
-
const [draft, setDraft] = useState("");
|
|
23
|
-
const [size, setSize] = useState({ cols: 0, rows: 0 });
|
|
24
|
-
const { exit } = useApp();
|
|
25
|
-
const { stdout } = useStdout();
|
|
26
|
-
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
if (!stdout) return undefined;
|
|
29
|
-
const update = () => setSize({ cols: stdout.columns || 0, rows: stdout.rows || 0 });
|
|
30
|
-
update();
|
|
31
|
-
stdout.on("resize", update);
|
|
32
|
-
return () => stdout.off("resize", update);
|
|
33
|
-
}, [stdout]);
|
|
34
|
-
|
|
35
|
-
const submit = useCallback(() => {
|
|
36
|
-
const value = draft.trim();
|
|
37
|
-
if (!value) return;
|
|
38
|
-
setLogs((prev) => prev.concat([`> ${value}`]).slice(-200));
|
|
39
|
-
setDraft("");
|
|
40
|
-
}, [draft]);
|
|
41
|
-
|
|
42
|
-
useInput((input, key) => {
|
|
43
|
-
if (key.return) {
|
|
44
|
-
submit();
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (key.escape) {
|
|
48
|
-
setDraft("");
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (key.backspace || key.delete) {
|
|
52
|
-
setDraft((prev) => prev.slice(0, -1));
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
if (input === "q" && !key.ctrl && !key.meta) {
|
|
56
|
-
if (typeof onExit === "function") onExit();
|
|
57
|
-
exit();
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (input && !key.ctrl && !key.meta) {
|
|
61
|
-
setDraft((prev) => prev + input);
|
|
62
|
-
}
|
|
63
|
-
}, { isActive: interactive });
|
|
64
|
-
|
|
65
|
-
return h(Box, { flexDirection: "column" },
|
|
66
|
-
h(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1 },
|
|
67
|
-
h(Text, { color: "cyan", bold: true }, "ufoo · ink demo"),
|
|
68
|
-
h(Text, { color: "gray" }, ` ${size.cols}x${size.rows}`),
|
|
69
|
-
),
|
|
70
|
-
h(Box, { flexDirection: "column", marginTop: 1, height: 12 },
|
|
71
|
-
...logs.slice(-12).map((line, idx) =>
|
|
72
|
-
h(Text, { key: `${idx}-${line}` }, line)
|
|
73
|
-
),
|
|
74
|
-
),
|
|
75
|
-
h(Box, {
|
|
76
|
-
marginTop: 1,
|
|
77
|
-
borderStyle: "single",
|
|
78
|
-
borderTop: true,
|
|
79
|
-
borderBottom: true,
|
|
80
|
-
borderLeft: false,
|
|
81
|
-
borderRight: false,
|
|
82
|
-
borderColor: "gray",
|
|
83
|
-
paddingY: 0,
|
|
84
|
-
},
|
|
85
|
-
h(Text, { color: "magenta" }, "› "),
|
|
86
|
-
h(Text, null, draft),
|
|
87
|
-
h(Text, { color: "gray" }, "▏"),
|
|
88
|
-
),
|
|
89
|
-
h(Box, { marginTop: 1 },
|
|
90
|
-
h(Text, { color: "gray" }, "Enter send · Esc clear · q quit"),
|
|
91
|
-
),
|
|
92
|
-
);
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
module.exports = { createInkDemo };
|