indusagi-coding-agent 0.1.8 → 0.1.9

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 (53) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cli/args.js +2 -2
  3. package/dist/core/agent-session.d.ts +7 -1
  4. package/dist/core/agent-session.d.ts.map +1 -1
  5. package/dist/core/agent-session.js +28 -2
  6. package/dist/core/agent-session.js.map +1 -1
  7. package/dist/core/sdk.d.ts +3 -3
  8. package/dist/core/sdk.d.ts.map +1 -1
  9. package/dist/core/sdk.js +13 -4
  10. package/dist/core/sdk.js.map +1 -1
  11. package/dist/core/subagents.d.ts +29 -0
  12. package/dist/core/subagents.d.ts.map +1 -0
  13. package/dist/core/subagents.js +156 -0
  14. package/dist/core/subagents.js.map +1 -0
  15. package/dist/core/system-prompt.d.ts +4 -1
  16. package/dist/core/system-prompt.d.ts.map +1 -1
  17. package/dist/core/system-prompt.js +52 -19
  18. package/dist/core/system-prompt.js.map +1 -1
  19. package/dist/core/task-session-manager.d.ts +55 -0
  20. package/dist/core/task-session-manager.d.ts.map +1 -0
  21. package/dist/core/task-session-manager.js +410 -0
  22. package/dist/core/task-session-manager.js.map +1 -0
  23. package/dist/core/todo-store.d.ts +20 -0
  24. package/dist/core/todo-store.d.ts.map +1 -0
  25. package/dist/core/todo-store.js +55 -0
  26. package/dist/core/todo-store.js.map +1 -0
  27. package/dist/core/tools/index.d.ts +23 -0
  28. package/dist/core/tools/index.d.ts.map +1 -1
  29. package/dist/core/tools/index.js +36 -3
  30. package/dist/core/tools/index.js.map +1 -1
  31. package/dist/core/tools/task.d.ts +38 -0
  32. package/dist/core/tools/task.d.ts.map +1 -0
  33. package/dist/core/tools/task.js +65 -0
  34. package/dist/core/tools/task.js.map +1 -0
  35. package/dist/core/tools/todo.d.ts +26 -0
  36. package/dist/core/tools/todo.d.ts.map +1 -0
  37. package/dist/core/tools/todo.js +52 -0
  38. package/dist/core/tools/todo.js.map +1 -0
  39. package/dist/index.d.ts +3 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/migrations.d.ts +1 -1
  44. package/dist/migrations.d.ts.map +1 -1
  45. package/dist/migrations.js +3 -3
  46. package/dist/migrations.js.map +1 -1
  47. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  48. package/dist/modes/interactive/components/tool-execution.js +136 -0
  49. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  50. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  51. package/dist/modes/interactive/interactive-mode.js +3 -4
  52. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  53. package/package.json +1 -1
