@chances-ai/tui 1.0.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/app.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { ChatViewModel } from "./view-model.js";
2
+ export interface ChatAppProps {
3
+ vm: ChatViewModel;
4
+ onSubmit: (prompt: string) => Promise<void>;
5
+ /** Called when the user enters a `/command` (other than `/exit`/`/quit`). */
6
+ onSlash?: (line: string) => Promise<void>;
7
+ }
8
+ export declare function ChatApp({ vm, onSubmit, onSlash }: ChatAppProps): JSX.Element;
9
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,iBAAiB,CAAC;AA8B3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CA4D5E"}
package/dist/app.js ADDED
@@ -0,0 +1,70 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useApp, useInput } from "ink";
3
+ import { useState, useSyncExternalStore } from "react";
4
+ const COLOR = {
5
+ user: "cyan",
6
+ assistant: "white",
7
+ tool: "magenta",
8
+ "tool-result": "gray",
9
+ error: "red",
10
+ info: "yellow",
11
+ };
12
+ const PREFIX = {
13
+ user: "› ",
14
+ assistant: "",
15
+ tool: "→ ",
16
+ "tool-result": " ",
17
+ error: "✗ ",
18
+ info: "• ",
19
+ };
20
+ function LineView({ line }) {
21
+ const color = line.kind === "tool-result" && line.ok === false ? "red" : COLOR[line.kind];
22
+ return (_jsxs(Text, { color: color, children: [PREFIX[line.kind], line.text] }));
23
+ }
24
+ export function ChatApp({ vm, onSubmit, onSlash }) {
25
+ useSyncExternalStore(vm.subscribe, vm.getSnapshot, vm.getSnapshot);
26
+ const [input, setInput] = useState("");
27
+ const { exit } = useApp();
28
+ useInput((char, key) => {
29
+ if (vm.pending) {
30
+ if (char === "y")
31
+ vm.resolvePermission(true);
32
+ else if (char === "n")
33
+ vm.resolvePermission(false);
34
+ return;
35
+ }
36
+ if (key.ctrl && char === "c") {
37
+ exit();
38
+ return;
39
+ }
40
+ if (key.return) {
41
+ const prompt = input.trim();
42
+ setInput("");
43
+ if (prompt === "/exit" || prompt === "/quit") {
44
+ exit();
45
+ return;
46
+ }
47
+ if (prompt.startsWith("/")) {
48
+ vm.pushUser(prompt);
49
+ if (onSlash)
50
+ void onSlash(prompt);
51
+ else
52
+ vm.pushError(`Unknown command: ${prompt}`);
53
+ return;
54
+ }
55
+ if (prompt) {
56
+ vm.pushUser(prompt);
57
+ void onSubmit(prompt);
58
+ }
59
+ return;
60
+ }
61
+ if (key.backspace || key.delete) {
62
+ setInput((s) => s.slice(0, -1));
63
+ return;
64
+ }
65
+ if (char && !key.ctrl && !key.meta)
66
+ setInput((s) => s + char);
67
+ });
68
+ return (_jsxs(Box, { flexDirection: "column", children: [vm.lines.map((line, i) => (_jsx(LineView, { line: line }, i))), vm.pending ? (_jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [_jsxs(Text, { color: "yellow", children: ["Approve ", vm.pending.req.name, "?"] }), _jsx(Text, { children: vm.pending.req.summary }), _jsx(Text, { dimColor: true, children: "[y] approve \u00B7 [n] deny" })] })) : (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", children: vm.busy ? "…thinking " : "› " }), _jsx(Text, { children: input })] }))] }));
69
+ }
70
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ChatViewModel } from "./view-model.js";
2
+ export { ChatViewModel } from "./view-model.js";
3
+ export type { Line, LineKind } from "./view-model.js";
4
+ export { ChatApp } from "./app.js";
5
+ export interface ChatHandle {
6
+ vm: ChatViewModel;
7
+ waitUntilExit: () => Promise<void>;
8
+ unmount: () => void;
9
+ }
10
+ /**
11
+ * Mounts the interactive chat. The caller owns the view-model so it can wire
12
+ * `vm.requestPermission` into the PermissionGate before the engine is built.
13
+ * `onSlash` is invoked for any `/command` other than `/exit`/`/quit` — the
14
+ * caller decides how to dispatch (typically via `PluginHost.dispatchSlash`).
15
+ */
16
+ export declare function renderChat(vm: ChatViewModel, onSubmit: (prompt: string) => Promise<void>, onSlash?: (line: string) => Promise<void>): ChatHandle;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,aAAa,CAAC;IAClB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,aAAa,EACjB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAC3C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACxC,UAAU,CAOZ"}
package/dist/index.js ADDED
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from "ink";
3
+ import { ChatApp } from "./app.js";
4
+ import { ChatViewModel } from "./view-model.js";
5
+ export { ChatViewModel } from "./view-model.js";
6
+ export { ChatApp } from "./app.js";
7
+ /**
8
+ * Mounts the interactive chat. The caller owns the view-model so it can wire
9
+ * `vm.requestPermission` into the PermissionGate before the engine is built.
10
+ * `onSlash` is invoked for any `/command` other than `/exit`/`/quit` — the
11
+ * caller decides how to dispatch (typically via `PluginHost.dispatchSlash`).
12
+ */
13
+ export function renderChat(vm, onSubmit, onSlash) {
14
+ const instance = render(_jsx(ChatApp, { vm: vm, onSubmit: onSubmit, onSlash: onSlash }));
15
+ return {
16
+ vm,
17
+ waitUntilExit: () => instance.waitUntilExit(),
18
+ unmount: () => instance.unmount(),
19
+ };
20
+ }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAQnC;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,EAAiB,EACjB,QAA2C,EAC3C,OAAyC;IAEzC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC,CAAC;IACnF,OAAO;QACL,EAAE;QACF,aAAa,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { EventBus } from "@chances-ai/runtime";
2
+ import type { PermissionRequest } from "@chances-ai/tools";
3
+ export type LineKind = "user" | "assistant" | "tool" | "tool-result" | "error" | "info";
4
+ export interface Line {
5
+ kind: LineKind;
6
+ text: string;
7
+ ok?: boolean;
8
+ }
9
+ interface Pending {
10
+ req: PermissionRequest;
11
+ resolve: (approve: boolean) => void;
12
+ }
13
+ /**
14
+ * Observable view-model. The Ink tree subscribes via useSyncExternalStore and
15
+ * never touches domain objects directly — the only inputs are bus events and the
16
+ * permission resolver. This is the seam that keeps the UI decoupled from core.
17
+ */
18
+ export declare class ChatViewModel {
19
+ lines: Line[];
20
+ busy: boolean;
21
+ pending: Pending | null;
22
+ private version;
23
+ private readonly listeners;
24
+ private assistantOpen;
25
+ subscribe: (fn: () => void) => (() => void);
26
+ getSnapshot: () => number;
27
+ private bump;
28
+ pushUser(text: string): void;
29
+ pushInfo(text: string): void;
30
+ pushError(text: string): void;
31
+ attach(bus: EventBus): void;
32
+ /** Returned to the PermissionGate as its resolver. */
33
+ requestPermission: (req: PermissionRequest) => Promise<boolean>;
34
+ resolvePermission(approve: boolean): void;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=view-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-model.d.ts","sourceRoot":"","sources":["../src/view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AACxF,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAED,UAAU,OAAO;IACf,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB,KAAK,EAAE,IAAI,EAAE,CAAM;IACnB,IAAI,UAAS;IACb,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE/B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,aAAa,CAAS;IAE9B,SAAS,GAAI,IAAI,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAGxC;IAEF,WAAW,QAAO,MAAM,CAAiB;IAEzC,OAAO,CAAC,IAAI;IAKZ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM7B,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAoC3B,sDAAsD;IACtD,iBAAiB,GAAI,KAAK,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,CAIzD;IAEL,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAS1C"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Observable view-model. The Ink tree subscribes via useSyncExternalStore and
3
+ * never touches domain objects directly — the only inputs are bus events and the
4
+ * permission resolver. This is the seam that keeps the UI decoupled from core.
5
+ */
6
+ export class ChatViewModel {
7
+ lines = [];
8
+ busy = false;
9
+ pending = null;
10
+ version = 0;
11
+ listeners = new Set();
12
+ assistantOpen = false;
13
+ subscribe = (fn) => {
14
+ this.listeners.add(fn);
15
+ return () => this.listeners.delete(fn);
16
+ };
17
+ getSnapshot = () => this.version;
18
+ bump() {
19
+ this.version++;
20
+ for (const l of this.listeners)
21
+ l();
22
+ }
23
+ pushUser(text) {
24
+ this.lines.push({ kind: "user", text });
25
+ this.assistantOpen = false;
26
+ this.bump();
27
+ }
28
+ pushInfo(text) {
29
+ this.lines.push({ kind: "info", text });
30
+ this.assistantOpen = false;
31
+ this.bump();
32
+ }
33
+ pushError(text) {
34
+ this.lines.push({ kind: "error", text });
35
+ this.assistantOpen = false;
36
+ this.bump();
37
+ }
38
+ attach(bus) {
39
+ bus.on("turn:start", () => {
40
+ this.busy = true;
41
+ this.bump();
42
+ });
43
+ bus.on("turn:end", () => {
44
+ this.busy = false;
45
+ this.bump();
46
+ });
47
+ bus.on("assistant:delta", (e) => {
48
+ if (!this.assistantOpen) {
49
+ this.lines.push({ kind: "assistant", text: "" });
50
+ this.assistantOpen = true;
51
+ }
52
+ this.lines[this.lines.length - 1].text += e.text;
53
+ this.bump();
54
+ });
55
+ bus.on("assistant:message", () => {
56
+ this.assistantOpen = false;
57
+ this.bump();
58
+ });
59
+ bus.on("tool:call", (e) => {
60
+ this.lines.push({ kind: "tool", text: `${e.name} ${JSON.stringify(e.args)}` });
61
+ this.assistantOpen = false;
62
+ this.bump();
63
+ });
64
+ bus.on("tool:result", (e) => {
65
+ this.lines.push({ kind: "tool-result", ok: e.ok, text: clip(e.output) });
66
+ this.bump();
67
+ });
68
+ bus.on("error", (e) => {
69
+ this.lines.push({ kind: "error", text: `${e.code}: ${e.message}` });
70
+ this.bump();
71
+ });
72
+ }
73
+ /** Returned to the PermissionGate as its resolver. */
74
+ requestPermission = (req) => new Promise((resolve) => {
75
+ this.pending = { req, resolve };
76
+ this.bump();
77
+ });
78
+ resolvePermission(approve) {
79
+ const p = this.pending;
80
+ this.pending = null;
81
+ if (p) {
82
+ this.lines.push({ kind: "info", text: `${approve ? "approved" : "denied"}: ${p.req.summary}` });
83
+ p.resolve(approve);
84
+ }
85
+ this.bump();
86
+ }
87
+ }
88
+ function clip(s, n = 400) {
89
+ return s.length > n ? s.slice(0, n) + "…" : s;
90
+ }
91
+ //# sourceMappingURL=view-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-model.js","sourceRoot":"","sources":["../src/view-model.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@chances-ai/tui",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": ["dist"],
14
+ "dependencies": {
15
+ "@chances-ai/runtime": "1.0.0",
16
+ "@chances-ai/tools": "1.0.0"
17
+ },
18
+ "peerDependencies": {
19
+ "ink": "^5.0.1",
20
+ "react": "^18.3.1"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc -b",
24
+ "check": "tsc -b",
25
+ "test": "bun test"
26
+ }
27
+ }