@husar.ai/cli 0.3.0 → 0.3.3

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.
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { generateZeus } from '@husar.ai/ssr';
4
4
  export const generateCms = async (opts) => {
5
5
  const base = path.resolve(process.cwd(), opts.baseFolder || '.');
6
+ const authEnv = opts.authenticationEnvironmentVariable || 'HUSAR_API_KEY';
6
7
  const cmsPath = path.join(base, 'cms');
7
8
  try {
8
9
  await fs.access(cmsPath, constants.F_OK);
@@ -12,9 +13,11 @@ export const generateCms = async (opts) => {
12
13
  }
13
14
  const zeusPath = path.join(cmsPath, 'zeus');
14
15
  await fs.mkdir(zeusPath, { recursive: true });
16
+ const husar_token = process.env[authEnv];
15
17
  const zeusCode = await generateZeus(new URL('content/graphql', opts.host).toString(), {
16
18
  esModule: false,
17
19
  env: 'browser',
20
+ husar_token,
18
21
  });
19
22
  await fs.writeFile(path.join(zeusPath, 'index.ts'), zeusCode.index);
20
23
  await fs.writeFile(path.join(zeusPath, 'const.ts'), zeusCode.const);
@@ -25,7 +28,6 @@ export const generateCms = async (opts) => {
25
28
  else {
26
29
  hostFile += `export const HUSAR_HOST = \n process.env.HUSAR_HOST ||\n process.env.NEXT_PUBLIC_HUSAR_HOST ||\n process.env.VITE_HUSAR_HOST || '${opts.host}';\n`;
27
30
  }
28
- const authEnv = opts.authenticationEnvironmentVariable || 'HUSAR_API_KEY';
29
31
  hostFile += `\nexport const getCmsHost = () => {\n const husar_token = process.env.${authEnv};\n const host = HUSAR_HOST ? new URL('content/graphql', HUSAR_HOST).toString() : zeus.HOST;\n return [host, { ...(husar_token ? { headers: { husar_token } } : {}) }] as const;\n};\n`;
30
32
  await fs.writeFile(path.join(cmsPath, 'host.ts'), hostFile);
31
33
  await fs.writeFile(path.join(cmsPath, 'ssr.ts'), `import * as zeus from './zeus';
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/functions/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAS7C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAwB,EAAE,EAAE;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpF,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpE,IAAI,QAAQ,GAAG,mCAAmC,CAAC;IACnD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,QAAQ,IAAI,yCAAyC,IAAI,CAAC,uBAAuB,KAAK,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,QAAQ,IAAI,uIAAuI,IAAI,CAAC,IAAI,MAAM,CAAC;IACrK,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,iCAAiC,IAAI,eAAe,CAAC;IAC1E,QAAQ,IAAI,0EAA0E,OAAO,0LAA0L,CAAC;IACxR,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE5D,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC5B;;;;;CAKH,CACE,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAC9B;;;;;;CAMH,CACE,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/functions/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAS7C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAwB,EAAE,EAAE;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,iCAAiC,IAAI,eAAe,CAAC;IAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpF,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,SAAS;QACd,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpE,IAAI,QAAQ,GAAG,mCAAmC,CAAC;IACnD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,QAAQ,IAAI,yCAAyC,IAAI,CAAC,uBAAuB,KAAK,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,QAAQ,IAAI,uIAAuI,IAAI,CAAC,IAAI,MAAM,CAAC;IACrK,CAAC;IACD,QAAQ,IAAI,0EAA0E,OAAO,0LAA0L,CAAC;IACxR,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE5D,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC5B;;;;;CAKH,CACE,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAC9B;;;;;;CAMH,CACE,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
package/dist/mcp.js CHANGED
@@ -6,7 +6,121 @@ import { ConfigMaker } from 'config-maker';
6
6
  import { parser } from './functions/parser.js';
7
7
  import { generateCms } from './functions/generate.js';
8
8
  import path from 'path';
9
+ import { buildClientSchema, printSchema, buildSchema, isObjectType, getNamedType, isNonNullType, isListType, } from 'graphql';
10
+ import { getOrmToolSpecs } from '@husar.ai/genai';
9
11
  const server = new McpServer({ name: 'mcp-husar', version: '1.0.0' });
12
+ const INTROSPECTION_QUERY = `
13
+ query IntrospectionQuery {
14
+ __schema {
15
+ queryType { name }
16
+ mutationType { name }
17
+ subscriptionType { name }
18
+ types {
19
+ kind
20
+ name
21
+ description
22
+ fields(includeDeprecated: true) {
23
+ name
24
+ description
25
+ args { name description type { kind name ofType { kind name ofType { kind name } } } defaultValue }
26
+ type { kind name ofType { kind name ofType { kind name } } }
27
+ isDeprecated
28
+ deprecationReason
29
+ }
30
+ inputFields { name description type { kind name ofType { kind name ofType { kind name } } } defaultValue }
31
+ interfaces { kind name ofType { kind name ofType { kind name } } }
32
+ enumValues(includeDeprecated: true) { name description isDeprecated deprecationReason }
33
+ possibleTypes { kind name ofType { kind name ofType { kind name } } }
34
+ }
35
+ directives { name description locations args { name description type { kind name ofType { kind name ofType { kind name } } } defaultValue } }
36
+ }
37
+ }
38
+ `;
39
+ function tokenize(s) {
40
+ return (s || '')
41
+ .toLowerCase()
42
+ .replace(/[^a-z0-9_]+/g, ' ')
43
+ .split(' ')
44
+ .filter(Boolean);
45
+ }
46
+ function scoreField(taskTokens, fieldName, returnTypeName, argNames) {
47
+ const nameTokens = tokenize(fieldName).concat(tokenize(returnTypeName)).concat(argNames.flatMap(tokenize));
48
+ let score = 0;
49
+ for (const t of taskTokens)
50
+ if (nameTokens.includes(t))
51
+ score += 2;
52
+ for (const t of taskTokens)
53
+ if (fieldName.includes(t))
54
+ score += 1;
55
+ return score;
56
+ }
57
+ function pickFieldsForSelection(type) {
58
+ const fields = Object.values(type.getFields());
59
+ const preferred = ['id', '_id', 'slug', 'name', 'title', 'key', 'display', 'createdAt', 'updatedAt'];
60
+ const names = fields.map((f) => f.name);
61
+ const out = [];
62
+ for (const p of preferred)
63
+ if (names.includes(p))
64
+ out.push(p);
65
+ for (const n of names)
66
+ if (out.length < 6 && !out.includes(n))
67
+ out.push(n);
68
+ return out.slice(0, 6);
69
+ }
70
+ function variablesTemplateFromArgs(args) {
71
+ const tmpl = {};
72
+ for (const a of args)
73
+ tmpl[a.name] = null;
74
+ return tmpl;
75
+ }
76
+ function unwrapNamed(type) {
77
+ let t = type;
78
+ let list = false;
79
+ while (isNonNullType(t) || isListType(t)) {
80
+ if (isListType(t))
81
+ list = true;
82
+ t = t.ofType;
83
+ }
84
+ return { named: t, list };
85
+ }
86
+ function suggestQueryFromSDL({ sdl, task, rootType = 'Query' }) {
87
+ const schema = buildSchema(sdl);
88
+ const root = schema.getType(rootType);
89
+ if (!root || !isObjectType(root))
90
+ throw new Error(`Root type ${rootType} not found or not an object`);
91
+ const fields = Object.values(root.getFields());
92
+ const taskTokens = tokenize(task);
93
+ let best = fields[0];
94
+ let bestScore = -Infinity;
95
+ for (const f of fields) {
96
+ const { named } = unwrapNamed(f.type);
97
+ const retName = named.name || '';
98
+ const s = scoreField(taskTokens, f.name, retName, f.args.map((a) => a.name));
99
+ if (s > bestScore) {
100
+ best = f;
101
+ bestScore = s;
102
+ }
103
+ }
104
+ const argsDecl = best.args.map((a) => `$${a.name}: ${a.type.toString()}`).join(', ');
105
+ const argsUse = best.args.map((a) => `${a.name}: $${a.name}`).join(', ');
106
+ const { named, list } = unwrapNamed(best.type);
107
+ let selection = '__typename';
108
+ if (isObjectType(named)) {
109
+ const sel = pickFieldsForSelection(named);
110
+ selection = sel.join('\n ');
111
+ }
112
+ const opName = 'GeneratedQuery';
113
+ const query = `query ${opName}${argsDecl ? `(${argsDecl})` : ''} {
114
+ ${best.name}${argsUse ? `(${argsUse})` : ''} {
115
+ ${list ? `nodes { ${selection} }` : selection}
116
+ }
117
+ }`;
118
+ const variables = variablesTemplateFromArgs(best.args);
119
+ const candidates = fields
120
+ .map((f) => ({ name: f.name, type: getNamedType(f.type)?.name || String(f.type) }))
121
+ .slice(0, 20);
122
+ return { query, variables, pickedField: best.name, rootType, candidates };
123
+ }
10
124
  const getConfig = async (pathToProject) => {
11
125
  return new ConfigMaker('husar', {
12
126
  decoders: {},
@@ -75,7 +189,7 @@ const redirectConsoleToStderr = () => {
75
189
  console.dir = original.dir;
76
190
  };
77
191
  };
78
- const createCmsParseFileHandler = ({ timeoutMs = 30_000 }) => {
192
+ const createCmsParseFileHandler = ({ timeoutMs = 300_000 }) => {
79
193
  return async ({ path: file, type, name: passed, workspaceRoot }) => {
80
194
  const restoreConsole = redirectConsoleToStderr();
81
195
  try {
@@ -151,6 +265,375 @@ export const startMcpServer = async () => {
151
265
  return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
152
266
  }
153
267
  }));
268
+ const husarGraphQLQueryInput = {
269
+ query: z.string().min(1).describe('GraphQL query string.'),
270
+ variables: z
271
+ .union([z.string(), z.record(z.any())])
272
+ .optional()
273
+ .describe('Optional variables as JSON string or object.'),
274
+ endpointPath: z
275
+ .string()
276
+ .optional()
277
+ .default('api/graphql')
278
+ .describe('Endpoint path relative to host, defaults to api/graphql'),
279
+ workspaceRoot: z.string().optional().describe('Location of husar.json if not in current working directory.'),
280
+ };
281
+ const husarGraphQLQuerySchema = z.object(husarGraphQLQueryInput);
282
+ server.tool('husar_graphql_query', 'Run a read-only GraphQL query against the configured Husar host', husarGraphQLQueryInput, (async (args) => {
283
+ try {
284
+ const { query, variables, endpointPath, workspaceRoot } = husarGraphQLQuerySchema.parse(args ?? {});
285
+ const cfg = await getConfig(workspaceRoot);
286
+ const raw = cfg.get();
287
+ const host = raw.host;
288
+ const token = raw.adminToken;
289
+ if (!host)
290
+ throw new Error('Missing host in husar.json');
291
+ if (!token)
292
+ throw new Error('Missing adminToken in husar.json');
293
+ const url = new URL(endpointPath || 'api/graphql', host).toString();
294
+ const vars = typeof variables === 'string' && variables.trim().length ? JSON.parse(variables) : (variables ?? {});
295
+ const res = await fetch(url, {
296
+ method: 'POST',
297
+ headers: { 'Content-Type': 'application/json', husar_token: token },
298
+ body: JSON.stringify({ query, variables: vars }),
299
+ });
300
+ const json = await res.json();
301
+ return { content: [{ type: 'text', text: JSON.stringify(json, null, 2) }] };
302
+ }
303
+ catch (err) {
304
+ const message = err instanceof Error ? err.message : String(err);
305
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
306
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
307
+ }
308
+ }));
309
+ const husarGraphQLSchemaInput = {
310
+ endpointPath: z
311
+ .string()
312
+ .optional()
313
+ .default('api/graphql')
314
+ .describe('Endpoint path relative to host, defaults to api/graphql'),
315
+ workspaceRoot: z.string().optional().describe('Location of husar.json if not in current working directory.'),
316
+ };
317
+ const husarGraphQLSchemaSchema = z.object(husarGraphQLSchemaInput);
318
+ server.tool('husar_graphql_schema', 'Fetch GraphQL schema (introspection) from Admin API', husarGraphQLSchemaInput, (async (args) => {
319
+ try {
320
+ const { endpointPath, workspaceRoot } = husarGraphQLSchemaSchema.parse(args ?? {});
321
+ const cfg = await getConfig(workspaceRoot);
322
+ const raw = cfg.get();
323
+ const host = raw.host;
324
+ const token = raw.adminToken;
325
+ if (!host)
326
+ throw new Error('Missing host in husar.json');
327
+ if (!token)
328
+ throw new Error('Missing adminToken in husar.json');
329
+ const url = new URL(endpointPath || 'api/graphql', host).toString();
330
+ const res = await fetch(url, {
331
+ method: 'POST',
332
+ headers: { 'Content-Type': 'application/json', husar_token: token },
333
+ body: JSON.stringify({ query: INTROSPECTION_QUERY }),
334
+ });
335
+ const json = await res.json();
336
+ return { content: [{ type: 'text', text: JSON.stringify(json, null, 2) }] };
337
+ }
338
+ catch (err) {
339
+ const message = err instanceof Error ? err.message : String(err);
340
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
341
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
342
+ }
343
+ }));
344
+ server.tool('husar_graphql_schema_sdl', 'Fetch Admin GraphQL schema and return SDL', husarGraphQLSchemaInput, (async (args) => {
345
+ try {
346
+ const { endpointPath, workspaceRoot } = husarGraphQLSchemaSchema.parse(args ?? {});
347
+ const cfg = await getConfig(workspaceRoot);
348
+ const raw = cfg.get();
349
+ const host = raw.host;
350
+ const token = raw.adminToken;
351
+ if (!host)
352
+ throw new Error('Missing host in husar.json');
353
+ if (!token)
354
+ throw new Error('Missing adminToken in husar.json');
355
+ const url = new URL(endpointPath || 'api/graphql', host).toString();
356
+ const res = await fetch(url, {
357
+ method: 'POST',
358
+ headers: { 'Content-Type': 'application/json', husar_token: token },
359
+ body: JSON.stringify({ query: INTROSPECTION_QUERY }),
360
+ });
361
+ const json = await res.json();
362
+ if (!json?.data)
363
+ throw new Error('No data from introspection');
364
+ const schema = buildClientSchema(json.data);
365
+ const sdl = printSchema(schema);
366
+ return { content: [{ type: 'text', text: sdl }] };
367
+ }
368
+ catch (err) {
369
+ const message = err instanceof Error ? err.message : String(err);
370
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
371
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
372
+ }
373
+ }));
374
+ const husarContentGraphQLQueryInput = {
375
+ query: z.string().min(1).describe('GraphQL query string.'),
376
+ variables: z
377
+ .union([z.string(), z.record(z.any())])
378
+ .optional()
379
+ .describe('Optional variables as JSON string or object.'),
380
+ endpointPath: z
381
+ .string()
382
+ .optional()
383
+ .default('content/graphql')
384
+ .describe('Endpoint path relative to host, defaults to content/graphql'),
385
+ apiKey: z.string().optional().describe('Content API key. If omitted, apiKeyEnv is used.'),
386
+ apiKeyEnv: z.string().optional().describe('Environment variable name containing the Content API key.'),
387
+ workspaceRoot: z.string().optional().describe('Location of husar.json if not in current working directory.'),
388
+ };
389
+ const husarContentGraphQLQuerySchema = z.object(husarContentGraphQLQueryInput);
390
+ server.tool('husar_content_graphql_query', 'Run a read-only GraphQL query against the Content API (api-key required)', husarContentGraphQLQueryInput, (async (args) => {
391
+ try {
392
+ const { query, variables, endpointPath, apiKey, apiKeyEnv, workspaceRoot } = husarContentGraphQLQuerySchema.parse(args ?? {});
393
+ const cfg = await getConfig(workspaceRoot);
394
+ const raw = cfg.get();
395
+ const host = raw.host;
396
+ if (!host)
397
+ throw new Error('Missing host in husar.json');
398
+ const keyFromEnv = apiKeyEnv ? process.env[apiKeyEnv] : undefined;
399
+ const keyFromConfig = raw.contentApiKey;
400
+ const usedKey = apiKey || keyFromEnv || keyFromConfig;
401
+ if (!usedKey)
402
+ throw new Error('Missing apiKey. Provide apiKey, apiKeyEnv, or set contentApiKey in husar.json');
403
+ const url = new URL(endpointPath || 'content/graphql', host).toString();
404
+ const vars = typeof variables === 'string' && variables.trim().length ? JSON.parse(variables) : (variables ?? {});
405
+ const res = await fetch(url, {
406
+ method: 'POST',
407
+ headers: { 'Content-Type': 'application/json', 'api-key': usedKey },
408
+ body: JSON.stringify({ query, variables: vars }),
409
+ });
410
+ const json = await res.json();
411
+ return { content: [{ type: 'text', text: JSON.stringify(json, null, 2) }] };
412
+ }
413
+ catch (err) {
414
+ const message = err instanceof Error ? err.message : String(err);
415
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
416
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
417
+ }
418
+ }));
419
+ const husarContentGraphQLSchemaInput = {
420
+ endpointPath: z
421
+ .string()
422
+ .optional()
423
+ .default('content/graphql')
424
+ .describe('Endpoint path relative to host, defaults to content/graphql'),
425
+ apiKey: z.string().optional().describe('Content API key. If omitted, apiKeyEnv is used.'),
426
+ apiKeyEnv: z.string().optional().describe('Environment variable name containing the Content API key.'),
427
+ workspaceRoot: z.string().optional().describe('Location of husar.json if not in current working directory.'),
428
+ };
429
+ const husarContentGraphQLSchemaSchema = z.object(husarContentGraphQLSchemaInput);
430
+ server.tool('husar_content_graphql_schema', 'Fetch GraphQL schema (introspection) from Content API', husarContentGraphQLSchemaInput, (async (args) => {
431
+ try {
432
+ const { endpointPath, apiKey, apiKeyEnv, workspaceRoot } = husarContentGraphQLSchemaSchema.parse(args ?? {});
433
+ const cfg = await getConfig(workspaceRoot);
434
+ const raw = cfg.get();
435
+ const host = raw.host;
436
+ if (!host)
437
+ throw new Error('Missing host in husar.json');
438
+ const keyFromEnv = apiKeyEnv ? process.env[apiKeyEnv] : undefined;
439
+ const keyFromConfig = raw.contentApiKey;
440
+ const usedKey = apiKey || keyFromEnv || keyFromConfig;
441
+ if (!usedKey)
442
+ throw new Error('Missing apiKey. Provide apiKey, apiKeyEnv, or set contentApiKey in husar.json');
443
+ const url = new URL(endpointPath || 'content/graphql', host).toString();
444
+ const res = await fetch(url, {
445
+ method: 'POST',
446
+ headers: { 'Content-Type': 'application/json', 'api-key': usedKey },
447
+ body: JSON.stringify({ query: INTROSPECTION_QUERY }),
448
+ });
449
+ const json = await res.json();
450
+ return { content: [{ type: 'text', text: JSON.stringify(json, null, 2) }] };
451
+ }
452
+ catch (err) {
453
+ const message = err instanceof Error ? err.message : String(err);
454
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
455
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
456
+ }
457
+ }));
458
+ server.tool('husar_content_graphql_schema_sdl', 'Fetch Content GraphQL schema and return SDL', husarContentGraphQLSchemaInput, (async (args) => {
459
+ try {
460
+ const { endpointPath, apiKey, apiKeyEnv, workspaceRoot } = husarContentGraphQLSchemaSchema.parse(args ?? {});
461
+ const cfg = await getConfig(workspaceRoot);
462
+ const raw = cfg.get();
463
+ const host = raw.host;
464
+ if (!host)
465
+ throw new Error('Missing host in husar.json');
466
+ const keyFromEnv = apiKeyEnv ? process.env[apiKeyEnv] : undefined;
467
+ const keyFromConfig = raw.contentApiKey;
468
+ const usedKey = apiKey || keyFromEnv || keyFromConfig;
469
+ if (!usedKey)
470
+ throw new Error('Missing apiKey. Provide apiKey, apiKeyEnv, or set contentApiKey in husar.json');
471
+ const url = new URL(endpointPath || 'content/graphql', host).toString();
472
+ const res = await fetch(url, {
473
+ method: 'POST',
474
+ headers: { 'Content-Type': 'application/json', 'api-key': usedKey },
475
+ body: JSON.stringify({ query: INTROSPECTION_QUERY }),
476
+ });
477
+ const json = await res.json();
478
+ if (!json?.data)
479
+ throw new Error('No data from introspection');
480
+ const schema = buildClientSchema(json.data);
481
+ const sdl = printSchema(schema);
482
+ return { content: [{ type: 'text', text: sdl }] };
483
+ }
484
+ catch (err) {
485
+ const message = err instanceof Error ? err.message : String(err);
486
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
487
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
488
+ }
489
+ }));
490
+ const husarSuggestInput = {
491
+ sdl: z.string().min(1).describe('GraphQL schema SDL'),
492
+ task: z.string().min(1).describe('Task description, e.g., "list posts by tag"'),
493
+ rootType: z.string().optional().default('Query'),
494
+ };
495
+ const husarSuggestSchema = z.object(husarSuggestInput);
496
+ server.tool('husar_graphql_suggest_query', 'Suggest a GraphQL query and variables template from SDL + task', husarSuggestInput, (async (args) => {
497
+ try {
498
+ const { sdl, task, rootType } = husarSuggestSchema.parse(args ?? {});
499
+ const suggestion = suggestQueryFromSDL({ sdl, task, rootType });
500
+ return { content: [{ type: 'text', text: JSON.stringify(suggestion, null, 2) }] };
501
+ }
502
+ catch (err) {
503
+ const message = err instanceof Error ? err.message : String(err);
504
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
505
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
506
+ }
507
+ }));
508
+ const husarRunSuggestionInput = {
509
+ sdl: z.string().min(1).describe('GraphQL schema SDL'),
510
+ task: z.string().min(1).describe('Task to execute'),
511
+ variables: z
512
+ .union([z.string(), z.record(z.any())])
513
+ .optional()
514
+ .describe('Override variables (JSON)'),
515
+ endpointPath: z.string().optional().default('api/graphql'),
516
+ workspaceRoot: z.string().optional(),
517
+ };
518
+ const husarRunSuggestionSchema = z.object(husarRunSuggestionInput);
519
+ server.tool('husar_graphql_run_suggestion', 'Generate a query from SDL + task and run it on Admin API', husarRunSuggestionInput, (async (args) => {
520
+ try {
521
+ const { sdl, task, variables, endpointPath, workspaceRoot } = husarRunSuggestionSchema.parse(args ?? {});
522
+ const cfg = await getConfig(workspaceRoot);
523
+ const raw = cfg.get();
524
+ const host = raw.host;
525
+ const token = raw.adminToken;
526
+ if (!host)
527
+ throw new Error('Missing host in husar.json');
528
+ if (!token)
529
+ throw new Error('Missing adminToken in husar.json');
530
+ const { query, variables: tmpl } = suggestQueryFromSDL({ sdl, task, rootType: 'Query' });
531
+ const overrides = typeof variables === 'string' && variables.trim().length ? JSON.parse(variables) : (variables ?? {});
532
+ const merged = { ...tmpl, ...overrides };
533
+ const url = new URL(endpointPath || 'api/graphql', host).toString();
534
+ const res = await fetch(url, {
535
+ method: 'POST',
536
+ headers: { 'Content-Type': 'application/json', husar_token: token },
537
+ body: JSON.stringify({ query, variables: merged }),
538
+ });
539
+ const json = await res.json();
540
+ return {
541
+ content: [{ type: 'text', text: JSON.stringify({ query, variables: merged, result: json }, null, 2) }],
542
+ };
543
+ }
544
+ catch (err) {
545
+ const message = err instanceof Error ? err.message : String(err);
546
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
547
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
548
+ }
549
+ }));
550
+ const husarContentRunSuggestionInput = {
551
+ sdl: z.string().min(1).describe('GraphQL schema SDL'),
552
+ task: z.string().min(1).describe('Task to execute'),
553
+ variables: z
554
+ .union([z.string(), z.record(z.any())])
555
+ .optional()
556
+ .describe('Override variables (JSON)'),
557
+ endpointPath: z.string().optional().default('content/graphql'),
558
+ apiKey: z.string().optional().describe('Content API key'),
559
+ apiKeyEnv: z.string().optional().describe('Env var name containing Content API key'),
560
+ workspaceRoot: z.string().optional(),
561
+ };
562
+ const husarContentRunSuggestionSchema = z.object(husarContentRunSuggestionInput);
563
+ server.tool('husar_content_graphql_run_suggestion', 'Generate a query from SDL + task and run it on Content API', husarContentRunSuggestionInput, (async (args) => {
564
+ try {
565
+ const { sdl, task, variables, endpointPath, apiKey, apiKeyEnv, workspaceRoot } = husarContentRunSuggestionSchema.parse(args ?? {});
566
+ const cfg = await getConfig(workspaceRoot);
567
+ const raw = cfg.get();
568
+ const host = raw.host;
569
+ if (!host)
570
+ throw new Error('Missing host in husar.json');
571
+ const keyFromEnv = apiKeyEnv ? process.env[apiKeyEnv] : undefined;
572
+ const keyFromConfig = raw.contentApiKey;
573
+ const usedKey = apiKey || keyFromEnv || keyFromConfig;
574
+ if (!usedKey)
575
+ throw new Error('Missing apiKey. Provide apiKey/apiKeyEnv or set contentApiKey in husar.json');
576
+ const { query, variables: tmpl } = suggestQueryFromSDL({ sdl, task, rootType: 'Query' });
577
+ const overrides = typeof variables === 'string' && variables.trim().length ? JSON.parse(variables) : (variables ?? {});
578
+ const merged = { ...tmpl, ...overrides };
579
+ const url = new URL(endpointPath || 'content/graphql', host).toString();
580
+ const res = await fetch(url, {
581
+ method: 'POST',
582
+ headers: { 'Content-Type': 'application/json', 'api-key': usedKey },
583
+ body: JSON.stringify({ query, variables: merged }),
584
+ });
585
+ const json = await res.json();
586
+ return {
587
+ content: [{ type: 'text', text: JSON.stringify({ query, variables: merged, result: json }, null, 2) }],
588
+ };
589
+ }
590
+ catch (err) {
591
+ const message = err instanceof Error ? err.message : String(err);
592
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
593
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
594
+ }
595
+ }));
596
+ try {
597
+ const ormSpecs = getOrmToolSpecs();
598
+ const runAgentToolMutation = `mutation RunAgentTool($input: AgentToolRunInput!) {\n admin {\n runAgentTool(input: $input) { ok error executed result }\n }\n}`;
599
+ for (const spec of ormSpecs) {
600
+ server.tool(spec.name, spec.description, spec.parameters, (async (args) => {
601
+ try {
602
+ const cfg = await getConfig(undefined);
603
+ const raw = cfg.get();
604
+ const host = raw.host;
605
+ const token = raw.adminToken;
606
+ if (!host)
607
+ throw new Error('Missing host in husar.json');
608
+ if (!token)
609
+ throw new Error('Missing adminToken in husar.json');
610
+ const url = new URL('api/graphql', host).toString();
611
+ const input = { name: spec.name, args };
612
+ const res = await fetch(url, {
613
+ method: 'POST',
614
+ headers: { 'Content-Type': 'application/json', husar_token: token },
615
+ body: JSON.stringify({ query: runAgentToolMutation, variables: { input } }),
616
+ });
617
+ const json = await res.json();
618
+ const payload = json?.data?.admin?.runAgentTool ?? json;
619
+ return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
620
+ }
621
+ catch (err) {
622
+ const message = err instanceof Error ? err.message : String(err);
623
+ const stack = err instanceof Error && err.stack ? `\nStack: ${err.stack}` : '';
624
+ return { isError: true, content: [{ type: 'text', text: `Error: ${message}${stack}` }] };
625
+ }
626
+ }));
627
+ }
628
+ }
629
+ catch (e) {
630
+ const msg = e instanceof Error ? e.message : String(e);
631
+ try {
632
+ process.stderr.write(`[mcp] Failed to register ORM tools: ${msg}\n`);
633
+ }
634
+ catch {
635
+ }
636
+ }
154
637
  const transport = new StdioServerTransport();
155
638
  server.connect(transport);
156
639
  try {
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}