@markusylisiurunen/tau 0.1.2
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 +228 -0
- package/dist/app.js +1140 -0
- package/dist/app.js.map +1 -0
- package/dist/bash_commands.js +81 -0
- package/dist/bash_commands.js.map +1 -0
- package/dist/cli.js +147 -0
- package/dist/cli.js.map +1 -0
- package/dist/clipboard.js +16 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/commands.js +76 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.js +39 -0
- package/dist/config.js.map +1 -0
- package/dist/content_loader.js +241 -0
- package/dist/content_loader.js.map +1 -0
- package/dist/debug-ui.js +134 -0
- package/dist/debug-ui.js.map +1 -0
- package/dist/main.js +85 -0
- package/dist/main.js.map +1 -0
- package/dist/personas.js +227 -0
- package/dist/personas.js.map +1 -0
- package/dist/prompts.js +261 -0
- package/dist/prompts.js.map +1 -0
- package/dist/session/message_accumulator.js +56 -0
- package/dist/session/message_accumulator.js.map +1 -0
- package/dist/session/session_engine.js +290 -0
- package/dist/session/session_engine.js.map +1 -0
- package/dist/subagents/explore.js +42 -0
- package/dist/subagents/explore.js.map +1 -0
- package/dist/subagents/registry.js +30 -0
- package/dist/subagents/registry.js.map +1 -0
- package/dist/subagents/subagent_engine.js +147 -0
- package/dist/subagents/subagent_engine.js.map +1 -0
- package/dist/subagents/types.js +2 -0
- package/dist/subagents/types.js.map +1 -0
- package/dist/terminal.js +115 -0
- package/dist/terminal.js.map +1 -0
- package/dist/tools/bash.js +334 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.js +199 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/registry.js +15 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/task.js +202 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/write.js +89 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/assistant_message.js +87 -0
- package/dist/ui/assistant_message.js.map +1 -0
- package/dist/ui/bash_execution.js +127 -0
- package/dist/ui/bash_execution.js.map +1 -0
- package/dist/ui/chat_container.js +90 -0
- package/dist/ui/chat_container.js.map +1 -0
- package/dist/ui/components/dynamic_border.js +11 -0
- package/dist/ui/components/dynamic_border.js.map +1 -0
- package/dist/ui/components/one_line_segments.js +79 -0
- package/dist/ui/components/one_line_segments.js.map +1 -0
- package/dist/ui/components/padded_container.js +24 -0
- package/dist/ui/components/padded_container.js.map +1 -0
- package/dist/ui/custom_editor.js +53 -0
- package/dist/ui/custom_editor.js.map +1 -0
- package/dist/ui/file_execution.js +189 -0
- package/dist/ui/file_execution.js.map +1 -0
- package/dist/ui/footer.js +56 -0
- package/dist/ui/footer.js.map +1 -0
- package/dist/ui/queued_messages.js +31 -0
- package/dist/ui/queued_messages.js.map +1 -0
- package/dist/ui/session_divider.js +17 -0
- package/dist/ui/session_divider.js.map +1 -0
- package/dist/ui/session_summary.js +30 -0
- package/dist/ui/session_summary.js.map +1 -0
- package/dist/ui/slash_autocomplete.js +177 -0
- package/dist/ui/slash_autocomplete.js.map +1 -0
- package/dist/ui/system_message.js +8 -0
- package/dist/ui/system_message.js.map +1 -0
- package/dist/ui/task_execution.js +190 -0
- package/dist/ui/task_execution.js.map +1 -0
- package/dist/ui/theme.js +108 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/tool_output.js +24 -0
- package/dist/ui/tool_output.js.map +1 -0
- package/dist/ui/user_message.js +14 -0
- package/dist/ui/user_message.js.map +1 -0
- package/dist/utils/color.js +13 -0
- package/dist/utils/color.js.map +1 -0
- package/dist/utils/context.js +108 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/fork.js +41 -0
- package/dist/utils/fork.js.map +1 -0
- package/dist/utils/format.js +35 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/fuzzy.js +48 -0
- package/dist/utils/fuzzy.js.map +1 -0
- package/dist/utils/git.js +21 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/messages.js +41 -0
- package/dist/utils/messages.js.map +1 -0
- package/dist/utils/never.js +4 -0
- package/dist/utils/never.js.map +1 -0
- package/dist/utils/project_files.js +96 -0
- package/dist/utils/project_files.js.map +1 -0
- package/dist/utils/truncate.js +299 -0
- package/dist/utils/truncate.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { getModels, getProviders } from "@mariozechner/pi-ai";
|
|
5
|
+
import { personas as builtinPersonas } from "./personas.js";
|
|
6
|
+
import { prompts as builtinPrompts } from "./prompts.js";
|
|
7
|
+
import { BASH_TOOL } from "./tools/bash.js";
|
|
8
|
+
import { EDIT_TOOL } from "./tools/edit.js";
|
|
9
|
+
import { WRITE_TOOL } from "./tools/write.js";
|
|
10
|
+
import { REASONING_LEVELS } from "./types.js";
|
|
11
|
+
function parseMarkdownWithFrontMatter(content) {
|
|
12
|
+
const lines = content.split("\n");
|
|
13
|
+
// Check for opening delimiter
|
|
14
|
+
if (lines[0]?.trim() !== "---") {
|
|
15
|
+
return { frontMatter: {}, body: content };
|
|
16
|
+
}
|
|
17
|
+
// Find closing delimiter
|
|
18
|
+
let endIndex = -1;
|
|
19
|
+
for (let i = 1; i < lines.length; i++) {
|
|
20
|
+
if (lines[i]?.trim() === "---") {
|
|
21
|
+
endIndex = i;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (endIndex === -1) {
|
|
26
|
+
return { frontMatter: {}, body: content };
|
|
27
|
+
}
|
|
28
|
+
const frontMatterLines = lines.slice(1, endIndex);
|
|
29
|
+
const bodyLines = lines.slice(endIndex + 1);
|
|
30
|
+
// Parse simple YAML
|
|
31
|
+
const frontMatter = parseSimpleYaml(frontMatterLines.join("\n"));
|
|
32
|
+
const body = bodyLines.join("\n").trim();
|
|
33
|
+
return { frontMatter, body };
|
|
34
|
+
}
|
|
35
|
+
function parseSimpleYaml(yamlText) {
|
|
36
|
+
const result = {};
|
|
37
|
+
const lines = yamlText.split("\n");
|
|
38
|
+
let currentKey;
|
|
39
|
+
let currentList = [];
|
|
40
|
+
for (const line of lines) {
|
|
41
|
+
const trimmed = line.trim();
|
|
42
|
+
if (!trimmed)
|
|
43
|
+
continue;
|
|
44
|
+
// List item
|
|
45
|
+
if (trimmed.startsWith("- ")) {
|
|
46
|
+
const item = trimmed.slice(2).trim();
|
|
47
|
+
currentList.push(item);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// Finalize any pending list
|
|
51
|
+
if (currentKey && currentList.length > 0) {
|
|
52
|
+
result[currentKey] = currentList;
|
|
53
|
+
currentList = [];
|
|
54
|
+
}
|
|
55
|
+
// Scalar key: value
|
|
56
|
+
const colonIndex = line.indexOf(":");
|
|
57
|
+
if (colonIndex > 0) {
|
|
58
|
+
currentKey = line.substring(0, colonIndex).trim();
|
|
59
|
+
const valueStr = line.substring(colonIndex + 1).trim();
|
|
60
|
+
if (valueStr) {
|
|
61
|
+
// Parse value: treat as string by default
|
|
62
|
+
// Simple heuristic: "true"/"false" -> boolean, numbers -> number
|
|
63
|
+
if (valueStr.toLowerCase() === "true") {
|
|
64
|
+
result[currentKey] = true;
|
|
65
|
+
}
|
|
66
|
+
else if (valueStr.toLowerCase() === "false") {
|
|
67
|
+
result[currentKey] = false;
|
|
68
|
+
}
|
|
69
|
+
else if (!Number.isNaN(Number(valueStr))) {
|
|
70
|
+
result[currentKey] = Number(valueStr);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
result[currentKey] = valueStr;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Finalize pending list
|
|
79
|
+
if (currentKey && currentList.length > 0) {
|
|
80
|
+
result[currentKey] = currentList;
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
function isKnownProvider(value) {
|
|
85
|
+
return getProviders().includes(value);
|
|
86
|
+
}
|
|
87
|
+
function isReasoningEffort(value) {
|
|
88
|
+
return typeof value === "string" && REASONING_LEVELS.includes(value);
|
|
89
|
+
}
|
|
90
|
+
function resolveModel(provider, modelId) {
|
|
91
|
+
if (!isKnownProvider(provider))
|
|
92
|
+
return undefined;
|
|
93
|
+
return getModels(provider).find((m) => m.id === modelId);
|
|
94
|
+
}
|
|
95
|
+
export async function loadUserPersonas() {
|
|
96
|
+
const configDir = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
|
|
97
|
+
const personasDir = join(configDir, "tau", "personas");
|
|
98
|
+
const personas = [];
|
|
99
|
+
const errors = [];
|
|
100
|
+
if (!existsSync(personasDir)) {
|
|
101
|
+
return { personas, errors };
|
|
102
|
+
}
|
|
103
|
+
let files = [];
|
|
104
|
+
try {
|
|
105
|
+
files = readdirSync(personasDir).filter((f) => f.endsWith(".md"));
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
errors.push(`failed to read personas directory: ${personasDir}`);
|
|
109
|
+
return { personas, errors };
|
|
110
|
+
}
|
|
111
|
+
const builtinIds = new Set(builtinPersonas.map((p) => p.id.toLowerCase()));
|
|
112
|
+
for (const file of files) {
|
|
113
|
+
const filePath = join(personasDir, file);
|
|
114
|
+
try {
|
|
115
|
+
const content = readFileSync(filePath, "utf-8");
|
|
116
|
+
const { frontMatter, body } = parseMarkdownWithFrontMatter(content);
|
|
117
|
+
// Validate required fields
|
|
118
|
+
const id = frontMatter.id;
|
|
119
|
+
const label = frontMatter.label;
|
|
120
|
+
const provider = frontMatter.provider;
|
|
121
|
+
const model = frontMatter.model;
|
|
122
|
+
if (!id || !provider || !model) {
|
|
123
|
+
errors.push(`${file}: missing required fields (id, provider, model). skipped.`);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
// Check for collision with built-ins
|
|
127
|
+
if (builtinIds.has(id.toLowerCase())) {
|
|
128
|
+
errors.push(`${file}: persona id "${id}" conflicts with built-in. skipped.`);
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
const modelObj = resolveModel(provider, model);
|
|
133
|
+
if (!modelObj) {
|
|
134
|
+
errors.push(`${file}: failed to load model "${provider}:${model}". skipped.`);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
const description = frontMatter.description;
|
|
138
|
+
const reasoningRaw = frontMatter.reasoning;
|
|
139
|
+
const allowedReasoningLevelsRaw = frontMatter.allowedReasoningLevels;
|
|
140
|
+
const settings = {};
|
|
141
|
+
if (isReasoningEffort(reasoningRaw)) {
|
|
142
|
+
settings.reasoning = reasoningRaw;
|
|
143
|
+
}
|
|
144
|
+
const filteredReasoningLevels = Array.isArray(allowedReasoningLevelsRaw)
|
|
145
|
+
? allowedReasoningLevelsRaw.filter(isReasoningEffort)
|
|
146
|
+
: undefined;
|
|
147
|
+
const persona = {
|
|
148
|
+
id,
|
|
149
|
+
label: label || "custom",
|
|
150
|
+
model: modelObj,
|
|
151
|
+
systemPrompt: body,
|
|
152
|
+
settings,
|
|
153
|
+
tools: [BASH_TOOL, WRITE_TOOL, EDIT_TOOL],
|
|
154
|
+
...(description && { description }),
|
|
155
|
+
...(filteredReasoningLevels && filteredReasoningLevels.length > 0
|
|
156
|
+
? { allowedReasoningLevels: filteredReasoningLevels }
|
|
157
|
+
: {}),
|
|
158
|
+
};
|
|
159
|
+
personas.push(persona);
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
errors.push(`${file}: failed to load persona. skipped.`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
errors.push(`${file}: ${err.message}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return { personas, errors };
|
|
170
|
+
}
|
|
171
|
+
export async function loadUserPrompts() {
|
|
172
|
+
const configDir = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
|
|
173
|
+
const promptsDir = join(configDir, "tau", "prompts");
|
|
174
|
+
const prompts = [];
|
|
175
|
+
const errors = [];
|
|
176
|
+
if (!existsSync(promptsDir)) {
|
|
177
|
+
return { prompts, errors };
|
|
178
|
+
}
|
|
179
|
+
let files = [];
|
|
180
|
+
try {
|
|
181
|
+
files = readdirSync(promptsDir).filter((f) => f.endsWith(".md"));
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
errors.push(`failed to read prompts directory: ${promptsDir}`);
|
|
185
|
+
return { prompts, errors };
|
|
186
|
+
}
|
|
187
|
+
const builtinIds = new Set(builtinPrompts.map((p) => p.id.toLowerCase()));
|
|
188
|
+
for (const file of files) {
|
|
189
|
+
const filePath = join(promptsDir, file);
|
|
190
|
+
try {
|
|
191
|
+
const content = readFileSync(filePath, "utf-8");
|
|
192
|
+
const { frontMatter, body } = parseMarkdownWithFrontMatter(content);
|
|
193
|
+
// Validate required fields
|
|
194
|
+
const id = frontMatter.id;
|
|
195
|
+
if (!id) {
|
|
196
|
+
errors.push(`${file}: missing required field 'id'. skipped.`);
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
// Check for collision with built-ins
|
|
200
|
+
if (builtinIds.has(id.toLowerCase())) {
|
|
201
|
+
errors.push(`${file}: prompt id "${id}" conflicts with built-in. skipped.`);
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
const label = frontMatter.label;
|
|
205
|
+
const description = frontMatter.description;
|
|
206
|
+
const prompt = {
|
|
207
|
+
id,
|
|
208
|
+
template: body,
|
|
209
|
+
...(label && { label }),
|
|
210
|
+
...(description && { description }),
|
|
211
|
+
};
|
|
212
|
+
prompts.push(prompt);
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
errors.push(`${file}: ${err.message}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return { prompts, errors };
|
|
219
|
+
}
|
|
220
|
+
export async function loadAllContent() {
|
|
221
|
+
try {
|
|
222
|
+
const userPersonasResult = await loadUserPersonas();
|
|
223
|
+
const userPromptsResult = await loadUserPrompts();
|
|
224
|
+
const allErrors = [...userPersonasResult.errors, ...userPromptsResult.errors];
|
|
225
|
+
return {
|
|
226
|
+
personas: [...builtinPersonas, ...userPersonasResult.personas],
|
|
227
|
+
prompts: [...builtinPrompts, ...userPromptsResult.prompts],
|
|
228
|
+
errors: allErrors,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
// Safeguard: should not happen if loadUserPersonas/loadUserPrompts are robust,
|
|
233
|
+
// but wrap to ensure we never throw during startup
|
|
234
|
+
return {
|
|
235
|
+
personas: builtinPersonas,
|
|
236
|
+
prompts: builtinPrompts,
|
|
237
|
+
errors: [`unexpected error loading user content: ${err.message}`],
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=content_loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content_loader.js","sourceRoot":"","sources":["../src/content_loader.ts"],"names":[],"mappings":"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"}
|
package/dist/debug-ui.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Container, Markdown, Spacer, Text, TUI } from "@mariozechner/pi-tui";
|
|
3
|
+
import { createAppTerminal } from "./terminal.js";
|
|
4
|
+
import { DynamicBorder } from "./ui/components/dynamic_border.js";
|
|
5
|
+
import { OneLineSegmentsComponent } from "./ui/components/one_line_segments.js";
|
|
6
|
+
import { CustomEditor } from "./ui/custom_editor.js";
|
|
7
|
+
import { theme } from "./ui/theme.js";
|
|
8
|
+
const palette = theme.palette;
|
|
9
|
+
// Create root container
|
|
10
|
+
const root = new Container();
|
|
11
|
+
// Title with accent color and border
|
|
12
|
+
root.addChild(new DynamicBorder(palette.accent));
|
|
13
|
+
root.addChild(new Text(palette.accent("═══════════════════════════════════════════════════════"), 0, 0));
|
|
14
|
+
root.addChild(new Text(palette.accent(" DEBUG UI - UI Component Showcase "), 0, 0));
|
|
15
|
+
root.addChild(new Text(palette.accent("═══════════════════════════════════════════════════════"), 0, 0));
|
|
16
|
+
root.addChild(new DynamicBorder(palette.accent));
|
|
17
|
+
root.addChild(new Spacer(1));
|
|
18
|
+
// Primary Colors Section
|
|
19
|
+
root.addChild(new Text(palette.accent("▸ PRIMARY COLORS"), 1, 0));
|
|
20
|
+
root.addChild(new Spacer(1));
|
|
21
|
+
root.addChild(new Text(palette.accent("Accent:"), 2, 0));
|
|
22
|
+
root.addChild(new Text(palette.muted("Muted:"), 2, 0));
|
|
23
|
+
root.addChild(new Text(palette.dim("Dim:"), 2, 0));
|
|
24
|
+
root.addChild(new Text(palette.link("Link:"), 2, 0));
|
|
25
|
+
root.addChild(new Text(palette.codeInline("Code Inline:"), 2, 0));
|
|
26
|
+
root.addChild(new Text(palette.codeBlock("Code Block:"), 2, 0));
|
|
27
|
+
root.addChild(new Spacer(1));
|
|
28
|
+
// Semantic Colors Section
|
|
29
|
+
root.addChild(new Text(palette.accent("▸ SEMANTIC COLORS"), 1, 0));
|
|
30
|
+
root.addChild(new Spacer(1));
|
|
31
|
+
root.addChild(new Text(palette.warn("⚠ Warning"), 2, 0));
|
|
32
|
+
root.addChild(new Text(palette.error("✗ Error"), 2, 0));
|
|
33
|
+
root.addChild(new Text(palette.bashRunning("$ Bash Running"), 2, 0));
|
|
34
|
+
root.addChild(new Text(palette.bashRan("$ Bash Ran"), 2, 0));
|
|
35
|
+
root.addChild(new Text(palette.bashOutput("Bash Output"), 2, 0));
|
|
36
|
+
root.addChild(new Text(palette.toolFileRan("Tool File Ran"), 2, 0));
|
|
37
|
+
root.addChild(new Spacer(1));
|
|
38
|
+
// Diff Colors Section
|
|
39
|
+
root.addChild(new Text(palette.accent("▸ DIFF COLORS"), 1, 0));
|
|
40
|
+
root.addChild(new Spacer(1));
|
|
41
|
+
root.addChild(new Text(palette.diffAdded("+ Added line"), 2, 0));
|
|
42
|
+
root.addChild(new Text(palette.diffRemoved("- Removed line"), 2, 0));
|
|
43
|
+
root.addChild(new Spacer(1));
|
|
44
|
+
// Notice Colors Section
|
|
45
|
+
root.addChild(new Text(palette.accent("▸ NOTICE COLORS"), 1, 0));
|
|
46
|
+
root.addChild(new Spacer(1));
|
|
47
|
+
root.addChild(new Text(palette.noticeSuccess("✓ Notice Success"), 2, 0));
|
|
48
|
+
root.addChild(new Text(palette.noticeWarn("⚠ Notice Warning"), 2, 0));
|
|
49
|
+
root.addChild(new Text(palette.noticeError("✗ Notice Error"), 2, 0));
|
|
50
|
+
root.addChild(new Spacer(1));
|
|
51
|
+
// Risk Level Section
|
|
52
|
+
root.addChild(new Text(palette.accent("▸ RISK LEVELS"), 1, 0));
|
|
53
|
+
root.addChild(new Spacer(1));
|
|
54
|
+
root.addChild(new Text(palette.riskNone("◇ None"), 2, 0));
|
|
55
|
+
root.addChild(new Text(palette.riskReadOnly("▪ Read-Only"), 2, 0));
|
|
56
|
+
root.addChild(new Text(palette.riskReadWrite("▲ Read-Write"), 2, 0));
|
|
57
|
+
root.addChild(new Spacer(1));
|
|
58
|
+
// Markdown Section
|
|
59
|
+
root.addChild(new DynamicBorder(palette.muted));
|
|
60
|
+
root.addChild(new Text(palette.accent("▸ MARKDOWN RENDERING"), 1, 0));
|
|
61
|
+
root.addChild(new Spacer(1));
|
|
62
|
+
const markdownText = `
|
|
63
|
+
# Heading 1
|
|
64
|
+
## Heading 2
|
|
65
|
+
|
|
66
|
+
This is **bold text**, *italic text*, and ~~strikethrough~~.
|
|
67
|
+
|
|
68
|
+
\`code inline\` example.
|
|
69
|
+
|
|
70
|
+
> A quote with styling
|
|
71
|
+
> Multiple lines supported
|
|
72
|
+
|
|
73
|
+
- List item 1
|
|
74
|
+
- List item 2
|
|
75
|
+
- List item 3
|
|
76
|
+
|
|
77
|
+
[Link example](https://example.com)
|
|
78
|
+
`;
|
|
79
|
+
root.addChild(new Markdown(markdownText, 1, 0, theme.markdownTheme));
|
|
80
|
+
root.addChild(new Spacer(1));
|
|
81
|
+
// User Message Style Section
|
|
82
|
+
root.addChild(new DynamicBorder(palette.muted));
|
|
83
|
+
root.addChild(new Text(palette.accent("▸ USER MESSAGE STYLE"), 1, 0));
|
|
84
|
+
root.addChild(new Spacer(1));
|
|
85
|
+
const userContainer = new Container();
|
|
86
|
+
userContainer.addChild(new Text(palette.userText(" User: This is how user messages appear in the chat "), 1, 1, palette.userBg));
|
|
87
|
+
root.addChild(userContainer);
|
|
88
|
+
root.addChild(new Spacer(1));
|
|
89
|
+
// One Line Segments Component Section
|
|
90
|
+
root.addChild(new DynamicBorder(palette.link));
|
|
91
|
+
root.addChild(new Text(palette.accent("▸ ONE LINE SEGMENTS"), 1, 0));
|
|
92
|
+
root.addChild(new Spacer(1));
|
|
93
|
+
// Create a OneLineSegmentsComponent with multiple styled segments
|
|
94
|
+
const segmentsComponent = new OneLineSegmentsComponent([
|
|
95
|
+
{ text: "Status", style: palette.accent },
|
|
96
|
+
{ text: "Running", style: palette.bashRunning },
|
|
97
|
+
{ text: "Tools", style: palette.muted },
|
|
98
|
+
{ text: "3/5", style: palette.link },
|
|
99
|
+
{ text: "Errors", style: palette.error },
|
|
100
|
+
]);
|
|
101
|
+
root.addChild(segmentsComponent);
|
|
102
|
+
root.addChild(new Spacer(1));
|
|
103
|
+
// Border Examples Section
|
|
104
|
+
root.addChild(new DynamicBorder(palette.codeInline));
|
|
105
|
+
root.addChild(new Text(palette.accent("▸ BORDER EXAMPLES"), 1, 0));
|
|
106
|
+
root.addChild(new Spacer(1));
|
|
107
|
+
root.addChild(new Text(palette.muted("Green border above"), 1, 0));
|
|
108
|
+
root.addChild(new DynamicBorder(palette.warn));
|
|
109
|
+
root.addChild(new Spacer(1));
|
|
110
|
+
root.addChild(new DynamicBorder(palette.error));
|
|
111
|
+
root.addChild(new Text(palette.muted("Red border above"), 1, 0));
|
|
112
|
+
root.addChild(new DynamicBorder(palette.codeBlock));
|
|
113
|
+
root.addChild(new Spacer(2));
|
|
114
|
+
// Footer
|
|
115
|
+
root.addChild(new DynamicBorder(palette.accent));
|
|
116
|
+
root.addChild(new Text(palette.muted("Press Ctrl+C to exit"), 1, 0));
|
|
117
|
+
root.addChild(new DynamicBorder(palette.accent));
|
|
118
|
+
// Initialize TUI and render
|
|
119
|
+
const terminal = createAppTerminal(true);
|
|
120
|
+
const tui = new TUI(terminal);
|
|
121
|
+
// Add root container and children to TUI
|
|
122
|
+
tui.addChild(root);
|
|
123
|
+
tui.addChild(new Spacer(1));
|
|
124
|
+
// Add editor for input handling (Ctrl+C support)
|
|
125
|
+
const editor = new CustomEditor(theme.editorTheme);
|
|
126
|
+
editor.onCtrlC = () => {
|
|
127
|
+
tui.stop();
|
|
128
|
+
process.exit(0);
|
|
129
|
+
};
|
|
130
|
+
tui.addChild(editor);
|
|
131
|
+
tui.setFocus(editor);
|
|
132
|
+
// Start the TUI
|
|
133
|
+
tui.start();
|
|
134
|
+
//# sourceMappingURL=debug-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-ui.js","sourceRoot":"","sources":["../src/debug-ui.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAE9B,wBAAwB;AACxB,MAAM,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;AAE7B,qCAAqC;AACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,CAAC,QAAQ,CACX,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yDAAyD,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1F,CAAC;AACF,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sCAAsC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtF,IAAI,CAAC,QAAQ,CACX,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yDAAyD,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1F,CAAC;AACF,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,yBAAyB;AACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,0BAA0B;AAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,sBAAsB;AACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,wBAAwB;AACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,qBAAqB;AACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,mBAAmB;AACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;CAgBpB,CAAC;AACF,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,6BAA6B;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;AACtC,aAAa,CAAC,QAAQ,CACpB,IAAI,IAAI,CACN,OAAO,CAAC,QAAQ,CAAC,wDAAwD,CAAC,EAC1E,CAAC,EACD,CAAC,EACD,OAAO,CAAC,MAAM,CACf,CACF,CAAC;AACF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,sCAAsC;AACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,kEAAkE;AAClE,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,CAAC;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;IACzC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE;IAC/C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IACvC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;IACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;CACzC,CAAC,CAAC;AACH,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,0BAA0B;AAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7B,SAAS;AACT,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAEjD,4BAA4B;AAC5B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE9B,yCAAyC;AACzC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5B,iDAAiD;AACjD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACnD,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;IACpB,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AACF,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAErB,gBAAgB;AAChB,GAAG,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { ChatApp } from "./app.js";
|
|
3
|
+
import { loadBashCommands } from "./bash_commands.js";
|
|
4
|
+
import { CliError, parseCliArgs, printHelp } from "./cli.js";
|
|
5
|
+
import { loadConfig } from "./config.js";
|
|
6
|
+
import { loadAllContent } from "./content_loader.js";
|
|
7
|
+
// Load configuration from file
|
|
8
|
+
const config = loadConfig();
|
|
9
|
+
const bashCommands = loadBashCommands(process.cwd()).commands;
|
|
10
|
+
async function readPipedStdin() {
|
|
11
|
+
if (process.stdin.isTTY)
|
|
12
|
+
return undefined;
|
|
13
|
+
process.stdin.setEncoding("utf8");
|
|
14
|
+
let data = "";
|
|
15
|
+
for await (const chunk of process.stdin) {
|
|
16
|
+
data += chunk;
|
|
17
|
+
}
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
// Load built-in and user content
|
|
21
|
+
let personas;
|
|
22
|
+
let prompts;
|
|
23
|
+
try {
|
|
24
|
+
const content = await loadAllContent();
|
|
25
|
+
personas = content.personas;
|
|
26
|
+
prompts = content.prompts;
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
// Safeguard: loadAllContent should not throw, but wrap to ensure tau --help works
|
|
30
|
+
// eslint-disable-next-line no-console
|
|
31
|
+
console.error(`warning: failed to load user content: ${err.message}`);
|
|
32
|
+
// eslint-disable-next-line no-console
|
|
33
|
+
console.error("using built-in personas and prompts only.");
|
|
34
|
+
// Import fallback built-ins
|
|
35
|
+
const { personas: builtinPersonas } = await import("./personas.js");
|
|
36
|
+
const { prompts: builtinPrompts } = await import("./prompts.js");
|
|
37
|
+
personas = builtinPersonas;
|
|
38
|
+
prompts = builtinPrompts;
|
|
39
|
+
}
|
|
40
|
+
let cli;
|
|
41
|
+
try {
|
|
42
|
+
cli = parseCliArgs(process.argv.slice(2), personas);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
if (err instanceof CliError) {
|
|
46
|
+
// eslint-disable-next-line no-console
|
|
47
|
+
console.error(err.message);
|
|
48
|
+
// eslint-disable-next-line no-console
|
|
49
|
+
console.error("");
|
|
50
|
+
printHelp(personas);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
throw err;
|
|
54
|
+
}
|
|
55
|
+
if (cli.help) {
|
|
56
|
+
printHelp(personas);
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
const initialPersona = cli.personaId
|
|
60
|
+
? (personas.find((p) => p.id === cli.personaId) ?? personas[0])
|
|
61
|
+
: personas[0];
|
|
62
|
+
if (cli.reasoningOverride !== undefined) {
|
|
63
|
+
initialPersona.settings.reasoning = cli.reasoningOverride;
|
|
64
|
+
}
|
|
65
|
+
const initialUserMessage = await readPipedStdin();
|
|
66
|
+
const app = new ChatApp({
|
|
67
|
+
personas,
|
|
68
|
+
prompts,
|
|
69
|
+
bashCommands,
|
|
70
|
+
initialPersonaId: cli.personaId,
|
|
71
|
+
initialUserMessage,
|
|
72
|
+
initialRiskLevel: cli.riskLevel,
|
|
73
|
+
withContext: cli.withContext,
|
|
74
|
+
config,
|
|
75
|
+
});
|
|
76
|
+
try {
|
|
77
|
+
await app.start();
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
app.stop();
|
|
81
|
+
// eslint-disable-next-line no-console
|
|
82
|
+
console.error(err);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,+BAA+B;AAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAE5B,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC;AAE9D,KAAK,UAAU,cAAc;IAC3B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE1C,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,IAAI,KAAK,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iCAAiC;AACjC,IAAI,QAAmB,CAAC;AACxB,IAAI,OAAyB,CAAC;AAC9B,IAAI,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IACvC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC5B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,kFAAkF;IAClF,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,yCAA0C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3D,4BAA4B;IAC5B,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACjE,QAAQ,GAAG,eAAe,CAAC;IAC3B,OAAO,GAAG,cAAc,CAAC;AAC3B,CAAC;AAED,IAAI,GAAe,CAAC;AACpB,IAAI,CAAC;IACH,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,CAAC;AACZ,CAAC;AAED,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS;IAClC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC;IAChE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;AAEjB,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;IACxC,cAAc,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAC5D,CAAC;AAED,MAAM,kBAAkB,GAAG,MAAM,cAAc,EAAE,CAAC;AAElD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC;IACtB,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,gBAAgB,EAAE,GAAG,CAAC,SAAS;IAC/B,kBAAkB;IAClB,gBAAgB,EAAE,GAAG,CAAC,SAAS;IAC/B,WAAW,EAAE,GAAG,CAAC,WAAW;IAC5B,MAAM;CACP,CAAC,CAAC;AAEH,IAAI,CAAC;IACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|