antri_cli 1.26.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 (171) hide show
  1. package/README.md +92 -0
  2. package/bin/antri.js +2 -0
  3. package/dist/cli/banner.d.ts +22 -0
  4. package/dist/cli/banner.d.ts.map +1 -0
  5. package/dist/cli/banner.js +133 -0
  6. package/dist/cli/banner.js.map +1 -0
  7. package/dist/cli/dialogs/filePicker.d.ts +23 -0
  8. package/dist/cli/dialogs/filePicker.d.ts.map +1 -0
  9. package/dist/cli/dialogs/filePicker.js +106 -0
  10. package/dist/cli/dialogs/filePicker.js.map +1 -0
  11. package/dist/cli/dialogs/modelPicker.d.ts +10 -0
  12. package/dist/cli/dialogs/modelPicker.d.ts.map +1 -0
  13. package/dist/cli/dialogs/modelPicker.js +205 -0
  14. package/dist/cli/dialogs/modelPicker.js.map +1 -0
  15. package/dist/cli/dialogs/profilePicker.d.ts +11 -0
  16. package/dist/cli/dialogs/profilePicker.d.ts.map +1 -0
  17. package/dist/cli/dialogs/profilePicker.js +185 -0
  18. package/dist/cli/dialogs/profilePicker.js.map +1 -0
  19. package/dist/cli/dialogs/providerPicker.d.ts +19 -0
  20. package/dist/cli/dialogs/providerPicker.d.ts.map +1 -0
  21. package/dist/cli/dialogs/providerPicker.js +205 -0
  22. package/dist/cli/dialogs/providerPicker.js.map +1 -0
  23. package/dist/cli/prompt.d.ts +3 -0
  24. package/dist/cli/prompt.d.ts.map +1 -0
  25. package/dist/cli/prompt.js +50 -0
  26. package/dist/cli/prompt.js.map +1 -0
  27. package/dist/cli/promptToolkit.d.ts +14 -0
  28. package/dist/cli/promptToolkit.d.ts.map +1 -0
  29. package/dist/cli/promptToolkit.js +389 -0
  30. package/dist/cli/promptToolkit.js.map +1 -0
  31. package/dist/cli/renderer.d.ts +21 -0
  32. package/dist/cli/renderer.d.ts.map +1 -0
  33. package/dist/cli/renderer.js +97 -0
  34. package/dist/cli/renderer.js.map +1 -0
  35. package/dist/cli/shortcuts.d.ts +13 -0
  36. package/dist/cli/shortcuts.d.ts.map +1 -0
  37. package/dist/cli/shortcuts.js +414 -0
  38. package/dist/cli/shortcuts.js.map +1 -0
  39. package/dist/core/agent.d.ts +15 -0
  40. package/dist/core/agent.d.ts.map +1 -0
  41. package/dist/core/agent.js +232 -0
  42. package/dist/core/agent.js.map +1 -0
  43. package/dist/core/citations.d.ts +19 -0
  44. package/dist/core/citations.d.ts.map +1 -0
  45. package/dist/core/citations.js +40 -0
  46. package/dist/core/citations.js.map +1 -0
  47. package/dist/core/config.d.ts +16 -0
  48. package/dist/core/config.d.ts.map +1 -0
  49. package/dist/core/config.js +172 -0
  50. package/dist/core/config.js.map +1 -0
  51. package/dist/core/crawler.d.ts +18 -0
  52. package/dist/core/crawler.d.ts.map +1 -0
  53. package/dist/core/crawler.js +83 -0
  54. package/dist/core/crawler.js.map +1 -0
  55. package/dist/core/debugger.d.ts +20 -0
  56. package/dist/core/debugger.d.ts.map +1 -0
  57. package/dist/core/debugger.js +105 -0
  58. package/dist/core/debugger.js.map +1 -0
  59. package/dist/core/dialectic.d.ts +23 -0
  60. package/dist/core/dialectic.d.ts.map +1 -0
  61. package/dist/core/dialectic.js +300 -0
  62. package/dist/core/dialectic.js.map +1 -0
  63. package/dist/core/goalLoop.d.ts +14 -0
  64. package/dist/core/goalLoop.d.ts.map +1 -0
  65. package/dist/core/goalLoop.js +104 -0
  66. package/dist/core/goalLoop.js.map +1 -0
  67. package/dist/core/history.d.ts +13 -0
  68. package/dist/core/history.d.ts.map +1 -0
  69. package/dist/core/history.js +53 -0
  70. package/dist/core/history.js.map +1 -0
  71. package/dist/core/metaOptimizer.d.ts +27 -0
  72. package/dist/core/metaOptimizer.d.ts.map +1 -0
  73. package/dist/core/metaOptimizer.js +98 -0
  74. package/dist/core/metaOptimizer.js.map +1 -0
  75. package/dist/core/sandbox.d.ts +29 -0
  76. package/dist/core/sandbox.d.ts.map +1 -0
  77. package/dist/core/sandbox.js +141 -0
  78. package/dist/core/sandbox.js.map +1 -0
  79. package/dist/core/scraper.d.ts +22 -0
  80. package/dist/core/scraper.d.ts.map +1 -0
  81. package/dist/core/scraper.js +180 -0
  82. package/dist/core/scraper.js.map +1 -0
  83. package/dist/core/search.d.ts +27 -0
  84. package/dist/core/search.d.ts.map +1 -0
  85. package/dist/core/search.js +222 -0
  86. package/dist/core/search.js.map +1 -0
  87. package/dist/core/skillSynthesizer.d.ts +43 -0
  88. package/dist/core/skillSynthesizer.d.ts.map +1 -0
  89. package/dist/core/skillSynthesizer.js +147 -0
  90. package/dist/core/skillSynthesizer.js.map +1 -0
  91. package/dist/core/tools.d.ts +12 -0
  92. package/dist/core/tools.d.ts.map +1 -0
  93. package/dist/core/tools.js +467 -0
  94. package/dist/core/tools.js.map +1 -0
  95. package/dist/core/updater.d.ts +9 -0
  96. package/dist/core/updater.d.ts.map +1 -0
  97. package/dist/core/updater.js +63 -0
  98. package/dist/core/updater.js.map +1 -0
  99. package/dist/index.d.ts +3 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +92 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/memory/consolidation.d.ts +17 -0
  104. package/dist/memory/consolidation.d.ts.map +1 -0
  105. package/dist/memory/consolidation.js +42 -0
  106. package/dist/memory/consolidation.js.map +1 -0
  107. package/dist/memory/episodic.d.ts +15 -0
  108. package/dist/memory/episodic.d.ts.map +1 -0
  109. package/dist/memory/episodic.js +97 -0
  110. package/dist/memory/episodic.js.map +1 -0
  111. package/dist/memory/manager.d.ts +24 -0
  112. package/dist/memory/manager.d.ts.map +1 -0
  113. package/dist/memory/manager.js +97 -0
  114. package/dist/memory/manager.js.map +1 -0
  115. package/dist/memory/profile.d.ts +21 -0
  116. package/dist/memory/profile.d.ts.map +1 -0
  117. package/dist/memory/profile.js +111 -0
  118. package/dist/memory/profile.js.map +1 -0
  119. package/dist/memory/semantic.d.ts +24 -0
  120. package/dist/memory/semantic.d.ts.map +1 -0
  121. package/dist/memory/semantic.js +102 -0
  122. package/dist/memory/semantic.js.map +1 -0
  123. package/dist/memory/types.d.ts +45 -0
  124. package/dist/memory/types.d.ts.map +1 -0
  125. package/dist/memory/types.js +2 -0
  126. package/dist/memory/types.js.map +1 -0
  127. package/dist/memory/vectorStore.d.ts +18 -0
  128. package/dist/memory/vectorStore.d.ts.map +1 -0
  129. package/dist/memory/vectorStore.js +103 -0
  130. package/dist/memory/vectorStore.js.map +1 -0
  131. package/dist/profiles/profileManager.d.ts +25 -0
  132. package/dist/profiles/profileManager.d.ts.map +1 -0
  133. package/dist/profiles/profileManager.js +205 -0
  134. package/dist/profiles/profileManager.js.map +1 -0
  135. package/dist/providers/anthropic.d.ts +14 -0
  136. package/dist/providers/anthropic.d.ts.map +1 -0
  137. package/dist/providers/anthropic.js +80 -0
  138. package/dist/providers/anthropic.js.map +1 -0
  139. package/dist/providers/base.d.ts +7 -0
  140. package/dist/providers/base.d.ts.map +1 -0
  141. package/dist/providers/base.js +2 -0
  142. package/dist/providers/base.js.map +1 -0
  143. package/dist/providers/gemini.d.ts +14 -0
  144. package/dist/providers/gemini.d.ts.map +1 -0
  145. package/dist/providers/gemini.js +77 -0
  146. package/dist/providers/gemini.js.map +1 -0
  147. package/dist/providers/index.d.ts +4 -0
  148. package/dist/providers/index.d.ts.map +1 -0
  149. package/dist/providers/index.js +65 -0
  150. package/dist/providers/index.js.map +1 -0
  151. package/dist/providers/mock.d.ts +8 -0
  152. package/dist/providers/mock.d.ts.map +1 -0
  153. package/dist/providers/mock.js +62 -0
  154. package/dist/providers/mock.js.map +1 -0
  155. package/dist/providers/models.d.ts +8 -0
  156. package/dist/providers/models.d.ts.map +1 -0
  157. package/dist/providers/models.js +403 -0
  158. package/dist/providers/models.js.map +1 -0
  159. package/dist/providers/openai.d.ts +18 -0
  160. package/dist/providers/openai.d.ts.map +1 -0
  161. package/dist/providers/openai.js +162 -0
  162. package/dist/providers/openai.js.map +1 -0
  163. package/dist/types.d.ts +116 -0
  164. package/dist/types.d.ts.map +1 -0
  165. package/dist/types.js +2 -0
  166. package/dist/types.js.map +1 -0
  167. package/dist/utils/logger.d.ts +23 -0
  168. package/dist/utils/logger.d.ts.map +1 -0
  169. package/dist/utils/logger.js +26 -0
  170. package/dist/utils/logger.js.map +1 -0
  171. package/package.json +57 -0
