@maestro-ai/mcp-server 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/skill-adapter.d.ts +57 -0
- package/dist/adapters/skill-adapter.d.ts.map +1 -0
- package/dist/adapters/skill-adapter.js +272 -0
- package/dist/adapters/skill-adapter.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +9 -9
- package/dist/resources/index.js.map +1 -1
- package/dist/stdio.js +5 -1
- package/dist/stdio.js.map +1 -1
- package/dist/tools/iniciar-projeto.d.ts +12 -0
- package/dist/tools/iniciar-projeto.d.ts.map +1 -1
- package/dist/tools/iniciar-projeto.js +24 -16
- package/dist/tools/iniciar-projeto.js.map +1 -1
- package/dist/utils/content-injector.d.ts +1 -0
- package/dist/utils/content-injector.d.ts.map +1 -1
- package/dist/utils/content-injector.js +122 -2
- package/dist/utils/content-injector.js.map +1 -1
- package/dist/utils/files.d.ts +16 -16
- package/dist/utils/files.d.ts.map +1 -1
- package/dist/utils/files.js +59 -115
- package/dist/utils/files.js.map +1 -1
- package/package.json +1 -1
package/dist/utils/files.js
CHANGED
|
@@ -31,147 +31,100 @@ export function temContentLocal(diretorio) {
|
|
|
31
31
|
return existsSync(join(dir, '.maestro', 'content'));
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* Obtém o diretório de content (
|
|
34
|
+
* Obtém o diretório de content (SEMPRE do servidor para recursos internos)
|
|
35
35
|
*/
|
|
36
|
-
function
|
|
37
|
-
const dir = diretorio || currentProjectDir;
|
|
38
|
-
// Tenta local primeiro
|
|
39
|
-
if (dir) {
|
|
40
|
-
const localContent = join(dir, '.maestro', 'content');
|
|
41
|
-
if (existsSync(localContent)) {
|
|
42
|
-
return localContent;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
// Fallback para servidor (usa o content-injector para encontrar)
|
|
36
|
+
function getServerContentDir() {
|
|
46
37
|
try {
|
|
47
38
|
return getBuiltinContentDir();
|
|
48
39
|
}
|
|
49
40
|
catch {
|
|
50
|
-
|
|
51
|
-
return join(__dirname, "..", "..", "..", "content");
|
|
41
|
+
return SERVER_CONTENT_ROOT;
|
|
52
42
|
}
|
|
53
43
|
}
|
|
54
44
|
/**
|
|
55
|
-
* Lê conteúdo de um especialista (
|
|
45
|
+
* Lê conteúdo de um especialista (apenas servidor)
|
|
56
46
|
*/
|
|
57
|
-
export async function lerEspecialista(nome
|
|
58
|
-
const contentRoot =
|
|
47
|
+
export async function lerEspecialista(nome) {
|
|
48
|
+
const contentRoot = getServerContentDir();
|
|
59
49
|
const especialistasDir = join(contentRoot, "specialists");
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
throw new Error(`Especialista não encontrado: ${nome}`);
|
|
66
|
-
}
|
|
67
|
-
const path = join(especialistasDir, arquivo);
|
|
68
|
-
return readFile(path, "utf-8");
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
// Se falhou no local, tenta no servidor
|
|
72
|
-
if (contentRoot !== SERVER_CONTENT_ROOT) {
|
|
73
|
-
return lerEspecialista(nome, undefined);
|
|
74
|
-
}
|
|
75
|
-
throw error;
|
|
50
|
+
const files = await readdir(especialistasDir);
|
|
51
|
+
// Busca arquivo que contém o nome do especialista
|
|
52
|
+
const arquivo = files.find(f => f.toLowerCase().includes(nome.toLowerCase()) && f.endsWith(".md"));
|
|
53
|
+
if (!arquivo) {
|
|
54
|
+
throw new Error(`Especialista não encontrado: ${nome}`);
|
|
76
55
|
}
|
|
56
|
+
const path = join(especialistasDir, arquivo);
|
|
57
|
+
return readFile(path, "utf-8");
|
|
77
58
|
}
|
|
78
59
|
/**
|
|
79
|
-
* Lê conteúdo de um template (
|
|
60
|
+
* Lê conteúdo de um template (apenas servidor)
|
|
80
61
|
*/
|
|
81
|
-
export async function lerTemplate(nome
|
|
82
|
-
const contentRoot =
|
|
62
|
+
export async function lerTemplate(nome) {
|
|
63
|
+
const contentRoot = getServerContentDir();
|
|
83
64
|
const templatesDir = join(contentRoot, "templates");
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
throw new Error(`Template não encontrado: ${nome}`);
|
|
89
|
-
}
|
|
90
|
-
const path = join(templatesDir, arquivo);
|
|
91
|
-
return readFile(path, "utf-8");
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
if (contentRoot !== SERVER_CONTENT_ROOT) {
|
|
95
|
-
return lerTemplate(nome, undefined);
|
|
96
|
-
}
|
|
97
|
-
throw error;
|
|
65
|
+
const files = await readdir(templatesDir);
|
|
66
|
+
const arquivo = files.find(f => f.toLowerCase().includes(nome.toLowerCase()) && f.endsWith(".md"));
|
|
67
|
+
if (!arquivo) {
|
|
68
|
+
throw new Error(`Template não encontrado: ${nome}`);
|
|
98
69
|
}
|
|
70
|
+
const path = join(templatesDir, arquivo);
|
|
71
|
+
return readFile(path, "utf-8");
|
|
99
72
|
}
|
|
100
73
|
/**
|
|
101
|
-
* Lê conteúdo de um prompt (
|
|
74
|
+
* Lê conteúdo de um prompt (apenas servidor)
|
|
102
75
|
*/
|
|
103
|
-
export async function lerPrompt(categoria, nome
|
|
104
|
-
const contentRoot =
|
|
76
|
+
export async function lerPrompt(categoria, nome) {
|
|
77
|
+
const contentRoot = getServerContentDir();
|
|
105
78
|
const path = join(contentRoot, "prompts", categoria, `${nome}.md`);
|
|
106
|
-
|
|
107
|
-
return await readFile(path, "utf-8");
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
if (contentRoot !== SERVER_CONTENT_ROOT) {
|
|
111
|
-
return lerPrompt(categoria, nome, undefined);
|
|
112
|
-
}
|
|
113
|
-
throw error;
|
|
114
|
-
}
|
|
79
|
+
return await readFile(path, "utf-8");
|
|
115
80
|
}
|
|
116
81
|
/**
|
|
117
|
-
* Lê conteúdo de um guia (
|
|
82
|
+
* Lê conteúdo de um guia (apenas servidor)
|
|
118
83
|
*/
|
|
119
|
-
export async function lerGuia(nome
|
|
120
|
-
const contentRoot =
|
|
84
|
+
export async function lerGuia(nome) {
|
|
85
|
+
const contentRoot = getServerContentDir();
|
|
121
86
|
const guiasDir = join(contentRoot, "guides");
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
throw new Error(`Guia não encontrado: ${nome}`);
|
|
127
|
-
}
|
|
128
|
-
const path = join(guiasDir, arquivo);
|
|
129
|
-
return readFile(path, "utf-8");
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
if (contentRoot !== SERVER_CONTENT_ROOT) {
|
|
133
|
-
return lerGuia(nome, undefined);
|
|
134
|
-
}
|
|
135
|
-
throw error;
|
|
87
|
+
const files = await readdir(guiasDir);
|
|
88
|
+
const arquivo = files.find(f => f.toLowerCase().includes(nome.toLowerCase()) && f.endsWith(".md"));
|
|
89
|
+
if (!arquivo) {
|
|
90
|
+
throw new Error(`Guia não encontrado: ${nome}`);
|
|
136
91
|
}
|
|
92
|
+
const path = join(guiasDir, arquivo);
|
|
93
|
+
return readFile(path, "utf-8");
|
|
137
94
|
}
|
|
138
95
|
/**
|
|
139
|
-
* Lista arquivos markdown em um diretório dentro de content
|
|
96
|
+
* Lista arquivos markdown em um diretório dentro de content (servidor)
|
|
140
97
|
*/
|
|
141
|
-
export async function listarArquivos(subdir
|
|
142
|
-
const contentRoot =
|
|
98
|
+
export async function listarArquivos(subdir) {
|
|
99
|
+
const contentRoot = getServerContentDir();
|
|
143
100
|
const dir = join(contentRoot, subdir);
|
|
144
101
|
try {
|
|
145
102
|
const entries = await readdir(dir);
|
|
146
103
|
return entries.filter(e => e.endsWith(".md"));
|
|
147
104
|
}
|
|
148
105
|
catch {
|
|
149
|
-
// Se falhar no local, tenta servidor
|
|
150
|
-
if (contentRoot !== SERVER_CONTENT_ROOT) {
|
|
151
|
-
return listarArquivos(subdir, undefined);
|
|
152
|
-
}
|
|
153
106
|
return [];
|
|
154
107
|
}
|
|
155
108
|
}
|
|
156
109
|
/**
|
|
157
110
|
* Lista especialistas disponíveis
|
|
158
111
|
*/
|
|
159
|
-
export async function listarEspecialistas(
|
|
160
|
-
const files = await listarArquivos("specialists"
|
|
112
|
+
export async function listarEspecialistas() {
|
|
113
|
+
const files = await listarArquivos("specialists");
|
|
161
114
|
return files.map(f => f.replace(/^Especialista em /i, "").replace(".md", ""));
|
|
162
115
|
}
|
|
163
116
|
/**
|
|
164
117
|
* Lista templates disponíveis
|
|
165
118
|
*/
|
|
166
|
-
export async function listarTemplates(
|
|
167
|
-
const files = await listarArquivos("templates"
|
|
119
|
+
export async function listarTemplates() {
|
|
120
|
+
const files = await listarArquivos("templates");
|
|
168
121
|
return files.map(f => f.replace(".md", ""));
|
|
169
122
|
}
|
|
170
123
|
/**
|
|
171
124
|
* Lista guias disponíveis
|
|
172
125
|
*/
|
|
173
|
-
export async function listarGuias(
|
|
174
|
-
const files = await listarArquivos("guides"
|
|
126
|
+
export async function listarGuias() {
|
|
127
|
+
const files = await listarArquivos("guides");
|
|
175
128
|
return files.map(f => f.replace(".md", ""));
|
|
176
129
|
}
|
|
177
130
|
/**
|
|
@@ -193,34 +146,25 @@ export function getServerContentRoot() {
|
|
|
193
146
|
return SERVER_CONTENT_ROOT;
|
|
194
147
|
}
|
|
195
148
|
/**
|
|
196
|
-
* Lê conteúdo de um exemplo de fluxo (
|
|
149
|
+
* Lê conteúdo de um exemplo de fluxo (apenas servidor)
|
|
197
150
|
*/
|
|
198
|
-
export async function lerExemplo(nome
|
|
199
|
-
const contentRoot =
|
|
151
|
+
export async function lerExemplo(nome) {
|
|
152
|
+
const contentRoot = getServerContentDir();
|
|
200
153
|
const examplesDir = join(contentRoot, "examples");
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
throw new Error(`Exemplo não encontrado: ${nome}`);
|
|
207
|
-
}
|
|
208
|
-
const path = join(examplesDir, arquivo);
|
|
209
|
-
return readFile(path, "utf-8");
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
// Se falhou no local, tenta no servidor
|
|
213
|
-
if (contentRoot !== SERVER_CONTENT_ROOT) {
|
|
214
|
-
return lerExemplo(nome, undefined);
|
|
215
|
-
}
|
|
216
|
-
throw error;
|
|
154
|
+
const files = await readdir(examplesDir);
|
|
155
|
+
// Busca arquivo que contém o nome do exemplo
|
|
156
|
+
const arquivo = files.find(f => f.toLowerCase().includes(nome.toLowerCase()) && f.endsWith(".md"));
|
|
157
|
+
if (!arquivo) {
|
|
158
|
+
throw new Error(`Exemplo não encontrado: ${nome}`);
|
|
217
159
|
}
|
|
160
|
+
const path = join(examplesDir, arquivo);
|
|
161
|
+
return readFile(path, "utf-8");
|
|
218
162
|
}
|
|
219
163
|
/**
|
|
220
164
|
* Lista exemplos disponíveis
|
|
221
165
|
*/
|
|
222
|
-
export async function listarExemplos(
|
|
223
|
-
const files = await listarArquivos("examples"
|
|
166
|
+
export async function listarExemplos() {
|
|
167
|
+
const files = await listarArquivos("examples");
|
|
224
168
|
return files.map(f => f.replace(".md", ""));
|
|
225
169
|
}
|
|
226
170
|
/**
|
|
@@ -249,13 +193,13 @@ export function resolveProjectPath(path) {
|
|
|
249
193
|
const normalized = normalizeProjectPath(path).trim();
|
|
250
194
|
// Debug logging
|
|
251
195
|
if (platform() !== 'win32') {
|
|
252
|
-
console.
|
|
253
|
-
console.
|
|
196
|
+
console.error(`[DEBUG] resolveProjectPath input: "${path}"`);
|
|
197
|
+
console.error(`[DEBUG] normalized: "${normalized}"`);
|
|
254
198
|
}
|
|
255
199
|
// Se o path é Windows (Drive Letter) mas estamos no Linux (Docker/WSL)
|
|
256
200
|
// Checks for "C:" at start OR "C:\" inside string (handling weird mounting)
|
|
257
201
|
if (platform() !== 'win32' && (normalized.match(/^[a-zA-Z]:/) || normalized.includes(':\\'))) {
|
|
258
|
-
console.
|
|
202
|
+
console.error(`[DEBUG] Windows path detected on Linux. Mapping to CWD: ${process.cwd()}`);
|
|
259
203
|
return process.cwd();
|
|
260
204
|
}
|
|
261
205
|
// Se parece um caminho Windows em ambiente Windows, força win32
|
package/dist/utils/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,mDAAmD;AACnD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAEzE,4DAA4D;AAC5D,IAAI,iBAAiB,GAAkB,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAkB;IAClD,iBAAiB,GAAG,GAAG,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAC/B,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAkB;IAC9C,MAAM,GAAG,GAAG,SAAS,IAAI,iBAAiB,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAS,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"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"}
|