@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.
- package/dist/bridges/project-bridge.d.ts +2 -0
- package/dist/bridges/project-bridge.d.ts.map +1 -0
- package/dist/bridges/project-bridge.js +174 -0
- package/dist/bridges/project-bridge.js.map +1 -0
- package/dist/cli.d.ts +1 -16
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +546 -170
- package/dist/cli.js.map +1 -1
- package/dist/commands/app/cache-workflows.d.ts +7 -0
- package/dist/commands/app/cache-workflows.d.ts.map +1 -0
- package/dist/commands/app/cache-workflows.js +139 -0
- package/dist/commands/app/cache-workflows.js.map +1 -0
- package/dist/commands/app/command-runtime.d.ts +11 -0
- package/dist/commands/app/command-runtime.d.ts.map +1 -0
- package/dist/commands/app/command-runtime.js +41 -0
- package/dist/commands/app/command-runtime.js.map +1 -0
- package/dist/commands/app/config-cache.d.ts +3 -0
- package/dist/commands/app/config-cache.d.ts.map +1 -0
- package/dist/commands/app/config-cache.js +75 -0
- package/dist/commands/app/config-cache.js.map +1 -0
- package/dist/commands/app/config-publish.d.ts +2 -0
- package/dist/commands/app/config-publish.d.ts.map +1 -0
- package/dist/commands/app/config-publish.js +68 -0
- package/dist/commands/app/config-publish.js.map +1 -0
- package/dist/commands/app/config-stubs.d.ts +3 -0
- package/dist/commands/app/config-stubs.d.ts.map +1 -0
- package/dist/commands/app/config-stubs.js +154 -0
- package/dist/commands/app/config-stubs.js.map +1 -0
- package/dist/commands/app/database.d.ts +3 -0
- package/dist/commands/app/database.d.ts.map +1 -0
- package/dist/commands/app/database.js +221 -0
- package/dist/commands/app/database.js.map +1 -0
- package/dist/commands/app/docs.d.ts +7 -0
- package/dist/commands/app/docs.d.ts.map +1 -0
- package/dist/commands/app/docs.js +61 -0
- package/dist/commands/app/docs.js.map +1 -0
- package/dist/commands/app/routes.d.ts +7 -0
- package/dist/commands/app/routes.d.ts.map +1 -0
- package/dist/commands/app/routes.js +282 -0
- package/dist/commands/app/routes.js.map +1 -0
- package/dist/commands/app/security.d.ts +3 -0
- package/dist/commands/app/security.d.ts.map +1 -0
- package/dist/commands/app/security.js +15 -0
- package/dist/commands/app/security.js.map +1 -0
- package/dist/commands/app/worker-schedule.d.ts +5 -0
- package/dist/commands/app/worker-schedule.d.ts.map +1 -0
- package/dist/commands/app/worker-schedule.js +94 -0
- package/dist/commands/app/worker-schedule.js.map +1 -0
- package/dist/commands/app-commands.d.ts +19 -0
- package/dist/commands/app-commands.d.ts.map +1 -0
- package/dist/commands/app-commands.js +77 -0
- package/dist/commands/app-commands.js.map +1 -0
- package/dist/commands/build-vercel-fn.d.ts +9 -0
- package/dist/commands/build-vercel-fn.d.ts.map +1 -0
- package/dist/commands/build-vercel-fn.js +32 -0
- package/dist/commands/build-vercel-fn.js.map +1 -0
- package/dist/commands/build.d.ts +14 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +24 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/info.d.ts +9 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +41 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/keys.d.ts +3 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +60 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/maintenance.d.ts +9 -0
- package/dist/commands/maintenance.d.ts.map +1 -0
- package/dist/commands/maintenance.js +38 -0
- package/dist/commands/maintenance.js.map +1 -0
- package/dist/commands/module-list.d.ts +2 -0
- package/dist/commands/module-list.d.ts.map +1 -0
- package/dist/commands/module-list.js +27 -0
- package/dist/commands/module-list.js.map +1 -0
- package/dist/commands/preview.d.ts +14 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +49 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/serve.d.ts +16 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +61 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/{output/ansi.d.ts → console.d.ts} +8 -4
- package/dist/console.d.ts.map +1 -0
- package/dist/{output/ansi.js → console.js} +12 -4
- package/dist/console.js.map +1 -0
- package/dist/index.d.ts +15 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/paths.d.ts +26 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +83 -0
- package/dist/paths.js.map +1 -0
- package/dist/server-wrapper.d.ts +12 -0
- package/dist/server-wrapper.d.ts.map +1 -0
- package/dist/server-wrapper.js +63 -0
- package/dist/server-wrapper.js.map +1 -0
- package/dist/vercel-wrapper.d.ts +6 -0
- package/dist/vercel-wrapper.d.ts.map +1 -0
- package/dist/vercel-wrapper.js +50 -0
- package/dist/vercel-wrapper.js.map +1 -0
- package/package.json +19 -37
- package/README.md +0 -38
- package/dist/adapter-loader.d.ts +0 -67
- package/dist/adapter-loader.d.ts.map +0 -1
- package/dist/adapter-loader.js +0 -273
- package/dist/adapter-loader.js.map +0 -1
- package/dist/commands/commands.command.d.ts +0 -38
- package/dist/commands/commands.command.d.ts.map +0 -1
- package/dist/commands/commands.command.js +0 -176
- package/dist/commands/commands.command.js.map +0 -1
- package/dist/commands/doctor.command.d.ts +0 -9
- package/dist/commands/doctor.command.d.ts.map +0 -1
- package/dist/commands/doctor.command.js +0 -922
- package/dist/commands/doctor.command.js.map +0 -1
- package/dist/commands/init.command.d.ts +0 -9
- package/dist/commands/init.command.d.ts.map +0 -1
- package/dist/commands/init.command.js +0 -135
- package/dist/commands/init.command.js.map +0 -1
- package/dist/commands/intent.command.d.ts +0 -26
- package/dist/commands/intent.command.d.ts.map +0 -1
- package/dist/commands/intent.command.js +0 -211
- package/dist/commands/intent.command.js.map +0 -1
- package/dist/commands/ir-rebuild.command.d.ts +0 -9
- package/dist/commands/ir-rebuild.command.d.ts.map +0 -1
- package/dist/commands/ir-rebuild.command.js +0 -36
- package/dist/commands/ir-rebuild.command.js.map +0 -1
- package/dist/commands/ir-show.command.d.ts +0 -9
- package/dist/commands/ir-show.command.d.ts.map +0 -1
- package/dist/commands/ir-show.command.js +0 -32
- package/dist/commands/ir-show.command.js.map +0 -1
- package/dist/commands/make.command.d.ts +0 -9
- package/dist/commands/make.command.d.ts.map +0 -1
- package/dist/commands/make.command.js +0 -93
- package/dist/commands/make.command.js.map +0 -1
- package/dist/commands/pack.command.d.ts +0 -16
- package/dist/commands/pack.command.d.ts.map +0 -1
- package/dist/commands/pack.command.js +0 -44
- package/dist/commands/pack.command.js.map +0 -1
- package/dist/commands/runtime.command.d.ts +0 -6
- package/dist/commands/runtime.command.d.ts.map +0 -1
- package/dist/commands/runtime.command.js +0 -379
- package/dist/commands/runtime.command.js.map +0 -1
- package/dist/commands/runtime.d.ts +0 -45
- package/dist/commands/runtime.d.ts.map +0 -1
- package/dist/commands/runtime.js +0 -66
- package/dist/commands/runtime.js.map +0 -1
- package/dist/commands/tinker-agent-plan.d.ts +0 -26
- package/dist/commands/tinker-agent-plan.d.ts.map +0 -1
- package/dist/commands/tinker-agent-plan.js +0 -115
- package/dist/commands/tinker-agent-plan.js.map +0 -1
- package/dist/commands/tinker-chat-commands.d.ts +0 -19
- package/dist/commands/tinker-chat-commands.d.ts.map +0 -1
- package/dist/commands/tinker-chat-commands.js +0 -263
- package/dist/commands/tinker-chat-commands.js.map +0 -1
- package/dist/commands/tinker-chat-runtime.d.ts +0 -30
- package/dist/commands/tinker-chat-runtime.d.ts.map +0 -1
- package/dist/commands/tinker-chat-runtime.js +0 -227
- package/dist/commands/tinker-chat-runtime.js.map +0 -1
- package/dist/commands/tinker-classic-mode.d.ts +0 -15
- package/dist/commands/tinker-classic-mode.d.ts.map +0 -1
- package/dist/commands/tinker-classic-mode.js +0 -160
- package/dist/commands/tinker-classic-mode.js.map +0 -1
- package/dist/commands/tinker-eval.command.d.ts +0 -3
- package/dist/commands/tinker-eval.command.d.ts.map +0 -1
- package/dist/commands/tinker-eval.command.js +0 -151
- package/dist/commands/tinker-eval.command.js.map +0 -1
- package/dist/commands/tinker-repl-display.d.ts +0 -15
- package/dist/commands/tinker-repl-display.d.ts.map +0 -1
- package/dist/commands/tinker-repl-display.js +0 -147
- package/dist/commands/tinker-repl-display.js.map +0 -1
- package/dist/commands/tinker-session-runtime.d.ts +0 -27
- package/dist/commands/tinker-session-runtime.d.ts.map +0 -1
- package/dist/commands/tinker-session-runtime.js +0 -196
- package/dist/commands/tinker-session-runtime.js.map +0 -1
- package/dist/commands/tinker.command.d.ts +0 -9
- package/dist/commands/tinker.command.d.ts.map +0 -1
- package/dist/commands/tinker.command.js +0 -142
- package/dist/commands/tinker.command.js.map +0 -1
- package/dist/commands/use.command.d.ts +0 -10
- package/dist/commands/use.command.d.ts.map +0 -1
- package/dist/commands/use.command.js +0 -69
- package/dist/commands/use.command.js.map +0 -1
- package/dist/config-loader.d.ts +0 -110
- package/dist/config-loader.d.ts.map +0 -1
- package/dist/config-loader.js +0 -119
- package/dist/config-loader.js.map +0 -1
- package/dist/launcher.d.ts +0 -16
- package/dist/launcher.d.ts.map +0 -1
- package/dist/launcher.js +0 -301
- package/dist/launcher.js.map +0 -1
- package/dist/lib/file-scanner.d.ts +0 -8
- package/dist/lib/file-scanner.d.ts.map +0 -1
- package/dist/lib/file-scanner.js +0 -70
- package/dist/lib/file-scanner.js.map +0 -1
- package/dist/lib/tinker-memory.d.ts +0 -19
- package/dist/lib/tinker-memory.d.ts.map +0 -1
- package/dist/lib/tinker-memory.js +0 -107
- package/dist/lib/tinker-memory.js.map +0 -1
- package/dist/lib/tinker-observer.d.ts +0 -47
- package/dist/lib/tinker-observer.d.ts.map +0 -1
- package/dist/lib/tinker-observer.js +0 -77
- package/dist/lib/tinker-observer.js.map +0 -1
- package/dist/lib/tinker-policy.d.ts +0 -21
- package/dist/lib/tinker-policy.d.ts.map +0 -1
- package/dist/lib/tinker-policy.js +0 -102
- package/dist/lib/tinker-policy.js.map +0 -1
- package/dist/lib/tinker-replay.d.ts +0 -51
- package/dist/lib/tinker-replay.d.ts.map +0 -1
- package/dist/lib/tinker-replay.js +0 -123
- package/dist/lib/tinker-replay.js.map +0 -1
- package/dist/output/ansi.d.ts.map +0 -1
- package/dist/output/ansi.js.map +0 -1
- package/dist/output/plan-display.d.ts +0 -4
- package/dist/output/plan-display.d.ts.map +0 -1
- package/dist/output/plan-display.js +0 -49
- package/dist/output/plan-display.js.map +0 -1
- package/dist/output/result-display.d.ts +0 -5
- package/dist/output/result-display.d.ts.map +0 -1
- package/dist/output/result-display.js +0 -17
- package/dist/output/result-display.js.map +0 -1
- package/dist/plugins/tinker-plugin.d.ts +0 -86
- package/dist/plugins/tinker-plugin.d.ts.map +0 -1
- package/dist/plugins/tinker-plugin.js +0 -42
- package/dist/plugins/tinker-plugin.js.map +0 -1
- package/dist/router-preferences.d.ts +0 -5
- package/dist/router-preferences.d.ts.map +0 -1
- package/dist/router-preferences.js +0 -22
- package/dist/router-preferences.js.map +0 -1
- package/dist/runtime/executor.d.ts +0 -33
- package/dist/runtime/executor.d.ts.map +0 -1
- package/dist/runtime/executor.js +0 -180
- package/dist/runtime/executor.js.map +0 -1
- package/dist/runtime/orchestration.d.ts +0 -43
- package/dist/runtime/orchestration.d.ts.map +0 -1
- package/dist/runtime/orchestration.js +0 -209
- package/dist/runtime/orchestration.js.map +0 -1
- package/dist/runtime/policy.d.ts +0 -49
- package/dist/runtime/policy.d.ts.map +0 -1
- package/dist/runtime/policy.js +0 -78
- package/dist/runtime/policy.js.map +0 -1
- package/dist/runtime/profiles.d.ts +0 -15
- package/dist/runtime/profiles.d.ts.map +0 -1
- package/dist/runtime/profiles.js +0 -131
- package/dist/runtime/profiles.js.map +0 -1
- package/dist/runtime/transcripts.d.ts +0 -59
- package/dist/runtime/transcripts.d.ts.map +0 -1
- package/dist/runtime/transcripts.js +0 -172
- package/dist/runtime/transcripts.js.map +0 -1
- package/dist/tools/git-diff.d.ts +0 -3
- package/dist/tools/git-diff.d.ts.map +0 -1
- package/dist/tools/git-diff.js +0 -16
- package/dist/tools/git-diff.js.map +0 -1
- package/dist/tools/index.d.ts +0 -24
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -88
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/lint.d.ts +0 -3
- package/dist/tools/lint.d.ts.map +0 -1
- package/dist/tools/lint.js +0 -35
- package/dist/tools/lint.js.map +0 -1
- package/dist/tools/read-file.d.ts +0 -3
- package/dist/tools/read-file.d.ts.map +0 -1
- package/dist/tools/read-file.js +0 -47
- package/dist/tools/read-file.js.map +0 -1
- package/dist/tools/run-command.d.ts +0 -3
- package/dist/tools/run-command.d.ts.map +0 -1
- package/dist/tools/run-command.js +0 -71
- package/dist/tools/run-command.js.map +0 -1
- package/dist/tools/run-tests.d.ts +0 -3
- package/dist/tools/run-tests.d.ts.map +0 -1
- package/dist/tools/run-tests.js +0 -49
- package/dist/tools/run-tests.js.map +0 -1
- package/dist/tools/tool-dispatch.d.ts +0 -32
- package/dist/tools/tool-dispatch.d.ts.map +0 -1
- package/dist/tools/tool-dispatch.js +0 -120
- package/dist/tools/tool-dispatch.js.map +0 -1
- package/dist/tools/typecheck.d.ts +0 -3
- package/dist/tools/typecheck.d.ts.map +0 -1
- package/dist/tools/typecheck.js +0 -48
- package/dist/tools/typecheck.js.map +0 -1
- package/dist/tools/types.d.ts +0 -62
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -7
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/write-file.d.ts +0 -15
- package/dist/tools/write-file.d.ts.map +0 -1
- package/dist/tools/write-file.js +0 -52
- package/dist/tools/write-file.js.map +0 -1
- package/dist/tracing/types.d.ts +0 -10
- package/dist/tracing/types.d.ts.map +0 -1
- package/dist/tracing/types.js +0 -2
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|