@dlnk/cli 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tools.js CHANGED
@@ -33,21 +33,41 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.TOOL_MAP = exports.ALL_TOOLS = void 0;
36
+ exports.TOOL_MAP = exports.ALL_TOOLS = exports.gitTool = exports.searchTool = exports.fetchUrlTool = exports.shellTool = exports.listDirTool = exports.patchFileTool = exports.writeFileTool = exports.readFileTool = void 0;
37
37
  exports.getToolsSystemPrompt = getToolsSystemPrompt;
38
38
  exports.parseToolCall = parseToolCall;
39
39
  exports.executeTool = executeTool;
40
+ const zod_1 = require("zod");
41
+ // ── DANGEROUS patterns ────────────────────────────────────────
42
+ const DANGEROUS = [
43
+ /rm\s+-rf\s+\//,
44
+ /mkfs/,
45
+ /dd\s+if=/,
46
+ />\s*\/dev\/(sd|hd|nvme)/,
47
+ /chmod\s+777\s+\//,
48
+ /curl.*\|\s*(bash|sh)/,
49
+ /wget.*\|\s*(bash|sh)/,
50
+ ];
51
+ // ── Tool Registry ──────────────────────────────────────────────
40
52
  const fs = __importStar(require("fs"));
41
53
  const path = __importStar(require("path"));
42
54
  const child_process_1 = require("child_process");
