@illumiarq/lumis 1.2.10 → 1.3.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 (296) hide show
  1. package/dist/bridges/project-bridge.d.ts +2 -0
  2. package/dist/bridges/project-bridge.d.ts.map +1 -0
  3. package/dist/bridges/project-bridge.js +174 -0
  4. package/dist/bridges/project-bridge.js.map +1 -0
  5. package/dist/cli.d.ts +1 -16
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +546 -170
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/app/cache-workflows.d.ts +7 -0
  10. package/dist/commands/app/cache-workflows.d.ts.map +1 -0
  11. package/dist/commands/app/cache-workflows.js +139 -0
  12. package/dist/commands/app/cache-workflows.js.map +1 -0
  13. package/dist/commands/app/command-runtime.d.ts +11 -0
  14. package/dist/commands/app/command-runtime.d.ts.map +1 -0
  15. package/dist/commands/app/command-runtime.js +41 -0
  16. package/dist/commands/app/command-runtime.js.map +1 -0
  17. package/dist/commands/app/config-cache.d.ts +3 -0
  18. package/dist/commands/app/config-cache.d.ts.map +1 -0
  19. package/dist/commands/app/config-cache.js +75 -0
  20. package/dist/commands/app/config-cache.js.map +1 -0
  21. package/dist/commands/app/config-publish.d.ts +2 -0
  22. package/dist/commands/app/config-publish.d.ts.map +1 -0
  23. package/dist/commands/app/config-publish.js +68 -0
  24. package/dist/commands/app/config-publish.js.map +1 -0
  25. package/dist/commands/app/config-stubs.d.ts +3 -0
  26. package/dist/commands/app/config-stubs.d.ts.map +1 -0
  27. package/dist/commands/app/config-stubs.js +154 -0
  28. package/dist/commands/app/config-stubs.js.map +1 -0
  29. package/dist/commands/app/database.d.ts +3 -0
  30. package/dist/commands/app/database.d.ts.map +1 -0
  31. package/dist/commands/app/database.js +221 -0
  32. package/dist/commands/app/database.js.map +1 -0
  33. package/dist/commands/app/docs.d.ts +7 -0
  34. package/dist/commands/app/docs.d.ts.map +1 -0
  35. package/dist/commands/app/docs.js +61 -0
  36. package/dist/commands/app/docs.js.map +1 -0
  37. package/dist/commands/app/routes.d.ts +7 -0
  38. package/dist/commands/app/routes.d.ts.map +1 -0
  39. package/dist/commands/app/routes.js +282 -0
  40. package/dist/commands/app/routes.js.map +1 -0
  41. package/dist/commands/app/security.d.ts +3 -0
  42. package/dist/commands/app/security.d.ts.map +1 -0
  43. package/dist/commands/app/security.js +15 -0
  44. package/dist/commands/app/security.js.map +1 -0
  45. package/dist/commands/app/worker-schedule.d.ts +5 -0
  46. package/dist/commands/app/worker-schedule.d.ts.map +1 -0
  47. package/dist/commands/app/worker-schedule.js +94 -0
  48. package/dist/commands/app/worker-schedule.js.map +1 -0
  49. package/dist/commands/app-commands.d.ts +19 -0
  50. package/dist/commands/app-commands.d.ts.map +1 -0
  51. package/dist/commands/app-commands.js +77 -0
  52. package/dist/commands/app-commands.js.map +1 -0
  53. package/dist/commands/build-vercel-fn.d.ts +9 -0
  54. package/dist/commands/build-vercel-fn.d.ts.map +1 -0
  55. package/dist/commands/build-vercel-fn.js +32 -0
  56. package/dist/commands/build-vercel-fn.js.map +1 -0
  57. package/dist/commands/build.d.ts +14 -0
  58. package/dist/commands/build.d.ts.map +1 -0
  59. package/dist/commands/build.js +24 -0
  60. package/dist/commands/build.js.map +1 -0
  61. package/dist/commands/info.d.ts +9 -0
  62. package/dist/commands/info.d.ts.map +1 -0
  63. package/dist/commands/info.js +41 -0
  64. package/dist/commands/info.js.map +1 -0
  65. package/dist/commands/keys.d.ts +3 -0
  66. package/dist/commands/keys.d.ts.map +1 -0
  67. package/dist/commands/keys.js +60 -0
  68. package/dist/commands/keys.js.map +1 -0
  69. package/dist/commands/maintenance.d.ts +9 -0
  70. package/dist/commands/maintenance.d.ts.map +1 -0
  71. package/dist/commands/maintenance.js +38 -0
  72. package/dist/commands/maintenance.js.map +1 -0
  73. package/dist/commands/module-list.d.ts +2 -0
  74. package/dist/commands/module-list.d.ts.map +1 -0
  75. package/dist/commands/module-list.js +27 -0
  76. package/dist/commands/module-list.js.map +1 -0
  77. package/dist/commands/preview.d.ts +14 -0
  78. package/dist/commands/preview.d.ts.map +1 -0
  79. package/dist/commands/preview.js +49 -0
  80. package/dist/commands/preview.js.map +1 -0
  81. package/dist/commands/serve.d.ts +16 -0
  82. package/dist/commands/serve.d.ts.map +1 -0
  83. package/dist/commands/serve.js +61 -0
  84. package/dist/commands/serve.js.map +1 -0
  85. package/dist/{output/ansi.d.ts → console.d.ts} +8 -4
  86. package/dist/console.d.ts.map +1 -0
  87. package/dist/{output/ansi.js → console.js} +12 -4
  88. package/dist/console.js.map +1 -0
  89. package/dist/index.d.ts +15 -19
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +12 -12
  92. package/dist/index.js.map +1 -1
  93. package/dist/paths.d.ts +26 -0
  94. package/dist/paths.d.ts.map +1 -0
  95. package/dist/paths.js +83 -0
  96. package/dist/paths.js.map +1 -0
  97. package/dist/server-wrapper.d.ts +12 -0
  98. package/dist/server-wrapper.d.ts.map +1 -0
  99. package/dist/server-wrapper.js +63 -0
  100. package/dist/server-wrapper.js.map +1 -0
  101. package/dist/vercel-wrapper.d.ts +6 -0
  102. package/dist/vercel-wrapper.d.ts.map +1 -0
  103. package/dist/vercel-wrapper.js +50 -0
  104. package/dist/vercel-wrapper.js.map +1 -0
  105. package/package.json +19 -37
  106. package/README.md +0 -38
  107. package/dist/adapter-loader.d.ts +0 -67
  108. package/dist/adapter-loader.d.ts.map +0 -1
  109. package/dist/adapter-loader.js +0 -273
  110. package/dist/adapter-loader.js.map +0 -1
  111. package/dist/commands/commands.command.d.ts +0 -38
  112. package/dist/commands/commands.command.d.ts.map +0 -1
  113. package/dist/commands/commands.command.js +0 -176
  114. package/dist/commands/commands.command.js.map +0 -1
  115. package/dist/commands/doctor.command.d.ts +0 -9
  116. package/dist/commands/doctor.command.d.ts.map +0 -1
  117. package/dist/commands/doctor.command.js +0 -922
  118. package/dist/commands/doctor.command.js.map +0 -1
  119. package/dist/commands/init.command.d.ts +0 -9
  120. package/dist/commands/init.command.d.ts.map +0 -1
  121. package/dist/commands/init.command.js +0 -135
  122. package/dist/commands/init.command.js.map +0 -1
  123. package/dist/commands/intent.command.d.ts +0 -26
  124. package/dist/commands/intent.command.d.ts.map +0 -1
  125. package/dist/commands/intent.command.js +0 -211
  126. package/dist/commands/intent.command.js.map +0 -1
  127. package/dist/commands/ir-rebuild.command.d.ts +0 -9
  128. package/dist/commands/ir-rebuild.command.d.ts.map +0 -1
  129. package/dist/commands/ir-rebuild.command.js +0 -36
  130. package/dist/commands/ir-rebuild.command.js.map +0 -1
  131. package/dist/commands/ir-show.command.d.ts +0 -9
  132. package/dist/commands/ir-show.command.d.ts.map +0 -1
  133. package/dist/commands/ir-show.command.js +0 -32
  134. package/dist/commands/ir-show.command.js.map +0 -1
  135. package/dist/commands/make.command.d.ts +0 -9
  136. package/dist/commands/make.command.d.ts.map +0 -1
  137. package/dist/commands/make.command.js +0 -93
  138. package/dist/commands/make.command.js.map +0 -1
  139. package/dist/commands/pack.command.d.ts +0 -16
  140. package/dist/commands/pack.command.d.ts.map +0 -1
  141. package/dist/commands/pack.command.js +0 -44
  142. package/dist/commands/pack.command.js.map +0 -1
  143. package/dist/commands/runtime.command.d.ts +0 -6
  144. package/dist/commands/runtime.command.d.ts.map +0 -1
  145. package/dist/commands/runtime.command.js +0 -379
  146. package/dist/commands/runtime.command.js.map +0 -1
  147. package/dist/commands/runtime.d.ts +0 -45
  148. package/dist/commands/runtime.d.ts.map +0 -1
  149. package/dist/commands/runtime.js +0 -66
  150. package/dist/commands/runtime.js.map +0 -1
  151. package/dist/commands/tinker-agent-plan.d.ts +0 -26
  152. package/dist/commands/tinker-agent-plan.d.ts.map +0 -1
  153. package/dist/commands/tinker-agent-plan.js +0 -115
  154. package/dist/commands/tinker-agent-plan.js.map +0 -1
  155. package/dist/commands/tinker-chat-commands.d.ts +0 -19
  156. package/dist/commands/tinker-chat-commands.d.ts.map +0 -1
  157. package/dist/commands/tinker-chat-commands.js +0 -263
  158. package/dist/commands/tinker-chat-commands.js.map +0 -1
  159. package/dist/commands/tinker-chat-runtime.d.ts +0 -30
  160. package/dist/commands/tinker-chat-runtime.d.ts.map +0 -1
  161. package/dist/commands/tinker-chat-runtime.js +0 -227
  162. package/dist/commands/tinker-chat-runtime.js.map +0 -1
  163. package/dist/commands/tinker-classic-mode.d.ts +0 -15
  164. package/dist/commands/tinker-classic-mode.d.ts.map +0 -1
  165. package/dist/commands/tinker-classic-mode.js +0 -160
  166. package/dist/commands/tinker-classic-mode.js.map +0 -1
  167. package/dist/commands/tinker-eval.command.d.ts +0 -3
  168. package/dist/commands/tinker-eval.command.d.ts.map +0 -1
  169. package/dist/commands/tinker-eval.command.js +0 -151
  170. package/dist/commands/tinker-eval.command.js.map +0 -1
  171. package/dist/commands/tinker-repl-display.d.ts +0 -15
  172. package/dist/commands/tinker-repl-display.d.ts.map +0 -1
  173. package/dist/commands/tinker-repl-display.js +0 -147
  174. package/dist/commands/tinker-repl-display.js.map +0 -1
  175. package/dist/commands/tinker-session-runtime.d.ts +0 -27
  176. package/dist/commands/tinker-session-runtime.d.ts.map +0 -1
  177. package/dist/commands/tinker-session-runtime.js +0 -196
  178. package/dist/commands/tinker-session-runtime.js.map +0 -1
  179. package/dist/commands/tinker.command.d.ts +0 -9
  180. package/dist/commands/tinker.command.d.ts.map +0 -1
  181. package/dist/commands/tinker.command.js +0 -142
  182. package/dist/commands/tinker.command.js.map +0 -1
  183. package/dist/commands/use.command.d.ts +0 -10
  184. package/dist/commands/use.command.d.ts.map +0 -1
  185. package/dist/commands/use.command.js +0 -69
  186. package/dist/commands/use.command.js.map +0 -1
  187. package/dist/config-loader.d.ts +0 -110
  188. package/dist/config-loader.d.ts.map +0 -1
  189. package/dist/config-loader.js +0 -119
  190. package/dist/config-loader.js.map +0 -1
  191. package/dist/launcher.d.ts +0 -16
  192. package/dist/launcher.d.ts.map +0 -1
  193. package/dist/launcher.js +0 -301
  194. package/dist/launcher.js.map +0 -1
  195. package/dist/lib/file-scanner.d.ts +0 -8
  196. package/dist/lib/file-scanner.d.ts.map +0 -1
  197. package/dist/lib/file-scanner.js +0 -70
  198. package/dist/lib/file-scanner.js.map +0 -1
  199. package/dist/lib/tinker-memory.d.ts +0 -19
  200. package/dist/lib/tinker-memory.d.ts.map +0 -1
  201. package/dist/lib/tinker-memory.js +0 -107
  202. package/dist/lib/tinker-memory.js.map +0 -1
  203. package/dist/lib/tinker-observer.d.ts +0 -47
  204. package/dist/lib/tinker-observer.d.ts.map +0 -1
  205. package/dist/lib/tinker-observer.js +0 -77
  206. package/dist/lib/tinker-observer.js.map +0 -1
  207. package/dist/lib/tinker-policy.d.ts +0 -21
  208. package/dist/lib/tinker-policy.d.ts.map +0 -1
  209. package/dist/lib/tinker-policy.js +0 -102
  210. package/dist/lib/tinker-policy.js.map +0 -1
  211. package/dist/lib/tinker-replay.d.ts +0 -51
  212. package/dist/lib/tinker-replay.d.ts.map +0 -1
  213. package/dist/lib/tinker-replay.js +0 -123
  214. package/dist/lib/tinker-replay.js.map +0 -1
  215. package/dist/output/ansi.d.ts.map +0 -1
  216. package/dist/output/ansi.js.map +0 -1
  217. package/dist/output/plan-display.d.ts +0 -4
  218. package/dist/output/plan-display.d.ts.map +0 -1
  219. package/dist/output/plan-display.js +0 -49
  220. package/dist/output/plan-display.js.map +0 -1
  221. package/dist/output/result-display.d.ts +0 -5
  222. package/dist/output/result-display.d.ts.map +0 -1
  223. package/dist/output/result-display.js +0 -17
  224. package/dist/output/result-display.js.map +0 -1
  225. package/dist/plugins/tinker-plugin.d.ts +0 -86
  226. package/dist/plugins/tinker-plugin.d.ts.map +0 -1
  227. package/dist/plugins/tinker-plugin.js +0 -42
  228. package/dist/plugins/tinker-plugin.js.map +0 -1
  229. package/dist/router-preferences.d.ts +0 -5
  230. package/dist/router-preferences.d.ts.map +0 -1
  231. package/dist/router-preferences.js +0 -22
  232. package/dist/router-preferences.js.map +0 -1
  233. package/dist/runtime/executor.d.ts +0 -33
  234. package/dist/runtime/executor.d.ts.map +0 -1
  235. package/dist/runtime/executor.js +0 -180
  236. package/dist/runtime/executor.js.map +0 -1
  237. package/dist/runtime/orchestration.d.ts +0 -43
  238. package/dist/runtime/orchestration.d.ts.map +0 -1
  239. package/dist/runtime/orchestration.js +0 -209
  240. package/dist/runtime/orchestration.js.map +0 -1
  241. package/dist/runtime/policy.d.ts +0 -49
  242. package/dist/runtime/policy.d.ts.map +0 -1
  243. package/dist/runtime/policy.js +0 -78
  244. package/dist/runtime/policy.js.map +0 -1
  245. package/dist/runtime/profiles.d.ts +0 -15
  246. package/dist/runtime/profiles.d.ts.map +0 -1
  247. package/dist/runtime/profiles.js +0 -131
  248. package/dist/runtime/profiles.js.map +0 -1
  249. package/dist/runtime/transcripts.d.ts +0 -59
  250. package/dist/runtime/transcripts.d.ts.map +0 -1
  251. package/dist/runtime/transcripts.js +0 -172
  252. package/dist/runtime/transcripts.js.map +0 -1
  253. package/dist/tools/git-diff.d.ts +0 -3
  254. package/dist/tools/git-diff.d.ts.map +0 -1
  255. package/dist/tools/git-diff.js +0 -16
  256. package/dist/tools/git-diff.js.map +0 -1
  257. package/dist/tools/index.d.ts +0 -24
  258. package/dist/tools/index.d.ts.map +0 -1
  259. package/dist/tools/index.js +0 -88
  260. package/dist/tools/index.js.map +0 -1
  261. package/dist/tools/lint.d.ts +0 -3
  262. package/dist/tools/lint.d.ts.map +0 -1
  263. package/dist/tools/lint.js +0 -35
  264. package/dist/tools/lint.js.map +0 -1
  265. package/dist/tools/read-file.d.ts +0 -3
  266. package/dist/tools/read-file.d.ts.map +0 -1
  267. package/dist/tools/read-file.js +0 -47
  268. package/dist/tools/read-file.js.map +0 -1
  269. package/dist/tools/run-command.d.ts +0 -3
  270. package/dist/tools/run-command.d.ts.map +0 -1
  271. package/dist/tools/run-command.js +0 -71
  272. package/dist/tools/run-command.js.map +0 -1
  273. package/dist/tools/run-tests.d.ts +0 -3
  274. package/dist/tools/run-tests.d.ts.map +0 -1
  275. package/dist/tools/run-tests.js +0 -49
  276. package/dist/tools/run-tests.js.map +0 -1
  277. package/dist/tools/tool-dispatch.d.ts +0 -32
  278. package/dist/tools/tool-dispatch.d.ts.map +0 -1
  279. package/dist/tools/tool-dispatch.js +0 -120
  280. package/dist/tools/tool-dispatch.js.map +0 -1
  281. package/dist/tools/typecheck.d.ts +0 -3
  282. package/dist/tools/typecheck.d.ts.map +0 -1
  283. package/dist/tools/typecheck.js +0 -48
  284. package/dist/tools/typecheck.js.map +0 -1
  285. package/dist/tools/types.d.ts +0 -62
  286. package/dist/tools/types.d.ts.map +0 -1
  287. package/dist/tools/types.js +0 -7
  288. package/dist/tools/types.js.map +0 -1
  289. package/dist/tools/write-file.d.ts +0 -15
  290. package/dist/tools/write-file.d.ts.map +0 -1
  291. package/dist/tools/write-file.js +0 -52
  292. package/dist/tools/write-file.js.map +0 -1
  293. package/dist/tracing/types.d.ts +0 -10
  294. package/dist/tracing/types.d.ts.map +0 -1
  295. package/dist/tracing/types.js +0 -2
  296. package/dist/tracing/types.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ import { dirname, isAbsolute, relative, resolve } from 'node:path';
