@cdoing/cli 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.
Files changed (118) hide show
  1. package/.cdoing/permissions.json +8 -0
  2. package/dist/callbacks.d.ts +17 -0
  3. package/dist/callbacks.d.ts.map +1 -0
  4. package/dist/callbacks.js +265 -0
  5. package/dist/callbacks.js.map +1 -0
  6. package/dist/chat.d.ts +27 -0
  7. package/dist/chat.d.ts.map +1 -0
  8. package/dist/chat.js +57 -0
  9. package/dist/chat.js.map +1 -0
  10. package/dist/commands.d.ts +22 -0
  11. package/dist/commands.d.ts.map +1 -0
  12. package/dist/commands.js +452 -0
  13. package/dist/commands.js.map +1 -0
  14. package/dist/config.d.ts +84 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +427 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/help.d.ts +9 -0
  19. package/dist/help.d.ts.map +1 -0
  20. package/dist/help.js +167 -0
  21. package/dist/help.js.map +1 -0
  22. package/dist/history.d.ts +51 -0
  23. package/dist/history.d.ts.map +1 -0
  24. package/dist/history.js +207 -0
  25. package/dist/history.js.map +1 -0
  26. package/dist/index.d.ts +7 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +220 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/oauth.d.ts +13 -0
  31. package/dist/oauth.d.ts.map +1 -0
  32. package/dist/oauth.js +182 -0
  33. package/dist/oauth.js.map +1 -0
  34. package/dist/review.d.ts +26 -0
  35. package/dist/review.d.ts.map +1 -0
  36. package/dist/review.js +198 -0
  37. package/dist/review.js.map +1 -0
  38. package/dist/serve.d.ts +23 -0
  39. package/dist/serve.d.ts.map +1 -0
  40. package/dist/serve.js +293 -0
  41. package/dist/serve.js.map +1 -0
  42. package/dist/tools.d.ts +14 -0
  43. package/dist/tools.d.ts.map +1 -0
  44. package/dist/tools.js +57 -0
  45. package/dist/tools.js.map +1 -0
  46. package/dist/ui/App.d.ts +24 -0
  47. package/dist/ui/App.d.ts.map +1 -0
  48. package/dist/ui/App.js +321 -0
  49. package/dist/ui/App.js.map +1 -0
  50. package/dist/ui/MessageList.d.ts +14 -0
  51. package/dist/ui/MessageList.d.ts.map +1 -0
  52. package/dist/ui/MessageList.js +147 -0
  53. package/dist/ui/MessageList.js.map +1 -0
  54. package/dist/ui/SessionBrowser.d.ts +18 -0
  55. package/dist/ui/SessionBrowser.d.ts.map +1 -0
  56. package/dist/ui/SessionBrowser.js +149 -0
  57. package/dist/ui/SessionBrowser.js.map +1 -0
  58. package/dist/ui/SetupWizard.d.ts +23 -0
  59. package/dist/ui/SetupWizard.d.ts.map +1 -0
  60. package/dist/ui/SetupWizard.js +402 -0
  61. package/dist/ui/SetupWizard.js.map +1 -0
  62. package/dist/ui/Spinner.d.ts +15 -0
  63. package/dist/ui/Spinner.d.ts.map +1 -0
  64. package/dist/ui/Spinner.js +111 -0
  65. package/dist/ui/Spinner.js.map +1 -0
  66. package/dist/ui/StatusBar.d.ts +16 -0
  67. package/dist/ui/StatusBar.d.ts.map +1 -0
  68. package/dist/ui/StatusBar.js +56 -0
  69. package/dist/ui/StatusBar.js.map +1 -0
  70. package/dist/ui/UserInput.d.ts +13 -0
  71. package/dist/ui/UserInput.d.ts.map +1 -0
  72. package/dist/ui/UserInput.js +872 -0
  73. package/dist/ui/UserInput.js.map +1 -0
  74. package/dist/ui/hooks/helpers.d.ts +55 -0
  75. package/dist/ui/hooks/helpers.d.ts.map +1 -0
  76. package/dist/ui/hooks/helpers.js +304 -0
  77. package/dist/ui/hooks/helpers.js.map +1 -0
  78. package/dist/ui/hooks/useAgent.d.ts +60 -0
  79. package/dist/ui/hooks/useAgent.d.ts.map +1 -0
  80. package/dist/ui/hooks/useAgent.js +213 -0
  81. package/dist/ui/hooks/useAgent.js.map +1 -0
  82. package/dist/ui/hooks/useChat.d.ts +74 -0
  83. package/dist/ui/hooks/useChat.d.ts.map +1 -0
  84. package/dist/ui/hooks/useChat.js +819 -0
  85. package/dist/ui/hooks/useChat.js.map +1 -0
  86. package/dist/ui/theme.d.ts +73 -0
  87. package/dist/ui/theme.d.ts.map +1 -0
  88. package/dist/ui/theme.js +214 -0
  89. package/dist/ui/theme.js.map +1 -0
  90. package/dist/ui/types.d.ts +37 -0
  91. package/dist/ui/types.d.ts.map +1 -0
  92. package/dist/ui/types.js +3 -0
  93. package/dist/ui/types.js.map +1 -0
  94. package/package.json +33 -0
  95. package/src/callbacks.ts +294 -0
  96. package/src/chat.ts +72 -0
  97. package/src/commands.ts +425 -0
  98. package/src/config.ts +462 -0
  99. package/src/help.ts +182 -0
  100. package/src/history.ts +205 -0
  101. package/src/index.ts +248 -0
  102. package/src/oauth.ts +164 -0
  103. package/src/review.ts +233 -0
  104. package/src/serve.ts +290 -0
  105. package/src/tools.ts +104 -0
  106. package/src/ui/App.tsx +426 -0
  107. package/src/ui/MessageList.tsx +222 -0
  108. package/src/ui/SessionBrowser.tsx +161 -0
  109. package/src/ui/SetupWizard.tsx +412 -0
  110. package/src/ui/Spinner.tsx +103 -0
  111. package/src/ui/StatusBar.tsx +106 -0
  112. package/src/ui/UserInput.tsx +954 -0
  113. package/src/ui/hooks/helpers.ts +271 -0
  114. package/src/ui/hooks/useAgent.ts +270 -0
  115. package/src/ui/hooks/useChat.ts +943 -0
  116. package/src/ui/theme.ts +326 -0
  117. package/src/ui/types.ts +41 -0
  118. package/tsconfig.json +18 -0
