@fnet/cli 0.133.0 → 1.0.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 (182) hide show
  1. package/dist/fbin/index.js +14 -1
  2. package/dist/fnet/index.0jcm9pn5.js +1 -0
  3. package/dist/fnet/index.2084z2ed.js +2 -0
  4. package/dist/fnet/index.33f1ggpr.js +1 -0
  5. package/dist/fnet/index.3exge2js.js +1 -0
  6. package/dist/fnet/index.3kfx538h.js +1 -0
  7. package/dist/fnet/index.490y87nc.js +1 -0
  8. package/dist/fnet/index.4g9yezkq.js +1 -0
  9. package/dist/fnet/index.4jkat7r4.js +1 -0
  10. package/dist/fnet/index.7crx8ky1.js +1 -0
  11. package/dist/fnet/index.7vw06nrn.js +1 -0
  12. package/dist/fnet/index.9567fa9x.js +1 -0
  13. package/dist/fnet/index.gh75wt1m.js +1 -0
  14. package/dist/fnet/index.hzsfswvp.js +1 -0
  15. package/dist/fnet/index.jgpc3grc.js +1 -0
  16. package/dist/fnet/index.js +19 -1
  17. package/dist/fnet/index.p0zb7e1b.js +1 -0
  18. package/dist/fnet/index.r19p3bpa.js +2 -0
  19. package/dist/fnet/index.r82rtnmz.js +1 -0
  20. package/dist/fnet/index.s662t98v.js +1 -0
  21. package/dist/fnet/index.w74dpnpn.js +1 -0
  22. package/dist/fnet/index.xeaw5xa9.js +1 -0
  23. package/dist/fnet/index.zm4kesg6.js +1 -0
  24. package/dist/fnode/index.05n3mvs9.js +2 -0
  25. package/dist/fnode/index.2hc9tbyx.js +1 -0
  26. package/dist/fnode/index.2pnjg6dc.js +1 -0
  27. package/dist/fnode/index.9qgtmxq3.js +2 -0
  28. package/dist/fnode/index.b1q7y05p.js +1 -0
  29. package/dist/fnode/index.bhapgrs7.js +1 -0
  30. package/dist/fnode/index.cvxrf34y.js +2 -0
  31. package/dist/fnode/index.dp9wyahp.js +1 -0
  32. package/dist/fnode/index.eqxmcpdc.js +1 -0
  33. package/dist/fnode/index.f2tb0x3t.js +1 -0
  34. package/dist/fnode/index.fbzv6wwf.js +1 -0
  35. package/dist/fnode/index.gazd9raq.js +1 -0
  36. package/dist/fnode/index.hv4s25f0.js +3 -0
  37. package/dist/fnode/index.j5z7dtsx.js +1 -0
  38. package/dist/fnode/index.js +9 -1
  39. package/dist/fnode/index.kb4e4bxf.js +1 -0
  40. package/dist/fnode/index.qn0schqp.js +1 -0
  41. package/dist/fnode/index.rht29phd.js +1 -0
  42. package/dist/fnode/index.rzsfmek6.js +3 -0
  43. package/dist/fnode/index.s0nk6cv8.js +4 -0
  44. package/dist/fnode/index.s66v6wt4.js +1 -0
  45. package/dist/fnode/index.sv7v0y60.js +1 -0
  46. package/dist/fnode/index.tgkhgnrp.js +1 -0
  47. package/dist/fnode/index.vq706f75.js +1 -0
  48. package/dist/fnode/index.y8pvdcny.js +1 -0
  49. package/dist/fnode/index.z4vz93ww.js +1 -0
  50. package/dist/frun/index.js +1 -1
  51. package/dist/fservice/index.js +18 -1
  52. package/dist/fservice/index.q01yvaz0.js +2 -0
  53. package/package.json +21 -18
  54. package/readme.md +62 -15
  55. package/template/fnet/core/object.js +10 -10
  56. package/template/fnet/node/package.json.njk +6 -3
  57. package/template/fnet/node/src/cli/index.js.njk +5 -315
  58. package/template/fnet/node/src/cli/index.js.v1.njk +318 -0
  59. package/template/fnet/node/src/cli/v2/core/args-parser.njk +10 -0
  60. package/template/fnet/node/src/cli/v2/core/imports.njk +31 -0
  61. package/template/fnet/node/src/cli/v2/core/run-wrapper.njk +25 -0
  62. package/template/fnet/node/src/cli/v2/index.js.njk +184 -0
  63. package/template/fnet/node/src/cli/v2/modes/default/extend.njk +11 -0
  64. package/template/fnet/node/src/cli/v2/modes/default/standard.njk +20 -0
  65. package/template/fnet/node/src/cli/v2/modes/http/builtin.njk +66 -0
  66. package/template/fnet/node/src/cli/v2/modes/http/imports.njk +9 -0
  67. package/template/fnet/node/src/cli/v2/modes/http/index.njk +12 -0
  68. package/template/fnet/node/src/cli/v2/modes/mcp/imports.njk +33 -0
  69. package/template/fnet/node/src/cli/v2/modes/mcp/index.njk +30 -0
  70. package/template/fnet/node/src/cli/v2/modes/mcp/server-setup.njk +15 -0
  71. package/template/fnet/node/src/cli/v2/modes/mcp/tool-handlers.njk +46 -0
  72. package/template/fnet/node/src/cli/v2/modes/mcp/transport-http.njk +222 -0
  73. package/template/fnet/node/src/cli/v2/modes/mcp/transport-stdio.njk +9 -0
  74. package/template/fnet/node/src/cli/v2/modes/pipeline/imports.njk +9 -0
  75. package/template/fnet/node/src/cli/v2/modes/pipeline/index.njk +113 -0
  76. package/template/fnet/node/src/cli/v2/modes/webhook/imports.njk +9 -0
  77. package/template/fnet/node/src/cli/v2/modes/webhook/index.njk +127 -0
  78. package/template/fnet/node/src/cli/v2/modes/websocket/imports.njk +15 -0
  79. package/template/fnet/node/src/cli/v2/modes/websocket/index.njk +104 -0
  80. package/template/fnet/node/src/default/blocks/assign.js.njk +10 -48
  81. package/template/fnet/node/src/default/blocks/call.js.njk +110 -156
  82. package/template/fnet/node/src/default/blocks/for.js.njk +58 -74
  83. package/template/fnet/node/src/default/blocks/form.js.njk +21 -59
  84. package/template/fnet/node/src/default/blocks/http.js.njk +135 -0
  85. package/template/fnet/node/src/default/blocks/modules.js.njk +10 -52
  86. package/template/fnet/node/src/default/blocks/new.js.njk +40 -85
  87. package/template/fnet/node/src/default/blocks/next.js.njk +10 -32
  88. package/template/fnet/node/src/default/blocks/output.js.njk +10 -48
  89. package/template/fnet/node/src/default/blocks/parallel.js.njk +64 -0
  90. package/template/fnet/node/src/default/blocks/pipeline.js.njk +109 -0
  91. package/template/fnet/node/src/default/blocks/raise.js.njk +9 -25
  92. package/template/fnet/node/src/default/blocks/retry.js.njk +70 -0
  93. package/template/fnet/node/src/default/blocks/return.js.njk +13 -25
  94. package/template/fnet/node/src/default/blocks/schedule.js.njk +66 -0
  95. package/template/fnet/node/src/default/blocks/signal.js.njk +10 -32
  96. package/template/fnet/node/src/default/blocks/steps.js.njk +32 -48
  97. package/template/fnet/node/src/default/blocks/switch.js.njk +37 -67
  98. package/template/fnet/node/src/default/blocks/tryexcept.js.njk +58 -52
  99. package/template/fnet/node/src/default/blocks/wait.js.njk +10 -30
  100. package/template/fnet/node/src/default/input.args.js.njk +5 -2
  101. package/template/fnet/node/src/default/macros/block-body-header.js.njk +1 -1
  102. package/template/fnet/node/src/default/macros/block-header.js.njk +0 -3
  103. package/template/fnet/node/src/default/macros/block-next.js.njk +1 -1
  104. package/template/fnet/node/src/default/macros/block-run-footer.js.njk +1 -1
  105. package/template/fnet/node/src/default/macros/block-run-header.js.njk +14 -2
  106. package/template/fnet/node/src/default/macros/page.js.njk +1 -1
  107. package/template/fnet/node/src/default/types/block.js.njk +133 -0
  108. package/template/fnet/node/src/default/workflow.js.njk +8 -6
  109. package/template/fnode/node/package.json.njk +5 -4
  110. package/template/fnode/node/src/cli/index.js.njk +3 -397
  111. package/template/fnode/node/src/cli/index.js.v1.njk +464 -0
  112. package/template/fnode/node/src/cli/v2/core/args-parser.njk +10 -0
  113. package/template/fnode/node/src/cli/v2/core/imports.njk +29 -0
  114. package/template/fnode/node/src/cli/v2/core/run-wrapper.njk +25 -0
  115. package/template/fnode/node/src/cli/v2/index.js.njk +184 -0
  116. package/template/fnode/node/src/cli/v2/modes/default/extend.njk +11 -0
  117. package/template/fnode/node/src/cli/v2/modes/default/standard.njk +19 -0
  118. package/template/fnode/node/src/cli/v2/modes/http/builtin.njk +61 -0
  119. package/template/fnode/node/src/cli/v2/modes/http/imports.njk +9 -0
  120. package/template/fnode/node/src/cli/v2/modes/http/index.njk +12 -0
  121. package/template/fnode/node/src/cli/v2/modes/mcp/imports.njk +33 -0
  122. package/template/fnode/node/src/cli/v2/modes/mcp/index.njk +30 -0
  123. package/template/fnode/node/src/cli/v2/modes/mcp/server-setup.njk +15 -0
  124. package/template/fnode/node/src/cli/v2/modes/mcp/tool-handlers.njk +41 -0
  125. package/template/fnode/node/src/cli/v2/modes/mcp/transport-http.njk +212 -0
  126. package/template/fnode/node/src/cli/v2/modes/mcp/transport-stdio.njk +9 -0
  127. package/template/fnode/node/src/cli/v2/modes/pipeline/imports.njk +9 -0
  128. package/template/fnode/node/src/cli/v2/modes/pipeline/index.njk +103 -0
  129. package/template/fnode/node/src/cli/v2/modes/webhook/imports.njk +9 -0
  130. package/template/fnode/node/src/cli/v2/modes/webhook/index.njk +122 -0
  131. package/template/fnode/node/src/cli/v2/modes/websocket/imports.njk +15 -0
  132. package/template/fnode/node/src/cli/v2/modes/websocket/index.njk +99 -0
  133. package/template/fnode/node/src/default/input.args.js.njk +6 -2
  134. package/dist/fnet/index.-SGbq2cI.js +0 -1
  135. package/dist/fnet/index.B5XE4ChJ.js +0 -1
  136. package/dist/fnet/index.Bft2w7m3.js +0 -1
  137. package/dist/fnet/index.BuYxdKtK.js +0 -1
  138. package/dist/fnet/index.C0YpfQ5j.js +0 -1
  139. package/dist/fnet/index.C2S9JYhS.js +0 -1
  140. package/dist/fnet/index.C7saWH6d.js +0 -1
  141. package/dist/fnet/index.CDct_kkF.js +0 -1
  142. package/dist/fnet/index.CMC8mlye.js +0 -1
  143. package/dist/fnet/index.CmMM-Ek9.js +0 -1
  144. package/dist/fnet/index.CuMyez3E.js +0 -1
  145. package/dist/fnet/index.CzAV0S36.js +0 -1
  146. package/dist/fnet/index.D2N9YZmA.js +0 -1
  147. package/dist/fnet/index.D3p7pncT.js +0 -1
  148. package/dist/fnet/index.DG8TqL-1.js +0 -1
  149. package/dist/fnet/index.DI3yyTtl.js +0 -1
  150. package/dist/fnet/index.DOYkqsYT.js +0 -1
  151. package/dist/fnet/index.DWpw12No.js +0 -1
  152. package/dist/fnet/index.DrwlOzAe.js +0 -1
  153. package/dist/fnet/index.Q-CYRcna.js +0 -1
  154. package/dist/fnet/index.W6RYgypK.js +0 -1
  155. package/dist/fnet/index.xd8c7XMr.js +0 -1
  156. package/dist/fnode/index.-SGbq2cI.js +0 -1
  157. package/dist/fnode/index.B5XE4ChJ.js +0 -1
  158. package/dist/fnode/index.B8gal9up.js +0 -1
  159. package/dist/fnode/index.BU1440aO.js +0 -1
  160. package/dist/fnode/index.BcGYSPne.js +0 -1
  161. package/dist/fnode/index.Bft2w7m3.js +0 -1
  162. package/dist/fnode/index.BuYxdKtK.js +0 -1
  163. package/dist/fnode/index.C2S9JYhS.js +0 -1
  164. package/dist/fnode/index.C7saWH6d.js +0 -1
  165. package/dist/fnode/index.CDct_kkF.js +0 -1
  166. package/dist/fnode/index.CMC8mlye.js +0 -1
  167. package/dist/fnode/index.CmMM-Ek9.js +0 -1
  168. package/dist/fnode/index.CuMyez3E.js +0 -1
  169. package/dist/fnode/index.CzAV0S36.js +0 -1
  170. package/dist/fnode/index.D2N9YZmA.js +0 -1
  171. package/dist/fnode/index.D3p7pncT.js +0 -1
  172. package/dist/fnode/index.DG8TqL-1.js +0 -1
  173. package/dist/fnode/index.DI3yyTtl.js +0 -1
  174. package/dist/fnode/index.DWpw12No.js +0 -1
  175. package/dist/fnode/index.DrwlOzAe.js +0 -1
  176. package/dist/fnode/index.N_a5FdgA.js +0 -1
  177. package/dist/fnode/index.Q-CYRcna.js +0 -1
  178. package/dist/fnode/index.UNoFg95r.js +0 -1
  179. package/dist/fnode/index.W6RYgypK.js +0 -1
  180. package/dist/fnode/index.xd8c7XMr.js +0 -1
  181. package/template/fnet/core/print.js +0 -1
  182. package/template/fnet/node/src/default/macros/workflow-header.js.njk +0 -7
