@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
package/dist/serve.js ADDED
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ /**
3
+ * cdoing serve — HTTP API server
4
+ *
5
+ * Exposes the AI agent as a REST API:
6
+ * GET /health
7
+ * GET /sessions
8
+ * POST /sessions — create new session
9
+ * GET /sessions/:id
10
+ * POST /sessions/:id/messages — continue a conversation
11
+ * POST /chat — one-shot prompt
12
+ * POST /chat/stream — streaming via SSE
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.startServer = startServer;
52
+ const http = __importStar(require("http"));
53
+ const url = __importStar(require("url"));
54
+ const chalk_1 = __importDefault(require("chalk"));
55
+ const ai_1 = require("@cdoing/ai");
56
+ const core_1 = require("@cdoing/core");
57
+ const config_1 = require("./config");
58
+ const tools_1 = require("./tools");
59
+ const history_1 = require("./history");
60
+ function jsonResponse(res, status, data) {
61
+ const body = JSON.stringify(data, null, 2);
62
+ res.writeHead(status, {
63
+ "Content-Type": "application/json",
64
+ "Access-Control-Allow-Origin": "*",
65
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
66
+ "Access-Control-Allow-Methods": "GET, POST, OPTIONS",
67
+ });
68
+ res.end(body);
69
+ }
70
+ function readBody(req) {
71
+ return new Promise((resolve, reject) => {
72
+ let body = "";
73
+ req.on("data", (chunk) => { body += chunk; });
74
+ req.on("end", () => {
75
+ try {
76
+ resolve(JSON.parse(body || "{}"));
77
+ }
78
+ catch {
79
+ reject(new Error("Invalid JSON body"));
80
+ }
81
+ });
82
+ req.on("error", reject);
83
+ });
84
+ }
85
+ async function startServer(opts) {
86
+ const cliOpts = {
87
+ model: opts.model,
88
+ provider: opts.provider || "anthropic",
89
+ apiKey: opts.apiKey,
90
+ dir: opts.dir,
91
+ mode: opts.mode || "auto",
92
+ };
93
+ await (0, config_1.resolveApiKey)(cliOpts);
94
+ const modelConfig = (0, config_1.buildModelConfig)(cliOpts);
95
+ const permissionManager = (0, config_1.createPermissionManager)(cliOpts);
96
+ const hookManager = new core_1.HookManager(opts.dir);
97
+ const memoryStore = new core_1.MemoryStore();
98
+ const projectConfig = (0, core_1.loadProjectConfig)(opts.dir);
99
+ const agentOptions = {
100
+ projectConfig: projectConfig || undefined,
101
+ memory: memoryStore.formatForPrompt() || undefined,
102
+ };
103
+ const server = http.createServer(async (req, res) => {
104
+ // CORS preflight
105
+ if (req.method === "OPTIONS") {
106
+ res.writeHead(204, {
107
+ "Access-Control-Allow-Origin": "*",
108
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
109
+ "Access-Control-Allow-Methods": "GET, POST, OPTIONS",
110
+ });
111
+ res.end();
112
+ return;
113
+ }
114
+ const parsed = url.parse(req.url || "/", true);
115
+ const pathname = parsed.pathname || "/";
116
+ try {
117
+ // GET /health
118
+ if (req.method === "GET" && pathname === "/health") {
119
+ jsonResponse(res, 200, {
120
+ status: "ok",
121
+ provider: modelConfig.provider,
122
+ model: modelConfig.model || "(default)",
123
+ dir: opts.dir,
124
+ mode: opts.mode,
125
+ timestamp: new Date().toISOString(),
126
+ });
127
+ return;
128
+ }
129
+ // GET /sessions
130
+ if (req.method === "GET" && pathname === "/sessions") {
131
+ const sessions = (0, history_1.listConversations)().slice(0, 100).map((c) => ({
132
+ id: c.id,
133
+ title: c.title,
134
+ createdAt: c.createdAt,
135
+ updatedAt: c.updatedAt,
136
+ provider: c.provider,
137
+ model: c.model,
138
+ messageCount: c.messages.length,
139
+ }));
140
+ jsonResponse(res, 200, { sessions, total: sessions.length });
141
+ return;
142
+ }
143
+ // POST /sessions — create new session
144
+ if (req.method === "POST" && pathname === "/sessions") {
145
+ const conv = (0, history_1.createConversation)(String(modelConfig.provider || "anthropic"), String(modelConfig.model || "default"));
146
+ (0, history_1.saveConversation)(conv);
147
+ jsonResponse(res, 201, { id: conv.id, title: conv.title, createdAt: conv.createdAt });
148
+ return;
149
+ }
150
+ // GET /sessions/:id
151
+ const sessionGetMatch = pathname.match(/^\/sessions\/([a-z0-9-]+)$/);
152
+ if (req.method === "GET" && sessionGetMatch) {
153
+ const conv = (0, history_1.loadConversation)(sessionGetMatch[1]);
154
+ if (!conv) {
155
+ jsonResponse(res, 404, { error: "Session not found" });
156
+ return;
157
+ }
158
+ jsonResponse(res, 200, conv);
159
+ return;
160
+ }
161
+ // POST /sessions/:id/messages — continue conversation
162
+ const sessionMsgMatch = pathname.match(/^\/sessions\/([a-z0-9-]+)\/messages$/);
163
+ if (req.method === "POST" && sessionMsgMatch) {
164
+ const conv = (0, history_1.loadConversation)(sessionMsgMatch[1]);
165
+ if (!conv) {
166
+ jsonResponse(res, 404, { error: "Session not found" });
167
+ return;
168
+ }
169
+ const body = await readBody(req);
170
+ const prompt = String(body.prompt || "");
171
+ if (!prompt) {
172
+ jsonResponse(res, 400, { error: "prompt is required" });
173
+ return;
174
+ }
175
+ const toolRegistry = (0, tools_1.createToolRegistry)(opts.dir);
176
+ const agent = new ai_1.AgentRunner(modelConfig, toolRegistry, permissionManager, hookManager, agentOptions);
177
+ // Restore history
178
+ for (const m of conv.messages) {
179
+ if (m.role === "user")
180
+ agent.addToHistory("user", m.content);
181
+ else if (m.role === "assistant")
182
+ agent.addToHistory("assistant", m.content);
183
+ }
184
+ let response = "";
185
+ const tools = [];
186
+ await agent.run(prompt, {
187
+ onToken: (t) => { response += t; },
188
+ onToolCall: (name, input) => { tools.push({ name, input }); },
189
+ onToolResult: () => { },
190
+ onComplete: () => { },
191
+ onError: (e) => { response = `Error: ${e.message}`; },
192
+ });
193
+ (0, history_1.addMessage)(conv, "user", prompt);
194
+ (0, history_1.addMessage)(conv, "assistant", response);
195
+ jsonResponse(res, 200, { response, tools, sessionId: conv.id });
196
+ return;
197
+ }
198
+ // POST /chat — one-shot prompt
199
+ if (req.method === "POST" && pathname === "/chat") {
200
+ const body = await readBody(req);
201
+ const prompt = String(body.prompt || "");
202
+ if (!prompt) {
203
+ jsonResponse(res, 400, { error: "prompt is required" });
204
+ return;
205
+ }
206
+ const mc = {
207
+ ...modelConfig,
208
+ ...(body.model ? { model: String(body.model) } : {}),
209
+ ...(body.provider ? { provider: String(body.provider) } : {}),
210
+ };
211
+ const toolRegistry = (0, tools_1.createToolRegistry)(opts.dir);
212
+ const agent = new ai_1.AgentRunner(mc, toolRegistry, permissionManager, hookManager, agentOptions);
213
+ let response = "";
214
+ const tools = [];
215
+ let usage = null;
216
+ await agent.run(prompt, {
217
+ onToken: (t) => { response += t; },
218
+ onToolCall: (name, input) => { tools.push({ name, input }); },
219
+ onToolResult: () => { },
220
+ onComplete: () => { },
221
+ onError: (e) => { response = `Error: ${e.message}`; },
222
+ onUsage: (u) => { usage = u; },
223
+ });
224
+ jsonResponse(res, 200, { response, tools, usage });
225
+ return;
226
+ }
227
+ // POST /chat/stream — streaming via SSE
228
+ if (req.method === "POST" && pathname === "/chat/stream") {
229
+ const body = await readBody(req);
230
+ const prompt = String(body.prompt || "");
231
+ if (!prompt) {
232
+ jsonResponse(res, 400, { error: "prompt is required" });
233
+ return;
234
+ }
235
+ res.writeHead(200, {
236
+ "Content-Type": "text/event-stream",
237
+ "Cache-Control": "no-cache",
238
+ "Connection": "keep-alive",
239
+ "Access-Control-Allow-Origin": "*",
240
+ });
241
+ const sse = (event, data) => {
242
+ res.write(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`);
243
+ };
244
+ const toolRegistry = (0, tools_1.createToolRegistry)(opts.dir);
245
+ const agent = new ai_1.AgentRunner(modelConfig, toolRegistry, permissionManager, hookManager, agentOptions);
246
+ await agent.run(prompt, {
247
+ onToken: (t) => sse("token", { token: t }),
248
+ onToolCall: (name, input) => sse("tool_call", { name, input }),
249
+ onToolResult: (name, result, isError) => sse("tool_result", { name, result, isError }),
250
+ onComplete: () => { sse("complete", {}); res.end(); },
251
+ onError: (e) => { sse("error", { message: e.message }); res.end(); },
252
+ onUsage: (usage) => sse("usage", usage),
253
+ });
254
+ return;
255
+ }
256
+ jsonResponse(res, 404, { error: `Not found: ${pathname}` });
257
+ }
258
+ catch (err) {
259
+ jsonResponse(res, 500, { error: String(err) });
260
+ }
261
+ });
262
+ server.listen(opts.port, opts.host, () => {
263
+ console.log();
264
+ console.log(chalk_1.default.bold.cyan(" 🚀 Cdoing API Server"));
265
+ console.log(chalk_1.default.gray(" ─────────────────────────────────────────"));
266
+ console.log(chalk_1.default.white(` URL: `) + chalk_1.default.cyan(`http://${opts.host}:${opts.port}`));
267
+ console.log(chalk_1.default.white(` Provider: `) + chalk_1.default.yellow(String(modelConfig.provider || "anthropic")));
268
+ console.log(chalk_1.default.white(` Model: `) + chalk_1.default.yellow(String(modelConfig.model || "(default)")));
269
+ console.log(chalk_1.default.white(` Dir: `) + chalk_1.default.gray(opts.dir));
270
+ console.log(chalk_1.default.white(` Mode: `) + chalk_1.default.green(opts.mode || "auto"));
271
+ console.log();
272
+ console.log(chalk_1.default.gray(" Endpoints:"));
273
+ console.log(chalk_1.default.dim(" GET /health"));
274
+ console.log(chalk_1.default.dim(" GET /sessions — list conversations"));
275
+ console.log(chalk_1.default.dim(" POST /sessions — create session"));
276
+ console.log(chalk_1.default.dim(" GET /sessions/:id — get session"));
277
+ console.log(chalk_1.default.dim(" POST /sessions/:id/messages"));
278
+ console.log(chalk_1.default.dim(" POST /chat — one-shot prompt"));
279
+ console.log(chalk_1.default.dim(" POST /chat/stream — streaming SSE"));
280
+ console.log();
281
+ console.log(chalk_1.default.gray(" Press Ctrl+C to stop."));
282
+ console.log();
283
+ });
284
+ // Keep server alive until killed
285
+ await new Promise((_resolve, reject) => {
286
+ server.on("error", reject);
287
+ process.on("SIGINT", () => {
288
+ console.log(chalk_1.default.yellow("\n\n Shutting down server..."));
289
+ server.close(() => process.exit(0));
290
+ });
291
+ });
292
+ }
293
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDH,kCA+NC;AApRD,2CAA6B;AAC7B,yCAA2B;AAC3B,kDAA0B;AAC1B,mCAAyC;AACzC,uCAA2E;AAC3E,qCAKkB;AAClB,mCAA6C;AAC7C,uCAMmB;AAYnB,SAAS,YAAY,CAAC,GAAwB,EAAE,MAAc,EAAE,IAAa;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,cAAc,EAAE,kBAAkB;QAClC,6BAA6B,EAAE,GAAG;QAClC,8BAA8B,EAAE,6BAA6B;QAC7D,8BAA8B,EAAE,oBAAoB;KACrD,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAyB;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;YAAC,CAAC;YAC1C,MAAM,CAAC;gBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,WAAW;QACtC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM;KACZ,CAAC;IAEhB,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,IAAA,gCAAuB,EAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,kBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,kBAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElD,MAAM,YAAY,GAAG;QACnB,aAAa,EAAE,aAAa,IAAI,SAAS;QACzC,MAAM,EAAE,WAAW,CAAC,eAAe,EAAE,IAAI,SAAS;KACnD,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClD,iBAAiB;QACjB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,6BAA6B,EAAE,GAAG;gBAClC,8BAA8B,EAAE,6BAA6B;gBAC7D,8BAA8B,EAAE,oBAAoB;aACrD,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC;QAExC,IAAI,CAAC;YACH,cAAc;YACd,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnD,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE;oBACrB,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,WAAW;oBACvC,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,gBAAgB;YAChB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACrD,MAAM,QAAQ,GAAG,IAAA,2BAAiB,GAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7D,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;iBAChC,CAAC,CAAC,CAAC;gBACJ,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,sCAAsC;YACtC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACtD,MAAM,IAAI,GAAG,IAAA,4BAAkB,EAC7B,MAAM,CAAC,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,EAC3C,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,CACvC,CAAC;gBACF,IAAA,0BAAgB,EAAC,IAAI,CAAC,CAAC;gBACvB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBACtF,OAAO;YACT,CAAC;YAED,oBAAoB;YACpB,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACrE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,eAAe,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,IAAA,0BAAgB,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAC9E,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,sDAAsD;YACtD,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC/E,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,eAAe,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAA,0BAAgB,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAE9E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,EAAE,CAAC;oBAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAEjF,MAAM,YAAY,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,IAAI,gBAAW,CAAC,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;gBAEvG,kBAAkB;gBAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;wBAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;yBACxD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;wBAAE,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC9E,CAAC;gBAED,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,MAAM,KAAK,GAA4D,EAAE,CAAC;gBAE1E,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;oBACtB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7D,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;oBACtB,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;oBACpB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACtD,CAAC,CAAC;gBAEH,IAAA,oBAAU,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACjC,IAAA,oBAAU,EAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAExC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;YAED,+BAA+B;YAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,EAAE,CAAC;oBAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAEjF,MAAM,EAAE,GAAG;oBACT,GAAG,WAAW;oBACd,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D,CAAC;gBAEF,MAAM,YAAY,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,IAAI,gBAAW,CAAC,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;gBAE9F,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,MAAM,KAAK,GAA4D,EAAE,CAAC;gBAC1E,IAAI,KAAK,GAAY,IAAI,CAAC;gBAE1B,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;oBACtB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7D,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;oBACtB,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;oBACpB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACrD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC/B,CAAC,CAAC;gBAEH,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,wCAAwC;YACxC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;gBACzD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,EAAE,CAAC;oBAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAEjF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;oBACjB,cAAc,EAAE,mBAAmB;oBACnC,eAAe,EAAE,UAAU;oBAC3B,YAAY,EAAE,YAAY;oBAC1B,6BAA6B,EAAE,GAAG;iBACnC,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,IAAa,EAAE,EAAE;oBAC3C,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClE,CAAC,CAAC;gBAEF,MAAM,YAAY,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,IAAI,gBAAW,CAAC,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;gBAEvG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;oBACtB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBAC1C,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBACtF,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACrD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACpE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;iBACxC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;QACvC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,IAAI,OAAO,CAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Tool Registration — creates a ToolRegistry with all core tools.
3
+ */
4
+ import { ToolRegistry, SubAgentManager, TodoStore, SandboxManager, PermissionManager } from "@cdoing/core";
5
+ import type { SubAgentRunnerFactory } from "@cdoing/core";
6
+ export interface ToolRegistryOptions {
7
+ subAgentFactory?: SubAgentRunnerFactory;
8
+ subAgentManager?: SubAgentManager;
9
+ todoStore?: TodoStore;
10
+ sandboxManager?: SandboxManager;
11
+ permissionManager?: PermissionManager;
12
+ }
13
+ export declare function createToolRegistry(workingDir: string, optionsOrSubAgentFactory?: ToolRegistryOptions | SubAgentRunnerFactory): ToolRegistry;
14
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,EAYZ,eAAe,EAIf,SAAS,EACT,cAAc,EAUd,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,wBAAwB,CAAC,EAAE,mBAAmB,GAAG,qBAAqB,GACrE,YAAY,CAwDd"}
package/dist/tools.js ADDED
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * Tool Registration — creates a ToolRegistry with all core tools.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createToolRegistry = createToolRegistry;
7
+ const core_1 = require("@cdoing/core");
8
+ function createToolRegistry(workingDir, optionsOrSubAgentFactory) {
9
+ // Support both old signature (subAgentFactory) and new signature (options)
10
+ let options = {};
11
+ if (typeof optionsOrSubAgentFactory === "function") {
12
+ options = { subAgentFactory: optionsOrSubAgentFactory };
13
+ }
14
+ else if (optionsOrSubAgentFactory) {
15
+ options = optionsOrSubAgentFactory;
16
+ }
17
+ const sm = options.sandboxManager;
18
+ const registry = new core_1.ToolRegistry();
19
+ // File tools
20
+ registry.register(new core_1.FileReadTool(workingDir, sm));
21
+ registry.register(new core_1.FileWriteTool(workingDir, sm));
22
+ registry.register(new core_1.FileEditTool(workingDir, sm));
23
+ registry.register(new core_1.MultiEditTool(workingDir, sm));
24
+ registry.register(new core_1.ASTEditTool(workingDir, sm));
25
+ registry.register(new core_1.NotebookEditTool(workingDir, sm));
26
+ // Search & discovery tools
27
+ registry.register(new core_1.GlobSearchTool(workingDir));
28
+ registry.register(new core_1.GrepSearchTool(workingDir));
29
+ registry.register(new core_1.ListDirTool(workingDir, sm));
30
+ registry.register(new core_1.ViewDiffTool(workingDir));
31
+ registry.register(new core_1.ViewRepoMapTool(workingDir));
32
+ registry.register(new core_1.CodebaseSearchTool(workingDir));
33
+ // Execution tools
34
+ registry.register(new core_1.ShellExecTool(workingDir, sm, options.permissionManager));
35
+ registry.register(new core_1.FileRunTool(workingDir, sm));
36
+ registry.register(new core_1.CodeVerifyTool(workingDir));
37
+ // Web tools
38
+ registry.register(new core_1.WebFetchTool(sm));
39
+ registry.register(new core_1.WebSearchTool());
40
+ // Sub-agent (only if factory provided — prevents infinite recursion)
41
+ if (options.subAgentFactory) {
42
+ const manager = options.subAgentManager || new core_1.SubAgentManager();
43
+ registry.register(new core_1.SubAgentTool(options.subAgentFactory, manager));
44
+ registry.register(new core_1.SubAgentStatusTool(manager));
45
+ registry.register(new core_1.SubAgentTerminateTool(manager));
46
+ }
47
+ // Todo tool (for task tracking)
48
+ if (options.todoStore) {
49
+ registry.register(new core_1.TodoTool(options.todoStore));
50
+ }
51
+ // System info tool — gives the LLM live access to its permission/sandbox state
52
+ if (options.permissionManager) {
53
+ registry.register(new core_1.SystemInfoTool(options.permissionManager, registry, sm));
54
+ }
55
+ return registry;
56
+ }
57
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * App — root Ink component.
3
+ *
4
+ * Key design: past messages are printed directly to stdout (so they scroll
5
+ * naturally above the terminal), while Ink only manages the small, fixed-height
6
+ * bottom section: streaming content + tool activity + input + status bar.
7
+ *
8
+ * This prevents Ink from miscalculating its height on every keypress and
9
+ * scrolling the terminal.
10
+ */
11
+ import React from "react";
12
+ import type { ModelConfig } from "@cdoing/ai";
13
+ import type { ToolRegistry, PermissionManager, HookManager, MemoryStore, TodoStore } from "@cdoing/core";
14
+ export interface AppProps {
15
+ modelConfig: Partial<ModelConfig>;
16
+ toolRegistry: ToolRegistry;
17
+ permissionManager: PermissionManager;
18
+ hookManager: HookManager;
19
+ memoryStore: MemoryStore;
20
+ todoStore?: TodoStore;
21
+ initialPrompt?: string;
22
+ }
23
+ export declare const App: React.FC<AppProps>;
24
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,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;AAmDtB,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CA0SlC,CAAC"}