@opencomputer/cli 0.3.11 → 0.3.13
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 +10 -4
- package/dist/api.d.ts +3 -3
- package/dist/api.js +8 -6
- package/dist/api.js.map +1 -1
- package/dist/commands.d.ts +1 -0
- package/dist/commands.js +15 -11
- package/dist/commands.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/local.d.ts +3 -1
- package/dist/local.js +32 -13
- package/dist/local.js.map +1 -1
- package/dist/local.test.js +1 -1
- package/dist/local.test.js.map +1 -1
- package/dist/project.d.ts +1 -0
- package/dist/project.js +431 -1
- package/dist/project.js.map +1 -1
- package/dist/project.test.js +58 -1
- package/dist/project.test.js.map +1 -1
- package/dist/session-prompt.d.ts +15 -0
- package/dist/session-prompt.js +93 -0
- package/dist/session-prompt.js.map +1 -0
- package/dist/session-prompt.test.d.ts +1 -0
- package/dist/session-prompt.test.js +104 -0
- package/dist/session-prompt.test.js.map +1 -0
- package/package.json +4 -5
- package/dist/tui.d.ts +0 -12
- package/dist/tui.js +0 -148
- package/dist/tui.js.map +0 -1
package/dist/tui.js
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@opentui/react/jsx-runtime";
|
|
2
|
-
/** @jsxImportSource @opentui/react */
|
|
3
|
-
import { createCliRenderer, SyntaxStyle } from "@opentui/core";
|
|
4
|
-
import { createRoot, useKeyboard } from "@opentui/react";
|
|
5
|
-
import { useCallback, useEffect, useState } from "react";
|
|
6
|
-
const markdownStyle = SyntaxStyle.fromStyles({
|
|
7
|
-
default: { fg: "#e5e5df" },
|
|
8
|
-
"markup.heading": { fg: "#f1f1ea", bold: true },
|
|
9
|
-
"markup.strong": { fg: "#f1f1ea", bold: true },
|
|
10
|
-
"markup.italic": { fg: "#c8c8c0", italic: true },
|
|
11
|
-
"markup.list": { fg: "#8fb99a" },
|
|
12
|
-
"markup.raw": { fg: "#d5b87a" },
|
|
13
|
-
"markup.raw.block": { fg: "#d5b87a", bg: "#1b1b19" },
|
|
14
|
-
"markup.link": { fg: "#8fb99a" },
|
|
15
|
-
"markup.link.label": { fg: "#8fb99a", underline: true },
|
|
16
|
-
"markup.link.url": { fg: "#77776f", dim: true },
|
|
17
|
-
"markup.quote": { fg: "#a8a8a0", italic: true },
|
|
18
|
-
});
|
|
19
|
-
function SessionApp({ agentName, send, exit }) {
|
|
20
|
-
const [turns, setTurns] = useState([]);
|
|
21
|
-
const [sessionId, setSessionId] = useState();
|
|
22
|
-
const [input, setInput] = useState("");
|
|
23
|
-
const [busy, setBusy] = useState(false);
|
|
24
|
-
const [spinnerIndex, setSpinnerIndex] = useState(0);
|
|
25
|
-
const spinner = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
if (!busy) {
|
|
28
|
-
setSpinnerIndex(0);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const timer = setInterval(() => setSpinnerIndex((current) => (current + 1) % spinner.length), 90);
|
|
32
|
-
return () => clearInterval(timer);
|
|
33
|
-
}, [busy, spinner.length]);
|
|
34
|
-
useKeyboard((key) => {
|
|
35
|
-
if (key.ctrl && !key.shift && key.name === "c")
|
|
36
|
-
exit();
|
|
37
|
-
});
|
|
38
|
-
const updateAssistant = useCallback((id, update) => {
|
|
39
|
-
setTurns((current) => current.map((turn) => (turn.id === id ? update(turn) : turn)));
|
|
40
|
-
}, []);
|
|
41
|
-
const submit = (value) => {
|
|
42
|
-
const prompt = value.trim();
|
|
43
|
-
if (!prompt || busy)
|
|
44
|
-
return;
|
|
45
|
-
if (prompt === "/exit" || prompt === "/quit") {
|
|
46
|
-
exit();
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
setInput("");
|
|
50
|
-
setBusy(true);
|
|
51
|
-
const userId = crypto.randomUUID();
|
|
52
|
-
const assistantId = crypto.randomUUID();
|
|
53
|
-
setTurns((current) => [
|
|
54
|
-
...current,
|
|
55
|
-
{
|
|
56
|
-
id: userId,
|
|
57
|
-
role: "user",
|
|
58
|
-
text: prompt,
|
|
59
|
-
reasoning: "",
|
|
60
|
-
tools: [],
|
|
61
|
-
active: false,
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
id: assistantId,
|
|
65
|
-
role: "assistant",
|
|
66
|
-
text: "",
|
|
67
|
-
reasoning: "",
|
|
68
|
-
tools: [],
|
|
69
|
-
active: true,
|
|
70
|
-
},
|
|
71
|
-
]);
|
|
72
|
-
const emit = (event) => {
|
|
73
|
-
updateAssistant(assistantId, (turn) => {
|
|
74
|
-
if (event.type === "message.delta") {
|
|
75
|
-
return { ...turn, text: turn.text + String(event.data.text ?? "") };
|
|
76
|
-
}
|
|
77
|
-
if (event.type === "message.completed") {
|
|
78
|
-
return { ...turn, text: String(event.data.text ?? turn.text) };
|
|
79
|
-
}
|
|
80
|
-
if (event.type === "reasoning.delta") {
|
|
81
|
-
return {
|
|
82
|
-
...turn,
|
|
83
|
-
reasoning: turn.reasoning + String(event.data.text ?? ""),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
if (event.type.startsWith("tool.")) {
|
|
87
|
-
const id = String(event.data.callId ?? event.data.tool ?? "tool");
|
|
88
|
-
const previous = turn.tools.find((item) => item.id === id);
|
|
89
|
-
const eventName = typeof event.data.tool === "string" ? event.data.tool.trim() : "";
|
|
90
|
-
const eventTitle = typeof event.data.title === "string" ? event.data.title.trim() : "";
|
|
91
|
-
const status = event.type === "tool.completed"
|
|
92
|
-
? "completed"
|
|
93
|
-
: event.type === "tool.failed"
|
|
94
|
-
? "failed"
|
|
95
|
-
: "running";
|
|
96
|
-
const tool = {
|
|
97
|
-
id,
|
|
98
|
-
name: eventName || previous?.name || "tool",
|
|
99
|
-
title: eventTitle || previous?.title,
|
|
100
|
-
status,
|
|
101
|
-
};
|
|
102
|
-
const existing = turn.tools.findIndex((item) => item.id === id);
|
|
103
|
-
const tools = [...turn.tools];
|
|
104
|
-
if (existing === -1)
|
|
105
|
-
tools.push(tool);
|
|
106
|
-
else
|
|
107
|
-
tools[existing] = { ...tools[existing], ...tool };
|
|
108
|
-
return { ...turn, tools };
|
|
109
|
-
}
|
|
110
|
-
return turn;
|
|
111
|
-
});
|
|
112
|
-
};
|
|
113
|
-
void send(prompt, sessionId, emit)
|
|
114
|
-
.then((nextSessionId) => setSessionId(nextSessionId))
|
|
115
|
-
.catch((error) => {
|
|
116
|
-
updateAssistant(assistantId, (turn) => ({
|
|
117
|
-
...turn,
|
|
118
|
-
error: error instanceof Error ? error.message : String(error),
|
|
119
|
-
}));
|
|
120
|
-
})
|
|
121
|
-
.finally(() => {
|
|
122
|
-
updateAssistant(assistantId, (turn) => ({ ...turn, active: false }));
|
|
123
|
-
setBusy(false);
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
return (_jsxs("box", { style: { width: "100%", height: "100%", flexDirection: "column", backgroundColor: "#11110f" }, children: [_jsxs("box", { style: { height: 3, paddingX: 2, flexDirection: "row", alignItems: "center", border: ["bottom"], borderColor: "#34342f" }, children: [_jsx("text", { fg: "#f0f0e9", children: _jsx("strong", { children: "OpenComputer" }) }), _jsxs("text", { fg: "#787870", children: [" / ", agentName] }), _jsx("box", { style: { flexGrow: 1 } }), _jsx("text", { fg: busy ? "#d2aa62" : "#69aa7c", children: busy ? spinner[spinnerIndex] : "●" }), _jsxs("text", { fg: "#85857d", children: [" ", busy ? "working" : "local"] })] }), _jsxs("scrollbox", { style: { flexGrow: 1, paddingX: 2, paddingY: 1 }, stickyScroll: true, stickyStart: "bottom", children: [!turns.length && (_jsxs("box", { style: { flexDirection: "column", paddingTop: 2 }, children: [_jsx("ascii-font", { text: "opencomputer", font: "tiny", color: ["#f1f1ea", "#8fb99a"], selectable: false, style: { marginBottom: 1 } }), _jsx("text", { fg: "#e6e6df", children: _jsx("strong", { children: "Test your agent locally" }) }), _jsx("text", { fg: "#77776f", children: "Send a message below. Connected tools are proxied through OpenComputer." })] })), turns.map((turn) => (_jsxs("box", { style: { flexDirection: "column", marginBottom: 1 }, children: [_jsx("text", { fg: turn.role === "user" ? "#999991" : "#6fa981", children: _jsx("strong", { children: turn.role === "user" ? "YOU" : agentName.toUpperCase() }) }), turn.role === "assistant" && (turn.reasoning || turn.tools.length > 0) && (_jsx("box", { style: { flexDirection: "column", marginTop: 1, marginBottom: turn.text ? 0 : 1 }, children: turn.active && !turn.text ? (_jsxs(_Fragment, { children: [turn.reasoning && _jsx("text", { fg: "#6f6f68", children: turn.reasoning }), turn.tools.map((tool) => (_jsxs("text", { fg: tool.status === "failed" ? "#b66b6b" : "#77776f", children: [tool.status === "completed" ? "✓" : tool.status === "failed" ? "×" : "○", " ", tool.title || tool.name] }, tool.id)))] })) : (_jsxs("text", { fg: "#66665f", children: ["\u2713 ", turn.tools.length ? `${turn.tools.length} tool ${turn.tools.length === 1 ? "call" : "calls"}` : "thought process"] })) })), turn.role === "assistant" &&
|
|
127
|
-
turn.active &&
|
|
128
|
-
!turn.text &&
|
|
129
|
-
!turn.reasoning &&
|
|
130
|
-
turn.tools.length === 0 && (_jsxs("text", { fg: "#77776f", children: [spinner[spinnerIndex], " Agent is working\u2026"] })), turn.text && (_jsx("markdown", { content: turn.text, syntaxStyle: markdownStyle, conceal: true, concealCode: true, streaming: turn.active, internalBlockMode: "top-level", style: { width: "100%" } })), turn.error && _jsxs("text", { fg: "#d27777", children: ["Error: ", turn.error] })] }, turn.id)))] }), _jsxs("box", { style: { height: 3, marginX: 2, marginBottom: 1, paddingX: 1, flexDirection: "row", border: true, borderColor: busy ? "#3b3b36" : "#62625b", alignItems: "center" }, children: [_jsx("text", { fg: "#77776f", children: "\u203A " }), _jsx("input", { style: { flexGrow: 1, width: "100%" }, value: input, placeholder: busy ? "Agent is working…" : `Message ${agentName}`, focused: !busy, onInput: setInput, onSubmit: submit })] }), _jsx("box", { style: { height: 1, paddingX: 2 }, children: _jsx("text", { fg: "#575751", children: "Enter send \u00B7 Drag select \u00B7 Ctrl+Shift+C copy \u00B7 Ctrl+C quit" }) })] }));
|
|
131
|
-
}
|
|
132
|
-
export async function runSessionTUI(options) {
|
|
133
|
-
const renderer = await createCliRenderer({ exitOnCtrlC: false });
|
|
134
|
-
const root = createRoot(renderer);
|
|
135
|
-
await new Promise((done) => {
|
|
136
|
-
let finished = false;
|
|
137
|
-
const exit = () => {
|
|
138
|
-
if (finished)
|
|
139
|
-
return;
|
|
140
|
-
finished = true;
|
|
141
|
-
done();
|
|
142
|
-
};
|
|
143
|
-
root.render(_jsx(SessionApp, { ...options, exit: exit }));
|
|
144
|
-
});
|
|
145
|
-
root.unmount();
|
|
146
|
-
renderer.destroy();
|
|
147
|
-
}
|
|
148
|
-
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"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"}
|