@xemahq/xema 0.3.0 → 0.4.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 (39) hide show
  1. package/README.md +20 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +2 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/dev.d.ts.map +1 -1
  6. package/dist/commands/dev.js +21 -3
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/commands/down.d.ts.map +1 -1
  9. package/dist/commands/down.js +39 -5
  10. package/dist/commands/down.js.map +1 -1
  11. package/dist/commands/init.d.ts +3 -0
  12. package/dist/commands/init.d.ts.map +1 -0
  13. package/dist/commands/init.js +192 -0
  14. package/dist/commands/init.js.map +1 -0
  15. package/dist/commands/status.d.ts.map +1 -1
  16. package/dist/commands/status.js +30 -4
  17. package/dist/commands/status.js.map +1 -1
  18. package/dist/runtime/config/init-presets.d.ts +37 -0
  19. package/dist/runtime/config/init-presets.d.ts.map +1 -0
  20. package/dist/runtime/config/init-presets.js +145 -0
  21. package/dist/runtime/config/init-presets.js.map +1 -0
  22. package/dist/runtime/paths.d.ts +1 -0
  23. package/dist/runtime/paths.d.ts.map +1 -1
  24. package/dist/runtime/paths.js +27 -0
  25. package/dist/runtime/paths.js.map +1 -1
  26. package/dist/runtime/runner/helm-cli.d.ts +20 -0
  27. package/dist/runtime/runner/helm-cli.d.ts.map +1 -0
  28. package/dist/runtime/runner/helm-cli.js +58 -0
  29. package/dist/runtime/runner/helm-cli.js.map +1 -0
  30. package/dist/runtime/runner/helm-runner.d.ts +1 -2
  31. package/dist/runtime/runner/helm-runner.d.ts.map +1 -1
  32. package/dist/runtime/runner/helm-runner.js +11 -24
  33. package/dist/runtime/runner/helm-runner.js.map +1 -1
  34. package/examples/01-local-monolith.yaml +1 -1
  35. package/examples/02-local-container-full.yaml +1 -1
  36. package/examples/03-byo-infra.yaml +1 -1
  37. package/examples/05-appliance-helm.yaml +1 -1
  38. package/examples/06-biome-sources.yaml +1 -1
  39. package/package.json +1 -1
package/README.md CHANGED
@@ -46,6 +46,26 @@ lifecycle (restart, health, resource limits) to the substrate beneath it
46
46
  npm i -g @xemahq/xema
47
47
  ```
48
48
 
49
+ ## Scaffold a config — `xema init`
50
+
51
+ Generate a `xema.config.yaml` tailored to your scenario. Run it with no flags for
52
+ a short interactive wizard, or `--preset` / `--yes` for scripted use:
53
+
54
+ ```bash
55
+ xema init # interactive wizard
56
+ xema init --preset local-container --yes # full local stack in containers
57
+ xema init --preset local-monolith # lowest-RAM single native process
58
+ xema init --preset byo-infra # bring-your-own Postgres/Keycloak/object-store
59
+ xema init --preset appliance # Kubernetes via Helm
60
+ # --edition <id> picks a distribution edition (offered from xema-distributions);
61
+ # --web enables the host shell; --output <path>; --force to overwrite.
62
+ ```
63
+
64
+ The wizard asks your scenario, the distribution **edition** (the real editions
65
+ defined by `xema-distributions`), and — for BYO/monolith — your infra URLs. Every
66
+ generated config is validated against the schema before it's written, so it can
67
+ never be one `xema up` would reject.
68
+
49
69
  ## Launch the platform
50
70
 
51
71
  ```bash
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpC,wBAAgB,YAAY,IAAI,OAAO,CA0BtC;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,aAAa,CAAC,MAAM,CAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpF"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,wBAAgB,YAAY,IAAI,OAAO,CA2BtC;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,aAAa,CAAC,MAAM,CAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpF"}
package/dist/cli.js CHANGED
@@ -13,6 +13,7 @@ const doctor_1 = require("./commands/doctor");
13
13
  const down_1 = require("./commands/down");
14
14
  const export_1 = require("./commands/export");
15
15
  const import_1 = require("./commands/import");
16
+ const init_1 = require("./commands/init");
16
17
  const logs_1 = require("./commands/logs");
17
18
  const objects_1 = require("./commands/objects");
18
19
  const plan_1 = require("./commands/plan");
@@ -38,6 +39,7 @@ function buildProgram() {
38
39
  .version(CLI_VERSION, '-v, --version', 'print the CLI version')
39
40
  .showHelpAfterError(true)
40
41
  .configureHelp({ sortSubcommands: true });
42
+ (0, init_1.registerCommand)(program);
41
43
  (0, up_1.registerCommand)(program);
42
44
  (0, down_1.registerCommand)(program);
43
45
  (0, status_1.registerCommand)(program);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAiDA,oCA0BC;AAED,oBAMC;AAzED,qCAAuC;AACvC,yCAAiC;AAEjC,yCAAoC;AAEpC,4CAAoE;AACpE,4CAAoE;AACpE,wCAAgE;AAChE,8CAAsE;AACtE,0CAAkE;AAClE,8CAAsE;AACtE,8CAAsE;AACtE,0CAAkE;AAClE,gDAAwE;AACxE,0CAAkE;AAClE,wCAAgE;AAChE,4CAAoE;AACpE,4CAAoE;AACpE,8CAAsE;AACtE,sCAA8D;AAS9D,SAAS,cAAc;IACrB,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,YAAY,EAAE,MAAM,CAAC,CAAyB,CAAC;IAC3F,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;AAErC,SAAgB,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,MAAM,CAAC;SACZ,WAAW,CAAC,oDAAoD,CAAC;SACjE,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,uBAAuB,CAAC;SAC9D,kBAAkB,CAAC,IAAI,CAAC;SACxB,aAAa,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC;IACpB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,qBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,qBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;IACzB,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC;IAExB,OAAO,OAAO,CAAC;AACjB,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,OAA8B,OAAO,CAAC,IAAI;IACnE,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAI/B,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAID,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+BtD"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+BtD"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerCommand = registerCommand;
4
4
  const node_child_process_1 = require("node:child_process");
5
+ const node_fs_1 = require("node:fs");
5
6
  const node_path_1 = require("node:path");
6
7
  const env_defaults_1 = require("../dev/env-defaults");
7
8
  const infra_preflight_1 = require("../dev/infra-preflight");
@@ -41,8 +42,15 @@ function registerCommand(program) {
41
42
  });
42
43
  }
