frontmcp 0.12.2 → 1.0.0-beta.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 (264) hide show
  1. package/README.md +1 -1
  2. package/package.json +6 -5
  3. package/src/commands/build/bundler.js +1 -1
  4. package/src/commands/build/bundler.js.map +1 -1
  5. package/src/commands/build/exec/cli-runtime/cli-bundler.d.ts +17 -0
  6. package/src/commands/build/exec/cli-runtime/cli-bundler.js +75 -0
  7. package/src/commands/build/exec/cli-runtime/cli-bundler.js.map +1 -0
  8. package/src/commands/build/exec/cli-runtime/credential-store.d.ts +22 -0
  9. package/src/commands/build/exec/cli-runtime/credential-store.js +140 -0
  10. package/src/commands/build/exec/cli-runtime/credential-store.js.map +1 -0
  11. package/src/commands/build/exec/cli-runtime/daemon-client.d.ts +16 -0
  12. package/src/commands/build/exec/cli-runtime/daemon-client.js +169 -0
  13. package/src/commands/build/exec/cli-runtime/daemon-client.js.map +1 -0
  14. package/src/commands/build/exec/cli-runtime/generate-cli-entry.d.ts +37 -0
  15. package/src/commands/build/exec/cli-runtime/generate-cli-entry.js +1287 -0
  16. package/src/commands/build/exec/cli-runtime/generate-cli-entry.js.map +1 -0
  17. package/src/commands/build/exec/cli-runtime/index.d.ts +9 -0
  18. package/src/commands/build/exec/cli-runtime/index.js +32 -0
  19. package/src/commands/build/exec/cli-runtime/index.js.map +1 -0
  20. package/src/commands/build/exec/cli-runtime/oauth-helper.d.ts +9 -0
  21. package/src/commands/build/exec/cli-runtime/oauth-helper.js +224 -0
  22. package/src/commands/build/exec/cli-runtime/oauth-helper.js.map +1 -0
  23. package/src/commands/build/exec/cli-runtime/output-formatter.d.ts +46 -0
  24. package/src/commands/build/exec/cli-runtime/output-formatter.js +168 -0
  25. package/src/commands/build/exec/cli-runtime/output-formatter.js.map +1 -0
  26. package/src/commands/build/exec/cli-runtime/schema-extractor.d.ts +57 -0
  27. package/src/commands/build/exec/cli-runtime/schema-extractor.js +129 -0
  28. package/src/commands/build/exec/cli-runtime/schema-extractor.js.map +1 -0
  29. package/src/commands/build/exec/cli-runtime/schema-to-commander.d.ts +38 -0
  30. package/src/commands/build/exec/cli-runtime/schema-to-commander.js +172 -0
  31. package/src/commands/build/exec/cli-runtime/schema-to-commander.js.map +1 -0
  32. package/src/commands/build/exec/cli-runtime/session-manager.d.ts +16 -0
  33. package/src/commands/build/exec/cli-runtime/session-manager.js +122 -0
  34. package/src/commands/build/exec/cli-runtime/session-manager.js.map +1 -0
  35. package/src/commands/build/exec/config.d.ts +25 -0
  36. package/src/commands/build/exec/config.js +0 -1
  37. package/src/commands/build/exec/config.js.map +1 -1
  38. package/src/commands/build/exec/esbuild-bundler.d.ts +4 -1
  39. package/src/commands/build/exec/esbuild-bundler.js +28 -9
  40. package/src/commands/build/exec/esbuild-bundler.js.map +1 -1
  41. package/src/commands/build/exec/index.d.ts +7 -2
  42. package/src/commands/build/exec/index.js +159 -9
  43. package/src/commands/build/exec/index.js.map +1 -1
  44. package/src/commands/build/exec/manifest.d.ts +14 -0
  45. package/src/commands/build/exec/manifest.js.map +1 -1
  46. package/src/commands/build/exec/runner-script.d.ts +1 -1
  47. package/src/commands/build/exec/runner-script.js +48 -5
  48. package/src/commands/build/exec/runner-script.js.map +1 -1
  49. package/src/commands/build/exec/sea-builder.d.ts +18 -0
  50. package/src/commands/build/exec/sea-builder.js +81 -0
  51. package/src/commands/build/exec/sea-builder.js.map +1 -0
  52. package/src/commands/build/exec/setup.js +0 -2
  53. package/src/commands/build/exec/setup.js.map +1 -1
  54. package/src/commands/build/index.d.ts +1 -1
  55. package/src/commands/build/index.js +3 -3
  56. package/src/commands/build/index.js.map +1 -1
  57. package/src/commands/build/register.d.ts +2 -0
  58. package/src/commands/build/register.js +21 -0
  59. package/src/commands/build/register.js.map +1 -0
  60. package/src/commands/{dev.d.ts → dev/dev.d.ts} +1 -1
  61. package/src/commands/{dev.js → dev/dev.js} +3 -3
  62. package/src/commands/dev/dev.js.map +1 -0
  63. package/src/commands/{doctor.js → dev/doctor.js} +5 -4
  64. package/src/commands/dev/doctor.js.map +1 -0
  65. package/src/commands/{inspector.js → dev/inspector.js} +1 -1
  66. package/src/commands/dev/inspector.js.map +1 -0
  67. package/src/commands/dev/register.d.ts +2 -0
  68. package/src/commands/dev/register.js +49 -0
  69. package/src/commands/dev/register.js.map +1 -0
  70. package/src/commands/{test.d.ts → dev/test.d.ts} +1 -1
  71. package/src/commands/{test.js → dev/test.js} +5 -5
  72. package/src/commands/dev/test.js.map +1 -0
  73. package/src/commands/{configure.d.ts → package/configure.d.ts} +1 -1
  74. package/src/commands/{configure.js → package/configure.js} +3 -3
  75. package/src/commands/package/configure.js.map +1 -0
  76. package/src/commands/package/esm-update.d.ts +19 -0
  77. package/src/commands/package/esm-update.js +93 -0
  78. package/src/commands/package/esm-update.js.map +1 -0
  79. package/src/commands/{install/index.d.ts → package/install.d.ts} +1 -1
  80. package/src/commands/{install/index.js → package/install.js} +8 -5
  81. package/src/commands/package/install.js.map +1 -0
  82. package/src/commands/{install → package}/questionnaire.js +2 -2
  83. package/src/commands/{install → package}/questionnaire.js.map +1 -1
  84. package/src/commands/package/register.d.ts +2 -0
  85. package/src/commands/package/register.js +35 -0
  86. package/src/commands/package/register.js.map +1 -0
  87. package/src/commands/{install → package}/registry.js +8 -6
  88. package/src/commands/package/registry.js.map +1 -0
  89. package/src/commands/{install → package}/sources/git.js +8 -1
  90. package/src/commands/package/sources/git.js.map +1 -0
  91. package/src/commands/{install → package}/sources/local.js.map +1 -1
  92. package/src/commands/{install → package}/sources/npm.js.map +1 -1
  93. package/src/commands/{install → package}/types.d.ts +7 -1
  94. package/src/commands/{install → package}/types.js +4 -0
  95. package/src/commands/package/types.js.map +1 -0
  96. package/src/commands/{uninstall.d.ts → package/uninstall.d.ts} +1 -1
  97. package/src/commands/{uninstall.js → package/uninstall.js} +2 -2
  98. package/src/commands/package/uninstall.js.map +1 -0
  99. package/src/{pm/pm.format.d.ts → commands/pm/format.d.ts} +1 -1
  100. package/src/{pm/pm.format.js → commands/pm/format.js} +2 -2
  101. package/src/commands/pm/format.js.map +1 -0
  102. package/src/{pm/pm.health.js → commands/pm/health.js} +1 -1
  103. package/src/commands/pm/health.js.map +1 -0
  104. package/src/commands/pm/index.d.ts +9 -0
  105. package/src/{pm → commands/pm}/index.js +32 -32
  106. package/src/commands/pm/index.js.map +1 -0
  107. package/src/commands/{list.d.ts → pm/list.d.ts} +1 -1
  108. package/src/commands/{list.js → pm/list.js} +3 -3
  109. package/src/commands/pm/list.js.map +1 -0
  110. package/src/{pm/pm.logs.js → commands/pm/log-utils.js} +9 -9
  111. package/src/commands/pm/log-utils.js.map +1 -0
  112. package/src/commands/{logs.d.ts → pm/logs.d.ts} +1 -1
  113. package/src/commands/{logs.js → pm/logs.js} +6 -6
  114. package/src/commands/pm/logs.js.map +1 -0
  115. package/src/{pm/pm.manager.d.ts → commands/pm/manager.d.ts} +1 -1
  116. package/src/{pm/pm.manager.js → commands/pm/manager.js} +21 -21
  117. package/src/commands/pm/manager.js.map +1 -0
  118. package/src/{pm/pm.paths.d.ts → commands/pm/paths.d.ts} +1 -0
  119. package/src/{pm/pm.paths.js → commands/pm/paths.js} +2 -1
  120. package/src/commands/pm/paths.js.map +1 -0
  121. package/src/{pm/pm.pidfile.d.ts → commands/pm/pidfile.d.ts} +1 -1
  122. package/src/{pm/pm.pidfile.js → commands/pm/pidfile.js} +8 -8
  123. package/src/commands/pm/pidfile.js.map +1 -0
  124. package/src/commands/pm/register.d.ts +2 -0
  125. package/src/commands/pm/register.js +83 -0
  126. package/src/commands/pm/register.js.map +1 -0
  127. package/src/commands/{restart.d.ts → pm/restart.d.ts} +1 -1
  128. package/src/commands/{restart.js → pm/restart.js} +4 -4
  129. package/src/commands/pm/restart.js.map +1 -0
  130. package/src/{pm/pm.service.d.ts → commands/pm/service-gen.d.ts} +1 -1
  131. package/src/{pm/pm.service.js → commands/pm/service-gen.js} +5 -5
  132. package/src/commands/pm/service-gen.js.map +1 -0
  133. package/src/commands/{service.d.ts → pm/service.d.ts} +1 -1
  134. package/src/commands/{service.js → pm/service.js} +6 -6
  135. package/src/commands/pm/service.js.map +1 -0
  136. package/src/commands/{socket.d.ts → pm/socket.d.ts} +1 -1
  137. package/src/commands/{socket.js → pm/socket.js} +3 -3
  138. package/src/commands/pm/socket.js.map +1 -0
  139. package/src/{pm/pm.spawn.d.ts → commands/pm/spawn.d.ts} +1 -1
  140. package/src/{pm/pm.spawn.js → commands/pm/spawn.js} +15 -15
  141. package/src/commands/pm/spawn.js.map +1 -0
  142. package/src/commands/{start.d.ts → pm/start.d.ts} +1 -1
  143. package/src/commands/{start.js → pm/start.js} +6 -6
  144. package/src/commands/pm/start.js.map +1 -0
  145. package/src/commands/{status.d.ts → pm/status.d.ts} +1 -1
  146. package/src/commands/{status.js → pm/status.js} +5 -5
  147. package/src/commands/pm/status.js.map +1 -0
  148. package/src/commands/{stop.d.ts → pm/stop.d.ts} +1 -1
  149. package/src/commands/{stop.js → pm/stop.js} +3 -3
  150. package/src/commands/pm/stop.js.map +1 -0
  151. package/src/{pm/pm.types.js → commands/pm/types.js} +1 -1
  152. package/src/commands/pm/types.js.map +1 -0
  153. package/src/commands/{create.js → scaffold/create.js} +91 -20
  154. package/src/commands/scaffold/create.js.map +1 -0
  155. package/src/commands/scaffold/register.d.ts +2 -0
  156. package/src/commands/scaffold/register.js +28 -0
  157. package/src/commands/scaffold/register.js.map +1 -0
  158. package/src/{args.d.ts → core/args.d.ts} +7 -1
  159. package/src/{args.js → core/args.js} +8 -0
  160. package/src/core/args.js.map +1 -0
  161. package/src/core/bridge.d.ts +9 -0
  162. package/src/core/bridge.js +75 -0
  163. package/src/core/bridge.js.map +1 -0
  164. package/src/core/cli.d.ts +8 -0
  165. package/src/core/cli.js +23 -0
  166. package/src/core/cli.js.map +1 -0
  167. package/src/core/colors.js.map +1 -0
  168. package/src/core/help.d.ts +7 -0
  169. package/src/core/help.js +83 -0
  170. package/src/core/help.js.map +1 -0
  171. package/src/core/index.d.ts +7 -0
  172. package/src/core/index.js +22 -0
  173. package/src/core/index.js.map +1 -0
  174. package/src/core/program.d.ts +2 -0
  175. package/src/core/program.js +23 -0
  176. package/src/core/program.js.map +1 -0
  177. package/src/core/tsconfig.js.map +1 -0
  178. package/src/{version.js → core/version.js} +1 -1
  179. package/src/core/version.js.map +1 -0
  180. package/src/index.d.ts +1 -1
  181. package/src/index.js +2 -5
  182. package/src/index.js.map +1 -1
  183. package/src/{utils → shared}/env.js +2 -2
  184. package/src/shared/env.js.map +1 -0
  185. package/src/{utils → shared}/fs.js +2 -2
  186. package/src/shared/fs.js.map +1 -0
  187. package/src/shared/index.d.ts +3 -0
  188. package/src/shared/index.js +14 -0
  189. package/src/shared/index.js.map +1 -0
  190. package/src/shared/prompts.js.map +1 -0
  191. package/src/args.js.map +0 -1
  192. package/src/cli.d.ts +0 -5
  193. package/src/cli.js +0 -241
  194. package/src/cli.js.map +0 -1
  195. package/src/colors.js.map +0 -1
  196. package/src/commands/configure.js.map +0 -1
  197. package/src/commands/create.js.map +0 -1
  198. package/src/commands/dev.js.map +0 -1
  199. package/src/commands/doctor.js.map +0 -1
  200. package/src/commands/inspector.js.map +0 -1
  201. package/src/commands/install/index.js.map +0 -1
  202. package/src/commands/install/registry.js.map +0 -1
  203. package/src/commands/install/sources/git.js.map +0 -1
  204. package/src/commands/install/types.js.map +0 -1
  205. package/src/commands/list.js.map +0 -1
  206. package/src/commands/logs.js.map +0 -1
  207. package/src/commands/restart.js.map +0 -1
  208. package/src/commands/service.js.map +0 -1
  209. package/src/commands/socket.js.map +0 -1
  210. package/src/commands/start.js.map +0 -1
  211. package/src/commands/status.js.map +0 -1
  212. package/src/commands/stop.js.map +0 -1
  213. package/src/commands/template.d.ts +0 -13
  214. package/src/commands/template.js +0 -193
  215. package/src/commands/template.js.map +0 -1
  216. package/src/commands/test.js.map +0 -1
  217. package/src/commands/uninstall.js.map +0 -1
  218. package/src/pm/index.d.ts +0 -9
  219. package/src/pm/index.js.map +0 -1
  220. package/src/pm/pm.format.js.map +0 -1
  221. package/src/pm/pm.health.js.map +0 -1
  222. package/src/pm/pm.logs.js.map +0 -1
  223. package/src/pm/pm.manager.js.map +0 -1
  224. package/src/pm/pm.paths.js.map +0 -1
  225. package/src/pm/pm.pidfile.js.map +0 -1
  226. package/src/pm/pm.service.js.map +0 -1
  227. package/src/pm/pm.spawn.js.map +0 -1
  228. package/src/pm/pm.types.js.map +0 -1
  229. package/src/templates/3rd-party-integration/src/http-client.d.ts +0 -20
  230. package/src/templates/3rd-party-integration/src/http-client.js +0 -105
  231. package/src/templates/3rd-party-integration/src/http-client.js.map +0 -1
  232. package/src/templates/3rd-party-integration/src/mcp-http-types.d.ts +0 -63
  233. package/src/templates/3rd-party-integration/src/mcp-http-types.js +0 -52
  234. package/src/templates/3rd-party-integration/src/mcp-http-types.js.map +0 -1
  235. package/src/templates/3rd-party-integration/src/tools/example.list.d.ts +0 -45
  236. package/src/templates/3rd-party-integration/src/tools/example.list.js +0 -85
  237. package/src/templates/3rd-party-integration/src/tools/example.list.js.map +0 -1
  238. package/src/tsconfig.js.map +0 -1
  239. package/src/utils/env.js.map +0 -1
  240. package/src/utils/fs.js.map +0 -1
  241. package/src/utils/prompts.js.map +0 -1
  242. package/src/version.js.map +0 -1
  243. /package/src/commands/{doctor.d.ts → dev/doctor.d.ts} +0 -0
  244. /package/src/commands/{inspector.d.ts → dev/inspector.d.ts} +0 -0
  245. /package/src/commands/{install → package}/questionnaire.d.ts +0 -0
  246. /package/src/commands/{install → package}/registry.d.ts +0 -0
  247. /package/src/commands/{install → package}/sources/git.d.ts +0 -0
  248. /package/src/commands/{install → package}/sources/local.d.ts +0 -0
  249. /package/src/commands/{install → package}/sources/local.js +0 -0
  250. /package/src/commands/{install → package}/sources/npm.d.ts +0 -0
  251. /package/src/commands/{install → package}/sources/npm.js +0 -0
  252. /package/src/{pm/pm.health.d.ts → commands/pm/health.d.ts} +0 -0
  253. /package/src/{pm/pm.logs.d.ts → commands/pm/log-utils.d.ts} +0 -0
  254. /package/src/{pm/pm.types.d.ts → commands/pm/types.d.ts} +0 -0
  255. /package/src/commands/{create.d.ts → scaffold/create.d.ts} +0 -0
  256. /package/src/{colors.d.ts → core/colors.d.ts} +0 -0
  257. /package/src/{colors.js → core/colors.js} +0 -0
  258. /package/src/{tsconfig.d.ts → core/tsconfig.d.ts} +0 -0
  259. /package/src/{tsconfig.js → core/tsconfig.js} +0 -0
  260. /package/src/{version.d.ts → core/version.d.ts} +0 -0
  261. /package/src/{utils → shared}/env.d.ts +0 -0
  262. /package/src/{utils → shared}/fs.d.ts +0 -0
  263. /package/src/{utils → shared}/prompts.d.ts +0 -0
  264. /package/src/{utils → shared}/prompts.js +0 -0
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toParsedArgs = toParsedArgs;
4
+ /**
5
+ * Convert commander's parsed command name, positional arguments, and options
6
+ * into the legacy {@link ParsedArgs} shape expected by existing handlers.
7
+ *
8
+ * This is a Phase-1 bridge — it will be removed once each handler accepts
9
+ * its own typed options interface (Phase 2).
10
+ */
11
+ function toParsedArgs(commandName, positionalArgs, options) {
12
+ const out = { _: [commandName, ...positionalArgs] };
13
+ // General
14
+ if (options['outDir'] !== undefined)
15
+ out.outDir = options['outDir'];
16
+ if (options['entry'] !== undefined)
17
+ out.entry = options['entry'];
18
+ if (options['adapter'] !== undefined)
19
+ out.adapter = options['adapter'];
20
+ // Build
21
+ if (options['exec'] !== undefined)
22
+ out.exec = options['exec'];
23
+ if (options['cli'] !== undefined)
24
+ out.cli = options['cli'];
25
+ if (options['sea'] !== undefined)
26
+ out.sea = options['sea'];
27
+ // Create
28
+ if (options['yes'] !== undefined)
29
+ out.yes = options['yes'];
30
+ if (options['target'] !== undefined)
31
+ out.target = options['target'];
32
+ if (options['redis'] !== undefined)
33
+ out.redis = options['redis'];
34
+ if (options['cicd'] !== undefined)
35
+ out.cicd = options['cicd'];
36
+ if (options['pm'] !== undefined)
37
+ out.pm = options['pm'];
38
+ if (options['nx'] !== undefined)
39
+ out.nx = options['nx'];
40
+ // Test
41
+ if (options['runInBand'] !== undefined)
42
+ out.runInBand = options['runInBand'];
43
+ if (options['watch'] !== undefined)
44
+ out.watch = options['watch'];
45
+ if (options['verbose'] !== undefined)
46
+ out.verbose = options['verbose'];
47
+ if (options['timeout'] !== undefined)
48
+ out.timeout = options['timeout'];
49
+ if (options['coverage'] !== undefined)
50
+ out.coverage = options['coverage'];
51
+ // PM - start / socket
52
+ if (options['port'] !== undefined)
53
+ out.port = options['port'];
54
+ if (options['socket'] !== undefined)
55
+ out.socket = options['socket'];
56
+ if (options['db'] !== undefined)
57
+ out.db = options['db'];
58
+ if (options['background'] !== undefined)
59
+ out.background = options['background'];
60
+ if (options['maxRestarts'] !== undefined)
61
+ out.maxRestarts = options['maxRestarts'];
62
+ // PM - stop
63
+ if (options['force'] !== undefined)
64
+ out.force = options['force'];
65
+ // PM - logs
66
+ if (options['follow'] !== undefined)
67
+ out.follow = options['follow'];
68
+ if (options['lines'] !== undefined)
69
+ out.lines = options['lines'];
70
+ // Package manager
71
+ if (options['registry'] !== undefined)
72
+ out.registry = options['registry'];
73
+ return out;
74
+ }
75
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/core/bridge.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeploymentAdapter, PackageManagerOption, ParsedArgs, RedisSetupOption } from './args';\n\n/**\n * Convert commander's parsed command name, positional arguments, and options\n * into the legacy {@link ParsedArgs} shape expected by existing handlers.\n *\n * This is a Phase-1 bridge — it will be removed once each handler accepts\n * its own typed options interface (Phase 2).\n */\nexport function toParsedArgs(\n commandName: string,\n positionalArgs: string[],\n options: Record<string, unknown>,\n): ParsedArgs {\n const out: ParsedArgs = { _: [commandName, ...positionalArgs] };\n\n // General\n if (options['outDir'] !== undefined) out.outDir = options['outDir'] as string;\n if (options['entry'] !== undefined) out.entry = options['entry'] as string;\n if (options['adapter'] !== undefined) out.adapter = options['adapter'] as DeploymentAdapter;\n\n // Build\n if (options['exec'] !== undefined) out.exec = options['exec'] as boolean;\n if (options['cli'] !== undefined) out.cli = options['cli'] as boolean;\n if (options['sea'] !== undefined) out.sea = options['sea'] as boolean;\n\n // Create\n if (options['yes'] !== undefined) out.yes = options['yes'] as boolean;\n if (options['target'] !== undefined) out.target = options['target'] as DeploymentAdapter;\n if (options['redis'] !== undefined) out.redis = options['redis'] as RedisSetupOption;\n if (options['cicd'] !== undefined) out.cicd = options['cicd'] as boolean;\n if (options['pm'] !== undefined) out.pm = options['pm'] as PackageManagerOption;\n if (options['nx'] !== undefined) out.nx = options['nx'] as boolean;\n\n // Test\n if (options['runInBand'] !== undefined) out.runInBand = options['runInBand'] as boolean;\n if (options['watch'] !== undefined) out.watch = options['watch'] as boolean;\n if (options['verbose'] !== undefined) out.verbose = options['verbose'] as boolean;\n if (options['timeout'] !== undefined) out.timeout = options['timeout'] as number;\n if (options['coverage'] !== undefined) out.coverage = options['coverage'] as boolean;\n\n // PM - start / socket\n if (options['port'] !== undefined) out.port = options['port'] as number;\n if (options['socket'] !== undefined) out.socket = options['socket'] as string;\n if (options['db'] !== undefined) out.db = options['db'] as string;\n if (options['background'] !== undefined) out.background = options['background'] as boolean;\n if (options['maxRestarts'] !== undefined) out.maxRestarts = options['maxRestarts'] as number;\n\n // PM - stop\n if (options['force'] !== undefined) out.force = options['force'] as boolean;\n\n // PM - logs\n if (options['follow'] !== undefined) out.follow = options['follow'] as boolean;\n if (options['lines'] !== undefined) out.lines = options['lines'] as number;\n\n // Package manager\n if (options['registry'] !== undefined) out.registry = options['registry'] as string;\n\n return out;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * frontmcp - FrontMCP command line interface
4
+ *
5
+ * Uses commander.js for argument parsing, command management, and
6
+ * auto-generated help. Interactive TUI is handled by @clack/prompts.
7
+ */
8
+ export {};
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * frontmcp - FrontMCP command line interface
5
+ *
6
+ * Uses commander.js for argument parsing, command management, and
7
+ * auto-generated help. Interactive TUI is handled by @clack/prompts.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const program_1 = require("./program");
11
+ const colors_1 = require("./colors");
12
+ async function main() {
13
+ try {
14
+ const program = (0, program_1.createProgram)();
15
+ await program.parseAsync(process.argv);
16
+ }
17
+ catch (err) {
18
+ console.error('\n' + (0, colors_1.c)('red', err instanceof Error ? err.stack || err.message : String(err)));
19
+ process.exit(1);
20
+ }
21
+ }
22
+ main();
23
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/core/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;AAEH,uCAA0C;AAC1C,qCAA6B;AAE7B,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,uBAAa,GAAE,CAAC;QAChC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAA,UAAC,EAAC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\n/**\n * frontmcp - FrontMCP command line interface\n *\n * Uses commander.js for argument parsing, command management, and\n * auto-generated help. Interactive TUI is handled by @clack/prompts.\n */\n\nimport { createProgram } from './program';\nimport { c } from './colors';\n\nasync function main(): Promise<void> {\n try {\n const program = createProgram();\n await program.parseAsync(process.argv);\n } catch (err: unknown) {\n console.error('\\n' + c('red', err instanceof Error ? err.stack || err.message : String(err)));\n process.exit(1);\n }\n}\n\nmain();\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../src/core/colors.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACR,CAAC;AAEJ,MAAM,CAAC,GAAG,CAAC,KAA0B,EAAE,CAAS,EAAE,EAAE,CAAC,cAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,cAAM,CAAC,KAAK,CAAC;AAAhF,QAAA,CAAC,KAA+E","sourcesContent":["export const COLORS = {\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n dim: '\\x1b[2m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n gray: '\\x1b[90m',\n} as const;\n\nexport const c = (color: keyof typeof COLORS, s: string) => COLORS[color] + s + COLORS.reset;\n"]}
@@ -0,0 +1,7 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Apply custom help formatting to the top-level program so that
4
+ * `frontmcp --help` groups commands under section headers and appends
5
+ * an Examples block.
6
+ */
7
+ export declare function customizeHelp(program: Command): void;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.customizeHelp = customizeHelp;
4
+ const colors_1 = require("./colors");
5
+ /** Group labels in display order, mapped to the command names they contain. */
6
+ const GROUPS = [
7
+ ['Development', ['dev', 'build', 'test', 'init', 'doctor', 'inspector', 'create', 'socket']],
8
+ ['Process Manager', ['start', 'stop', 'restart', 'status', 'list', 'logs', 'service']],
9
+ ['Package Manager', ['install', 'uninstall', 'configure']],
10
+ ];
11
+ /**
12
+ * Apply custom help formatting to the top-level program so that
13
+ * `frontmcp --help` groups commands under section headers and appends
14
+ * an Examples block.
15
+ */
16
+ function customizeHelp(program) {
17
+ program.configureHelp({
18
+ formatHelp(cmd, helper) {
19
+ const termWidth = helper.padWidth(cmd, helper);
20
+ const lines = [];
21
+ // Description
22
+ const desc = helper.commandDescription(cmd);
23
+ if (desc)
24
+ lines.push(desc, '');
25
+ // Usage
26
+ lines.push((0, colors_1.c)('bold', 'Usage'));
27
+ lines.push(` ${helper.commandUsage(cmd)}`, '');
28
+ // Grouped commands
29
+ const allCommands = cmd.commands;
30
+ for (const [label, names] of GROUPS) {
31
+ const matching = names.map((n) => allCommands.find((c) => c.name() === n)).filter(Boolean);
32
+ if (matching.length === 0)
33
+ continue;
34
+ lines.push((0, colors_1.c)('bold', label));
35
+ for (const sub of matching) {
36
+ const name = sub.name();
37
+ const args = sub.registeredArguments.map((a) => (a.required ? `<${a.name()}>` : `[${a.name()}]`)).join(' ');
38
+ const term = args ? `${name} ${args}` : name;
39
+ const padding = ' '.repeat(Math.max(2, termWidth - term.length + 2));
40
+ lines.push(` ${term}${padding}${sub.description()}`);
41
+ }
42
+ lines.push('');
43
+ }
44
+ // Global options
45
+ const opts = helper.visibleOptions(cmd);
46
+ if (opts.length > 0) {
47
+ lines.push((0, colors_1.c)('bold', 'Options'));
48
+ for (const opt of opts) {
49
+ const term = helper.optionTerm(opt);
50
+ const padding = ' '.repeat(Math.max(2, termWidth - term.length + 2));
51
+ lines.push(` ${term}${padding}${helper.optionDescription(opt)}`);
52
+ }
53
+ lines.push('');
54
+ }
55
+ return lines.join('\n');
56
+ },
57
+ });
58
+ program.addHelpText('after', `
59
+ ${(0, colors_1.c)('bold', 'Examples')}
60
+ frontmcp dev
61
+ frontmcp build --out-dir build
62
+ frontmcp build --exec
63
+ frontmcp build --exec --cli
64
+ frontmcp test --runInBand
65
+ frontmcp init
66
+ frontmcp doctor
67
+ frontmcp inspector
68
+ npx frontmcp create # Interactive mode
69
+ npx frontmcp create my-mcp --yes # Use defaults
70
+ npx frontmcp create my-mcp --target vercel # Vercel deployment
71
+ frontmcp socket ./src/main.ts --socket /tmp/my-app.sock
72
+ frontmcp start my-app --entry ./src/main.ts --port 3005
73
+ frontmcp stop my-app
74
+ frontmcp logs my-app --follow
75
+ frontmcp service install my-app
76
+ frontmcp install @company/my-mcp --registry https://npm.company.com
77
+ frontmcp install ./my-local-app
78
+ frontmcp install github:user/repo
79
+ frontmcp configure my-app
80
+ frontmcp uninstall my-app
81
+ `);
82
+ }
83
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/core/help.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from 'commander';\nimport { c } from './colors';\n\n/** Group labels in display order, mapped to the command names they contain. */\nconst GROUPS: [label: string, commands: string[]][] = [\n ['Development', ['dev', 'build', 'test', 'init', 'doctor', 'inspector', 'create', 'socket']],\n ['Process Manager', ['start', 'stop', 'restart', 'status', 'list', 'logs', 'service']],\n ['Package Manager', ['install', 'uninstall', 'configure']],\n];\n\n/**\n * Apply custom help formatting to the top-level program so that\n * `frontmcp --help` groups commands under section headers and appends\n * an Examples block.\n */\nexport function customizeHelp(program: Command): void {\n program.configureHelp({\n formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const lines: string[] = [];\n\n // Description\n const desc = helper.commandDescription(cmd);\n if (desc) lines.push(desc, '');\n\n // Usage\n lines.push(c('bold', 'Usage'));\n lines.push(` ${helper.commandUsage(cmd)}`, '');\n\n // Grouped commands\n const allCommands = cmd.commands;\n for (const [label, names] of GROUPS) {\n const matching = names.map((n) => allCommands.find((c) => c.name() === n)).filter(Boolean) as Command[];\n if (matching.length === 0) continue;\n\n lines.push(c('bold', label));\n for (const sub of matching) {\n const name = sub.name();\n const args = sub.registeredArguments.map((a) => (a.required ? `<${a.name()}>` : `[${a.name()}]`)).join(' ');\n const term = args ? `${name} ${args}` : name;\n const padding = ' '.repeat(Math.max(2, termWidth - term.length + 2));\n lines.push(` ${term}${padding}${sub.description()}`);\n }\n lines.push('');\n }\n\n // Global options\n const opts = helper.visibleOptions(cmd);\n if (opts.length > 0) {\n lines.push(c('bold', 'Options'));\n for (const opt of opts) {\n const term = helper.optionTerm(opt);\n const padding = ' '.repeat(Math.max(2, termWidth - term.length + 2));\n lines.push(` ${term}${padding}${helper.optionDescription(opt)}`);\n }\n lines.push('');\n }\n\n return lines.join('\\n');\n },\n });\n\n program.addHelpText(\n 'after',\n `\n${c('bold', 'Examples')}\n frontmcp dev\n frontmcp build --out-dir build\n frontmcp build --exec\n frontmcp build --exec --cli\n frontmcp test --runInBand\n frontmcp init\n frontmcp doctor\n frontmcp inspector\n npx frontmcp create # Interactive mode\n npx frontmcp create my-mcp --yes # Use defaults\n npx frontmcp create my-mcp --target vercel # Vercel deployment\n frontmcp socket ./src/main.ts --socket /tmp/my-app.sock\n frontmcp start my-app --entry ./src/main.ts --port 3005\n frontmcp stop my-app\n frontmcp logs my-app --follow\n frontmcp service install my-app\n frontmcp install @company/my-mcp --registry https://npm.company.com\n frontmcp install ./my-local-app\n frontmcp install github:user/repo\n frontmcp configure my-app\n frontmcp uninstall my-app\n`,\n );\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export { c, COLORS } from './colors';
2
+ export { parseArgs } from './args';
3
+ export type { Command, ParsedArgs, DeploymentAdapter, RedisSetupOption, PackageManagerOption } from './args';
4
+ export { getSelfVersion } from './version';
5
+ export { createProgram } from './program';
6
+ export { toParsedArgs } from './bridge';
7
+ export { REQUIRED_DECORATOR_FIELDS, RECOMMENDED_TSCONFIG, runInit, checkRequiredTsOptions, ensureRequiredTsOptions, deepMerge, } from './tsconfig';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deepMerge = exports.ensureRequiredTsOptions = exports.checkRequiredTsOptions = exports.runInit = exports.RECOMMENDED_TSCONFIG = exports.REQUIRED_DECORATOR_FIELDS = exports.toParsedArgs = exports.createProgram = exports.getSelfVersion = exports.parseArgs = exports.COLORS = exports.c = void 0;
4
+ var colors_1 = require("./colors");
5
+ Object.defineProperty(exports, "c", { enumerable: true, get: function () { return colors_1.c; } });
6
+ Object.defineProperty(exports, "COLORS", { enumerable: true, get: function () { return colors_1.COLORS; } });
7
+ var args_1 = require("./args");
8
+ Object.defineProperty(exports, "parseArgs", { enumerable: true, get: function () { return args_1.parseArgs; } });
9
+ var version_1 = require("./version");
10
+ Object.defineProperty(exports, "getSelfVersion", { enumerable: true, get: function () { return version_1.getSelfVersion; } });
11
+ var program_1 = require("./program");
12
+ Object.defineProperty(exports, "createProgram", { enumerable: true, get: function () { return program_1.createProgram; } });
13
+ var bridge_1 = require("./bridge");
14
+ Object.defineProperty(exports, "toParsedArgs", { enumerable: true, get: function () { return bridge_1.toParsedArgs; } });
15
+ var tsconfig_1 = require("./tsconfig");
16
+ Object.defineProperty(exports, "REQUIRED_DECORATOR_FIELDS", { enumerable: true, get: function () { return tsconfig_1.REQUIRED_DECORATOR_FIELDS; } });
17
+ Object.defineProperty(exports, "RECOMMENDED_TSCONFIG", { enumerable: true, get: function () { return tsconfig_1.RECOMMENDED_TSCONFIG; } });
18
+ Object.defineProperty(exports, "runInit", { enumerable: true, get: function () { return tsconfig_1.runInit; } });
19
+ Object.defineProperty(exports, "checkRequiredTsOptions", { enumerable: true, get: function () { return tsconfig_1.checkRequiredTsOptions; } });
20
+ Object.defineProperty(exports, "ensureRequiredTsOptions", { enumerable: true, get: function () { return tsconfig_1.ensureRequiredTsOptions; } });
21
+ Object.defineProperty(exports, "deepMerge", { enumerable: true, get: function () { return tsconfig_1.deepMerge; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAA5B,2FAAA,CAAC,OAAA;AAAE,gGAAA,MAAM,OAAA;AAClB,+BAAmC;AAA1B,iGAAA,SAAS,OAAA;AAElB,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AACtB,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,uCAOoB;AANlB,qHAAA,yBAAyB,OAAA;AACzB,gHAAA,oBAAoB,OAAA;AACpB,mGAAA,OAAO,OAAA;AACP,kHAAA,sBAAsB,OAAA;AACtB,mHAAA,uBAAuB,OAAA;AACvB,qGAAA,SAAS,OAAA","sourcesContent":["export { c, COLORS } from './colors';\nexport { parseArgs } from './args';\nexport type { Command, ParsedArgs, DeploymentAdapter, RedisSetupOption, PackageManagerOption } from './args';\nexport { getSelfVersion } from './version';\nexport { createProgram } from './program';\nexport { toParsedArgs } from './bridge';\nexport {\n REQUIRED_DECORATOR_FIELDS,\n RECOMMENDED_TSCONFIG,\n runInit,\n checkRequiredTsOptions,\n ensureRequiredTsOptions,\n deepMerge,\n} from './tsconfig';\n"]}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function createProgram(): Command;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProgram = createProgram;
4
+ const commander_1 = require("commander");
5
+ const version_1 = require("./version");
6
+ const register_1 = require("../commands/dev/register");
7
+ const register_2 = require("../commands/build/register");
8
+ const register_3 = require("../commands/scaffold/register");
9
+ const register_4 = require("../commands/pm/register");
10
+ const register_5 = require("../commands/package/register");
11
+ const help_1 = require("./help");
12
+ function createProgram() {
13
+ const program = new commander_1.Command();
14
+ program.name('frontmcp').description('FrontMCP command line interface').version((0, version_1.getSelfVersion)(), '-V, --version');
15
+ (0, register_1.registerDevCommands)(program);
16
+ (0, register_2.registerBuildCommands)(program);
17
+ (0, register_3.registerScaffoldCommands)(program);
18
+ (0, register_4.registerPmCommands)(program);
19
+ (0, register_5.registerPackageCommands)(program);
20
+ (0, help_1.customizeHelp)(program);
21
+ return program;
22
+ }
23
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/core/program.ts"],"names":[],"mappings":";;AASA,sCAaC;AAtBD,yCAAoC;AACpC,uCAA2C;AAC3C,uDAA+D;AAC/D,yDAAmE;AACnE,4DAAyE;AACzE,sDAA6D;AAC7D,2DAAuE;AACvE,iCAAuC;AAEvC,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC,OAAO,CAAC,IAAA,wBAAc,GAAE,EAAE,eAAe,CAAC,CAAC;IAEnH,IAAA,8BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7B,IAAA,gCAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,mCAAwB,EAAC,OAAO,CAAC,CAAC;IAClC,IAAA,6BAAkB,EAAC,OAAO,CAAC,CAAC;IAC5B,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;IACjC,IAAA,oBAAa,EAAC,OAAO,CAAC,CAAC;IAEvB,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { Command } from 'commander';\nimport { getSelfVersion } from './version';\nimport { registerDevCommands } from '../commands/dev/register';\nimport { registerBuildCommands } from '../commands/build/register';\nimport { registerScaffoldCommands } from '../commands/scaffold/register';\nimport { registerPmCommands } from '../commands/pm/register';\nimport { registerPackageCommands } from '../commands/package/register';\nimport { customizeHelp } from './help';\n\nexport function createProgram(): Command {\n const program = new Command();\n\n program.name('frontmcp').description('FrontMCP command line interface').version(getSelfVersion(), '-V, --version');\n\n registerDevCommands(program);\n registerBuildCommands(program);\n registerScaffoldCommands(program);\n registerPmCommands(program);\n registerPackageCommands(program);\n customizeHelp(program);\n\n return program;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../../src/core/tsconfig.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport { c } from './colors';\nimport { fileExists, readJSON, writeJSON } from '@frontmcp/utils';\n\nexport const REQUIRED_DECORATOR_FIELDS = {\n target: 'es2021',\n module: 'esnext',\n emitDecoratorMetadata: true,\n experimentalDecorators: true,\n strictFunctionTypes: true,\n moduleResolution: 'node',\n} as const;\n\nexport const RECOMMENDED_TSCONFIG = {\n compilerOptions: {\n target: REQUIRED_DECORATOR_FIELDS.target,\n module: REQUIRED_DECORATOR_FIELDS.module,\n emitDecoratorMetadata: REQUIRED_DECORATOR_FIELDS.emitDecoratorMetadata,\n experimentalDecorators: REQUIRED_DECORATOR_FIELDS.experimentalDecorators,\n strictFunctionTypes: REQUIRED_DECORATOR_FIELDS.strictFunctionTypes,\n moduleResolution: REQUIRED_DECORATOR_FIELDS.moduleResolution,\n strict: true,\n esModuleInterop: true,\n resolveJsonModule: true,\n skipLibCheck: true,\n sourceMap: true,\n outDir: 'dist',\n rootDir: 'src',\n types: ['node', '@types/jest', '@frontmcp/testing'],\n },\n include: ['src/**/*'],\n} as const;\n\nexport function deepMerge<T extends Record<string, any>, U extends Record<string, any>>(base: T, patch: U): T & U {\n const out: Record<string, any> = { ...base };\n for (const [k, v] of Object.entries(patch)) {\n if (v && typeof v === 'object' && !Array.isArray(v)) {\n out[k] = deepMerge(base[k] ?? {}, v as Record<string, any>);\n } else {\n out[k] = v;\n }\n }\n return out as T & U;\n}\n\nexport function ensureRequiredTsOptions(obj: Record<string, any>): Record<string, any> {\n const next = { ...obj };\n next.compilerOptions = { ...(next.compilerOptions || {}) };\n next.compilerOptions.target = REQUIRED_DECORATOR_FIELDS.target;\n next.compilerOptions.module = REQUIRED_DECORATOR_FIELDS.module;\n next.compilerOptions.emitDecoratorMetadata = REQUIRED_DECORATOR_FIELDS.emitDecoratorMetadata;\n next.compilerOptions.experimentalDecorators = REQUIRED_DECORATOR_FIELDS.experimentalDecorators;\n return next;\n}\n\nfunction normalizeStr(x: unknown): string | undefined {\n return typeof x === 'string' ? x.toLowerCase() : undefined;\n}\n\nexport function checkRequiredTsOptions(compilerOptions: Record<string, any> | undefined) {\n const issues: string[] = [];\n const ok: string[] = [];\n\n const target = normalizeStr(compilerOptions?.target);\n const moduleVal = normalizeStr(compilerOptions?.module);\n const edm = compilerOptions?.emitDecoratorMetadata;\n const ed = compilerOptions?.experimentalDecorators;\n\n if (target === REQUIRED_DECORATOR_FIELDS.target)\n ok.push(`compilerOptions.target = \"${REQUIRED_DECORATOR_FIELDS.target}\"`);\n else issues.push(`compilerOptions.target should be \"${REQUIRED_DECORATOR_FIELDS.target}\"`);\n\n if (moduleVal === REQUIRED_DECORATOR_FIELDS.module)\n ok.push(`compilerOptions.module = \"${REQUIRED_DECORATOR_FIELDS.module}\"`);\n else issues.push(`compilerOptions.module should be \"${REQUIRED_DECORATOR_FIELDS.module}\"`);\n\n if (edm === REQUIRED_DECORATOR_FIELDS.emitDecoratorMetadata) ok.push(`compilerOptions.emitDecoratorMetadata = true`);\n else issues.push(`compilerOptions.emitDecoratorMetadata should be true`);\n\n if (ed === REQUIRED_DECORATOR_FIELDS.experimentalDecorators) ok.push(`compilerOptions.experimentalDecorators = true`);\n else issues.push(`compilerOptions.experimentalDecorators should be true`);\n\n return { ok, issues };\n}\n\nexport async function runInit(baseDir?: string): Promise<void> {\n const cwd = baseDir ?? process.cwd();\n const tsconfigPath = path.join(cwd, 'tsconfig.json');\n const existing = await readJSON<Record<string, any>>(tsconfigPath);\n\n if (!existing) {\n console.log(c('yellow', `tsconfig.json not found — creating one in ${path.relative(process.cwd(), cwd) || '.'}.`));\n await writeJSON(tsconfigPath, RECOMMENDED_TSCONFIG);\n console.log(c('green', '✅ Created tsconfig.json with required decorator settings.'));\n return;\n }\n\n let merged = deepMerge(RECOMMENDED_TSCONFIG as any, existing);\n merged = ensureRequiredTsOptions(merged);\n\n await writeJSON(tsconfigPath, merged);\n console.log(c('green', '✅ tsconfig.json verified and updated (required decorator settings enforced).'));\n}\n"]}
@@ -4,7 +4,7 @@ exports.getSelfVersion = getSelfVersion;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  function getSelfVersion() {
7
- const pkgPath = (0, path_1.join)(__dirname, '../package.json');
7
+ const pkgPath = (0, path_1.join)(__dirname, '../../package.json');
8
8
  const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, 'utf-8'));
9
9
  return pkg.version;
10
10
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/core/version.ts"],"names":[],"mappings":";;AAGA,wCAIC;AAPD,2BAAkC;AAClC,+BAA4B;AAE5B,SAAgB,cAAc;IAC5B,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC","sourcesContent":["import { readFileSync } from 'fs';\nimport { join } from 'path';\n\nexport function getSelfVersion(): string {\n const pkgPath = join(__dirname, '../../package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n return pkg.version;\n}\n"]}
package/src/index.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const name: string;
1
+ export * from './core';
package/src/index.js CHANGED
@@ -1,8 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.name = void 0;
4
- const version_1 = require("./version");
5
- const version = (0, version_1.getSelfVersion)();
6
- exports.name = `frontmcp cli version ${version}`;
7
- console.log(`Hello, I'm ${exports.name}`);
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./core"), exports);
8
5
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAEzC,MAAM,OAAO,GAAG,IAAA,wBAAc,GAAE,CAAC;AACpB,QAAA,IAAI,GAAG,wBAAwB,OAAO,EAAE,CAAA;AAErD,OAAO,CAAC,GAAG,CAAC,cAAc,YAAI,EAAE,CAAC,CAAA","sourcesContent":["import {getSelfVersion} from \"./version\";\n\nconst version = getSelfVersion();\nexport const name = `frontmcp cli version ${version}`\n\nconsole.log(`Hello, I'm ${name}`)"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB","sourcesContent":["export * from './core';\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // file: libs/cli/src/utils/env.ts
2
+ // file: libs/cli/src/shared/env.ts
3
3
  // CLI-specific environment loading utilities
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.parseEnvContent = parseEnvContent;
@@ -9,7 +9,7 @@ exports.loadDevEnv = loadDevEnv;
9
9
  const tslib_1 = require("tslib");
10
10
  const fs = tslib_1.__importStar(require("fs"));
11
11
  const path = tslib_1.__importStar(require("path"));
12
- const colors_1 = require("../colors");
12
+ const colors_1 = require("../core/colors");
13
13
  /**
14
14
  * Parse a .env file content into key-value pairs.
15
15
  * Follows dotenv parsing rules:
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/shared/env.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,6CAA6C;;AAkB7C,0CA0CC;AAWD,4CAsBC;AASD,gDAMC;AAQD,gCAeC;;AAjID,+CAAyB;AACzB,mDAA6B;AAC7B,2CAAmC;AAEnC;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,gCAAgC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,0EAA0E;QAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAG,KAAK,CAAC;YAE5B,uBAAuB;YACvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,kDAAkD;YAClD,mEAAmE;YACnE,oDAAoD;YACpD,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,WAAW,GAAG,mBAAmB,CAAC;gBACxC,KAAK,GAAG,KAAK;qBACV,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;qBAC7B,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;qBACrB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;qBACrB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;qBACrB,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,EACxB,OAAO,GAAG,MAAM,EAChB,YAAY,GAAG,YAAY;IAE3B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,sBAAsB;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,mCAAmC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,GAA2B,EAAE,QAAQ,GAAG,KAAK;IAC9E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QAEtC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CACT,GAAG,IAAA,UAAC,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,KAAK,wBAAwB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,kBAAkB,CACtG,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,UAAC,EAAC,QAAQ,EAAE,OAAO,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC","sourcesContent":["// file: libs/cli/src/shared/env.ts\n// CLI-specific environment loading utilities\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { c } from '../core/colors';\n\n/**\n * Parse a .env file content into key-value pairs.\n * Follows dotenv parsing rules:\n * - Supports KEY=value format\n * - Supports quoted values (single and double quotes)\n * - Supports # comments\n * - Trims whitespace\n * - Expands escape sequences in double-quoted values (\\n, \\r, \\t)\n *\n * @param content - Raw content of a .env file\n * @returns Record of key-value pairs\n */\nexport function parseEnvContent(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n const lines = content.split('\\n');\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Skip empty lines and comments\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n // Match KEY=value pattern (KEY can contain letters, numbers, underscores)\n const match = trimmed.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=(.*)$/);\n if (match) {\n const key = match[1];\n let value = match[2].trim();\n const originalValue = value;\n\n // Handle quoted values\n if ((value.startsWith('\"') && value.endsWith('\"')) || (value.startsWith(\"'\") && value.endsWith(\"'\"))) {\n value = value.slice(1, -1);\n }\n\n // Expand escape sequences in double-quoted values\n // Order matters: handle double-backslash first (as a placeholder),\n // then other escapes, then convert placeholder back\n if (originalValue.startsWith('\"')) {\n const PLACEHOLDER = '\\x00BACKSLASH\\x00';\n value = value\n .replace(/\\\\\\\\/g, PLACEHOLDER)\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(new RegExp(PLACEHOLDER, 'g'), '\\\\');\n }\n\n result[key] = value;\n }\n }\n\n return result;\n}\n\n/**\n * Load environment variables from .env files (synchronous).\n * Follows NestJS-style priority: .env.local overrides .env\n *\n * @param basePath - Base directory to resolve files from\n * @param envPath - Path to base .env file (relative to basePath)\n * @param localEnvPath - Path to local override file (relative to basePath)\n * @returns Record of merged environment variables\n */\nexport function loadEnvFilesSync(\n basePath = process.cwd(),\n envPath = '.env',\n localEnvPath = '.env.local',\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n // Load base .env file\n const envFile = path.resolve(basePath, envPath);\n if (fs.existsSync(envFile)) {\n const content = fs.readFileSync(envFile, 'utf8');\n Object.assign(result, parseEnvContent(content));\n }\n\n // Load .env.local (overrides base)\n const localFile = path.resolve(basePath, localEnvPath);\n if (fs.existsSync(localFile)) {\n const content = fs.readFileSync(localFile, 'utf8');\n Object.assign(result, parseEnvContent(content));\n }\n\n return result;\n}\n\n/**\n * Populate process.env with loaded values.\n * By default, does not override existing values.\n *\n * @param env - Environment variables to populate\n * @param override - Whether to override existing values (default: false)\n */\nexport function populateProcessEnv(env: Record<string, string>, override = false): void {\n for (const [key, value] of Object.entries(env)) {\n if (override || process.env[key] === undefined) {\n process.env[key] = value;\n }\n }\n}\n\n/**\n * Load environment variables for development.\n * Logs the number of loaded variables.\n *\n * @param cwd - Current working directory\n */\nexport function loadDevEnv(cwd: string): void {\n try {\n const env = loadEnvFilesSync(cwd, '.env', '.env.local');\n const count = Object.keys(env).length;\n\n if (count > 0) {\n populateProcessEnv(env, false);\n console.log(\n `${c('cyan', '[dev]')} loaded ${count} environment variable${count === 1 ? '' : 's'} from .env files`,\n );\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n console.warn(`${c('yellow', '[dev]')} warning: failed to load .env files: ${message}`);\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // file: libs/cli/src/utils/fs.ts
2
+ // file: libs/cli/src/shared/fs.ts
3
3
  // CLI-specific file system utilities
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.fsp = void 0;
@@ -8,7 +8,7 @@ const tslib_1 = require("tslib");
8
8
  const path = tslib_1.__importStar(require("path"));
9
9
  const fs_1 = require("fs");
10
10
  Object.defineProperty(exports, "fsp", { enumerable: true, get: function () { return fs_1.promises; } });
11
- const colors_1 = require("../colors");
11
+ const colors_1 = require("../core/colors");
12
12
  const utils_1 = require("@frontmcp/utils");
13
13
  function tryCandidates(base) {
14
14
  const exts = ['', '.ts', '.tsx', '.js', '.mjs', '.cjs'];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/shared/fs.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,qCAAqC;;;AAgBrC,oCAsCC;;AApDD,mDAA6B;AAC7B,2BAAqC;AAqD5B,oFArDY,aAAG,OAqDZ;AApDZ,2CAAmC;AACnC,2CAAuD;AAEvD,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,QAAiB;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,MAAM,IAAA,kBAAU,EAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,MAAM,IAAA,kBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAA,gBAAQ,EAAoB,OAAO,CAAC,CAAC;QACvD,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC/B,IAAI,MAAM,IAAA,kBAAU,EAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC9B,IAAI,MAAM,IAAA,kBAAU,EAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,IAAI,MAAM,IAAA,kBAAU,EAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEhD,MAAM,GAAG,GAAG;QACV,IAAA,UAAC,EAAC,KAAK,EAAE,sBAAsB,CAAC;QAChC,EAAE;QACF,eAAe;QACf,OAAO,OAAO,4BAA4B;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;QACrC,EAAE;QACF,+EAA+E;QAC/E,+BAA+B;QAC/B,oCAAoC;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC","sourcesContent":["// file: libs/cli/src/shared/fs.ts\n// CLI-specific file system utilities\n\nimport * as path from 'path';\nimport { promises as fsp } from 'fs';\nimport { c } from '../core/colors';\nimport { fileExists, readJSON } from '@frontmcp/utils';\n\nfunction tryCandidates(base: string): string[] {\n const exts = ['', '.ts', '.tsx', '.js', '.mjs', '.cjs'];\n return exts.map((ext) => base + ext);\n}\n\n/**\n * Resolve entry file for CLI commands.\n * CLI-specific: includes colored error messages and CLI usage hints.\n */\nexport async function resolveEntry(cwd: string, explicit?: string): Promise<string> {\n if (explicit) {\n const full = path.resolve(cwd, explicit);\n if (await fileExists(full)) return full;\n throw new Error(`Entry override not found: ${explicit}`);\n }\n\n const pkgPath = path.join(cwd, 'package.json');\n if (await fileExists(pkgPath)) {\n const pkg = await readJSON<{ main?: string }>(pkgPath);\n if (pkg && typeof pkg.main === 'string' && pkg.main.trim()) {\n const mainCandidates = tryCandidates(path.resolve(cwd, pkg.main));\n for (const p of mainCandidates) {\n if (await fileExists(p)) return p;\n }\n const asDir = path.resolve(cwd, pkg.main);\n const idxCandidates = tryCandidates(path.join(asDir, 'index'));\n for (const p of idxCandidates) {\n if (await fileExists(p)) return p;\n }\n }\n }\n\n const fallback = path.join(cwd, 'src', 'main.ts');\n if (await fileExists(fallback)) return fallback;\n\n const msg = [\n c('red', 'No entry file found.'),\n '',\n 'I looked for:',\n ` • ${pkgPath} with a valid \"main\" field`,\n ` • ${path.relative(cwd, fallback)}`,\n '',\n 'Please create an entry file (e.g. src/main.ts) or set \"main\" in package.json,',\n 'or run with an explicit path:',\n ` frontmcp dev --entry src/main.ts`,\n ].join('\\n');\n throw new Error(msg);\n}\n\nexport { fsp }; // re-export if needed in other modules\n"]}
@@ -0,0 +1,3 @@
1
+ export { parseEnvContent, loadEnvFilesSync, populateProcessEnv, loadDevEnv } from './env';
2
+ export { resolveEntry, fsp } from './fs';
3
+ export { clack } from './prompts';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clack = exports.fsp = exports.resolveEntry = exports.loadDevEnv = exports.populateProcessEnv = exports.loadEnvFilesSync = exports.parseEnvContent = void 0;
4
+ var env_1 = require("./env");
5
+ Object.defineProperty(exports, "parseEnvContent", { enumerable: true, get: function () { return env_1.parseEnvContent; } });
6
+ Object.defineProperty(exports, "loadEnvFilesSync", { enumerable: true, get: function () { return env_1.loadEnvFilesSync; } });
7
+ Object.defineProperty(exports, "populateProcessEnv", { enumerable: true, get: function () { return env_1.populateProcessEnv; } });
8
+ Object.defineProperty(exports, "loadDevEnv", { enumerable: true, get: function () { return env_1.loadDevEnv; } });
9
+ var fs_1 = require("./fs");
10
+ Object.defineProperty(exports, "resolveEntry", { enumerable: true, get: function () { return fs_1.resolveEntry; } });
11
+ Object.defineProperty(exports, "fsp", { enumerable: true, get: function () { return fs_1.fsp; } });
12
+ var prompts_1 = require("./prompts");
13
+ Object.defineProperty(exports, "clack", { enumerable: true, get: function () { return prompts_1.clack; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/index.ts"],"names":[],"mappings":";;;AAAA,6BAA0F;AAAjF,sGAAA,eAAe,OAAA;AAAE,uGAAA,gBAAgB,OAAA;AAAE,yGAAA,kBAAkB,OAAA;AAAE,iGAAA,UAAU,OAAA;AAC1E,2BAAyC;AAAhC,kGAAA,YAAY,OAAA;AAAE,yFAAA,GAAG,OAAA;AAC1B,qCAAkC;AAAzB,gGAAA,KAAK,OAAA","sourcesContent":["export { parseEnvContent, loadEnvFilesSync, populateProcessEnv, loadDevEnv } from './env';\nexport { resolveEntry, fsp } from './fs';\nexport { clack } from './prompts';\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/shared/prompts.ts"],"names":[],"mappings":";;AASA,sBAGC;AAZD;;;;;;GAMG;AACH,IAAI,EAA+C,CAAC;AAE7C,KAAK,UAAU,KAAK;IACzB,IAAI,CAAC,EAAE;QAAE,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC;AACZ,CAAC","sourcesContent":["/**\n * Lazy-loader for @clack/prompts (ESM-only package).\n *\n * The CLI compiles as CJS, so a static `import` would compile to `require()`\n * and fail at runtime. This helper uses a dynamic `await import()` and caches\n * the module after first load.\n */\nlet _p: typeof import('@clack/prompts') | undefined;\n\nexport async function clack(): Promise<typeof import('@clack/prompts')> {\n if (!_p) _p = await import('@clack/prompts');\n return _p;\n}\n"]}
package/src/args.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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","sourcesContent":["export type Command =\n | 'dev'\n | 'build'\n | 'init'\n | 'doctor'\n | 'inspector'\n | 'create'\n | 'help'\n | 'template'\n | 'version'\n | 'test'\n | 'socket'\n // Process Manager commands\n | 'start'\n | 'stop'\n | 'restart'\n | 'status'\n | 'list'\n | 'logs'\n | 'service'\n // Package Manager commands\n | 'install'\n | 'uninstall'\n | 'configure';\n\nexport type DeploymentAdapter = 'node' | 'vercel' | 'lambda' | 'cloudflare';\nexport type RedisSetupOption = 'docker' | 'existing' | 'none';\nexport type PackageManagerOption = 'npm' | 'yarn' | 'pnpm';\n\nexport interface ParsedArgs {\n _: string[];\n outDir?: string;\n entry?: string;\n help?: boolean;\n runInBand?: boolean;\n watch?: boolean;\n verbose?: boolean;\n timeout?: number;\n coverage?: boolean;\n adapter?: DeploymentAdapter;\n // Create command flags\n yes?: boolean;\n target?: DeploymentAdapter;\n redis?: RedisSetupOption;\n cicd?: boolean;\n pm?: PackageManagerOption;\n // Socket command flags\n socket?: string;\n db?: string;\n background?: boolean;\n // Build --exec flag\n exec?: boolean;\n // Process Manager flags\n port?: number;\n force?: boolean;\n maxRestarts?: number;\n follow?: boolean;\n lines?: number;\n // Install flags\n registry?: string;\n // Create --nx flag\n nx?: boolean;\n}\n\nexport function parseArgs(argv: string[]): ParsedArgs {\n const out: ParsedArgs = { _: [] };\n for (let i = 0; i < argv.length; i++) {\n const a = argv[i];\n if (a === '--out-dir' || a === '-o') out.outDir = argv[++i];\n else if (a === '--entry' || a === '-e') out.entry = argv[++i];\n else if (a === '--adapter' || a === '-a') out.adapter = argv[++i] as DeploymentAdapter;\n else if (a === '--help' || a === '-h') out.help = true;\n else if (a === '--runInBand' || a === '-i') out.runInBand = true;\n else if (a === '--watch' || a === '-w') out.watch = true;\n else if (a === '--verbose' || a === '-v') out.verbose = true;\n else if (a === '--timeout' || a === '-t') {\n const parsed = parseInt(argv[++i], 10);\n out.timeout = Number.isNaN(parsed) ? undefined : parsed;\n } else if (a === '--coverage' || a === '-c') out.coverage = true;\n // Create command flags\n else if (a === '--yes' || a === '-y') out.yes = true;\n else if (a === '--target') out.target = argv[++i] as DeploymentAdapter;\n else if (a === '--redis') out.redis = argv[++i] as RedisSetupOption;\n else if (a === '--cicd') out.cicd = true;\n else if (a === '--no-cicd') out.cicd = false;\n else if (a === '--pm') out.pm = argv[++i] as PackageManagerOption;\n // Socket command flags\n else if (a === '--socket' || a === '-s') out.socket = argv[++i];\n else if (a === '--db') out.db = argv[++i];\n else if (a === '--background' || a === '-b') out.background = true;\n // Build --exec flag\n else if (a === '--exec') out.exec = true;\n // Process Manager flags\n else if (a === '--port' || a === '-p') {\n const parsed = parseInt(argv[++i], 10);\n out.port = Number.isNaN(parsed) ? undefined : parsed;\n } else if (a === '--force' || a === '-f') out.force = true;\n else if (a === '--max-restarts') {\n const parsed = parseInt(argv[++i], 10);\n out.maxRestarts = Number.isNaN(parsed) ? undefined : parsed;\n } else if (a === '--follow' || a === '-F') out.follow = true;\n else if (a === '--lines' || a === '-n') {\n const parsed = parseInt(argv[++i], 10);\n out.lines = Number.isNaN(parsed) ? undefined : parsed;\n }\n // Create --nx flag\n else if (a === '--nx') out.nx = true;\n // Install flags\n else if (a === '--registry') out.registry = argv[++i];\n else out._.push(a);\n }\n return out;\n}\n"]}
package/src/cli.d.ts DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * frontmcp - FrontMCP command line interface
4
- */
5
- export {};