@@ -0,0 +1,8 @@
1
+ {
2
+ "rules": [
3
+ {
4
+ "tool": "file_write",
5
+ "createdAt": "2026-03-14T09:26:05.203Z"
6
+ }
7
+ ]
8
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Agent Callbacks — formatted console output for interactive and one-shot modes.
3
+ * Includes token usage display and basic markdown rendering.
4
+ */
5
+ import type { Ora } from "ora";
6
+ import type { AgentCallbacks } from "@cdoing/ai";
7
+ /** Interactive mode: spinner + colors + markdown */
8
+ export declare function createInteractiveCallbacks(spinner: Ora): AgentCallbacks;
9
+ /** One-shot mode: colorful minimal output */
10
+ export declare function createOneShotCallbacks(): AgentCallbacks;
11
+ /** Print mode: simple text output (for --print flag) */
12
+ export declare function createPrintCallbacks(): AgentCallbacks;
13
+ /** JSON mode: structured JSON output (for --output-format json) */
14
+ export declare function createJsonCallbacks(): AgentCallbacks;
15
+ /** Stream JSON mode: line-delimited JSON events (for --output-format stream-json) */
16
+ export declare function createStreamJsonCallbacks(): AgentCallbacks;
17
+ //# sourceMappingURL=callbacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../src/callbacks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoGjD,oDAAoD;AACpD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,cAAc,CAsGvE;AAwBD,6CAA6C;AAC7C,wBAAgB,sBAAsB,IAAI,cAAc,CAqBvD;AAED,wDAAwD;AACxD,wBAAgB,oBAAoB,IAAI,cAAc,CAQrD;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,IAAI,cAAc,CAYpD;AAED,qFAAqF;AACrF,wBAAgB,yBAAyB,IAAI,cAAc,CAQ1D"}
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Callbacks — formatted console output for interactive and one-shot modes.
4
+ * Includes token usage display and basic markdown rendering.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createInteractiveCallbacks = createInteractiveCallbacks;
11
+ exports.createOneShotCallbacks = createOneShotCallbacks;
12
+ exports.createPrintCallbacks = createPrintCallbacks;
13
+ exports.createJsonCallbacks = createJsonCallbacks;
14
+ exports.createStreamJsonCallbacks = createStreamJsonCallbacks;
15
+ const chalk_1 = __importDefault(require("chalk"));
16
+ // Tool categories with icons and colors
17
+ const TOOL_STYLES = {
18
+ // File operations
19
+ file_read: { icon: "📖", color: chalk_1.default.hex("#4FC3F7") },
20
+ file_write: { icon: "✏️ ", color: chalk_1.default.hex("#81C784") },
21
+ file_edit: { icon: "🔧", color: chalk_1.default.hex("#FFB74D") },
22
+ // Search
23
+ glob_search: { icon: "🔍", color: chalk_1.default.hex("#BA68C8") },
24
+ grep_search: { icon: "🔎", color: chalk_1.default.hex("#9575CD") },
25
+ // Execution
26
+ shell_exec: { icon: "💻", color: chalk_1.default.hex("#4DD0E1") },
27
+ file_run: { icon: "▶️ ", color: chalk_1.default.hex("#4DB6AC") },
28
+ code_verify: { icon: "✅", color: chalk_1.default.hex("#AED581") },
29
+ // Web
30
+ web_fetch: { icon: "🌐", color: chalk_1.default.hex("#64B5F6") },
31
+ web_search: { icon: "🔮", color: chalk_1.default.hex("#7986CB") },
32
+ // Agent
33
+ sub_agent: { icon: "🤖", color: chalk_1.default.hex("#F06292") },
34
+ // Tasks
35
+ todo: { icon: "📋", color: chalk_1.default.hex("#FF8A65") },
36
+ };
37
+ /** Get tool style or default */
38
+ function getToolStyle(name) {
39
+ return TOOL_STYLES[name] || { icon: "⚡", color: chalk_1.default.hex("#FFC107") };
40
+ }
41
+ /** Basic terminal markdown rendering */
42
+ function renderMarkdown(text) {
43
+ let result = text;
44
+ // Code blocks with language (```lang\n...\n```)
45
+ result = result.replace(/```(\w+)?\n([\s\S]*?)```/g, (_match, lang, code) => {
46
+ const langColor = chalk_1.default.hex("#82AAFF");
47
+ const header = lang ? chalk_1.default.dim(" ┌─ ") + langColor(lang) + chalk_1.default.dim(" ─┐") + "\n" : "";
48
+ const formatted = code
49
+ .split("\n")
50
+ .map((line) => chalk_1.default.hex("#C3E88D")(` │ ${line}`))
51
+ .join("\n");
52
+ return `\n${header}${formatted}\n` + chalk_1.default.dim(" └────────┘\n");
53
+ });
54
+ // Inline code
55
+ result = result.replace(/`([^`]+)`/g, (_m, code) => chalk_1.default.bgHex("#2D2D2D").hex("#FFD54F")(` ${code} `));
56
+ // Bold
57
+ result = result.replace(/\*\*([^*]+)\*\*/g, (_m, t) => chalk_1.default.bold.hex("#FFFFFF")(t));
58
+ // Italic
59
+ result = result.replace(/(?<!\*)\*([^*]+)\*(?!\*)/g, (_m, t) => chalk_1.default.italic.hex("#B0BEC5")(t));
60
+ // Headers with gradient effect
61
+ result = result.replace(/^### (.+)$/gm, (_m, t) => chalk_1.default.hex("#4FC3F7")(" ▸ ") + chalk_1.default.bold.hex("#4FC3F7")(t));
62
+ result = result.replace(/^## (.+)$/gm, (_m, t) => chalk_1.default.hex("#29B6F6")(" ▸▸ ") + chalk_1.default.bold.hex("#29B6F6")(t));
63
+ result = result.replace(/^# (.+)$/gm, (_m, t) => chalk_1.default.hex("#03A9F4")(" ▸▸▸ ") + chalk_1.default.bold.hex("#03A9F4")(t));
64
+ // Bullet lists with colorful bullets
65
+ result = result.replace(/^(\s*)[-*] (.+)$/gm, (_m, indent, t) => `${indent} ${chalk_1.default.hex("#FF7043")("●")} ${t}`);
66
+ // Numbered lists
67
+ result = result.replace(/^(\s*)(\d+)\. (.+)$/gm, (_m, indent, n, t) => `${indent} ${chalk_1.default.hex("#AB47BC")(n + ".")} ${t}`);
68
+ // Horizontal rules
69
+ result = result.replace(/^---+$/gm, chalk_1.default.hex("#546E7A")(" ═══════════════════════════════"));
70
+ return result;
71
+ }
72
+ /** Format token usage for display with colors */
73
+ function formatUsage(usage) {
74
+ const parts = [];
75
+ if (usage.inputTokens > 0 || usage.outputTokens > 0) {
76
+ parts.push(chalk_1.default.hex("#4FC3F7")(usage.inputTokens.toLocaleString()) +
77
+ chalk_1.default.hex("#78909C")(" → ") +
78
+ chalk_1.default.hex("#81C784")(usage.outputTokens.toLocaleString()));
79
+ }
80
+ parts.push(chalk_1.default.hex("#B0BEC5")(`${usage.totalTokens.toLocaleString()} tokens`));
81
+ if (usage.cost !== undefined) {
82
+ parts.push(chalk_1.default.hex("#FFD54F")(`$${usage.cost.toFixed(4)}`));
83
+ }
84
+ return parts.join(chalk_1.default.hex("#546E7A")(" · "));
85
+ }
86
+ /** Interactive mode: spinner + colors + markdown */
87
+ function createInteractiveCallbacks(spinner) {
88
+ let isFirstToken = true;
89
+ let buffer = "";
90
+ return {
91
+ onToken: (token) => {
92
+ if (isFirstToken) {
93
+ spinner.stop();
94
+ process.stdout.write(chalk_1.default.hex("#E0E0E0")(" "));
95
+ isFirstToken = false;
96
+ }
97
+ // Buffer tokens and render markdown on newlines
98
+ buffer += token;
99
+ const lines = buffer.split("\n");
100
+ // Write all complete lines with markdown rendering
101
+ for (let i = 0; i < lines.length - 1; i++) {
102
+ const rendered = renderMarkdown(lines[i]);
103
+ process.stdout.write(rendered + "\n");
104
+ }
105
+ // Keep the last incomplete line in the buffer
106
+ buffer = lines[lines.length - 1];
107
+ },
108
+ onToolCall: (name, input) => {
109
+ // Flush buffer
110
+ if (buffer) {
111
+ process.stdout.write(renderMarkdown(buffer));
112
+ buffer = "";
113
+ }
114
+ spinner.stop();
115
+ const style = getToolStyle(name);
116
+ // Special formatting for todo tool
117
+ if (name === "todo") {
118
+ const action = input.action;
119
+ const subject = input.subject;
120
+ const status = input.status;
121
+ const id = input.id;
122
+ if (action === "create" && subject) {
123
+ console.log(chalk_1.default.hex("#FF8A65")(`\n 📋 Creating task: `) + chalk_1.default.bold.white(String(subject)));
124
+ }
125
+ else if (action === "update" && id && status) {
126
+ const statusStyle = status === "completed"
127
+ ? { icon: "✅", color: chalk_1.default.hex("#81C784") }
128
+ : status === "in_progress"
129
+ ? { icon: "🔄", color: chalk_1.default.hex("#FFB74D") }
130
+ : { icon: "📌", color: chalk_1.default.hex("#90A4AE") };
131
+ console.log(statusStyle.color(`\n ${statusStyle.icon} Task #${id}: `) + chalk_1.default.bold.white(String(status)));
132
+ }
133
+ else if (action === "list") {
134
+ console.log(chalk_1.default.hex("#FF8A65")(`\n 📋 Listing tasks`));
135
+ }
136
+ else {
137
+ const preview = JSON.stringify(input).substring(0, 60);
138
+ console.log(`\n ${style.icon} ` + style.color(name) + chalk_1.default.hex("#78909C")(` ${preview}`));
139
+ }
140
+ }
141
+ else {
142
+ // Colorful tool call display
143
+ const preview = formatToolPreview(name, input);
144
+ console.log(`\n ${style.icon} ` + style.color(name) + chalk_1.default.hex("#78909C")(` ${preview}`));
145
+ }
146
+ },
147
+ onToolResult: (name, result, isError) => {
148
+ const style = getToolStyle(name);
149
+ if (isError) {
150
+ console.log(chalk_1.default.hex("#EF5350")(` ✗ `) + chalk_1.default.hex("#EF5350").dim(name) + chalk_1.default.hex("#EF5350")(" failed"));
151
+ }
152
+ else if (name === "todo") {
153
+ console.log(chalk_1.default.hex("#81C784")(` ✓ `) + chalk_1.default.hex("#A5D6A7")(result.split("\n")[0]));
154
+ }
155
+ else {
156
+ const preview = result.substring(0, 100).replace(/\n/g, " ");
157
+ console.log(chalk_1.default.hex("#81C784")(` ✓ `) + style.color(name) + chalk_1.default.hex("#90A4AE")(` ${preview}`));
158
+ }
159
+ spinner.start(chalk_1.default.hex("#B0BEC5")(" 🧠 Thinking..."));
160
+ isFirstToken = true;
161
+ },
162
+ onComplete: () => {
163
+ // Flush remaining buffer
164
+ if (buffer) {
165
+ process.stdout.write(renderMarkdown(buffer));
166
+ buffer = "";
167
+ }
168
+ spinner.stop();
169
+ console.log("\n");
170
+ },
171
+ onError: (error) => {
172
+ if (buffer) {
173
+ process.stdout.write(renderMarkdown(buffer));
174
+ buffer = "";
175
+ }
176
+ spinner.stop();
177
+ console.log(chalk_1.default.hex("#EF5350")(`\n ❌ Error: `) + chalk_1.default.hex("#FFCDD2")(error.message) + "\n");
178
+ },
179
+ onUsage: (usage) => {
180
+ // Show usage with nice formatting
181
+ const formatted = formatUsage(usage);
182
+ console.log(chalk_1.default.hex("#546E7A")(` ╭─ `) + formatted + chalk_1.default.hex("#546E7A")(` ─╮`));
183
+ },
184
+ };
185
+ }
186
+ /** Format tool input preview based on tool type */
187
+ function formatToolPreview(name, input) {
188
+ switch (name) {
189
+ case "file_read":
190
+ case "file_write":
191
+ case "file_edit":
192
+ return String(input.path || input.file_path || "").split("/").pop() || "";
193
+ case "shell_exec":
194
+ const cmd = String(input.command || "").substring(0, 50);
195
+ return cmd.length < String(input.command || "").length ? cmd + "..." : cmd;
196
+ case "glob_search":
197
+ return String(input.pattern || "");
198
+ case "grep_search":
199
+ return `"${String(input.pattern || "").substring(0, 30)}"`;
200
+ case "web_fetch":
201
+ case "web_search":
202
+ return String(input.url || input.query || "").substring(0, 40);
203
+ default:
204
+ return JSON.stringify(input).substring(0, 60);
205
+ }
206
+ }
207
+ /** One-shot mode: colorful minimal output */
208
+ function createOneShotCallbacks() {
209
+ return {
210
+ onToken: (token) => process.stdout.write(token),
211
+ onToolCall: (name) => {
212
+ const style = getToolStyle(name);
213
+ console.log(`\n${style.icon} ` + style.color(name));
214
+ },
215
+ onToolResult: (name, _r, isErr) => {
216
+ if (isErr) {
217
+ console.log(chalk_1.default.hex("#EF5350")(`✗ ${name} failed`));
218
+ }
219
+ else {
220
+ const style = getToolStyle(name);
221
+ console.log(chalk_1.default.hex("#81C784")(`✓ `) + style.color(name));
222
+ }
223
+ },
224
+ onComplete: () => console.log(),
225
+ onError: (err) => console.error(chalk_1.default.hex("#EF5350")(`❌ Error: `) + chalk_1.default.hex("#FFCDD2")(err.message)),
226
+ onUsage: (usage) => {
227
+ console.error(chalk_1.default.hex("#546E7A")(`╭─ `) + formatUsage(usage) + chalk_1.default.hex("#546E7A")(` ─╮`));
228
+ },
229
+ };
230
+ }
231
+ /** Print mode: simple text output (for --print flag) */
232
+ function createPrintCallbacks() {
233
+ return {
234
+ onToken: (token) => process.stdout.write(token),
235
+ onToolCall: () => { },
236
+ onToolResult: () => { },
237
+ onComplete: () => console.log(),
238
+ onError: (e) => console.error(e.message),
239
+ };
240
+ }
241
+ /** JSON mode: structured JSON output (for --output-format json) */
242
+ function createJsonCallbacks() {
243
+ const result = {
244
+ response: "",
245
+ tools: [],
246
+ };
247
+ return {
248
+ onToken: (token) => { result.response += token; },
249
+ onToolCall: (name, input) => { result.tools.push({ name, input }); },
250
+ onToolResult: () => { },
251
+ onComplete: () => console.log(JSON.stringify(result, null, 2)),
252
+ onError: (e) => console.error(JSON.stringify({ error: e.message })),
253
+ };
254
+ }
255
+ /** Stream JSON mode: line-delimited JSON events (for --output-format stream-json) */
256
+ function createStreamJsonCallbacks() {
257
+ return {
258
+ onToken: (token) => console.log(JSON.stringify({ type: "token", data: token })),
259
+ onToolCall: (name, input) => console.log(JSON.stringify({ type: "tool_call", name, input })),
260
+ onToolResult: (name, result) => console.log(JSON.stringify({ type: "tool_result", name, result })),
261
+ onComplete: () => console.log(JSON.stringify({ type: "complete" })),
262
+ onError: (e) => console.log(JSON.stringify({ type: "error", message: e.message })),
263
+ };
264
+ }
265
+ //# sourceMappingURL=callbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../src/callbacks.ts"],"names":[],"mappings":"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"}
package/dist/chat.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ChatInterface — launches the Ink-based TUI.
3
+ *
4
+ * This replaces the raw readline REPL with a React/Ink component tree,
5
+ * modelled on how Continue (continuedev/continue) builds its CLI.
6
+ *
7
+ * Structure:
8
+ * App.tsx — root Ink component
9
+ * MessageList — committed messages (via <Static>)
10
+ * StreamingMessage — live token stream
11
+ * UserInput — keyboard input + slash-command suggestions
12
+ * StatusBar — provider / model / mode / cost
13
+ * hooks/useChat — all agent state + slash-command logic
14
+ */
15
+ import type { ModelConfig } from "@cdoing/ai";
16
+ import type { ToolRegistry, PermissionManager, HookManager, MemoryStore, TodoStore } from "@cdoing/core";
17
+ export declare class ChatInterface {
18
+ private modelConfig;
19
+ private toolRegistry;
20
+ private permissionManager;
21
+ private hookManager;
22
+ private memoryStore;
23
+ private todoStore;
24
+ constructor(modelConfig: Partial<ModelConfig>, toolRegistry: ToolRegistry, permissionManager: PermissionManager, hookManager: HookManager, memoryStore: MemoryStore, todoStore?: TodoStore);
25
+ start(initialPrompt?: string): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,SAAS,EACV,MAAM,cAAc,CAAC;AAKtB,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAmB;gBAGlC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,EACjC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,SAAS;IAUjB,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBnD"}
package/dist/chat.js ADDED
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * ChatInterface — launches the Ink-based TUI.
4
+ *
5
+ * This replaces the raw readline REPL with a React/Ink component tree,
6
+ * modelled on how Continue (continuedev/continue) builds its CLI.
7
+ *
8
+ * Structure:
9
+ * App.tsx — root Ink component
10
+ * MessageList — committed messages (via <Static>)
11
+ * StreamingMessage — live token stream
12
+ * UserInput — keyboard input + slash-command suggestions
13
+ * StatusBar — provider / model / mode / cost
14
+ * hooks/useChat — all agent state + slash-command logic
15
+ */
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.ChatInterface = void 0;
21
+ const react_1 = __importDefault(require("react"));
22
+ const ink_1 = require("ink");
23
+ const App_1 = require("./ui/App");
24
+ const help_1 = require("./help");
25
+ const theme_1 = require("./ui/theme");
26
+ class ChatInterface {
27
+ modelConfig;
28
+ toolRegistry;
29
+ permissionManager;
30
+ hookManager;
31
+ memoryStore;
32
+ todoStore;
33
+ constructor(modelConfig, toolRegistry, permissionManager, hookManager, memoryStore, todoStore) {
34
+ this.modelConfig = modelConfig;
35
+ this.toolRegistry = toolRegistry;
36
+ this.permissionManager = permissionManager;
37
+ this.hookManager = hookManager;
38
+ this.memoryStore = memoryStore;
39
+ this.todoStore = todoStore || null;
40
+ }
41
+ async start(initialPrompt) {
42
+ (0, theme_1.initTheme)();
43
+ (0, help_1.printWelcome)();
44
+ const { waitUntilExit } = (0, ink_1.render)(react_1.default.createElement(App_1.App, {
45
+ modelConfig: this.modelConfig,
46
+ toolRegistry: this.toolRegistry,
47
+ permissionManager: this.permissionManager,
48
+ hookManager: this.hookManager,
49
+ memoryStore: this.memoryStore,
50
+ todoStore: this.todoStore || undefined,
51
+ initialPrompt,
52
+ }));
53
+ await waitUntilExit();
54
+ }
55
+ }
56
+ exports.ChatInterface = ChatInterface;
57
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;AAEH,kDAA0B;AAC1B,6BAA6B;AAS7B,kCAA+B;AAC/B,iCAAsC;AACtC,sCAAuC;AAEvC,MAAa,aAAa;IAChB,WAAW,CAAuB;IAClC,YAAY,CAAe;IAC3B,iBAAiB,CAAoB;IACrC,WAAW,CAAc;IACzB,WAAW,CAAc;IACzB,SAAS,CAAmB;IAEpC,YACE,WAAiC,EACjC,YAA0B,EAC1B,iBAAoC,EACpC,WAAwB,EACxB,WAAwB,EACxB,SAAqB;QAErB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAAsB;QAChC,IAAA,iBAAS,GAAE,CAAC;QACZ,IAAA,mBAAY,GAAE,CAAC;QAEf,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,YAAM,EAC9B,eAAK,CAAC,aAAa,CAAC,SAAG,EAAE;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS;YACtC,aAAa;SACd,CAAC,CACH,CAAC;QAEF,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;CACF;AA1CD,sCA0CC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * CLI Subcommand Handlers
3
+ *
4
+ * Handlers for: cdoing config, cdoing init, cdoing doctor
5
+ */
6
+ /**
7
+ * Handle `cdoing config <action> [key] [value]`
8
+ */
9
+ export declare function handleConfigCommand(action: string, key?: string, value?: string): void;
10
+ /**
11
+ * Handle `cdoing init` - create .cdoing/ directory and config.md template
12
+ */
13
+ export declare function handleInit(): void;
14
+ /**
15
+ * Handle `cdoing completions <shell>` - print shell completion script
16
+ */
17
+ export declare function handleCompletions(shell: string): void;
18
+ /**
19
+ * Handle `cdoing doctor` - diagnose setup and configuration issues
20
+ */
21
+ export declare function handleDoctor(): void;
22
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CA0DtF;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CA2DjC;AA0ID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAmCrD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAoGnC"}