@spenceriam/impulse 0.15.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 +194 -0
- package/dist/api/client.d.ts +53 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +271 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +7 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/stream.d.ts +98 -0
- package/dist/api/stream.d.ts.map +1 -0
- package/dist/api/stream.js +202 -0
- package/dist/api/stream.js.map +1 -0
- package/dist/api/types.d.ts +1353 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +143 -0
- package/dist/api/types.js.map +1 -0
- package/dist/bash.txt +28 -0
- package/dist/bus/bus.d.ts +21 -0
- package/dist/bus/bus.d.ts.map +1 -0
- package/dist/bus/bus.js +22 -0
- package/dist/bus/bus.js.map +1 -0
- package/dist/bus/events.d.ts +100 -0
- package/dist/bus/events.d.ts.map +1 -0
- package/dist/bus/events.js +45 -0
- package/dist/bus/events.js.map +1 -0
- package/dist/bus/index.d.ts +3 -0
- package/dist/bus/index.d.ts.map +1 -0
- package/dist/bus/index.js +3 -0
- package/dist/bus/index.js.map +1 -0
- package/dist/file-edit.txt +21 -0
- package/dist/file-read.txt +18 -0
- package/dist/file-write.txt +16 -0
- package/dist/glob.txt +19 -0
- package/dist/global.d.ts +8 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +14 -0
- package/dist/global.js.map +1 -0
- package/dist/grep.txt +20 -0
- package/dist/highlights-eq9cgrbb.scm +604 -0
- package/dist/highlights-ghv9g403.scm +205 -0
- package/dist/highlights-hk7bwhj4.scm +284 -0
- package/dist/highlights-r812a2qc.scm +150 -0
- package/dist/highlights-x6tmsnaa.scm +115 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62122 -0
- package/dist/index.js.map +1 -0
- package/dist/index.jsx +5 -0
- package/dist/index.jsx.map +1 -0
- package/dist/injections-73j83es3.scm +27 -0
- package/dist/input/at-refs.d.ts +42 -0
- package/dist/input/at-refs.d.ts.map +1 -0
- package/dist/input/at-refs.js +154 -0
- package/dist/input/at-refs.js.map +1 -0
- package/dist/input/history.d.ts +26 -0
- package/dist/input/history.d.ts.map +1 -0
- package/dist/input/history.js +109 -0
- package/dist/input/history.js.map +1 -0
- package/dist/input/index.d.ts +5 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +5 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/paste.d.ts +19 -0
- package/dist/input/paste.d.ts.map +1 -0
- package/dist/input/paste.js +75 -0
- package/dist/input/paste.js.map +1 -0
- package/dist/input/shortcuts.d.ts +6 -0
- package/dist/input/shortcuts.d.ts.map +1 -0
- package/dist/input/shortcuts.js +84 -0
- package/dist/input/shortcuts.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +51 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +158 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/types.d.ts +18 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +5 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/session/todo.d.ts +24 -0
- package/dist/session/todo.d.ts.map +1 -0
- package/dist/session/todo.js +39 -0
- package/dist/session/todo.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/storage.d.ts +13 -0
- package/dist/storage/storage.d.ts.map +1 -0
- package/dist/storage/storage.js +84 -0
- package/dist/storage/storage.js.map +1 -0
- package/dist/task.txt +26 -0
- package/dist/todo-read.txt +14 -0
- package/dist/todo-write.txt +166 -0
- package/dist/tools/bash.d.ts +22 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +70 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/file-edit.d.ts +22 -0
- package/dist/tools/file-edit.d.ts.map +1 -0
- package/dist/tools/file-edit.js +67 -0
- package/dist/tools/file-edit.js.map +1 -0
- package/dist/tools/file-read.d.ts +19 -0
- package/dist/tools/file-read.d.ts.map +1 -0
- package/dist/tools/file-read.js +70 -0
- package/dist/tools/file-read.js.map +1 -0
- package/dist/tools/file-write.d.ts +16 -0
- package/dist/tools/file-write.d.ts.map +1 -0
- package/dist/tools/file-write.js +45 -0
- package/dist/tools/file-write.js.map +1 -0
- package/dist/tools/glob.d.ts +16 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +45 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +19 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +65 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +22 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +75 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/task.d.ts +19 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +51 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todo-read.d.ts +7 -0
- package/dist/tools/todo-read.d.ts.map +1 -0
- package/dist/tools/todo-read.js +56 -0
- package/dist/tools/todo-read.js.map +1 -0
- package/dist/tools/todo-write.d.ts +38 -0
- package/dist/tools/todo-write.d.ts.map +1 -0
- package/dist/tools/todo-write.js +40 -0
- package/dist/tools/todo-write.js.map +1 -0
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
- package/dist/ui/App.d.ts +6 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.jsx +37 -0
- package/dist/ui/App.jsx.map +1 -0
- package/dist/ui/components/Autocomplete.d.ts +24 -0
- package/dist/ui/components/Autocomplete.d.ts.map +1 -0
- package/dist/ui/components/Autocomplete.jsx +67 -0
- package/dist/ui/components/Autocomplete.jsx.map +1 -0
- package/dist/ui/components/ChatView.d.ts +14 -0
- package/dist/ui/components/ChatView.d.ts.map +1 -0
- package/dist/ui/components/ChatView.jsx +11 -0
- package/dist/ui/components/ChatView.jsx.map +1 -0
- package/dist/ui/components/InputArea.d.ts +18 -0
- package/dist/ui/components/InputArea.d.ts.map +1 -0
- package/dist/ui/components/InputArea.jsx +35 -0
- package/dist/ui/components/InputArea.jsx.map +1 -0
- package/dist/ui/components/MessageBlock.d.ts +21 -0
- package/dist/ui/components/MessageBlock.d.ts.map +1 -0
- package/dist/ui/components/MessageBlock.jsx +94 -0
- package/dist/ui/components/MessageBlock.jsx.map +1 -0
- package/dist/ui/components/Overlay.d.ts +28 -0
- package/dist/ui/components/Overlay.d.ts.map +1 -0
- package/dist/ui/components/Overlay.jsx +102 -0
- package/dist/ui/components/Overlay.jsx.map +1 -0
- package/dist/ui/components/ProgressBar.d.ts +9 -0
- package/dist/ui/components/ProgressBar.d.ts.map +1 -0
- package/dist/ui/components/ProgressBar.jsx +17 -0
- package/dist/ui/components/ProgressBar.jsx.map +1 -0
- package/dist/ui/components/Sidebar.d.ts +22 -0
- package/dist/ui/components/Sidebar.d.ts.map +1 -0
- package/dist/ui/components/Sidebar.jsx +96 -0
- package/dist/ui/components/Sidebar.jsx.map +1 -0
- package/dist/ui/components/StatusLine.d.ts +6 -0
- package/dist/ui/components/StatusLine.d.ts.map +1 -0
- package/dist/ui/components/StatusLine.jsx +32 -0
- package/dist/ui/components/StatusLine.jsx.map +1 -0
- package/dist/ui/components/ThinkingBlock.d.ts +15 -0
- package/dist/ui/components/ThinkingBlock.d.ts.map +1 -0
- package/dist/ui/components/ThinkingBlock.jsx +33 -0
- package/dist/ui/components/ThinkingBlock.jsx.map +1 -0
- package/dist/ui/components/TodoItem.d.ts +22 -0
- package/dist/ui/components/TodoItem.d.ts.map +1 -0
- package/dist/ui/components/TodoItem.jsx +11 -0
- package/dist/ui/components/TodoItem.jsx.map +1 -0
- package/dist/ui/components/ToolBlock.d.ts +27 -0
- package/dist/ui/components/ToolBlock.d.ts.map +1 -0
- package/dist/ui/components/ToolBlock.jsx +76 -0
- package/dist/ui/components/ToolBlock.jsx.map +1 -0
- package/dist/ui/components/index.d.ts +12 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +12 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/context/index.d.ts +4 -0
- package/dist/ui/context/index.d.ts.map +1 -0
- package/dist/ui/context/index.js +4 -0
- package/dist/ui/context/index.js.map +1 -0
- package/dist/ui/context/mode.d.ts +24 -0
- package/dist/ui/context/mode.d.ts.map +1 -0
- package/dist/ui/context/mode.jsx +53 -0
- package/dist/ui/context/mode.jsx.map +1 -0
- package/dist/ui/context/session.d.ts +43 -0
- package/dist/ui/context/session.d.ts.map +1 -0
- package/dist/ui/context/session.jsx +63 -0
- package/dist/ui/context/session.jsx.map +1 -0
- package/dist/ui/context/todo.d.ts +32 -0
- package/dist/ui/context/todo.d.ts.map +1 -0
- package/dist/ui/context/todo.jsx +75 -0
- package/dist/ui/context/todo.jsx.map +1 -0
- package/dist/ui/design.d.ts +182 -0
- package/dist/ui/design.d.ts.map +1 -0
- package/dist/ui/design.js +189 -0
- package/dist/ui/design.js.map +1 -0
- package/dist/ui/index.d.ts +4 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/util/config.d.ts +22 -0
- package/dist/util/config.d.ts.map +1 -0
- package/dist/util/config.js +55 -0
- package/dist/util/config.js.map +1 -0
- package/dist/util/instructions.d.ts +39 -0
- package/dist/util/instructions.d.ts.map +1 -0
- package/dist/util/instructions.js +96 -0
- package/dist/util/instructions.js.map +1 -0
- package/dist/util/lock.d.ts +18 -0
- package/dist/util/lock.d.ts.map +1 -0
- package/dist/util/lock.js +65 -0
- package/dist/util/lock.js.map +1 -0
- package/dist/util/logger.d.ts +8 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +81 -0
- package/dist/util/logger.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Tool } from "./registry";
|
|
3
|
+
import { readFileSync } from "fs";
|
|
4
|
+
const DESCRIPTION = readFileSync(new URL("./grep.txt", import.meta.url), "utf-8");
|
|
5
|
+
const GrepSchema = z.object({
|
|
6
|
+
pattern: z.string(),
|
|
7
|
+
path: z.string(),
|
|
8
|
+
include: z.string(),
|
|
9
|
+
});
|
|
10
|
+
export const grepTool = Tool.define("grep", DESCRIPTION, GrepSchema, async (input) => {
|
|
11
|
+
try {
|
|
12
|
+
const matches = [];
|
|
13
|
+
const searchPath = input.path ?? ".";
|
|
14
|
+
const includeArgs = input.include ? `-g "${input.include}"` : "";
|
|
15
|
+
const spawnOptions = {
|
|
16
|
+
cmd: ["rg", input.pattern, searchPath, includeArgs],
|
|
17
|
+
env: process.env,
|
|
18
|
+
};
|
|
19
|
+
const result = Bun.spawnSync(spawnOptions);
|
|
20
|
+
const stdout = (result.stdout?.toString("utf-8") ?? "");
|
|
21
|
+
const outputLines = stdout.split("\n");
|
|
22
|
+
const fileLines = outputLines.filter((line) => line.trim() !== "");
|
|
23
|
+
for (const line of fileLines) {
|
|
24
|
+
if (input.include && !line.endsWith(input.include)) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const match = line.match(/^(.*?)(\d+):(.*)$/);
|
|
28
|
+
if (match) {
|
|
29
|
+
const [, file, lineNum, content] = match;
|
|
30
|
+
matches.push({ file, line: parseInt(lineNum, 10), content });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const sortedMatches = matches.sort((a, b) => {
|
|
34
|
+
try {
|
|
35
|
+
const mtimeA = Bun.file(a.file).lastModified;
|
|
36
|
+
const mtimeB = Bun.file(b.file).lastModified;
|
|
37
|
+
return mtimeB - mtimeA;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const grepOutputLines = sortedMatches.map((match) => `${match.file}:${match.line}: ${match.content}`);
|
|
44
|
+
return {
|
|
45
|
+
success: true,
|
|
46
|
+
output: grepOutputLines.join("\n"),
|
|
47
|
+
metadata: {
|
|
48
|
+
count: sortedMatches.length,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof Error) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
output: error.message,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
output: String(error),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=grep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./registry";
|
|
2
|
+
export { fileRead } from "./file-read";
|
|
3
|
+
export { fileWrite } from "./file-write";
|
|
4
|
+
export { fileEdit } from "./file-edit";
|
|
5
|
+
export { globTool } from "./glob";
|
|
6
|
+
export { grepTool } from "./grep";
|
|
7
|
+
export { bashTool } from "./bash";
|
|
8
|
+
export { todoWrite } from "./todo-write";
|
|
9
|
+
export { todoRead } from "./todo-read";
|
|
10
|
+
export { taskTool } from "./task";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./registry";
|
|
2
|
+
export { fileRead } from "./file-read";
|
|
3
|
+
export { fileWrite } from "./file-write";
|
|
4
|
+
export { fileEdit } from "./file-edit";
|
|
5
|
+
export { globTool } from "./glob";
|
|
6
|
+
export { grepTool } from "./grep";
|
|
7
|
+
export { bashTool } from "./bash";
|
|
8
|
+
export { todoWrite } from "./todo-write";
|
|
9
|
+
export { todoRead } from "./todo-read";
|
|
10
|
+
export { taskTool } from "./task";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export interface ToolResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
output: string;
|
|
5
|
+
metadata?: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
export interface Tool<TInput = unknown> {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
schema: z.ZodType<TInput>;
|
|
11
|
+
handler: (input: TInput) => Promise<ToolResult>;
|
|
12
|
+
timeout: number | undefined;
|
|
13
|
+
}
|
|
14
|
+
export declare namespace Tool {
|
|
15
|
+
function define<TInput>(name: string, description: string, schema: z.ZodType<TInput>, handler: (input: TInput) => Promise<ToolResult>, options?: {
|
|
16
|
+
timeout?: number;
|
|
17
|
+
}): Tool<TInput>;
|
|
18
|
+
function get(name: string): Tool | undefined;
|
|
19
|
+
function getAll(): Tool[];
|
|
20
|
+
function execute<TInput>(name: string, input: unknown): Promise<ToolResult>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,IAAI,CAAC,MAAM,GAAG,OAAO;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAID,yBAAiB,IAAI,CAAC;IACpB,SAAgB,MAAM,CAAC,MAAM,EAC3B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,EAC/C,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,IAAI,CAAC,MAAM,CAAC,CAWd;IAED,SAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAElD;IAED,SAAgB,MAAM,IAAI,IAAI,EAAE,CAE/B;IAED,SAAsB,OAAO,CAAC,MAAM,EAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CA6CrB;CACF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const tools = new Map();
|
|
3
|
+
export var Tool;
|
|
4
|
+
(function (Tool) {
|
|
5
|
+
function define(name, description, schema, handler, options) {
|
|
6
|
+
const tool = {
|
|
7
|
+
name,
|
|
8
|
+
description,
|
|
9
|
+
schema,
|
|
10
|
+
handler,
|
|
11
|
+
timeout: options?.timeout,
|
|
12
|
+
};
|
|
13
|
+
tools.set(name, tool);
|
|
14
|
+
return tool;
|
|
15
|
+
}
|
|
16
|
+
Tool.define = define;
|
|
17
|
+
function get(name) {
|
|
18
|
+
return tools.get(name);
|
|
19
|
+
}
|
|
20
|
+
Tool.get = get;
|
|
21
|
+
function getAll() {
|
|
22
|
+
return Array.from(tools.values());
|
|
23
|
+
}
|
|
24
|
+
Tool.getAll = getAll;
|
|
25
|
+
async function execute(name, input) {
|
|
26
|
+
const tool = tools.get(name);
|
|
27
|
+
if (!tool) {
|
|
28
|
+
return {
|
|
29
|
+
success: false,
|
|
30
|
+
output: `Tool not found: ${name}`,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const validated = tool.schema.parse(input);
|
|
35
|
+
if (tool.timeout) {
|
|
36
|
+
const result = await withTimeout(tool.handler(validated), tool.timeout);
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const result = await tool.handler(validated);
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error instanceof z.ZodError) {
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
output: `Invalid parameters: ${error.errors
|
|
49
|
+
.map((e) => `${e.path.join(".")}: ${e.message}`)
|
|
50
|
+
.join(", ")}`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (error instanceof Error) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
output: error.message,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
output: String(error),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
Tool.execute = execute;
|
|
66
|
+
})(Tool || (Tool = {}));
|
|
67
|
+
async function withTimeout(promise, timeoutMs) {
|
|
68
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
reject(new Error(`Tool execution timed out after ${timeoutMs}ms`));
|
|
71
|
+
}, timeoutMs);
|
|
72
|
+
});
|
|
73
|
+
return Promise.race([promise, timeoutPromise]);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Tool } from "./registry";
|
|
3
|
+
declare const TaskSchema: z.ZodObject<{
|
|
4
|
+
prompt: z.ZodString;
|
|
5
|
+
description: z.ZodString;
|
|
6
|
+
subagent_type: z.ZodEnum<["explore", "general"]>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
description: string;
|
|
9
|
+
prompt: string;
|
|
10
|
+
subagent_type: "explore" | "general";
|
|
11
|
+
}, {
|
|
12
|
+
description: string;
|
|
13
|
+
prompt: string;
|
|
14
|
+
subagent_type: "explore" | "general";
|
|
15
|
+
}>;
|
|
16
|
+
type TaskInput = z.infer<typeof TaskSchema>;
|
|
17
|
+
export declare const taskTool: Tool<TaskInput>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/tools/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAQ9C,QAAA,MAAM,UAAU;;;;;;;;;;;;EAId,CAAC;AAEH,KAAK,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE5C,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,CA8CpC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Tool } from "./registry";
|
|
3
|
+
import { readFileSync } from "fs";
|
|
4
|
+
const DESCRIPTION = readFileSync(new URL("./task.txt", import.meta.url), "utf-8");
|
|
5
|
+
const TaskSchema = z.object({
|
|
6
|
+
prompt: z.string(),
|
|
7
|
+
description: z.string(),
|
|
8
|
+
subagent_type: z.enum(["explore", "general"]),
|
|
9
|
+
});
|
|
10
|
+
export const taskTool = Tool.define("task", DESCRIPTION, TaskSchema, async (input) => {
|
|
11
|
+
try {
|
|
12
|
+
let result;
|
|
13
|
+
if (input.subagent_type === "explore") {
|
|
14
|
+
result = `[Explore Agent]
|
|
15
|
+
Task: ${input.description}
|
|
16
|
+
|
|
17
|
+
${input.prompt}
|
|
18
|
+
|
|
19
|
+
Note: This would launch the explore subagent for fast codebase search and analysis.`;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
result = `[General Agent]
|
|
23
|
+
Task: ${input.description}
|
|
24
|
+
|
|
25
|
+
${input.prompt}
|
|
26
|
+
|
|
27
|
+
Note: This would launch the general agent for complex multi-step tasks that can be parallelized.`;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
success: true,
|
|
31
|
+
output: result,
|
|
32
|
+
metadata: {
|
|
33
|
+
agentType: input.subagent_type,
|
|
34
|
+
description: input.description,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof Error) {
|
|
40
|
+
return {
|
|
41
|
+
success: false,
|
|
42
|
+
output: error.message,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
output: String(error),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/tools/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,MAAM,WAAW,GAAG,YAAY,CAC9B,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACtC,OAAO,CACR,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CAC9C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAoB,IAAI,CAAC,MAAM,CAClD,MAAM,EACN,WAAW,EACX,UAAU,EACV,KAAK,EAAE,KAAgB,EAAuB,EAAE;IAC9C,IAAI,CAAC;QACH,IAAI,MAAc,CAAC;QAEnB,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,GAAG;QACT,KAAK,CAAC,WAAW;;EAEvB,KAAK,CAAC,MAAM;;oFAEsE,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG;QACT,KAAK,CAAC,WAAW;;EAEvB,KAAK,CAAC,MAAM;;iGAEmF,CAAC;QAC5F,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE;gBACR,SAAS,EAAE,KAAK,CAAC,aAAa;gBAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;SACtB,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Tool } from "./registry";
|
|
3
|
+
declare const TodoReadSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
4
|
+
type TodoReadInput = z.infer<typeof TodoReadSchema>;
|
|
5
|
+
export declare const todoRead: Tool<TodoReadInput>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=todo-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-read.d.ts","sourceRoot":"","sources":["../../src/tools/todo-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAS9C,QAAA,MAAM,cAAc,gDAAe,CAAC;AAEpC,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpD,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,aAAa,CAgExC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Tool } from "./registry";
|
|
3
|
+
import { Todo } from "../session/todo";
|
|
4
|
+
import { readFileSync } from "fs";
|
|
5
|
+
const DESCRIPTION = readFileSync(new URL("./todo-read.txt", import.meta.url), "utf-8");
|
|
6
|
+
const TodoReadSchema = z.object({});
|
|
7
|
+
export const todoRead = Tool.define("todo_read", DESCRIPTION, TodoReadSchema, async () => {
|
|
8
|
+
try {
|
|
9
|
+
const todos = await Todo.get();
|
|
10
|
+
if (todos.length === 0) {
|
|
11
|
+
return {
|
|
12
|
+
success: true,
|
|
13
|
+
output: "No todos found for this session.",
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const todoLines = todos.map((todo) => {
|
|
17
|
+
const statusIcon = {
|
|
18
|
+
pending: "[ ]",
|
|
19
|
+
in_progress: "[>]",
|
|
20
|
+
completed: "[x]",
|
|
21
|
+
cancelled: "[-]",
|
|
22
|
+
}[todo.status];
|
|
23
|
+
return `${statusIcon} ${todo.content}`;
|
|
24
|
+
});
|
|
25
|
+
const groupedTodos = todos.reduce((acc, todo) => {
|
|
26
|
+
const status = todo.status;
|
|
27
|
+
if (!acc[status]) {
|
|
28
|
+
acc[status] = [];
|
|
29
|
+
}
|
|
30
|
+
acc[status].push(todo);
|
|
31
|
+
return acc;
|
|
32
|
+
}, {});
|
|
33
|
+
const statusCounts = Object.entries(groupedTodos).map(([status, items]) => `${status}: ${items.length}`);
|
|
34
|
+
return {
|
|
35
|
+
success: true,
|
|
36
|
+
output: `${statusCounts.join(" | ")}\n${todoLines.join("\n")}`,
|
|
37
|
+
metadata: {
|
|
38
|
+
total: todos.length,
|
|
39
|
+
byStatus: statusCounts,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof Error) {
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
output: error.message,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
success: false,
|
|
52
|
+
output: String(error),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=todo-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-read.js","sourceRoot":"","sources":["../../src/tools/todo-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,MAAM,WAAW,GAAG,YAAY,CAC9B,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC3C,OAAO,CACR,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIpC,MAAM,CAAC,MAAM,QAAQ,GAAwB,IAAI,CAAC,MAAM,CACtD,WAAW,EACX,WAAW,EACX,cAAc,EACd,KAAK,IAAyB,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QAE/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,kCAAkC;aAC3C,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,MAAM,UAAU,GAAW;gBACzB,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,KAAK;aACjB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEf,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAA4B,CAC7B,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CACnD,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAClD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9D,QAAQ,EAAE;gBACR,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,QAAQ,EAAE,YAAY;aACvB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;SACtB,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Tool } from "./registry";
|
|
3
|
+
declare const TodoWriteSchema: z.ZodObject<{
|
|
4
|
+
todos: z.ZodArray<z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
content: z.ZodString;
|
|
7
|
+
status: z.ZodEnum<["pending", "in_progress", "completed", "cancelled"]>;
|
|
8
|
+
priority: z.ZodEnum<["high", "medium", "low"]>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
status: "pending" | "in_progress" | "completed" | "cancelled";
|
|
11
|
+
id: string;
|
|
12
|
+
content: string;
|
|
13
|
+
priority: "low" | "high" | "medium";
|
|
14
|
+
}, {
|
|
15
|
+
status: "pending" | "in_progress" | "completed" | "cancelled";
|
|
16
|
+
id: string;
|
|
17
|
+
content: string;
|
|
18
|
+
priority: "low" | "high" | "medium";
|
|
19
|
+
}>, "many">;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
todos: {
|
|
22
|
+
status: "pending" | "in_progress" | "completed" | "cancelled";
|
|
23
|
+
id: string;
|
|
24
|
+
content: string;
|
|
25
|
+
priority: "low" | "high" | "medium";
|
|
26
|
+
}[];
|
|
27
|
+
}, {
|
|
28
|
+
todos: {
|
|
29
|
+
status: "pending" | "in_progress" | "completed" | "cancelled";
|
|
30
|
+
id: string;
|
|
31
|
+
content: string;
|
|
32
|
+
priority: "low" | "high" | "medium";
|
|
33
|
+
}[];
|
|
34
|
+
}>;
|
|
35
|
+
type TodoWriteInput = z.infer<typeof TodoWriteSchema>;
|
|
36
|
+
export declare const todoWrite: Tool<TodoWriteInput>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=todo-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-write.d.ts","sourceRoot":"","sources":["../../src/tools/todo-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAS9C,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAEtD,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,cAAc,CAkC1C,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Tool } from "./registry";
|
|
3
|
+
import { Todo } from "../session/todo";
|
|
4
|
+
import { readFileSync } from "fs";
|
|
5
|
+
const DESCRIPTION = readFileSync(new URL("./todo-write.txt", import.meta.url), "utf-8");
|
|
6
|
+
const TodoWriteSchema = z.object({
|
|
7
|
+
todos: z.array(z.object({
|
|
8
|
+
id: z.string(),
|
|
9
|
+
content: z.string(),
|
|
10
|
+
status: z.enum(["pending", "in_progress", "completed", "cancelled"]),
|
|
11
|
+
priority: z.enum(["high", "medium", "low"]),
|
|
12
|
+
})),
|
|
13
|
+
});
|
|
14
|
+
export const todoWrite = Tool.define("todo_write", DESCRIPTION, TodoWriteSchema, async (input) => {
|
|
15
|
+
try {
|
|
16
|
+
await Todo.update(input.todos);
|
|
17
|
+
const incompleteCount = input.todos.filter((t) => t.status !== "completed" && t.status !== "cancelled").length;
|
|
18
|
+
return {
|
|
19
|
+
success: true,
|
|
20
|
+
output: `Todo list updated. ${incompleteCount} tasks remaining.`,
|
|
21
|
+
metadata: {
|
|
22
|
+
total: input.todos.length,
|
|
23
|
+
remaining: incompleteCount,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (error instanceof Error) {
|
|
29
|
+
return {
|
|
30
|
+
success: false,
|
|
31
|
+
output: error.message,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
output: String(error),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=todo-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-write.js","sourceRoot":"","sources":["../../src/tools/todo-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,MAAM,WAAW,GAAG,YAAY,CAC9B,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC5C,OAAO,CACR,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACpE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC5C,CAAC,CAAC;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,SAAS,GAAyB,IAAI,CAAC,MAAM,CACxD,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,EAAE,KAAqB,EAAuB,EAAE;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;QAEzC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAC5D,CAAC,MAAM,CAAC;QAET,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,sBAAsB,eAAe,mBAAmB;YAChE,QAAQ,EAAE;gBACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;gBACzB,SAAS,EAAE,eAAe;aAC3B;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;SACtB,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/ui/App.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,wBAAgB,GAAG,QAmClB"}
|
package/dist/ui/App.jsx
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { render, useRenderer, useKeyboard } from "@opentui/solid";
|
|
2
|
+
import { StatusLine, InputArea, ChatView } from "./components";
|
|
3
|
+
/**
|
|
4
|
+
* App Component
|
|
5
|
+
* Root OpenTUI component with full-screen layout and exit handling
|
|
6
|
+
*/
|
|
7
|
+
export function App() {
|
|
8
|
+
const renderer = useRenderer();
|
|
9
|
+
const mode = "AUTO";
|
|
10
|
+
const thinking = true;
|
|
11
|
+
const messages = [
|
|
12
|
+
{ id: "1", role: "user", content: "Hello, can you help me?" },
|
|
13
|
+
{ id: "2", role: "assistant", content: "Of course! What would you like help with?" },
|
|
14
|
+
];
|
|
15
|
+
let ctrlCCount = 0;
|
|
16
|
+
useKeyboard((key) => {
|
|
17
|
+
if (key.ctrl && key.name === "c") {
|
|
18
|
+
ctrlCCount++;
|
|
19
|
+
if (ctrlCCount >= 2) {
|
|
20
|
+
renderer.destroy();
|
|
21
|
+
}
|
|
22
|
+
setTimeout(() => {
|
|
23
|
+
ctrlCCount = 0;
|
|
24
|
+
}, 500);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const handleSubmit = (value) => {
|
|
28
|
+
console.log("Submitted:", value);
|
|
29
|
+
};
|
|
30
|
+
return (<box flexDirection="column" width="100%" height="100%">
|
|
31
|
+
<ChatView messages={messages}/>
|
|
32
|
+
<InputArea mode={mode} thinking={thinking} onSubmit={handleSubmit}/>
|
|
33
|
+
<StatusLine />
|
|
34
|
+
</box>);
|
|
35
|
+
}
|
|
36
|
+
render(() => <App />);
|
|
37
|
+
//# sourceMappingURL=App.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.jsx","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG/D;;;GAGG;AAEH,MAAM,UAAU,GAAG;IACjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAS,MAAM,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC;IAEtB,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,yBAAyB,EAAE;QACtE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,2CAA2C,EAAE;KAC9F,CAAC;IAEF,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,UAAU,EAAE,CAAC;YACb,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;YACD,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CACpD;MAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAC7B;MAAA,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAClE;MAAA,CAAC,UAAU,CAAC,AAAD,EACb;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,AAAD,EAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autocomplete Props
|
|
3
|
+
*/
|
|
4
|
+
export interface AutocompleteProps {
|
|
5
|
+
show: boolean;
|
|
6
|
+
position: {
|
|
7
|
+
row: number;
|
|
8
|
+
col: number;
|
|
9
|
+
};
|
|
10
|
+
candidates: AtCandidate[];
|
|
11
|
+
onSelect: (candidate: AtCandidate) => void;
|
|
12
|
+
onDismiss: () => void;
|
|
13
|
+
}
|
|
14
|
+
export interface AtCandidate {
|
|
15
|
+
path: string;
|
|
16
|
+
display: string;
|
|
17
|
+
type: "file" | "directory";
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Autocomplete Component
|
|
21
|
+
* Dropdown for @ reference completion with keyboard navigation
|
|
22
|
+
*/
|
|
23
|
+
export declare function Autocomplete(props: AutocompleteProps): any;
|
|
24
|
+
//# sourceMappingURL=Autocomplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Autocomplete.tsx"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,OA2EpD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { createSignal, Show, For, createEffect } from "solid-js";
|
|
2
|
+
import { useKeyboard } from "@opentui/solid";
|
|
3
|
+
import { Colors } from "../design";
|
|
4
|
+
/**
|
|
5
|
+
* Autocomplete Component
|
|
6
|
+
* Dropdown for @ reference completion with keyboard navigation
|
|
7
|
+
*/
|
|
8
|
+
export function Autocomplete(props) {
|
|
9
|
+
const [selectedIndex, setSelectedIndex] = createSignal(0);
|
|
10
|
+
useKeyboard((key) => {
|
|
11
|
+
if (!props.show)
|
|
12
|
+
return;
|
|
13
|
+
switch (key.name) {
|
|
14
|
+
case "arrowup":
|
|
15
|
+
case "k":
|
|
16
|
+
setSelectedIndex((i) => Math.max(0, i - 1));
|
|
17
|
+
break;
|
|
18
|
+
case "arrowdown":
|
|
19
|
+
case "j":
|
|
20
|
+
setSelectedIndex((i) => Math.min(props.candidates.length - 1, i + 1));
|
|
21
|
+
break;
|
|
22
|
+
case "enter":
|
|
23
|
+
case "return":
|
|
24
|
+
const selectedCandidate = props.candidates[selectedIndex()];
|
|
25
|
+
if (selectedCandidate) {
|
|
26
|
+
props.onSelect(selectedCandidate);
|
|
27
|
+
}
|
|
28
|
+
break;
|
|
29
|
+
case "escape":
|
|
30
|
+
props.onDismiss();
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
// Auto-select first candidate on show
|
|
35
|
+
createEffect(() => {
|
|
36
|
+
if (props.show && props.candidates.length > 0) {
|
|
37
|
+
setSelectedIndex(0);
|
|
38
|
+
}
|
|
39
|
+
}, props.show);
|
|
40
|
+
if (!props.show || props.candidates.length === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return (<Show when={props.show && props.candidates.length > 0}>
|
|
44
|
+
<box border flexDirection="column" width={50} maxHeight={10}
|
|
45
|
+
// @ts-ignore: OpenTUI types incomplete for positioning
|
|
46
|
+
style={{
|
|
47
|
+
position: "absolute",
|
|
48
|
+
top: props.position.row + 1,
|
|
49
|
+
left: props.position.col,
|
|
50
|
+
}}>
|
|
51
|
+
<For each={props.candidates}>
|
|
52
|
+
{(candidate, i) => (<box flexDirection="row" padding={1} onMouseDown={() => props.onSelect(candidate)}
|
|
53
|
+
// @ts-ignore: OpenTUI types incomplete
|
|
54
|
+
style={i() === selectedIndex() ? { backgroundColor: "#333333" } : {}}>
|
|
55
|
+
<text fg={candidate.type === "directory" ? Colors.ui.dim : Colors.ui.text}>
|
|
56
|
+
{i() === selectedIndex() ? ">" : " "}
|
|
57
|
+
</text>
|
|
58
|
+
<text>{candidate.display}</text>
|
|
59
|
+
<Show when={candidate.type === "directory"}>
|
|
60
|
+
<text fg={Colors.ui.dim}>/</text>
|
|
61
|
+
</Show>
|
|
62
|
+
</box>)}
|
|
63
|
+
</For>
|
|
64
|
+
</box>
|
|
65
|
+
</Show>);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=Autocomplete.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Autocomplete.jsx","sourceRoot":"","sources":["../../../src/ui/components/Autocomplete.tsx"],"names":[],"mappings":"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"}
|