@workflow/cli 4.0.1-beta.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 (140) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +3 -0
  3. package/bin/run.js +5 -0
  4. package/dist/base.d.ts +8 -0
  5. package/dist/base.d.ts.map +1 -0
  6. package/dist/base.js +14 -0
  7. package/dist/base.js.map +1 -0
  8. package/dist/commands/build.d.ts +14 -0
  9. package/dist/commands/build.d.ts.map +1 -0
  10. package/dist/commands/build.js +78 -0
  11. package/dist/commands/build.js.map +1 -0
  12. package/dist/commands/cancel.d.ts +25 -0
  13. package/dist/commands/cancel.d.ts.map +1 -0
  14. package/dist/commands/cancel.js +30 -0
  15. package/dist/commands/cancel.js.map +1 -0
  16. package/dist/commands/dev.d.ts +11 -0
  17. package/dist/commands/dev.d.ts.map +1 -0
  18. package/dist/commands/dev.js +34 -0
  19. package/dist/commands/dev.js.map +1 -0
  20. package/dist/commands/init.d.ts +11 -0
  21. package/dist/commands/init.d.ts.map +1 -0
  22. package/dist/commands/init.js +42 -0
  23. package/dist/commands/init.js.map +1 -0
  24. package/dist/commands/inspect.d.ts +31 -0
  25. package/dist/commands/inspect.d.ts.map +1 -0
  26. package/dist/commands/inspect.js +209 -0
  27. package/dist/commands/inspect.js.map +1 -0
  28. package/dist/commands/start.d.ts +26 -0
  29. package/dist/commands/start.d.ts.map +1 -0
  30. package/dist/commands/start.js +43 -0
  31. package/dist/commands/start.js.map +1 -0
  32. package/dist/commands/validate.d.ts +12 -0
  33. package/dist/commands/validate.d.ts.map +1 -0
  34. package/dist/commands/validate.js +45 -0
  35. package/dist/commands/validate.js.map +1 -0
  36. package/dist/lib/builders/apply-swc-transform.d.ts +24 -0
  37. package/dist/lib/builders/apply-swc-transform.d.ts.map +1 -0
  38. package/dist/lib/builders/apply-swc-transform.js +38 -0
  39. package/dist/lib/builders/apply-swc-transform.js.map +1 -0
  40. package/dist/lib/builders/base-builder.d.ts +45 -0
  41. package/dist/lib/builders/base-builder.d.ts.map +1 -0
  42. package/dist/lib/builders/base-builder.js +466 -0
  43. package/dist/lib/builders/base-builder.js.map +1 -0
  44. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts +11 -0
  45. package/dist/lib/builders/discover-entries-esbuild-plugin.d.ts.map +1 -0
  46. package/dist/lib/builders/discover-entries-esbuild-plugin.js +84 -0
  47. package/dist/lib/builders/discover-entries-esbuild-plugin.js.map +1 -0
  48. package/dist/lib/builders/next-build.d.ts +11 -0
  49. package/dist/lib/builders/next-build.d.ts.map +1 -0
  50. package/dist/lib/builders/next-build.js +331 -0
  51. package/dist/lib/builders/next-build.js.map +1 -0
  52. package/dist/lib/builders/node-module-esbuild-plugin.d.ts +3 -0
  53. package/dist/lib/builders/node-module-esbuild-plugin.d.ts.map +1 -0
  54. package/dist/lib/builders/node-module-esbuild-plugin.js +24 -0
  55. package/dist/lib/builders/node-module-esbuild-plugin.js.map +1 -0
  56. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts +2 -0
  57. package/dist/lib/builders/node-module-esbuild-plugin.test.d.ts.map +1 -0
  58. package/dist/lib/builders/node-module-esbuild-plugin.test.js +128 -0
  59. package/dist/lib/builders/node-module-esbuild-plugin.test.js.map +1 -0
  60. package/dist/lib/builders/swc-esbuild-plugin.d.ts +12 -0
  61. package/dist/lib/builders/swc-esbuild-plugin.d.ts.map +1 -0
  62. package/dist/lib/builders/swc-esbuild-plugin.js +134 -0
  63. package/dist/lib/builders/swc-esbuild-plugin.js.map +1 -0
  64. package/dist/lib/builders/vercel-build-output-api.d.ts +9 -0
  65. package/dist/lib/builders/vercel-build-output-api.d.ts.map +1 -0
  66. package/dist/lib/builders/vercel-build-output-api.js +138 -0
  67. package/dist/lib/builders/vercel-build-output-api.js.map +1 -0
  68. package/dist/lib/builders/vercel-static.d.ts +7 -0
  69. package/dist/lib/builders/vercel-static.d.ts.map +1 -0
  70. package/dist/lib/builders/vercel-static.js +42 -0
  71. package/dist/lib/builders/vercel-static.js.map +1 -0
  72. package/dist/lib/builders/webhook-route.test.d.ts +2 -0
  73. package/dist/lib/builders/webhook-route.test.d.ts.map +1 -0
  74. package/dist/lib/builders/webhook-route.test.js +199 -0
  75. package/dist/lib/builders/webhook-route.test.js.map +1 -0
  76. package/dist/lib/config/log.d.ts +42 -0
  77. package/dist/lib/config/log.d.ts.map +1 -0
  78. package/dist/lib/config/log.js +95 -0
  79. package/dist/lib/config/log.js.map +1 -0
  80. package/dist/lib/config/types.d.ts +28 -0
  81. package/dist/lib/config/types.d.ts.map +1 -0
  82. package/dist/lib/config/types.js +9 -0
  83. package/dist/lib/config/types.js.map +1 -0
  84. package/dist/lib/config/workflow-config.d.ts +6 -0
  85. package/dist/lib/config/workflow-config.d.ts.map +1 -0
  86. package/dist/lib/config/workflow-config.js +16 -0
  87. package/dist/lib/config/workflow-config.js.map +1 -0
  88. package/dist/lib/inspect/auth.d.ts +20 -0
  89. package/dist/lib/inspect/auth.d.ts.map +1 -0
  90. package/dist/lib/inspect/auth.js +54 -0
  91. package/dist/lib/inspect/auth.js.map +1 -0
  92. package/dist/lib/inspect/env.d.ts +25 -0
  93. package/dist/lib/inspect/env.d.ts.map +1 -0
  94. package/dist/lib/inspect/env.js +158 -0
  95. package/dist/lib/inspect/env.js.map +1 -0
  96. package/dist/lib/inspect/flags.d.ts +14 -0
  97. package/dist/lib/inspect/flags.d.ts.map +1 -0
  98. package/dist/lib/inspect/flags.js +110 -0
  99. package/dist/lib/inspect/flags.js.map +1 -0
  100. package/dist/lib/inspect/output.d.ts +31 -0
  101. package/dist/lib/inspect/output.d.ts.map +1 -0
  102. package/dist/lib/inspect/output.js +899 -0
  103. package/dist/lib/inspect/output.js.map +1 -0
  104. package/dist/lib/inspect/pagination.d.ts +55 -0
  105. package/dist/lib/inspect/pagination.d.ts.map +1 -0
  106. package/dist/lib/inspect/pagination.js +193 -0
  107. package/dist/lib/inspect/pagination.js.map +1 -0
  108. package/dist/lib/inspect/run.d.ts +9 -0
  109. package/dist/lib/inspect/run.d.ts.map +1 -0
  110. package/dist/lib/inspect/run.js +30 -0
  111. package/dist/lib/inspect/run.js.map +1 -0
  112. package/dist/lib/inspect/setup.d.ts +10 -0
  113. package/dist/lib/inspect/setup.d.ts.map +1 -0
  114. package/dist/lib/inspect/setup.js +33 -0
  115. package/dist/lib/inspect/setup.js.map +1 -0
  116. package/dist/lib/inspect/stream.d.ts +7 -0
  117. package/dist/lib/inspect/stream.d.ts.map +1 -0
  118. package/dist/lib/inspect/stream.js +50 -0
  119. package/dist/lib/inspect/stream.js.map +1 -0
  120. package/dist/lib/inspect/terminal-utils.d.ts +36 -0
  121. package/dist/lib/inspect/terminal-utils.d.ts.map +1 -0
  122. package/dist/lib/inspect/terminal-utils.js +109 -0
  123. package/dist/lib/inspect/terminal-utils.js.map +1 -0
  124. package/dist/lib/inspect/vercel-api.d.ts +12 -0
  125. package/dist/lib/inspect/vercel-api.d.ts.map +1 -0
  126. package/dist/lib/inspect/vercel-api.js +89 -0
  127. package/dist/lib/inspect/vercel-api.js.map +1 -0
  128. package/dist/lib/inspect/vercel-link.d.ts +98 -0
  129. package/dist/lib/inspect/vercel-link.d.ts.map +1 -0
  130. package/dist/lib/inspect/vercel-link.js +268 -0
  131. package/dist/lib/inspect/vercel-link.js.map +1 -0
  132. package/dist/lib/inspect/web.d.ts +9 -0
  133. package/dist/lib/inspect/web.d.ts.map +1 -0
  134. package/dist/lib/inspect/web.js +305 -0
  135. package/dist/lib/inspect/web.js.map +1 -0
  136. package/dist/lib/runtime.d.ts +2 -0
  137. package/dist/lib/runtime.d.ts.map +1 -0
  138. package/dist/lib/runtime.js +5 -0
  139. package/dist/lib/runtime.js.map +1 -0
  140. package/package.json +67 -0
