@illumiarq/lumis 1.2.8 → 1.2.10

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/README.md +38 -0
  2. package/dist/adapter-loader.d.ts +67 -0
  3. package/dist/adapter-loader.d.ts.map +1 -0
  4. package/dist/adapter-loader.js +273 -0
  5. package/dist/adapter-loader.js.map +1 -0
  6. package/dist/cli.d.ts +16 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +173 -402
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/commands.command.d.ts +38 -0
  11. package/dist/commands/commands.command.d.ts.map +1 -0
  12. package/dist/commands/commands.command.js +176 -0
  13. package/dist/commands/commands.command.js.map +1 -0
  14. package/dist/commands/doctor.command.d.ts +9 -0
  15. package/dist/commands/doctor.command.d.ts.map +1 -0
  16. package/dist/commands/doctor.command.js +922 -0
  17. package/dist/commands/doctor.command.js.map +1 -0
  18. package/dist/commands/init.command.d.ts +9 -0
  19. package/dist/commands/init.command.d.ts.map +1 -0
  20. package/dist/commands/init.command.js +135 -0
  21. package/dist/commands/init.command.js.map +1 -0
  22. package/dist/commands/intent.command.d.ts +26 -0
  23. package/dist/commands/intent.command.d.ts.map +1 -0
  24. package/dist/commands/intent.command.js +211 -0
  25. package/dist/commands/intent.command.js.map +1 -0
  26. package/dist/commands/ir-rebuild.command.d.ts +9 -0
  27. package/dist/commands/ir-rebuild.command.d.ts.map +1 -0
  28. package/dist/commands/ir-rebuild.command.js +36 -0
  29. package/dist/commands/ir-rebuild.command.js.map +1 -0
  30. package/dist/commands/ir-show.command.d.ts +9 -0
  31. package/dist/commands/ir-show.command.d.ts.map +1 -0
  32. package/dist/commands/ir-show.command.js +32 -0
  33. package/dist/commands/ir-show.command.js.map +1 -0
  34. package/dist/commands/make.command.d.ts +9 -0
  35. package/dist/commands/make.command.d.ts.map +1 -0
  36. package/dist/commands/make.command.js +93 -0
  37. package/dist/commands/make.command.js.map +1 -0
  38. package/dist/commands/pack.command.d.ts +16 -0
  39. package/dist/commands/pack.command.d.ts.map +1 -0
  40. package/dist/commands/pack.command.js +44 -0
  41. package/dist/commands/pack.command.js.map +1 -0
  42. package/dist/commands/runtime.command.d.ts +6 -0
  43. package/dist/commands/runtime.command.d.ts.map +1 -0
  44. package/dist/commands/runtime.command.js +379 -0
  45. package/dist/commands/runtime.command.js.map +1 -0
  46. package/dist/commands/runtime.d.ts +45 -0
  47. package/dist/commands/runtime.d.ts.map +1 -0
  48. package/dist/commands/runtime.js +66 -0
  49. package/dist/commands/runtime.js.map +1 -0
  50. package/dist/commands/tinker-agent-plan.d.ts +26 -0
  51. package/dist/commands/tinker-agent-plan.d.ts.map +1 -0
  52. package/dist/commands/tinker-agent-plan.js +115 -0
  53. package/dist/commands/tinker-agent-plan.js.map +1 -0
  54. package/dist/commands/tinker-chat-commands.d.ts +19 -0
  55. package/dist/commands/tinker-chat-commands.d.ts.map +1 -0
  56. package/dist/commands/tinker-chat-commands.js +263 -0
  57. package/dist/commands/tinker-chat-commands.js.map +1 -0
  58. package/dist/commands/tinker-chat-runtime.d.ts +30 -0
  59. package/dist/commands/tinker-chat-runtime.d.ts.map +1 -0
  60. package/dist/commands/tinker-chat-runtime.js +227 -0
  61. package/dist/commands/tinker-chat-runtime.js.map +1 -0
  62. package/dist/commands/tinker-classic-mode.d.ts +15 -0
  63. package/dist/commands/tinker-classic-mode.d.ts.map +1 -0
  64. package/dist/commands/tinker-classic-mode.js +160 -0
  65. package/dist/commands/tinker-classic-mode.js.map +1 -0
  66. package/dist/commands/tinker-eval.command.d.ts +3 -0
  67. package/dist/commands/tinker-eval.command.d.ts.map +1 -0
  68. package/dist/commands/tinker-eval.command.js +151 -0
  69. package/dist/commands/tinker-eval.command.js.map +1 -0
  70. package/dist/commands/tinker-repl-display.d.ts +15 -0
  71. package/dist/commands/tinker-repl-display.d.ts.map +1 -0
  72. package/dist/commands/tinker-repl-display.js +147 -0
  73. package/dist/commands/tinker-repl-display.js.map +1 -0
  74. package/dist/commands/tinker-session-runtime.d.ts +27 -0
  75. package/dist/commands/tinker-session-runtime.d.ts.map +1 -0
  76. package/dist/commands/tinker-session-runtime.js +196 -0
  77. package/dist/commands/tinker-session-runtime.js.map +1 -0
  78. package/dist/commands/tinker.command.d.ts +9 -0
  79. package/dist/commands/tinker.command.d.ts.map +1 -0
  80. package/dist/commands/tinker.command.js +142 -0
  81. package/dist/commands/tinker.command.js.map +1 -0
  82. package/dist/commands/use.command.d.ts +10 -0
  83. package/dist/commands/use.command.d.ts.map +1 -0
  84. package/dist/commands/use.command.js +69 -0
  85. package/dist/commands/use.command.js.map +1 -0
  86. package/dist/config-loader.d.ts +110 -0
  87. package/dist/config-loader.d.ts.map +1 -0
  88. package/dist/config-loader.js +119 -0
  89. package/dist/config-loader.js.map +1 -0
  90. package/dist/index.d.ts +19 -15
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +12 -12
  93. package/dist/index.js.map +1 -1
  94. package/dist/launcher.d.ts +16 -0
  95. package/dist/launcher.d.ts.map +1 -0
  96. package/dist/launcher.js +301 -0
  97. package/dist/launcher.js.map +1 -0
  98. package/dist/lib/file-scanner.d.ts +8 -0
  99. package/dist/lib/file-scanner.d.ts.map +1 -0
  100. package/dist/lib/file-scanner.js +70 -0
  101. package/dist/lib/file-scanner.js.map +1 -0
  102. package/dist/lib/tinker-memory.d.ts +19 -0
  103. package/dist/lib/tinker-memory.d.ts.map +1 -0
  104. package/dist/lib/tinker-memory.js +107 -0
  105. package/dist/lib/tinker-memory.js.map +1 -0
  106. package/dist/lib/tinker-observer.d.ts +47 -0
  107. package/dist/lib/tinker-observer.d.ts.map +1 -0
  108. package/dist/lib/tinker-observer.js +77 -0
  109. package/dist/lib/tinker-observer.js.map +1 -0
  110. package/dist/lib/tinker-policy.d.ts +21 -0
  111. package/dist/lib/tinker-policy.d.ts.map +1 -0
  112. package/dist/lib/tinker-policy.js +102 -0
  113. package/dist/lib/tinker-policy.js.map +1 -0
  114. package/dist/lib/tinker-replay.d.ts +51 -0
  115. package/dist/lib/tinker-replay.d.ts.map +1 -0
  116. package/dist/lib/tinker-replay.js +123 -0
  117. package/dist/lib/tinker-replay.js.map +1 -0
  118. package/dist/{console.d.ts → output/ansi.d.ts} +4 -8
  119. package/dist/output/ansi.d.ts.map +1 -0
  120. package/dist/{console.js → output/ansi.js} +4 -12
  121. package/dist/output/ansi.js.map +1 -0
  122. package/dist/output/plan-display.d.ts +4 -0
  123. package/dist/output/plan-display.d.ts.map +1 -0
  124. package/dist/output/plan-display.js +49 -0
  125. package/dist/output/plan-display.js.map +1 -0
  126. package/dist/output/result-display.d.ts +5 -0
  127. package/dist/output/result-display.d.ts.map +1 -0
  128. package/dist/output/result-display.js +17 -0
  129. package/dist/output/result-display.js.map +1 -0
  130. package/dist/plugins/tinker-plugin.d.ts +86 -0
  131. package/dist/plugins/tinker-plugin.d.ts.map +1 -0
  132. package/dist/plugins/tinker-plugin.js +42 -0
  133. package/dist/plugins/tinker-plugin.js.map +1 -0
  134. package/dist/router-preferences.d.ts +5 -0
  135. package/dist/router-preferences.d.ts.map +1 -0
  136. package/dist/router-preferences.js +22 -0
  137. package/dist/router-preferences.js.map +1 -0
  138. package/dist/runtime/executor.d.ts +33 -0
  139. package/dist/runtime/executor.d.ts.map +1 -0
  140. package/dist/runtime/executor.js +180 -0
  141. package/dist/runtime/executor.js.map +1 -0
  142. package/dist/runtime/orchestration.d.ts +43 -0
  143. package/dist/runtime/orchestration.d.ts.map +1 -0
  144. package/dist/runtime/orchestration.js +209 -0
  145. package/dist/runtime/orchestration.js.map +1 -0
  146. package/dist/runtime/policy.d.ts +49 -0
  147. package/dist/runtime/policy.d.ts.map +1 -0
  148. package/dist/runtime/policy.js +78 -0
  149. package/dist/runtime/policy.js.map +1 -0
  150. package/dist/runtime/profiles.d.ts +15 -0
  151. package/dist/runtime/profiles.d.ts.map +1 -0
  152. package/dist/runtime/profiles.js +131 -0
  153. package/dist/runtime/profiles.js.map +1 -0
  154. package/dist/runtime/transcripts.d.ts +59 -0
  155. package/dist/runtime/transcripts.d.ts.map +1 -0
  156. package/dist/runtime/transcripts.js +172 -0
  157. package/dist/runtime/transcripts.js.map +1 -0
  158. package/dist/tools/git-diff.d.ts +3 -0
  159. package/dist/tools/git-diff.d.ts.map +1 -0
  160. package/dist/tools/git-diff.js +16 -0
  161. package/dist/tools/git-diff.js.map +1 -0
  162. package/dist/tools/index.d.ts +24 -0
  163. package/dist/tools/index.d.ts.map +1 -0
  164. package/dist/tools/index.js +88 -0
  165. package/dist/tools/index.js.map +1 -0
  166. package/dist/tools/lint.d.ts +3 -0
  167. package/dist/tools/lint.d.ts.map +1 -0
  168. package/dist/tools/lint.js +35 -0
  169. package/dist/tools/lint.js.map +1 -0
  170. package/dist/tools/read-file.d.ts +3 -0
  171. package/dist/tools/read-file.d.ts.map +1 -0
  172. package/dist/tools/read-file.js +47 -0
  173. package/dist/tools/read-file.js.map +1 -0
  174. package/dist/tools/run-command.d.ts +3 -0
  175. package/dist/tools/run-command.d.ts.map +1 -0
  176. package/dist/tools/run-command.js +71 -0
  177. package/dist/tools/run-command.js.map +1 -0
  178. package/dist/tools/run-tests.d.ts +3 -0
  179. package/dist/tools/run-tests.d.ts.map +1 -0
  180. package/dist/tools/run-tests.js +49 -0
  181. package/dist/tools/run-tests.js.map +1 -0
  182. package/dist/tools/tool-dispatch.d.ts +32 -0
  183. package/dist/tools/tool-dispatch.d.ts.map +1 -0
  184. package/dist/tools/tool-dispatch.js +120 -0
  185. package/dist/tools/tool-dispatch.js.map +1 -0
  186. package/dist/tools/typecheck.d.ts +3 -0
  187. package/dist/tools/typecheck.d.ts.map +1 -0
  188. package/dist/tools/typecheck.js +48 -0
  189. package/dist/tools/typecheck.js.map +1 -0
  190. package/dist/tools/types.d.ts +62 -0
  191. package/dist/tools/types.d.ts.map +1 -0
  192. package/dist/tools/types.js +7 -0
  193. package/dist/tools/types.js.map +1 -0
  194. package/dist/tools/write-file.d.ts +15 -0
  195. package/dist/tools/write-file.d.ts.map +1 -0
  196. package/dist/tools/write-file.js +52 -0
  197. package/dist/tools/write-file.js.map +1 -0
  198. package/dist/tracing/types.d.ts +10 -0
  199. package/dist/tracing/types.d.ts.map +1 -0
  200. package/dist/tracing/types.js +2 -0
  201. package/dist/tracing/types.js.map +1 -0
  202. package/package.json +37 -19
  203. package/dist/bridges/project-bridge.d.ts +0 -2
  204. package/dist/bridges/project-bridge.d.ts.map +0 -1
  205. package/dist/bridges/project-bridge.js +0 -171
  206. package/dist/bridges/project-bridge.js.map +0 -1
  207. package/dist/commands/app/cache-workflows.d.ts +0 -7
  208. package/dist/commands/app/cache-workflows.d.ts.map +0 -1
  209. package/dist/commands/app/cache-workflows.js +0 -139
  210. package/dist/commands/app/cache-workflows.js.map +0 -1
  211. package/dist/commands/app/command-runtime.d.ts +0 -11
  212. package/dist/commands/app/command-runtime.d.ts.map +0 -1
  213. package/dist/commands/app/command-runtime.js +0 -41
  214. package/dist/commands/app/command-runtime.js.map +0 -1
  215. package/dist/commands/app/config-cache.d.ts +0 -3
  216. package/dist/commands/app/config-cache.d.ts.map +0 -1
  217. package/dist/commands/app/config-cache.js +0 -75
  218. package/dist/commands/app/config-cache.js.map +0 -1
  219. package/dist/commands/app/config-publish.d.ts +0 -2
  220. package/dist/commands/app/config-publish.d.ts.map +0 -1
  221. package/dist/commands/app/config-publish.js +0 -68
  222. package/dist/commands/app/config-publish.js.map +0 -1
  223. package/dist/commands/app/config-stubs.d.ts +0 -3
  224. package/dist/commands/app/config-stubs.d.ts.map +0 -1
  225. package/dist/commands/app/config-stubs.js +0 -154
  226. package/dist/commands/app/config-stubs.js.map +0 -1
  227. package/dist/commands/app/database.d.ts +0 -3
  228. package/dist/commands/app/database.d.ts.map +0 -1
  229. package/dist/commands/app/database.js +0 -221
  230. package/dist/commands/app/database.js.map +0 -1
  231. package/dist/commands/app/docs.d.ts +0 -7
  232. package/dist/commands/app/docs.d.ts.map +0 -1
  233. package/dist/commands/app/docs.js +0 -61
  234. package/dist/commands/app/docs.js.map +0 -1
  235. package/dist/commands/app/routes.d.ts +0 -5
  236. package/dist/commands/app/routes.d.ts.map +0 -1
  237. package/dist/commands/app/routes.js +0 -95
  238. package/dist/commands/app/routes.js.map +0 -1
  239. package/dist/commands/app/security.d.ts +0 -3
  240. package/dist/commands/app/security.d.ts.map +0 -1
  241. package/dist/commands/app/security.js +0 -15
  242. package/dist/commands/app/security.js.map +0 -1
  243. package/dist/commands/app/worker-schedule.d.ts +0 -5
  244. package/dist/commands/app/worker-schedule.d.ts.map +0 -1
  245. package/dist/commands/app/worker-schedule.js +0 -94
  246. package/dist/commands/app/worker-schedule.js.map +0 -1
  247. package/dist/commands/app-commands.d.ts +0 -19
  248. package/dist/commands/app-commands.d.ts.map +0 -1
  249. package/dist/commands/app-commands.js +0 -77
  250. package/dist/commands/app-commands.js.map +0 -1
  251. package/dist/commands/build-vercel-fn.d.ts +0 -9
  252. package/dist/commands/build-vercel-fn.d.ts.map +0 -1
  253. package/dist/commands/build-vercel-fn.js +0 -32
  254. package/dist/commands/build-vercel-fn.js.map +0 -1
  255. package/dist/commands/build.d.ts +0 -14
  256. package/dist/commands/build.d.ts.map +0 -1
  257. package/dist/commands/build.js +0 -24
  258. package/dist/commands/build.js.map +0 -1
  259. package/dist/commands/info.d.ts +0 -2
  260. package/dist/commands/info.d.ts.map +0 -1
  261. package/dist/commands/info.js +0 -25
  262. package/dist/commands/info.js.map +0 -1
  263. package/dist/commands/keys.d.ts +0 -3
  264. package/dist/commands/keys.d.ts.map +0 -1
  265. package/dist/commands/keys.js +0 -60
  266. package/dist/commands/keys.js.map +0 -1
  267. package/dist/commands/maintenance.d.ts +0 -9
  268. package/dist/commands/maintenance.d.ts.map +0 -1
  269. package/dist/commands/maintenance.js +0 -38
  270. package/dist/commands/maintenance.js.map +0 -1
  271. package/dist/commands/module-list.d.ts +0 -2
  272. package/dist/commands/module-list.d.ts.map +0 -1
  273. package/dist/commands/module-list.js +0 -27
  274. package/dist/commands/module-list.js.map +0 -1
  275. package/dist/commands/preview.d.ts +0 -14
  276. package/dist/commands/preview.d.ts.map +0 -1
  277. package/dist/commands/preview.js +0 -49
  278. package/dist/commands/preview.js.map +0 -1
  279. package/dist/commands/serve.d.ts +0 -16
  280. package/dist/commands/serve.d.ts.map +0 -1
  281. package/dist/commands/serve.js +0 -61
  282. package/dist/commands/serve.js.map +0 -1
  283. package/dist/console.d.ts.map +0 -1
  284. package/dist/console.js.map +0 -1
  285. package/dist/paths.d.ts +0 -21
  286. package/dist/paths.d.ts.map +0 -1
  287. package/dist/paths.js +0 -47
  288. package/dist/paths.js.map +0 -1
  289. package/dist/server-wrapper.d.ts +0 -12
  290. package/dist/server-wrapper.d.ts.map +0 -1
  291. package/dist/server-wrapper.js +0 -63
  292. package/dist/server-wrapper.js.map +0 -1
  293. package/dist/vercel-wrapper.d.ts +0 -6
  294. package/dist/vercel-wrapper.d.ts.map +0 -1
  295. package/dist/vercel-wrapper.js +0 -50
  296. package/dist/vercel-wrapper.js.map +0 -1