43
- // ── File System Tools ──────────────────────────────────────────
44
- const readFileTool = {
55
+ // read_file
56
+ exports.readFileTool = {
45
57
  name: 'read_file',
46
- description: 'Read contents of a file',
47
- parameters: { path: 'File path to read' },
48
- execute: async ({ path: filePath }) => {
58
+ description: 'Read file contents. Returns text.',
59
+ schema: zod_1.z.object({
60
+ path: zod_1.z.string().describe('File path to read'),
61
+ lines: zod_1.z.tuple([zod_1.z.number(), zod_1.z.number()]).optional().describe('[start, end] line range (1-indexed)'),
62
+ }),
63
+ permission: { mode: 'auto' },
64
+ execute: async ({ path: filePath, lines }) => {
49
65
  try {
50
- const content = fs.readFileSync(filePath, 'utf-8');
66
+ let content = fs.readFileSync(filePath, 'utf-8');
67
+ if (lines) {
68
+ const [s, e] = lines;
69
+ content = content.split('\n').slice(s - 1, e).join('\n');
70
+ }
51
71
  return { success: true, output: content };
52
72
  }
53
73
  catch (e) {
@@ -55,66 +75,100 @@ const readFileTool = {
55
75
  }
56
76
  }
57
77
  };
58
- const writeFileTool = {
78
+ // write_file
79
+ exports.writeFileTool = {
59
80
  name: 'write_file',
60
- description: 'Write content to a file (creates directories if needed)',
61
- parameters: { path: 'File path to write', content: 'Content to write' },
81
+ description: 'Write or overwrite a file.',
82
+ schema: zod_1.z.object({
83
+ path: zod_1.z.string().describe('File path'),
84
+ content: zod_1.z.string().describe('Full content to write'),
85
+ }),
86
+ permission: { mode: 'ask' },
62
87
  execute: async ({ path: filePath, content }) => {
63
88
  try {
64
89
  const dir = path.dirname(filePath);
65
90
  if (!fs.existsSync(dir))
66
91
  fs.mkdirSync(dir, { recursive: true });
67
92
  fs.writeFileSync(filePath, content, 'utf-8');
68
- return { success: true, output: `Written ${content.length} bytes to ${filePath}` };
93
+ return { success: true, output: `Written ${content.length} bytes ${filePath}` };
69
94
  }
70
95
  catch (e) {
71
96
  return { success: false, output: '', error: e.message };
72
97
  }
73
98
  }
74
99
  };
75
- const listDirTool = {
76
- name: 'list_dir',
77
- description: 'List files and directories',
78
- parameters: { path: 'Directory path (default: current dir)' },
79
- execute: async ({ path: dirPath = '.' }) => {
100
+ // patch_file apply unified diff style edit
101
+ exports.patchFileTool = {
102
+ name: 'patch_file',
103
+ description: 'Replace a specific block of text in a file (find & replace). Safer than write_file.',
104
+ schema: zod_1.z.object({
105
+ path: zod_1.z.string().describe('File path'),
106
+ old_text: zod_1.z.string().describe('Exact text to find and replace'),
107
+ new_text: zod_1.z.string().describe('Replacement text'),
108
+ }),
109
+ permission: { mode: 'auto' },
110
+ execute: async ({ path: filePath, old_text, new_text }) => {
80
111
  try {
81
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
82
- const lines = entries.map(e => `${e.isDirectory() ? '[DIR]' : '[FILE]'} ${e.name}`);
83
- return { success: true, output: lines.join('\n') };
112
+ const content = fs.readFileSync(filePath, 'utf-8');
113
+ if (!content.includes(old_text)) {
114
+ return { success: false, output: '', error: `Text not found in ${filePath}` };
115
+ }
116
+ const newContent = content.replace(old_text, new_text);
117
+ fs.writeFileSync(filePath, newContent, 'utf-8');
118
+ return { success: true, output: `Patched ${filePath}` };
84
119
  }
85
120
  catch (e) {
86
121
  return { success: false, output: '', error: e.message };
87
122
  }
88
123
  }
89
124
  };
90
- const appendFileTool = {
91
- name: 'append_file',
92
- description: 'Append content to a file',
93
- parameters: { path: 'File path', content: 'Content to append' },
94
- execute: async ({ path: filePath, content }) => {
125
+ // list_dir
126
+ exports.listDirTool = {
127
+ name: 'list_dir',
128
+ description: 'List directory contents.',
129
+ schema: zod_1.z.object({
130
+ path: zod_1.z.string().default('.').describe('Directory path'),
131
+ recursive: zod_1.z.boolean().default(false).describe('List recursively'),
132
+ }),
133
+ permission: { mode: 'auto' },
134
+ execute: async ({ path: dirPath, recursive }) => {
95
135
  try {
96
- fs.appendFileSync(filePath, content, 'utf-8');
97
- return { success: true, output: `Appended to ${filePath}` };
136
+ const cmd = recursive
137
+ ? `find ${dirPath} -not -path '*/node_modules/*' -not -path '*/.git/*' | head -100`
138
+ : `ls -la ${dirPath}`;
139
+ const out = (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', timeout: 5000 });
140
+ return { success: true, output: out.trim() };
98
141
  }
99
142
  catch (e) {
100
143
  return { success: false, output: '', error: e.message };
101
144
  }
102
145
  }
103
146
  };
104
- // ── Shell Tool ─────────────────────────────────────────────────
105
- const shellTool = {
147
+ // shell
148
+ exports.shellTool = {
106
149
  name: 'shell',
107
- description: 'Execute a shell command (use with caution)',
108
- parameters: { command: 'Command to execute', cwd: 'Working directory (optional)' },
109
- execute: async ({ command, cwd }) => {
150
+ description: 'Execute a shell command. For code execution, file operations, git, npm, etc.',
151
+ schema: zod_1.z.object({
152
+ command: zod_1.z.string().describe('Shell command to run'),
153
+ cwd: zod_1.z.string().optional().describe('Working directory'),
154
+ timeout: zod_1.z.number().default(30000).describe('Timeout in ms'),
155
+ }),
156
+ permission: { mode: 'ask', blockedPatterns: DANGEROUS },
157
+ execute: async ({ command, cwd, timeout }, ctx) => {
158
+ // Check dangerous patterns
159
+ for (const pat of DANGEROUS) {
160
+ if (pat.test(command)) {
161
+ return { success: false, output: '', error: `Blocked: dangerous command pattern detected` };
162
+ }
163
+ }
110
164
  try {
111
- const output = (0, child_process_1.execSync)(command, {
112
- cwd: cwd || process.cwd(),
113
- timeout: 30000,
165
+ const out = (0, child_process_1.execSync)(command, {
166
+ cwd: cwd || ctx.cwd,
114
167
  encoding: 'utf-8',
115
- maxBuffer: 1024 * 1024 * 5
168
+ timeout,
169
+ maxBuffer: 1024 * 1024 * 5,
116
170
  });
117
- return { success: true, output: output.trim() };
171
+ return { success: true, output: out.trim() };
118
172
  }
119
173
  catch (e) {
120
174
  return {
@@ -125,76 +179,140 @@ const shellTool = {
125
179
  }
126
180
  }
127
181
  };
128
- // ── Web Search Tool ────────────────────────────────────────────
129
- const searchTool = {
182
+ // fetch_url
183
+ exports.fetchUrlTool = {
184
+ name: 'fetch_url',
185
+ description: 'Fetch content from a URL. Returns text/HTML.',
186
+ schema: zod_1.z.object({
187
+ url: zod_1.z.string().url().describe('URL to fetch'),
188
+ method: zod_1.z.enum(['GET', 'POST']).default('GET'),
189
+ body: zod_1.z.string().optional(),
190
+ }),
191
+ permission: { mode: 'auto' },
192
+ execute: async ({ url, method, body }) => {
193
+ try {
194
+ const fetch = (await Promise.resolve().then(() => __importStar(require('node-fetch')))).default;
195
+ const res = await fetch(url, {
196
+ method,
197
+ body: body || undefined,
198
+ headers: { 'User-Agent': 'dlnk-agent/0.3.0' },
199
+ timeout: 15000,
200
+ });
201
+ const text = await res.text();
202
+ // Truncate large responses
203
+ const out = text.length > 8000 ? text.slice(0, 8000) + '\n[truncated...]' : text;
204
+ return { success: true, output: out };
205
+ }
206
+ catch (e) {
207
+ return { success: false, output: '', error: e.message };
208
+ }
209
+ }
210
+ };
211
+ // search_web
212
+ exports.searchTool = {
130
213
  name: 'search_web',
131
- description: 'Search the web using DuckDuckGo',
132
- parameters: { query: 'Search query' },
214
+ description: 'Search the web using DuckDuckGo.',
215
+ schema: zod_1.z.object({
216
+ query: zod_1.z.string().describe('Search query'),
217
+ }),
218
+ permission: { mode: 'auto' },
133
219
  execute: async ({ query }) => {
134
220
  try {
135
221
  const fetch = (await Promise.resolve().then(() => __importStar(require('node-fetch')))).default;
136
222
  const url = `https://api.duckduckgo.com/?q=${encodeURIComponent(query)}&format=json&no_html=1&skip_disambig=1`;
137
- const res = await fetch(url);
223
+ const res = await fetch(url, { timeout: 10000 });
138
224
  const data = await res.json();
139
225
  const results = [];
140
226
  if (data.AbstractText)
141
- results.push(`Summary: ${data.AbstractText}`);
227
+ results.push(`📄 ${data.AbstractText}`);
142
228
  if (data.RelatedTopics?.length) {
143
- data.RelatedTopics.slice(0, 5).forEach((t) => {
229
+ data.RelatedTopics.slice(0, 6).forEach((t) => {
144
230
  if (t.Text)
145
- results.push(`- ${t.Text}`);
231
+ results.push(`• ${t.Text}`);
146
232
  });
147
233
  }
148
- return {
149
- success: true,
150
- output: results.length ? results.join('\n') : 'No results found'
151
- };
234
+ return { success: true, output: results.join('\n') || 'No results.' };
152
235
  }
153
236
  catch (e) {
154
237
  return { success: false, output: '', error: e.message };
155
238
  }
156
239
  }
157
240
  };
158
- // ── Tool Registry ──────────────────────────────────────────────
241
+ // git_status / git operations
242
+ exports.gitTool = {
243
+ name: 'git',
244
+ description: 'Run git commands (status, diff, log, add, commit, etc.)',
245
+ schema: zod_1.z.object({
246
+ subcommand: zod_1.z.string().describe('Git subcommand e.g. "status", "diff HEAD", "log --oneline -5"'),
247
+ cwd: zod_1.z.string().optional(),
248
+ }),
249
+ permission: { mode: 'auto' },
250
+ execute: async ({ subcommand, cwd }, ctx) => {
251
+ try {
252
+ const out = (0, child_process_1.execSync)(`git ${subcommand}`, {
253
+ cwd: cwd || ctx.cwd,
254
+ encoding: 'utf-8',
255
+ timeout: 15000,
256
+ });
257
+ return { success: true, output: out.trim() };
258
+ }
259
+ catch (e) {
260
+ return { success: false, output: e.stderr?.trim() || e.message, error: e.stderr?.trim() };
261
+ }
262
+ }
263
+ };
264
+ // ── Registry ───────────────────────────────────────────────────
159
265
  exports.ALL_TOOLS = [
160
- readFileTool,
161
- writeFileTool,
162
- appendFileTool,
163
- listDirTool,
164
- shellTool,
165
- searchTool,
266
+ exports.readFileTool,
267
+ exports.writeFileTool,
268
+ exports.patchFileTool,
269
+ exports.listDirTool,
270
+ exports.shellTool,
271
+ exports.fetchUrlTool,
272
+ exports.searchTool,
273
+ exports.gitTool,
166
274
  ];
167
275
  exports.TOOL_MAP = Object.fromEntries(exports.ALL_TOOLS.map(t => [t.name, t]));
168
- function getToolsSystemPrompt() {
276
+ // ── System prompt builder ──────────────────────────────────────
277
+ function getToolsSystemPrompt(cwd) {
169
278
  const toolDocs = exports.ALL_TOOLS.map(t => {
170
- const params = Object.entries(t.parameters)
171
- .map(([k, v]) => ` ${k}: ${v}`)
279
+ const shape = t.schema instanceof zod_1.z.ZodObject ? t.schema.shape : {};
280
+ const params = Object.entries(shape)
281
+ .map(([k, v]) => ` ${k}: ${v.description || ''}`)
172
282
  .join('\n');
173
- return `- ${t.name}: ${t.description}\n Parameters:\n${params}`;
283
+ return `### ${t.name}\n${t.description}\nParameters:\n${params}`;
174
284
  }).join('\n\n');
175
- return `You are a powerful AI agent with access to the following tools:
285
+ return `You are a powerful AI coding agent like Claude Code or Gemini CLI.
286
+ You can autonomously read, write, and execute code to accomplish tasks.
287
+
288
+ Working directory: ${cwd}
176
289
 
290
+ ## Available Tools
177
291
  ${toolDocs}
178
292
 
179
- To use a tool, respond with a JSON block in this exact format:
293
+ ## Tool Call Format
294
+ When you need to use a tool, emit a JSON block:
180
295
  \`\`\`tool
181
296
  {"tool": "tool_name", "params": {"key": "value"}}
182
297
  \`\`\`
183
298
 
184
- Rules:
185
- - Use tools to accomplish real tasks (read/write files, run commands, search web)
186
- - After each tool call, you will see the result and can call another tool
187
- - When the task is complete, provide a final summary WITHOUT a tool call
188
- - Be precise and efficient — complete tasks in as few steps as possible
189
- - For file paths, use relative paths unless absolute is required`;
299
+ ## Rules
300
+ 1. Think step by step before using tools
301
+ 2. Use patch_file for small edits (safer than write_file)
302
+ 3. Always read a file before editing it
303
+ 4. Run tests/verification after making changes
304
+ 5. If a command fails, diagnose and retry with corrected approach
305
+ 6. When done, provide a clear summary of what was accomplished
306
+ 7. Be concise — don't explain things the user didn't ask for`;
190
307
  }
308
+ // ── Tool call parser ───────────────────────────────────────────
191
309
  function parseToolCall(text) {
192
310
  const match = text.match(/```tool\s*([\s\S]*?)\s*```/);
193
311
  if (!match)
194
312
  return null;
195
313
  try {
196
314
  const parsed = JSON.parse(match[1]);
197
- if (parsed.tool && parsed.params)
315
+ if (parsed.tool && parsed.params !== undefined)
198
316
  return parsed;
199
317
  return null;
200
318
  }
@@ -202,10 +320,29 @@ function parseToolCall(text) {
202
320
  return null;
203
321
  }
204
322
  }
205
- async function executeTool(call) {
323
+ // ── Execute with validation ────────────────────────────────────
324
+ async function executeTool(call, ctx) {
206
325
  const tool = exports.TOOL_MAP[call.tool];
207
326
  if (!tool)
208
327
  return { success: false, output: '', error: `Unknown tool: ${call.tool}` };
209
- return await tool.execute(call.params || {});
328
+ // Zod validate
329
+ const parsed = tool.schema.safeParse(call.params);
330
+ if (!parsed.success) {
331
+ return {
332
+ success: false,
333
+ output: '',
334
+ error: `Invalid params: ${parsed.error.issues.map((i) => i.message).join(', ')}`
335
+ };
336
+ }
337
+ // Permission check
338
+ if (tool.permission.mode === 'deny') {
339
+ return { success: false, output: '', error: 'Tool is disabled (deny mode)' };
340
+ }
341
+ if (tool.permission.mode === 'ask') {
342
+ const allowed = await ctx.confirm(`Allow: ${call.tool} ${JSON.stringify(call.params)}`);
343
+ if (!allowed)
344
+ return { success: false, output: '', error: 'Denied by user' };
345
+ }
346
+ return await tool.execute(parsed.data, ctx);
210
347
  }
211
348
  //# sourceMappingURL=tools.js.map
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqJA,oDAuBC;AAED,sCAUC;AAED,kCAIC;AA9LD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AAoBzC,kEAAkE;AAClE,MAAM,YAAY,GAAS;IACzB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,yBAAyB;IACtC,UAAU,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAS;IAC1B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,yDAAyD;IACtE,UAAU,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,kBAAkB,EAAE;IACvE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,OAAO,CAAC,MAAM,aAAa,QAAQ,EAAE,EAAE,CAAC;QACrF,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,GAAS;IACxB,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,4BAA4B;IACzC,UAAU,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE;IAC7D,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,cAAc,GAAS;IAC3B,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,0BAA0B;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE;IAC/D,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,QAAQ,EAAE,EAAE,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,kEAAkE;AAClE,MAAM,SAAS,GAAS;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,4CAA4C;IACzD,UAAU,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,8BAA8B,EAAE;IAClF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,OAAO,EAAE;gBAC/B,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;gBACzB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC;aAC3B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;gBAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO;aACrC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,kEAAkE;AAClE,MAAM,UAAU,GAAS;IACvB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,iCAAiC;IAC9C,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACrC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,wDAAa,YAAY,GAAC,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,GAAG,GAAG,iCAAiC,kBAAkB,CAAC,KAAK,CAAC,wCAAwC,CAAC;YAC/G,MAAM,GAAG,GAAG,MAAO,KAAa,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAEnC,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;oBAChD,IAAI,CAAC,CAAC,IAAI;wBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,kEAAkE;AACrD,QAAA,SAAS,GAAW;IAC/B,YAAY;IACZ,aAAa;IACb,cAAc;IACd,WAAW;IACX,SAAS;IACT,UAAU;CACX,CAAC;AAEW,QAAA,QAAQ,GAAyB,MAAM,CAAC,WAAW,CAC9D,iBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAChC,CAAC;AAEF,SAAgB,oBAAoB;IAClC,MAAM,QAAQ,GAAG,iBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;aACxC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,oBAAoB,MAAM,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;;EAEP,QAAQ;;;;;;;;;;;;iEAYuD,CAAC;AAClE,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,MAAkB,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,IAAI,GAAG,gBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IACtF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoRA,oDA+BC;AAGD,sCAUC;AAGD,kCA4BC;AA/VD,6BAAwB;AAqCxB,iEAAiE;AACjE,MAAM,SAAS,GAAG;IAChB,eAAe;IACf,MAAM;IACN,UAAU;IACV,yBAAyB;IACzB,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;CACvB,CAAC;AAEF,kEAAkE;AAClE,uCAAyB;AACzB,2CAA6B;AAC7B,iDAA+C;AAE/C,YAAY;AACC,QAAA,YAAY,GAAY;IACnC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,mCAAmC;IAChD,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC9C,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACpG,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;gBACrB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,aAAa;AACA,QAAA,aAAa,GAAY;IACpC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,4BAA4B;IACzC,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,OAAO,CAAC,MAAM,YAAY,QAAQ,EAAE,EAAE,CAAC;QACpF,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,6CAA6C;AAChC,QAAA,aAAa,GAAY;IACpC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,qFAAqF;IAClG,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC/D,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAClD,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,QAAQ,EAAE,EAAE,CAAC;YAChF,CAAC;YACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,QAAQ,EAAE,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,WAAW;AACE,QAAA,WAAW,GAAY;IAClC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,0BAA0B;IACvC,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACxD,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACnE,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS;gBACnB,CAAC,CAAC,QAAQ,OAAO,kEAAkE;gBACnF,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,QAAQ;AACK,QAAA,SAAS,GAAY;IAChC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,8EAA8E;IAC3F,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACpD,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;KAC7D,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE;IACvD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAChD,2BAA2B;QAC3B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,OAAO,EAAE;gBAC5B,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;gBACnB,QAAQ,EAAE,OAAO;gBACjB,OAAO;gBACP,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC;aAC3B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;gBAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO;aACrC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,YAAY;AACC,QAAA,YAAY,GAAY;IACnC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,8CAA8C;IAC3D,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9C,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,wDAAa,YAAY,GAAC,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,GAAG,GAAG,MAAO,KAAa,CAAC,GAAG,EAAE;gBACpC,MAAM;gBACN,IAAI,EAAE,IAAI,IAAI,SAAS;gBACvB,OAAO,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE;gBAC7C,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,2BAA2B;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,aAAa;AACA,QAAA,UAAU,GAAY;IACjC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,kCAAkC;IAC/C,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3C,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,wDAAa,YAAY,GAAC,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,GAAG,GAAG,iCAAiC,kBAAkB,CAAC,KAAK,CAAC,wCAAwC,CAAC;YAC/G,MAAM,GAAG,GAAG,MAAO,KAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;oBAChD,IAAI,CAAC,CAAC,IAAI;wBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC;QACxE,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,8BAA8B;AACjB,QAAA,OAAO,GAAY;IAC9B,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,yDAAyD;IACtE,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;QAChG,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC3B,CAAC;IACF,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,OAAO,UAAU,EAAE,EAAE;gBACxC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;gBACnB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5F,CAAC;IACH,CAAC;CACF,CAAC;AAEF,kEAAkE;AACrD,QAAA,SAAS,GAAc;IAClC,oBAAY;IACZ,qBAAa;IACb,qBAAa;IACb,mBAAW;IACX,iBAAS;IACT,oBAAY;IACZ,kBAAU;IACV,eAAO;CACR,CAAC;AAEW,QAAA,QAAQ,GAA4B,MAAM,CAAC,WAAW,CACjE,iBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAChC,CAAC;AAEF,kEAAkE;AAClE,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,MAAM,QAAQ,GAAG,iBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,YAAY,OAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;aAChE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,kBAAkB,MAAM,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;;;qBAGY,GAAG;;;EAGtB,QAAQ;;;;;;;;;;;;;;;6DAemD,CAAC;AAC9D,CAAC;AAED,kEAAkE;AAClE,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,MAAkB,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kEAAkE;AAC3D,KAAK,UAAU,WAAW,CAC/B,IAAc,EACd,GAAgB;IAEhB,MAAM,IAAI,GAAG,gBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAEtF,eAAe;IACf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,mBAAmB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACtF,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IAC/E,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/E,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dlnk/cli",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "AI Agent CLI \u2014 Powered by dLNk",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -26,7 +26,8 @@
26
26
  "commander": "^14.0.3",
27
27
  "figlet": "^1.11.0",
28
28
  "node-fetch": "^3.3.2",
29
- "ora": "^9.3.0"
29
+ "ora": "^9.3.0",
30
+ "zod": "^4.3.6"
30
31
  },
31
32
  "devDependencies": {
32
33
  "@types/node": "^25.5.2",