poe-code 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -20
- package/dist/cli/bootstrap.d.ts +4 -0
- package/dist/cli/bootstrap.js +75 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +2 -1
- package/dist/cli/commands/configure.js +7 -7
- package/dist/cli/commands/configure.js.map +1 -1
- package/dist/cli/container.d.ts +0 -5
- package/dist/cli/container.js +0 -8
- package/dist/cli/container.js.map +1 -1
- package/dist/cli/error-logger.d.ts +17 -2
- package/dist/cli/error-logger.js.map +1 -1
- package/dist/cli/errors.d.ts +6 -0
- package/dist/cli/errors.js +8 -0
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/program.js +6 -26
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/prompt-runner.d.ts +3 -0
- package/dist/cli/prompt-runner.js +9 -0
- package/dist/cli/prompt-runner.js.map +1 -0
- package/dist/cli/service-registry.d.ts +8 -0
- package/dist/cli/service-registry.js.map +1 -1
- package/dist/cli/ui/service-menu.d.ts +6 -0
- package/dist/cli/ui/service-menu.js +37 -0
- package/dist/cli/ui/service-menu.js.map +1 -0
- package/dist/cli/ui/theme.d.ts +16 -0
- package/dist/cli/ui/theme.js +78 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -74
- package/dist/index.js.map +1 -1
- package/dist/providers/claude-code-adapter.js +6 -0
- package/dist/providers/claude-code-adapter.js.map +1 -1
- package/dist/providers/codex-adapter.js +6 -0
- package/dist/providers/codex-adapter.js.map +1 -1
- package/dist/providers/opencode-adapter.js +6 -0
- package/dist/providers/opencode-adapter.js.map +1 -1
- package/dist/services/model-strategy.d.ts +2 -2
- package/dist/services/model-strategy.js +9 -9
- package/dist/services/model-strategy.js.map +1 -1
- package/dist/services/opencode.js +2 -2
- package/dist/services/opencode.js.map +1 -1
- package/package.json +13 -35
- package/dist/cli/api-client.d.ts +0 -14
- package/dist/cli/api-client.js +0 -140
- package/dist/cli/api-client.js.map +0 -1
- package/dist/cli/chat.d.ts +0 -32
- package/dist/cli/chat.js +0 -2
- package/dist/cli/chat.js.map +0 -1
- package/dist/cli/commands/agent.d.ts +0 -18
- package/dist/cli/commands/agent.js +0 -84
- package/dist/cli/commands/agent.js.map +0 -1
- package/dist/cli/commands/configure-agents.d.ts +0 -3
- package/dist/cli/commands/configure-agents.js +0 -72
- package/dist/cli/commands/configure-agents.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -8
- package/dist/cli/commands/init.js +0 -45
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/interactive.d.ts +0 -3
- package/dist/cli/commands/interactive.js +0 -17
- package/dist/cli/commands/interactive.js.map +0 -1
- package/dist/cli/commands/login.d.ts +0 -6
- package/dist/cli/commands/login.js +0 -51
- package/dist/cli/commands/login.js.map +0 -1
- package/dist/cli/commands/logout.d.ts +0 -3
- package/dist/cli/commands/logout.js +0 -31
- package/dist/cli/commands/logout.js.map +0 -1
- package/dist/cli/commands/prerequisites.d.ts +0 -3
- package/dist/cli/commands/prerequisites.js +0 -23
- package/dist/cli/commands/prerequisites.js.map +0 -1
- package/dist/cli/commands/query.d.ts +0 -7
- package/dist/cli/commands/query.js +0 -46
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/remove.d.ts +0 -6
- package/dist/cli/commands/remove.js +0 -80
- package/dist/cli/commands/remove.js.map +0 -1
- package/dist/cli/commands/root.d.ts +0 -3
- package/dist/cli/commands/root.js +0 -7
- package/dist/cli/commands/root.js.map +0 -1
- package/dist/cli/commands/spawn-worktree.d.ts +0 -6
- package/dist/cli/commands/spawn-worktree.js +0 -91
- package/dist/cli/commands/spawn-worktree.js.map +0 -1
- package/dist/cli/commands/spawn.d.ts +0 -7
- package/dist/cli/commands/spawn.js +0 -112
- package/dist/cli/commands/spawn.js.map +0 -1
- package/dist/cli/commands/test.d.ts +0 -6
- package/dist/cli/commands/test.js +0 -26
- package/dist/cli/commands/test.js.map +0 -1
- package/dist/cli/file-mentions.d.ts +0 -13
- package/dist/cli/file-mentions.js +0 -87
- package/dist/cli/file-mentions.js.map +0 -1
- package/dist/cli/file-picker-state.d.ts +0 -14
- package/dist/cli/file-picker-state.js +0 -23
- package/dist/cli/file-picker-state.js.map +0 -1
- package/dist/cli/interactive-command-runner.d.ts +0 -11
- package/dist/cli/interactive-command-runner.js +0 -142
- package/dist/cli/interactive-command-runner.js.map +0 -1
- package/dist/cli/interactive-launcher.d.ts +0 -2
- package/dist/cli/interactive-launcher.js +0 -404
- package/dist/cli/interactive-launcher.js.map +0 -1
- package/dist/cli/interactive-tasks.d.ts +0 -7
- package/dist/cli/interactive-tasks.js +0 -199
- package/dist/cli/interactive-tasks.js.map +0 -1
- package/dist/cli/interactive.d.ts +0 -19
- package/dist/cli/interactive.js +0 -479
- package/dist/cli/interactive.js.map +0 -1
- package/dist/cli/markdown-renderer.d.ts +0 -27
- package/dist/cli/markdown-renderer.js +0 -178
- package/dist/cli/markdown-renderer.js.map +0 -1
- package/dist/cli/markdown-renderer.test.d.ts +0 -1
- package/dist/cli/markdown-renderer.test.js +0 -105
- package/dist/cli/markdown-renderer.test.js.map +0 -1
- package/dist/commands/init.d.ts +0 -9
- package/dist/commands/init.js +0 -43
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/spawn-worktree.d.ts +0 -25
- package/dist/commands/spawn-worktree.js +0 -139
- package/dist/commands/spawn-worktree.js.map +0 -1
- package/dist/services/agent-config-manager.d.ts +0 -32
- package/dist/services/agent-config-manager.js +0 -130
- package/dist/services/agent-config-manager.js.map +0 -1
- package/dist/services/agent-registry.d.ts +0 -27
- package/dist/services/agent-registry.js +0 -89
- package/dist/services/agent-registry.js.map +0 -1
- package/dist/services/agent-session.d.ts +0 -24
- package/dist/services/agent-session.js +0 -107
- package/dist/services/agent-session.js.map +0 -1
- package/dist/services/agent-task-registry.d.ts +0 -131
- package/dist/services/agent-task-registry.js +0 -491
- package/dist/services/agent-task-registry.js.map +0 -1
- package/dist/services/chat.d.ts +0 -94
- package/dist/services/chat.js +0 -241
- package/dist/services/chat.js.map +0 -1
- package/dist/services/mcp-client.d.ts +0 -38
- package/dist/services/mcp-client.js +0 -170
- package/dist/services/mcp-client.js.map +0 -1
- package/dist/services/mcp-manager.d.ts +0 -28
- package/dist/services/mcp-manager.js +0 -157
- package/dist/services/mcp-manager.js.map +0 -1
- package/dist/services/poe-code.d.ts +0 -7
- package/dist/services/poe-code.js +0 -5
- package/dist/services/poe-code.js.map +0 -1
- package/dist/services/task-logger.d.ts +0 -24
- package/dist/services/task-logger.js +0 -73
- package/dist/services/task-logger.js.map +0 -1
- package/dist/services/task-runner.d.ts +0 -19
- package/dist/services/task-runner.js +0 -157
- package/dist/services/task-runner.js.map +0 -1
- package/dist/services/tools.d.ts +0 -76
- package/dist/services/tools.js +0 -870
- package/dist/services/tools.js.map +0 -1
- package/dist/utils/e2e-flags.d.ts +0 -1
- package/dist/utils/e2e-flags.js +0 -9
- package/dist/utils/e2e-flags.js.map +0 -1
- package/dist/utils/worktree.d.ts +0 -40
- package/dist/utils/worktree.js +0 -179
- package/dist/utils/worktree.js.map +0 -1
- package/shared/conversation-layout.cjs +0 -11
- package/shared/conversation-layout.d.ts +0 -7
- package/shared/conversation-layout.js +0 -11
- package/shared/package.json +0 -13
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simple terminal markdown renderer with ANSI escape codes
|
|
3
|
-
* Falls back to plaintext for unsupported features
|
|
4
|
-
*/
|
|
5
|
-
// ANSI escape codes
|
|
6
|
-
const RESET = "\x1b[0m";
|
|
7
|
-
const BOLD = "\x1b[1m";
|
|
8
|
-
const DIM = "\x1b[2m";
|
|
9
|
-
const ITALIC = "\x1b[3m";
|
|
10
|
-
const UNDERLINE = "\x1b[4m";
|
|
11
|
-
// Colors
|
|
12
|
-
const RED = "\x1b[31m";
|
|
13
|
-
const GREEN = "\x1b[32m";
|
|
14
|
-
const YELLOW = "\x1b[33m";
|
|
15
|
-
const BLUE = "\x1b[34m";
|
|
16
|
-
const MAGENTA = "\x1b[35m";
|
|
17
|
-
const CYAN = "\x1b[36m";
|
|
18
|
-
const GRAY = "\x1b[90m";
|
|
19
|
-
// Background colors
|
|
20
|
-
const BG_BLACK = "\x1b[40m";
|
|
21
|
-
const BG_GRAY = "\x1b[100m";
|
|
22
|
-
/**
|
|
23
|
-
* Renders markdown text to terminal with ANSI formatting
|
|
24
|
-
*/
|
|
25
|
-
export function renderMarkdown(markdown, options = {}) {
|
|
26
|
-
const { indent = "" } = options;
|
|
27
|
-
const lines = markdown.split("\n");
|
|
28
|
-
const output = [];
|
|
29
|
-
let inCodeBlock = false;
|
|
30
|
-
let codeBlockLang = "";
|
|
31
|
-
let inList = false;
|
|
32
|
-
let listIndent = 0;
|
|
33
|
-
for (let i = 0; i < lines.length; i++) {
|
|
34
|
-
const line = lines[i];
|
|
35
|
-
const trimmed = line.trim();
|
|
36
|
-
// Code blocks
|
|
37
|
-
if (trimmed.startsWith("```")) {
|
|
38
|
-
if (!inCodeBlock) {
|
|
39
|
-
// Start code block
|
|
40
|
-
inCodeBlock = true;
|
|
41
|
-
codeBlockLang = trimmed.slice(3).trim();
|
|
42
|
-
output.push(""); // Empty line before code block
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
// End code block
|
|
47
|
-
inCodeBlock = false;
|
|
48
|
-
codeBlockLang = "";
|
|
49
|
-
output.push(""); // Empty line after code block
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (inCodeBlock) {
|
|
54
|
-
// Render code block line
|
|
55
|
-
output.push(indent + " " + GRAY + BG_GRAY + line + RESET);
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
// Headers (# ## ###)
|
|
59
|
-
const headerMatch = line.match(/^(#{1,6})\s+(.+)$/);
|
|
60
|
-
if (headerMatch) {
|
|
61
|
-
const level = headerMatch[1].length;
|
|
62
|
-
const text = headerMatch[2];
|
|
63
|
-
const color = level === 1 ? CYAN : level === 2 ? BLUE : MAGENTA;
|
|
64
|
-
output.push("");
|
|
65
|
-
output.push(indent + color + BOLD + text + RESET);
|
|
66
|
-
output.push("");
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
// Horizontal rule (---, ___, ***)
|
|
70
|
-
if (/^(\*{3,}|-{3,}|_{3,})$/.test(trimmed)) {
|
|
71
|
-
output.push(indent + GRAY + "─".repeat(40) + RESET);
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
// Lists (- item, * item, 1. item)
|
|
75
|
-
const listMatch = line.match(/^(\s*)([-*+]|\d+\.)\s+(.+)$/);
|
|
76
|
-
if (listMatch) {
|
|
77
|
-
const listIndentStr = listMatch[1];
|
|
78
|
-
const bullet = listMatch[2];
|
|
79
|
-
const content = listMatch[3];
|
|
80
|
-
const level = Math.floor(listIndentStr.length / 2);
|
|
81
|
-
const renderedBullet = bullet.match(/\d+\./) ? bullet : "•";
|
|
82
|
-
output.push(indent + " ".repeat(level) + YELLOW + renderedBullet + RESET + " " + renderInline(content));
|
|
83
|
-
inList = true;
|
|
84
|
-
listIndent = level;
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
else if (inList && trimmed === "") {
|
|
88
|
-
inList = false;
|
|
89
|
-
listIndent = 0;
|
|
90
|
-
}
|
|
91
|
-
// Blockquotes (> text)
|
|
92
|
-
if (trimmed.startsWith(">")) {
|
|
93
|
-
const quoteText = trimmed.slice(1).trim();
|
|
94
|
-
output.push(indent + GRAY + "│ " + RESET + DIM + renderInline(quoteText) + RESET);
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
// Empty lines
|
|
98
|
-
if (trimmed === "") {
|
|
99
|
-
output.push("");
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
// Regular paragraph text
|
|
103
|
-
output.push(indent + renderInline(line));
|
|
104
|
-
}
|
|
105
|
-
return output.join("\n");
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Renders inline markdown formatting (bold, italic, code, links)
|
|
109
|
-
*/
|
|
110
|
-
function renderInline(text) {
|
|
111
|
-
let result = text;
|
|
112
|
-
// Inline code (`code`)
|
|
113
|
-
result = result.replace(/`([^`]+)`/g, (_match, code) => {
|
|
114
|
-
return YELLOW + BG_BLACK + code + RESET;
|
|
115
|
-
});
|
|
116
|
-
// Bold (**text** or __text__)
|
|
117
|
-
result = result.replace(/\*\*([^*]+)\*\*/g, (_match, text) => {
|
|
118
|
-
return BOLD + text + RESET;
|
|
119
|
-
});
|
|
120
|
-
result = result.replace(/__([^_]+)__/g, (_match, text) => {
|
|
121
|
-
return BOLD + text + RESET;
|
|
122
|
-
});
|
|
123
|
-
// Italic (*text* or _text_) - must come after bold
|
|
124
|
-
result = result.replace(/\*([^*]+)\*/g, (_match, text) => {
|
|
125
|
-
return ITALIC + text + RESET;
|
|
126
|
-
});
|
|
127
|
-
result = result.replace(/_([^_]+)_/g, (_match, text) => {
|
|
128
|
-
return ITALIC + text + RESET;
|
|
129
|
-
});
|
|
130
|
-
// Strikethrough (~~text~~)
|
|
131
|
-
result = result.replace(/~~([^~]+)~~/g, (_match, text) => {
|
|
132
|
-
return DIM + text + RESET;
|
|
133
|
-
});
|
|
134
|
-
// Links ([text](url))
|
|
135
|
-
result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_match, text, url) => {
|
|
136
|
-
return UNDERLINE + BLUE + text + RESET + GRAY + " (" + url + ")" + RESET;
|
|
137
|
-
});
|
|
138
|
-
// Bare URLs
|
|
139
|
-
result = result.replace(/(https?:\/\/[^\s]+)/g, (_match, url) => UNDERLINE + BLUE + url + RESET);
|
|
140
|
-
return result;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Strips all ANSI codes from a string (useful for testing or length calculation)
|
|
144
|
-
*/
|
|
145
|
-
export function stripAnsi(text) {
|
|
146
|
-
// eslint-disable-next-line no-control-regex
|
|
147
|
-
return text.replace(/\x1b\[[0-9;]*m/g, "");
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Simple markdown-to-plaintext converter (no formatting)
|
|
151
|
-
*/
|
|
152
|
-
export function markdownToPlaintext(markdown) {
|
|
153
|
-
let result = markdown;
|
|
154
|
-
// Remove code blocks
|
|
155
|
-
result = result.replace(/```[\s\S]*?```/g, (match) => {
|
|
156
|
-
const lines = match.split("\n").slice(1, -1);
|
|
157
|
-
return lines.map((l) => " " + l).join("\n");
|
|
158
|
-
});
|
|
159
|
-
// Remove inline code backticks
|
|
160
|
-
result = result.replace(/`([^`]+)`/g, "$1");
|
|
161
|
-
// Remove bold/italic
|
|
162
|
-
result = result.replace(/\*\*([^*]+)\*\*/g, "$1");
|
|
163
|
-
result = result.replace(/__([^_]+)__/g, "$1");
|
|
164
|
-
result = result.replace(/\*([^*]+)\*/g, "$1");
|
|
165
|
-
result = result.replace(/_([^_]+)_/g, "$1");
|
|
166
|
-
// Remove strikethrough
|
|
167
|
-
result = result.replace(/~~([^~]+)~~/g, "$1");
|
|
168
|
-
// Convert links to text + URL
|
|
169
|
-
result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, "$1 ($2)");
|
|
170
|
-
// Remove headers
|
|
171
|
-
result = result.replace(/^#{1,6}\s+/gm, "");
|
|
172
|
-
// Remove blockquotes
|
|
173
|
-
result = result.replace(/^>\s*/gm, "");
|
|
174
|
-
// Remove horizontal rules
|
|
175
|
-
result = result.replace(/^(\*{3,}|-{3,}|_{3,})$/gm, "---");
|
|
176
|
-
return result;
|
|
177
|
-
}
|
|
178
|
-
//# sourceMappingURL=markdown-renderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../src/cli/markdown-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { renderMarkdown, stripAnsi, markdownToPlaintext } from "./markdown-renderer.js";
|
|
3
|
-
describe("markdown-renderer", () => {
|
|
4
|
-
describe("renderMarkdown", () => {
|
|
5
|
-
it("should render headers with formatting", () => {
|
|
6
|
-
const input = "# Header 1\n## Header 2\n### Header 3";
|
|
7
|
-
const output = renderMarkdown(input);
|
|
8
|
-
expect(stripAnsi(output)).toContain("Header 1");
|
|
9
|
-
expect(stripAnsi(output)).toContain("Header 2");
|
|
10
|
-
expect(stripAnsi(output)).toContain("Header 3");
|
|
11
|
-
});
|
|
12
|
-
it("should render bold text", () => {
|
|
13
|
-
const input = "This is **bold** text";
|
|
14
|
-
const output = renderMarkdown(input);
|
|
15
|
-
expect(stripAnsi(output)).toBe("This is bold text");
|
|
16
|
-
expect(output).toContain("\x1b[1m"); // BOLD code
|
|
17
|
-
});
|
|
18
|
-
it("should render italic text", () => {
|
|
19
|
-
const input = "This is *italic* text";
|
|
20
|
-
const output = renderMarkdown(input);
|
|
21
|
-
expect(stripAnsi(output)).toBe("This is italic text");
|
|
22
|
-
expect(output).toContain("\x1b[3m"); // ITALIC code
|
|
23
|
-
});
|
|
24
|
-
it("should render inline code", () => {
|
|
25
|
-
const input = "Use `console.log()` for debugging";
|
|
26
|
-
const output = renderMarkdown(input);
|
|
27
|
-
expect(stripAnsi(output)).toBe("Use console.log() for debugging");
|
|
28
|
-
expect(output).toContain("\x1b[33m"); // YELLOW code
|
|
29
|
-
});
|
|
30
|
-
it("should render code blocks", () => {
|
|
31
|
-
const input = "```javascript\nconst x = 1;\n```";
|
|
32
|
-
const output = renderMarkdown(input);
|
|
33
|
-
expect(stripAnsi(output)).toContain("const x = 1;");
|
|
34
|
-
});
|
|
35
|
-
it("should render lists", () => {
|
|
36
|
-
const input = "- Item 1\n- Item 2\n- Item 3";
|
|
37
|
-
const output = renderMarkdown(input);
|
|
38
|
-
expect(stripAnsi(output)).toContain("Item 1");
|
|
39
|
-
expect(stripAnsi(output)).toContain("Item 2");
|
|
40
|
-
expect(stripAnsi(output)).toContain("Item 3");
|
|
41
|
-
});
|
|
42
|
-
it("should render numbered lists", () => {
|
|
43
|
-
const input = "1. First\n2. Second\n3. Third";
|
|
44
|
-
const output = renderMarkdown(input);
|
|
45
|
-
expect(stripAnsi(output)).toContain("First");
|
|
46
|
-
expect(stripAnsi(output)).toContain("Second");
|
|
47
|
-
expect(stripAnsi(output)).toContain("Third");
|
|
48
|
-
});
|
|
49
|
-
it("should render blockquotes", () => {
|
|
50
|
-
const input = "> This is a quote";
|
|
51
|
-
const output = renderMarkdown(input);
|
|
52
|
-
expect(stripAnsi(output)).toContain("This is a quote");
|
|
53
|
-
});
|
|
54
|
-
it("should render links", () => {
|
|
55
|
-
const input = "[Google](https://google.com)";
|
|
56
|
-
const output = renderMarkdown(input);
|
|
57
|
-
expect(stripAnsi(output)).toContain("Google");
|
|
58
|
-
expect(stripAnsi(output)).toContain("https://google.com");
|
|
59
|
-
});
|
|
60
|
-
it("should handle mixed formatting", () => {
|
|
61
|
-
const input = "This is **bold** and *italic* and `code`";
|
|
62
|
-
const output = renderMarkdown(input);
|
|
63
|
-
expect(stripAnsi(output)).toBe("This is bold and italic and code");
|
|
64
|
-
});
|
|
65
|
-
it("should preserve empty lines", () => {
|
|
66
|
-
const input = "Line 1\n\nLine 2";
|
|
67
|
-
const output = renderMarkdown(input);
|
|
68
|
-
expect(output.split("\n")).toHaveLength(3);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
describe("stripAnsi", () => {
|
|
72
|
-
it("should remove all ANSI codes", () => {
|
|
73
|
-
const input = "\x1b[1mBold\x1b[0m \x1b[3mItalic\x1b[0m";
|
|
74
|
-
const output = stripAnsi(input);
|
|
75
|
-
expect(output).toBe("Bold Italic");
|
|
76
|
-
});
|
|
77
|
-
it("should handle text without ANSI codes", () => {
|
|
78
|
-
const input = "Plain text";
|
|
79
|
-
const output = stripAnsi(input);
|
|
80
|
-
expect(output).toBe("Plain text");
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
describe("markdownToPlaintext", () => {
|
|
84
|
-
it("should convert markdown to plain text", () => {
|
|
85
|
-
const input = "# Header\n\nThis is **bold** and *italic*";
|
|
86
|
-
const output = markdownToPlaintext(input);
|
|
87
|
-
expect(output).not.toContain("**");
|
|
88
|
-
expect(output).not.toContain("*");
|
|
89
|
-
expect(output).not.toContain("#");
|
|
90
|
-
});
|
|
91
|
-
it("should convert links to text with URL", () => {
|
|
92
|
-
const input = "[Google](https://google.com)";
|
|
93
|
-
const output = markdownToPlaintext(input);
|
|
94
|
-
expect(output).toContain("Google");
|
|
95
|
-
expect(output).toContain("https://google.com");
|
|
96
|
-
});
|
|
97
|
-
it("should handle code blocks", () => {
|
|
98
|
-
const input = "```\ncode\n```";
|
|
99
|
-
const output = markdownToPlaintext(input);
|
|
100
|
-
expect(output).toContain("code");
|
|
101
|
-
expect(output).not.toContain("```");
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
//# sourceMappingURL=markdown-renderer.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-renderer.test.js","sourceRoot":"","sources":["../../src/cli/markdown-renderer.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
DELETED
package/dist/commands/init.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { renderTemplate } from "../utils/templates.js";
|
|
3
|
-
export async function initProject(options) {
|
|
4
|
-
const { fs, cwd, projectName, apiKey, model } = options;
|
|
5
|
-
const projectDir = path.join(cwd, projectName);
|
|
6
|
-
if (await pathExists(fs, projectDir)) {
|
|
7
|
-
throw new Error(`Project directory "${projectName}" already exists`);
|
|
8
|
-
}
|
|
9
|
-
await fs.mkdir(projectDir, { recursive: true });
|
|
10
|
-
await Promise.all([
|
|
11
|
-
writeTemplate(fs, projectDir, ".env", "python/env.hbs", { apiKey, model }),
|
|
12
|
-
writeTemplate(fs, projectDir, "main.py", "python/main.py.hbs", {
|
|
13
|
-
apiKey,
|
|
14
|
-
model
|
|
15
|
-
}),
|
|
16
|
-
writeTemplate(fs, projectDir, "requirements.txt", "python/requirements.txt.hbs", {})
|
|
17
|
-
]);
|
|
18
|
-
}
|
|
19
|
-
async function writeTemplate(fs, projectDir, filename, templatePath, context) {
|
|
20
|
-
const rendered = await renderTemplate(templatePath, context);
|
|
21
|
-
await fs.writeFile(path.join(projectDir, filename), rendered, {
|
|
22
|
-
encoding: "utf8"
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
async function pathExists(fs, target) {
|
|
26
|
-
try {
|
|
27
|
-
await fs.stat(target);
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
if (isNotFound(error)) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
throw error;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function isNotFound(error) {
|
|
38
|
-
return (typeof error === "object" &&
|
|
39
|
-
error !== null &&
|
|
40
|
-
"code" in error &&
|
|
41
|
-
error.code === "ENOENT");
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUvD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE/C,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,kBAAkB,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC1E,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE;YAC7D,MAAM;YACN,KAAK;SACN,CAAC;QACF,aAAa,CACX,EAAE,EACF,UAAU,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,EAAE,CACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,EAAc,EACd,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,OAAgC;IAEhC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE;QAC5D,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAc,EAAE,MAAc;IACtD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA2B,CAAC,IAAI,KAAK,QAAQ,CAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { CommandRunnerResult } from "../utils/prerequisites.js";
|
|
2
|
-
import { createWorktree as createWorktreeDefault, getChanges as getChangesDefault, isGitRepository as isGitRepositoryDefault, mergeChanges as mergeChangesDefault } from "../utils/worktree.js";
|
|
3
|
-
interface SpawnGitWorktreeDependencies {
|
|
4
|
-
isGitRepository: typeof isGitRepositoryDefault;
|
|
5
|
-
createWorktree: typeof createWorktreeDefault;
|
|
6
|
-
getChanges: typeof getChangesDefault;
|
|
7
|
-
mergeChanges: typeof mergeChangesDefault;
|
|
8
|
-
}
|
|
9
|
-
interface SpawnGitWorktreeOptions {
|
|
10
|
-
agent: string;
|
|
11
|
-
prompt: string;
|
|
12
|
-
agentArgs: string[];
|
|
13
|
-
basePath: string;
|
|
14
|
-
targetBranch: string;
|
|
15
|
-
runAgent: (input: {
|
|
16
|
-
agent: string;
|
|
17
|
-
prompt: string;
|
|
18
|
-
args: string[];
|
|
19
|
-
cwd: string;
|
|
20
|
-
}) => Promise<CommandRunnerResult>;
|
|
21
|
-
logger: (message: string) => void;
|
|
22
|
-
dependencies?: Partial<SpawnGitWorktreeDependencies>;
|
|
23
|
-
}
|
|
24
|
-
export declare function spawnGitWorktree(options: SpawnGitWorktreeOptions): Promise<void>;
|
|
25
|
-
export {};
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { createWorktree as createWorktreeDefault, getChanges as getChangesDefault, isGitRepository as isGitRepositoryDefault, mergeChanges as mergeChangesDefault } from "../utils/worktree.js";
|
|
2
|
-
const defaultDependencies = {
|
|
3
|
-
isGitRepository: isGitRepositoryDefault,
|
|
4
|
-
createWorktree: createWorktreeDefault,
|
|
5
|
-
getChanges: getChangesDefault,
|
|
6
|
-
mergeChanges: mergeChangesDefault
|
|
7
|
-
};
|
|
8
|
-
function resolveDependencies(overrides) {
|
|
9
|
-
if (!overrides) {
|
|
10
|
-
return defaultDependencies;
|
|
11
|
-
}
|
|
12
|
-
return {
|
|
13
|
-
isGitRepository: overrides.isGitRepository ?? defaultDependencies.isGitRepository,
|
|
14
|
-
createWorktree: overrides.createWorktree ?? defaultDependencies.createWorktree,
|
|
15
|
-
getChanges: overrides.getChanges ?? defaultDependencies.getChanges,
|
|
16
|
-
mergeChanges: overrides.mergeChanges ?? defaultDependencies.mergeChanges
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
export async function spawnGitWorktree(options) {
|
|
20
|
-
const deps = resolveDependencies(options.dependencies);
|
|
21
|
-
const isRepo = await deps.isGitRepository(options.basePath);
|
|
22
|
-
if (!isRepo) {
|
|
23
|
-
throw new Error(`"${options.basePath}" is not a git repository.`);
|
|
24
|
-
}
|
|
25
|
-
const context = await deps.createWorktree(options.basePath);
|
|
26
|
-
let shouldCleanup = false;
|
|
27
|
-
const preserveAndThrow = (message, cause) => {
|
|
28
|
-
options.logger(`Worktree preserved at ${context.path}`);
|
|
29
|
-
const base = cause instanceof Error
|
|
30
|
-
? cause
|
|
31
|
-
: cause
|
|
32
|
-
? new Error(String(cause))
|
|
33
|
-
: undefined;
|
|
34
|
-
const wrapped = new Error(message);
|
|
35
|
-
if (base) {
|
|
36
|
-
wrapped.cause = base;
|
|
37
|
-
}
|
|
38
|
-
wrapped.worktreeLogged = true;
|
|
39
|
-
throw wrapped;
|
|
40
|
-
};
|
|
41
|
-
try {
|
|
42
|
-
const initialResult = await runAgentWithContext({
|
|
43
|
-
...options,
|
|
44
|
-
context
|
|
45
|
-
});
|
|
46
|
-
const trimmedStdout = initialResult.stdout.trim();
|
|
47
|
-
if (trimmedStdout.length > 0) {
|
|
48
|
-
options.logger(trimmedStdout);
|
|
49
|
-
}
|
|
50
|
-
const trimmedStderr = initialResult.stderr.trim();
|
|
51
|
-
if (trimmedStderr.length > 0) {
|
|
52
|
-
options.logger(trimmedStderr);
|
|
53
|
-
}
|
|
54
|
-
if (initialResult.exitCode !== 0) {
|
|
55
|
-
return preserveAndThrow("Agent execution failed", initialResult);
|
|
56
|
-
}
|
|
57
|
-
const mergeResult = await deps.mergeChanges(context.path, options.targetBranch);
|
|
58
|
-
if (mergeResult.outcome === "conflict") {
|
|
59
|
-
await handleConflicts({
|
|
60
|
-
options,
|
|
61
|
-
context,
|
|
62
|
-
mergeResult,
|
|
63
|
-
dependencies: deps
|
|
64
|
-
});
|
|
65
|
-
shouldCleanup = true;
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
if (mergeResult.outcome === "no-changes") {
|
|
69
|
-
options.logger("No changes detected; nothing to merge.");
|
|
70
|
-
shouldCleanup = true;
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
shouldCleanup = true;
|
|
74
|
-
options.logger("Worktree changes merged successfully.");
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
if (error instanceof Error &&
|
|
78
|
-
error.worktreeLogged) {
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
preserveAndThrow(error instanceof Error ? error.message : "Unexpected failure", error);
|
|
82
|
-
}
|
|
83
|
-
finally {
|
|
84
|
-
if (shouldCleanup) {
|
|
85
|
-
await context.cleanup();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
async function runAgentWithContext(input) {
|
|
90
|
-
const { agent, prompt, agentArgs, runAgent, context } = input;
|
|
91
|
-
const previousCwd = process.cwd();
|
|
92
|
-
let changedDirectory = false;
|
|
93
|
-
try {
|
|
94
|
-
process.chdir(context.path);
|
|
95
|
-
changedDirectory = true;
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
if (!(error instanceof Error) ||
|
|
99
|
-
error.code !== "ERR_WORKER_UNSUPPORTED_OPERATION") {
|
|
100
|
-
throw error;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
try {
|
|
104
|
-
return await runAgent({
|
|
105
|
-
agent,
|
|
106
|
-
prompt,
|
|
107
|
-
args: agentArgs,
|
|
108
|
-
cwd: context.path
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
finally {
|
|
112
|
-
if (changedDirectory) {
|
|
113
|
-
process.chdir(previousCwd);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
async function handleConflicts(input) {
|
|
118
|
-
const { options, context, mergeResult, dependencies } = input;
|
|
119
|
-
const files = mergeResult.files.join(", ");
|
|
120
|
-
options.logger(`Merge conflicts detected in: ${files}`);
|
|
121
|
-
options.logger("Attempting automated conflict resolution.");
|
|
122
|
-
const resolutionPrompt = `Merge conflicts in: ${files}. Resolve using git commands.`;
|
|
123
|
-
const resolutionResult = await runAgentWithContext({
|
|
124
|
-
agent: options.agent,
|
|
125
|
-
prompt: resolutionPrompt,
|
|
126
|
-
agentArgs: options.agentArgs,
|
|
127
|
-
runAgent: options.runAgent,
|
|
128
|
-
context
|
|
129
|
-
});
|
|
130
|
-
if (resolutionResult.exitCode !== 0) {
|
|
131
|
-
throw new Error("Agent execution failed during conflict resolution.");
|
|
132
|
-
}
|
|
133
|
-
const finalMerge = await dependencies.mergeChanges(context.path, options.targetBranch);
|
|
134
|
-
if (finalMerge.outcome !== "merged" && finalMerge.outcome !== "no-changes") {
|
|
135
|
-
throw new Error("Merge failed after conflict resolution.");
|
|
136
|
-
}
|
|
137
|
-
options.logger("Conflicts resolved and merged successfully.");
|
|
138
|
-
}
|
|
139
|
-
//# sourceMappingURL=spawn-worktree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-worktree.js","sourceRoot":"","sources":["../../src/commands/spawn-worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { FileSystem } from "../utils/file-system.js";
|
|
2
|
-
import { AgentRegistry } from "./agent-registry.js";
|
|
3
|
-
export interface AgentConfigEntry {
|
|
4
|
-
id: string;
|
|
5
|
-
enabled: boolean;
|
|
6
|
-
}
|
|
7
|
-
export interface AgentConfig {
|
|
8
|
-
$schema?: string;
|
|
9
|
-
agents: AgentConfigEntry[];
|
|
10
|
-
}
|
|
11
|
-
interface AgentConfigManagerInit {
|
|
12
|
-
fs: FileSystem;
|
|
13
|
-
homeDir: string;
|
|
14
|
-
registry: AgentRegistry;
|
|
15
|
-
}
|
|
16
|
-
export declare class AgentConfigManager {
|
|
17
|
-
private readonly fs;
|
|
18
|
-
private readonly registry;
|
|
19
|
-
private readonly homeDir;
|
|
20
|
-
private readonly configPath;
|
|
21
|
-
private cachedConfig;
|
|
22
|
-
constructor(init: AgentConfigManagerInit);
|
|
23
|
-
getConfigPath(): string;
|
|
24
|
-
loadConfig(): Promise<AgentConfig>;
|
|
25
|
-
getEnabledAgents(): Promise<AgentConfigEntry[]>;
|
|
26
|
-
updateAgent(update: AgentConfigEntry): Promise<void>;
|
|
27
|
-
private readConfig;
|
|
28
|
-
private mergeWithRegistry;
|
|
29
|
-
private writeConfig;
|
|
30
|
-
private ensureDirectory;
|
|
31
|
-
}
|
|
32
|
-
export {};
|