@@ -0,0 +1,222 @@
1
+ export class WebSearchEngine {
2
+ static userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
3
+ /**
4
+ * Autonomous Multi-Provider Web Search (Zero API Key required)
5
+ */
6
+ static async search(query, maxResults = 5) {
7
+ // 1. Try DuckDuckGo HTML Search
8
+ try {
9
+ const ddgResults = await this.searchDuckDuckGo(query, maxResults);
10
+ if (ddgResults.length > 0) {
11
+ return ddgResults;
12
+ }
13
+ }
14
+ catch {
15
+ // Fallback
16
+ }
17
+ // 2. Try SearXNG Public Instances
18
+ try {
19
+ const searxResults = await this.searchSearXNG(query, maxResults);
20
+ if (searxResults.length > 0) {
21
+ return searxResults;
22
+ }
23
+ }
24
+ catch {
25
+ // Fallback
26
+ }
27
+ // 3. Try DuckDuckGo Lite Search
28
+ try {
29
+ const liteResults = await this.searchDuckDuckGoLite(query, maxResults);
30
+ if (liteResults.length > 0) {
31
+ return liteResults;
32
+ }
33
+ }
34
+ catch {
35
+ // Fallback
36
+ }
37
+ return [];
38
+ }
39
+ /**
40
+ * DuckDuckGo HTML Search Scraper (Free, No API Key)
41
+ */
42
+ static async searchDuckDuckGo(query, maxResults) {
43
+ const url = 'https://html.duckduckgo.com/html/';
44
+ const body = new URLSearchParams({ q: query, b: '' }).toString();
45
+ const res = await fetch(url, {
46
+ method: 'POST',
47
+ headers: {
48
+ 'User-Agent': this.userAgent,
49
+ 'Content-Type': 'application/x-www-form-urlencoded',
50
+ Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
51
+ 'Accept-Language': 'en-US,en;q=0.9',
52
+ },
53
+ body,
54
+ signal: AbortSignal.timeout(6000),
55
+ });
56
+ if (!res.ok)
57
+ return [];
58
+ const html = await res.text();
59
+ const results = [];
60
+ // Parse DuckDuckGo result blocks
61
+ // Pattern: class="result__snippet"... and class="result__url"
62
+ const resultBlockRegex = /<div[^>]*class="[^"]*result__body[^"]*"[^>]*>([\s\S]*?)<\/div>\s*<\/div>/gi;
63
+ let match;
64
+ while ((match = resultBlockRegex.exec(html)) !== null && results.length < maxResults) {
65
+ const block = match[1];
66
+ // Extract title and link
67
+ const titleMatch = /<a[^>]*class="[^"]*result__snippet[^"]*"[^>]*>([\s\S]*?)<\/a>/i.exec(block) ||
68
+ /<a[^>]*class="[^"]*result__url[^"]*"[^>]*href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/i.exec(block) ||
69
+ /<a[^>]*href="([^"]*uddg=([^"&]+)[^"]*)"[^>]*>([\s\S]*?)<\/a>/i.exec(block);
70
+ const linkMatch = /href="([^"]*uddg=([^"&]+)[^"]*)"/i.exec(block) ||
71
+ /href="([^"]+)"/i.exec(block);
72
+ const snippetMatch = /<a[^>]*class="[^"]*result__snippet[^"]*"[^>]*>([\s\S]*?)<\/a>/i.exec(block) ||
73
+ /<div[^>]*class="[^"]*result__snippet[^"]*"[^>]*>([\s\S]*?)<\/div>/i.exec(block);
74
+ let rawUrl = linkMatch ? linkMatch[1] : '';
75
+ if (rawUrl.includes('uddg=')) {
76
+ const uddgPart = rawUrl.split('uddg=')[1]?.split('&')[0];
77
+ if (uddgPart) {
78
+ try {
79
+ rawUrl = decodeURIComponent(uddgPart);
80
+ }
81
+ catch { }
82
+ }
83
+ }
84
+ if (rawUrl.startsWith('//'))
85
+ rawUrl = 'https:' + rawUrl;
86
+ // Extract text
87
+ const rawTitle = titleMatch ? titleMatch[3] || titleMatch[2] || titleMatch[1] || '' : '';
88
+ const rawSnippet = snippetMatch ? snippetMatch[1] : '';
89
+ const title = this.stripHtml(rawTitle);
90
+ const snippet = this.stripHtml(rawSnippet);
91
+ if (rawUrl && rawUrl.startsWith('http') && (title || snippet)) {
92
+ results.push({
93
+ title: title || rawUrl,
94
+ url: rawUrl,
95
+ snippet: snippet || title,
96
+ source: 'DuckDuckGo',
97
+ });
98
+ }
99
+ }
100
+ // Secondary parsing regex if specific class was slightly altered
101
+ if (results.length === 0) {
102
+ const simpleLinkRegex = /<a[^>]*class="result__a"[^>]*href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]*class="result__snippet"[^>]*>([\s\S]*?)<\/a>/gi;
103
+ let sMatch;
104
+ while ((sMatch = simpleLinkRegex.exec(html)) !== null && results.length < maxResults) {
105
+ let rawUrl = sMatch[1];
106
+ if (rawUrl.includes('uddg=')) {
107
+ const uddgPart = rawUrl.split('uddg=')[1]?.split('&')[0];
108
+ if (uddgPart) {
109
+ try {
110
+ rawUrl = decodeURIComponent(uddgPart);
111
+ }
112
+ catch { }
113
+ }
114
+ }
115
+ const title = this.stripHtml(sMatch[2]);
116
+ const snippet = this.stripHtml(sMatch[3]);
117
+ if (rawUrl.startsWith('http')) {
118
+ results.push({ title, url: rawUrl, snippet, source: 'DuckDuckGo' });
119
+ }
120
+ }
121
+ }
122
+ return results;
123
+ }
124
+ /**
125
+ * DuckDuckGo Lite Search (Fast fallback, No API Key)
126
+ */
127
+ static async searchDuckDuckGoLite(query, maxResults) {
128
+ const url = `https://lite.duckduckgo.com/lite/`;
129
+ const res = await fetch(url, {
130
+ method: 'POST',
131
+ headers: {
132
+ 'User-Agent': this.userAgent,
133
+ 'Content-Type': 'application/x-www-form-urlencoded',
134
+ },
135
+ body: new URLSearchParams({ q: query }).toString(),
136
+ signal: AbortSignal.timeout(5000),
137
+ });
138
+ if (!res.ok)
139
+ return [];
140
+ const html = await res.text();
141
+ const results = [];
142
+ const linkRegex = /<a[^>]*class="result-link"[^>]*href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/gi;
143
+ const snippetRegex = /<td[^>]*class="result-snippet"[^>]*>([\s\S]*?)<\/td>/gi;
144
+ const links = [];
145
+ let lMatch;
146
+ while ((lMatch = linkRegex.exec(html)) !== null) {
147
+ let rawUrl = lMatch[1];
148
+ if (rawUrl.includes('uddg=')) {
149
+ const u = rawUrl.split('uddg=')[1]?.split('&')[0];
150
+ if (u) {
151
+ try {
152
+ rawUrl = decodeURIComponent(u);
153
+ }
154
+ catch { }
155
+ }
156
+ }
157
+ links.push({ url: rawUrl, title: this.stripHtml(lMatch[2]) });
158
+ }
159
+ const snippets = [];
160
+ let sMatch;
161
+ while ((sMatch = snippetRegex.exec(html)) !== null) {
162
+ snippets.push(this.stripHtml(sMatch[1]));
163
+ }
164
+ for (let i = 0; i < Math.min(links.length, maxResults); i++) {
165
+ if (links[i].url.startsWith('http')) {
166
+ results.push({
167
+ title: links[i].title,
168
+ url: links[i].url,
169
+ snippet: snippets[i] || links[i].title,
170
+ source: 'DuckDuckGo Lite',
171
+ });
172
+ }
173
+ }
174
+ return results;
175
+ }
176
+ /**
177
+ * Public SearXNG Instances (JSON API, No Key)
178
+ */
179
+ static async searchSearXNG(query, maxResults) {
180
+ const instances = [
181
+ 'https://search.ononoki.org',
182
+ 'https://searx.be',
183
+ 'https://search.sapti.me',
184
+ ];
185
+ for (const inst of instances) {
186
+ try {
187
+ const res = await fetch(`${inst}/search?q=${encodeURIComponent(query)}&format=json`, {
188
+ headers: { 'User-Agent': this.userAgent },
189
+ signal: AbortSignal.timeout(4000),
190
+ });
191
+ if (res.ok) {
192
+ const data = (await res.json());
193
+ if (data.results && Array.isArray(data.results) && data.results.length > 0) {
194
+ return data.results.slice(0, maxResults).map((r) => ({
195
+ title: r.title || 'No Title',
196
+ url: r.url || '',
197
+ snippet: r.content || r.title || '',
198
+ source: 'SearXNG',
199
+ }));
200
+ }
201
+ }
202
+ }
203
+ catch {
204
+ // Try next instance
205
+ }
206
+ }
207
+ return [];
208
+ }
209
+ static stripHtml(html) {
210
+ return html
211
+ .replace(/<[^>]+>/g, '')
212
+ .replace(/&nbsp;/g, ' ')
213
+ .replace(/&amp;/g, '&')
214
+ .replace(/&lt;/g, '<')
215
+ .replace(/&gt;/g, '>')
216
+ .replace(/&quot;/g, '"')
217
+ .replace(/&#39;/g, "'")
218
+ .replace(/\s+/g, ' ')
219
+ .trim();
220
+ }
221
+ }
222
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { ToolDefinition } from '../types.js';
2
+ export interface DynamicSkillManifest {
3
+ name: string;
4
+ description: string;
5
+ language: 'python' | 'javascript' | 'bash';
6
+ parameters: {
7
+ type: string;
8
+ properties: Record<string, any>;
9
+ required?: string[];
10
+ };
11
+ entryFile: string;
12
+ version: string;
13
+ author: 'ANTRI Meta-Agent';
14
+ createdAt: number;
15
+ }
16
+ export declare class SkillSynthesizer {
17
+ private static readonly PRIMARY_DIR;
18
+ private static readonly SECONDARY_DIR;
19
+ /**
20
+ * Synthesizes, verifies, and persists a new custom tool/skill
21
+ */
22
+ static synthesizeSkill(name: string, description: string, language: 'python' | 'javascript' | 'bash', code: string, parametersSchema: Record<string, any>, testArgs?: Record<string, any>): Promise<{
23
+ success: boolean;
24
+ message: string;
25
+ manifest?: DynamicSkillManifest;
26
+ }>;
27
+ /**
28
+ * Loads all dynamic skills from ~/.agent-cli/skills/ and ~/.antri/skills/
29
+ */
30
+ static loadSynthesizedSkills(): {
31
+ manifest: DynamicSkillManifest;
32
+ scriptPath: string;
33
+ }[];
34
+ /**
35
+ * Converts dynamic skill manifests into ToolDefinition array
36
+ */
37
+ static getDynamicToolDefinitions(): ToolDefinition[];
38
+ /**
39
+ * Executes a custom synthesized skill
40
+ */
41
+ static executeCustomSkill(name: string, args: Record<string, any>): Promise<string>;
42
+ }
43
+ //# sourceMappingURL=skillSynthesizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillSynthesizer.d.ts","sourceRoot":"","sources":["../../src/core/skillSynthesizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;IAC3C,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAmD;IACtF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAEpF;;OAEG;WACiB,eAAe,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,EAC1C,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrC,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC;IAyElF;;OAEG;WACW,qBAAqB,IAAI;QAAE,QAAQ,EAAE,oBAAoB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE;IA6B/F;;OAEG;WACW,yBAAyB,IAAI,cAAc,EAAE;IAS3D;;OAEG;WACiB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAyBjG"}
@@ -0,0 +1,147 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import { SandboxEngine } from './sandbox.js';
5
+ import { log } from '../utils/logger.js';
6
+ export class SkillSynthesizer {
7
+ static PRIMARY_DIR = path.join(os.homedir(), '.agent-cli', 'skills');
8
+ static SECONDARY_DIR = path.join(os.homedir(), '.antri', 'skills');
9
+ /**
10
+ * Synthesizes, verifies, and persists a new custom tool/skill
11
+ */
12
+ static async synthesizeSkill(name, description, language, code, parametersSchema, testArgs = {}) {
13
+ const cleanName = name.toLowerCase().replace(/[^a-z0-9_]/g, '_');
14
+ const skillDir = path.join(this.PRIMARY_DIR, cleanName);
15
+ const antriSkillDir = path.join(this.SECONDARY_DIR, cleanName);
16
+ try {
17
+ if (!fs.existsSync(skillDir))
18
+ fs.mkdirSync(skillDir, { recursive: true });
19
+ if (!fs.existsSync(antriSkillDir))
20
+ fs.mkdirSync(antriSkillDir, { recursive: true });
21
+ const ext = language === 'python' ? 'py' : language === 'javascript' ? 'js' : 'sh';
22
+ const scriptName = `main.${ext}`;
23
+ const scriptPath = path.join(skillDir, scriptName);
24
+ fs.writeFileSync(scriptPath, code, 'utf-8');
25
+ fs.writeFileSync(path.join(antriSkillDir, scriptName), code, 'utf-8');
26
+ // 1. Verify synthesized skill with dry-run test
27
+ let verifyOutput = '';
28
+ if (language === 'python') {
29
+ const testRunner = `
30
+ import json, sys
31
+ args = ${JSON.stringify(testArgs)}
32
+ # Script execution test
33
+ try:
34
+ ${code.split('\n').map((l) => ' ' + l).join('\n')}
35
+ print("\\n[SKILL_VERIFIED_SUCCESS]")
36
+ except Exception as e:
37
+ print(f"[SKILL_ERROR]: {e}", file=sys.stderr)
38
+ `;
39
+ const testRes = await SandboxEngine.executePython(testRunner);
40
+ if (testRes.exitCode !== 0 || testRes.stderr.includes('[SKILL_ERROR]')) {
41
+ return {
42
+ success: false,
43
+ message: `Verification failed: ${testRes.stderr || testRes.stdout}`,
44
+ };
45
+ }
46
+ verifyOutput = testRes.stdout;
47
+ }
48
+ // 2. Create manifest
49
+ const manifest = {
50
+ name: cleanName,
51
+ description,
52
+ language,
53
+ parameters: {
54
+ type: 'object',
55
+ properties: parametersSchema,
56
+ required: Object.keys(parametersSchema),
57
+ },
58
+ entryFile: scriptName,
59
+ version: '1.0.0',
60
+ author: 'ANTRI Meta-Agent',
61
+ createdAt: Date.now(),
62
+ };
63
+ fs.writeFileSync(path.join(skillDir, 'skill.json'), JSON.stringify(manifest, null, 2), 'utf-8');
64
+ fs.writeFileSync(path.join(antriSkillDir, 'skill.json'), JSON.stringify(manifest, null, 2), 'utf-8');
65
+ log.success(`✨ Synthesized and verified new skill: '${cleanName}' at ~/.agent-cli/skills/${cleanName}/`);
66
+ return {
67
+ success: true,
68
+ message: `Successfully synthesized and verified skill '${cleanName}'. Verification output: ${verifyOutput}`,
69
+ manifest,
70
+ };
71
+ }
72
+ catch (err) {
73
+ return {
74
+ success: false,
75
+ message: `Skill synthesis failed: ${err.message}`,
76
+ };
77
+ }
78
+ }
79
+ /**
80
+ * Loads all dynamic skills from ~/.agent-cli/skills/ and ~/.antri/skills/
81
+ */
82
+ static loadSynthesizedSkills() {
83
+ const loaded = [];
84
+ const dirs = [this.PRIMARY_DIR, this.SECONDARY_DIR];
85
+ for (const baseDir of dirs) {
86
+ if (fs.existsSync(baseDir)) {
87
+ try {
88
+ const entries = fs.readdirSync(baseDir, { withFileTypes: true });
89
+ for (const ent of entries) {
90
+ if (ent.isDirectory()) {
91
+ const manifestFile = path.join(baseDir, ent.name, 'skill.json');
92
+ if (fs.existsSync(manifestFile)) {
93
+ try {
94
+ const manifest = JSON.parse(fs.readFileSync(manifestFile, 'utf-8'));
95
+ const scriptPath = path.join(baseDir, ent.name, manifest.entryFile);
96
+ if (fs.existsSync(scriptPath) && !loaded.some((l) => l.manifest.name === manifest.name)) {
97
+ loaded.push({ manifest, scriptPath });
98
+ }
99
+ }
100
+ catch { }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ catch { }
106
+ }
107
+ }
108
+ return loaded;
109
+ }
110
+ /**
111
+ * Converts dynamic skill manifests into ToolDefinition array
112
+ */
113
+ static getDynamicToolDefinitions() {
114
+ const skills = this.loadSynthesizedSkills();
115
+ return skills.map((s) => ({
116
+ name: s.manifest.name,
117
+ description: `[Custom Synthesized Skill] ${s.manifest.description}`,
118
+ parameters: s.manifest.parameters,
119
+ }));
120
+ }
121
+ /**
122
+ * Executes a custom synthesized skill
123
+ */
124
+ static async executeCustomSkill(name, args) {
125
+ const skills = this.loadSynthesizedSkills();
126
+ const skill = skills.find((s) => s.manifest.name === name);
127
+ if (!skill) {
128
+ throw new Error(`Custom skill '${name}' not found.`);
129
+ }
130
+ if (skill.manifest.language === 'python') {
131
+ const runnerCode = `
132
+ import json, sys, os
133
+ args = json.loads(${JSON.stringify(JSON.stringify(args))})
134
+ with open(r"${skill.scriptPath}", "r", encoding="utf-8") as f:
135
+ code = f.read()
136
+ exec(code, {"args": args, "json": json, "sys": sys, "os": os})
137
+ `;
138
+ const res = await SandboxEngine.executePython(runnerCode);
139
+ if (res.exitCode !== 0) {
140
+ throw new Error(`Skill execution error (${res.exitCode}): ${res.stderr || res.stdout}`);
141
+ }
142
+ return res.stdout || '(Skill executed with no stdout output)';
143
+ }
144
+ return '(Unsupported skill language)';
145
+ }
146
+ }
147
+ //# sourceMappingURL=skillSynthesizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillSynthesizer.js","sourceRoot":"","sources":["../../src/core/skillSynthesizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ToolDefinition, ToolResult } from '../types.js';
2
+ export declare const SENSITIVE_TOOLS: Set<string>;
3
+ export declare const AVAILABLE_TOOLS: ToolDefinition[];
4
+ export declare function getAllActiveTools(): ToolDefinition[];
5
+ export declare class ToolExecutor {
6
+ private workingDir;
7
+ constructor(workingDir?: string);
8
+ static isSensitive(name: string): boolean;
9
+ static promptForPermission(name: string, args: Record<string, any>): Promise<boolean>;
10
+ execute(name: string, args: Record<string, any>, toolCallId: string): Promise<ToolResult>;
11
+ }
12
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzD,eAAO,MAAM,eAAe,aAO1B,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,cAAc,EAyL3C,CAAC;AAEF,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAYpD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,GAAE,MAAsB;WAIhC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAI5B,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA+CrF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAkOvG"}