@@ -1,75 +0,0 @@
1
- import { existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
2
- import { dirname, join, relative } from 'node:path';
3
- import { ui, writeError, writeLine } from '../../console.js';
4
- import { runBridge } from './command-runtime.js';
5
- function configCachePath(cwd) {
6
- return join(cwd, 'bootstrap', 'cache', 'config.cache.json');
7
- }
8
- function listConfigNames(cwd) {
9
- const configDir = join(cwd, 'config');
10
- if (!existsSync(configDir)) {
11
- return [];
12
- }
13
- return readdirSync(configDir, { withFileTypes: true })
14
- .filter((entry) => entry.isFile() && /\.(ts|js)$/i.test(entry.name))
15
- .map((entry) => entry.name.replace(/\.(ts|js)$/i, ''))
16
- .sort((a, b) => a.localeCompare(b));
17
- }
18
- export function cacheConfig(cwd = process.cwd()) {
19
- const names = listConfigNames(cwd);
20
- if (names.length === 0) {
21
- writeError(ui.fail('No config files found in config/.'));
22
- return 1;
23
- }
24
- const cached = {};
25
- const failures = [];
26
- for (const name of names) {
27
- const result = runBridge(['config:show', cwd, name], cwd);
28
- if (result.status !== 0) {
29
- failures.push(`${name}: ${result.stderr.trim() || 'failed to resolve config'}`);
30
- continue;
31
- }
32
- try {
33
- const parsed = JSON.parse(result.stdout);
34
- cached[name] = parsed.config;
35
- }
36
- catch {
37
- failures.push(`${name}: invalid JSON returned from config resolver`);
38
- }
39
- }
40
- if (failures.length > 0) {
41
- writeLine();
42
- writeLine(ui.section('Config Cache'));
43
- writeError(ui.fail('Unable to cache config due to resolution errors:'));
44
- for (const failure of failures) {
45
- writeError(` - ${failure}`);
46
- }
47
- writeLine();
48
- return 1;
49
- }
50
- const payload = {
51
- generatedAt: new Date().toISOString(),
52
- configs: cached,
53
- };
54
- const outputPath = configCachePath(cwd);
55
- mkdirSync(dirname(outputPath), { recursive: true });
56
- writeFileSync(outputPath, `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
57
- writeLine();
58
- writeLine(ui.section('Config Cache'));
59
- writeLine(` ${ui.ok(`Cached ${Object.keys(cached).length} config files`)}`);
60
- writeLine(` ${ui.bullet(relative(cwd, outputPath))}`);
61
- writeLine();
62
- return 0;
63
- }
64
- export function clearConfigCache(cwd = process.cwd()) {
65
- const outputPath = configCachePath(cwd);
66
- if (existsSync(outputPath)) {
67
- rmSync(outputPath, { force: true });
68
- }
69
- writeLine();
70
- writeLine(ui.section('Config Clear'));
71
- writeLine(` ${ui.ok(`Removed ${relative(cwd, outputPath)}`)}`);
72
- writeLine();
73
- return 0;
74
- }
75
- //# sourceMappingURL=config-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-cache.js","sourceRoot":"","sources":["../../../src/commands/app/config-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOjD,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACnD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACnE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;SACrD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC7C,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,0BAA0B,EAAE,CAAC,CAAC;YAChF,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAwB,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QACtC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;QACxE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAuB;QAClC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE,MAAM;KAChB,CAAC;IACF,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,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,cAAc,CAAC,CAAC,CAAC;IACtC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IAC7E,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IACvD,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAClD,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,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,cAAc,CAAC,CAAC,CAAC;IACtC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,WAAW,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChE,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function publishConfig(configName: string, force?: boolean, cwd?: string): number;
2
- //# sourceMappingURL=config-publish.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-publish.d.ts","sourceRoot":"","sources":["../../../src/commands/app/config-publish.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,UAAQ,EAAE,GAAG,SAAgB,GAAG,MAAM,CAuD5F"}
@@ -1,68 +0,0 @@
1
- import { existsSync, writeFileSync } from 'node:fs';
2
- import { join, relative } from 'node:path';
3
- import { ui, writeError, writeLine } from '../../console.js';
4
- import { KNOWN_CONFIG_NAMES, CONFIG_STUBS } from './config-stubs.js';
5
- import { ensureParentDir } from './security.js';
6
- export function publishConfig(configName, force = false, cwd = process.cwd()) {
7
- if (configName === 'list' || !configName) {
8
- writeLine();
9
- writeLine(ui.section('Available Configs'));
10
- for (const name of KNOWN_CONFIG_NAMES) {
11
- const exists = existsSync(join(cwd, 'config', `${name}.ts`));
12
- writeLine(` ${exists ? ui.ok(name) : ui.bullet(name)}${exists ? ui.dim(' (already published)') : ''}`);
13
- }
14
- writeLine();
15
- writeLine(` Run: ${ui.cyan('lumis publish config <name>')} to publish a config file.`);
16
- writeLine();
17
- return 0;
18
- }
19
- if (configName === 'all') {
20
- let published = 0;
21
- let skipped = 0;
22
- for (const name of KNOWN_CONFIG_NAMES) {
23
- const result = publishSingleConfig(name, force, cwd);
24
- if (result.action === 'created')
25
- published++;
26
- else
27
- skipped++;
28
- }
29
- writeLine();
30
- writeLine(ui.section('Config Publish'));
31
- writeLine(` ${ui.ok(`Published ${published} config files`)}`);
32
- if (skipped > 0) {
33
- writeLine(` ${ui.warn(`Skipped ${skipped} already existing files (use --force to overwrite)`)}`);
34
- }
35
- writeLine();
36
- return 0;
37
- }
38
- const stub = CONFIG_STUBS[configName];
39
- if (!stub) {
40
- writeError(ui.fail(`Unknown config: "${configName}". Available: ${KNOWN_CONFIG_NAMES.join(', ')}`));
41
- return 1;
42
- }
43
- const { action, filePath } = publishSingleConfig(configName, force, cwd);
44
- writeLine();
45
- writeLine(ui.section('Config Publish'));
46
- if (action === 'created') {
47
- writeLine(` ${ui.ok(`Published config/${configName}.ts`)}`);
48
- }
49
- else {
50
- writeLine(` ${ui.warn(`config/${configName}.ts already exists - use --force to overwrite`)}`);
51
- }
52
- writeLine(` ${ui.bullet(relative(cwd, filePath))}`);
53
- writeLine();
54
- return 0;
55
- }
56
- function publishSingleConfig(name, force, cwd) {
57
- const filePath = join(cwd, 'config', `${name}.ts`);
58
- const stub = CONFIG_STUBS[name];
59
- if (!stub)
60
- return { action: 'skipped', filePath };
61
- if (existsSync(filePath) && !force) {
62
- return { action: 'skipped', filePath };
63
- }
64
- ensureParentDir(filePath);
65
- writeFileSync(filePath, stub, 'utf8');
66
- return { action: 'created', filePath };
67
- }
68
- //# sourceMappingURL=config-publish.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-publish.js","sourceRoot":"","sources":["../../../src/commands/app/config-publish.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare const CONFIG_STUBS: Record<string, string>;
2
- export declare const KNOWN_CONFIG_NAMES: string[];
3
- //# sourceMappingURL=config-stubs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-stubs.d.ts","sourceRoot":"","sources":["../../../src/commands/app/config-stubs.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8J/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAA4B,CAAC"}
@@ -1,154 +0,0 @@
1
- export const CONFIG_STUBS = {
2
- mail: `import { env } from '../bootstrap/env.js';
3
-
4
- const mail = {
5
- driver: env.MAIL_DRIVER ?? 'stub',
6
-
7
- smtp: {
8
- host: env.SMTP_HOST ?? 'localhost',
9
- port: Number(env.SMTP_PORT ?? 1025),
10
- secure: env.SMTP_SECURE === 'true',
11
- user: env.SMTP_USER,
12
- pass: env.SMTP_PASS,
13
- },
14
-
15
- resend: {
16
- apiKey: env.RESEND_API_KEY ?? '',
17
- },
18
-
19
- from: {
20
- address: env.MAIL_FROM_ADDRESS ?? 'hello@example.com',
21
- name: env.MAIL_FROM_NAME ?? 'Example App',
22
- },
23
- } as const;
24
-
25
- export default mail;
26
- `,
27
- queue: `import { env } from '../bootstrap/env.js';
28
-
29
- const queue = {
30
- driver: env.QUEUE_DRIVER ?? 'stub',
31
-
32
- bullmq: {
33
- connection: {
34
- host: env.REDIS_HOST ?? '127.0.0.1',
35
- port: Number(env.REDIS_PORT ?? 6379),
36
- },
37
- defaultQueue: 'default',
38
- concurrency: Number(env.QUEUE_CONCURRENCY ?? 5),
39
- },
40
- } as const;
41
-
42
- export default queue;
43
- `,
44
- cache: `import { env } from '../bootstrap/env.js';
45
-
46
- const cache = {
47
- driver: env.CACHE_DRIVER ?? 'memory',
48
-
49
- ttl: Number(env.CACHE_TTL ?? 3600),
50
-
51
- redis: {
52
- host: env.REDIS_HOST ?? '127.0.0.1',
53
- port: Number(env.REDIS_PORT ?? 6379),
54
- password: env.REDIS_PASSWORD,
55
- db: Number(env.REDIS_DB ?? 0),
56
- keyPrefix: env.CACHE_PREFIX ?? 'cache:',
57
- },
58
- } as const;
59
-
60
- export default cache;
61
- `,
62
- storage: `import { env } from '../bootstrap/env.js';
63
-
64
- const storage = {
65
- disks: {
66
- default: {
67
- driver: env.STORAGE_DRIVER ?? 'local',
68
- root: env.STORAGE_ROOT ?? 'storage/app',
69
- },
70
-
71
- s3: {
72
- driver: 's3' as const,
73
- bucket: env.AWS_BUCKET ?? '',
74
- region: env.AWS_REGION ?? 'us-east-1',
75
- endpoint: env.AWS_ENDPOINT,
76
- accessKeyId: env.AWS_ACCESS_KEY_ID ?? '',
77
- secretAccessKey: env.AWS_SECRET_ACCESS_KEY ?? '',
78
- },
79
- },
80
- } as const;
81
-
82
- export default storage;
83
- `,
84
- session: `import { env } from '../bootstrap/env.js';
85
-
86
- const session = {
87
- driver: env.SESSION_DRIVER ?? 'cookie',
88
- secret: env.SESSION_SECRET ?? 'change-me-in-production',
89
- ttl: Number(env.SESSION_TTL ?? 86400),
90
- cookieName: 'lumiarq_session',
91
- secure: env.NODE_ENV === 'production',
92
- sameSite: 'lax' as const,
93
- } as const;
94
-
95
- export default session;
96
- `,
97
- security: `import { env } from '../bootstrap/env.js';
98
-
99
- const security = {
100
- jwtSecret: env.JWT_SECRET ?? 'change-me-in-production',
101
- jwtTtl: Number(env.JWT_TTL ?? 3600),
102
-
103
- cors: {
104
- allowOrigins: (env.CORS_ORIGINS ?? '*').split(',').map((s) => s.trim()),
105
- allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
106
- allowHeaders: ['Content-Type', 'Authorization'],
107
- maxAge: 86400,
108
- },
109
-
110
- rateLimit: {
111
- max: Number(env.RATE_LIMIT_MAX ?? 100),
112
- windowMs: Number(env.RATE_LIMIT_WINDOW ?? 60000),
113
- },
114
- } as const;
115
-
116
- export default security;
117
- `,
118
- logging: `import { env } from '../bootstrap/env.js';
119
-
120
- const logging = {
121
- level: (env.LOG_LEVEL ?? 'info') as 'debug' | 'info' | 'warn' | 'error',
122
- driver: (env.LOG_DRIVER ?? 'console') as 'console' | 'traze',
123
-
124
- traze: {
125
- endpoint: env.TRAZE_ENDPOINT ?? '',
126
- apiKey: env.TRAZE_API_KEY ?? '',
127
- service: env.TRAZE_SERVICE ?? 'lumiarq-app',
128
- },
129
- } as const;
130
-
131
- export default logging;
132
- `,
133
- auth: `import { env } from '../bootstrap/env.js';
134
-
135
- const auth = {
136
- guard: (env.AUTH_GUARD ?? 'jwt') as 'jwt' | 'session',
137
- secret: env.JWT_SECRET ?? 'change-me-in-production',
138
-
139
- jwt: {
140
- ttl: Number(env.JWT_TTL ?? 3600),
141
- refreshTtl: Number(env.JWT_REFRESH_TTL ?? 604800),
142
- algorithm: 'HS256' as const,
143
- },
144
-
145
- password: {
146
- rounds: Number(env.BCRYPT_ROUNDS ?? 12),
147
- },
148
- } as const;
149
-
150
- export default auth;
151
- `,
152
- };
153
- export const KNOWN_CONFIG_NAMES = Object.keys(CONFIG_STUBS);
154
- //# sourceMappingURL=config-stubs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-stubs.js","sourceRoot":"","sources":["../../../src/commands/app/config-stubs.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBP;IAEC,KAAK,EAAE;;;;;;;;;;;;;;;;CAgBR;IAEC,KAAK,EAAE;;;;;;;;;;;;;;;;;CAiBR;IAEC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBV;IAEC,OAAO,EAAE;;;;;;;;;;;;CAYV;IAEC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;CAoBX;IAEC,OAAO,EAAE;;;;;;;;;;;;;;CAcV;IAEC,IAAI,EAAE;;;;;;;;;;;;;;;;;;CAkBP;CACA,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function pingDatabaseConnection(cwd?: string): Promise<number>;
2
- export declare function runDatabaseCommand(commandName: string, args: string[], cwd?: string): Promise<number>;
3
- //# sourceMappingURL=database.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/commands/app/database.ts"],"names":[],"mappings":"AAmGA,wBAAsB,sBAAsB,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyEjF;AAoCD,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,SAAgB,GAClB,OAAO,CAAC,MAAM,CAAC,CAkEjB"}
@@ -1,221 +0,0 @@
1
- import { closeSync, existsSync, mkdirSync, openSync } from 'node:fs';
2
- import { dirname, relative, resolve, join } from 'node:path';
3
- import net from 'node:net';
4
- import { ui, writeError, writeLine } from '../../console.js';
5
- import { readPackageJson, runBridge, runPnpm } from './command-runtime.js';
6
- function readDatabaseConfig(cwd) {
7
- const result = runBridge(['config:show', cwd, 'database'], cwd);
8
- if (result.status !== 0) {
9
- return {
10
- defaultConnection: 'unknown',
11
- connection: null,
12
- error: result.stderr.trim() || 'Unable to resolve config/database.ts',
13
- };
14
- }
15
- try {
16
- const parsed = JSON.parse(result.stdout);
17
- const defaultConnection = parsed.config?.default ?? 'unknown';
18
- const connection = parsed.config?.connections?.[defaultConnection] ?? null;
19
- if (!connection) {
20
- return {
21
- defaultConnection,
22
- connection: null,
23
- error: `Connection '${defaultConnection}' not found in database config`,
24
- };
25
- }
26
- return { defaultConnection, connection };
27
- }
28
- catch {
29
- return {
30
- defaultConnection: 'unknown',
31
- connection: null,
32
- error: 'Could not parse resolved database config output',
33
- };
34
- }
35
- }
36
- function toNumber(value, fallback) {
37
- const asNumber = typeof value === 'number' ? value : Number(value);
38
- return Number.isFinite(asNumber) ? asNumber : fallback;
39
- }
40
- async function pingPostgres(host, port, timeoutMs = 3000) {
41
- return new Promise((resolvePromise) => {
42
- const socket = net.createConnection({ host, port });
43
- let settled = false;
44
- const finish = (ok, message) => {
45
- if (settled)
46
- return;
47
- settled = true;
48
- socket.destroy();
49
- resolvePromise({ ok, message });
50
- };
51
- socket.setTimeout(timeoutMs);
52
- socket.on('connect', () => finish(true, `TCP connection established to ${host}:${port}`));
53
- socket.on('timeout', () => finish(false, `Timed out connecting to ${host}:${port}`));
54
- socket.on('error', (error) => {
55
- finish(false, `${error.code ?? 'ERROR'}: ${error.message}`);
56
- });
57
- });
58
- }
59
- function pingSqlite(url, cwd) {
60
- if (!url) {
61
- return { ok: false, message: 'SQLite url is empty in database config' };
62
- }
63
- const resolvedPath = url.startsWith('file:')
64
- ? resolve(cwd, url.replace(/^file:/, ''))
65
- : resolve(cwd, url);
66
- try {
67
- mkdirSync(dirname(resolvedPath), { recursive: true });
68
- const handle = openSync(resolvedPath, 'a');
69
- closeSync(handle);
70
- return { ok: true, message: `SQLite file is accessible at ${relative(cwd, resolvedPath)}` };
71
- }
72
- catch (error) {
73
- const message = error instanceof Error ? error.message : 'Unknown file access error';
74
- return { ok: false, message };
75
- }
76
- }
77
- export async function pingDatabaseConnection(cwd = process.cwd()) {
78
- writeLine();
79
- writeLine(ui.section('DB Ping'));
80
- const configState = readDatabaseConfig(cwd);
81
- if (!configState.connection) {
82
- writeError(ui.fail(configState.error ?? 'Database configuration is invalid.'));
83
- writeLine();
84
- return 1;
85
- }
86
- const driver = String(configState.connection.driver ?? configState.defaultConnection ?? 'unknown');
87
- writeLine(` ${ui.bullet(`Driver: ${driver}`)}`);
88
- if (driver === 'postgres') {
89
- const host = String(configState.connection.host ?? '').trim();
90
- const port = toNumber(configState.connection.port, 5432);
91
- const database = String(configState.connection.database ?? '').trim();
92
- const username = String(configState.connection.username ?? '').trim();
93
- const diagnostics = [];
94
- if (!host)
95
- diagnostics.push('host is missing');
96
- if (!database)
97
- diagnostics.push('database name is missing');
98
- if (!username)
99
- diagnostics.push('username is missing');
100
- if (diagnostics.length > 0) {
101
- writeError(ui.fail('Postgres configuration is incomplete:'));
102
- for (const diagnostic of diagnostics) {
103
- writeError(` - ${diagnostic}`);
104
- }
105
- writeLine();
106
- return 1;
107
- }
108
- const ping = await pingPostgres(host, port);
109
- if (!ping.ok) {
110
- writeError(ui.fail(`Connection failed: ${ping.message}`));
111
- writeLine(` ${ui.dim('Diagnosis: check DB_HOST/DB_PORT, network access, and postgres service status.')}`);
112
- writeLine();
113
- return 1;
114
- }
115
- writeLine(` ${ui.ok(ping.message)}`);
116
- writeLine(` ${ui.dim('Authentication was not validated by this ping; it checks network reachability.')}`);
117
- writeLine();
118
- return 0;
119
- }
120
- if (driver === 'sqlite') {
121
- const url = String(configState.connection.url ?? '').trim();
122
- const ping = pingSqlite(url, cwd);
123
- if (!ping.ok) {
124
- writeError(ui.fail(`Connection failed: ${ping.message}`));
125
- writeLine(` ${ui.dim('Diagnosis: verify DATABASE_URL/DB_CONNECTION points to a writable sqlite file path.')}`);
126
- writeLine();
127
- return 1;
128
- }
129
- writeLine(` ${ui.ok(ping.message)}`);
130
- writeLine();
131
- return 0;
132
- }
133
- writeError(ui.fail(`Unsupported database driver '${driver}' for db:ping.`));
134
- writeLine();
135
- return 1;
136
- }
137
- function runDatabaseSeed(args, cwd) {
138
- const packageJson = readPackageJson(cwd);
139
- if (packageJson.scripts?.['db:seed']) {
140
- return runPnpm(['run', 'db:seed', ...args], cwd);
141
- }
142
- const candidates = [
143
- join(cwd, 'src', 'shared', 'database', 'seeds', 'index.ts'),
144
- join(cwd, 'database', 'seeds', 'index.ts'),
145
- join(cwd, 'seeds', 'index.ts'),
146
- ];
147
- const seedFile = candidates.find((f) => existsSync(f));
148
- if (!seedFile) {
149
- writeError(ui.fail('No seed file found. Create src/shared/database/seeds/index.ts or add a db:seed script to package.json.'));
150
- return 1;
151
- }
152
- writeLine();
153
- writeLine(ui.section('DB Seed'));
154
- writeLine(` ${ui.bullet(`Running ${relative(cwd, seedFile)}...`)}`);
155
- const status = runPnpm(['exec', 'tsx', seedFile, ...args], cwd);
156
- if (status === 0) {
157
- writeLine(` ${ui.ok('Seed complete.')}`);
158
- }
159
- writeLine();
160
- return status;
161
- }
162
- export async function runDatabaseCommand(commandName, args, cwd = process.cwd()) {
163
- const packageJson = readPackageJson(cwd);
164
- if (packageJson.scripts?.[commandName]) {
165
- return runPnpm(['run', commandName, ...args], cwd);
166
- }
167
- if (commandName === 'db:generate') {
168
- return runPnpm(['exec', 'drizzle-kit', 'generate', ...args], cwd);
169
- }
170
- if (commandName === 'db:migrate') {
171
- return runPnpm(['exec', 'drizzle-kit', 'migrate', ...args], cwd);
172
- }
173
- if (commandName === 'db:studio') {
174
- return runPnpm(['exec', 'drizzle-kit', 'studio', ...args], cwd);
175
- }
176
- if (commandName === 'db:seed') {
177
- return runDatabaseSeed(args, cwd);
178
- }
179
- if (commandName === 'db:ping') {
180
- return pingDatabaseConnection(cwd);
181
- }
182
- if (commandName === 'db:fresh') {
183
- writeLine();
184
- writeLine(ui.section('DB Fresh'));
185
- writeLine(` ${ui.bullet('Pushing schema (--force)...')}`);
186
- const pushStatus = runPnpm(['exec', 'drizzle-kit', 'push', '--force', ...args], cwd, 'pipe');
187
- if (pushStatus !== 0)
188
- return pushStatus;
189
- writeLine(` ${ui.bullet('Running migrations...')}`);
190
- const migrateStatus = runPnpm(['exec', 'drizzle-kit', 'migrate'], cwd, 'pipe');
191
- if (migrateStatus !== 0)
192
- return migrateStatus;
193
- writeLine(` ${ui.bullet('Running seeds...')}`);
194
- const seedStatus = runDatabaseSeed([], cwd);
195
- if (seedStatus !== 0)
196
- return seedStatus;
197
- writeLine(` ${ui.ok('Database refreshed.')}`);
198
- writeLine();
199
- return 0;
200
- }
201
- if (commandName === 'db:reset') {
202
- writeLine();
203
- writeLine(ui.section('DB Reset'));
204
- writeLine(` ${ui.bullet('Dropping all tables (drizzle-kit drop)...')}`);
205
- const dropStatus = runPnpm(['exec', 'drizzle-kit', 'drop', '--force'], cwd, 'pipe');
206
- if (dropStatus !== 0) {
207
- writeLine(` ${ui.warn('drizzle-kit drop failed - trying push --force to reset schema...')}`);
208
- runPnpm(['exec', 'drizzle-kit', 'push', '--force'], cwd, 'pipe');
209
- }
210
- writeLine(` ${ui.bullet('Running migrations...')}`);
211
- const migrateStatus = runPnpm(['exec', 'drizzle-kit', 'migrate'], cwd, 'pipe');
212
- if (migrateStatus !== 0)
213
- return migrateStatus;
214
- writeLine(` ${ui.ok('Database reset.')}`);
215
- writeLine();
216
- return 0;
217
- }
218
- writeError(ui.fail(`No handler configured for ${commandName}. Add a package.json script named ${commandName}.`));
219
- return 1;
220
- }
221
- //# sourceMappingURL=database.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/commands/app/database.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export declare function parseFrontmatter(raw: string): {
2
- data: Record<string, unknown>;
3
- body: string;
4
- };
5
- export declare function walkMarkdownFiles(dir: string, bucket?: string[]): string[];
6
- export declare function findDocsRoots(cwd: string): string[];
7
- //# sourceMappingURL=docs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/commands/app/docs.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA+B7F;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAkB9E;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQnD"}
@@ -1,61 +0,0 @@
1
- import { existsSync, readdirSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { readStorageRoot } from '../../paths.js';
4
- export function parseFrontmatter(raw) {
5
- if (!raw.startsWith('---\n')) {
6
- return { data: {}, body: raw };
7
- }
8
- const end = raw.indexOf('\n---\n', 4);
9
- if (end === -1) {
10
- return { data: {}, body: raw };
11
- }
12
- const header = raw.slice(4, end);
13
- const body = raw.slice(end + 5);
14
- const data = {};
15
- for (const line of header.split(/\r?\n/g)) {
16
- const separatorIndex = line.indexOf(':');
17
- if (separatorIndex <= 0)
18
- continue;
19
- const key = line.slice(0, separatorIndex).trim();
20
- const rawValue = line.slice(separatorIndex + 1).trim();
21
- if (rawValue === 'true') {
22
- data[key] = true;
23
- }
24
- else if (rawValue === 'false') {
25
- data[key] = false;
26
- }
27
- else if (/^\d+$/.test(rawValue)) {
28
- data[key] = Number(rawValue);
29
- }
30
- else {
31
- data[key] = rawValue.replace(/^"|"$/g, '');
32
- }
33
- }
34
- return { data, body };
35
- }
36
- export function walkMarkdownFiles(dir, bucket = []) {
37
- if (!existsSync(dir)) {
38
- return bucket;
39
- }
40
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
41
- const fullPath = join(dir, entry.name);
42
- if (entry.isDirectory()) {
43
- walkMarkdownFiles(fullPath, bucket);
44
- continue;
45
- }
46
- if (entry.name.endsWith('.md')) {
47
- bucket.push(fullPath);
48
- }
49
- }
50
- return bucket;
51
- }
52
- export function findDocsRoots(cwd) {
53
- const storageRoot = readStorageRoot(cwd);
54
- return [
55
- join(cwd, 'content', 'docs'),
56
- join(cwd, 'src', 'content', 'docs'),
57
- join(cwd, 'src', 'shared', 'database', 'content', 'docs'),
58
- join(cwd, storageRoot, 'docs-cache'),
59
- ].filter((candidate, index, all) => existsSync(candidate) && all.indexOf(candidate) === index);
60
- }
61
- //# sourceMappingURL=docs.js.map