frontmcp 1.0.4 → 1.1.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 (100) hide show
  1. package/package.json +10 -4
  2. package/src/commands/build/adapters/cloudflare.d.ts +1 -1
  3. package/src/commands/build/adapters/cloudflare.js +1 -0
  4. package/src/commands/build/adapters/cloudflare.js.map +1 -1
  5. package/src/commands/build/adapters/distributed.d.ts +15 -0
  6. package/src/commands/build/adapters/distributed.js +30 -0
  7. package/src/commands/build/adapters/distributed.js.map +1 -0
  8. package/src/commands/build/adapters/index.d.ts +3 -2
  9. package/src/commands/build/adapters/index.js +4 -1
  10. package/src/commands/build/adapters/index.js.map +1 -1
  11. package/src/commands/build/adapters/lambda.d.ts +1 -1
  12. package/src/commands/build/adapters/lambda.js +1 -0
  13. package/src/commands/build/adapters/lambda.js.map +1 -1
  14. package/src/commands/build/adapters/vercel.d.ts +1 -1
  15. package/src/commands/build/adapters/vercel.js +1 -0
  16. package/src/commands/build/adapters/vercel.js.map +1 -1
  17. package/src/commands/build/exec/cli-runtime/generate-cli-entry.js +122 -34
  18. package/src/commands/build/exec/cli-runtime/generate-cli-entry.js.map +1 -1
  19. package/src/commands/build/exec/config.d.ts +2 -2
  20. package/src/commands/build/exec/config.js.map +1 -1
  21. package/src/commands/build/exec/esbuild-bundler.d.ts +1 -1
  22. package/src/commands/build/exec/esbuild-bundler.js +1 -1
  23. package/src/commands/build/exec/esbuild-bundler.js.map +1 -1
  24. package/src/commands/build/exec/index.d.ts +1 -1
  25. package/src/commands/build/exec/index.js +5 -38
  26. package/src/commands/build/exec/index.js.map +1 -1
  27. package/src/commands/build/exec/skill-assets.d.ts +27 -0
  28. package/src/commands/build/exec/skill-assets.js +60 -0
  29. package/src/commands/build/exec/skill-assets.js.map +1 -0
  30. package/src/commands/build/index.d.ts +1 -1
  31. package/src/commands/build/index.js +44 -5
  32. package/src/commands/build/index.js.map +1 -1
  33. package/src/commands/build/mcpb/binary.d.ts +37 -0
  34. package/src/commands/build/mcpb/binary.js +72 -0
  35. package/src/commands/build/mcpb/binary.js.map +1 -0
  36. package/src/commands/build/mcpb/constants.d.ts +21 -0
  37. package/src/commands/build/mcpb/constants.js +31 -0
  38. package/src/commands/build/mcpb/constants.js.map +1 -0
  39. package/src/commands/build/mcpb/index.d.ts +20 -0
  40. package/src/commands/build/mcpb/index.js +241 -0
  41. package/src/commands/build/mcpb/index.js.map +1 -0
  42. package/src/commands/build/mcpb/manifest.d.ts +183 -0
  43. package/src/commands/build/mcpb/manifest.js +252 -0
  44. package/src/commands/build/mcpb/manifest.js.map +1 -0
  45. package/src/commands/build/mcpb/stage.d.ts +50 -0
  46. package/src/commands/build/mcpb/stage.js +94 -0
  47. package/src/commands/build/mcpb/stage.js.map +1 -0
  48. package/src/commands/build/mcpb/user-config.d.ts +26 -0
  49. package/src/commands/build/mcpb/user-config.js +147 -0
  50. package/src/commands/build/mcpb/user-config.js.map +1 -0
  51. package/src/commands/build/mcpb/validate.d.ts +27 -0
  52. package/src/commands/build/mcpb/validate.js +218 -0
  53. package/src/commands/build/mcpb/validate.js.map +1 -0
  54. package/src/commands/build/mcpb/zip.d.ts +37 -0
  55. package/src/commands/build/mcpb/zip.js +85 -0
  56. package/src/commands/build/mcpb/zip.js.map +1 -0
  57. package/src/commands/build/register.d.ts +1 -1
  58. package/src/commands/build/register.js +7 -1
  59. package/src/commands/build/register.js.map +1 -1
  60. package/src/commands/build/sdk/index.d.ts +1 -1
  61. package/src/commands/build/sdk/index.js +1 -1
  62. package/src/commands/build/sdk/index.js.map +1 -1
  63. package/src/commands/build/types.d.ts +1 -1
  64. package/src/commands/build/types.js.map +1 -1
  65. package/src/commands/mcpb/register.d.ts +2 -0
  66. package/src/commands/mcpb/register.js +14 -0
  67. package/src/commands/mcpb/register.js.map +1 -0
  68. package/src/commands/mcpb/validate.d.ts +1 -0
  69. package/src/commands/mcpb/validate.js +28 -0
  70. package/src/commands/mcpb/validate.js.map +1 -0
  71. package/src/commands/scaffold/create.js +5 -7
  72. package/src/commands/scaffold/create.js.map +1 -1
  73. package/src/config/define-config.d.ts +26 -0
  74. package/src/config/define-config.js +31 -0
  75. package/src/config/define-config.js.map +1 -0
  76. package/src/config/frontmcp-config.loader.d.ts +32 -0
  77. package/src/config/frontmcp-config.loader.js +113 -0
  78. package/src/config/frontmcp-config.loader.js.map +1 -0
  79. package/src/config/frontmcp-config.schema.d.ts +1062 -0
  80. package/src/config/frontmcp-config.schema.js +313 -0
  81. package/src/config/frontmcp-config.schema.js.map +1 -0
  82. package/src/config/frontmcp-config.types.d.ts +287 -0
  83. package/src/config/frontmcp-config.types.js +14 -0
  84. package/src/config/frontmcp-config.types.js.map +1 -0
  85. package/src/config/index.d.ts +5 -0
  86. package/src/config/index.js +13 -0
  87. package/src/config/index.js.map +1 -0
  88. package/src/core/args.d.ts +7 -2
  89. package/src/core/args.js +12 -2
  90. package/src/core/args.js.map +1 -1
  91. package/src/core/bridge.d.ts +1 -1
  92. package/src/core/bridge.js +10 -0
  93. package/src/core/bridge.js.map +1 -1
  94. package/src/core/cli.js +3 -1
  95. package/src/core/cli.js.map +1 -1
  96. package/src/core/program.js +15 -13
  97. package/src/core/program.js.map +1 -1
  98. package/src/index.d.ts +2 -0
  99. package/src/index.js +7 -0
  100. package/src/index.js.map +1 -1
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * FrontMCP Config Loader
4
+ *
5
+ * Loads `frontmcp.config.(json|js|ts|mjs|cjs)` from a directory.
6
+ * Falls back to deriving minimal config from package.json.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.loadFrontMcpConfig = loadFrontMcpConfig;
10
+ exports.validateConfig = validateConfig;
11
+ exports.findDeployment = findDeployment;
12
+ exports.getDeploymentTargets = getDeploymentTargets;
13
+ const tslib_1 = require("tslib");
14
+ const fs = tslib_1.__importStar(require("fs"));
15
+ const path = tslib_1.__importStar(require("path"));
16
+ const frontmcp_config_schema_1 = require("./frontmcp-config.schema");
17
+ const CONFIG_FILENAMES = [
18
+ 'frontmcp.config.ts',
19
+ 'frontmcp.config.js',
20
+ 'frontmcp.config.json',
21
+ 'frontmcp.config.mjs',
22
+ 'frontmcp.config.cjs',
23
+ ];
24
+ /**
25
+ * Load and validate a frontmcp.config file from the given directory.
26
+ *
27
+ * Resolution order:
28
+ * 1. frontmcp.config.ts
29
+ * 2. frontmcp.config.js
30
+ * 3. frontmcp.config.json
31
+ * 4. frontmcp.config.mjs
32
+ * 5. frontmcp.config.cjs
33
+ * 6. Derive from package.json (minimal config with 'node' target)
34
+ */
35
+ async function loadFrontMcpConfig(cwd) {
36
+ const raw = await loadRawConfig(cwd);
37
+ return validateConfig(raw);
38
+ }
39
+ /**
40
+ * Load raw config without validation.
41
+ */
42
+ async function loadRawConfig(cwd) {
43
+ for (const filename of CONFIG_FILENAMES) {
44
+ const configPath = path.join(cwd, filename);
45
+ if (!fs.existsSync(configPath))
46
+ continue;
47
+ if (filename.endsWith('.json')) {
48
+ const content = fs.readFileSync(configPath, 'utf-8');
49
+ return JSON.parse(content);
50
+ }
51
+ if (filename.endsWith('.ts')) {
52
+ // TypeScript config — try tsx or ts-node for runtime loading
53
+ try {
54
+ const mod = require(configPath);
55
+ return mod.default ?? mod;
56
+ }
57
+ catch {
58
+ // If require fails (no ts-node), try dynamic import
59
+ const mod = await import(configPath);
60
+ return mod.default ?? mod;
61
+ }
62
+ }
63
+ // JS/MJS/CJS
64
+ if (filename.endsWith('.mjs')) {
65
+ const mod = await import(configPath);
66
+ return mod.default ?? mod;
67
+ }
68
+ const mod = require(configPath);
69
+ return mod.default ?? mod;
70
+ }
71
+ // Fallback: derive from package.json
72
+ return deriveFromPackageJson(cwd);
73
+ }
74
+ /**
75
+ * Derive minimal config from package.json.
76
+ */
77
+ function deriveFromPackageJson(cwd) {
78
+ const pkgPath = path.join(cwd, 'package.json');
79
+ if (!fs.existsSync(pkgPath)) {
80
+ throw new Error('No frontmcp.config found and no package.json. Create a frontmcp.config.ts to configure build targets.');
81
+ }
82
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
83
+ return {
84
+ name: pkg.name?.replace(/^@[^/]+\//, '') || path.basename(cwd),
85
+ version: pkg.version || '1.0.0',
86
+ entry: pkg.main,
87
+ deployments: [{ target: 'node' }],
88
+ };
89
+ }
90
+ /**
91
+ * Validate raw config against the Zod schema.
92
+ */
93
+ function validateConfig(raw) {
94
+ const result = frontmcp_config_schema_1.frontmcpConfigSchema.safeParse(raw);
95
+ if (!result.success) {
96
+ const issues = result.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\n');
97
+ throw new Error(`Invalid frontmcp.config:\n${issues}`);
98
+ }
99
+ return result.data;
100
+ }
101
+ /**
102
+ * Find a deployment target by type.
103
+ */
104
+ function findDeployment(config, target) {
105
+ return config.deployments.find((d) => d.target === target);
106
+ }
107
+ /**
108
+ * Get all deployment target types from the config.
109
+ */
110
+ function getDeploymentTargets(config) {
111
+ return config.deployments.map((d) => d.target);
112
+ }
113
+ //# sourceMappingURL=frontmcp-config.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmcp-config.loader.js","sourceRoot":"","sources":["../../../src/config/frontmcp-config.loader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * FrontMCP Config Loader\n *\n * Loads `frontmcp.config.(json|js|ts|mjs|cjs)` from a directory.\n * Falls back to deriving minimal config from package.json.\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nimport { frontmcpConfigSchema, type FrontMcpConfigParsed } from './frontmcp-config.schema';\nimport type { DeploymentTarget, FrontMcpConfig } from './frontmcp-config.types';\n\nconst CONFIG_FILENAMES = [\n 'frontmcp.config.ts',\n 'frontmcp.config.js',\n 'frontmcp.config.json',\n 'frontmcp.config.mjs',\n 'frontmcp.config.cjs',\n];\n\n/**\n * Load and validate a frontmcp.config file from the given directory.\n *\n * Resolution order:\n * 1. frontmcp.config.ts\n * 2. frontmcp.config.js\n * 3. frontmcp.config.json\n * 4. frontmcp.config.mjs\n * 5. frontmcp.config.cjs\n * 6. Derive from package.json (minimal config with 'node' target)\n */\nexport async function loadFrontMcpConfig(cwd: string): Promise<FrontMcpConfigParsed> {\n const raw = await loadRawConfig(cwd);\n return validateConfig(raw);\n}\n\n/**\n * Load raw config without validation.\n */\nasync function loadRawConfig(cwd: string): Promise<unknown> {\n for (const filename of CONFIG_FILENAMES) {\n const configPath = path.join(cwd, filename);\n if (!fs.existsSync(configPath)) continue;\n\n if (filename.endsWith('.json')) {\n const content = fs.readFileSync(configPath, 'utf-8');\n return JSON.parse(content);\n }\n\n if (filename.endsWith('.ts')) {\n // TypeScript config — try tsx or ts-node for runtime loading\n try {\n const mod = require(configPath);\n return mod.default ?? mod;\n } catch {\n // If require fails (no ts-node), try dynamic import\n const mod = await import(configPath);\n return mod.default ?? mod;\n }\n }\n\n // JS/MJS/CJS\n if (filename.endsWith('.mjs')) {\n const mod = await import(configPath);\n return mod.default ?? mod;\n }\n\n const mod = require(configPath);\n return mod.default ?? mod;\n }\n\n // Fallback: derive from package.json\n return deriveFromPackageJson(cwd);\n}\n\n/**\n * Derive minimal config from package.json.\n */\nfunction deriveFromPackageJson(cwd: string): FrontMcpConfig {\n const pkgPath = path.join(cwd, 'package.json');\n if (!fs.existsSync(pkgPath)) {\n throw new Error(\n 'No frontmcp.config found and no package.json. Create a frontmcp.config.ts to configure build targets.',\n );\n }\n\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n return {\n name: pkg.name?.replace(/^@[^/]+\\//, '') || path.basename(cwd),\n version: pkg.version || '1.0.0',\n entry: pkg.main,\n deployments: [{ target: 'node' }],\n };\n}\n\n/**\n * Validate raw config against the Zod schema.\n */\nexport function validateConfig(raw: unknown): FrontMcpConfigParsed {\n const result = frontmcpConfigSchema.safeParse(raw);\n if (!result.success) {\n const issues = result.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\\n');\n throw new Error(`Invalid frontmcp.config:\\n${issues}`);\n }\n return result.data;\n}\n\n/**\n * Find a deployment target by type.\n */\nexport function findDeployment(config: FrontMcpConfigParsed, target: string): DeploymentTarget | undefined {\n return config.deployments.find((d) => d.target === target);\n}\n\n/**\n * Get all deployment target types from the config.\n */\nexport function getDeploymentTargets(config: FrontMcpConfigParsed): string[] {\n return config.deployments.map((d) => d.target);\n}\n"]}