@@ -0,0 +1,410 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import * as os from "node:os";
3
+ import * as path from "node:path";
4
+ import { Agent, } from "indusagi/agent";
5
+ import { buildSystemPrompt } from "./system-prompt.js";
6
+ import { convertToLlm } from "./messages.js";
7
+ import { createBashTool } from "./tools/bash.js";
8
+ import { createEditTool } from "./tools/edit.js";
9
+ import { createFindTool } from "./tools/find.js";
10
+ import { createGrepTool } from "./tools/grep.js";
11
+ import { createLsTool } from "./tools/ls.js";
12
+ import { createReadTool } from "./tools/read.js";
13
+ import { createWriteTool } from "./tools/write.js";
14
+ const DISALLOWED_SUBAGENT_TOOLS = new Set(["task", "todoread", "todowrite"]);
15
+ const DEFAULT_TOOL_NAMES = ["read", "bash", "edit", "write", "grep", "find", "ls"];
16
+ function createConvertToLlmWithBlockImages(settingsManager) {
17
+ return (messages) => {
18
+ const converted = convertToLlm(messages);
19
+ if (!settingsManager.getBlockImages()) {
20
+ return converted;
21
+ }
22
+ return converted.map((msg) => {
23
+ if (msg.role === "user" || msg.role === "toolResult") {
24
+ const content = msg.content;
25
+ if (Array.isArray(content)) {
26
+ const hasImages = content.some((c) => c.type === "image");
27
+ if (hasImages) {
28
+ const filteredContent = content
29
+ .map((c) => c.type === "image" ? { type: "text", text: "Image reading is disabled." } : c)
30
+ .filter((c, i, arr) => !(c.type === "text" &&
31
+ c.text === "Image reading is disabled." &&
32
+ i > 0 &&
33
+ arr[i - 1].type === "text" &&
34
+ arr[i - 1].text === "Image reading is disabled."));
35
+ return { ...msg, content: filteredContent };
36
+ }
37
+ }
38
+ }
39
+ return msg;
40
+ });
41
+ };
42
+ }
43
+ function formatTaskOutput(taskId, result) {
44
+ return [`task_id: ${taskId} (for resuming to continue this task if needed)`, "", "<task_result>", result, "</task_result>"].join("\n");
45
+ }
46
+ function extractAssistantText(message) {
47
+ if (!message || message.role !== "assistant")
48
+ return "";
49
+ const content = message.content;
50
+ if (!Array.isArray(content))
51
+ return "";
52
+ return content
53
+ .filter((block) => block.type === "text")
54
+ .map((block) => block.text)
55
+ .join("\n")
56
+ .trim();
57
+ }
58
+ export class TaskSessionManager {
59
+ constructor(options) {
60
+ this.sessions = new Map();
61
+ this.options = options;
62
+ }
63
+ resolveToolNames(subagent, availableTools) {
64
+ const baseTools = subagent.tools && subagent.tools.length > 0 ? subagent.tools : DEFAULT_TOOL_NAMES;
65
+ const filtered = baseTools
66
+ .map((tool) => (typeof tool === "string" ? tool.trim() : ""))
67
+ .filter((tool) => tool && !DISALLOWED_SUBAGENT_TOOLS.has(tool) && availableTools.has(tool));
68
+ const unique = Array.from(new Set(filtered));
69
+ return unique.length > 0 ? unique : ["read"].filter((tool) => availableTools.has(tool));
70
+ }
71
+ buildToolMap() {
72
+ const autoResizeImages = this.options.settingsManager.getImageAutoResize();
73
+ const commandPrefix = this.options.settingsManager.getShellCommandPrefix();
74
+ const cwd = this.options.cwd;
75
+ return {
76
+ read: createReadTool(cwd, { autoResizeImages }),
77
+ bash: createBashTool(cwd, { commandPrefix }),
78
+ edit: createEditTool(cwd),
79
+ write: createWriteTool(cwd),
80
+ grep: createGrepTool(cwd),
81
+ find: createFindTool(cwd),
82
+ ls: createLsTool(cwd),
83
+ };
84
+ }
85
+ resolveModel(subagent) {
86
+ const defaultModel = this.options.getDefaultModel();
87
+ if (!defaultModel) {
88
+ throw new Error("No model configured for subagent tasks.");
89
+ }
90
+ if (!subagent.model)
91
+ return defaultModel;
92
+ const resolved = this.options.modelRegistry.find(subagent.model.provider, subagent.model.id);
93
+ if (!resolved) {
94
+ throw new Error(`Unknown model for subagent "${subagent.name}": ${subagent.model.provider}/${subagent.model.id}`);
95
+ }
96
+ return resolved;
97
+ }
98
+ buildSubagentPrompt(subagent) {
99
+ const promptParts = [subagent.description, subagent.prompt].filter((part) => !!part?.trim());
100
+ const promptBody = promptParts.join("\n\n");
101
+ const fallback = "You are a delegated subagent. Complete the task and return a concise summary.";
102
+ return `# Subagent: ${subagent.name}\n${promptBody || fallback}`;
103
+ }
104
+ createSession(subagent, taskId) {
105
+ const toolMap = this.buildToolMap();
106
+ const toolNames = this.resolveToolNames(subagent, new Set(Object.keys(toolMap)));
107
+ const tools = toolNames.map((name) => toolMap[name]).filter(Boolean);
108
+ const model = this.resolveModel(subagent);
109
+ let thinkingLevel = subagent.thinkingLevel ?? this.options.getDefaultThinkingLevel();
110
+ if (!model.reasoning) {
111
+ thinkingLevel = "off";
112
+ }
113
+ const sessionId = taskId ?? randomUUID();
114
+ const systemPrompt = buildSystemPrompt({
115
+ cwd: this.options.cwd,
116
+ selectedTools: toolNames,
117
+ contextFiles: this.options.contextFiles,
118
+ skills: this.options.skills,
119
+ appendSystemPrompt: this.buildSubagentPrompt(subagent),
120
+ });
121
+ const agent = new Agent({
122
+ initialState: {
123
+ systemPrompt,
124
+ model,
125
+ thinkingLevel,
126
+ tools,
127
+ },
128
+ convertToLlm: createConvertToLlmWithBlockImages(this.options.settingsManager),
129
+ sessionId: sessionId,
130
+ steeringMode: this.options.settingsManager.getSteeringMode(),
131
+ followUpMode: this.options.settingsManager.getFollowUpMode(),
132
+ thinkingBudgets: this.options.settingsManager.getThinkingBudgets(),
133
+ getApiKey: async (provider) => {
134
+ const resolvedProvider = provider || agent.state.model?.provider;
135
+ if (!resolvedProvider) {
136
+ throw new Error("No model selected");
137
+ }
138
+ const key = await this.options.modelRegistry.getApiKeyForProvider(resolvedProvider);
139
+ if (!key) {
140
+ const currentModel = agent.state.model;
141
+ const isOAuth = currentModel && this.options.modelRegistry.isUsingOAuth(currentModel);
142
+ if (isOAuth) {
143
+ throw new Error(`Authentication failed for "${resolvedProvider}". Credentials may have expired or network is unavailable. Run '/login ${resolvedProvider}' to re-authenticate.`);
144
+ }
145
+ throw new Error(`No API key found for "${resolvedProvider}". Set an API key environment variable or run '/login ${resolvedProvider}'.`);
146
+ }
147
+ return key;
148
+ },
149
+ });
150
+ return {
151
+ id: sessionId,
152
+ subagent,
153
+ agent,
154
+ toolNames,
155
+ model,
156
+ thinkingLevel,
157
+ };
158
+ }
159
+ getOrCreateSession(subagent, taskId) {
160
+ if (taskId) {
161
+ const existing = this.sessions.get(taskId);
162
+ if (existing) {
163
+ if (existing.subagent.name !== subagent.name) {
164
+ throw new Error(`Task ${taskId} belongs to subagent "${existing.subagent.name}", not "${subagent.name}".`);
165
+ }
166
+ return existing;
167
+ }
168
+ }
169
+ const session = this.createSession(subagent, taskId);
170
+ this.sessions.set(session.id, session);
171
+ return session;
172
+ }
173
+ async runTask(params) {
174
+ const subagent = this.options.subagentStore.get(params.subagentType);
175
+ if (!subagent || subagent.mode === "primary") {
176
+ const available = this.options.subagentStore
177
+ .list()
178
+ .filter((agent) => agent.mode !== "primary" && agent.hidden !== true)
179
+ .map((agent) => agent.name)
180
+ .join(", ");
181
+ throw new Error(`Unknown subagent_type "${params.subagentType}". Available subagents: ${available || "(none)"}`);
182
+ }
183
+ const session = this.getOrCreateSession(subagent, params.taskId);
184
+ if (params.signal?.aborted) {
185
+ throw new Error("Operation aborted");
186
+ }
187
+ const startIndex = session.agent.state.messages.length;
188
+ const startedAt = Date.now();
189
+ const onUpdate = params.onUpdate;
190
+ let progressToolCalls = 0;
191
+ let lastProgress;
192
+ let sawToolActivity = false;
193
+ let responseAnnounced = false;
194
+ let lastProgressAt = 0;
195
+ const MIN_PROGRESS_INTERVAL_MS = 500;
196
+ const MAX_PREVIEW_CHARS = 120;
197
+ const MAX_ARG_CHARS = 60;
198
+ const toolArgsById = new Map();
199
+ const normalizeWhitespace = (value) => value.replace(/\s+/g, " ").trim();
200
+ const truncateText = (value, maxChars) => value.length > maxChars ? `${value.slice(0, maxChars - 1)}…` : value;
201
+ const formatPathValue = (value) => {
202
+ if (!value)
203
+ return "(unknown)";
204
+ if (!path.isAbsolute(value))
205
+ return value;
206
+ const relative = path.relative(this.options.cwd, value);
207
+ if (!relative || (!relative.startsWith("..") && !path.isAbsolute(relative))) {
208
+ return relative || ".";
209
+ }
210
+ const home = os.homedir();
211
+ return value.startsWith(home) ? `~${value.slice(home.length)}` : value;
212
+ };
213
+ const formatReadRange = (offset, limit) => {
214
+ if (offset === undefined && limit === undefined)
215
+ return "";
216
+ const start = offset ?? 1;
217
+ if (limit === undefined)
218
+ return `:${start}`;
219
+ const end = start + limit - 1;
220
+ return `:${start}-${end}`;
221
+ };
222
+ const formatLineCount = (count) => {
223
+ if (!count || count <= 0)
224
+ return undefined;
225
+ return `${count} line${count === 1 ? "" : "s"}`;
226
+ };
227
+ const formatToolSummary = (toolName, args) => {
228
+ switch (toolName) {
229
+ case "bash": {
230
+ const command = normalizeWhitespace(args?.command ?? "");
231
+ const preview = command ? truncateText(command, MAX_ARG_CHARS) : "...";
232
+ return `bash ${preview}`;
233
+ }
234
+ case "read": {
235
+ const filePath = formatPathValue(args?.path || args?.file_path);
236
+ const range = formatReadRange(args?.offset, args?.limit);
237
+ return `read ${filePath}${range}`;
238
+ }
239
+ case "write": {
240
+ const filePath = formatPathValue(args?.path || args?.file_path);
241
+ const lineCount = typeof args?.content === "string" ? args.content.split("\n").length : undefined;
242
+ const lineLabel = formatLineCount(lineCount);
243
+ return `write ${filePath}${lineLabel ? ` (${lineLabel})` : ""}`;
244
+ }
245
+ case "edit": {
246
+ const filePath = formatPathValue(args?.path || args?.file_path);
247
+ return `edit ${filePath}`;
248
+ }
249
+ case "grep": {
250
+ const pattern = args?.pattern ? truncateText(normalizeWhitespace(args.pattern), MAX_ARG_CHARS) : "";
251
+ const target = formatPathValue(args?.path || ".");
252
+ const glob = args?.glob ? ` (${args.glob})` : "";
253
+ return pattern ? `grep /${pattern}/ in ${target}${glob}` : `grep in ${target}${glob}`;
254
+ }
255
+ case "find": {
256
+ const pattern = args?.pattern ? truncateText(normalizeWhitespace(args.pattern), MAX_ARG_CHARS) : "";
257
+ const target = formatPathValue(args?.path || ".");
258
+ return pattern ? `find ${pattern} in ${target}` : `find in ${target}`;
259
+ }
260
+ case "ls": {
261
+ const target = formatPathValue(args?.path || ".");
262
+ return `ls ${target}`;
263
+ }
264
+ default:
265
+ return toolName;
266
+ }
267
+ };
268
+ const extractTextFromResult = (result) => {
269
+ const content = result?.content;
270
+ if (!Array.isArray(content))
271
+ return "";
272
+ return content
273
+ .filter((block) => block?.type === "text" && typeof block.text === "string")
274
+ .map((block) => block.text)
275
+ .join("\n")
276
+ .trim();
277
+ };
278
+ const extractLineCount = (result) => {
279
+ const truncation = result?.details?.truncation;
280
+ if (typeof truncation?.outputLines === "number") {
281
+ return truncation.outputLines;
282
+ }
283
+ const text = extractTextFromResult(result);
284
+ if (!text)
285
+ return undefined;
286
+ return text.split("\n").length;
287
+ };
288
+ const formatToolOutputPreview = (toolName, result) => {
289
+ if (toolName !== "bash")
290
+ return undefined;
291
+ const text = extractTextFromResult(result);
292
+ if (!text)
293
+ return undefined;
294
+ const lines = text
295
+ .split("\n")
296
+ .map((line) => normalizeWhitespace(line))
297
+ .filter(Boolean);
298
+ if (lines.length === 0)
299
+ return undefined;
300
+ return truncateText(lines[lines.length - 1], MAX_PREVIEW_CHARS);
301
+ };
302
+ const formatToolEndSummary = (toolName, args, result) => {
303
+ const base = formatToolSummary(toolName, args);
304
+ if (toolName === "bash") {
305
+ const preview = formatToolOutputPreview(toolName, result);
306
+ return preview ? `${base} → ${preview}` : base;
307
+ }
308
+ if (toolName === "read" || toolName === "grep" || toolName === "find" || toolName === "ls") {
309
+ const lineCount = extractLineCount(result);
310
+ const label = formatLineCount(lineCount);
311
+ return label ? `${base} (${label})` : base;
312
+ }
313
+ return base;
314
+ };
315
+ const emitProgress = (message, force = false) => {
316
+ if (!onUpdate || message === lastProgress)
317
+ return;
318
+ const now = Date.now();
319
+ if (!force && now - lastProgressAt < MIN_PROGRESS_INTERVAL_MS)
320
+ return;
321
+ lastProgressAt = now;
322
+ lastProgress = message;
323
+ onUpdate({
324
+ content: [{ type: "text", text: message }],
325
+ details: {
326
+ taskId: session.id,
327
+ subagentType: subagent.name,
328
+ description: params.description,
329
+ result: message,
330
+ toolCalls: progressToolCalls,
331
+ durationMs: Date.now() - startedAt,
332
+ model: { provider: session.model.provider, id: session.model.id },
333
+ },
334
+ });
335
+ };
336
+ const unsubscribe = onUpdate
337
+ ? session.agent.subscribe((event) => {
338
+ if (event.type === "tool_execution_start") {
339
+ sawToolActivity = true;
340
+ toolArgsById.set(event.toolCallId, event.args);
341
+ const summary = formatToolSummary(event.toolName, event.args);
342
+ emitProgress(`Running ${summary}...`, true);
343
+ }
344
+ else if (event.type === "tool_execution_update") {
345
+ if (!toolArgsById.has(event.toolCallId)) {
346
+ toolArgsById.set(event.toolCallId, event.args);
347
+ }
348
+ const preview = formatToolOutputPreview(event.toolName, event.partialResult);
349
+ if (preview) {
350
+ emitProgress(`Output ${event.toolName}: ${preview}`);
351
+ }
352
+ }
353
+ else if (event.type === "tool_execution_end") {
354
+ progressToolCalls += 1;
355
+ const args = toolArgsById.get(event.toolCallId);
356
+ toolArgsById.delete(event.toolCallId);
357
+ const summary = formatToolEndSummary(event.toolName, args, event.result);
358
+ emitProgress(`${event.isError ? "Failed" : "Finished"} ${summary}.`, true);
359
+ }
360
+ else if (event.type === "message_start" &&
361
+ event.message.role === "assistant" &&
362
+ !sawToolActivity &&
363
+ !responseAnnounced) {
364
+ responseAnnounced = true;
365
+ emitProgress("Generating response...", true);
366
+ }
367
+ })
368
+ : undefined;
369
+ const abortHandler = () => session.agent.abort();
370
+ if (params.signal) {
371
+ params.signal.addEventListener("abort", abortHandler, { once: true });
372
+ }
373
+ try {
374
+ await session.agent.prompt(params.prompt);
375
+ }
376
+ finally {
377
+ if (unsubscribe) {
378
+ unsubscribe();
379
+ }
380
+ if (params.signal) {
381
+ params.signal.removeEventListener("abort", abortHandler);
382
+ }
383
+ }
384
+ const durationMs = Date.now() - startedAt;
385
+ const newMessages = session.agent.state.messages.slice(startIndex);
386
+ const toolCalls = newMessages.filter((msg) => msg.role === "toolResult").length;
387
+ const lastAssistant = [...session.agent.state.messages].reverse().find((msg) => msg.role === "assistant");
388
+ if (!lastAssistant || lastAssistant.role !== "assistant") {
389
+ throw new Error("Subagent produced no assistant response.");
390
+ }
391
+ if (lastAssistant.stopReason === "error" || lastAssistant.stopReason === "aborted") {
392
+ throw new Error(lastAssistant.errorMessage || "Subagent task failed.");
393
+ }
394
+ const resultText = extractAssistantText(lastAssistant);
395
+ const output = formatTaskOutput(session.id, resultText);
396
+ return {
397
+ output,
398
+ details: {
399
+ taskId: session.id,
400
+ subagentType: subagent.name,
401
+ description: params.description,
402
+ result: resultText,
403
+ toolCalls,
404
+ durationMs,
405
+ model: { provider: session.model.provider, id: session.model.id },
406
+ },
407
+ };
408
+ }
409
+ }
410
+ //# sourceMappingURL=task-session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-session-manager.js","sourceRoot":"","sources":["../../src/core/task-session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACN,KAAK,GAKL,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAqCnD,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7E,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAEnF,SAAS,iCAAiC,CAAC,eAAgC;IAC1E,OAAO,CAAC,QAAwB,EAAa,EAAE;QAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;oBAC1D,IAAI,SAAS,EAAE,CAAC;wBACf,MAAM,eAAe,GAAG,OAAO;6BAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CACtF;6BACA,MAAM,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CACb,CAAC,CACA,CAAC,CAAC,IAAI,KAAK,MAAM;4BACjB,CAAC,CAAC,IAAI,KAAK,4BAA4B;4BACvC,CAAC,GAAG,CAAC;4BACL,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;4BACzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAoC,CAAC,IAAI,KAAK,4BAA4B,CACpF,CACF,CAAC;wBACH,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;oBAC7C,CAAC;gBACF,CAAC;YACF,CAAC;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,MAAc;IACvD,OAAO,CAAC,YAAY,MAAM,iDAAiD,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAC/H,IAAI,CACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAiC;IAC9D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACZ,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;SACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACV,CAAC;AAED,MAAM,OAAO,kBAAkB;IAI9B,YAAY,OAAkC;QAFtC,aAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;QAGjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAEO,gBAAgB,CAAC,QAA4B,EAAE,cAA2B;QACjF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpG,MAAM,QAAQ,GAAG,SAAS;aACxB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,YAAY;QACnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAE7B,OAAO;YACN,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,CAAC;YAC/C,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,CAAC;YAC5C,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC;YACzB,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC;YAC3B,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC;YACzB,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC;YACzB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC;SACrB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAA4B;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,OAAO,YAAY,CAAC;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,+BAA+B,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAChG,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,mBAAmB,CAAC,QAA4B;QACvD,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7G,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,+EAA+E,CAAC;QACjG,OAAO,eAAe,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;IAClE,CAAC;IAEO,aAAa,CAAC,QAA4B,EAAE,MAAe;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAqB,CAAC;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtB,aAAa,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,iBAAiB,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;SACtD,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACvB,YAAY,EAAE;gBACb,YAAY;gBACZ,KAAK;gBACL,aAAa;gBACb,KAAK;aACL;YACD,YAAY,EAAE,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC7E,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE;YAC5D,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE;YAC5D,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,EAAE;YAClE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC7B,MAAM,gBAAgB,GAAG,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACtC,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;gBACpF,IAAI,CAAC,GAAG,EAAE,CAAC;oBACV,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvC,MAAM,OAAO,GAAG,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBACtF,IAAI,OAAO,EAAE,CAAC;wBACb,MAAM,IAAI,KAAK,CACd,8BAA8B,gBAAgB,0EAA0E,gBAAgB,uBAAuB,CAC/J,CAAC;oBACH,CAAC;oBACD,MAAM,IAAI,KAAK,CACd,yBAAyB,gBAAgB,yDAAyD,gBAAgB,IAAI,CACtH,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,CAAC;YACZ,CAAC;SACD,CAAC,CAAC;QAEH,OAAO;YACN,EAAE,EAAE,SAAS;YACb,QAAQ;YACR,KAAK;YACL,SAAS;YACT,KAAK;YACL,aAAa;SACb,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,QAA4B,EAAE,MAAe;QACvE,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC9C,MAAM,IAAI,KAAK,CACd,QAAQ,MAAM,yBAAyB,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,QAAQ,CAAC,IAAI,IAAI,CACzF,CAAC;gBACH,CAAC;gBACD,OAAO,QAAQ,CAAC;YACjB,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAOb;QACA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;iBAC1C,IAAI,EAAE;iBACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;iBACpE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;iBAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,IAAI,KAAK,CACd,0BAA0B,MAAM,CAAC,YAAY,2BAA2B,SAAS,IAAI,QAAQ,EAAE,CAC/F,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,YAAgC,CAAC;QACrC,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,wBAAwB,GAAG,GAAG,CAAC;QACrC,MAAM,iBAAiB,GAAG,GAAG,CAAC;QAC9B,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAe,CAAC;QAE5C,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACjF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,EAAE,CACxD,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAEtE,MAAM,eAAe,GAAG,CAAC,KAAc,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK;gBAAE,OAAO,WAAW,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC7E,OAAO,QAAQ,IAAI,GAAG,CAAC;YACxB,CAAC;YAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACxE,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,CAAC,MAAe,EAAE,KAAc,EAAE,EAAE;YAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,CAAC,KAAc,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC3C,OAAO,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjD,CAAC,CAAC;QAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,IAAS,EAAE,EAAE;YACzD,QAAQ,QAAQ,EAAE,CAAC;gBAClB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACb,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;oBACzD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBACvE,OAAO,QAAQ,OAAO,EAAE,CAAC;gBAC1B,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACb,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC;oBAChE,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBACzD,OAAO,QAAQ,QAAQ,GAAG,KAAK,EAAE,CAAC;gBACnC,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACd,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC;oBAChE,MAAM,SAAS,GAAG,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;oBAClG,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC7C,OAAO,SAAS,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACjE,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACb,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC;oBAChE,OAAO,QAAQ,QAAQ,EAAE,CAAC;gBAC3B,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACb,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpG,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;oBAClD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,QAAQ,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,MAAM,GAAG,IAAI,EAAE,CAAC;gBACvF,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACb,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpG,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;oBAClD,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC;gBACvE,CAAC;gBACD,KAAK,IAAI,CAAC,CAAC,CAAC;oBACX,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;oBAClD,OAAO,MAAM,MAAM,EAAE,CAAC;gBACvB,CAAC;gBACD;oBACC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACF,CAAC,CAAC;QAEF,MAAM,qBAAqB,GAAG,CAAC,MAAW,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,EAAE,CAAC;YACvC,OAAO,OAAO;iBACZ,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;iBAC3E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;iBAC1B,IAAI,CAAC,IAAI,CAAC;iBACV,IAAI,EAAE,CAAC;QACV,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,CAAC,MAAW,EAAE,EAAE;YACxC,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;YAC/C,IAAI,OAAO,UAAU,EAAE,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACjD,OAAO,UAAU,CAAC,WAAW,CAAC;YAC/B,CAAC;YAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC;QAEF,MAAM,uBAAuB,GAAG,CAAC,QAAgB,EAAE,MAAW,EAAE,EAAE;YACjE,IAAI,QAAQ,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAC;YAC1C,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI;iBAChB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;iBACxC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YACzC,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACjE,CAAC,CAAC;QAEF,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,IAAS,EAAE,MAAW,EAAE,EAAE;YACzE,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAChD,CAAC;YAED,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC5F,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;gBACzC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE;YACvD,IAAI,CAAC,QAAQ,IAAI,OAAO,KAAK,YAAY;gBAAE,OAAO;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,cAAc,GAAG,wBAAwB;gBAAE,OAAO;YACtE,cAAc,GAAG,GAAG,CAAC;YACrB,YAAY,GAAG,OAAO,CAAC;YACvB,QAAQ,CAAC;gBACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE;oBACR,MAAM,EAAE,OAAO,CAAC,EAAE;oBAClB,YAAY,EAAE,QAAQ,CAAC,IAAI;oBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,iBAAiB;oBAC5B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;iBACjE;aACD,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,QAAQ;YAC3B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClC,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;oBAC3C,eAAe,GAAG,IAAI,CAAC;oBACvB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9D,YAAY,CAAC,WAAW,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;oBACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;wBACzC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChD,CAAC;oBACD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;oBAC7E,IAAI,OAAO,EAAE,CAAC;wBACb,YAAY,CAAC,UAAU,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;oBACtD,CAAC;gBACF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBAChD,iBAAiB,IAAI,CAAC,CAAC;oBACvB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAChD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBACtC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBACzE,YAAY,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC5E,CAAC;qBAAM,IACN,KAAK,CAAC,IAAI,KAAK,eAAe;oBAC9B,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;oBAClC,CAAC,eAAe;oBAChB,CAAC,iBAAiB,EACjB,CAAC;oBACF,iBAAiB,GAAG,IAAI,CAAC;oBACzB,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACV,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,EAAE,CAAC;YACf,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QAChF,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAE1G,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,aAAa,CAAC,UAAU,KAAK,OAAO,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,uBAAuB,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAExD,OAAO;YACN,MAAM;YACN,OAAO,EAAE;gBACR,MAAM,EAAE,OAAO,CAAC,EAAE;gBAClB,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,UAAU;gBAClB,SAAS;gBACT,UAAU;gBACV,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;aACjE;SACD,CAAC;IACH,CAAC;CACD"}
@@ -0,0 +1,20 @@
1
+ import type { SessionManager } from "./session-manager.js";
2
+ export declare const TODO_CUSTOM_TYPE = "todo";
3
+ export declare const TODO_STATUSES: readonly ["pending", "in_progress", "completed", "cancelled"];
4
+ export type TodoStatus = (typeof TODO_STATUSES)[number];
5
+ export declare const TODO_PRIORITIES: readonly ["high", "medium", "low"];
6
+ export type TodoPriority = (typeof TODO_PRIORITIES)[number];
7
+ export interface TodoItem {
8
+ content: string;
9
+ status: TodoStatus;
10
+ priority: TodoPriority;
11
+ }
12
+ export declare class TodoStore {
13
+ private todos;
14
+ private sessionManager?;
15
+ constructor(sessionManager?: SessionManager);
16
+ getTodos(): TodoItem[];
17
+ setTodos(todos: TodoItem[]): void;
18
+ rebuildFromBranch(): void;
19
+ }
20
+ //# sourceMappingURL=todo-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-store.d.ts","sourceRoot":"","sources":["../../src/core/todo-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,eAAO,MAAM,aAAa,+DAAgE,CAAC;AAC3F,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe,oCAAqC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CACvB;AA0BD,qBAAa,SAAS;IACrB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,cAAc,CAAC,EAAE,cAAc;IAI3C,QAAQ,IAAI,QAAQ,EAAE;IAItB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAOjC,iBAAiB,IAAI,IAAI;CAgBzB"}
@@ -0,0 +1,55 @@
1
+ export const TODO_CUSTOM_TYPE = "todo";
2
+ export const TODO_STATUSES = ["pending", "in_progress", "completed", "cancelled"];
3
+ export const TODO_PRIORITIES = ["high", "medium", "low"];
4
+ function isTodoItem(value) {
5
+ if (!value || typeof value !== "object")
6
+ return false;
7
+ const todo = value;
8
+ return (typeof todo.content === "string" &&
9
+ TODO_STATUSES.includes(todo.status) &&
10
+ TODO_PRIORITIES.includes(todo.priority));
11
+ }
12
+ function isTodoEntryData(value) {
13
+ if (!value || typeof value !== "object")
14
+ return false;
15
+ const data = value;
16
+ return Array.isArray(data.todos) && data.todos.every(isTodoItem);
17
+ }
18
+ function cloneTodos(todos) {
19
+ return todos.map((todo) => ({ ...todo }));
20
+ }
21
+ export class TodoStore {
22
+ constructor(sessionManager) {
23
+ this.todos = [];
24
+ this.sessionManager = sessionManager;
25
+ }
26
+ getTodos() {
27
+ return cloneTodos(this.todos);
28
+ }
29
+ setTodos(todos) {
30
+ this.todos = cloneTodos(todos);
31
+ if (this.sessionManager) {
32
+ this.sessionManager.appendCustomEntry(TODO_CUSTOM_TYPE, { todos: this.todos });
33
+ }
34
+ }
35
+ rebuildFromBranch() {
36
+ if (!this.sessionManager) {
37
+ this.todos = [];
38
+ return;
39
+ }
40
+ const entries = this.sessionManager.getBranch();
41
+ for (let i = entries.length - 1; i >= 0; i -= 1) {
42
+ const entry = entries[i];
43
+ if (entry?.type !== "custom")
44
+ continue;
45
+ if (entry.customType !== TODO_CUSTOM_TYPE)
46
+ continue;
47
+ if (!isTodoEntryData(entry.data))
48
+ continue;
49
+ this.todos = cloneTodos(entry.data.todos);
50
+ return;
51
+ }
52
+ this.todos = [];
53
+ }
54
+ }
55
+ //# sourceMappingURL=todo-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-store.js","sourceRoot":"","sources":["../../src/core/todo-store.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;AAG3F,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAalE,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,IAAI,GAAG,KAAiB,CAAC;IAC/B,OAAO,CACN,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAChC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CACvC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,IAAI,GAAG,KAAsB,CAAC;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,OAAO,SAAS;IAIrB,YAAY,cAA+B;QAHnC,UAAK,GAAe,EAAE,CAAC;QAI9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACtC,CAAC;IAED,QAAQ;QACP,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ,CAAC,KAAiB;QACzB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;IACF,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACvC,IAAI,KAAK,CAAC,UAAU,KAAK,gBAAgB;gBAAE,SAAS;YACpD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC3C,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACjB,CAAC;CACD"}
@@ -5,10 +5,14 @@ export { createGrepTool, type GrepOperations, type GrepToolDetails, type GrepToo
5
5
  export { createLsTool, type LsOperations, type LsToolDetails, type LsToolOptions, lsTool } from "./ls.js";
6
6
  export { createReadTool, type ReadOperations, type ReadToolDetails, type ReadToolOptions, readTool, } from "./read.js";
7
7
  export { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, type TruncationOptions, type TruncationResult, truncateHead, truncateLine, truncateTail, } from "./truncate.js";
8
+ export { createTodoReadTool, createTodoWriteTool, todoReadTool, todoWriteTool, type TodoToolDetails, } from "./todo.js";
9
+ export { createTaskTool, taskTool, type TaskToolDetails, type TaskToolOptions, } from "./task.js";
8
10
  export { createWriteTool, type WriteOperations, type WriteToolOptions, writeTool } from "./write.js";
9
11
  import type { AgentTool } from "indusagi/agent";
12
+ import { TodoStore } from "../todo-store.js";
10
13
  import { type BashToolOptions } from "./bash.js";
11
14
  import { type ReadToolOptions } from "./read.js";
15
+ import { type TaskToolOptions } from "./task.js";
12
16
  /** Tool type (AgentTool from indusagi-ai) */
13
17
  export type Tool = AgentTool<any>;
14
18
  export declare const codingTools: Tool[];
@@ -50,6 +54,21 @@ export declare const allTools: {
50
54
  path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
51
55
  limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
52
56
  }>, any>;
57
+ task: AgentTool<import("@sinclair/typebox").TObject<{
58
+ description: import("@sinclair/typebox").TString;
59
+ prompt: import("@sinclair/typebox").TString;
60
+ subagent_type: import("@sinclair/typebox").TString;
61
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
62
+ command: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
63
+ }>, import("./task.js").TaskToolDetails>;
64
+ todoread: AgentTool<import("@sinclair/typebox").TObject<{}>, import("./todo.js").TodoToolDetails>;
65
+ todowrite: AgentTool<import("@sinclair/typebox").TObject<{
66
+ todos: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
67
+ content: import("@sinclair/typebox").TString;
68
+ status: import("@sinclair/typebox").TUnsafe<"pending" | "in_progress" | "completed" | "cancelled">;
69
+ priority: import("@sinclair/typebox").TUnsafe<"low" | "medium" | "high">;
70
+ }>>;
71
+ }>, import("./todo.js").TodoToolDetails>;
53
72
  };