2
+ import { mkdirSync } from 'node:fs';
3
+ export function resolvePathWithinRoot(root, targetPath) {
4
+ const resolvedRoot = resolve(root);
5
+ const resolvedTarget = resolve(resolvedRoot, targetPath);
6
+ const rel = relative(resolvedRoot, resolvedTarget);
7
+ if (rel.startsWith('..') || isAbsolute(rel)) {
8
+ throw new Error(`Refusing to write outside project root: ${targetPath}`);
9
+ }
10
+ return resolvedTarget;
11
+ }
12
+ export function ensureParentDir(filePath) {
13
+ mkdirSync(dirname(filePath), { recursive: true });
14
+ }
15
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/commands/app/security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,UAAkB;IACpE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAEnD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function workerStart(dev?: boolean, cwd?: string): number;
2
+ export declare function workerList(cwd?: string): number;
3
+ export declare function scheduleList(cwd?: string): number;
4
+ export declare function scheduleRun(jobName: string, cwd?: string): number;
5
+ //# sourceMappingURL=worker-schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-schedule.d.ts","sourceRoot":"","sources":["../../../src/commands/app/worker-schedule.ts"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,CAAC,GAAG,UAAQ,EAAE,GAAG,SAAgB,GAAG,MAAM,CA2BpE;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,MAAM,CAmCtD;AAED,wBAAgB,YAAY,CAAC,GAAG,SAAgB,GAAG,MAAM,CA2BxD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,MAAM,CAmBxE"}
@@ -0,0 +1,94 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join, relative } from 'node:path';
3
+ import { ui, writeError, writeLine } from '../../console.js';
4
+ import { runBridge, runPnpm } from './command-runtime.js';
5
+ export function workerStart(dev = false, cwd = process.cwd()) {
6
+ const workerFile = join(cwd, 'bootstrap', 'worker.ts');
7
+ const workerBuilt = join(cwd, '.arc', 'node', 'worker.js');
8
+ if (dev || !existsSync(workerBuilt)) {
9
+ if (!existsSync(workerFile)) {
10
+ writeError(ui.fail('No bootstrap/worker.ts found. Run: lumis publish config queue (then create bootstrap/worker.ts)'));
11
+ return 1;
12
+ }
13
+ writeLine();
14
+ writeLine(ui.section('Worker Start (dev)'));
15
+ writeLine(` ${ui.bullet(`Starting ${relative(cwd, workerFile)} via tsx...`)}`);
16
+ writeLine(` ${ui.dim('Press Ctrl+C to stop.')}`);
17
+ writeLine();
18
+ return runPnpm(['exec', 'tsx', workerFile], cwd);
19
+ }
20
+ writeLine();
21
+ writeLine(ui.section('Worker Start'));
22
+ writeLine(` ${ui.bullet(`Starting ${relative(cwd, workerBuilt)}...`)}`);
23
+ writeLine(` ${ui.dim('Press Ctrl+C to stop.')}`);
24
+ writeLine();
25
+ return runPnpm(['exec', 'node', workerBuilt], cwd);
26
+ }
27
+ export function workerList(cwd = process.cwd()) {
28
+ const result = runBridge(['schedule:list', cwd], cwd);
29
+ writeLine();
30
+ writeLine(ui.section('Worker Status'));
31
+ const workerFile = join(cwd, 'bootstrap', 'worker.ts');
32
+ const workerBuilt = join(cwd, '.arc', 'node', 'worker.js');
33
+ writeLine(` ${ui.bullet('bootstrap/worker.ts')} ${existsSync(workerFile) ? ui.ok('present') : ui.warn('missing')}`);
34
+ writeLine(` ${ui.bullet('.arc/node/worker.js')} ${existsSync(workerBuilt) ? ui.ok('built') : ui.dim('not built')}`);
35
+ writeLine();
36
+ if (result.status === 0) {
37
+ try {
38
+ const parsed = JSON.parse(result.stdout);
39
+ if (parsed.jobs.length > 0) {
40
+ writeLine(` ${ui.bold('Scheduled Jobs')}`);
41
+ for (const job of parsed.jobs) {
42
+ const next = job.nextRun ? ui.dim(` next: ${job.nextRun}`) : '';
43
+ writeLine(` ${ui.bullet(job.name)} ${ui.cyan(job.cron)}${next}`);
44
+ }
45
+ writeLine();
46
+ }
47
+ }
48
+ catch {
49
+ // ignore parse errors
50
+ }
51
+ }
52
+ return 0;
53
+ }
54
+ export function scheduleList(cwd = process.cwd()) {
55
+ const result = runBridge(['schedule:list', cwd], cwd);
56
+ if (result.status !== 0) {
57
+ writeError(ui.fail(result.stderr.trim() || 'Failed to list scheduled jobs.'));
58
+ return result.status;
59
+ }
60
+ const parsed = JSON.parse(result.stdout);
61
+ writeLine();
62
+ writeLine(ui.section(`Scheduled Jobs (${parsed.jobs.length})`));
63
+ if (parsed.jobs.length === 0) {
64
+ writeLine(` ${ui.dim('No scheduled jobs registered.')}`);
65
+ writeLine(` ${ui.dim('Export a scheduler from bootstrap/providers.ts and register jobs in bootstrap/schedule.ts.')}`);
66
+ }
67
+ else {
68
+ for (const job of parsed.jobs) {
69
+ const desc = job.description ? ui.dim(` - ${job.description}`) : '';
70
+ const next = job.nextRun ? ui.dim(` (next: ${job.nextRun})`) : '';
71
+ writeLine(` ${ui.cyan(job.name.padEnd(30, ' '))} ${job.cron}${desc}${next}`);
72
+ }
73
+ }
74
+ writeLine();
75
+ return 0;
76
+ }
77
+ export function scheduleRun(jobName, cwd = process.cwd()) {
78
+ if (!jobName) {
79
+ writeError(ui.fail('Usage: lumis schedule:run <JobName>'));
80
+ return 1;
81
+ }
82
+ writeLine();
83
+ writeLine(ui.section('Schedule Run'));
84
+ writeLine(` ${ui.bullet(`Running job: ${jobName}...`)}`);
85
+ const result = runBridge(['schedule:run', cwd, jobName], cwd);
86
+ if (result.status !== 0) {
87
+ writeError(ui.fail(result.stderr.trim() || `Failed to run job "${jobName}".`));
88
+ return result.status;
89
+ }
90
+ writeLine(` ${ui.ok(`Job "${jobName}" completed.`)}`);
91
+ writeLine();
92
+ return 0;
93
+ }
94
+ //# sourceMappingURL=worker-schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-schedule.js","sourceRoot":"","sources":["../../../src/commands/app/worker-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,UAAU,WAAW,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAE3D,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,UAAU,CACR,EAAE,CAAC,IAAI,CACL,kGAAkG,CACnG,CACF,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC5C,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAChF,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAClD,SAAS,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACtC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzE,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC;IACZ,OAAO,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAE3D,SAAS,CACP,KAAK,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAC3G,CAAC;IACF,SAAS,CACP,KAAK,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAC3G,CAAC;IACF,SAAS,EAAE,CAAC;IAEZ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAEtC,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBACvE,CAAC;gBACD,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,gCAAgC,CAAC,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAEtC,CAAC;IAEF,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QAC1D,SAAS,CACP,KAAK,EAAE,CAAC,GAAG,CAAC,4FAA4F,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACtC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,gBAAgB,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,sBAAsB,OAAO,IAAI,CAAC,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;IACvD,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { cacheSearchIndex, cacheViews, clearOptimizationCaches, clearSearchIndex, clearViews, optimizeForProduction } from './app/cache-workflows.js';
2
+ import { cacheConfig, clearConfigCache } from './app/config-cache.js';
3
+ import { pingDatabaseConnection, runDatabaseCommand } from './app/database.js';
4
+ import { publishConfig } from './app/config-publish.js';
5
+ import { cacheRoutes, checkRoutes, clearRouteCache, listRoutes, makeLayout, makePage } from './app/routes.js';
6
+ import { scheduleList, scheduleRun, workerList, workerStart } from './app/worker-schedule.js';
7
+ export { cacheConfig, cacheRoutes, cacheSearchIndex, cacheViews, clearConfigCache, clearOptimizationCaches, checkRoutes, clearRouteCache, clearSearchIndex, clearViews, listRoutes, makeLayout, makePage, optimizeForProduction, pingDatabaseConnection, publishConfig, runDatabaseCommand, scheduleList, scheduleRun, workerList, workerStart, };
8
+ type AuthInstallOptions = {
9
+ iam?: boolean;
10
+ ui?: 'react' | 'vue' | 'svelte' | 'solid';
11
+ };
12
+ type StubPublishOptions = {
13
+ all?: boolean;
14
+ iam?: boolean;
15
+ };
16
+ export declare function showResolvedConfig(configName: string, cwd?: string): number;
17
+ export declare function publishStubs(options?: StubPublishOptions, cwd?: string): number;
18
+ export declare function installAuth(options?: AuthInstallOptions, cwd?: string): number;
19
+ //# sourceMappingURL=app-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-commands.d.ts","sourceRoot":"","sources":["../../src/commands/app-commands.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,QAAQ,EACT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EACL,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,GACZ,CAAC;AAEF,KAAK,kBAAkB,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAC;AACvF,KAAK,kBAAkB,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAuB3D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,MAAM,CAalF;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,kBAAuB,EAAE,GAAG,SAAgB,GAAG,MAAM,CAa1F;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,EAAE,GAAG,SAAgB,GAAG,MAAM,CAsBzF"}
@@ -0,0 +1,77 @@
1
+ import { existsSync, writeFileSync } from 'node:fs';
2
+ import { join, relative } from 'node:path';
3
+ import { generateAuthModule, generateAuthUI, generateIAMModule, generateLangFile, generateUserModule, publishAuthStubs, publishIAMStubs, } from '@illumiarq/auth-starter';
4
+ import { ui, writeError, writeLine } from '../console.js';
5
+ import { runBridge } from './app/command-runtime.js';
6
+ import { cacheSearchIndex, cacheViews, clearOptimizationCaches, clearSearchIndex, clearViews, optimizeForProduction, } from './app/cache-workflows.js';
7
+ import { cacheConfig, clearConfigCache } from './app/config-cache.js';
8
+ import { pingDatabaseConnection, runDatabaseCommand } from './app/database.js';
9
+ import { publishConfig } from './app/config-publish.js';
10
+ import { cacheRoutes, checkRoutes, clearRouteCache, listRoutes, makeLayout, makePage, } from './app/routes.js';
11
+ import { ensureParentDir, resolvePathWithinRoot } from './app/security.js';
12
+ import { scheduleList, scheduleRun, workerList, workerStart } from './app/worker-schedule.js';
13
+ export { cacheConfig, cacheRoutes, cacheSearchIndex, cacheViews, clearConfigCache, clearOptimizationCaches, checkRoutes, clearRouteCache, clearSearchIndex, clearViews, listRoutes, makeLayout, makePage, optimizeForProduction, pingDatabaseConnection, publishConfig, runDatabaseCommand, scheduleList, scheduleRun, workerList, workerStart, };
14
+ function writeGeneratedFiles(cwd, files) {
15
+ let created = 0;
16
+ let skipped = 0;
17
+ for (const file of files) {
18
+ const target = resolvePathWithinRoot(cwd, file.path);
19
+ ensureParentDir(target);
20
+ if (existsSync(target) && file.path !== 'lang/en.json') {
21
+ skipped += 1;
22
+ continue;
23
+ }
24
+ writeFileSync(target, file.content, 'utf8');
25
+ created += 1;
26
+ }
27
+ return { created, skipped };
28
+ }
29
+ export function showResolvedConfig(configName, cwd = process.cwd()) {
30
+ const result = runBridge(['config:show', cwd, configName], cwd);
31
+ if (result.status !== 0) {
32
+ writeError(ui.fail(result.stderr.trim() || `Unable to load config/${configName}.ts`));
33
+ return result.status;
34
+ }
35
+ const parsed = JSON.parse(result.stdout);
36
+ writeLine();
37
+ writeLine(ui.section(`Config ${configName}`));
38
+ writeLine(JSON.stringify(parsed.config, null, 2));
39
+ writeLine();
40
+ return 0;
41
+ }
42
+ export function publishStubs(options = {}, cwd = process.cwd()) {
43
+ if (options.all || !options.iam) {
44
+ publishAuthStubs(cwd);
45
+ }
46
+ if (options.all || options.iam) {
47
+ publishIAMStubs(cwd);
48
+ }
49
+ writeLine();
50
+ writeLine(ui.section('Stub Publish'));
51
+ writeLine(` ${ui.ok(`Published stubs into ${relative(cwd, join(cwd, 'stubs')) || 'stubs'}`)}`);
52
+ writeLine();
53
+ return 0;
54
+ }
55
+ export function installAuth(options = {}, cwd = process.cwd()) {
56
+ const generated = options.iam
57
+ ? generateIAMModule()
58
+ : [...generateAuthModule(), ...generateUserModule()];
59
+ const uiFiles = options.ui ? generateAuthUI(options.ui) : [];
60
+ const langFile = generateLangFile(cwd);
61
+ const result = writeGeneratedFiles(cwd, [...generated, ...uiFiles, langFile]);
62
+ writeLine();
63
+ writeLine(ui.section('Auth Install'));
64
+ writeLine(` ${ui.ok(`Created ${result.created} files`)}`);
65
+ if (result.skipped > 0) {
66
+ writeLine(` ${ui.warn(`Skipped ${result.skipped} existing files`)}`);
67
+ }
68
+ if (options.ui) {
69
+ writeLine(` ${ui.bullet(`UI scaffold: ${options.ui}`)}`);
70
+ }
71
+ if (options.iam) {
72
+ writeLine(` ${ui.bullet('Installed IAM module scaffold')}`);
73
+ }
74
+ writeLine();
75
+ return 0;
76
+ }
77
+ //# sourceMappingURL=app-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-commands.js","sourceRoot":"","sources":["../../src/commands/app-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `lumis build:vercel-fn` — build a Vercel-compatible serverless entrypoint.
3
+ *
4
+ * Steps:
5
+ * 1. Build .arc/node/app.js (project-owned build:node script)
6
+ * 2. Write api/index.js wrapper using hono/vercel handle()
7
+ */
8
+ export declare function buildVercelFunction(cwd?: string): number;
9
+ //# sourceMappingURL=build-vercel-fn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-vercel-fn.d.ts","sourceRoot":"","sources":["../../src/commands/build-vercel-fn.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAwB/D"}
@@ -0,0 +1,32 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { buildApp } from './build.js';
3
+ import { ui, writeError, writeLine } from '../console.js';
4
+ import { arcNodeApp } from '../paths.js';
5
+ import { writeVercelFunctionWrapper } from '../vercel-wrapper.js';
6
+ /**
7
+ * `lumis build:vercel-fn` — build a Vercel-compatible serverless entrypoint.
8
+ *
9
+ * Steps:
10
+ * 1. Build .arc/node/app.js (project-owned build:node script)
11
+ * 2. Write api/index.js wrapper using hono/vercel handle()
12
+ */
13
+ export function buildVercelFunction(cwd = process.cwd()) {
14
+ writeLine();
15
+ writeLine(ui.section('Vercel Function Build'));
16
+ const buildExit = buildApp({ target: 'node' }, cwd);
17
+ if (buildExit !== 0) {
18
+ writeError(ui.fail('Build failed while producing .arc/node/app.js'));
19
+ return buildExit;
20
+ }
21
+ if (!existsSync(arcNodeApp(cwd))) {
22
+ writeError(ui.fail('Expected .arc/node/app.js after build:node, but file is missing.'));
23
+ return 1;
24
+ }
25
+ const wrapperPath = writeVercelFunctionWrapper(cwd);
26
+ writeLine(` ${ui.ok('Generated Vercel entrypoint')}`);
27
+ writeLine(` ${ui.bullet(wrapperPath)}`);
28
+ writeLine(` ${ui.dim('Add vercel.json rewrite: { "source": "/(.*)", "destination": "/api/index" }')}`);
29
+ writeLine();
30
+ return 0;
31
+ }
32
+ //# sourceMappingURL=build-vercel-fn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-vercel-fn.js","sourceRoot":"","sources":["../../src/commands/build-vercel-fn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrD,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACjC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IACvD,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACzC,SAAS,CACP,KAAK,EAAE,CAAC,GAAG,CAAC,6EAA6E,CAAC,EAAE,CAC7F,CAAC;IACF,SAAS,EAAE,CAAC;IAEZ,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface BuildOptions {
2
+ /** Target to build. Omit for full project build script. */
3
+ target?: 'node' | 'static' | 'cloudflare' | 'vercel';
4
+ }
5
+ /**
6
+ * `lumis build` — build the LumiARQ application.
7
+ *
8
+ * Delegates to the project's own `build`, `build:node`, or `build:web`
9
+ * pnpm scripts so each app controls its own build pipeline.
10
+ *
11
+ * @returns Exit code.
12
+ */
13
+ export declare function buildApp(options?: BuildOptions, cwd?: string): number;
14
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;CACtD;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,OAAO,GAAE,YAAiB,EAAE,GAAG,SAAgB,GAAG,MAAM,CAgBhF"}
@@ -0,0 +1,24 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ import { buildVercelFunction } from './build-vercel-fn.js';
3
+ /**
4
+ * `lumis build` — build the LumiARQ application.
5
+ *
6
+ * Delegates to the project's own `build`, `build:node`, or `build:web`
7
+ * pnpm scripts so each app controls its own build pipeline.
8
+ *
9
+ * @returns Exit code.
10
+ */
11
+ export function buildApp(options = {}, cwd = process.cwd()) {
12
+ const target = options.target;
13
+ if (target === 'vercel') {
14
+ return buildVercelFunction(cwd);
15
+ }
16
+ const script = target ? `build:${target}` : 'build';
17
+ const result = spawnSync('pnpm', ['run', script], {
18
+ cwd,
19
+ stdio: 'inherit',
20
+ env: { ...process.env, NODE_ENV: 'production' },
21
+ });
22
+ return result.status ?? 1;
23
+ }
24
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAO3D;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,UAAwB,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAEpD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;QAChD,GAAG;QACH,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE;KAChD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function showInfo(cwd?: string): number;
2
+ export declare function readProjectLayout(cwd?: string): {
3
+ bootstrap: boolean;
4
+ config: boolean;
5
+ entry: boolean;
6
+ modules: boolean;
7
+ rootConfigs: string[];
8
+ };
9
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAsBA,wBAAgB,QAAQ,CAAC,GAAG,SAAgB,GAAG,MAAM,CAqBpD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,SAAgB,GAAG;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAUA"}
@@ -0,0 +1,41 @@
1
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { ui, writeLine } from '../console.js';
4
+ const ROOT_CONFIG_PATTERN = /^(?:eslint\.config\.[cm]?[jt]s|postcss\.config\.[cm]?[jt]s|playwright\.config\.[cm]?[jt]s|vitest\.config\.[cm]?[jt]s|components\.json|next\.config\.[cm]?[jt]s|vercel\.json|tsconfig(?:\.build)?\.json)$/;
5
+ function readPackageJson(cwd) {
6
+ const packageJsonPath = join(cwd, 'package.json');
7
+ if (!existsSync(packageJsonPath)) {
8
+ return null;
9
+ }
10
+ return JSON.parse(readFileSync(packageJsonPath, 'utf8'));
11
+ }
12
+ export function showInfo(cwd = process.cwd()) {
13
+ const packageJson = readPackageJson(cwd);
14
+ const scripts = Object.keys(packageJson?.scripts ?? {});
15
+ const layout = readProjectLayout(cwd);
16
+ writeLine();
17
+ writeLine(ui.section('Project Info'));
18
+ writeLine(` ${ui.bold('root')} ${cwd}`);
19
+ writeLine(` ${ui.bold('package')} ${packageJson?.name ?? '(unknown)'}`);
20
+ writeLine(` ${ui.bold('node')} ${process.version}`);
21
+ writeLine(` ${ui.bold('bootstrap')} ${layout.bootstrap ? 'bootstrap/' : 'missing'}`);
22
+ writeLine(` ${ui.bold('config')} ${layout.config ? 'config/' : 'missing'}`);
23
+ writeLine(` ${ui.bold('entry')} ${layout.entry ? 'entry/' : 'missing'}`);
24
+ writeLine(` ${ui.bold('modules')} ${layout.modules ? 'src/modules' : 'missing'}`);
25
+ writeLine(` ${ui.bold('root-configs')} ${layout.rootConfigs.length > 0 ? `${layout.rootConfigs.length} (${layout.rootConfigs.join(', ')})` : 'none'}`);
26
+ writeLine(` ${ui.bold('scripts')} ${scripts.length > 0 ? scripts.join(', ') : '(none)'}`);
27
+ writeLine();
28
+ return 0;
29
+ }
30
+ export function readProjectLayout(cwd = process.cwd()) {
31
+ return {
32
+ bootstrap: existsSync(join(cwd, 'bootstrap')),
33
+ config: existsSync(join(cwd, 'src', 'config')),
34
+ entry: existsSync(join(cwd, 'entry')),
35
+ modules: existsSync(join(cwd, 'src', 'modules')),
36
+ rootConfigs: readdirSync(cwd)
37
+ .filter((name) => ROOT_CONFIG_PATTERN.test(name))
38
+ .sort(),
39
+ };
40
+ }
41
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function generateKeys(cwd?: string): number;
2
+ export declare function rotateKeys(cwd?: string): number;
3
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAgEA,wBAAgB,YAAY,CAAC,GAAG,SAAgB,GAAG,MAAM,CAExD;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,60 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { generateKeyPairSync, randomBytes } from 'node:crypto';
3
+ import { join } from 'node:path';
4
+ import { ui, writeLine } from '../console.js';
5
+ function parseEnvFile(raw) {
6
+ const entries = new Map();
7
+ for (const line of raw.split(/\r?\n/g)) {
8
+ if (!line || line.trim().startsWith('#'))
9
+ continue;
10
+ const equalsIndex = line.indexOf('=');
11
+ if (equalsIndex <= 0)
12
+ continue;
13
+ const key = line.slice(0, equalsIndex).trim();
14
+ const value = line.slice(equalsIndex + 1);
15
+ entries.set(key, value);
16
+ }
17
+ return entries;
18
+ }
19
+ function serializeEnv(entries) {
20
+ const lines = [...entries.entries()].map(([key, value]) => `${key}=${value}`);
21
+ return `${lines.join('\n')}\n`;
22
+ }
23
+ function buildSecrets() {
24
+ const { privateKey, publicKey } = generateKeyPairSync('rsa', {
25
+ modulusLength: 4096,
26
+ privateKeyEncoding: { type: 'pkcs8', format: 'pem' },
27
+ publicKeyEncoding: { type: 'spki', format: 'pem' },
28
+ });
29
+ return {
30
+ privateKey: JSON.stringify(privateKey).slice(1, -1),
31
+ publicKey: JSON.stringify(publicKey).slice(1, -1),
32
+ sessionSecret: randomBytes(32).toString('hex'),
33
+ };
34
+ }
35
+ function writeSecrets(cwd, mode) {
36
+ const envPath = join(cwd, '.env');
37
+ const current = existsSync(envPath)
38
+ ? parseEnvFile(readFileSync(envPath, 'utf8'))
39
+ : new Map();
40
+ const secrets = buildSecrets();
41
+ current.set('JWT_PRIVATE_KEY', secrets.privateKey);
42
+ current.set('JWT_PUBLIC_KEY', secrets.publicKey);
43
+ current.set('SESSION_SECRET', secrets.sessionSecret);
44
+ writeFileSync(envPath, serializeEnv(current), 'utf8');
45
+ writeLine();
46
+ writeLine(ui.section(mode === 'generate' ? 'Key Generate' : 'Key Rotate'));
47
+ writeLine(` ${ui.ok(`Updated ${envPath}`)}`);
48
+ writeLine(` ${ui.bullet('JWT_PRIVATE_KEY refreshed')}`);
49
+ writeLine(` ${ui.bullet('JWT_PUBLIC_KEY refreshed')}`);
50
+ writeLine(` ${ui.bullet('SESSION_SECRET refreshed')}`);
51
+ writeLine();
52
+ return 0;
53
+ }
54
+ export function generateKeys(cwd = process.cwd()) {
55
+ return writeSecrets(cwd, 'generate');
56
+ }
57
+ export function rotateKeys(cwd = process.cwd()) {
58
+ return writeSecrets(cwd, 'rotate');
59
+ }
60
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ type MaintenanceOptions = {
2
+ message?: string;
3
+ secret?: string;
4
+ allowedIps?: string[];
5
+ };
6
+ export declare function enableMaintenanceMode(options?: MaintenanceOptions, cwd?: string): number;
7
+ export declare function disableMaintenanceMode(cwd?: string): number;
8
+ export {};
9
+ //# sourceMappingURL=maintenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../src/commands/maintenance.ts"],"names":[],"mappings":"AAKA,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,kBAAuB,EAChC,GAAG,SAAgB,GAClB,MAAM,CAyBR;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAYlE"}
@@ -0,0 +1,38 @@
1
+ import { existsSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { ui, writeLine } from '../console.js';
4
+ export function enableMaintenanceMode(options = {}, cwd = process.cwd()) {
5
+ const targetPath = join(cwd, '.maintenance');
6
+ const payload = {
7
+ ...(options.message ? { message: options.message } : {}),
8
+ ...(options.secret ? { secret: options.secret } : {}),
9
+ ...(options.allowedIps && options.allowedIps.length > 0
10
+ ? { allowedIps: options.allowedIps }
11
+ : {}),
12
+ downAt: new Date().toISOString(),
13
+ };
14
+ writeFileSync(targetPath, `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
15
+ writeLine();
16
+ writeLine(ui.section('Maintenance Down'));
17
+ writeLine(` ${ui.ok(`Wrote ${targetPath}`)}`);
18
+ if (options.message) {
19
+ writeLine(` ${ui.bullet(`message: ${options.message}`)}`);
20
+ }
21
+ if (options.allowedIps && options.allowedIps.length > 0) {
22
+ writeLine(` ${ui.bullet(`allow: ${options.allowedIps.join(', ')}`)}`);
23
+ }
24
+ writeLine();
25
+ return 0;
26
+ }
27
+ export function disableMaintenanceMode(cwd = process.cwd()) {
28
+ const targetPath = join(cwd, '.maintenance');
29
+ if (existsSync(targetPath)) {
30
+ rmSync(targetPath, { force: true });
31
+ }
32
+ writeLine();
33
+ writeLine(ui.section('Maintenance Up'));
34
+ writeLine(` ${ui.ok(`Removed ${targetPath}`)}`);
35
+ writeLine();
36
+ return 0;
37
+ }
38
+ //# sourceMappingURL=maintenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../../src/commands/maintenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAQ9C,MAAM,UAAU,qBAAqB,CACnC,UAA8B,EAAE,EAChC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACrD,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACjC,CAAC;IAEF,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE3E,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,SAAS,EAAE,CAAC;IAEZ,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,WAAW,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IACjD,SAAS,EAAE,CAAC;IAEZ,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listModules(cwd?: string): number;
2
+ //# sourceMappingURL=module-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-list.d.ts","sourceRoot":"","sources":["../../src/commands/module-list.ts"],"names":[],"mappings":"AAKA,wBAAgB,WAAW,CAAC,GAAG,SAAgB,GAAG,MAAM,CAyBvD"}
@@ -0,0 +1,27 @@
1
+ import { existsSync, readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { ui, writeLine } from '../console.js';
4
+ export function listModules(cwd = process.cwd()) {
5
+ const modulesDir = join(cwd, 'src', 'modules');
6
+ if (!existsSync(modulesDir)) {
7
+ writeLine();
8
+ writeLine(ui.fail('No src/modules directory found.'));
9
+ writeLine();
10
+ return 1;
11
+ }
12
+ const modules = readdirSync(modulesDir, { withFileTypes: true })
13
+ .filter((entry) => entry.isDirectory())
14
+ .map((entry) => entry.name)
15
+ .sort((left, right) => left.localeCompare(right));
16
+ writeLine();
17
+ writeLine(ui.section(`Modules (${modules.length})`));
18
+ if (modules.length === 0) {
19
+ writeLine(` ${ui.dim('No modules discovered.')}`);
20
+ }
21
+ for (const moduleName of modules) {
22
+ writeLine(` ${ui.bullet(moduleName)}`);
23
+ }
24
+ writeLine();
25
+ return 0;
26
+ }
27
+ //# sourceMappingURL=module-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-list.js","sourceRoot":"","sources":["../../src/commands/module-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACtD,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC7D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;QACjC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,SAAS,EAAE,CAAC;IAEZ,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface PreviewOptions {
2
+ port?: number;
3
+ target?: 'node' | 'static' | 'cloudflare';
4
+ }
5
+ /**
6
+ * `lumis preview` — preview the production build locally.
7
+ *
8
+ * Auto-builds if `.arc/node/app.js` is absent, then writes
9
+ * `.arc/.server.mjs` and starts `node` (no --watch).
10
+ *
11
+ * @returns Exit code.
12
+ */
13
+ export declare function previewApp(options?: PreviewOptions, cwd?: string): Promise<number>;
14
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;CAC3C;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,cAAmB,EAC5B,GAAG,SAAgB,GAClB,OAAO,CAAC,MAAM,CAAC,CAwCjB"}