@@ -1,403 +1,9 @@
1
1
  {% if atom.doc.features.cli.enabled===true %}
2
2
 
3
- {# Define macros for reusable code blocks #}
4
- {% macro importMcpDependencies(format) %}
5
- {% if format === 'esm' %}
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
- import { ListToolsRequestSchema, CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
- import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
10
- import express from "express";
3
+ {% if atom.doc.features.cli.template.version ==='v1' %}
4
+ {% include "./index.js.v1.njk" %}
11
5
  {% else %}
12
- const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
13
- const { ListToolsRequestSchema, CallToolRequestSchema } = require("@modelcontextprotocol/sdk/types.js");
14
- const { StdioServerTransport } = require("@modelcontextprotocol/sdk/server/stdio.js");
15
- const { StreamableHTTPServerTransport } = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
16
- const express = require("express");
6
+ {% include "./v2/index.js.njk" %}
17
7
  {% endif %}
18
- {% endmacro %}
19
-
20
- {% macro mcpModeCode(nodeFn) %}
21
- if (cliMode === 'mcp') {
22
- // MCP mode code
23
- const server = new Server({
24
- name: "{{atom.doc.features.cli.mcp.name or atom.doc.name}}",
25
- version: "{{atom.doc.version or '0.0.1'}}"
26
- }, {
27
- capabilities: {
28
- tools: {}
29
- }
30
- });
31
-
32
- // Define available tools
33
- server.setRequestHandler(ListToolsRequestSchema, async () => {
34
- return {
35
- tools: [{
36
- name: "{{atom.doc.features.cli.mcp.tool.name or atom.doc.name}}",
37
- description: "{{atom.doc.features.cli.mcp.tool.description or atom.doc.description}}",
38
- inputSchema: inputSchema
39
- }]
40
- };
41
- });
42
-
43
- // Handle tool execution
44
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
45
- if (request.params.name === "{{atom.doc.features.cli.mcp.tool.name or atom.doc.name}}") {
46
- try {
47
- const result = await {{ nodeFn }}(request.params.arguments);
48
- return {
49
- content: [{
50
- type: "text",
51
- text: JSON.stringify(result)
52
- }]
53
- };
54
- } catch (error) {
55
- return {
56
- content: [{
57
- type: "text",
58
- text: `Error: ${error.message}`
59
- }],
60
- isError: true
61
- };
62
- }
63
- }
64
- throw new Error("Tool not found");
65
- });
66
-
67
- // Get transport type from arguments
68
- const transportType = args['mcp-transport'] || args.mcp_transport || 'stdio';
69
- let transport;
70
-
71
- if (transportType === 'stdio') {
72
- // Use stdio transport
73
- transport = new StdioServerTransport();
74
- } else if (transportType === 'http') {
75
- // Use Streamable HTTP transport (official transport as of MCP 2025-03-26)
76
- const app = express();
77
- app.use(express.json());
78
-
79
- const port = args['cli-port'] || args.cli_port || 3000;
80
- const host = args['cli-host'] || args.cli_host || '0.0.0.0';
81
- const mcpEndpoint = '/mcp';
82
- const verbose = args['cli-verbose'] || args.cli_verbose || false;
83
-
84
- // Verbose logging helper
85
- const log = (...args) => {
86
- if (verbose) {
87
- console.log('[MCP]', new Date().toISOString(), ...args);
88
- }
89
- };
90
-
91
- // Map to store transports by session ID
92
- const transports = {};
93
-
94
- // Handle POST requests for client-to-server communication
95
- app.post(mcpEndpoint, async (req, res) => {
96
- // Check for existing session ID
97
- const sessionId = req.get('Mcp-Session-Id');
98
-
99
- log('POST request received');
100
- log('Session ID:', sessionId || 'none');
101
- log('Request body:', JSON.stringify(req.body, null, 2));
102
-
103
- let transport;
104
-
105
- if (sessionId && transports[sessionId]) {
106
- // Reuse existing transport
107
- log('Reusing existing transport for session:', sessionId);
108
- transport = transports[sessionId];
109
- } else if (!sessionId && req.body && (req.body.method === 'initialize' ||
110
- (Array.isArray(req.body) && req.body.some(item => item.method === 'initialize')))) {
111
- // New initialization request
112
- log('Creating new transport for initialization');
113
- transport = new StreamableHTTPServerTransport({
114
- sessionIdGenerator: () => {
115
- // Generate cryptographically secure session ID
116
- return require('crypto').randomBytes(16).toString('hex');
117
- },
118
- onsessioninitialized: (sessionId) => {
119
- // Store the transport by session ID
120
- log('Session initialized:', sessionId);
121
- transports[sessionId] = transport;
122
- }
123
- });
124
-
125
- // Clean up transport when closed
126
- transport.onclose = () => {
127
- if (transport.sessionId) {
128
- log('Transport closed, cleaning up session:', transport.sessionId);
129
- delete transports[transport.sessionId];
130
- }
131
- };
132
-
133
- // Connect to the MCP server
134
- await server.connect(transport);
135
- log('Server connected to transport');
136
- } else {
137
- // Invalid request
138
- log('Invalid request - no valid session ID');
139
- return res.status(400).json({
140
- jsonrpc: '2.0',
141
- error: {
142
- code: -32000,
143
- message: 'Bad Request: No valid session ID provided'
144
- },
145
- id: null
146
- });
147
- }
148
-
149
- // Handle the request
150
- log('Handling request with transport');
151
- await transport.handleRequest(req, res, req.body);
152
- });
153
-
154
- // Reusable handler for GET and DELETE requests
155
- const handleSessionRequest = async (req, res) => {
156
- const sessionId = req.get('Mcp-Session-Id');
157
- log(`${req.method} request received for session:`, sessionId || 'none');
158
-
159
- if (!sessionId || !transports[sessionId]) {
160
- log('Invalid or missing session ID');
161
- return res.status(400).send('Invalid or missing session ID');
162
- }
163
-
164
- const transport = transports[sessionId];
165
- log('Handling request with existing transport');
166
- await transport.handleRequest(req, res);
167
- };
168
-
169
- // Handle GET requests for server-to-client notifications via SSE
170
- app.get(mcpEndpoint, handleSessionRequest);
171
-
172
- // Handle DELETE requests for session termination
173
- app.delete(mcpEndpoint, handleSessionRequest);
174
-
175
- app.listen(port, host, () => {
176
- console.log(`MCP server started with Streamable HTTP transport`);
177
- console.log(`Endpoint: http://${host}:${port}${mcpEndpoint}`);
178
- console.log(`Listening on ${host}:${port}`);
179
- if (verbose) {
180
- console.log(`Verbose logging enabled`);
181
- }
182
- });
183
-
184
- return;
185
- } else {
186
- console.error(`Unknown MCP transport type: ${transportType}`);
187
- console.error(`Supported types: stdio, http`);
188
- process.exit(1);
189
- }
190
-
191
- await server.connect(transport);
192
- return;
193
- }
194
- {% endmacro %}
195
-
196
- {% macro httpModeCodeExpress(nodeFn) %}
197
- if (cliMode === 'http') {
198
- // HTTP mode code
199
- const app = express();
200
- app.use(express.json());
201
-
202
- app.post('/{{atom.doc.features.cli.http.path or atom.doc.name}}', async (req, res) => {
203
- try {
204
- const result = await {{ nodeFn }}(req.body);
205
- res.json(result);
206
- } catch (error) {
207
- res.status(500).json({ error: error.message });
208
- }
209
- });
210
-
211
- const port = args['cli-port'] || args.cli_port || 3000;
212
- app.listen(port, () => {
213
- console.log(`HTTP server started on port ${port}`);
214
- });
215
- return;
216
- }
217
- {% endmacro %}
218
-
219
- {% macro defaultModeExtend(nodeFn) %}
220
- if (cliMode === 'default') {
221
- // Default mode code
222
- return await {{ nodeFn }}(await argv());
223
- }
224
- {% endmacro %}
225
-
226
- {% macro defaultModeStandard(nodeFn) %}
227
- if (cliMode === 'default') {
228
- // Default mode code
229
- const result = await {{ nodeFn }}(await argv());
230
-
231
- if (typeof result !== 'undefined') {
232
- const stdout_format = args['stdout-format'] || args.stdout_format || null;
233
-
234
- if (stdout_format === 'json') console.log(JSON.stringify(result, null, 2));
235
- else console.log(result);
236
- }
237
- return;
238
- }
239
- {% endmacro %}
240
-
241
- {% macro runWithCatch() %}
242
- run()
243
- .catch((error) => {
244
- console.error(error.message);
245
- process.exit(1);
246
- });
247
- {% endmacro %}
248
-
249
- {% macro runWithThenCatch() %}
250
- run()
251
- .then(() => {
252
- {# process.exit(0); #}
253
- })
254
- .catch((error) => {
255
- console.error(error.message);
256
- process.exit(1);
257
- });
258
- {% endmacro %}
259
-
260
- {# Main template starts here #}
261
- {% if atom.doc.features.project.format==='esm' %}
262
-
263
- import argv from '../default/input.args.js';
264
- import { schema as inputSchema } from '../default/validate_input.js';
265
-
266
- {% if atom.doc.features.cli.extend===true %}
267
-
268
- import Node from '../../../cli';
269
-
270
- {% if atom.doc.features.cli.mcp.enabled===true %}
271
- {{ importMcpDependencies('esm') }}
272
- {% elif atom.doc.features.cli.http.enabled===true %}
273
- // Using express for HTTP mode
274
- import express from 'express';
275
- {% endif %}
276
- import argsParser from 'yargs-parser';
277
-
278
- const run = async () => {
279
- const args = argsParser(process.argv.slice(2));
280
- const cliMode = args['cli-mode'] || args.cli_mode || 'default';
281
-
282
- {{ defaultModeExtend('Node') }}
283
-
284
- {% if atom.doc.features.cli.mcp.enabled===true %}
285
- {{ mcpModeCode('Node') }}
286
- {% endif %}
287
-
288
- {% if atom.doc.features.cli.http.enabled===true %}
289
- {{ httpModeCodeBuiltIn('Node') }}
290
- {% endif %}
291
-
292
- console.error(`Unknown CLI mode: ${cliMode}`);
293
- process.exit(1);
294
- };
295
-
296
- {{ runWithThenCatch() }}
297
-
298
- {% else %}
299
- import Node from '../../../src';
300
-
301
- {% if atom.doc.features.cli.mcp.enabled===true %}
302
- {{ importMcpDependencies('esm') }}
303
- {% elif atom.doc.features.cli.http.enabled===true %}
304
- // Using express for HTTP mode
305
- import express from 'express';
306
- {% endif %}
307
-
308
- import argsParser from 'yargs-parser';
309
-
310
- const run = async () => {
311
- const args = argsParser(process.argv.slice(2));
312
- const cliMode = args['cli-mode'] || args.cli_mode || 'default';
313
-
314
- {{ defaultModeStandard('Node') }}
315
-
316
- {% if atom.doc.features.cli.mcp.enabled===true %}
317
- {{ mcpModeCode('Node') }}
318
- {% endif %}
319
-
320
- {% if atom.doc.features.cli.http.enabled===true %}
321
- {{ httpModeCodeExpress('Node') }}
322
- {% endif %}
323
-
324
- console.error(`Unknown CLI mode: ${cliMode}`);
325
- process.exit(1);
326
- };
327
-
328
- {{ runWithCatch() }}
329
- {% endif %}
330
-
331
- {% elif atom.doc.features.project.format==='cjs' %}
332
-
333
- const argv = require('../default/input.args.js');
334
-
335
- {% if atom.doc.features.cli.extend===true %}
336
-
337
- const Node = require('../../../cli');
338
-
339
- {% if atom.doc.features.cli.mcp.enabled===true %}
340
- {{ importMcpDependencies('cjs') }}
341
- {% elif atom.doc.features.cli.http.enabled===true %}
342
- // Using express for HTTP mode
343
- const express = require('express');
344
- {% endif %}
345
-
346
- const argsParser = require('yargs-parser');
347
-
348
- const run = async () => {
349
- const args = argsParser(process.argv.slice(2));
350
- const cliMode = args['cli-mode'] || args.cli_mode || 'default';
351
-
352
- {{ defaultModeExtend('Node') }}
353
-
354
- {% if atom.doc.features.cli.mcp.enabled===true %}
355
- {{ mcpModeCode('Node') }}
356
- {% endif %}
357
-
358
- {% if atom.doc.features.cli.http.enabled===true %}
359
- {{ httpModeCodeBuiltIn('Node') }}
360
- {% endif %}
361
-
362
- console.error(`Unknown CLI mode: ${cliMode}`);
363
- process.exit(1);
364
- };
365
-
366
- {{ runWithThenCatch() }}
367
-
368
- {% else %}
369
- const Node = require('../../../src');
370
-
371
- {% if atom.doc.features.cli.mcp.enabled===true %}
372
- {{ importMcpDependencies('cjs') }}
373
- {% elif atom.doc.features.cli.http.enabled===true %}
374
- // Using express for HTTP mode
375
- const express = require('express');
376
- {% endif %}
377
-
378
- const argsParser = require('yargs-parser');
379
-
380
- const run = async () => {
381
- const args = argsParser(process.argv.slice(2));
382
- const cliMode = args['cli-mode'] || args.cli_mode || 'default';
383
-
384
- {{ defaultModeStandard('Node') }}
385
-
386
- {% if atom.doc.features.cli.mcp.enabled===true %}
387
- {{ mcpModeCode('Node') }}
388
- {% endif %}
389
-
390
- {% if atom.doc.features.cli.http.enabled===true %}
391
- {{ httpModeCodeExpress('Node') }}
392
- {% endif %}
393
-
394
- console.error(`Unknown CLI mode: ${cliMode}`);
395
- process.exit(1);
396
- };
397
-
398
- {{ runWithCatch() }}
399
- {% endif %}
400
-
401
- {% endif %}
402
8
 
403
9
  {% endif %}