@oflow-ai/core 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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/dist/agents/index.d.ts +35 -0
  4. package/dist/agents/index.js +233 -0
  5. package/dist/ai/chinese-provider.d.ts +146 -0
  6. package/dist/ai/chinese-provider.js +193 -0
  7. package/dist/ai/custom-provider.d.ts +11 -0
  8. package/dist/ai/custom-provider.js +113 -0
  9. package/dist/ai/index.d.ts +7 -0
  10. package/dist/ai/index.js +42 -0
  11. package/dist/ai/openai-provider.d.ts +18 -0
  12. package/dist/ai/openai-provider.js +161 -0
  13. package/dist/config/index.d.ts +20 -0
  14. package/dist/config/index.js +83 -0
  15. package/dist/conversation.d.ts +26 -0
  16. package/dist/conversation.js +126 -0
  17. package/dist/index.d.ts +10 -0
  18. package/dist/index.js +72 -0
  19. package/dist/mcp/index.d.ts +48 -0
  20. package/dist/mcp/index.js +175 -0
  21. package/dist/sandbox/index.d.ts +31 -0
  22. package/dist/sandbox/index.js +197 -0
  23. package/dist/skills/index.d.ts +16 -0
  24. package/dist/skills/index.js +169 -0
  25. package/dist/tools/ask-user-question.d.ts +62 -0
  26. package/dist/tools/ask-user-question.js +71 -0
  27. package/dist/tools/base.d.ts +16 -0
  28. package/dist/tools/base.js +39 -0
  29. package/dist/tools/glob.d.ts +27 -0
  30. package/dist/tools/glob.js +125 -0
  31. package/dist/tools/image-read.d.ts +42 -0
  32. package/dist/tools/image-read.js +125 -0
  33. package/dist/tools/index.d.ts +27 -0
  34. package/dist/tools/index.js +127 -0
  35. package/dist/tools/list-directory.d.ts +28 -0
  36. package/dist/tools/list-directory.js +94 -0
  37. package/dist/tools/pdf-extract.d.ts +32 -0
  38. package/dist/tools/pdf-extract.js +130 -0
  39. package/dist/tools/read-file.d.ts +31 -0
  40. package/dist/tools/read-file.js +116 -0
  41. package/dist/tools/replace.d.ts +35 -0
  42. package/dist/tools/replace.js +93 -0
  43. package/dist/tools/run-shell-command.d.ts +35 -0
  44. package/dist/tools/run-shell-command.js +81 -0
  45. package/dist/tools/save-memory.d.ts +22 -0
  46. package/dist/tools/save-memory.js +91 -0
  47. package/dist/tools/search-file-content.d.ts +42 -0
  48. package/dist/tools/search-file-content.js +153 -0
  49. package/dist/tools/task.d.ts +46 -0
  50. package/dist/tools/task.js +54 -0
  51. package/dist/tools/web-fetch.d.ts +26 -0
  52. package/dist/tools/web-fetch.js +81 -0
  53. package/dist/tools/web-search.d.ts +35 -0
  54. package/dist/tools/web-search.js +86 -0
  55. package/dist/tools/write-file.d.ts +25 -0
  56. package/dist/tools/write-file.js +76 -0
  57. package/dist/types/index.d.ts +166 -0
  58. package/dist/types/index.js +43 -0
  59. package/package.json +54 -0
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WebFetchTool = void 0;
7
+ const base_1 = require("./base");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ class WebFetchTool extends base_1.BaseTool {
10
+ name = 'web_fetch';
11
+ description = 'Fetches and extracts content from a URL.';
12
+ parameters = {
13
+ type: 'object',
14
+ properties: {
15
+ url: {
16
+ type: 'string',
17
+ description: 'The URL to fetch'
18
+ },
19
+ prompt: {
20
+ type: 'string',
21
+ description: 'Instructions on how to process the fetched content'
22
+ }
23
+ },
24
+ required: ['url']
25
+ };
26
+ async execute(params, options) {
27
+ this.validateRequired(params, ['url']);
28
+ try {
29
+ const response = await axios_1.default.get(params.url, {
30
+ timeout: 30000,
31
+ headers: {
32
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
33
+ }
34
+ });
35
+ let content = response.data;
36
+ // If HTML, extract text content
37
+ if (typeof content === 'string' && content.includes('<html')) {
38
+ content = this.extractTextFromHtml(content);
39
+ }
40
+ // Truncate if too long
41
+ if (content.length > 50000) {
42
+ content = content.substring(0, 50000) + '\n\n... [Content truncated]';
43
+ }
44
+ const prompt = params.prompt || 'Summarize the content';
45
+ return `URL: ${params.url}\nPrompt: ${prompt}\n\nContent:\n${content}`;
46
+ }
47
+ catch (error) {
48
+ return (0, base_1.formatToolError)(error);
49
+ }
50
+ }
51
+ extractTextFromHtml(html) {
52
+ // Simple HTML to text conversion
53
+ let text = html;
54
+ // Remove scripts and styles
55
+ text = text.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
56
+ text = text.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
57
+ // Remove comments
58
+ text = text.replace(/<!--[\s\S]*?-->/g, '');
59
+ // Replace common block elements with newlines
60
+ text = text.replace(/<\/p>/gi, '\n');
61
+ text = text.replace(/<\/div>/gi, '\n');
62
+ text = text.replace(/<\/h[1-6]>/gi, '\n');
63
+ text = text.replace(/<\/li>/gi, '\n');
64
+ text = text.replace(/<br\s*\/>/gi, '\n');
65
+ // Remove remaining HTML tags
66
+ text = text.replace(/<[^>]+>/g, '');
67
+ // Decode HTML entities
68
+ text = text.replace(/&nbsp;/g, ' ');
69
+ text = text.replace(/&amp;/g, '&');
70
+ text = text.replace(/&lt;/g, '<');
71
+ text = text.replace(/&gt;/g, '>');
72
+ text = text.replace(/&quot;/g, '"');
73
+ // Clean up whitespace
74
+ text = text.replace(/\n\s*\n/g, '\n\n');
75
+ text = text.replace(/[ \t]+/g, ' ');
76
+ text = text.trim();
77
+ return text;
78
+ }
79
+ }
80
+ exports.WebFetchTool = WebFetchTool;
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWZldGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3dlYi1mZXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpQ0FBdUU7QUFDdkUsa0RBQTBCO0FBTzFCLE1BQWEsWUFBYSxTQUFRLGVBQXdCO0lBQ3hELElBQUksR0FBRyxXQUFXLENBQUM7SUFDbkIsV0FBVyxHQUFHLDBDQUEwQyxDQUFDO0lBQ3pELFVBQVUsR0FBRztRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxrQkFBa0I7YUFDaEM7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLG9EQUFvRDthQUNsRTtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO0tBQ2xCLENBQUM7SUFFRixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQXNCLEVBQUUsT0FBNEI7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQzNDLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxZQUFZLEVBQUUsOERBQThEO2lCQUM3RTthQUNGLENBQUMsQ0FBQztZQUVILElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFFNUIsZ0NBQWdDO1lBQ2hDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsdUJBQXVCO1lBQ3ZCLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLDZCQUE2QixDQUFDO1lBQ3hFLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLHVCQUF1QixDQUFDO1lBRXhELE9BQU8sUUFBUSxNQUFNLENBQUMsR0FBRyxhQUFhLE1BQU0saUJBQWlCLE9BQU8sRUFBRSxDQUFDO1FBQ3pFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFBLHNCQUFlLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFZO1FBQ3RDLGlDQUFpQztRQUNqQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFFaEIsNEJBQTRCO1FBQzVCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNELGtCQUFrQjtRQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1Qyw4Q0FBOEM7UUFDOUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV6Qyw2QkFBNkI7UUFDN0IsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLHNCQUFzQjtRQUN0QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFwRkQsb0NBb0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRvb2wsIFRvb2xFeGVjdXRlT3B0aW9ucywgZm9ybWF0VG9vbEVycm9yIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmludGVyZmFjZSBXZWJGZXRjaFBhcmFtcyB7XG4gIHVybDogc3RyaW5nO1xuICBwcm9tcHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXZWJGZXRjaFRvb2wgZXh0ZW5kcyBCYXNlVG9vbDxXZWJGZXRjaFBhcmFtcz4ge1xuICBuYW1lID0gJ3dlYl9mZXRjaCc7XG4gIGRlc2NyaXB0aW9uID0gJ0ZldGNoZXMgYW5kIGV4dHJhY3RzIGNvbnRlbnQgZnJvbSBhIFVSTC4nO1xuICBwYXJhbWV0ZXJzID0ge1xuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHVybDoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgVVJMIHRvIGZldGNoJ1xuICAgICAgfSxcbiAgICAgIHByb21wdDoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdJbnN0cnVjdGlvbnMgb24gaG93IHRvIHByb2Nlc3MgdGhlIGZldGNoZWQgY29udGVudCdcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ3VybCddXG4gIH07XG5cbiAgYXN5bmMgZXhlY3V0ZShwYXJhbXM6IFdlYkZldGNoUGFyYW1zLCBvcHRpb25zPzogVG9vbEV4ZWN1dGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWQocGFyYW1zLCBbJ3VybCddKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChwYXJhbXMudXJsLCB7XG4gICAgICAgIHRpbWVvdXQ6IDMwMDAwLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2J1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgbGV0IGNvbnRlbnQgPSByZXNwb25zZS5kYXRhO1xuXG4gICAgICAvLyBJZiBIVE1MLCBleHRyYWN0IHRleHQgY29udGVudFxuICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyAmJiBjb250ZW50LmluY2x1ZGVzKCc8aHRtbCcpKSB7XG4gICAgICAgIGNvbnRlbnQgPSB0aGlzLmV4dHJhY3RUZXh0RnJvbUh0bWwoY29udGVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRydW5jYXRlIGlmIHRvbyBsb25nXG4gICAgICBpZiAoY29udGVudC5sZW5ndGggPiA1MDAwMCkge1xuICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgNTAwMDApICsgJ1xcblxcbi4uLiBbQ29udGVudCB0cnVuY2F0ZWRdJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvbXB0ID0gcGFyYW1zLnByb21wdCB8fCAnU3VtbWFyaXplIHRoZSBjb250ZW50JztcbiAgICAgIFxuICAgICAgcmV0dXJuIGBVUkw6ICR7cGFyYW1zLnVybH1cXG5Qcm9tcHQ6ICR7cHJvbXB0fVxcblxcbkNvbnRlbnQ6XFxuJHtjb250ZW50fWA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmb3JtYXRUb29sRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFRleHRGcm9tSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFNpbXBsZSBIVE1MIHRvIHRleHQgY29udmVyc2lvblxuICAgIGxldCB0ZXh0ID0gaHRtbDtcbiAgICBcbiAgICAvLyBSZW1vdmUgc2NyaXB0cyBhbmQgc3R5bGVzXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPHNjcmlwdFtePl0qPltcXHNcXFNdKj88XFwvc2NyaXB0Pi9naSwgJycpO1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzxzdHlsZVtePl0qPltcXHNcXFNdKj88XFwvc3R5bGU+L2dpLCAnJyk7XG4gICAgXG4gICAgLy8gUmVtb3ZlIGNvbW1lbnRzXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPCEtLVtcXHNcXFNdKj8tLT4vZywgJycpO1xuICAgIFxuICAgIC8vIFJlcGxhY2UgY29tbW9uIGJsb2NrIGVsZW1lbnRzIHdpdGggbmV3bGluZXNcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88XFwvcD4vZ2ksICdcXG4nKTtcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88XFwvZGl2Pi9naSwgJ1xcbicpO1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzxcXC9oWzEtNl0+L2dpLCAnXFxuJyk7XG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPFxcL2xpPi9naSwgJ1xcbicpO1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzxiclxccypcXC8+L2dpLCAnXFxuJyk7XG4gICAgXG4gICAgLy8gUmVtb3ZlIHJlbWFpbmluZyBIVE1MIHRhZ3NcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88W14+XSs+L2csICcnKTtcbiAgICBcbiAgICAvLyBEZWNvZGUgSFRNTCBlbnRpdGllc1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpO1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyZhbXA7L2csICcmJyk7XG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvJmx0Oy9nLCAnPCcpO1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyZndDsvZywgJz4nKTtcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8mcXVvdDsvZywgJ1wiJyk7XG4gICAgXG4gICAgLy8gQ2xlYW4gdXAgd2hpdGVzcGFjZVxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcblxccypcXG4vZywgJ1xcblxcbicpO1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1sgXFx0XSsvZywgJyAnKTtcbiAgICB0ZXh0ID0gdGV4dC50cmltKCk7XG4gICAgXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { BaseTool, ToolExecuteOptions } from './base';
2
+ interface WebSearchParams {
3
+ query: string;
4
+ intent?: string;
5
+ expected?: string;
6
+ num?: number;
7
+ }
8
+ export declare class WebSearchTool extends BaseTool<WebSearchParams> {
9
+ name: string;
10
+ description: string;
11
+ parameters: {
12
+ type: string;
13
+ properties: {
14
+ query: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ intent: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ expected: {
23
+ type: string;
24
+ description: string;
25
+ };
26
+ num: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ };
31
+ required: string[];
32
+ };
33
+ execute(params: WebSearchParams, options?: ToolExecuteOptions): Promise<string>;
34
+ }
35
+ export {};
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WebSearchTool = void 0;
7
+ const base_1 = require("./base");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ class WebSearchTool extends base_1.BaseTool {
10
+ name = 'web_search';
11
+ description = 'Performs a web search and returns results similar to a Google results page.';
12
+ parameters = {
13
+ type: 'object',
14
+ properties: {
15
+ query: {
16
+ type: 'string',
17
+ description: 'The search query'
18
+ },
19
+ intent: {
20
+ type: 'string',
21
+ description: 'The intent of this search'
22
+ },
23
+ expected: {
24
+ type: 'string',
25
+ description: 'Expected results'
26
+ },
27
+ num: {
28
+ type: 'number',
29
+ description: 'Number of results to return (default: 10)'
30
+ }
31
+ },
32
+ required: ['query']
33
+ };
34
+ async execute(params, options) {
35
+ this.validateRequired(params, ['query']);
36
+ try {
37
+ // Use DuckDuckGo API for web search (no API key required)
38
+ const response = await axios_1.default.get('https://api.duckduckgo.com/', {
39
+ params: {
40
+ q: params.query,
41
+ format: 'json',
42
+ no_html: 1,
43
+ skip_disambig: 1
44
+ },
45
+ timeout: 30000
46
+ });
47
+ const data = response.data;
48
+ const results = [];
49
+ // Add abstract if available
50
+ if (data.Abstract) {
51
+ results.push({
52
+ title: data.Heading || 'Summary',
53
+ link: data.AbstractURL || '',
54
+ snippet: data.Abstract,
55
+ date: ''
56
+ });
57
+ }
58
+ // Add related topics
59
+ if (data.RelatedTopics) {
60
+ for (const topic of data.RelatedTopics.slice(0, params.num || 10)) {
61
+ if (topic.Text && topic.FirstURL) {
62
+ results.push({
63
+ title: topic.Text.split(' - ')[0] || 'Related',
64
+ link: topic.FirstURL,
65
+ snippet: topic.Text,
66
+ date: ''
67
+ });
68
+ }
69
+ }
70
+ }
71
+ if (results.length === 0) {
72
+ return `No results found for: ${params.query}`;
73
+ }
74
+ const output = results.map((r, i) => {
75
+ return `[${i + 1}] ${r.title}\n ${r.link}\n ${r.snippet}`;
76
+ }).join('\n\n');
77
+ return `Search results for "${params.query}":\n\n${output}`;
78
+ }
79
+ catch (error) {
80
+ // Fallback: provide helpful message
81
+ return `Web search is not available. Error: ${error instanceof Error ? error.message : String(error)}\n\nPlease note: For full web search functionality, configure a search API key in settings.`;
82
+ }
83
+ }
84
+ }
85
+ exports.WebSearchTool = WebSearchTool;
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy93ZWItc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlDQUF1RTtBQUN2RSxrREFBMEI7QUFnQjFCLE1BQWEsYUFBYyxTQUFRLGVBQXlCO0lBQzFELElBQUksR0FBRyxZQUFZLENBQUM7SUFDcEIsV0FBVyxHQUFHLDZFQUE2RSxDQUFDO0lBQzVGLFVBQVUsR0FBRztRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxrQkFBa0I7YUFDaEM7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLDJCQUEyQjthQUN6QztZQUNELFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsa0JBQWtCO2FBQ2hDO1lBQ0QsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSwyQ0FBMkM7YUFDekQ7U0FDRjtRQUNELFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztLQUNwQixDQUFDO0lBRUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUF1QixFQUFFLE9BQTRCO1FBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQztZQUNILDBEQUEwRDtZQUMxRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQUssQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUU7Z0JBQzlELE1BQU0sRUFBRTtvQkFDTixDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0JBQ2YsTUFBTSxFQUFFLE1BQU07b0JBQ2QsT0FBTyxFQUFFLENBQUM7b0JBQ1YsYUFBYSxFQUFFLENBQUM7aUJBQ2pCO2dCQUNELE9BQU8sRUFBRSxLQUFLO2FBQ2YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzQixNQUFNLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1lBRXRDLDRCQUE0QjtZQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTO29CQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFO29CQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3RCLElBQUksRUFBRSxFQUFFO2lCQUNULENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxxQkFBcUI7WUFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDbEUsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQzs0QkFDWCxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUzs0QkFDOUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFROzRCQUNwQixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUk7NEJBQ25CLElBQUksRUFBRSxFQUFFO3lCQUNULENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLHlCQUF5QixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakQsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhCLE9BQU8sdUJBQXVCLE1BQU0sQ0FBQyxLQUFLLFNBQVMsTUFBTSxFQUFFLENBQUM7UUFDOUQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixvQ0FBb0M7WUFDcEMsT0FBTyx1Q0FBdUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2RkFBNkYsQ0FBQztRQUNwTSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbEZELHNDQWtGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUb29sLCBUb29sRXhlY3V0ZU9wdGlvbnMsIGZvcm1hdFRvb2xFcnJvciB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG5pbnRlcmZhY2UgV2ViU2VhcmNoUGFyYW1zIHtcbiAgcXVlcnk6IHN0cmluZztcbiAgaW50ZW50Pzogc3RyaW5nO1xuICBleHBlY3RlZD86IHN0cmluZztcbiAgbnVtPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgV2ViU2VhcmNoUmVzdWx0IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgbGluazogc3RyaW5nO1xuICBzbmlwcGV0OiBzdHJpbmc7XG4gIGRhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXZWJTZWFyY2hUb29sIGV4dGVuZHMgQmFzZVRvb2w8V2ViU2VhcmNoUGFyYW1zPiB7XG4gIG5hbWUgPSAnd2ViX3NlYXJjaCc7XG4gIGRlc2NyaXB0aW9uID0gJ1BlcmZvcm1zIGEgd2ViIHNlYXJjaCBhbmQgcmV0dXJucyByZXN1bHRzIHNpbWlsYXIgdG8gYSBHb29nbGUgcmVzdWx0cyBwYWdlLic7XG4gIHBhcmFtZXRlcnMgPSB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHNlYXJjaCBxdWVyeSdcbiAgICAgIH0sXG4gICAgICBpbnRlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGludGVudCBvZiB0aGlzIHNlYXJjaCdcbiAgICAgIH0sXG4gICAgICBleHBlY3RlZDoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFeHBlY3RlZCByZXN1bHRzJ1xuICAgICAgfSxcbiAgICAgIG51bToge1xuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdOdW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4gKGRlZmF1bHQ6IDEwKSdcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ3F1ZXJ5J11cbiAgfTtcblxuICBhc3luYyBleGVjdXRlKHBhcmFtczogV2ViU2VhcmNoUGFyYW1zLCBvcHRpb25zPzogVG9vbEV4ZWN1dGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWQocGFyYW1zLCBbJ3F1ZXJ5J10pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBEdWNrRHVja0dvIEFQSSBmb3Igd2ViIHNlYXJjaCAobm8gQVBJIGtleSByZXF1aXJlZClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KCdodHRwczovL2FwaS5kdWNrZHVja2dvLmNvbS8nLCB7XG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIHE6IHBhcmFtcy5xdWVyeSxcbiAgICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgICBub19odG1sOiAxLFxuICAgICAgICAgIHNraXBfZGlzYW1iaWc6IDFcbiAgICAgICAgfSxcbiAgICAgICAgdGltZW91dDogMzAwMDBcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IFdlYlNlYXJjaFJlc3VsdFtdID0gW107XG5cbiAgICAgIC8vIEFkZCBhYnN0cmFjdCBpZiBhdmFpbGFibGVcbiAgICAgIGlmIChkYXRhLkFic3RyYWN0KSB7XG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdGl0bGU6IGRhdGEuSGVhZGluZyB8fCAnU3VtbWFyeScsXG4gICAgICAgICAgbGluazogZGF0YS5BYnN0cmFjdFVSTCB8fCAnJyxcbiAgICAgICAgICBzbmlwcGV0OiBkYXRhLkFic3RyYWN0LFxuICAgICAgICAgIGRhdGU6ICcnXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgcmVsYXRlZCB0b3BpY3NcbiAgICAgIGlmIChkYXRhLlJlbGF0ZWRUb3BpY3MpIHtcbiAgICAgICAgZm9yIChjb25zdCB0b3BpYyBvZiBkYXRhLlJlbGF0ZWRUb3BpY3Muc2xpY2UoMCwgcGFyYW1zLm51bSB8fCAxMCkpIHtcbiAgICAgICAgICBpZiAodG9waWMuVGV4dCAmJiB0b3BpYy5GaXJzdFVSTCkge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgICAgdGl0bGU6IHRvcGljLlRleHQuc3BsaXQoJyAtICcpWzBdIHx8ICdSZWxhdGVkJyxcbiAgICAgICAgICAgICAgbGluazogdG9waWMuRmlyc3RVUkwsXG4gICAgICAgICAgICAgIHNuaXBwZXQ6IHRvcGljLlRleHQsXG4gICAgICAgICAgICAgIGRhdGU6ICcnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBgTm8gcmVzdWx0cyBmb3VuZCBmb3I6ICR7cGFyYW1zLnF1ZXJ5fWA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdHMubWFwKChyLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgWyR7aSArIDF9XSAke3IudGl0bGV9XFxuICAgICR7ci5saW5rfVxcbiAgICAke3Iuc25pcHBldH1gO1xuICAgICAgfSkuam9pbignXFxuXFxuJyk7XG5cbiAgICAgIHJldHVybiBgU2VhcmNoIHJlc3VsdHMgZm9yIFwiJHtwYXJhbXMucXVlcnl9XCI6XFxuXFxuJHtvdXRwdXR9YDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRmFsbGJhY2s6IHByb3ZpZGUgaGVscGZ1bCBtZXNzYWdlXG4gICAgICByZXR1cm4gYFdlYiBzZWFyY2ggaXMgbm90IGF2YWlsYWJsZS4gRXJyb3I6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxcblxcblBsZWFzZSBub3RlOiBGb3IgZnVsbCB3ZWIgc2VhcmNoIGZ1bmN0aW9uYWxpdHksIGNvbmZpZ3VyZSBhIHNlYXJjaCBBUEkga2V5IGluIHNldHRpbmdzLmA7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { BaseTool, ToolExecuteOptions } from './base';
2
+ interface WriteFileParams {
3
+ file_path: string;
4
+ content: string;
5
+ }
6
+ export declare class WriteFileTool extends BaseTool<WriteFileParams> {
7
+ name: string;
8
+ description: string;
9
+ parameters: {
10
+ type: string;
11
+ properties: {
12
+ file_path: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ content: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ };
21
+ required: string[];
22
+ };
23
+ execute(params: WriteFileParams, options?: ToolExecuteOptions): Promise<string>;
24
+ }
25
+ export {};
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.WriteFileTool = void 0;
37
+ const base_1 = require("./base");
38
+ const fs = __importStar(require("fs/promises"));
39
+ const path = __importStar(require("path"));
40
+ class WriteFileTool extends base_1.BaseTool {
41
+ name = 'write_file';
42
+ description = 'Writes content to a specified file in the local filesystem. Creates the file if it does not exist, or overwrites it if it does.';
43
+ parameters = {
44
+ type: 'object',
45
+ properties: {
46
+ file_path: {
47
+ type: 'string',
48
+ description: 'The absolute path to the file to write to'
49
+ },
50
+ content: {
51
+ type: 'string',
52
+ description: 'The content to write to the file'
53
+ }
54
+ },
55
+ required: ['file_path', 'content']
56
+ };
57
+ async execute(params, options) {
58
+ this.validateRequired(params, ['file_path', 'content']);
59
+ const filePath = params.file_path;
60
+ const workingDir = options?.workingDirectory || process.cwd();
61
+ const resolvedPath = path.isAbsolute(filePath) ? filePath : path.join(workingDir, filePath);
62
+ try {
63
+ // Ensure directory exists
64
+ const dir = path.dirname(resolvedPath);
65
+ await fs.mkdir(dir, { recursive: true });
66
+ // Write file
67
+ await fs.writeFile(resolvedPath, params.content, 'utf-8');
68
+ return `Successfully wrote ${params.content.length} characters to ${resolvedPath}`;
69
+ }
70
+ catch (error) {
71
+ return (0, base_1.formatToolError)(error);
72
+ }
73
+ }
74
+ }
75
+ exports.WriteFileTool = WriteFileTool;
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy93cml0ZS1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUF1RTtBQUN2RSxnREFBa0M7QUFDbEMsMkNBQTZCO0FBTzdCLE1BQWEsYUFBYyxTQUFRLGVBQXlCO0lBQzFELElBQUksR0FBRyxZQUFZLENBQUM7SUFDcEIsV0FBVyxHQUFHLGlJQUFpSSxDQUFDO0lBQ2hKLFVBQVUsR0FBRztRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSwyQ0FBMkM7YUFDekQ7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLGtDQUFrQzthQUNoRDtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztLQUNuQyxDQUFDO0lBRUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUF1QixFQUFFLE9BQTRCO1FBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUV4RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1RixJQUFJLENBQUM7WUFDSCwwQkFBMEI7WUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2QyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFekMsYUFBYTtZQUNiLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUUxRCxPQUFPLHNCQUFzQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sa0JBQWtCLFlBQVksRUFBRSxDQUFDO1FBQ3JGLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFBLHNCQUFlLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRDRCxzQ0FzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVG9vbCwgVG9vbEV4ZWN1dGVPcHRpb25zLCBmb3JtYXRUb29sRXJyb3IgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW50ZXJmYWNlIFdyaXRlRmlsZVBhcmFtcyB7XG4gIGZpbGVfcGF0aDogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZUZpbGVUb29sIGV4dGVuZHMgQmFzZVRvb2w8V3JpdGVGaWxlUGFyYW1zPiB7XG4gIG5hbWUgPSAnd3JpdGVfZmlsZSc7XG4gIGRlc2NyaXB0aW9uID0gJ1dyaXRlcyBjb250ZW50IHRvIGEgc3BlY2lmaWVkIGZpbGUgaW4gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uIENyZWF0ZXMgdGhlIGZpbGUgaWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIG92ZXJ3cml0ZXMgaXQgaWYgaXQgZG9lcy4nO1xuICBwYXJhbWV0ZXJzID0ge1xuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGZpbGVfcGF0aDoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSB0byB3cml0ZSB0bydcbiAgICAgIH0sXG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBjb250ZW50IHRvIHdyaXRlIHRvIHRoZSBmaWxlJ1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsnZmlsZV9wYXRoJywgJ2NvbnRlbnQnXVxuICB9O1xuXG4gIGFzeW5jIGV4ZWN1dGUocGFyYW1zOiBXcml0ZUZpbGVQYXJhbXMsIG9wdGlvbnM/OiBUb29sRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMudmFsaWRhdGVSZXF1aXJlZChwYXJhbXMsIFsnZmlsZV9wYXRoJywgJ2NvbnRlbnQnXSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhcmFtcy5maWxlX3BhdGg7XG4gICAgY29uc3Qgd29ya2luZ0RpciA9IG9wdGlvbnM/LndvcmtpbmdEaXJlY3RvcnkgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCByZXNvbHZlZFBhdGggPSBwYXRoLmlzQWJzb2x1dGUoZmlsZVBhdGgpID8gZmlsZVBhdGggOiBwYXRoLmpvaW4od29ya2luZ0RpciwgZmlsZVBhdGgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEVuc3VyZSBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUocmVzb2x2ZWRQYXRoKTtcbiAgICAgIGF3YWl0IGZzLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAgIC8vIFdyaXRlIGZpbGVcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShyZXNvbHZlZFBhdGgsIHBhcmFtcy5jb250ZW50LCAndXRmLTgnKTtcblxuICAgICAgcmV0dXJuIGBTdWNjZXNzZnVsbHkgd3JvdGUgJHtwYXJhbXMuY29udGVudC5sZW5ndGh9IGNoYXJhY3RlcnMgdG8gJHtyZXNvbHZlZFBhdGh9YDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZvcm1hdFRvb2xFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,166 @@
1
+ export type ChineseProvider = 'deepseek' | 'qwen' | 'zhipu' | 'baichuan' | 'yi' | 'moonshot' | 'siliconflow';
2
+ export interface Message {
3
+ role: 'system' | 'user' | 'assistant' | 'tool';
4
+ content: string | MessageContent[];
5
+ name?: string;
6
+ toolCallId?: string;
7
+ toolCalls?: ToolCall[];
8
+ }
9
+ export interface MessageContent {
10
+ type: 'text' | 'image';
11
+ text?: string;
12
+ imageUrl?: {
13
+ url: string;
14
+ };
15
+ }
16
+ export interface ToolCall {
17
+ id: string;
18
+ type: 'function';
19
+ function: {
20
+ name: string;
21
+ arguments: string;
22
+ };
23
+ }
24
+ export interface ToolDefinition {
25
+ type: 'function';
26
+ function: {
27
+ name: string;
28
+ description: string;
29
+ parameters: Record<string, unknown>;
30
+ };
31
+ }
32
+ export interface ToolResult {
33
+ toolCallId: string;
34
+ content: string;
35
+ isError?: boolean;
36
+ }
37
+ export interface ChatCompletionOptions {
38
+ messages: Message[];
39
+ tools?: ToolDefinition[];
40
+ toolChoice?: 'auto' | 'none' | {
41
+ type: 'function';
42
+ function: {
43
+ name: string;
44
+ };
45
+ };
46
+ stream?: boolean;
47
+ maxTokens?: number;
48
+ temperature?: number;
49
+ }
50
+ export interface ChatCompletionResponse {
51
+ id: string;
52
+ content: string | null;
53
+ toolCalls?: ToolCall[];
54
+ finishReason: string;
55
+ usage?: {
56
+ promptTokens: number;
57
+ completionTokens: number;
58
+ totalTokens: number;
59
+ };
60
+ reasoning?: string;
61
+ }
62
+ export interface StreamChunk {
63
+ id: string;
64
+ delta: {
65
+ content?: string;
66
+ toolCalls?: Partial<ToolCall>[];
67
+ role?: string;
68
+ reasoning?: string;
69
+ };
70
+ finishReason: string | null;
71
+ }
72
+ export interface AIProvider {
73
+ name: string;
74
+ chat(options: ChatCompletionOptions): Promise<ChatCompletionResponse>;
75
+ chatStream(options: ChatCompletionOptions, onChunk: (chunk: StreamChunk) => void): Promise<void>;
76
+ getModels(): Promise<string[]>;
77
+ }
78
+ export interface AuthConfig {
79
+ provider: 'openai' | 'custom' | 'oflow' | ChineseProvider;
80
+ apiKey?: string;
81
+ baseUrl?: string;
82
+ model?: string;
83
+ }
84
+ export interface Config {
85
+ auth: AuthConfig;
86
+ defaultModel?: string;
87
+ maxTokens?: number;
88
+ temperature?: number;
89
+ sandbox?: boolean;
90
+ showThinking?: boolean;
91
+ mcpServers?: Record<string, MCPServerConfig>;
92
+ }
93
+ export interface MCPServerConfig {
94
+ command: string;
95
+ args?: string[];
96
+ env?: Record<string, string>;
97
+ }
98
+ export interface Tool {
99
+ name: string;
100
+ description: string;
101
+ parameters: Record<string, unknown>;
102
+ execute: (params: Record<string, unknown>) => Promise<string>;
103
+ }
104
+ export interface Skill {
105
+ id: string;
106
+ name: string;
107
+ description: string;
108
+ version: string;
109
+ path: string;
110
+ mainFile: string;
111
+ }
112
+ export interface ConversationHistory {
113
+ messages: Message[];
114
+ createdAt: Date;
115
+ updatedAt: Date;
116
+ }
117
+ export interface FileInfo {
118
+ path: string;
119
+ type: 'file' | 'directory';
120
+ size?: number;
121
+ modifiedAt?: Date;
122
+ }
123
+ export interface SearchResult {
124
+ path: string;
125
+ line: number;
126
+ column: number;
127
+ content: string;
128
+ match: string;
129
+ }
130
+ export declare const CHINESE_MODELS: {
131
+ deepseek: {
132
+ name: string;
133
+ baseUrl: string;
134
+ models: string[];
135
+ };
136
+ qwen: {
137
+ name: string;
138
+ baseUrl: string;
139
+ models: string[];
140
+ };
141
+ zhipu: {
142
+ name: string;
143
+ baseUrl: string;
144
+ models: string[];
145
+ };
146
+ baichuan: {
147
+ name: string;
148
+ baseUrl: string;
149
+ models: string[];
150
+ };
151
+ yi: {
152
+ name: string;
153
+ baseUrl: string;
154
+ models: string[];
155
+ };
156
+ moonshot: {
157
+ name: string;
158
+ baseUrl: string;
159
+ models: string[];
160
+ };
161
+ siliconflow: {
162
+ name: string;
163
+ baseUrl: string;
164
+ models: string[];
165
+ };
166
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ // Type definitions for oflow core
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CHINESE_MODELS = void 0;
5
+ // 预定义的国内模型
6
+ exports.CHINESE_MODELS = {
7
+ deepseek: {
8
+ name: 'DeepSeek (深度求索)',
9
+ baseUrl: 'https://api.deepseek.com/v1',
10
+ models: ['deepseek-chat', 'deepseek-coder', 'deepseek-reasoner']
11
+ },
12
+ qwen: {
13
+ name: 'Qwen (通义千问)',
14
+ baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
15
+ models: ['qwen-turbo', 'qwen-plus', 'qwen-max', 'qwen-max-longcontext']
16
+ },
17
+ zhipu: {
18
+ name: 'GLM (智谱)',
19
+ baseUrl: 'https://open.bigmodel.cn/api/paas/v4',
20
+ models: ['glm-4', 'glm-4-flash', 'glm-4-plus', 'glm-4-long']
21
+ },
22
+ baichuan: {
23
+ name: 'Baichuan (百川)',
24
+ baseUrl: 'https://api.baichuan-ai.com/v1',
25
+ models: ['Baichuan4', 'Baichuan3-Turbo', 'Baichuan3-Turbo-128k']
26
+ },
27
+ yi: {
28
+ name: 'Yi (零一万物)',
29
+ baseUrl: 'https://api.lingyiwanwu.com/v1',
30
+ models: ['yi-large', 'yi-medium', 'yi-spark']
31
+ },
32
+ moonshot: {
33
+ name: 'Moonshot (月之暗面)',
34
+ baseUrl: 'https://api.moonshot.cn/v1',
35
+ models: ['moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k']
36
+ },
37
+ siliconflow: {
38
+ name: 'SiliconFlow (硅基流动)',
39
+ baseUrl: 'https://api.siliconflow.cn/v1',
40
+ models: ['Qwen/Qwen2.5-72B-Instruct', 'deepseek-ai/DeepSeek-V2.5', 'meta-llama/Llama-3.1-70B-Instruct']
41
+ }
42
+ };
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGtDQUFrQzs7O0FBaUpsQyxXQUFXO0FBQ0UsUUFBQSxjQUFjLEdBQUc7SUFDNUIsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixPQUFPLEVBQUUsNkJBQTZCO1FBQ3RDLE1BQU0sRUFBRSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQztLQUNqRTtJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxhQUFhO1FBQ25CLE9BQU8sRUFBRSxtREFBbUQ7UUFDNUQsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLENBQUM7S0FDeEU7SUFDRCxLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixPQUFPLEVBQUUsc0NBQXNDO1FBQy9DLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztLQUM3RDtJQUNELFFBQVEsRUFBRTtRQUNSLElBQUksRUFBRSxlQUFlO1FBQ3JCLE9BQU8sRUFBRSxnQ0FBZ0M7UUFDekMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixDQUFDO0tBQ2pFO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsSUFBSSxFQUFFLFdBQVc7UUFDakIsT0FBTyxFQUFFLGdDQUFnQztRQUN6QyxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQztLQUM5QztJQUNELFFBQVEsRUFBRTtRQUNSLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFLDRCQUE0QjtRQUNyQyxNQUFNLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQztLQUNsRTtJQUNELFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsT0FBTyxFQUFFLCtCQUErQjtRQUN4QyxNQUFNLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxtQ0FBbUMsQ0FBQztLQUN4RztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUeXBlIGRlZmluaXRpb25zIGZvciBvZmxvdyBjb3JlXG5cbi8vIOWbveWGheaooeWei+aPkOS+m+WVhlxuZXhwb3J0IHR5cGUgQ2hpbmVzZVByb3ZpZGVyID0gJ2RlZXBzZWVrJyB8ICdxd2VuJyB8ICd6aGlwdScgfCAnYmFpY2h1YW4nIHwgJ3lpJyB8ICdtb29uc2hvdCcgfCAnc2lsaWNvbmZsb3cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICByb2xlOiAnc3lzdGVtJyB8ICd1c2VyJyB8ICdhc3Npc3RhbnQnIHwgJ3Rvb2wnO1xuICBjb250ZW50OiBzdHJpbmcgfCBNZXNzYWdlQ29udGVudFtdO1xuICBuYW1lPzogc3RyaW5nO1xuICB0b29sQ2FsbElkPzogc3RyaW5nO1xuICB0b29sQ2FsbHM/OiBUb29sQ2FsbFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VDb250ZW50IHtcbiAgdHlwZTogJ3RleHQnIHwgJ2ltYWdlJztcbiAgdGV4dD86IHN0cmluZztcbiAgaW1hZ2VVcmw/OiB7XG4gICAgdXJsOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbENhbGwge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiAnZnVuY3Rpb24nO1xuICBmdW5jdGlvbjoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhcmd1bWVudHM6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb29sRGVmaW5pdGlvbiB7XG4gIHR5cGU6ICdmdW5jdGlvbic7XG4gIGZ1bmN0aW9uOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbFJlc3VsdCB7XG4gIHRvb2xDYWxsSWQ6IHN0cmluZztcbiAgY29udGVudDogc3RyaW5nO1xuICBpc0Vycm9yPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29tcGxldGlvbk9wdGlvbnMge1xuICBtZXNzYWdlczogTWVzc2FnZVtdO1xuICB0b29scz86IFRvb2xEZWZpbml0aW9uW107XG4gIHRvb2xDaG9pY2U/OiAnYXV0bycgfCAnbm9uZScgfCB7IHR5cGU6ICdmdW5jdGlvbic7IGZ1bmN0aW9uOiB7IG5hbWU6IHN0cmluZyB9IH07XG4gIHN0cmVhbT86IGJvb2xlYW47XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbXBsZXRpb25SZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZyB8IG51bGw7XG4gIHRvb2xDYWxscz86IFRvb2xDYWxsW107XG4gIGZpbmlzaFJlYXNvbjogc3RyaW5nO1xuICB1c2FnZT86IHtcbiAgICBwcm9tcHRUb2tlbnM6IG51bWJlcjtcbiAgICBjb21wbGV0aW9uVG9rZW5zOiBudW1iZXI7XG4gICAgdG90YWxUb2tlbnM6IG51bWJlcjtcbiAgfTtcbiAgcmVhc29uaW5nPzogc3RyaW5nOyAvLyDmgJ3ogIPov4fnqItcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1DaHVuayB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlbHRhOiB7XG4gICAgY29udGVudD86IHN0cmluZztcbiAgICB0b29sQ2FsbHM/OiBQYXJ0aWFsPFRvb2xDYWxsPltdO1xuICAgIHJvbGU/OiBzdHJpbmc7XG4gICAgcmVhc29uaW5nPzogc3RyaW5nOyAvLyDmgJ3ogIPov4fnqItcbiAgfTtcbiAgZmluaXNoUmVhc29uOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJUHJvdmlkZXIge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNoYXQob3B0aW9uczogQ2hhdENvbXBsZXRpb25PcHRpb25zKTogUHJvbWlzZTxDaGF0Q29tcGxldGlvblJlc3BvbnNlPjtcbiAgY2hhdFN0cmVhbShvcHRpb25zOiBDaGF0Q29tcGxldGlvbk9wdGlvbnMsIG9uQ2h1bms6IChjaHVuazogU3RyZWFtQ2h1bmspID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+O1xuICBnZXRNb2RlbHMoKTogUHJvbWlzZTxzdHJpbmdbXT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIHByb3ZpZGVyOiAnb3BlbmFpJyB8ICdjdXN0b20nIHwgJ29mbG93JyB8IENoaW5lc2VQcm92aWRlcjtcbiAgYXBpS2V5Pzogc3RyaW5nO1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBtb2RlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xuICBhdXRoOiBBdXRoQ29uZmlnO1xuICBkZWZhdWx0TW9kZWw/OiBzdHJpbmc7XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHNhbmRib3g/OiBib29sZWFuO1xuICBzaG93VGhpbmtpbmc/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgJ3ogIPov4fnqItcbiAgbWNwU2VydmVycz86IFJlY29yZDxzdHJpbmcsIE1DUFNlcnZlckNvbmZpZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTUNQU2VydmVyQ29uZmlnIHtcbiAgY29tbWFuZDogc3RyaW5nO1xuICBhcmdzPzogc3RyaW5nW107XG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbCB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV4ZWN1dGU6IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBQcm9taXNlPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2tpbGwge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBtYWluRmlsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbkhpc3Rvcnkge1xuICBtZXNzYWdlczogTWVzc2FnZVtdO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIHVwZGF0ZWRBdDogRGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5mbyB7XG4gIHBhdGg6IHN0cmluZztcbiAgdHlwZTogJ2ZpbGUnIHwgJ2RpcmVjdG9yeSc7XG4gIHNpemU/OiBudW1iZXI7XG4gIG1vZGlmaWVkQXQ/OiBEYXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3VsdCB7XG4gIHBhdGg6IHN0cmluZztcbiAgbGluZTogbnVtYmVyO1xuICBjb2x1bW46IG51bWJlcjtcbiAgY29udGVudDogc3RyaW5nO1xuICBtYXRjaDogc3RyaW5nO1xufVxuXG4vLyDpooTlrprkuYnnmoTlm73lhoXmqKHlnotcbmV4cG9ydCBjb25zdCBDSElORVNFX01PREVMUyA9IHtcbiAgZGVlcHNlZWs6IHtcbiAgICBuYW1lOiAnRGVlcFNlZWsgKOa3seW6puaxgue0oiknLFxuICAgIGJhc2VVcmw6ICdodHRwczovL2FwaS5kZWVwc2Vlay5jb20vdjEnLFxuICAgIG1vZGVsczogWydkZWVwc2Vlay1jaGF0JywgJ2RlZXBzZWVrLWNvZGVyJywgJ2RlZXBzZWVrLXJlYXNvbmVyJ11cbiAgfSxcbiAgcXdlbjoge1xuICAgIG5hbWU6ICdRd2VuICjpgJrkuYnljYPpl64pJyxcbiAgICBiYXNlVXJsOiAnaHR0cHM6Ly9kYXNoc2NvcGUuYWxpeXVuY3MuY29tL2NvbXBhdGlibGUtbW9kZS92MScsXG4gICAgbW9kZWxzOiBbJ3F3ZW4tdHVyYm8nLCAncXdlbi1wbHVzJywgJ3F3ZW4tbWF4JywgJ3F3ZW4tbWF4LWxvbmdjb250ZXh0J11cbiAgfSxcbiAgemhpcHU6IHtcbiAgICBuYW1lOiAnR0xNICjmmbrosLEpJyxcbiAgICBiYXNlVXJsOiAnaHR0cHM6Ly9vcGVuLmJpZ21vZGVsLmNuL2FwaS9wYWFzL3Y0JyxcbiAgICBtb2RlbHM6IFsnZ2xtLTQnLCAnZ2xtLTQtZmxhc2gnLCAnZ2xtLTQtcGx1cycsICdnbG0tNC1sb25nJ11cbiAgfSxcbiAgYmFpY2h1YW46IHtcbiAgICBuYW1lOiAnQmFpY2h1YW4gKOeZvuW3nSknLFxuICAgIGJhc2VVcmw6ICdodHRwczovL2FwaS5iYWljaHVhbi1haS5jb20vdjEnLFxuICAgIG1vZGVsczogWydCYWljaHVhbjQnLCAnQmFpY2h1YW4zLVR1cmJvJywgJ0JhaWNodWFuMy1UdXJiby0xMjhrJ11cbiAgfSxcbiAgeWk6IHtcbiAgICBuYW1lOiAnWWkgKOmbtuS4gOS4h+eJqSknLFxuICAgIGJhc2VVcmw6ICdodHRwczovL2FwaS5saW5neWl3YW53dS5jb20vdjEnLFxuICAgIG1vZGVsczogWyd5aS1sYXJnZScsICd5aS1tZWRpdW0nLCAneWktc3BhcmsnXVxuICB9LFxuICBtb29uc2hvdDoge1xuICAgIG5hbWU6ICdNb29uc2hvdCAo5pyI5LmL5pqX6Z2iKScsXG4gICAgYmFzZVVybDogJ2h0dHBzOi8vYXBpLm1vb25zaG90LmNuL3YxJyxcbiAgICBtb2RlbHM6IFsnbW9vbnNob3QtdjEtOGsnLCAnbW9vbnNob3QtdjEtMzJrJywgJ21vb25zaG90LXYxLTEyOGsnXVxuICB9LFxuICBzaWxpY29uZmxvdzoge1xuICAgIG5hbWU6ICdTaWxpY29uRmxvdyAo56GF5Z+65rWB5YqoKScsXG4gICAgYmFzZVVybDogJ2h0dHBzOi8vYXBpLnNpbGljb25mbG93LmNuL3YxJyxcbiAgICBtb2RlbHM6IFsnUXdlbi9Rd2VuMi41LTcyQi1JbnN0cnVjdCcsICdkZWVwc2Vlay1haS9EZWVwU2Vlay1WMi41JywgJ21ldGEtbGxhbWEvTGxhbWEtMy4xLTcwQi1JbnN0cnVjdCddXG4gIH1cbn07XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@oflow-ai/core",
3
+ "version": "0.1.0",
4
+ "description": "Core library for oFlow CLI - AI providers, tools, and utilities",
5
+ "keywords": [
6
+ "ai",
7
+ "openai",
8
+ "deepseek",
9
+ "qwen",
10
+ "llm",
11
+ "tools",
12
+ "agent"
13
+ ],
14
+ "main": "dist/index.js",
15
+ "types": "dist/index.d.ts",
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsc -b",
23
+ "dev": "tsc -b --watch",
24
+ "test": "echo \"No tests yet\"",
25
+ "prepublishOnly": "npm run build"
26
+ },
27
+ "dependencies": {
28
+ "openai": "^4.20.0",
29
+ "axios": "^1.6.2",
30
+ "chalk": "^4.1.2",
31
+ "ora": "^5.4.1",
32
+ "inquirer": "^8.2.6",
33
+ "conf": "^10.2.0",
34
+ "glob": "^10.3.10",
35
+ "fs-extra": "^11.2.0",
36
+ "ignore": "^5.3.0",
37
+ "marked": "^11.1.0",
38
+ "marked-terminal": "^6.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/fs-extra": "^11.0.4",
42
+ "@types/inquirer": "^8.2.10",
43
+ "@types/node": "^20.10.0",
44
+ "typescript": "^5.3.2"
45
+ },
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ },
49
+ "author": "oFlow Team",
50
+ "license": "MIT",
51
+ "publishConfig": {
52
+ "access": "public"
53
+ }
54
+ }