@nodetool-ai/cli-chat 0.0.0-stage → 0.8.9-bootstrap.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 +13 -2
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/ExecutionTree.d.ts +20 -0
- package/dist/ExecutionTree.d.ts.map +1 -0
- package/dist/ExecutionTree.js +100 -0
- package/dist/ExecutionTree.js.map +1 -0
- package/dist/agent-toolbelt.d.ts +15 -0
- package/dist/agent-toolbelt.d.ts.map +1 -0
- package/dist/agent-toolbelt.js +28 -0
- package/dist/agent-toolbelt.js.map +1 -0
- package/dist/app.d.ts +40 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +1070 -0
- package/dist/app.js.map +1 -0
- package/dist/bash-tool.d.ts +13 -0
- package/dist/bash-tool.d.ts.map +1 -0
- package/dist/bash-tool.js +85 -0
- package/dist/bash-tool.js.map +1 -0
- package/dist/chat-codeact.d.ts +93 -0
- package/dist/chat-codeact.d.ts.map +1 -0
- package/dist/chat-codeact.js +179 -0
- package/dist/chat-codeact.js.map +1 -0
- package/dist/chat-context.d.ts +18 -0
- package/dist/chat-context.d.ts.map +1 -0
- package/dist/chat-context.js +32 -0
- package/dist/chat-context.js.map +1 -0
- package/dist/chat-entry.d.ts +13 -0
- package/dist/chat-entry.d.ts.map +1 -0
- package/dist/chat-entry.js +233 -0
- package/dist/chat-entry.js.map +1 -0
- package/dist/chat-media.d.ts +3 -0
- package/dist/chat-media.d.ts.map +1 -0
- package/dist/chat-media.js +46 -0
- package/dist/chat-media.js.map +1 -0
- package/dist/chat-prompts.d.ts +20 -0
- package/dist/chat-prompts.d.ts.map +1 -0
- package/dist/chat-prompts.js +42 -0
- package/dist/chat-prompts.js.map +1 -0
- package/dist/chat-sessions.d.ts +25 -0
- package/dist/chat-sessions.d.ts.map +1 -0
- package/dist/chat-sessions.js +153 -0
- package/dist/chat-sessions.js.map +1 -0
- package/dist/commands/agent.d.ts +33 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +516 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/tools.d.ts +11 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +206 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/diagnose.d.ts +139 -0
- package/dist/diagnose.d.ts.map +1 -0
- package/dist/diagnose.js +435 -0
- package/dist/diagnose.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown.d.ts +9 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +53 -0
- package/dist/markdown.js.map +1 -0
- package/dist/nodetool.d.ts +3 -0
- package/dist/nodetool.d.ts.map +1 -0
- package/dist/nodetool.js +4 -0
- package/dist/nodetool.js.map +1 -0
- package/dist/permission-gate.d.ts +55 -0
- package/dist/permission-gate.d.ts.map +1 -0
- package/dist/permission-gate.js +118 -0
- package/dist/permission-gate.js.map +1 -0
- package/dist/readline-input.d.ts +23 -0
- package/dist/readline-input.d.ts.map +1 -0
- package/dist/readline-input.js +210 -0
- package/dist/readline-input.js.map +1 -0
- package/dist/settings.d.ts +19 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +146 -0
- package/dist/settings.js.map +1 -0
- package/dist/stdin.d.ts +52 -0
- package/dist/stdin.d.ts.map +1 -0
- package/dist/stdin.js +363 -0
- package/dist/stdin.js.map +1 -0
- package/dist/terminal-clipboard.d.ts +3 -0
- package/dist/terminal-clipboard.d.ts.map +1 -0
- package/dist/terminal-clipboard.js +24 -0
- package/dist/terminal-clipboard.js.map +1 -0
- package/dist/terminal-mouse.d.ts +24 -0
- package/dist/terminal-mouse.d.ts.map +1 -0
- package/dist/terminal-mouse.js +84 -0
- package/dist/terminal-mouse.js.map +1 -0
- package/dist/terminal-screen.d.ts +41 -0
- package/dist/terminal-screen.d.ts.map +1 -0
- package/dist/terminal-screen.js +228 -0
- package/dist/terminal-screen.js.map +1 -0
- package/dist/tool-format.d.ts +54 -0
- package/dist/tool-format.d.ts.map +1 -0
- package/dist/tool-format.js +360 -0
- package/dist/tool-format.js.map +1 -0
- package/dist/useExecutionState.d.ts +44 -0
- package/dist/useExecutionState.d.ts.map +1 -0
- package/dist/useExecutionState.js +285 -0
- package/dist/useExecutionState.js.map +1 -0
- package/dist/websocket-client.d.ts +159 -0
- package/dist/websocket-client.d.ts.map +1 -0
- package/dist/websocket-client.js +677 -0
- package/dist/websocket-client.js.map +1 -0
- package/package.json +73 -4
package/README.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Chat and agent commands
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Interactive terminal chat, agent sessions and agent tool calls. Ink and React
|
|
4
|
+
belong to this feature rather than the default CLI.
|
|
5
|
+
|
|
6
|
+
Install this independent command feature through the default CLI:
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
nodetool packs add cli-chat --yes
|
|
10
|
+
nodetool chat --help
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Commands do not install missing features automatically. See the
|
|
14
|
+
[command reference](../../docs/cli.md#install-command-features).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2026-10-30T19:34:52.214Z
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExecutionTree — Ink component that renders the agent task/step hierarchy
|
|
3
|
+
* as an interactive tree with real-time updates.
|
|
4
|
+
*
|
|
5
|
+
* ◆ Plan: Research and summarize topic
|
|
6
|
+
* ├─ ✓ Task 1: Search for sources 3.2s (3 steps)
|
|
7
|
+
* ├─ ◐ Task 2: Analyze findings
|
|
8
|
+
* │ ├─ ✓ google_search("topic")
|
|
9
|
+
* │ │ → Found 5 results
|
|
10
|
+
* │ └─ ◐ llm_call
|
|
11
|
+
* │ → The key themes emerging from...
|
|
12
|
+
* └─ ○ Task 3: Write summary waiting
|
|
13
|
+
*/
|
|
14
|
+
import React from "react";
|
|
15
|
+
import type { ExecutionState } from "./useExecutionState.js";
|
|
16
|
+
export declare function ExecutionTree({ state, treeActive, }: {
|
|
17
|
+
state: ExecutionState;
|
|
18
|
+
treeActive: boolean;
|
|
19
|
+
}): React.JSX.Element | null;
|
|
20
|
+
//# sourceMappingURL=ExecutionTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionTree.d.ts","sourceRoot":"","sources":["../src/ExecutionTree.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,wBAAwB,CAAC;AAmMnF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,UAAU,GACX,EAAE;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB,4BA0CA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import Spinner from "ink-spinner";
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Icons
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
const ICONS = {
|
|
8
|
+
planned: "◇",
|
|
9
|
+
waiting: "○",
|
|
10
|
+
running: "◐",
|
|
11
|
+
completed: "✓",
|
|
12
|
+
failed: "✗",
|
|
13
|
+
plan: "◆",
|
|
14
|
+
};
|
|
15
|
+
const STATUS_COLORS = {
|
|
16
|
+
planned: "cyan",
|
|
17
|
+
waiting: "gray",
|
|
18
|
+
running: "yellow",
|
|
19
|
+
completed: "green",
|
|
20
|
+
failed: "red",
|
|
21
|
+
};
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Helpers
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
function formatDuration(seconds) {
|
|
26
|
+
if (seconds === undefined)
|
|
27
|
+
return "";
|
|
28
|
+
if (seconds < 0.1)
|
|
29
|
+
return "<0.1s";
|
|
30
|
+
if (seconds < 60)
|
|
31
|
+
return `${seconds.toFixed(1)}s`;
|
|
32
|
+
const mins = Math.floor(seconds / 60);
|
|
33
|
+
const secs = seconds % 60;
|
|
34
|
+
return `${mins}m${secs.toFixed(0)}s`;
|
|
35
|
+
}
|
|
36
|
+
function truncateOutput(output, maxLines = 2) {
|
|
37
|
+
if (!output)
|
|
38
|
+
return "";
|
|
39
|
+
const lines = output.trim().split("\n");
|
|
40
|
+
const truncated = lines.slice(-maxLines);
|
|
41
|
+
let result = truncated.join("\n").slice(0, 120);
|
|
42
|
+
if (lines.length > maxLines)
|
|
43
|
+
result = "..." + result;
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Step rendering
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
function StepNode({ step, isLast, parentPrefix, }) {
|
|
50
|
+
const branch = isLast ? "└─ " : "├─ ";
|
|
51
|
+
const cont = isLast ? " " : "│ ";
|
|
52
|
+
const color = STATUS_COLORS[step.status];
|
|
53
|
+
const icon = ICONS[step.status];
|
|
54
|
+
// Display name: prefer tool call info, fall back to step name
|
|
55
|
+
const displayName = step.toolName
|
|
56
|
+
? step.toolArgs
|
|
57
|
+
? `${step.toolName}(${step.toolArgs.slice(0, 50)})`
|
|
58
|
+
: step.toolName
|
|
59
|
+
: step.name.slice(0, 60);
|
|
60
|
+
const duration = step.duration !== undefined ? ` ${formatDuration(step.duration)}` : "";
|
|
61
|
+
const outputPreview = truncateOutput(step.output);
|
|
62
|
+
const errorPreview = step.error ? step.error.slice(0, 120) : "";
|
|
63
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { color: "gray", dimColor: true, children: [parentPrefix, branch] }), step.status === "running" ? (_jsxs(Text, { color: color, children: [_jsx(Spinner, { type: "dots" }), " "] })) : (_jsxs(Text, { color: color, children: [icon, " "] })), _jsx(Text, { color: color, children: displayName }), duration ? _jsx(Text, { color: "gray", dimColor: true, children: duration }) : null] }), outputPreview && step.status === "running" ? (_jsx(Box, { children: _jsxs(Text, { color: "gray", dimColor: true, children: [parentPrefix, cont, " ", "→ ", outputPreview] }) })) : null, errorPreview ? (_jsx(Box, { children: _jsxs(Text, { color: "red", children: [parentPrefix, cont, " ", "✗ ", errorPreview] }) })) : null] }));
|
|
64
|
+
}
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
// Task rendering
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
function TaskNode({ task, isLast, isSelected, treeActive, }) {
|
|
69
|
+
const branch = isLast ? "└─ " : "├─ ";
|
|
70
|
+
const cont = isLast ? " " : "│ ";
|
|
71
|
+
const color = STATUS_COLORS[task.status];
|
|
72
|
+
const icon = ICONS[task.status];
|
|
73
|
+
const duration = task.duration !== undefined ? formatDuration(task.duration) : "";
|
|
74
|
+
const stepCount = task.steps.length;
|
|
75
|
+
const completedSteps = task.steps.filter((s) => s.status === "completed").length;
|
|
76
|
+
// Collapsed view for completed tasks
|
|
77
|
+
if (!task.expanded) {
|
|
78
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: "gray", dimColor: true, children: branch }), treeActive && isSelected ? _jsx(Text, { color: "cyan", bold: true, children: "› " }) : null, task.status === "running" ? (_jsxs(Text, { color: color, children: [_jsx(Spinner, { type: "dots" }), " "] })) : (_jsxs(Text, { color: color, children: [icon, " "] })), _jsx(Text, { color: color, bold: true, children: task.name }), duration ? _jsxs(Text, { color: "gray", dimColor: true, children: [" ", duration] }) : null, _jsxs(Text, { color: "gray", dimColor: true, children: [" (", completedSteps, "/", stepCount, " steps)"] })] }));
|
|
79
|
+
}
|
|
80
|
+
// Expanded view
|
|
81
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", dimColor: true, children: branch }), treeActive && isSelected ? _jsx(Text, { color: "cyan", bold: true, children: "› " }) : null, task.status === "running" ? (_jsxs(Text, { color: color, children: [_jsx(Spinner, { type: "dots" }), " "] })) : (_jsxs(Text, { color: color, children: [icon, " "] })), _jsx(Text, { color: color, bold: true, children: task.name }), task.status === "waiting" ? (_jsx(Text, { color: "gray", dimColor: true, children: " waiting" })) : null] }), task.steps.map((step, i) => (_jsx(StepNode, { step: step, isLast: i === task.steps.length - 1, parentPrefix: cont }, step.id)))] }));
|
|
82
|
+
}
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
// Planning phase
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
function PlanningPhase({ content }) {
|
|
87
|
+
return (_jsxs(Box, { children: [_jsxs(Text, { color: "yellow", children: [_jsx(Spinner, { type: "dots" }), " "] }), _jsx(Text, { color: "yellow", children: "planning" }), content ? (_jsxs(Text, { color: "gray", dimColor: true, children: [" ", content.slice(0, 60)] })) : null] }));
|
|
88
|
+
}
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// Main tree
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
export function ExecutionTree({ state, treeActive, }) {
|
|
93
|
+
if (state.phase === "idle")
|
|
94
|
+
return null;
|
|
95
|
+
const maxRows = Math.max((process.stdout.rows ?? 24) - 4, 8);
|
|
96
|
+
const completedCount = state.tasks.filter((t) => t.status === "completed").length;
|
|
97
|
+
const plannedCount = state.tasks.filter((t) => t.status === "planned").length;
|
|
98
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [state.phase === "planning" ? (_jsx(PlanningPhase, { content: state.planningContent })) : null, state.tasks.length > 0 ? (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", children: [ICONS.plan, " "] }), _jsx(Text, { color: "cyan", bold: true, children: "Plan" }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", "(", completedCount, "/", state.tasks.length, " tasks", plannedCount > 0 ? `, ${plannedCount} planning` : "", ")"] })] }), _jsx(Box, { flexDirection: "column", children: state.tasks.slice(0, maxRows).map((task, i) => (_jsx(TaskNode, { task: task, isLast: i === state.tasks.length - 1, isSelected: i === state.selectedIndex, treeActive: treeActive }, task.id))) })] })) : null] }));
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=ExecutionTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionTree.js","sourceRoot":"","sources":["../src/ExecutionTree.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's default agent toolbelt: the belt a server chat turn assembles in
|
|
3
|
+
* `packages/websocket/src/session/chat-turn.ts`, so a local turn reaches the
|
|
4
|
+
* same tools. `buildFullRegistry` also installs the sandbox pack catalog, so
|
|
5
|
+
* the session allowlist can admit the DSL, flow, Fabric and timeline packs.
|
|
6
|
+
*
|
|
7
|
+
* The server additionally offers `run_node`, the user's external MCP servers
|
|
8
|
+
* and Google Workspace. Those are built from server-only state.
|
|
9
|
+
*/
|
|
10
|
+
import type { BaseProvider } from "@nodetool-ai/runtime";
|
|
11
|
+
import type { NodeRegistry } from "@nodetool-ai/node-sdk";
|
|
12
|
+
import { type Tool } from "@nodetool-ai/agents";
|
|
13
|
+
/** Every default tool, de-duplicated by name with the first one winning. */
|
|
14
|
+
export declare function buildCliToolbelt(providers: Record<string, BaseProvider>, registry?: NodeRegistry): Tool[];
|
|
15
|
+
//# sourceMappingURL=agent-toolbelt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-toolbelt.d.ts","sourceRoot":"","sources":["../src/agent-toolbelt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAML,KAAK,IAAI,EACV,MAAM,qBAAqB,CAAC;AAG7B,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,QAAQ,CAAC,EAAE,YAAY,GACtB,IAAI,EAAE,CAaR"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's default agent toolbelt: the belt a server chat turn assembles in
|
|
3
|
+
* `packages/websocket/src/session/chat-turn.ts`, so a local turn reaches the
|
|
4
|
+
* same tools. `buildFullRegistry` also installs the sandbox pack catalog, so
|
|
5
|
+
* the session allowlist can admit the DSL, flow, Fabric and timeline packs.
|
|
6
|
+
*
|
|
7
|
+
* The server additionally offers `run_node`, the user's external MCP servers
|
|
8
|
+
* and Google Workspace. Those are built from server-only state.
|
|
9
|
+
*/
|
|
10
|
+
import { getAllMcpTools, getApifyTools, getBuiltinTools, getSerpApiTools, toolForCapabilityName } from "@nodetool-ai/agents";
|
|
11
|
+
import { mcpToolHostDeps } from "@nodetool-ai/websocket";
|
|
12
|
+
/** Every default tool, de-duplicated by name with the first one winning. */
|
|
13
|
+
export function buildCliToolbelt(providers, registry) {
|
|
14
|
+
const byName = new Map();
|
|
15
|
+
for (const tool of [
|
|
16
|
+
...getBuiltinTools(),
|
|
17
|
+
...getApifyTools(),
|
|
18
|
+
...getSerpApiTools(),
|
|
19
|
+
...getAllMcpTools({ providers, registry, ...mcpToolHostDeps() }),
|
|
20
|
+
toolForCapabilityName("list_collections"),
|
|
21
|
+
toolForCapabilityName("query_collection")
|
|
22
|
+
]) {
|
|
23
|
+
if (!byName.has(tool.name))
|
|
24
|
+
byName.set(tool.name, tool);
|
|
25
|
+
}
|
|
26
|
+
return [...byName.values()];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=agent-toolbelt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-toolbelt.js","sourceRoot":"","sources":["../src/agent-toolbelt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,qBAAqB,EAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAC9B,SAAuC,EACvC,QAAuB;IAEvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI;QACjB,GAAG,eAAe,EAAE;QACpB,GAAG,aAAa,EAAE;QAClB,GAAG,eAAe,EAAE;QACpB,GAAG,cAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,EAAE,CAAC;QAChE,qBAAqB,CAAC,kBAAkB,CAAC;QACzC,qBAAqB,CAAC,kBAAkB,CAAC;KAC1C,EAAE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { EventEmitter } from "node:events";
|
|
3
|
+
import { type PermissionMode } from "@nodetool-ai/agents";
|
|
4
|
+
import { ChatSessionStore } from "./chat-sessions.js";
|
|
5
|
+
export type { ChatMessage } from "./terminal-screen.js";
|
|
6
|
+
export interface AppProps {
|
|
7
|
+
readonly mouseEvents?: EventEmitter;
|
|
8
|
+
readonly initialProvider: string;
|
|
9
|
+
readonly initialModel: string;
|
|
10
|
+
/** `--tools`: narrows the belt to these names. Unset offers the full belt. */
|
|
11
|
+
readonly enabledTools?: string[];
|
|
12
|
+
readonly workspaceDir: string;
|
|
13
|
+
readonly wsUrl?: string;
|
|
14
|
+
readonly registry?: import("@nodetool-ai/node-sdk").NodeRegistry;
|
|
15
|
+
readonly agentProviders?: Record<string, import("@nodetool-ai/runtime").BaseProvider>;
|
|
16
|
+
readonly costCap?: string;
|
|
17
|
+
readonly timeout?: string;
|
|
18
|
+
readonly permissionMode?: PermissionMode;
|
|
19
|
+
readonly enableReadOnlySearch?: boolean;
|
|
20
|
+
readonly resume?: string | boolean;
|
|
21
|
+
readonly sessionStore?: ChatSessionStore;
|
|
22
|
+
}
|
|
23
|
+
export declare const CHAT_COMMANDS: {
|
|
24
|
+
readonly "/help": "Commands and keyboard shortcuts";
|
|
25
|
+
readonly "/new": "Start a new conversation";
|
|
26
|
+
readonly "/clear": "Clear the screen, keep conversation context";
|
|
27
|
+
readonly "/compact": "Summarize retained context";
|
|
28
|
+
readonly "/model": "Choose a model";
|
|
29
|
+
readonly "/agent": "Inspect sub-agent threads: /agent [id|main]";
|
|
30
|
+
readonly "/mode": "Permissions: default, auto, plan";
|
|
31
|
+
readonly "/sessions": "Browse saved conversations";
|
|
32
|
+
readonly "/resume": "Resume a session: /resume <id>";
|
|
33
|
+
readonly "/export": "Save transcript: /export <path.md>";
|
|
34
|
+
readonly "/tools": "Show available tools";
|
|
35
|
+
readonly "/details": "Toggle tool arguments, code and diffs";
|
|
36
|
+
readonly "/exit": "Save and quit";
|
|
37
|
+
readonly "/quit": "Save and quit";
|
|
38
|
+
};
|
|
39
|
+
export declare function App({ initialProvider, initialModel, enabledTools, workspaceDir, wsUrl, registry, agentProviders, costCap, timeout, permissionMode, enableReadOnlySearch, resume, sessionStore, mouseEvents }: AppProps): React.ReactElement;
|
|
40
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAahD,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAuC7B,OAAO,EACL,gBAAgB,EAIjB,MAAM,oBAAoB,CAAC;AAI5B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,uBAAuB,EAAE,YAAY,CAAC;IACjE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAC9B,MAAM,EACN,OAAO,sBAAsB,EAAE,YAAY,CAC5C,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAED,eAAO,MAAM,aAAa;aACxB,OAAO,EAAE,iCAAiC;aAC1C,MAAM,EAAE,0BAA0B;aAClC,QAAQ,EAAE,6CAA6C;aACvD,UAAU,EAAE,4BAA4B;aACxC,QAAQ,EAAE,gBAAgB;aAC1B,QAAQ,EAAE,6CAA6C;aACvD,OAAO,EAAE,kCAAkC;aAC3C,WAAW,EAAE,4BAA4B;aACzC,SAAS,EAAE,gCAAgC;aAC3C,SAAS,EAAE,oCAAoC;aAC/C,QAAQ,EAAE,sBAAsB;aAChC,UAAU,EAAE,uCAAuC;aACnD,OAAO,EAAE,eAAe;aACxB,OAAO,EAAE,eAAe;CAChB,CAAC;AA0DX,wBAAgB,GAAG,CAAC,EAClB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,cAAc,EACd,OAAO,EACP,OAAO,EACP,cAA0B,EAC1B,oBAA2B,EAC3B,MAAM,EACN,YAAY,EACZ,WAAW,EACZ,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAkxC/B"}
|