micro-models-agent 0.2.79 → 0.2.80
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.
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web-scraping
|
|
3
|
+
description: Web scraping and data extraction using headless browser (Playwright) and HTTP fetch. Use for parsing product catalogs, extracting structured data from websites, scraping articles, tables, and any web content. Handles dynamic SPA pages, authentication (cookies/tokens), anti-bot measures, lazy loading. Trigger on mentions of "parse", "scrape", "extract data from website", "парсинг", "спарсить", "вытасти данные с сайта".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Web Scraping & Data Extraction
|
|
7
|
+
|
|
8
|
+
高效的 web-парсинг через headless browser (Playwright) и HTTP fetch. Минимум ходов — максимум данных.
|
|
9
|
+
|
|
10
|
+
## Core Rule: 3-Step Pattern
|
|
11
|
+
|
|
12
|
+
Любая задача парсинга сводится к 3 шагам:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Step 1: navigate → открыть страницу
|
|
16
|
+
Step 2: evaluate → извлечь данные через JS
|
|
17
|
+
Step 3: write_file → сохранить результат
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Никогда не используйте** extract без предварительного evaluate. extract возвращает сырой HTML/text — вы тратите токены на обработку того, что JavaScript делает за 1 строку.
|
|
21
|
+
|
|
22
|
+
## Decision: web_fetch vs web_browse
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
web_fetch(url) — простой GET, нет JS-рендеринга, нет кук/авторизации
|
|
26
|
+
web_browse(navigate) — нужен JS, куки, авторизация, динамический контент
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Правило**: если сайт — SPA (React/Vue/Angular) или требует куки/авторизации → **всегда web_browse**. web_fetch вернёт пустой HTML.
|
|
30
|
+
|
|
31
|
+
## Playwright: Key Facts
|
|
32
|
+
|
|
33
|
+
1. **Stateful session**: `navigate` открывает страницу, все последующие action'ы работают с ней. Закрой `close` когда закончишь.
|
|
34
|
+
2. **Headless Chromium**: страница рендерится как в обычном браузере. JS выполняется.
|
|
35
|
+
3. **Auto-wait**: `navigate` ждёт `domcontentloaded` + 1с. Для тяжёлых страниц — добавляй `wait` после navigate.
|
|
36
|
+
4. **5-minute idle timeout**: если сессия неактивна > 5 минут, браузер закроется.
|
|
37
|
+
5. **Viewport 1280x720**:某些 элементы могут скрываться за `@media` запросами.
|
|
38
|
+
|
|
39
|
+
## Workflow: Product Catalog (товары)
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
1. web_browse navigate(url)
|
|
43
|
+
2. web_browse evaluate: document.querySelectorAll('.selector').length // проверить сколько элементов
|
|
44
|
+
3. web_browse evaluate: извлечь данные через JSON
|
|
45
|
+
4. write_file результат
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Шаблон извлечения товаров
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
// Step 2: найти селектор
|
|
52
|
+
document.querySelectorAll('.product-card, .item, .goods-item').length
|
|
53
|
+
|
|
54
|
+
// Step 3: извлечь данные (один вызов — все товары)
|
|
55
|
+
JSON.stringify(
|
|
56
|
+
Array.from(document.querySelectorAll('.product-card')).slice(0, 10).map(el => ({
|
|
57
|
+
name: el.querySelector('.title, .name, h2, h3')?.textContent?.trim(),
|
|
58
|
+
price: el.querySelector('.price, .cost')?.textContent?.trim(),
|
|
59
|
+
link: el.querySelector('a')?.href,
|
|
60
|
+
image: el.querySelector('img')?.src,
|
|
61
|
+
}))
|
|
62
|
+
)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Ключевой момент**: один `evaluate` с `querySelectorAll` + `map` + `JSON.stringify` экономит 5-10 ходов по сравнению с `extract`.
|
|
66
|
+
|
|
67
|
+
## Workflow: Article / Blog Post
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
1. web_browse navigate(url)
|
|
71
|
+
2. web_browse evaluate: document.querySelector('article, .post-content, .entry-content')?.innerText
|
|
72
|
+
3. write_file результат
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Workflow: Table Data
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
1. web_browse navigate(url)
|
|
79
|
+
2. web_browse evaluate:
|
|
80
|
+
JSON.stringify(
|
|
81
|
+
Array.from(document.querySelectorAll('table tr')).map(row =>
|
|
82
|
+
Array.from(row.querySelectorAll('td, th')).map(cell => cell.textContent.trim())
|
|
83
|
+
)
|
|
84
|
+
)
|
|
85
|
+
3. write_file результат
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Authentication & Cookies
|
|
89
|
+
|
|
90
|
+
### Set cookies before navigate
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
// Step 1: Set cookies via evaluate (before navigate to target page)
|
|
94
|
+
web_browse evaluate: document.cookie = "session=abc123; path=/"
|
|
95
|
+
|
|
96
|
+
// Or set multiple cookies
|
|
97
|
+
web_browse evaluate: `
|
|
98
|
+
document.cookie = "token=xyz; path=/; max-age=3600";
|
|
99
|
+
document.cookie = "user_id=42; path=/";
|
|
100
|
+
`
|
|
101
|
+
|
|
102
|
+
// Step 2: Navigate (cookies are now set)
|
|
103
|
+
web_browse navigate: https://example.com/dashboard
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Login flow
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
1. web_browse navigate(url_of_login_page)
|
|
110
|
+
2. web_browse type(selector: 'input[name="email"]', value: 'user@example.com')
|
|
111
|
+
3. web_browse type(selector: 'input[name="password"]', value: 'pass')
|
|
112
|
+
4. web_browse click(selector: 'button[type="submit"]')
|
|
113
|
+
5. web_browse wait(condition: "window.location.href.includes('dashboard')")
|
|
114
|
+
6. web_browse navigate(target_url_to_scrape)
|
|
115
|
+
7. web_browse evaluate: извлечь данные
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Token-based auth (Authorization header)
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
// Set token via evaluate before navigation
|
|
122
|
+
web_browse evaluate: `
|
|
123
|
+
fetch('/api/data', {
|
|
124
|
+
headers: { 'Authorization': 'Bearer YOUR_TOKEN' }
|
|
125
|
+
}).then(r => r.json()).then(d => JSON.stringify(d))
|
|
126
|
+
`
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Anti-Bot Handling
|
|
130
|
+
|
|
131
|
+
### User-Agent (already set by default)
|
|
132
|
+
|
|
133
|
+
Playwright session uses Chrome user-agent by default. If site blocks headless:
|
|
134
|
+
|
|
135
|
+
```javascript
|
|
136
|
+
// Check if page loaded correctly
|
|
137
|
+
web_browse evaluate: document.title + ' | ' + document.querySelectorAll('body > *').length
|
|
138
|
+
|
|
139
|
+
// If blocked (captcha, empty page), try:
|
|
140
|
+
web_browse evaluate: document.querySelector('.captcha, #challenge, [data-testid="challenge"]') ? 'BLOCKED' : 'OK'
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Rate limiting
|
|
144
|
+
|
|
145
|
+
Не делай больше 5 navigate подряд без паузы. Если получаешь 429/503:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
web_browse wait(timeout: 5000) // подождать 5 секунд
|
|
149
|
+
web_bavigate navigate(url) // повторить
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Cloudflare / JS challenges
|
|
153
|
+
|
|
154
|
+
```javascript
|
|
155
|
+
// Wait for challenge to resolve
|
|
156
|
+
web_browse wait(condition: "document.querySelector('#challenge-running') === null", timeout: 15000)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Dynamic Content (SPA / Lazy Loading)
|
|
160
|
+
|
|
161
|
+
### Wait for content to appear
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
1. web_browse navigate(url)
|
|
165
|
+
2. web_browse wait(selector: '.product-card', timeout: 10000) // ждём пока появятся товары
|
|
166
|
+
3. web_browse evaluate: извлечь данные
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Infinite scroll
|
|
170
|
+
|
|
171
|
+
```javascript
|
|
172
|
+
// Scroll to bottom to trigger lazy loading
|
|
173
|
+
web_browse scroll(direction: 'down')
|
|
174
|
+
web_browse scroll(direction: 'down')
|
|
175
|
+
web_browse wait(condition: "document.querySelectorAll('.item').length >= 20", timeout: 10000)
|
|
176
|
+
web_browse evaluate: извлечь все данные
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### AJAX/API data (получить данные из network)
|
|
180
|
+
|
|
181
|
+
```javascript
|
|
182
|
+
// Intercept XHR responses
|
|
183
|
+
web_browse evaluate: `
|
|
184
|
+
new Promise((resolve) => {
|
|
185
|
+
const origFetch = window.fetch;
|
|
186
|
+
window.fetch = async (...args) => {
|
|
187
|
+
const res = await origFetch(...args);
|
|
188
|
+
if (args[0].includes('/api/products')) {
|
|
189
|
+
const data = await res.clone().json();
|
|
190
|
+
resolve(JSON.stringify(data));
|
|
191
|
+
}
|
|
192
|
+
return res;
|
|
193
|
+
};
|
|
194
|
+
// Trigger reload to capture API call
|
|
195
|
+
location.reload();
|
|
196
|
+
})
|
|
197
|
+
`
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Common Mistakes (Чего НЕ делать)
|
|
201
|
+
|
|
202
|
+
### DON'T: extract without knowing the structure
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
# ПЛОХО — тратишь токены на сырой HTML
|
|
206
|
+
web_browse extract(format: 'html')
|
|
207
|
+
web_browse extract(format: 'text')
|
|
208
|
+
web_browse scroll(direction: 'down') # зачем?
|
|
209
|
+
web_browse scroll(direction: 'down') # и ещё раз?
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### DON'T: write Node.js scripts for simple tasks
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
# ПЛОХО — npm init, npm install, write_file скрипта, syntax error, ...
|
|
216
|
+
bash: npm init -y
|
|
217
|
+
bash: npm install axios
|
|
218
|
+
write_file: parse.js // SyntaxError: missing /
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### DON'T: extract with wrong selectors repeatedly
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
# ПЛОХО — пробуешь 5 разных селекторов
|
|
225
|
+
web_browse extract(selector: '.product-card')
|
|
226
|
+
web_browse extract(selector: '.item')
|
|
227
|
+
web_browse extract(selector: '.goods')
|
|
228
|
+
web_browse extract(selector: '.product')
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### RIGHT: discover structure once, extract smart
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
# ПРАВИЛЬНО — 1 navigate + 1 evaluate для структуры + 1 evaluate для данных
|
|
235
|
+
web_browse navigate(url)
|
|
236
|
+
web_browse evaluate: document.querySelector('body').innerHTML.substring(0, 500) // посмотреть структуру
|
|
237
|
+
web_browse evaluate: JSON.stringify(Array.from(document.querySelectorAll('...')).map(...))
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## File Writing Rules
|
|
241
|
+
|
|
242
|
+
- **1 файл за ход**: если нужно создать несколько файлов — используй subagent
|
|
243
|
+
- **write_file блокируется** если > 3 файлов написано без subagent
|
|
244
|
+
- Если write_file заблокирован из-за синтаксической ошибки — **перепиши файл целиком**, не edit
|
|
245
|
+
- Для больших данных: сначала `evaluate` верни JSON, потом `write_file` сформатированный результат
|
|
246
|
+
|
|
247
|
+
## Debugging: Если данные не извлекаются
|
|
248
|
+
|
|
249
|
+
1. **Проверь что страница загрузилась**: `web_browse evaluate: document.title`
|
|
250
|
+
2. **Проверь структуру**: `web_browse evaluate: document.querySelector('body').children.length`
|
|
251
|
+
3. **Проверь конкретный селектор**: `web_browse evaluate: document.querySelectorAll('.your-selector').length`
|
|
252
|
+
4. **Посмотри raw HTML**: `web_browse extract(format: 'html', maxChars: 2000)`
|
|
253
|
+
5. **Проверь есть ли JS-ошибки**: `web_browse evaluate: window.onerror || 'no errors'`
|
|
254
|
+
|
|
255
|
+
## Quick Reference: Actions
|
|
256
|
+
|
|
257
|
+
| Action | Когда использовать | Параметры |
|
|
258
|
+
|--------|-------------------|-----------|
|
|
259
|
+
| `navigate` | Открыть страницу | `url` |
|
|
260
|
+
| `evaluate` | Выполнить JS, получить данные | `value` (JS code) |
|
|
261
|
+
| `extract` | Получить text/html (редко!) | `selector`, `format`, `maxChars` |
|
|
262
|
+
| `click` | Кликнуть по элементу | `selector` |
|
|
263
|
+
| `type` | Ввести текст в поле | `selector`, `value` |
|
|
264
|
+
| `scroll` | Прокрутить страницу | `direction` |
|
|
265
|
+
| `wait` | Ждать появления элемента | `selector` или `condition`, `timeout` |
|
|
266
|
+
| `get_links` | Получить все ссылки | — |
|
|
267
|
+
| `screenshot` | Скриншот страницы | `selector` |
|
|
268
|
+
| `close` | Закрыть браузер | — |
|
|
269
|
+
|
|
270
|
+
## Example: Real Task
|
|
271
|
+
|
|
272
|
+
**Задача**: Спарсить 10 велосипедов с каталога, записать в .md
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
1. web_browse navigate: https://shop.com/bikes
|
|
276
|
+
2. web_browse evaluate: document.querySelectorAll('.product-card').length
|
|
277
|
+
→ "27" (значит селектор правильный)
|
|
278
|
+
3. web_browse evaluate: JSON.stringify(Array.from(document.querySelectorAll('.product-card')).slice(0, 10).map(el => ({
|
|
279
|
+
name: el.querySelector('.title')?.textContent?.trim(),
|
|
280
|
+
price: el.querySelector('.price')?.textContent?.trim(),
|
|
281
|
+
link: el.querySelector('a')?.href
|
|
282
|
+
})))
|
|
283
|
+
→ JSON с 10 товарами
|
|
284
|
+
4. write_file: bikes.md (отформатированный результат)
|
|
285
|
+
5. web_browse close
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Итого: 5 ходов** вместо 30+ как в логе выше.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBvD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CA6BjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAWrE;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAiB9D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAetE;AAYD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EAAE,EACf,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAkBzC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBvD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CA6BjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAWrE;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAiB9D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAetE;AAYD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EAAE,EACf,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAkBzC;AAsED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAqC1E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CASpF"}
|
package/dist/skills/loader.js
CHANGED
|
@@ -176,6 +176,19 @@ let skillIndexCache = null;
|
|
|
176
176
|
/**
|
|
177
177
|
* Извлекает ключевые слова из скилла: сегменты имени + слова из описания (frontmatter).
|
|
178
178
|
*/
|
|
179
|
+
/**
|
|
180
|
+
* Разбивает текст на слова через Intl.Segmenter — корректно для всех языков.
|
|
181
|
+
*/
|
|
182
|
+
function splitWords(text) {
|
|
183
|
+
const segmenter = new Intl.Segmenter('any', { granularity: 'word' });
|
|
184
|
+
const words = [];
|
|
185
|
+
for (const { segment, isWordLike } of segmenter.segment(text.toLowerCase())) {
|
|
186
|
+
if (isWordLike && segment.length > 1) {
|
|
187
|
+
words.push(segment);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return words;
|
|
191
|
+
}
|
|
179
192
|
function getSkillKeywords(name, cwd) {
|
|
180
193
|
const keywords = new Set();
|
|
181
194
|
for (const seg of name.split('-')) {
|
|
@@ -189,8 +202,7 @@ function getSkillKeywords(name, cwd) {
|
|
|
189
202
|
const descLine = fmMatch[1].split('\n').find(l => l.startsWith('description:'));
|
|
190
203
|
if (descLine) {
|
|
191
204
|
const desc = descLine.replace(/^description:\s*"?([^"]*)"?\s*$/, '$1').trim();
|
|
192
|
-
const
|
|
193
|
-
for (const w of words)
|
|
205
|
+
for (const w of splitWords(desc))
|
|
194
206
|
keywords.add(w);
|
|
195
207
|
}
|
|
196
208
|
}
|
|
@@ -213,15 +225,10 @@ function buildSkillIndex(cwd) {
|
|
|
213
225
|
/**
|
|
214
226
|
* Извлекает поисковые термы из текста — просто слова, никакой лингвистики.
|
|
215
227
|
* Матчинг работает по совпадению слов в одном языке.
|
|
216
|
-
*
|
|
228
|
+
* Поддерживает все языки через Intl.Segmenter.
|
|
217
229
|
*/
|
|
218
230
|
function extractSearchTerms(text) {
|
|
219
|
-
|
|
220
|
-
const words = text.toLowerCase().match(/[\wа-яё]+/g) || [];
|
|
221
|
-
for (const word of words) {
|
|
222
|
-
terms.add(word);
|
|
223
|
-
}
|
|
224
|
-
return terms;
|
|
231
|
+
return new Set(splitWords(text));
|
|
225
232
|
}
|
|
226
233
|
/**
|
|
227
234
|
* Проверяет, просит ли пользователь явно "используй скилл".
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"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"}
|