@operator-labs/darwin 0.1.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/LICENSE +21 -0
- package/README.md +90 -0
- package/dist/app.d.ts +5 -0
- package/dist/app.js +469 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +134 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +15 -0
- package/dist/lib/auth.js +71 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/autocomplete.d.ts +18 -0
- package/dist/lib/autocomplete.js +124 -0
- package/dist/lib/autocomplete.js.map +1 -0
- package/dist/lib/command-surface.d.ts +52 -0
- package/dist/lib/command-surface.js +198 -0
- package/dist/lib/command-surface.js.map +1 -0
- package/dist/lib/config.d.ts +25 -0
- package/dist/lib/config.js +99 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/darwin-local.d.ts +31 -0
- package/dist/lib/darwin-local.js +195 -0
- package/dist/lib/darwin-local.js.map +1 -0
- package/dist/lib/local-sessions.d.ts +66 -0
- package/dist/lib/local-sessions.js +357 -0
- package/dist/lib/local-sessions.js.map +1 -0
- package/dist/lib/operator-harness.d.ts +13 -0
- package/dist/lib/operator-harness.js +185 -0
- package/dist/lib/operator-harness.js.map +1 -0
- package/dist/lib/operator.d.ts +2 -0
- package/dist/lib/operator.js +13 -0
- package/dist/lib/operator.js.map +1 -0
- package/dist/lib/pi-tools.d.ts +19 -0
- package/dist/lib/pi-tools.js +73 -0
- package/dist/lib/pi-tools.js.map +1 -0
- package/dist/theme.d.ts +21 -0
- package/dist/theme.js +64 -0
- package/dist/theme.js.map +1 -0
- package/dist/ui/components/answer-box.d.ts +6 -0
- package/dist/ui/components/answer-box.js +17 -0
- package/dist/ui/components/answer-box.js.map +1 -0
- package/dist/ui/components/chat-log.d.ts +18 -0
- package/dist/ui/components/chat-log.js +72 -0
- package/dist/ui/components/chat-log.js.map +1 -0
- package/dist/ui/components/custom-editor.d.ts +6 -0
- package/dist/ui/components/custom-editor.js +17 -0
- package/dist/ui/components/custom-editor.js.map +1 -0
- package/dist/ui/components/footer.d.ts +6 -0
- package/dist/ui/components/footer.js +15 -0
- package/dist/ui/components/footer.js.map +1 -0
- package/dist/ui/components/intro.d.ts +11 -0
- package/dist/ui/components/intro.js +62 -0
- package/dist/ui/components/intro.js.map +1 -0
- package/dist/ui/components/note-box.d.ts +6 -0
- package/dist/ui/components/note-box.js +17 -0
- package/dist/ui/components/note-box.js.map +1 -0
- package/dist/ui/components/tool-event.d.ts +9 -0
- package/dist/ui/components/tool-event.js +58 -0
- package/dist/ui/components/tool-event.js.map +1 -0
- package/dist/ui/components/user-query.d.ts +6 -0
- package/dist/ui/components/user-query.js +16 -0
- package/dist/ui/components/user-query.js.map +1 -0
- package/dist/ui/components/working-indicator.d.ts +12 -0
- package/dist/ui/components/working-indicator.js +30 -0
- package/dist/ui/components/working-indicator.js.map +1 -0
- package/dist/utils/markdown-table.d.ts +8 -0
- package/dist/utils/markdown-table.js +123 -0
- package/dist/utils/markdown-table.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createBashTool, createEditTool, createFindTool, createGrepTool, createLsTool, createReadTool, createWriteTool, } from "@mariozechner/pi-coding-agent";
|
|
2
|
+
export const darwinLocalToolNames = ["read", "bash", "edit", "write", "grep", "find", "ls"];
|
|
3
|
+
function truncate(text, max = 12_000) {
|
|
4
|
+
if (text.length <= max) {
|
|
5
|
+
return text;
|
|
6
|
+
}
|
|
7
|
+
return `${text.slice(0, max)}\n\n[truncated]`;
|
|
8
|
+
}
|
|
9
|
+
function flattenOutput(content) {
|
|
10
|
+
return content
|
|
11
|
+
.map((item) => {
|
|
12
|
+
if (item.type === "text") {
|
|
13
|
+
return item.text ?? "";
|
|
14
|
+
}
|
|
15
|
+
return `[${item.type}]`;
|
|
16
|
+
})
|
|
17
|
+
.join("\n")
|
|
18
|
+
.trim();
|
|
19
|
+
}
|
|
20
|
+
function summarizeResult(tool, output, isError) {
|
|
21
|
+
if (isError) {
|
|
22
|
+
return output.split("\n")[0]?.trim() || `${tool} failed`;
|
|
23
|
+
}
|
|
24
|
+
const firstLine = output.split("\n")[0]?.trim();
|
|
25
|
+
if (firstLine) {
|
|
26
|
+
return firstLine.slice(0, 120);
|
|
27
|
+
}
|
|
28
|
+
return `${tool} completed`;
|
|
29
|
+
}
|
|
30
|
+
export class PiToolHarness {
|
|
31
|
+
tools;
|
|
32
|
+
constructor(cwd) {
|
|
33
|
+
this.tools = {
|
|
34
|
+
read: createReadTool(cwd),
|
|
35
|
+
bash: createBashTool(cwd),
|
|
36
|
+
edit: createEditTool(cwd),
|
|
37
|
+
write: createWriteTool(cwd),
|
|
38
|
+
grep: createGrepTool(cwd),
|
|
39
|
+
find: createFindTool(cwd),
|
|
40
|
+
ls: createLsTool(cwd),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async execute(call) {
|
|
44
|
+
const tool = this.tools[call.tool];
|
|
45
|
+
if (!tool) {
|
|
46
|
+
throw new Error(`Unknown Pi tool: ${call.tool}`);
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const result = await tool.execute(crypto.randomUUID(), call.args);
|
|
50
|
+
const output = truncate(flattenOutput(result.content));
|
|
51
|
+
return {
|
|
52
|
+
tool: call.tool,
|
|
53
|
+
args: call.args,
|
|
54
|
+
summary: summarizeResult(call.tool, output, false),
|
|
55
|
+
output,
|
|
56
|
+
details: result.details,
|
|
57
|
+
isError: false,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
const output = error instanceof Error ? error.message : String(error);
|
|
62
|
+
return {
|
|
63
|
+
tool: call.tool,
|
|
64
|
+
args: call.args,
|
|
65
|
+
summary: summarizeResult(call.tool, output, true),
|
|
66
|
+
output: truncate(output),
|
|
67
|
+
details: undefined,
|
|
68
|
+
isError: true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=pi-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-tools.js","sourceRoot":"","sources":["../../src/lib/pi-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { EditorTheme, MarkdownTheme, SelectListTheme } from "@mariozechner/pi-tui";
|
|
2
|
+
export declare const theme: {
|
|
3
|
+
primary: (text: string) => string;
|
|
4
|
+
primarySoft: (text: string) => string;
|
|
5
|
+
accent: (text: string) => string;
|
|
6
|
+
info: (text: string) => string;
|
|
7
|
+
warning: (text: string) => string;
|
|
8
|
+
error: (text: string) => string;
|
|
9
|
+
muted: (text: string) => string;
|
|
10
|
+
mutedDark: (text: string) => string;
|
|
11
|
+
border: (text: string) => string;
|
|
12
|
+
white: (text: string) => string;
|
|
13
|
+
surface: (text: string) => string;
|
|
14
|
+
surfaceAlt: (text: string) => string;
|
|
15
|
+
queryBg: (text: string) => string;
|
|
16
|
+
dim: (text: string) => string;
|
|
17
|
+
bold: (text: string) => string;
|
|
18
|
+
};
|
|
19
|
+
export declare const markdownTheme: MarkdownTheme;
|
|
20
|
+
export declare const selectListTheme: SelectListTheme;
|
|
21
|
+
export declare const editorTheme: EditorTheme;
|
package/dist/theme.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
const palette = {
|
|
3
|
+
primary: "#47d16c",
|
|
4
|
+
primarySoft: "#baf5c9",
|
|
5
|
+
accent: "#7ee787",
|
|
6
|
+
info: "#9be9a8",
|
|
7
|
+
warning: "#f6c177",
|
|
8
|
+
error: "#eb6f92",
|
|
9
|
+
muted: "#a6a6a6",
|
|
10
|
+
mutedDark: "#2c3a2f",
|
|
11
|
+
border: "#28412f",
|
|
12
|
+
surface: "#121914",
|
|
13
|
+
surfaceAlt: "#18211b",
|
|
14
|
+
queryBg: "#243228",
|
|
15
|
+
white: "#f8fafc",
|
|
16
|
+
};
|
|
17
|
+
const fg = (color) => (text) => chalk.hex(color)(text);
|
|
18
|
+
const bg = (color) => (text) => chalk.bgHex(color)(text);
|
|
19
|
+
export const theme = {
|
|
20
|
+
primary: fg(palette.primary),
|
|
21
|
+
primarySoft: fg(palette.primarySoft),
|
|
22
|
+
accent: fg(palette.accent),
|
|
23
|
+
info: fg(palette.info),
|
|
24
|
+
warning: fg(palette.warning),
|
|
25
|
+
error: fg(palette.error),
|
|
26
|
+
muted: fg(palette.muted),
|
|
27
|
+
mutedDark: fg(palette.mutedDark),
|
|
28
|
+
border: fg(palette.border),
|
|
29
|
+
white: fg(palette.white),
|
|
30
|
+
surface: bg(palette.surface),
|
|
31
|
+
surfaceAlt: bg(palette.surfaceAlt),
|
|
32
|
+
queryBg: bg(palette.queryBg),
|
|
33
|
+
dim: (text) => chalk.dim(text),
|
|
34
|
+
bold: (text) => chalk.bold(text),
|
|
35
|
+
};
|
|
36
|
+
export const markdownTheme = {
|
|
37
|
+
heading: (text) => theme.bold(theme.primary(text)),
|
|
38
|
+
link: (text) => theme.primarySoft(text),
|
|
39
|
+
linkUrl: (text) => theme.muted(text),
|
|
40
|
+
code: (text) => theme.primarySoft(text),
|
|
41
|
+
codeBlock: (text) => theme.white(text),
|
|
42
|
+
codeBlockBorder: (text) => theme.border(text),
|
|
43
|
+
quote: (text) => theme.info(text),
|
|
44
|
+
quoteBorder: (text) => theme.border(text),
|
|
45
|
+
hr: (text) => theme.border(text),
|
|
46
|
+
listBullet: (text) => theme.primary(text),
|
|
47
|
+
bold: (text) => theme.bold(text),
|
|
48
|
+
italic: (text) => chalk.italic(text),
|
|
49
|
+
strikethrough: (text) => chalk.strikethrough(text),
|
|
50
|
+
underline: (text) => chalk.underline(text),
|
|
51
|
+
codeBlockIndent: " ",
|
|
52
|
+
};
|
|
53
|
+
export const selectListTheme = {
|
|
54
|
+
selectedPrefix: (text) => theme.primarySoft(text),
|
|
55
|
+
selectedText: (text) => theme.bold(theme.primarySoft(text)),
|
|
56
|
+
description: (text) => theme.muted(text),
|
|
57
|
+
scrollInfo: (text) => theme.muted(text),
|
|
58
|
+
noMatch: (text) => theme.warning(text),
|
|
59
|
+
};
|
|
60
|
+
export const editorTheme = {
|
|
61
|
+
borderColor: (text) => theme.border(text),
|
|
62
|
+
selectList: selectListTheme,
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Container, Markdown, Spacer } from "@mariozechner/pi-tui";
|
|
2
|
+
import { markdownTheme, theme } from "../../theme.js";
|
|
3
|
+
import { formatResponse } from "../../utils/markdown-table.js";
|
|
4
|
+
export class AnswerBoxComponent extends Container {
|
|
5
|
+
body;
|
|
6
|
+
constructor(initialText = "") {
|
|
7
|
+
super();
|
|
8
|
+
this.addChild(new Spacer(1));
|
|
9
|
+
this.body = new Markdown("", 0, 0, markdownTheme, { color: (line) => line });
|
|
10
|
+
this.addChild(this.body);
|
|
11
|
+
this.setText(initialText);
|
|
12
|
+
}
|
|
13
|
+
setText(text) {
|
|
14
|
+
this.body.setText(`${theme.primary("⏺ ")}${formatResponse(text).replace(/^\n+/, "")}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=answer-box.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-box.js","sourceRoot":"","sources":["../../../src/ui/components/answer-box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC9B,IAAI,CAAW;IAEhC,YAAY,WAAW,GAAG,EAAE;QAC1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Container, type TUI } from "@mariozechner/pi-tui";
|
|
2
|
+
export declare class ChatLogComponent extends Container {
|
|
3
|
+
private readonly tui;
|
|
4
|
+
private activeAnswer;
|
|
5
|
+
private activeTool;
|
|
6
|
+
constructor(tui: TUI);
|
|
7
|
+
clearAll(): void;
|
|
8
|
+
addQuery(query: string): void;
|
|
9
|
+
addAssistant(text: string): void;
|
|
10
|
+
addNote(text: string): void;
|
|
11
|
+
addError(text: string): void;
|
|
12
|
+
beginAnswer(): void;
|
|
13
|
+
updateAnswer(text: string): void;
|
|
14
|
+
finalizeAnswer(): void;
|
|
15
|
+
startTool(tool: string, args: Record<string, unknown>): void;
|
|
16
|
+
completeTool(summary: string): void;
|
|
17
|
+
failTool(message: string): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Container, Text } from "@mariozechner/pi-tui";
|
|
2
|
+
import { theme } from "../../theme.js";
|
|
3
|
+
import { AnswerBoxComponent } from "./answer-box.js";
|
|
4
|
+
import { NoteBoxComponent } from "./note-box.js";
|
|
5
|
+
import { ToolEventComponent } from "./tool-event.js";
|
|
6
|
+
import { UserQueryComponent } from "./user-query.js";
|
|
7
|
+
export class ChatLogComponent extends Container {
|
|
8
|
+
tui;
|
|
9
|
+
activeAnswer = null;
|
|
10
|
+
activeTool = null;
|
|
11
|
+
constructor(tui) {
|
|
12
|
+
super();
|
|
13
|
+
this.tui = tui;
|
|
14
|
+
}
|
|
15
|
+
clearAll() {
|
|
16
|
+
this.clear();
|
|
17
|
+
this.activeAnswer = null;
|
|
18
|
+
this.activeTool = null;
|
|
19
|
+
}
|
|
20
|
+
addQuery(query) {
|
|
21
|
+
this.activeAnswer = null;
|
|
22
|
+
this.activeTool = null;
|
|
23
|
+
this.addChild(new UserQueryComponent(query));
|
|
24
|
+
}
|
|
25
|
+
addAssistant(text) {
|
|
26
|
+
this.addChild(new AnswerBoxComponent(text));
|
|
27
|
+
this.activeAnswer = null;
|
|
28
|
+
this.activeTool = null;
|
|
29
|
+
}
|
|
30
|
+
addNote(text) {
|
|
31
|
+
this.activeAnswer = null;
|
|
32
|
+
this.activeTool = null;
|
|
33
|
+
this.addChild(new NoteBoxComponent(text));
|
|
34
|
+
}
|
|
35
|
+
addError(text) {
|
|
36
|
+
this.activeAnswer = null;
|
|
37
|
+
this.activeTool = null;
|
|
38
|
+
this.addChild(new Text(theme.error(text), 0, 0));
|
|
39
|
+
}
|
|
40
|
+
beginAnswer() {
|
|
41
|
+
this.activeAnswer = new AnswerBoxComponent("");
|
|
42
|
+
this.addChild(this.activeAnswer);
|
|
43
|
+
this.tui.requestRender();
|
|
44
|
+
}
|
|
45
|
+
updateAnswer(text) {
|
|
46
|
+
if (!this.activeAnswer) {
|
|
47
|
+
this.beginAnswer();
|
|
48
|
+
}
|
|
49
|
+
this.activeAnswer?.setText(text);
|
|
50
|
+
this.tui.requestRender();
|
|
51
|
+
}
|
|
52
|
+
finalizeAnswer() {
|
|
53
|
+
this.activeAnswer = null;
|
|
54
|
+
}
|
|
55
|
+
startTool(tool, args) {
|
|
56
|
+
this.activeTool = new ToolEventComponent(tool, args);
|
|
57
|
+
this.activeTool.setActive();
|
|
58
|
+
this.addChild(this.activeTool);
|
|
59
|
+
this.tui.requestRender();
|
|
60
|
+
}
|
|
61
|
+
completeTool(summary) {
|
|
62
|
+
this.activeTool?.setComplete(summary);
|
|
63
|
+
this.activeTool = null;
|
|
64
|
+
this.tui.requestRender();
|
|
65
|
+
}
|
|
66
|
+
failTool(message) {
|
|
67
|
+
this.activeTool?.setError(message);
|
|
68
|
+
this.activeTool = null;
|
|
69
|
+
this.tui.requestRender();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=chat-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-log.js","sourceRoot":"","sources":["../../../src/ui/components/chat-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Editor, Key, matchesKey } from "@mariozechner/pi-tui";
|
|
2
|
+
export class CustomEditor extends Editor {
|
|
3
|
+
onEscape;
|
|
4
|
+
onCtrlC;
|
|
5
|
+
handleInput(data) {
|
|
6
|
+
if (matchesKey(data, Key.escape) && this.onEscape) {
|
|
7
|
+
this.onEscape();
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (matchesKey(data, Key.ctrl("c")) && this.onCtrlC) {
|
|
11
|
+
this.onCtrlC();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
super.handleInput(data);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=custom-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-editor.js","sourceRoot":"","sources":["../../../src/ui/components/custom-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,OAAO,YAAa,SAAQ,MAAM;IACtC,QAAQ,CAAc;IACtB,OAAO,CAAc;IAErB,WAAW,CAAC,IAAY;QACtB,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Container, Text } from "@mariozechner/pi-tui";
|
|
2
|
+
import { theme } from "../../theme.js";
|
|
3
|
+
export class FooterComponent extends Container {
|
|
4
|
+
statusText;
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.addChild(new Text(`${theme.primary("?")} ${theme.muted("for help")} ${theme.border("·")} ${theme.primary("/login")} ${theme.muted("to login")}`, 0, 0));
|
|
8
|
+
this.statusText = new Text("", 0, 0);
|
|
9
|
+
this.addChild(this.statusText);
|
|
10
|
+
}
|
|
11
|
+
setStatus(text) {
|
|
12
|
+
this.statusText.setText(text);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../src/ui/components/footer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC3B,UAAU,CAAO;IAElC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,CACX,IAAI,IAAI,CACN,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAC7G,UAAU,CACX,EAAE,EACH,CAAC,EACD,CAAC,CACF,CACF,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Container, type TUI } from "@mariozechner/pi-tui";
|
|
2
|
+
export declare class IntroComponent extends Container {
|
|
3
|
+
private readonly helperText;
|
|
4
|
+
private readonly tui;
|
|
5
|
+
private exampleIndex;
|
|
6
|
+
private timer;
|
|
7
|
+
constructor(tui: TUI);
|
|
8
|
+
dispose(): void;
|
|
9
|
+
private setExample;
|
|
10
|
+
private ensureTimer;
|
|
11
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Container, Spacer, Text } from "@mariozechner/pi-tui";
|
|
2
|
+
import { theme } from "../../theme.js";
|
|
3
|
+
const EXAMPLE_PROMPTS = [
|
|
4
|
+
"Evolve agents that get better at predicting whether Bitcoin will go down in the next 5 minutes.",
|
|
5
|
+
"Evolve agents that improve on the ARC-AGI-2 benchmark.",
|
|
6
|
+
"Evolve agents that outperform Karpathy's autoresearch baseline on a fixed 5-minute run.",
|
|
7
|
+
"Evolve agents that get better at one-shot prediction of the next 1-minute BTC candle.",
|
|
8
|
+
"Evolve agents that improve pass@1 on a fixed set of 25 real bugfix tasks.",
|
|
9
|
+
"Evolve agents that get better at finding the single best patch under a 10-minute budget.",
|
|
10
|
+
"Evolve agents that improve tool-use accuracy on a fixed terminal benchmark.",
|
|
11
|
+
"Evolve agents that get better at recovering broken CI runs in one attempt.",
|
|
12
|
+
"Evolve agents that improve win rate in a fixed market-making simulator.",
|
|
13
|
+
"Evolve agents that get better at solving a held-out suite of GitHub issue repros.",
|
|
14
|
+
];
|
|
15
|
+
const ROTATION_INTERVAL_MS = 18000;
|
|
16
|
+
export class IntroComponent extends Container {
|
|
17
|
+
helperText;
|
|
18
|
+
tui;
|
|
19
|
+
exampleIndex;
|
|
20
|
+
timer = null;
|
|
21
|
+
constructor(tui) {
|
|
22
|
+
super();
|
|
23
|
+
this.tui = tui;
|
|
24
|
+
this.exampleIndex = Math.floor(Date.now() / ROTATION_INTERVAL_MS) % EXAMPLE_PROMPTS.length;
|
|
25
|
+
this.addChild(new Spacer(1));
|
|
26
|
+
this.addChild(new Text(theme.bold(theme.primary([
|
|
27
|
+
"██████╗ █████╗ ██████╗ ██╗ ██╗██╗███╗ ██╗",
|
|
28
|
+
"██╔══██╗██╔══██╗██╔══██╗██║ ██║██║████╗ ██║",
|
|
29
|
+
"██║ ██║███████║██████╔╝██║ █╗ ██║██║██╔██╗ ██║",
|
|
30
|
+
"██║ ██║██╔══██║██╔══██╗██║███╗██║██║██║╚██╗██║",
|
|
31
|
+
"██████╔╝██║ ██║██║ ██║╚███╔███╔╝██║██║ ╚████║",
|
|
32
|
+
"╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚══╝╚══╝ ╚═╝╚═╝ ╚═══╝",
|
|
33
|
+
].join("\n"))), 0, 0));
|
|
34
|
+
this.addChild(new Spacer(1));
|
|
35
|
+
this.helperText = new Text("", 0, 0);
|
|
36
|
+
this.addChild(this.helperText);
|
|
37
|
+
this.setExample(this.exampleIndex);
|
|
38
|
+
this.ensureTimer();
|
|
39
|
+
this.addChild(new Spacer(1));
|
|
40
|
+
}
|
|
41
|
+
dispose() {
|
|
42
|
+
if (!this.timer) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
clearInterval(this.timer);
|
|
46
|
+
this.timer = null;
|
|
47
|
+
}
|
|
48
|
+
setExample(index) {
|
|
49
|
+
this.helperText.setText(`${theme.white("Directed evolution for OpenClaw agents.")} ${theme.muted(`Try: "${EXAMPLE_PROMPTS[index]}"`)}`);
|
|
50
|
+
}
|
|
51
|
+
ensureTimer() {
|
|
52
|
+
if (this.timer) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.timer = setInterval(() => {
|
|
56
|
+
this.exampleIndex = (this.exampleIndex + 1) % EXAMPLE_PROMPTS.length;
|
|
57
|
+
this.setExample(this.exampleIndex);
|
|
58
|
+
this.tui.requestRender();
|
|
59
|
+
}, ROTATION_INTERVAL_MS);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=intro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intro.js","sourceRoot":"","sources":["../../../src/ui/components/intro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAY,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,eAAe,GAAG;IACtB,iGAAiG;IACjG,wDAAwD;IACxD,yFAAyF;IACzF,uFAAuF;IACvF,2EAA2E;IAC3E,0FAA0F;IAC1F,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,mFAAmF;CACpF,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC1B,UAAU,CAAO;IACjB,GAAG,CAAM;IAClB,YAAY,CAAS;IACrB,KAAK,GAA0B,IAAI,CAAC;IAE5C,YAAY,GAAQ;QAClB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,oBAAoB,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;QAC3F,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CACX,IAAI,IAAI,CACN,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,OAAO,CACX;YACE,iDAAiD;YACjD,iDAAiD;YACjD,iDAAiD;YACjD,iDAAiD;YACjD,iDAAiD;YACjD,iDAAiD;SAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACF,EACD,CAAC,EACD,CAAC,CACF,CACF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,IAAI,CAAC,UAAU,CAAC,OAAO,CACrB,GAAG,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAC/G,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Container, Markdown, Spacer } from "@mariozechner/pi-tui";
|
|
2
|
+
import { markdownTheme, theme } from "../../theme.js";
|
|
3
|
+
import { formatResponse } from "../../utils/markdown-table.js";
|
|
4
|
+
export class NoteBoxComponent extends Container {
|
|
5
|
+
body;
|
|
6
|
+
constructor(initialText = "") {
|
|
7
|
+
super();
|
|
8
|
+
this.addChild(new Spacer(1));
|
|
9
|
+
this.body = new Markdown("", 0, 0, markdownTheme, { color: (line) => line });
|
|
10
|
+
this.addChild(this.body);
|
|
11
|
+
this.setText(initialText);
|
|
12
|
+
}
|
|
13
|
+
setText(text) {
|
|
14
|
+
this.body.setText(`${theme.info("▣ ")}${formatResponse(text).replace(/^\n+/, "")}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=note-box.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"note-box.js","sourceRoot":"","sources":["../../../src/ui/components/note-box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC5B,IAAI,CAAW;IAEhC,YAAY,WAAW,GAAG,EAAE;QAC1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Container } from "@mariozechner/pi-tui";
|
|
2
|
+
export declare class ToolEventComponent extends Container {
|
|
3
|
+
private detail;
|
|
4
|
+
constructor(tool: string, args: Record<string, unknown>);
|
|
5
|
+
setActive(message?: string): void;
|
|
6
|
+
setComplete(summary: string): void;
|
|
7
|
+
setError(message: string): void;
|
|
8
|
+
private clearDetail;
|
|
9
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Container, Spacer, Text } from "@mariozechner/pi-tui";
|
|
2
|
+
import { theme } from "../../theme.js";
|
|
3
|
+
function formatToolName(name) {
|
|
4
|
+
return name
|
|
5
|
+
.split(/[_-]/)
|
|
6
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
7
|
+
.join(" ");
|
|
8
|
+
}
|
|
9
|
+
function truncate(text, max = 80) {
|
|
10
|
+
if (text.length <= max) {
|
|
11
|
+
return text;
|
|
12
|
+
}
|
|
13
|
+
const lastSpace = text.lastIndexOf(" ", max);
|
|
14
|
+
if (lastSpace > max * 0.5) {
|
|
15
|
+
return `${text.slice(0, lastSpace)}...`;
|
|
16
|
+
}
|
|
17
|
+
return `${text.slice(0, max)}...`;
|
|
18
|
+
}
|
|
19
|
+
function formatArgs(args) {
|
|
20
|
+
if ("query" in args) {
|
|
21
|
+
return theme.muted(`"${truncate(String(args.query), 60)}"`);
|
|
22
|
+
}
|
|
23
|
+
return theme.muted(Object.entries(args)
|
|
24
|
+
.slice(0, 4)
|
|
25
|
+
.map(([key, value]) => `${key}=${truncate(String(value).replace(/\n/g, "\\n"), 32)}`)
|
|
26
|
+
.join(", "));
|
|
27
|
+
}
|
|
28
|
+
export class ToolEventComponent extends Container {
|
|
29
|
+
detail = null;
|
|
30
|
+
constructor(tool, args) {
|
|
31
|
+
super();
|
|
32
|
+
this.addChild(new Spacer(1));
|
|
33
|
+
const suffix = Object.keys(args).length > 0 ? `${theme.muted(" (")}${formatArgs(args)}${theme.muted(")")}` : "";
|
|
34
|
+
this.addChild(new Text(`${theme.primary("⏺")} ${formatToolName(tool)}${suffix}`, 0, 0));
|
|
35
|
+
}
|
|
36
|
+
setActive(message = "Working...") {
|
|
37
|
+
this.clearDetail();
|
|
38
|
+
this.detail = new Text(`${theme.muted("⎿ ")}${theme.muted(message)}`, 0, 0);
|
|
39
|
+
this.addChild(this.detail);
|
|
40
|
+
}
|
|
41
|
+
setComplete(summary) {
|
|
42
|
+
this.clearDetail();
|
|
43
|
+
this.detail = new Text(`${theme.muted("⎿ ")}${summary}`, 0, 0);
|
|
44
|
+
this.addChild(this.detail);
|
|
45
|
+
}
|
|
46
|
+
setError(message) {
|
|
47
|
+
this.clearDetail();
|
|
48
|
+
this.detail = new Text(`${theme.muted("⎿ ")}${theme.error(truncate(message))}`, 0, 0);
|
|
49
|
+
this.addChild(this.detail);
|
|
50
|
+
}
|
|
51
|
+
clearDetail() {
|
|
52
|
+
if (this.detail) {
|
|
53
|
+
this.removeChild(this.detail);
|
|
54
|
+
this.detail = null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=tool-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-event.js","sourceRoot":"","sources":["../../../src/ui/components/tool-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Container, Spacer, Text } from "@mariozechner/pi-tui";
|
|
2
|
+
import { theme } from "../../theme.js";
|
|
3
|
+
export class UserQueryComponent extends Container {
|
|
4
|
+
body;
|
|
5
|
+
constructor(query) {
|
|
6
|
+
super();
|
|
7
|
+
this.addChild(new Spacer(1));
|
|
8
|
+
this.body = new Text("", 0, 0);
|
|
9
|
+
this.addChild(this.body);
|
|
10
|
+
this.setQuery(query);
|
|
11
|
+
}
|
|
12
|
+
setQuery(query) {
|
|
13
|
+
this.body.setText(`${theme.queryBg(theme.white(`❯ ${query} `))}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=user-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-query.js","sourceRoot":"","sources":["../../../src/ui/components/user-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC9B,IAAI,CAAO;IAE5B,YAAY,KAAa;QACvB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Container, type TUI } from "@mariozechner/pi-tui";
|
|
2
|
+
export interface WorkingState {
|
|
3
|
+
status: "idle" | "thinking" | "auth";
|
|
4
|
+
message?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class WorkingIndicatorComponent extends Container {
|
|
7
|
+
private readonly tui;
|
|
8
|
+
private loader;
|
|
9
|
+
constructor(tui: TUI);
|
|
10
|
+
setState(state: WorkingState): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Container, Loader } from "@mariozechner/pi-tui";
|
|
2
|
+
import { theme } from "../../theme.js";
|
|
3
|
+
export class WorkingIndicatorComponent extends Container {
|
|
4
|
+
tui;
|
|
5
|
+
loader = null;
|
|
6
|
+
constructor(tui) {
|
|
7
|
+
super();
|
|
8
|
+
this.tui = tui;
|
|
9
|
+
}
|
|
10
|
+
setState(state) {
|
|
11
|
+
if (state.status === "idle") {
|
|
12
|
+
this.dispose();
|
|
13
|
+
this.clear();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
this.clear();
|
|
17
|
+
if (!this.loader) {
|
|
18
|
+
this.loader = new Loader(this.tui, (text) => theme.primary(text), (text) => theme.primarySoft(text), "");
|
|
19
|
+
}
|
|
20
|
+
this.loader.setMessage(state.message || (state.status === "auth" ? "Waiting for browser login..." : "Operator is thinking..."));
|
|
21
|
+
this.addChild(this.loader);
|
|
22
|
+
}
|
|
23
|
+
dispose() {
|
|
24
|
+
if (this.loader) {
|
|
25
|
+
this.loader.stop();
|
|
26
|
+
this.loader = null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=working-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-indicator.js","sourceRoot":"","sources":["../../../src/ui/components/working-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAY,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAOvC,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IACrC,GAAG,CAAM;IAClB,MAAM,GAAkB,IAAI,CAAC;IAErC,YAAY,GAAQ;QAClB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,KAAmB;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB,IAAI,CAAC,GAAG,EACR,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EACjC,EAAE,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,CACpB,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,yBAAyB,CAAC,CACxG,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function parseMarkdownTable(tableText: string): {
|
|
2
|
+
headers: string[];
|
|
3
|
+
rows: string[][];
|
|
4
|
+
} | null;
|
|
5
|
+
export declare function renderBoxTable(headers: string[], rows: string[][]): string;
|
|
6
|
+
export declare function transformMarkdownTables(content: string): string;
|
|
7
|
+
export declare function transformBold(content: string): string;
|
|
8
|
+
export declare function formatResponse(content: string): string;
|