@fprad0/skill-master-mcp 0.0.2

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 (46) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +168 -0
  3. package/VERSION.md +9 -0
  4. package/bin/skill-master-configure-private-registry.mjs +3 -0
  5. package/bin/skill-master.mjs +3 -0
  6. package/dist/catalog.d.ts +11 -0
  7. package/dist/catalog.d.ts.map +1 -0
  8. package/dist/catalog.js +202 -0
  9. package/dist/catalog.js.map +1 -0
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +284 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/recommender.d.ts +6 -0
  15. package/dist/recommender.d.ts.map +1 -0
  16. package/dist/recommender.js +102 -0
  17. package/dist/recommender.js.map +1 -0
  18. package/dist/skill-network.d.ts +67 -0
  19. package/dist/skill-network.d.ts.map +1 -0
  20. package/dist/skill-network.js +226 -0
  21. package/dist/skill-network.js.map +1 -0
  22. package/dist/types.d.ts +89 -0
  23. package/dist/types.d.ts.map +1 -0
  24. package/dist/types.js +2 -0
  25. package/dist/types.js.map +1 -0
  26. package/dist/update.d.ts +45 -0
  27. package/dist/update.d.ts.map +1 -0
  28. package/dist/update.js +288 -0
  29. package/dist/update.js.map +1 -0
  30. package/docs/operations/GUIA_NPM_PRIVADO.md +250 -0
  31. package/examples/client-configs/claude-code.commands.md +17 -0
  32. package/examples/client-configs/claude-code.project.mcp.json +18 -0
  33. package/examples/client-configs/claude-desktop.macos.json +18 -0
  34. package/examples/client-configs/claude-desktop.windows.json +20 -0
  35. package/examples/client-configs/codex.windows.toml +11 -0
  36. package/examples/client-configs/gemini-code-assist.intellij.mcp.json +18 -0
  37. package/examples/client-configs/gemini.linux.settings.json +21 -0
  38. package/examples/client-configs/gemini.windows.settings.json +23 -0
  39. package/examples/client-configs/generic-stdio.json +16 -0
  40. package/manifests/channels/beta.json +25 -0
  41. package/manifests/channels/stable.json +26 -0
  42. package/network/approved-skills.json +5 -0
  43. package/package.json +60 -0
  44. package/scripts/configure-private-registry.mjs +124 -0
  45. package/scripts/lib/private-registry.mjs +56 -0
  46. package/sources.json +8 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,22 @@