@@ -0,0 +1,305 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createRequire } from 'node:module';
3
+ import { dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import chalk from 'chalk';
6
+ import open from 'open';
7
+ import { logger } from '../config/log.js';
8
+ import { getEnvVars } from './env.js';
9
+ import { getVercelDashboardUrl } from './vercel-api.js';
10
+ export const WEB_PORT = 3456;
11
+ export const WEB_PACKAGE_NAME = '@workflow/web';
12
+ export const HOST_URL = `http://localhost:${WEB_PORT}`;
13
+ let serverProcess = null;
14
+ let isServerStarting = false;
15
+ let cleanupHandlersRegistered = false;
16
+ /**
17
+ * Get the path to the @workflow/web package
18
+ * Since it's now a direct dependency, we can resolve it from node_modules
19
+ *
20
+ * We resolve relative to this file's location to handle cases where the CLI
21
+ * is installed as a dependency of another project:
22
+ * test-project/node_modules/@workflow/cli/node_modules/@workflow/web
23
+ */
24
+ function getWebPackagePath() {
25
+ try {
26
+ // Get the path to this file so we can resolve relative to the CLI package
27
+ const thisFilePath = fileURLToPath(import.meta.url);
28
+ logger.debug(`Resolving web package from: ${thisFilePath}`);
29
+ // Create a require function that resolves relative to this file
30
+ // This is the proper way to resolve dependencies of the CLI package
31
+ const requireFromHere = createRequire(import.meta.url);
32
+ // Resolve the package.json of @workflow/web from the CLI's location
33
+ // This ensures we find it even when the CLI is a dependency of another project
34
+ const packageJsonPath = requireFromHere.resolve(`${WEB_PACKAGE_NAME}/package.json`);
35
+ logger.debug(`Resolved web package: ${packageJsonPath}`);
36
+ // Return the directory containing package.json
37
+ return dirname(packageJsonPath);
38
+ }
39
+ catch (error) {
40
+ throw new Error(`Failed to resolve ${WEB_PACKAGE_NAME} package. ` +
41
+ `This should be installed as a dependency of the CLI. Error: ${error}`);
42
+ }
43
+ }
44
+ /**
45
+ * Check if server is already running on the port
46
+ */
47
+ async function isServerRunning(hostUrl) {
48
+ try {
49
+ const response = await fetch(hostUrl, {
50
+ method: 'HEAD',
51
+ });
52
+ return response.ok;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ /**
59
+ * Cleanup function to stop the server gracefully
60
+ */
61
+ function cleanupServer() {
62
+ if (serverProcess && !serverProcess.killed) {
63
+ logger.debug('Cleaning up web server process...');
64
+ serverProcess.kill('SIGTERM');
65
+ serverProcess = null;
66
+ }
67
+ }
68
+ /**
69
+ * Register cleanup handlers to ensure server is stopped when CLI exits
70
+ */
71
+ function registerCleanupHandlers() {
72
+ if (cleanupHandlersRegistered) {
73
+ return;
74
+ }
75
+ cleanupHandlersRegistered = true;
76
+ // Handle Ctrl+C (SIGINT)
77
+ process.on('SIGINT', () => {
78
+ logger.debug('Received SIGINT, cleaning up...');
79
+ cleanupServer();
80
+ process.exit(0);
81
+ });
82
+ // Handle termination signal
83
+ process.on('SIGTERM', () => {
84
+ logger.debug('Received SIGTERM, cleaning up...');
85
+ cleanupServer();
86
+ process.exit(0);
87
+ });
88
+ // Handle normal process exit
89
+ process.on('exit', () => {
90
+ cleanupServer();
91
+ });
92
+ // Handle uncaught exceptions
93
+ process.on('uncaughtException', (error) => {
94
+ logger.error(`Uncaught exception: ${error}`);
95
+ cleanupServer();
96
+ process.exit(1);
97
+ });
98
+ // Handle unhandled promise rejections
99
+ process.on('unhandledRejection', (reason) => {
100
+ logger.error(`Unhandled rejection: ${reason}`);
101
+ cleanupServer();
102
+ process.exit(1);
103
+ });
104
+ }
105
+ /**
106
+ * Start the web server without detaching
107
+ * The server will stay attached to the CLI process and be cleaned up on exit
108
+ */
109
+ async function startWebServer() {
110
+ if (isServerStarting) {
111
+ logger.debug('Server is already starting...');
112
+ return false;
113
+ }
114
+ if (await isServerRunning(HOST_URL)) {
115
+ logger.debug('Server is already running');
116
+ return true;
117
+ }
118
+ const packagePath = getWebPackagePath();
119
+ logger.debug(`Using web package at: ${packagePath}`);
120
+ isServerStarting = true;
121
+ try {
122
+ logger.info('Starting web UI server...');
123
+ const command = 'npx';
124
+ const args = ['next', 'start', '-p', String(WEB_PORT)];
125
+ logger.debug(`Running ${command} ${args.join(' ')} in ${packagePath}`);
126
+ // Start the Next.js server WITHOUT detaching
127
+ // This keeps it attached to the CLI process
128
+ serverProcess = spawn(command, args, {
129
+ cwd: packagePath,
130
+ detached: false, // Keep attached so Ctrl+C works
131
+ stdio: ['ignore', 'pipe', 'pipe'], // Pipe output so we can log it if needed
132
+ });
133
+ // Register cleanup handlers to ensure server is killed on exit
134
+ registerCleanupHandlers();
135
+ // Log server output for debugging
136
+ if (serverProcess.stdout) {
137
+ serverProcess.stdout.on('data', (data) => {
138
+ logger.debug(`[web-server] ${data.toString().trim()}`);
139
+ });
140
+ }
141
+ if (serverProcess.stderr) {
142
+ serverProcess.stderr.on('data', (data) => {
143
+ logger.debug(`[web-server] ${data.toString().trim()}`);
144
+ });
145
+ }
146
+ // Handle server process errors
147
+ serverProcess.on('error', (error) => {
148
+ logger.error(`Web server process error: ${error}`);
149
+ cleanupServer();
150
+ });
151
+ // Handle server process exit
152
+ serverProcess.on('exit', (code, signal) => {
153
+ if (code !== null && code !== 0) {
154
+ logger.debug(`Web server exited with code ${code}`);
155
+ }
156
+ else if (signal) {
157
+ logger.debug(`Web server exited with signal ${signal}`);
158
+ }
159
+ serverProcess = null;
160
+ });
161
+ // Wait for server to be ready
162
+ const maxRetries = 30;
163
+ const retryIntervalMs = 1000;
164
+ for (let i = 0; i < maxRetries; i++) {
165
+ await new Promise((resolve) => setTimeout(resolve, retryIntervalMs));
166
+ if (await isServerRunning(HOST_URL)) {
167
+ logger.success(chalk.green(`Web UI server started on port ${WEB_PORT}`));
168
+ isServerStarting = false;
169
+ return true;
170
+ }
171
+ }
172
+ logger.error(`Server failed to start within ${maxRetries * retryIntervalMs}ms`);
173
+ cleanupServer();
174
+ isServerStarting = false;
175
+ return false;
176
+ }
177
+ catch (error) {
178
+ logger.error(`Failed to start server: ${error}`);
179
+ cleanupServer();
180
+ isServerStarting = false;
181
+ return false;
182
+ }
183
+ }
184
+ /**
185
+ * Launch the web UI with the specified configuration
186
+ * This starts the server (if not running), opens the browser, then keeps the server running
187
+ */
188
+ export async function launchWebUI(resource, id, flags, _cliVersion) {
189
+ const envVars = getEnvVars();
190
+ // Check if we should try to use the Vercel dashboard
191
+ const isVercelBackend = envVars.WORKFLOW_TARGET_WORLD === 'vercel';
192
+ const teamSlug = envVars.WORKFLOW_VERCEL_TEAM;
193
+ const projectName = envVars.WORKFLOW_VERCEL_PROJECT;
194
+ if (!envVars.WORKFLOW_LOCAL_UI) {
195
+ logger.info('If you do not want to use the Vercel dashboard, set WORKFLOW_LOCAL_UI=1 in your environment variables.');
196
+ }
197
+ if (isVercelBackend &&
198
+ teamSlug &&
199
+ projectName &&
200
+ !envVars.WORKFLOW_LOCAL_UI) {
201
+ logger.debug(`Checking Vercel dashboard availability for team: ${teamSlug}, project: ${projectName}`);
202
+ // const dashboardAvailable = await checkVercelDashboardAvailable(
203
+ // teamSlug,
204
+ // projectName,
205
+ // envVars.WORKFLOW_VERCEL_AUTH_TOKEN
206
+ // );
207
+ // if (dashboardAvailable) {
208
+ const dashboardUrl = getVercelDashboardUrl(teamSlug, projectName, resource, id);
209
+ logger.info(chalk.green(`Opening Vercel dashboard for workflows at: ${dashboardUrl}`));
210
+ try {
211
+ await open(dashboardUrl);
212
+ return; // Exit early since we opened the dashboard
213
+ }
214
+ catch (error) {
215
+ logger.error(`Failed to open browser: ${error}`);
216
+ logger.info(`Please open manually: ${dashboardUrl}`);
217
+ return;
218
+ }
219
+ // } else {
220
+ // logger.warn(
221
+ // chalk.yellow(
222
+ // 'Vercel dashboard is not available for this project. Falling back to local web UI.'
223
+ // )
224
+ // );
225
+ // }
226
+ }
227
+ // Fall back to local web UI
228
+ // Build URL with query params
229
+ const queryParams = envToQueryParams(resource, id, flags, envVars);
230
+ const url = `${HOST_URL}?${queryParams.toString()}`;
231
+ // Check if server is already running
232
+ const alreadyRunning = await isServerRunning(HOST_URL);
233
+ if (alreadyRunning) {
234
+ logger.info(chalk.cyan('Web UI server is already running'));
235
+ logger.info(chalk.cyan(`Access at: ${HOST_URL}`));
236
+ }
237
+ else {
238
+ // Start the server
239
+ const started = await startWebServer();
240
+ if (!started) {
241
+ logger.error('Failed to start web UI server');
242
+ return;
243
+ }
244
+ }
245
+ // Open browser
246
+ logger.info(chalk.cyan(`Opening browser to: ${url}`));
247
+ try {
248
+ await open(url);
249
+ }
250
+ catch (error) {
251
+ logger.error(`Failed to open browser: ${error}`);
252
+ logger.info(`Please open manually: ${url}`);
253
+ }
254
+ // If we started the server, keep the process running
255
+ if (!alreadyRunning && serverProcess) {
256
+ logger.info(chalk.cyan('Press Ctrl+C to stop the web UI server and exit'));
257
+ // Keep the CLI process alive to maintain the server
258
+ // The server will be cleaned up when the process exits
259
+ await new Promise((resolve) => {
260
+ // This will only resolve when the server exits, or immediately if there is no serverProcess
261
+ if (serverProcess) {
262
+ serverProcess.on('exit', resolve);
263
+ }
264
+ else {
265
+ resolve(null);
266
+ }
267
+ });
268
+ }
269
+ }
270
+ /**
271
+ * Convert CLI flags to query parameters
272
+ */
273
+ function envToQueryParams(resource, id, flags, envVars) {
274
+ const params = new URLSearchParams();
275
+ params.set('resource', resource);
276
+ if (id) {
277
+ params.set('id', id);
278
+ }
279
+ // Map relevant flags to query params
280
+ const envToQueryParamMappings = {
281
+ WORKFLOW_TARGET_WORLD: 'backend',
282
+ WORKFLOW_VERCEL_ENV: 'env',
283
+ WORKFLOW_VERCEL_AUTH_TOKEN: 'authToken',
284
+ WORKFLOW_VERCEL_PROJECT: 'project',
285
+ WORKFLOW_VERCEL_TEAM: 'team',
286
+ PORT: 'port',
287
+ WORKFLOW_EMBEDDED_DATA_DIR: 'dataDir',
288
+ };
289
+ for (const [envName, paramName] of Object.entries(envToQueryParamMappings)) {
290
+ const value = envVars[envName];
291
+ if (value !== undefined && value !== '' && value !== '0') {
292
+ params.set(paramName, String(value));
293
+ }
294
+ }
295
+ // We only take the runId/stepId/hookId flags directly, the rest are set via env vars,
296
+ // which are internally already influenced by the CLI flags
297
+ for (const flagName of ['runId', 'stepId', 'hookId']) {
298
+ const value = flags[flagName];
299
+ if (value !== undefined && value !== '' && value !== false) {
300
+ params.set(flagName, String(value));
301
+ }
302
+ }
303
+ return params;
304
+ }
305
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/lib/inspect/web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from '@workflow/core/runtime';
2
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"AAGA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // re-export runtime as stub for resolving to not
2
+ // require @workflow/core be a dependency as well as
3
+ // @workflow/cli
4
+ export * from '@workflow/core/runtime';
5
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,oDAAoD;AACpD,gBAAgB;AAChB,cAAc,wBAAwB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@workflow/cli",
3
+ "version": "4.0.1-beta.0",
4
+ "type": "module",
5
+ "bin": {
6
+ "workflow": "./bin/run.js",
7
+ "wf": "./bin/run.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "bin"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "oclif": {
17
+ "bin": "workflow",
18
+ "dirname": "workflow",
19
+ "commands": "./dist/commands",
20
+ "plugins": [
21
+ "@oclif/plugin-help"
22
+ ],
23
+ "topicSeparator": " "
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "24.6.2",
27
+ "@workflow/tsconfig": "4.0.1-beta.0"
28
+ },
29
+ "dependencies": {
30
+ "@oclif/core": "^4.0.0",
31
+ "@oclif/plugin-help": "^6.0.0",
32
+ "@swc/core": "1.11.24",
33
+ "@types/watchpack": "2.4.4",
34
+ "boxen": "^8.0.1",
35
+ "builtin-modules": "^5.0.0",
36
+ "chalk": "^5.6.2",
37
+ "chokidar": "^4.0.3",
38
+ "comment-json": "4.2.5",
39
+ "date-fns": "^4.1.0",
40
+ "easy-table": "^1.2.0",
41
+ "enhanced-resolve": "5.18.2",
42
+ "esbuild": "^0.25.6",
43
+ "find-up": "7.0.0",
44
+ "mixpart": "^0.0.4",
45
+ "open": "^10.2.0",
46
+ "ora": "^8.2.0",
47
+ "terminal-link": "^5.0.0",
48
+ "tinyglobby": "^0.2.14",
49
+ "watchpack": "2.4.4",
50
+ "xdg-app-paths": "^5.1.0",
51
+ "zod": "4.1.11",
52
+ "@workflow/swc-plugin": "4.0.1-beta.0",
53
+ "@workflow/errors": "4.0.1-beta.0",
54
+ "@workflow/web": "4.0.1-beta.0",
55
+ "@workflow/world": "4.0.1-beta.0",
56
+ "@workflow/world-local": "4.0.1-beta.0",
57
+ "@workflow/world-vercel": "4.0.1-beta.0",
58
+ "@workflow/core": "4.0.1-beta.0"
59
+ },
60
+ "scripts": {
61
+ "build": "tsc && chmod +x bin/run.js",
62
+ "clean": "tsc --build --clean && rm -r dist ||:",
63
+ "dev": "tsc --watch",
64
+ "test": "vitest run src",
65
+ "typecheck": "tsc --noEmit"
66
+ }
67
+ }