54
73
  export type ToolName = keyof typeof allTools;
55
74
  export interface ToolsOptions {
@@ -57,6 +76,10 @@ export interface ToolsOptions {
57
76
  read?: ReadToolOptions;
58
77
  /** Options for the bash tool */
59
78
  bash?: BashToolOptions;
79
+ /** Task tool dependencies */
80
+ task?: TaskToolOptions;
81
+ /** Todo store for todoread/todowrite */
82
+ todoStore?: TodoStore;
60
83
  }
61
84
  /**
62
85
  * Create coding tools configured for a specific working directory.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,QAAQ,EACR,cAAc,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EACN,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,QAAQ,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,YAAY,EACZ,YAAY,EACZ,YAAY,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,eAAe,EAA4B,MAAM,WAAW,CAAC;AAK3E,OAAO,EAAkB,KAAK,eAAe,EAAY,MAAM,WAAW,CAAC;AAG3E,6CAA6C;AAC7C,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAGlC,eAAO,MAAM,WAAW,EAAE,IAAI,EAA8C,CAAC;AAG7E,eAAO,MAAM,aAAa,EAAE,IAAI,EAA2C,CAAC;AAG5E,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQpB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,QAAQ,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC5B,gCAAgC;IAChC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,gCAAgC;IAChC,IAAI,CAAC,EAAE,eAAe,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAO7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAE/E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAU1F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,QAAQ,EACR,cAAc,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EACN,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,QAAQ,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,YAAY,EACZ,YAAY,EACZ,YAAY,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,cAAc,EACd,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,eAAe,EAA4B,MAAM,WAAW,CAAC;AAK3E,OAAO,EAAkB,KAAK,eAAe,EAAY,MAAM,WAAW,CAAC;AAE3E,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAG3E,6CAA6C;AAC7C,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAGlC,eAAO,MAAM,WAAW,EAAE,IAAI,EAQ7B,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,IAAI,EAAyD,CAAC;AAG1F,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWpB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,QAAQ,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC5B,gCAAgC;IAChC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,gCAAgC;IAChC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,wCAAwC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAY7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAS/E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAe1F"}