1
+ # CHANGELOG
2
+
3
+ All notable changes to `skill_master` will be tracked here.
4
+
5
+ ## [Unreleased]
6
+
7
+ - Prepare a public npm publication path with dedicated workflow and operator guide.
8
+ - Upgrade release automation from Node `20` to Node `22`.
9
+
10
+ ## [0.0.2] - 2026-06-25
11
+
12
+ - Add private-registry setup helpers for Windows, Linux, and Node-based package flows.
13
+ - Ship a package-level `skill-master-configure-private-registry` bin for operator validation and repair.
14
+ - Include private-package docs and client config examples in the published tarball.
15
+ - Restore `npm run check` compatibility on Node `18+` and align manifest validation with stable ESM path handling.
16
+ - Expand operational docs for Codex, Claude, Gemini, and generic stdio MCP clients.
17
+
18
+ ## [0.0.1] - 2026-06-25
19
+
20
+ - Bootstrap the independent `skill_master` MCP.
21
+ - Add `list_sources`, `search`, `recommend`, `sync_status`, `update_plan`, and `refresh_catalog`.
22
+ - Register local launcher/update scripts for Codex environments.
package/README.md ADDED
@@ -0,0 +1,168 @@
1
+ # Skill Master MCP
2
+
3
+ Versao planejada: `00.02`
4
+
5
+ Este repositorio e a base independente do MCP `skill_master`. Ele nao pertence ao LinkBiz e deve evoluir como um projeto pessoal, preferencialmente publicado em um GitHub particular.
6
+
7
+ ## Objetivo
8
+
9
+ Criar um MCP capaz de catalogar skills locais e remotas, recomendar as melhores skills para um prompt e manter atualizacoes automaticas para varios computadores e usuarios.
10
+
11
+ ## Decisao da versao 00.02
12
+
13
+ A versao `00.02` consolida a distribuicao multiplataforma e o pacote privado:
14
+
15
+ - repositorio pessoal no GitHub como fonte de verdade
16
+ - manifesto remoto de versao e canal
17
+ - launcher local com verificacao de atualizacao
18
+ - atualizacao por `git pull --ff-only` quando o diretorio estiver limpo
19
+ - fallback seguro quando houver alteracoes locais
20
+ - arquitetura preparada para pacote npm privado, GitHub Releases e MCP remoto no futuro
21
+
22
+ ## Compatibilidade atual
23
+
24
+ O projeto agora possui fluxo operacional para:
25
+
26
+ - Windows: `scripts/install-skill-master.ps1`, `scripts/update-skill-master.ps1`, `scripts/skill-master-launcher.ps1`
27
+ - Linux: `scripts/install-skill-master.sh`, `scripts/update-skill-master.sh`, `scripts/skill-master-launcher.sh`
28
+ - Clientes AI: Codex, Claude Desktop, Claude Code, Gemini CLI, Gemini Code Assist e clientes MCP genericos via stdio
29
+
30
+ Requisitos praticos nos dois ambientes:
31
+
32
+ - `git`
33
+ - `node` `18+`
34
+ - `npm`
35
+ - acesso ao repositorio GitHub configurado
36
+
37
+ ## Instalacao rapida
38
+
39
+ ### Windows
40
+
41
+ ```powershell
42
+ powershell -ExecutionPolicy Bypass -File scripts/install-skill-master.ps1
43
+ ```
44
+
45
+ ### Linux
46
+
47
+ ```bash
48
+ bash scripts/install-skill-master.sh
49
+ ```
50
+
51
+ ## Instalacao via pacote privado
52
+
53
+ O projeto agora tambem pode ser distribuido como pacote privado via GitHub Packages.
54
+
55
+ Nome do pacote:
56
+
57
+ ```text
58
+ @fprad0/skill-master-mcp
59
+ ```
60
+
61
+ Fluxo resumido:
62
+
63
+ 1. autenticar o `npm` no registry privado;
64
+ 2. configurar o cliente MCP para executar `npx -y @fprad0/skill-master-mcp@latest`;
65
+ 3. reiniciar o cliente.
66
+
67
+ Atalho operacional:
68
+
69
+ - Windows: `powershell -ExecutionPolicy Bypass -File .\scripts\configure-private-registry.ps1 -Validate`
70
+ - Linux: `bash ./scripts/configure-private-registry.sh --validate`
71
+
72
+ Bootstrap direto pelo pacote, para maquinas que ja conseguem resolver o escopo `@fprad0` no GitHub Packages:
73
+
74
+ - PowerShell: `$env:GITHUB_PACKAGES_TOKEN='SEU_TOKEN'; npx -y -p @fprad0/skill-master-mcp skill-master-configure-private-registry --validate`
75
+ - Bash: `GITHUB_PACKAGES_TOKEN='SEU_TOKEN' npx -y -p @fprad0/skill-master-mcp skill-master-configure-private-registry --validate`
76
+
77
+ Exemplo de `.npmrc`:
78
+
79
+ ```ini
80
+ @fprad0:registry=https://npm.pkg.github.com
81
+ //npm.pkg.github.com/:_authToken=${GITHUB_PACKAGES_TOKEN}
82
+ ```
83
+
84
+ Leia:
85
+
86
+ - [Guia de instalacao via pacote privado](docs/operations/GUIA_NPM_PRIVADO.md)
87
+
88
+ ## Instalacao via npm publico
89
+
90
+ O repositório agora tambem pode ser preparado para distribuicao por `npmjs.org`, que e o caminho necessario para chegar em instalacao simples com:
91
+
92
+ ```bash
93
+ npm install -g @fprad0/skill-master-mcp
94
+ ```
95
+
96
+ Estado atual:
97
+
98
+ - o fluxo de publicacao publica foi preparado no repositório;
99
+ - o pacote `0.0.2` ainda nao esta publicado no npm publico neste momento;
100
+ - enquanto isso nao acontecer, o install simples por `npm install` continua bloqueado pelo uso de GitHub Packages privado.
101
+
102
+ Leia:
103
+
104
+ - [Guia de publicacao no npm publico](docs/operations/GUIA_NPM_PUBLICO.md)
105
+
106
+ ## Registro no Codex
107
+
108
+ - Windows registra o MCP usando `powershell.exe`
109
+ - Linux registra o MCP usando `/usr/bin/env` + `bash`
110
+
111
+ Os dois caminhos configuram:
112
+
113
+ - `SKILL_MASTER_CONFIG`
114
+ - `SKILL_MASTER_CACHE`
115
+ - `SKILL_MASTER_MANIFEST_URL`
116
+ - `SKILL_MASTER_UPDATE_CHANNEL`
117
+ - `SKILL_MASTER_RELEASE_BRANCH`
118
+
119
+ ## Compatibilidade com Claude e Gemini
120
+
121
+ A versao `00.02` documenta compatibilidade operacional com:
122
+
123
+ - Claude Desktop
124
+ - Claude Code
125
+ - Gemini CLI
126
+ - Gemini Code Assist
127
+ - Codex
128
+ - clientes MCP genericos
129
+
130
+ Leia:
131
+
132
+ - [Compatibilidade MCP 00.02](docs/clients/COMPATIBILIDADE_CLIENTES_MCP_00_02.md)
133
+ - [Exemplos de configuracao](examples/client-configs/)
134
+
135
+ ## Rede segura de skills
136
+
137
+ O `skill_master` pode aprender com as skills ja existentes em cada maquina instalada, mas o compartilhamento entre computadores segue um fluxo seguro:
138
+
139
+ - catalogo local automatico;
140
+ - deduplicacao por nome e hash;
141
+ - pacote local de contribuicao;
142
+ - revisao de risco e privacidade;
143
+ - aprovacao humana antes de qualquer distribuicao.
144
+
145
+ Ferramentas MCP principais:
146
+
147
+ - `skill_master_refresh_catalog`
148
+ - `skill_master_prepare_skill_contribution`
149
+ - `skill_master_review_skill_contribution`
150
+
151
+ O pacote de contribuicao nao envia arquivos automaticamente, nao executa skills desconhecidas e nao inclui caminhos completos ou corpo bruto por padrao.
152
+
153
+ Leia:
154
+
155
+ - [Rede segura de skills](docs/architecture/REDE_SEGURA_DE_SKILLS.md)
156
+
157
+ ## Arquivos principais
158
+
159
+ - [Plano geral](docs/PLANO_SKILL_MASTER_00_01.md)
160
+ - [Pesquisa de alternativas de atualizacao](docs/research/PESQUISA_ATUALIZACOES_AUTOMATICAS.md)
161
+ - [Arquitetura de atualizacao automatica](docs/architecture/ARQUITETURA_AUTO_UPDATE.md)
162
+ - [Rede segura de skills](docs/architecture/REDE_SEGURA_DE_SKILLS.md)
163
+ - [Operacao multi-computador](docs/operations/GUIA_MULTI_COMPUTADOR.md)
164
+ - [Prompt tasks de execucao](docs/prompt-tasks/)
165
+
166
+ ## Regra de independencia
167
+
168
+ O `skill_master` nao deve importar codigo, paths, tokens, configuracoes ou convencoes especificas do LinkBiz. Ele pode ler skills locais do computador do usuario, mas sempre como fonte configuravel e nao como acoplamento fixo.
package/VERSION.md ADDED
@@ -0,0 +1,9 @@
1
+ # Versão
2
+
3
+ Versão funcional planejada: `00.02`
4
+
5
+ Versão técnica para empacotamento semântico: `0.0.2`
6
+
7
+ ## Observação
8
+
9
+ O nome `00.02` será usado na comunicação e nos documentos. Para ferramentas que exigem SemVer, como npm e alguns fluxos de release, usar `0.0.2`.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import '../scripts/configure-private-registry.mjs';
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import '../dist/index.js';
@@ -0,0 +1,11 @@
1
+ import type { CatalogSnapshot, SkillRecord, SourcesConfig } from './types.js';
2
+ export declare const tokenize: (value: string) => string[];
3
+ export declare const parseSkillMarkdown: (markdown: string, source: Omit<SkillRecord, "id" | "name" | "description" | "headings" | "keywords" | "bodyPreview">) => SkillRecord | null;
4
+ export declare const loadConfig: (configPath: string) => Promise<SourcesConfig>;
5
+ export declare const buildCatalog: (config: SourcesConfig, options: {
6
+ cwd: string;
7
+ includeWeb: boolean;
8
+ }) => Promise<CatalogSnapshot>;
9
+ export declare const saveCatalog: (catalogPath: string, snapshot: CatalogSnapshot) => Promise<void>;
10
+ export declare const readCatalog: (catalogPath: string) => Promise<CatalogSnapshot | null>;
11
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAmB,aAAa,EAAa,MAAM,YAAY,CAAC;AAW1G,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,MAAM,EAK7C,CAAC;AAQH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,QAAQ,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC,KACjG,WAAW,GAAG,IAyBhB,CAAC;AA6GF,eAAO,MAAM,UAAU,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,aAAa,CAG1E,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,QAAQ,aAAa,EACrB,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,KAC5C,OAAO,CAAC,eAAe,CA2BzB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,aAAa,MAAM,EAAE,UAAU,eAAe,KAAG,OAAO,CAAC,IAAI,CAG9F,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAMrF,CAAC"}
@@ -0,0 +1,202 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { promises as fs } from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ const MAX_SKILL_BYTES = 256_000;
6
+ const MAX_WEB_SKILLS_PER_SOURCE = 250;
7
+ const USER_AGENT = 'skill-master-mcp/0.0.1';
8
+ const normalizeText = (value) => value
9
+ .normalize('NFD')
10
+ .replace(/[\u0300-\u036f]/g, '')
11
+ .toLowerCase();
12
+ export const tokenize = (value) => [...new Set(normalizeText(value)
13
+ .split(/[^a-z0-9+#.]+/)
14
+ .map((token) => token.trim())
15
+ .filter((token) => token.length >= 2))];
16
+ const parseFrontmatterField = (frontmatter, field) => {
17
+ const line = frontmatter.split(/\r?\n/).find((entry) => entry.startsWith(`${field}:`));
18
+ if (!line)
19
+ return '';
20
+ return line.slice(field.length + 1).trim().replace(/^['"]|['"]$/g, '');
21
+ };
22
+ export const parseSkillMarkdown = (markdown, source) => {
23
+ const match = markdown.match(/^---\s*\r?\n([\s\S]*?)\r?\n---\s*\r?\n?/);
24
+ if (!match?.[1])
25
+ return null;
26
+ const name = parseFrontmatterField(match[1], 'name');
27
+ const description = parseFrontmatterField(match[1], 'description');
28
+ if (!name || !description)
29
+ return null;
30
+ const body = markdown.slice(match[0].length);
31
+ const headings = body
32
+ .split(/\r?\n/)
33
+ .filter((line) => /^#{1,3}\s+/.test(line))
34
+ .map((line) => line.replace(/^#{1,3}\s+/, '').trim())
35
+ .slice(0, 20);
36
+ const keywords = tokenize(`${name} ${description} ${headings.join(' ')}`);
37
+ const id = createHash('sha256').update(`${source.sourceKind}:${source.location}`).digest('hex').slice(0, 16);
38
+ const contentHash = createHash('sha256').update(markdown).digest('hex');
39
+ return {
40
+ ...source,
41
+ id,
42
+ name,
43
+ description,
44
+ contentHash,
45
+ headings,
46
+ keywords,
47
+ bodyPreview: body.replace(/\s+/g, ' ').trim().slice(0, 600),
48
+ };
49
+ };
50
+ const expandRoot = (root, cwd) => {
51
+ const expanded = root.replace(/^%USERPROFILE%/i, os.homedir()).replace(/\\/g, '/');
52
+ return path.resolve(cwd, expanded);
53
+ };
54
+ const findSkillFiles = async (root) => {
55
+ const found = [];
56
+ const visit = async (directory) => {
57
+ let entries;
58
+ try {
59
+ entries = await fs.readdir(directory, { withFileTypes: true });
60
+ }
61
+ catch {
62
+ return;
63
+ }
64
+ for (const entry of entries) {
65
+ if (entry.name === 'node_modules' || entry.name === '.git' || entry.name === 'dist')
66
+ continue;
67
+ const fullPath = path.join(directory, entry.name);
68
+ if (entry.isDirectory())
69
+ await visit(fullPath);
70
+ else if (entry.isFile() && entry.name === 'SKILL.md')
71
+ found.push(fullPath);
72
+ }
73
+ };
74
+ await visit(root);
75
+ return found;
76
+ };
77
+ const classifyRoot = (root, cwd) => {
78
+ if (root.startsWith(cwd))
79
+ return 'workspace';
80
+ if (root.includes(`${path.sep}plugins${path.sep}`))
81
+ return 'plugin';
82
+ return 'local';
83
+ };
84
+ const scanLocalRoot = async (root, cwd) => {
85
+ const sourceKind = classifyRoot(root, cwd);
86
+ const files = await findSkillFiles(root);
87
+ const records = [];
88
+ for (const file of files) {
89
+ const stats = await fs.stat(file);
90
+ if (stats.size > MAX_SKILL_BYTES)
91
+ continue;
92
+ const markdown = await fs.readFile(file, 'utf8');
93
+ const parsed = parseSkillMarkdown(markdown, {
94
+ sourceKind,
95
+ sourceLabel: path.basename(root),
96
+ location: file,
97
+ trusted: true,
98
+ modifiedAt: stats.mtime.toISOString(),
99
+ });
100
+ if (parsed)
101
+ records.push(parsed);
102
+ }
103
+ return records;
104
+ };
105
+ const fetchJson = async (url) => {
106
+ const response = await fetch(url, {
107
+ headers: { Accept: 'application/vnd.github+json', 'User-Agent': USER_AGENT },
108
+ signal: AbortSignal.timeout(15_000),
109
+ });
110
+ if (!response.ok)
111
+ throw new Error(`HTTP ${response.status} em ${new URL(url).hostname}`);
112
+ return response.json();
113
+ };
114
+ const scanWebSource = async (source) => {
115
+ if (!/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/.test(source.repository)) {
116
+ throw new Error(`Repositório inválido em ${source.name}`);
117
+ }
118
+ const treeUrl = `https://api.github.com/repos/${source.repository}/git/trees/${encodeURIComponent(source.branch)}?recursive=1`;
119
+ const tree = await fetchJson(treeUrl);
120
+ const skillPaths = (tree.tree ?? [])
121
+ .filter((entry) => entry.type === 'blob' && entry.path?.endsWith('/SKILL.md'))
122
+ .map((entry) => entry.path)
123
+ .filter((entry) => Boolean(entry))
124
+ .slice(0, MAX_WEB_SKILLS_PER_SOURCE);
125
+ const records = [];
126
+ for (let offset = 0; offset < skillPaths.length; offset += 8) {
127
+ const batch = skillPaths.slice(offset, offset + 8);
128
+ const parsedBatch = await Promise.all(batch.map(async (skillPath) => {
129
+ const rawUrl = `https://raw.githubusercontent.com/${source.repository}/${encodeURIComponent(source.branch)}/${skillPath}`;
130
+ const response = await fetch(rawUrl, { headers: { 'User-Agent': USER_AGENT }, signal: AbortSignal.timeout(10_000) });
131
+ if (!response.ok)
132
+ return null;
133
+ const markdown = (await response.text()).slice(0, MAX_SKILL_BYTES);
134
+ return parseSkillMarkdown(markdown, {
135
+ sourceKind: 'web',
136
+ sourceLabel: source.name,
137
+ location: `https://github.com/${source.repository}/blob/${source.branch}/${skillPath}`,
138
+ trusted: false,
139
+ });
140
+ }));
141
+ records.push(...parsedBatch.filter((record) => record !== null));
142
+ }
143
+ return records;
144
+ };
145
+ const sourcePriority = { workspace: 4, local: 3, plugin: 2, web: 1 };
146
+ const deduplicateSkills = (skills) => {
147
+ const byName = new Map();
148
+ for (const skill of skills) {
149
+ const key = normalizeText(skill.name);
150
+ const current = byName.get(key);
151
+ if (!current || sourcePriority[skill.sourceKind] > sourcePriority[current.sourceKind])
152
+ byName.set(key, skill);
153
+ }
154
+ return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
155
+ };
156
+ export const loadConfig = async (configPath) => {
157
+ const raw = await fs.readFile(configPath, 'utf8');
158
+ return JSON.parse(raw);
159
+ };
160
+ export const buildCatalog = async (config, options) => {
161
+ const warnings = [];
162
+ const localRoots = [...config.localRoots, ...config.workspaceRoots]
163
+ .map((root) => expandRoot(root, options.cwd));
164
+ const localResults = await Promise.all(localRoots.map(async (root) => {
165
+ try {
166
+ return await scanLocalRoot(root, options.cwd);
167
+ }
168
+ catch (error) {
169
+ warnings.push(`Falha ao catalogar ${root}: ${error instanceof Error ? error.message : 'erro desconhecido'}`);
170
+ return [];
171
+ }
172
+ }));
173
+ const webResults = [];
174
+ if (options.includeWeb) {
175
+ for (const source of config.webSources.filter((entry) => entry.enabled)) {
176
+ try {
177
+ webResults.push(await scanWebSource(source));
178
+ }
179
+ catch (error) {
180
+ warnings.push(`Falha na fonte web ${source.name}: ${error instanceof Error ? error.message : 'erro desconhecido'}`);
181
+ }
182
+ }
183
+ }
184
+ return {
185
+ generatedAt: new Date().toISOString(),
186
+ skills: deduplicateSkills([...localResults.flat(), ...webResults.flat()]),
187
+ warnings,
188
+ };
189
+ };
190
+ export const saveCatalog = async (catalogPath, snapshot) => {
191
+ await fs.mkdir(path.dirname(catalogPath), { recursive: true });
192
+ await fs.writeFile(catalogPath, JSON.stringify(snapshot, null, 2), 'utf8');
193
+ };
194
+ export const readCatalog = async (catalogPath) => {
195
+ try {
196
+ return JSON.parse(await fs.readFile(catalogPath, 'utf8'));
197
+ }
198
+ catch {
199
+ return null;
200
+ }
201
+ };
202
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}