43
44
  function reexecUnderWatch(services, opts) {
44
- const cliEntry = (0, node_path_1.join)(__dirname, '..', 'cli.js');
45
- const args = ['--watch', cliEntry, 'dev', ...services];
45
+ const srcEntry = (0, node_path_1.join)(__dirname, '..', '..', 'src', 'cli.ts');
46
+ if (!(0, node_fs_1.existsSync)(srcEntry)) {
47
+ (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.MissingDependency, 'xema dev --watch needs a source checkout — it boots src/cli.ts via tsx (no ' +
48
+ `prebuild). Source entry not found at ${srcEntry}. For an installed binary ` +
49
+ 'run a plain `xema dev` (boots from dist, no hot-reload).');
50
+ return;
51
+ }
52
+ const tsxCli = resolveTsxCli();
53
+ const args = [tsxCli, 'watch', srcEntry, 'dev', ...services];
46
54
  if (opts.edition) {
47
55
  args.push('--edition', opts.edition);
48
56
  }
@@ -55,7 +63,7 @@ function reexecUnderWatch(services, opts) {
55
63
  if (opts.skipPreflight) {
56
64
  args.push('--skip-preflight');
57
65
  }
58
- console.log('xema dev --watch — restarting on source change (Node --watch). Ctrl+C to stop.');
66
+ console.log('xema dev --watch — booting from src via tsx; any .ts change restarts. Ctrl+C to stop.');
59
67
  const child = (0, node_child_process_1.spawn)(process.execPath, args, {
60
68
  stdio: 'inherit',
61
69
  env: { ...process.env, [WATCH_CHILD_ENV]: '1', NODE_OPTIONS: watchNodeOptions() },
@@ -64,6 +72,16 @@ function reexecUnderWatch(services, opts) {
64
72
  process.exit(code ?? 0);
65
73
  });
66
74
  }
75
+ function resolveTsxCli() {
76
+ try {
77
+ return require.resolve('tsx/cli');
78
+ }
79
+ catch {
80
+ (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.MissingDependency, 'xema dev --watch requires the `tsx` dependency, but it could not be resolved. ' +
81
+ 'Reinstall dependencies (`pnpm install`) and retry.');
82
+ throw new Error('unreachable');
83
+ }
84
+ }
67
85
  function watchNodeOptions() {
68
86
  const existing = process.env.NODE_OPTIONS ?? '';
69
87
  if (existing.includes('--conditions=xema-source')) {
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkBtD"}
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBtD"}
@@ -2,16 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerCommand = registerCommand;
4
4
  const exit_codes_1 = require("../lib/exit-codes");
5
+ const loader_1 = require("../runtime/config/loader");
5
6
  const schema_1 = require("../runtime/config/schema");
6
7
  const docker_cli_1 = require("../runtime/runner/docker-cli");
8
+ const helm_cli_1 = require("../runtime/runner/helm-cli");
7
9
  function registerCommand(program) {
8
10
  program
9
11
  .command('down')
10
- .summary('Stop everything xema up started (container substrate)')
11
- .description('Stop + remove all launcher-owned containers (services + managed infra). ' +
12
- 'Non-destructive by default; --purge also deletes the named data volumes ' +
13
- '(Postgres, object store, search, workspace pools, …).')
14
- .option('--purge', 'Also delete persistent data volumes (DESTRUCTIVE)')
12
+ .summary('Stop everything xema up started (container or helm substrate)')
13
+ .description('Stop + remove everything the launcher started, per the configured substrate. ' +
14
+ 'Container: remove launcher-owned containers (services + managed infra); ' +
15
+ '--purge also deletes named data volumes. Helm: uninstall every release in ' +
16
+ 'the namespace (XEMA_NAMESPACE, default "xema").')
17
+ .option('--config <path>', 'Path to xema.config.yaml (selects the substrate)')
18
+ .option('--purge', 'Also delete persistent data volumes (DESTRUCTIVE; container substrate)')
15
19
  .action(async (opts) => {
16
20
  try {
17
21
  await runDown(opts);
@@ -23,6 +27,36 @@ function registerCommand(program) {
23
27
  });
24
28
  }
25
29
  async function runDown(opts) {
30
+ const { config } = (0, loader_1.loadXemaConfig)({ explicit: opts.config });
31
+ if (config.app.substrate === schema_1.Substrate.Helm) {
32
+ await runHelmDown(opts);
33
+ return;
34
+ }
35
+ await runContainerDown(opts);
36
+ }
37
+ async function runHelmDown(opts) {
38
+ const helm = new helm_cli_1.HelmCli();
39
+ if (!(await helm.available())) {
40
+ console.log('helm is not reachable — nothing to uninstall.');
41
+ return;
42
+ }
43
+ const releases = await helm.listReleases();
44
+ if (releases.length === 0) {
45
+ console.log(`No Helm releases found in namespace "${helm.namespace}".`);
46
+ }
47
+ else {
48
+ console.log(`Uninstalling ${String(releases.length)} release(s) from "${helm.namespace}"...`);
49
+ for (const release of releases) {
50
+ await helm.uninstall(release);
51
+ console.log(` uninstalled ${release}`);
52
+ }
53
+ }
54
+ if (opts.purge) {
55
+ console.log('Note: --purge does not delete Kubernetes PersistentVolumeClaims. Persistent ' +
56
+ 'data is retained; remove PVCs with `kubectl delete pvc` if intended.');
57
+ }
58
+ }
59
+ async function runContainerDown(opts) {
26
60
  const docker = new docker_cli_1.DockerCli();
27
61
  if (!(await docker.available())) {
28
62
  console.log('No container runtime reachable — nothing to stop (native services stop with `xema up`).');
@@ -1 +1 @@
1
- {"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":";;AAkBA,0CAkBC;AApCD,kDAA8D;AAC9D,qDAA0D;AAC1D,6DAAyD;AAgBzD,SAAgB,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,OAAO,CAAC,uDAAuD,CAAC;SAChE,WAAW,CACV,0EAA0E;QACxE,0EAA0E;QAC1E,uDAAuD,CAC1D;SACA,MAAM,CAAC,SAAS,EAAE,mDAAmD,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAA,qBAAQ,EAAC,4BAAe,CAAC,YAAY,EAAE,qBAAqB,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAiB;IACtC,MAAM,MAAM,GAAG,IAAI,sBAAS,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;QACvG,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACrE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAc,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC;YACxC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerCommand(program: Command): void;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuBtD"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerCommand = registerCommand;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const promises_1 = require("node:readline/promises");
7
+ const yaml_1 = require("yaml");
8
+ const exit_codes_1 = require("../lib/exit-codes");
9
+ const init_presets_1 = require("../runtime/config/init-presets");
10
+ const paths_1 = require("../runtime/paths");
11
+ const DEFAULT_OUTPUT = 'xema.config.yaml';
12
+ const DEFAULT_PRESET = init_presets_1.InitPreset.LocalContainer;
13
+ function registerCommand(program) {
14
+ program
15
+ .command('init')
16
+ .summary('Scaffold a xema.config.yaml (interactive or --preset)')
17
+ .description('Create a xema.config.yaml. Run with no flags for an interactive wizard ' +
18
+ `over the real scenarios (${init_presets_1.INIT_PRESETS.join(', ')}), or pass --preset ` +
19
+ '<name> (+ --yes) to generate one non-interactively.')
20
+ .option('--preset <name>', `One of: ${init_presets_1.INIT_PRESETS.join(' | ')}`)
21
+ .option('--output <path>', `Output path (default: ${DEFAULT_OUTPUT})`)
22
+ .option('--edition <id>', 'Distribution edition (default: oss)')
23
+ .option('--web', 'Enable the web host shell (where the preset supports it)')
24
+ .option('--yes', 'Non-interactive: accept defaults (preset defaults to local-container)')
25
+ .option('--force', 'Overwrite an existing config file')
26
+ .action(async (opts) => {
27
+ try {
28
+ await runInit(opts);
29
+ }
30
+ catch (err) {
31
+ const message = err instanceof Error ? err.message : String(err);
32
+ (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.GenericError, `xema init failed: ${message}`);
33
+ }
34
+ });
35
+ }
36
+ async function runInit(opts) {
37
+ const outputPath = (0, node_path_1.resolve)(process.cwd(), opts.output ?? DEFAULT_OUTPUT);
38
+ if ((0, node_fs_1.existsSync)(outputPath) && opts.force !== true) {
39
+ return (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, `${outputPath} already exists. Pass --force to overwrite, or --output <path> to write elsewhere.`);
40
+ }
41
+ const resolved = await resolvePresetAndInputs(opts);
42
+ warnIfUnknownEdition(resolved.inputs.edition);
43
+ const config = (0, init_presets_1.buildPresetConfig)(resolved.preset, resolved.inputs);
44
+ const meta = init_presets_1.PRESET_METAS[resolved.preset];
45
+ (0, node_fs_1.writeFileSync)(outputPath, renderConfigFile(resolved.preset, config), 'utf8');
46
+ console.log('');
47
+ console.log(`✓ Wrote ${outputPath} (${meta.label})`);
48
+ console.log('');
49
+ console.log('Next steps:');
50
+ if (meta.needsExternalInfra) {
51
+ console.log(' 1. Make sure your infra is running (or run `xema doctor --infra`).');
52
+ console.log(` 2. ${meta.nextStep}`);
53
+ }
54
+ else {
55
+ console.log(` • ${meta.nextStep}`);
56
+ }
57
+ console.log('');
58
+ console.log('Tune it later: infra modes (managed | external <url> | disabled), app.substrate,');
59
+ console.log('app.include, and a `sources:` block for extra biome registries (see `xema doctor --sources`).');
60
+ }
61
+ async function resolvePresetAndInputs(opts) {
62
+ if (opts.preset !== undefined) {
63
+ const preset = (0, init_presets_1.parseInitPreset)(opts.preset);
64
+ if (preset === null) {
65
+ return (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, `Unknown --preset "${opts.preset}". Valid: ${init_presets_1.INIT_PRESETS.join(', ')}.`);
66
+ }
67
+ return { preset, inputs: inputsFromFlags(opts) };
68
+ }
69
+ if (opts.yes === true) {
70
+ return { preset: DEFAULT_PRESET, inputs: inputsFromFlags(opts) };
71
+ }
72
+ if (process.stdin.isTTY !== true || process.stdout.isTTY !== true) {
73
+ return (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, 'Not a TTY — cannot run the interactive wizard. Pass --preset <name> ' +
74
+ `(${init_presets_1.INIT_PRESETS.join(' | ')}) or --yes.`);
75
+ }
76
+ return runWizard(opts);
77
+ }
78
+ function warnIfUnknownEdition(edition) {
79
+ const available = (0, paths_1.listAvailableEditions)();
80
+ if (available.length > 0 && !available.includes(edition)) {
81
+ console.log(`⚠ edition "${edition}" is not among the known distributions ` +
82
+ `(${available.join(', ')}); \`xema up\` will fail unless its lock is provided ` +
83
+ `via --lock / XEMA_DISTRIBUTION_LOCK_PATH.`);
84
+ }
85
+ }
86
+ function inputsFromFlags(opts) {
87
+ return {
88
+ edition: opts.edition ?? 'oss',
89
+ web: opts.web === true,
90
+ };
91
+ }
92
+ async function runWizard(opts) {
93
+ const rl = (0, promises_1.createInterface)({ input: process.stdin, output: process.stdout });
94
+ try {
95
+ console.log('xema init — scaffold a xema.config.yaml');
96
+ console.log('-'.repeat(50));
97
+ const presets = init_presets_1.INIT_PRESETS;
98
+ const choice = await promptChoice(rl, 'What are you setting up?', presets.map((p) => {
99
+ const m = init_presets_1.PRESET_METAS[p];
100
+ return { label: m.label, hint: m.description };
101
+ }));
102
+ const preset = presets[choice] ?? DEFAULT_PRESET;
103
+ const meta = init_presets_1.PRESET_METAS[preset];
104
+ const edition = await promptEdition(rl, opts.edition ?? 'oss');
105
+ let urls = {};
106
+ if (meta.needsExternalInfra) {
107
+ console.log('');
108
+ console.log('External infrastructure URLs (press Enter to accept the local default):');
109
+ urls = await promptExternalInfra(rl, preset);
110
+ }
111
+ let web = opts.web === true;
112
+ if (meta.supportsWeb) {
113
+ web = await promptYesNo(rl, 'Start the web host shell?', false);
114
+ }
115
+ return { preset, inputs: { edition, web, ...urls } };
116
+ }
117
+ finally {
118
+ rl.close();
119
+ }
120
+ }
121
+ async function promptExternalInfra(rl, preset) {
122
+ const out = {};
123
+ out.postgresUrl = await promptText(rl, ' Postgres URL', init_presets_1.DEFAULT_LOCAL_URLS.postgres);
124
+ if (preset === init_presets_1.InitPreset.LocalMonolith) {
125
+ out.redisUrl = await promptText(rl, ' Redis URL', init_presets_1.DEFAULT_LOCAL_URLS.redis);
126
+ }
127
+ out.keycloakUrl = await promptText(rl, ' Keycloak URL', init_presets_1.DEFAULT_LOCAL_URLS.keycloak);
128
+ out.keycloakRealm = await promptText(rl, ' Keycloak realm', init_presets_1.DEFAULT_LOCAL_URLS.keycloakRealm);
129
+ if (preset === init_presets_1.InitPreset.ByoInfra) {
130
+ out.objectStoreUrl = await promptText(rl, ' Object-store URL', init_presets_1.DEFAULT_LOCAL_URLS.objectStore);
131
+ }
132
+ return out;
133
+ }
134
+ async function promptChoice(rl, question, items) {
135
+ console.log('');
136
+ console.log(question);
137
+ items.forEach((item, i) => {
138
+ console.log(` ${String(i + 1)}) ${item.label}`);
139
+ if (item.hint !== undefined) {
140
+ console.log(` ${item.hint}`);
141
+ }
142
+ });
143
+ for (;;) {
144
+ const raw = (await rl.question(`Choice [1-${String(items.length)}] (1): `)).trim();
145
+ if (raw.length === 0) {
146
+ return 0;
147
+ }
148
+ const n = Number.parseInt(raw, 10);
149
+ if (Number.isInteger(n) && n >= 1 && n <= items.length) {
150
+ return n - 1;
151
+ }
152
+ console.log(` Please enter a number between 1 and ${String(items.length)}.`);
153
+ }
154
+ }
155
+ async function promptEdition(rl, def) {
156
+ const available = (0, paths_1.listAvailableEditions)();
157
+ if (available.length === 0) {
158
+ return promptText(rl, 'Distribution edition', def);
159
+ }
160
+ const ordered = available.includes(def) ? [def, ...available.filter((e) => e !== def)] : [def, ...available];
161
+ const idx = await promptChoice(rl, 'Distribution edition (defined by xema-distributions)', ordered.map((e) => ({ label: e })));
162
+ return ordered[idx] ?? def;
163
+ }
164
+ async function promptText(rl, question, def) {
165
+ const raw = (await rl.question(`${question} (${def}): `)).trim();
166
+ return raw.length > 0 ? raw : def;
167
+ }
168
+ async function promptYesNo(rl, question, def) {
169
+ const suffix = def ? '(Y/n)' : '(y/N)';
170
+ const raw = (await rl.question(`${question} ${suffix}: `)).trim().toLowerCase();
171
+ if (raw.length === 0) {
172
+ return def;
173
+ }
174
+ return raw === 'y' || raw === 'yes';
175
+ }
176
+ function renderConfigFile(preset, config) {
177
+ const meta = init_presets_1.PRESET_METAS[preset];
178
+ const header = [
179
+ '# xema.config.yaml',
180
+ `# Generated by \`xema init\` — preset: ${preset}`,
181
+ `# ${meta.description}`,
182
+ '#',
183
+ `# Next: ${meta.nextStep}`,
184
+ '# Infra modes: managed (launcher runs it) | external (give a url) | disabled.',
185
+ '# Full annotated reference + more scenarios:',
186
+ '# https://github.com/xema-dev/xema-cli/tree/main/apps/xema-cli/examples',
187
+ '',
188
+ '',
189
+ ].join('\n');
190
+ return header + (0, yaml_1.stringify)(config, { aliasDuplicateObjects: false });
191
+ }
192
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;AAuCA,0CAuBC;AA9DD,qCAAoD;AACpD,yCAAmD;AACnD,qDAAyE;AAEzE,+BAAkD;AAElD,kDAA8D;AAC9D,iEAQwC;AACxC,4CAAyD;AAoBzD,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,cAAc,GAAG,yBAAU,CAAC,cAAc,CAAC;AAEjD,SAAgB,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,OAAO,CAAC,uDAAuD,CAAC;SAChE,WAAW,CACV,yEAAyE;QACvE,4BAA4B,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB;QACzE,qDAAqD,CACxD;SACA,MAAM,CAAC,iBAAiB,EAAE,WAAW,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,cAAc,GAAG,CAAC;SACrE,MAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC;SAC/D,MAAM,CAAC,OAAO,EAAE,0DAA0D,CAAC;SAC3E,MAAM,CAAC,OAAO,EAAE,uEAAuE,CAAC;SACxF,MAAM,CAAC,SAAS,EAAE,mCAAmC,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAA,qBAAQ,EAAC,4BAAe,CAAC,YAAY,EAAE,qBAAqB,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAiB;IACtC,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC;IAC7E,IAAI,IAAA,oBAAU,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,qBAAQ,EACb,4BAAe,CAAC,kBAAkB,EAClC,GAAG,UAAU,oFAAoF,CAClG,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACpD,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAA,gCAAiB,EAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,2BAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAA,uBAAa,EAAC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAE7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;AAC/G,CAAC;AAQD,KAAK,UAAU,sBAAsB,CAAC,IAAiB;IAErD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAA,8BAAe,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAA,qBAAQ,EACb,4BAAe,CAAC,kBAAkB,EAClC,qBAAqB,IAAI,CAAC,MAAM,aAAa,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACxE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,IAAA,qBAAQ,EACb,4BAAe,CAAC,kBAAkB,EAClC,sEAAsE;YACpE,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAGD,SAAS,oBAAoB,CAAC,OAAe;IAC3C,MAAM,SAAS,GAAG,IAAA,6BAAqB,GAAE,CAAC;IAC1C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CACT,eAAe,OAAO,yCAAyC;YAC7D,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD;YAC/E,2CAA2C,CAC9C,CAAC;IACJ,CAAC;AACH,CAAC;AAGD,SAAS,eAAe,CAAC,IAAiB;IACxC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;QAC9B,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI;KACvB,CAAC;AACJ,CAAC;AAGD,KAAK,UAAU,SAAS,CAAC,IAAiB;IACxC,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,MAAM,OAAO,GAAG,2BAAY,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,EAAE,EACF,0BAA0B,EAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,MAAM,CAAC,GAAG,2BAAY,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,CAAC,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC;QACjD,MAAM,IAAI,GAAG,2BAAY,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;QAE/D,IAAI,IAAI,GAAuB,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,IAAI,GAAG,MAAM,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,GAAG,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IACvD,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAWD,KAAK,UAAU,mBAAmB,CAAC,EAAa,EAAE,MAAkB;IAClE,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,GAAG,CAAC,WAAW,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,gBAAgB,EAAE,iCAAkB,CAAC,QAAQ,CAAC,CAAC;IACtF,IAAI,MAAM,KAAK,yBAAU,CAAC,aAAa,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,aAAa,EAAE,iCAAkB,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,GAAG,CAAC,WAAW,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,gBAAgB,EAAE,iCAAkB,CAAC,QAAQ,CAAC,CAAC;IACtF,GAAG,CAAC,aAAa,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,kBAAkB,EAAE,iCAAkB,CAAC,aAAa,CAAC,CAAC;IAC/F,IAAI,MAAM,KAAK,yBAAU,CAAC,QAAQ,EAAE,CAAC;QACnC,GAAG,CAAC,cAAc,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,oBAAoB,EAAE,iCAAkB,CAAC,WAAW,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,EAAa,EACb,QAAgB,EAChB,KAAsD;IAEtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,SAAS,CAAC;QACR,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAQD,KAAK,UAAU,aAAa,CAAC,EAAa,EAAE,GAAW;IACrD,MAAM,SAAS,GAAG,IAAA,6BAAqB,GAAE,CAAC;IAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC,EAAE,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IAC7G,MAAM,GAAG,GAAG,MAAM,YAAY,CAC5B,EAAE,EACF,sDAAsD,EACtD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CACnC,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAa,EAAE,QAAgB,EAAE,GAAW;IACpE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAa,EAAE,QAAgB,EAAE,GAAY;IACtE,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC;AACtC,CAAC;AAGD,SAAS,gBAAgB,CAAC,MAAkB,EAAE,MAA+B;IAC3E,MAAM,IAAI,GAAG,2BAAY,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG;QACb,oBAAoB;QACpB,0CAA0C,MAAM,EAAE;QAClD,KAAK,IAAI,CAAC,WAAW,EAAE;QACvB,GAAG;QACH,WAAW,IAAI,CAAC,QAAQ,EAAE;QAC1B,+EAA+E;QAC/E,8CAA8C;QAC9C,2EAA2E;QAC3E,EAAE;QACF,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAIb,OAAO,MAAM,GAAG,IAAA,gBAAa,EAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAatD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CActD"}
@@ -2,15 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerCommand = registerCommand;
4
4
  const exit_codes_1 = require("../lib/exit-codes");
5
+ const loader_1 = require("../runtime/config/loader");
6
+ const schema_1 = require("../runtime/config/schema");
5
7
  const docker_cli_1 = require("../runtime/runner/docker-cli");
8
+ const helm_cli_1 = require("../runtime/runner/helm-cli");
6
9
  function registerCommand(program) {
7
10
  program
8
11
  .command('status')
9
12
  .summary('Show launcher-owned workloads and their health')
10
- .description('List the containers xema up started (services + managed infra) with status.')
11
- .action(async () => {
13
+ .description('List what xema up started (containers, or Helm releases) with status.')
14
+ .option('--config <path>', 'Path to xema.config.yaml (selects the substrate)')
15
+ .action(async (opts) => {
12
16
  try {
13
- await runStatus();
17
+ await runStatus(opts);
14
18
  }
15
19
  catch (err) {
16
20
  const message = err instanceof Error ? err.message : String(err);
@@ -18,7 +22,29 @@ function registerCommand(program) {
18
22
  }
19
23
  });
20
24
  }
21
- async function runStatus() {
25
+ async function runStatus(opts) {
26
+ const { config } = (0, loader_1.loadXemaConfig)({ explicit: opts.config });
27
+ if (config.app.substrate === schema_1.Substrate.Helm) {
28
+ await runHelmStatus();
29
+ return;
30
+ }
31
+ await runContainerStatus();
32
+ }
33
+ async function runHelmStatus() {
34
+ const helm = new helm_cli_1.HelmCli();
35
+ if (!(await helm.available())) {
36
+ console.log('helm is not reachable — no Helm release status available.');
37
+ return;
38
+ }
39
+ const table = await helm.listTable();
40
+ if (table.trim().length === 0) {
41
+ console.log(`No Helm releases in namespace "${helm.namespace}".`);
42
+ return;
43
+ }
44
+ console.log(`Helm releases in namespace "${helm.namespace}":`);
45
+ console.log(table.trimEnd());
46
+ }
47
+ async function runContainerStatus() {
22
48
  const docker = new docker_cli_1.DockerCli();
23
49
  if (!(await docker.available())) {
24
50
  console.log('No container runtime reachable. (Native services report status only within `xema up`.)');
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;AAWA,0CAaC;AAxBD,kDAA8D;AAC9D,6DAAyE;AAUzE,SAAgB,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,OAAO,CAAC,gDAAgD,CAAC;SACzD,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,SAAS,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAA,qBAAQ,EAAC,4BAAe,CAAC,YAAY,EAAE,uBAAuB,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAG,IAAI,sBAAS,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;QACtG,OAAO;IACT,CAAC;IAGD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,SAAS,2BAAc,EAAE;QACzB,UAAU;QACV,iDAAiD,GAAG,2BAAc,GAAG,KAAK;KAC3E,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CACT,mEAAmE;YACjE,GAAG,2BAAc,gDAAgD;YACjE,6DAA6D,CAChE,CAAC;QACF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { Substrate } from './schema';
2
+ export declare enum InitPreset {
3
+ LocalMonolith = "local-monolith",
4
+ LocalContainer = "local-container",
5
+ ByoInfra = "byo-infra",
6
+ Appliance = "appliance"
7
+ }
8
+ export declare const INIT_PRESETS: readonly InitPreset[];
9
+ export declare const DEFAULT_LOCAL_URLS: {
10
+ readonly postgres: "postgresql://postgres:postgres@127.0.0.1:5432";
11
+ readonly redis: "redis://127.0.0.1:6379";
12
+ readonly keycloak: "http://127.0.0.1:8180";
13
+ readonly objectStore: "http://127.0.0.1:9000";
14
+ readonly keycloakRealm: "xema";
15
+ };
16
+ export interface PresetInputs {
17
+ readonly edition: string;
18
+ readonly web: boolean;
19
+ readonly postgresUrl?: string;
20
+ readonly redisUrl?: string;
21
+ readonly keycloakUrl?: string;
22
+ readonly keycloakRealm?: string;
23
+ readonly objectStoreUrl?: string;
24
+ }
25
+ export interface PresetMeta {
26
+ readonly preset: InitPreset;
27
+ readonly label: string;
28
+ readonly description: string;
29
+ readonly substrate: Substrate;
30
+ readonly needsExternalInfra: boolean;
31
+ readonly supportsWeb: boolean;
32
+ readonly nextStep: string;
33
+ }
34
+ export declare const PRESET_METAS: Readonly<Record<InitPreset, PresetMeta>>;
35
+ export declare function parseInitPreset(value: string): InitPreset | null;
36
+ export declare function buildPresetConfig(preset: InitPreset, inputs: PresetInputs): Record<string, unknown>;
37
+ //# sourceMappingURL=init-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-presets.d.ts","sourceRoot":"","sources":["../../../src/runtime/config/init-presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAmB,MAAM,UAAU,CAAC;AAW/E,oBAAY,UAAU;IAEpB,aAAa,mBAAmB;IAEhC,cAAc,oBAAoB;IAElC,QAAQ,cAAc;IAEtB,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAK7C,CAAC;AAGF,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAGX,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAErC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CA2CjE,CAAC;AAGF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAEhE;AAUD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAInG"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRESET_METAS = exports.DEFAULT_LOCAL_URLS = exports.INIT_PRESETS = exports.InitPreset = void 0;
4
+ exports.parseInitPreset = parseInitPreset;
5
+ exports.buildPresetConfig = buildPresetConfig;
6
+ const schema_1 = require("./schema");
7
+ var InitPreset;
8
+ (function (InitPreset) {
9
+ InitPreset["LocalMonolith"] = "local-monolith";
10
+ InitPreset["LocalContainer"] = "local-container";
11
+ InitPreset["ByoInfra"] = "byo-infra";
12
+ InitPreset["Appliance"] = "appliance";
13
+ })(InitPreset || (exports.InitPreset = InitPreset = {}));
14
+ exports.INIT_PRESETS = [
15
+ InitPreset.LocalMonolith,
16
+ InitPreset.LocalContainer,
17
+ InitPreset.ByoInfra,
18
+ InitPreset.Appliance,
19
+ ];
20
+ exports.DEFAULT_LOCAL_URLS = {
21
+ postgres: 'postgresql://postgres:postgres@127.0.0.1:5432',
22
+ redis: 'redis://127.0.0.1:6379',
23
+ keycloak: 'http://127.0.0.1:8180',
24
+ objectStore: 'http://127.0.0.1:9000',
25
+ keycloakRealm: 'xema',
26
+ };
27
+ exports.PRESET_METAS = {
28
+ [InitPreset.LocalMonolith]: {
29
+ preset: InitPreset.LocalMonolith,
30
+ label: 'Local dev — lowest RAM (single native process)',
31
+ description: 'Native single-process mode (in-process registry + SQLite, no etcd). You run ' +
32
+ 'infra yourself (e.g. docker compose up postgres redis keycloak).',
33
+ substrate: schema_1.Substrate.Native,
34
+ needsExternalInfra: true,
35
+ supportsWeb: false,
36
+ nextStep: 'xema dev (or: xema up --monolith)',
37
+ },
38
+ [InitPreset.LocalContainer]: {
39
+ preset: InitPreset.LocalContainer,
40
+ label: 'Local full stack — containers (launcher manages infra)',
41
+ description: 'Container substrate: the launcher brings up + bootstraps managed infra, pulls ' +
42
+ 'service images, and (optionally) starts the web shell. Needs Docker/Podman.',
43
+ substrate: schema_1.Substrate.Container,
44
+ needsExternalInfra: false,
45
+ supportsWeb: true,
46
+ nextStep: 'xema up',
47
+ },
48
+ [InitPreset.ByoInfra]: {
49
+ preset: InitPreset.ByoInfra,
50
+ label: 'Bring-your-own infrastructure (containers)',
51
+ description: 'Containers for services, but Postgres / Keycloak / object-store are yours ' +
52
+ '(provide URLs); the launcher manages only the rest (redis, etcd, search, temporal).',
53
+ substrate: schema_1.Substrate.Container,
54
+ needsExternalInfra: true,
55
+ supportsWeb: true,
56
+ nextStep: 'xema up',
57
+ },
58
+ [InitPreset.Appliance]: {
59
+ preset: InitPreset.Appliance,
60
+ label: 'Cluster / appliance (Kubernetes via Helm)',
61
+ description: 'Deploys to Kubernetes via `helm upgrade --install` with managed infra charts.',
62
+ substrate: schema_1.Substrate.Helm,
63
+ needsExternalInfra: false,
64
+ supportsWeb: true,
65
+ nextStep: 'xema serve --profile appliance',
66
+ },
67
+ };
68
+ function parseInitPreset(value) {
69
+ return exports.INIT_PRESETS.find((p) => p === value) ?? null;
70
+ }
71
+ const MANAGED = { mode: schema_1.InfraMode.Managed };
72
+ function buildPresetConfig(preset, inputs) {
73
+ const config = buildMinimal(preset, inputs);
74
+ (0, schema_1.parseXemaConfig)(config);
75
+ return config;
76
+ }
77
+ function buildMinimal(preset, inputs) {
78
+ const realm = inputs.keycloakRealm ?? exports.DEFAULT_LOCAL_URLS.keycloakRealm;
79
+ switch (preset) {
80
+ case InitPreset.LocalMonolith:
81
+ return {
82
+ edition: inputs.edition,
83
+ app: { substrate: schema_1.Substrate.Native, processModel: schema_1.ProcessModel.Monolith },
84
+ infra: {
85
+ postgres: { mode: schema_1.InfraMode.External, url: inputs.postgresUrl ?? exports.DEFAULT_LOCAL_URLS.postgres },
86
+ redis: { mode: schema_1.InfraMode.External, url: inputs.redisUrl ?? exports.DEFAULT_LOCAL_URLS.redis },
87
+ keycloak: {
88
+ mode: schema_1.InfraMode.External,
89
+ url: inputs.keycloakUrl ?? exports.DEFAULT_LOCAL_URLS.keycloak,
90
+ realm,
91
+ },
92
+ },
93
+ };
94
+ case InitPreset.LocalContainer:
95
+ return {
96
+ edition: inputs.edition,
97
+ app: { substrate: schema_1.Substrate.Container, web: { enabled: inputs.web } },
98
+ infra: {
99
+ postgres: MANAGED,
100
+ redis: MANAGED,
101
+ etcd: MANAGED,
102
+ keycloak: MANAGED,
103
+ objectStore: MANAGED,
104
+ search: MANAGED,
105
+ temporal: MANAGED,
106
+ },
107
+ };
108
+ case InitPreset.ByoInfra:
109
+ return {
110
+ edition: inputs.edition,
111
+ app: { substrate: schema_1.Substrate.Container, web: { enabled: inputs.web } },
112
+ infra: {
113
+ postgres: { mode: schema_1.InfraMode.External, url: inputs.postgresUrl ?? exports.DEFAULT_LOCAL_URLS.postgres },
114
+ keycloak: {
115
+ mode: schema_1.InfraMode.External,
116
+ url: inputs.keycloakUrl ?? exports.DEFAULT_LOCAL_URLS.keycloak,
117
+ realm,
118
+ },
119
+ objectStore: {
120
+ mode: schema_1.InfraMode.External,
121
+ url: inputs.objectStoreUrl ?? exports.DEFAULT_LOCAL_URLS.objectStore,
122
+ },
123
+ redis: MANAGED,
124
+ etcd: MANAGED,
125
+ search: MANAGED,
126
+ temporal: MANAGED,
127
+ },
128
+ };
129
+ case InitPreset.Appliance:
130
+ return {
131
+ edition: inputs.edition,
132
+ app: { substrate: schema_1.Substrate.Helm, web: { enabled: inputs.web } },
133
+ infra: {
134
+ postgres: MANAGED,
135
+ redis: MANAGED,
136
+ etcd: MANAGED,
137
+ keycloak: MANAGED,
138
+ objectStore: MANAGED,
139
+ search: MANAGED,
140
+ temporal: MANAGED,
141
+ },
142
+ };
143
+ }
144
+ }
145
+ //# sourceMappingURL=init-presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-presets.js","sourceRoot":"","sources":["../../../src/runtime/config/init-presets.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare function findMonorepoRoot(startDir?: string): string | null;
2
+ export declare function listAvailableEditions(): string[];
2
3
  export interface ArtifactResolution {
3
4
  readonly path: string;
4
5
  readonly source: 'flag' | 'env' | 'vendored' | 'monorepo';
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/runtime/paths.ts"],"names":[],"mappings":"AAqBA,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAY5E;AAQD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;CAC3D;AAED,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAcD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CA2B5F;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CAwBrF;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,GAAG,kBAAkB,CAwBtG"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/runtime/paths.ts"],"names":[],"mappings":"AAqBA,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAY5E;AAgBD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAQhD;AAmBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;CAC3D;AAED,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAcD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CA2B5F;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CAwBrF;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,GAAG,kBAAkB,CAwBtG"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findMonorepoRoot = findMonorepoRoot;
4
+ exports.listAvailableEditions = listAvailableEditions;
4
5
  exports.resolveDistributionLockPath = resolveDistributionLockPath;
5
6
  exports.resolveImageLockPath = resolveImageLockPath;
6
7
  exports.resolveBootGraphPath = resolveBootGraphPath;
@@ -23,6 +24,32 @@ function findMonorepoRoot(startDir = __dirname) {
23
24
  function vendoredAssetsDir() {
24
25
  return (0, node_path_1.resolve)(__dirname, '..', 'assets');
25
26
  }
27
+ function listAvailableEditions() {
28
+ const editions = new Set();
29
+ const monorepo = findMonorepoRoot();
30
+ if (monorepo !== null) {
31
+ collectEditionsFrom((0, node_path_1.join)(monorepo, 'repos-infra', 'xema-distributions'), editions);
32
+ }
33
+ collectEditionsFrom(vendoredAssetsDir(), editions);
34
+ return [...editions].sort();
35
+ }
36
+ function collectEditionsFrom(dir, into) {
37
+ if (!(0, node_fs_1.existsSync)(dir)) {
38
+ return;
39
+ }
40
+ let entries;
41
+ try {
42
+ entries = (0, node_fs_1.readdirSync)(dir);
43
+ }
44
+ catch {
45
+ return;
46
+ }
47
+ for (const name of entries) {
48
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(dir, name, 'distribution.lock.json'))) {
49
+ into.add(name);
50
+ }
51
+ }
52
+ }
26
53
  function firstExisting(candidates) {
27
54
  for (const c of candidates) {
28
55
  if ((0, node_fs_1.existsSync)(c.path)) {
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/runtime/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/runtime/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare const DEFAULT_HELM_NAMESPACE = "xema";
2
+ export declare const DEFAULT_HELM_CHART_REPO = "oci://registry.local/xema/charts";
3
+ export interface HelmCliOptions {
4
+ readonly bin?: string | undefined;
5
+ readonly namespace?: string | undefined;
6
+ readonly kubeconfig?: string | undefined;
7
+ }
8
+ export declare class HelmCli {
9
+ private readonly bin;
10
+ readonly namespace: string;
11
+ private readonly kubeconfig;
12
+ constructor(opts?: HelmCliOptions);
13
+ exec(args: readonly string[]): Promise<string>;
14
+ execQuiet(args: readonly string[]): Promise<string>;
15
+ available(): Promise<boolean>;
16
+ listReleases(): Promise<string[]>;
17
+ listTable(): Promise<string>;
18
+ uninstall(release: string): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=helm-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helm-cli.d.ts","sourceRoot":"","sources":["../../../src/runtime/runner/helm-cli.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,uBAAuB,qCAAqC,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEpC,IAAI,GAAE,cAAmB;IAMrC,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBxC,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IASnD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAM7B,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IASjC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhD"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HelmCli = exports.DEFAULT_HELM_CHART_REPO = exports.DEFAULT_HELM_NAMESPACE = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ exports.DEFAULT_HELM_NAMESPACE = 'xema';
6
+ exports.DEFAULT_HELM_CHART_REPO = 'oci://registry.local/xema/charts';
7
+ class HelmCli {
8
+ bin;
9
+ namespace;
10
+ kubeconfig;
11
+ constructor(opts = {}) {
12
+ this.bin = opts.bin ?? 'helm';
13
+ this.namespace = opts.namespace ?? process.env.XEMA_NAMESPACE ?? exports.DEFAULT_HELM_NAMESPACE;
14
+ this.kubeconfig = opts.kubeconfig;
15
+ }
16
+ exec(args) {
17
+ const env = { ...process.env };
18
+ if (this.kubeconfig) {
19
+ env.KUBECONFIG = this.kubeconfig;
20
+ }
21
+ return new Promise((resolve, reject) => {
22
+ (0, node_child_process_1.execFile)(this.bin, [...args], { env, maxBuffer: 32 * 1024 * 1024 }, (err, stdout, stderr) => {
23
+ if (err) {
24
+ reject(new Error(`${this.bin} ${args.join(' ')} failed: ${stderr || err.message}`));
25
+ return;
26
+ }
27
+ resolve(stdout);
28
+ });
29
+ });
30
+ }
31
+ async execQuiet(args) {
32
+ try {
33
+ return await this.exec(args);
34
+ }
35
+ catch {
36
+ return '';
37
+ }
38
+ }
39
+ async available() {
40
+ const out = await this.execQuiet(['version', '--short']);
41
+ return out.trim().length > 0;
42
+ }
43
+ async listReleases() {
44
+ const out = await this.execQuiet(['list', '-q', '--namespace', this.namespace]);
45
+ return out
46
+ .split('\n')
47
+ .map((l) => l.trim())
48
+ .filter((l) => l.length > 0);
49
+ }
50
+ async listTable() {
51
+ return this.execQuiet(['list', '--namespace', this.namespace]);
52
+ }
53
+ async uninstall(release) {
54
+ await this.exec(['uninstall', release, '--namespace', this.namespace]);
55
+ }
56
+ }
57
+ exports.HelmCli = HelmCli;
58
+ //# sourceMappingURL=helm-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helm-cli.js","sourceRoot":"","sources":["../../../src/runtime/runner/helm-cli.ts"],"names":[],"mappings":";;;AAAA,2DAA8C;AAajC,QAAA,sBAAsB,GAAG,MAAM,CAAC;AAChC,QAAA,uBAAuB,GAAG,kCAAkC,CAAC;AAQ1E,MAAa,OAAO;IACD,GAAG,CAAS;IAEpB,SAAS,CAAS;IACV,UAAU,CAAqB;IAEhD,YAAY,OAAuB,EAAE;QACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,8BAAsB,CAAC;QACxF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,IAAuB;QAC1B,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAA,6BAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC1F,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACpF,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,SAAS,CAAC,IAAuB;QACrC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAGD,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC;IAGD,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,OAAO,GAAG;aACP,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IAGD,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC;IAGD,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE,CAAC;CACF;AA7DD,0BA6DC"}
@@ -9,11 +9,10 @@ export interface HelmRunnerOptions {
9
9
  export declare class HelmRunner implements ServiceRunner {
10
10
  private readonly opts;
11
11
  readonly kind = ServiceRunnerKind.Helm;
12
- private readonly bin;
12
+ private readonly helm;
13
13
  private readonly namespace;
14
14
  private readonly chartRepo;
15
15
  constructor(opts?: HelmRunnerOptions);
16
16
  start(input: StartServiceInput): Promise<RunningService>;
17
- private helm;
18
17
  }
19
18
  //# sourceMappingURL=helm-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helm-runner.d.ts","sourceRoot":"","sources":["../../../src/runtime/runner/helm-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAc1B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,qBAAa,UAAW,YAAW,aAAa;IAMlC,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,QAAQ,CAAC,IAAI,0BAA0B;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEN,IAAI,GAAE,iBAAsB;IAMnD,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAmC9D,OAAO,CAAC,IAAI;CAeb"}
1
+ {"version":3,"file":"helm-runner.d.ts","sourceRoot":"","sources":["../../../src/runtime/runner/helm-runner.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAgB1B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,qBAAa,UAAW,YAAW,aAAa;IAMlC,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,QAAQ,CAAC,IAAI,0BAA0B;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEN,IAAI,GAAE,iBAAsB;IAUnD,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;CAkC/D"}
@@ -1,22 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HelmRunner = void 0;
4
- const node_child_process_1 = require("node:child_process");
4
+ const helm_cli_1 = require("./helm-cli");
5
5
  const service_runner_1 = require("./service-runner");
6
- const DEFAULT_CHART_REPO = 'oci://registry.local/xema/charts';
7
- const DEFAULT_NAMESPACE = 'xema';
8
6
  const DEFAULT_WAIT_TIMEOUT = '5m';
9
7
  class HelmRunner {
10
8
  opts;
11
9
  kind = service_runner_1.ServiceRunnerKind.Helm;
12
- bin;
10
+ helm;
13
11
  namespace;
14
12
  chartRepo;
15
13
  constructor(opts = {}) {
16
14
  this.opts = opts;
17
- this.bin = opts.bin ?? 'helm';
18
- this.namespace = opts.namespace ?? process.env.XEMA_NAMESPACE ?? DEFAULT_NAMESPACE;
19
- this.chartRepo = opts.chartRepo ?? process.env.XEMA_CHART_REPO ?? DEFAULT_CHART_REPO;
15
+ this.helm = new helm_cli_1.HelmCli({
16
+ bin: opts.bin,
17
+ namespace: opts.namespace,
18
+ kubeconfig: opts.kubeconfig,
19
+ });
20
+ this.namespace = this.helm.namespace;
21
+ this.chartRepo = opts.chartRepo ?? process.env.XEMA_CHART_REPO ?? helm_cli_1.DEFAULT_HELM_CHART_REPO;
20
22
  }
21
23
  async start(input) {
22
24
  const { entry } = input;
@@ -39,32 +41,17 @@ class HelmRunner {
39
41
  if (entry.imageRef) {
40
42
  args.push('--set', `image.repository=${entry.imageRef}`);
41
43
  }
42
- await this.helm(args);
44
+ await this.helm.exec(args);
43
45
  const url = `http://${entry.name}.${this.namespace}.svc.cluster.local`;
44
46
  return {
45
47
  name: entry.name,
46
48
  url,
47
49
  handle: `helm:${release}`,
48
50
  close: async () => {
49
- await this.helm(['uninstall', release, '--namespace', this.namespace]).catch(() => undefined);
51
+ await this.helm.uninstall(release).catch(() => undefined);
50
52
  },
51
53
  };
52
54
  }
53
- helm(args) {
54
- const env = { ...process.env };
55
- if (this.opts.kubeconfig) {
56
- env.KUBECONFIG = this.opts.kubeconfig;
57
- }
58
- return new Promise((resolve, reject) => {
59
- (0, node_child_process_1.execFile)(this.bin, [...args], { env, maxBuffer: 32 * 1024 * 1024 }, (err, stdout, stderr) => {
60
- if (err) {
61
- reject(new Error(`${this.bin} ${args.join(' ')} failed: ${stderr || err.message}`));
62
- return;
63
- }
64
- resolve(stdout);
65
- });
66
- });
67
- }
68
55
  }
69
56
  exports.HelmRunner = HelmRunner;
70
57
  //# sourceMappingURL=helm-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helm-runner.js","sourceRoot":"","sources":["../../../src/runtime/runner/helm-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helm-runner.js","sourceRoot":"","sources":["../../../src/runtime/runner/helm-runner.ts"],"names":[],"mappings":";;;AAAA,yCAA8D;AAC9D,qDAK0B;AAyB1B,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,MAAa,UAAU;IAMQ;IALpB,IAAI,GAAG,kCAAiB,CAAC,IAAI,CAAC;IACtB,IAAI,CAAU;IACd,SAAS,CAAS;IAClB,SAAS,CAAS;IAEnC,YAA6B,OAA0B,EAAE;QAA5B,SAAI,GAAJ,IAAI,CAAwB;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAO,CAAC;YACtB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,kCAAuB,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB;QAClC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG;YACX,SAAS;YACT,WAAW;YACX,OAAO;YACP,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;YACjC,aAAa;YACb,IAAI,CAAC,SAAS;YACd,oBAAoB;YACpB,QAAQ;YACR,WAAW;YACX,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,oBAAoB;SAC9C,CAAC;QACF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,UAAU,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,oBAAoB,CAAC;QACvE,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG;YACH,MAAM,EAAE,QAAQ,OAAO,EAAE;YACzB,KAAK,EAAE,KAAK,IAAmB,EAAE;gBAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAlDD,gCAkDC"}
@@ -8,7 +8,7 @@ edition: oss
8
8
  app:
9
9
  substrate: native # monolith is native-only
10
10
  processModel: monolith # 1 process, SQLite, no etcd
11
- include: [ all ]
11
+ include: all
12
12
  infra:
13
13
  # Native substrate assumes you already run infra (e.g. docker compose up).
14
14
  # If you want the launcher to manage infra too, use the container substrate
@@ -6,7 +6,7 @@
6
6
  edition: oss
7
7
  app:
8
8
  substrate: container
9
- include: [ all ]
9
+ include: all
10
10
  web: { enabled: true } # also start the host-shell frontend
11
11
  infra:
12
12
  postgres: { mode: managed }
@@ -6,7 +6,7 @@
6
6
  edition: oss
7
7
  app:
8
8
  substrate: container
9
- include: [ all ]
9
+ include: all
10
10
  infra:
11
11
  postgres: { mode: external, url: postgresql://app:secret@db.corp.internal:5432 }
12
12
  keycloak: { mode: external, url: https://sso.corp/realms/xema, realm: xema }
@@ -6,5 +6,5 @@
6
6
  edition: oss
7
7
  app:
8
8
  substrate: helm
9
- include: [ all ]
9
+ include: all
10
10
  web: { enabled: true }
@@ -11,7 +11,7 @@
11
11
  edition: oss
12
12
  app:
13
13
  substrate: native # workspace + git sources are source, not images
14
- include: [ all ]
14
+ include: all
15
15
 
16
16
  sources:
17
17
  # 1. WORKSPACE — local working-tree dirs. In a monorepo checkout this wins
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/xema",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Xema OS global CLI (plan v4.3 §6 Phase J). Single binary day-0 onboarding: `npm i -g @xemahq/xema && xema dev` boots the whole stack; `xema biome scaffold` / `install` / `publish` / `lint` author and ship biomes; `xema run <capability>` invokes through the local capability-router. Multi-platform: works without pnpm or any monorepo clone.",
6
6
  "type": "commonjs",