@xemahq/xema 0.12.0 → 0.14.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/README.md +68 -20
- package/dist/assets/boot-graph.json +57 -15
- package/dist/assets/core/distribution.lock.json +668 -297
- package/dist/assets/core/images.lock.json +136 -136
- package/dist/assets/oss/distribution.lock.json +1532 -444
- package/dist/assets/oss/images.lock.json +423 -188
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +36 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +1 -1
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/biome-dev.d.ts +3 -0
- package/dist/commands/biome-dev.d.ts.map +1 -0
- package/dist/commands/biome-dev.js +176 -0
- package/dist/commands/biome-dev.js.map +1 -0
- package/dist/commands/biome-validate.d.ts +10 -0
- package/dist/commands/biome-validate.d.ts.map +1 -0
- package/dist/commands/biome-validate.js +49 -0
- package/dist/commands/biome-validate.js.map +1 -0
- package/dist/commands/biome.d.ts.map +1 -1
- package/dist/commands/biome.js +359 -25
- package/dist/commands/biome.js.map +1 -1
- package/dist/commands/canopy.d.ts +3 -0
- package/dist/commands/canopy.d.ts.map +1 -0
- package/dist/commands/canopy.js +214 -0
- package/dist/commands/canopy.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +78 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +71 -21
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/dist.js +1 -1
- package/dist/commands/dist.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +40 -6
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +1 -1
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/installation.d.ts +3 -0
- package/dist/commands/installation.d.ts.map +1 -0
- package/dist/commands/installation.js +101 -0
- package/dist/commands/installation.js.map +1 -0
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +6 -14
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/objects.d.ts.map +1 -1
- package/dist/commands/objects.js +85 -6
- package/dist/commands/objects.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +1 -1
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +61 -9
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +33 -13
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/shell.d.ts.map +1 -1
- package/dist/commands/shell.js +190 -6
- package/dist/commands/shell.js.map +1 -1
- package/dist/commands/source.d.ts +3 -0
- package/dist/commands/source.d.ts.map +1 -0
- package/dist/commands/source.js +120 -0
- package/dist/commands/source.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +29 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +55 -5
- package/dist/commands/up.js.map +1 -1
- package/dist/dev/env-defaults.d.ts.map +1 -1
- package/dist/dev/env-defaults.js +33 -11
- package/dist/dev/env-defaults.js.map +1 -1
- package/dist/dev/forked-worker.d.ts +15 -0
- package/dist/dev/forked-worker.d.ts.map +1 -1
- package/dist/dev/forked-worker.js +72 -14
- package/dist/dev/forked-worker.js.map +1 -1
- package/dist/dev/infra-preflight.d.ts +2 -1
- package/dist/dev/infra-preflight.d.ts.map +1 -1
- package/dist/dev/infra-preflight.js +10 -0
- package/dist/dev/infra-preflight.js.map +1 -1
- package/dist/dev/opa-policies.d.ts +3 -0
- package/dist/dev/opa-policies.d.ts.map +1 -0
- package/dist/dev/opa-policies.js +64 -0
- package/dist/dev/opa-policies.js.map +1 -0
- package/dist/lib/cli-errors.d.ts +7 -0
- package/dist/lib/cli-errors.d.ts.map +1 -0
- package/dist/lib/cli-errors.js +30 -0
- package/dist/lib/cli-errors.js.map +1 -0
- package/dist/lib/control-plane.d.ts.map +1 -1
- package/dist/lib/control-plane.js +5 -2
- package/dist/lib/control-plane.js.map +1 -1
- package/dist/lib/exit-codes.d.ts +3 -4
- package/dist/lib/exit-codes.d.ts.map +1 -1
- package/dist/lib/exit-codes.js +3 -4
- package/dist/lib/exit-codes.js.map +1 -1
- package/dist/lib/http-error.d.ts +2 -0
- package/dist/lib/http-error.d.ts.map +1 -0
- package/dist/lib/http-error.js +51 -0
- package/dist/lib/http-error.js.map +1 -0
- package/dist/lib/roster-profile.d.ts +10 -0
- package/dist/lib/roster-profile.d.ts.map +1 -0
- package/dist/lib/roster-profile.js +44 -0
- package/dist/lib/roster-profile.js.map +1 -0
- package/dist/runtime/biome-dev.d.ts +28 -0
- package/dist/runtime/biome-dev.d.ts.map +1 -0
- package/dist/runtime/biome-dev.js +131 -0
- package/dist/runtime/biome-dev.js.map +1 -0
- package/dist/runtime/biome-local-install.d.ts +29 -0
- package/dist/runtime/biome-local-install.d.ts.map +1 -0
- package/dist/runtime/biome-local-install.js +243 -0
- package/dist/runtime/biome-local-install.js.map +1 -0
- package/dist/runtime/biome-publish.d.ts +34 -0
- package/dist/runtime/biome-publish.d.ts.map +1 -0
- package/dist/runtime/biome-publish.js +214 -0
- package/dist/runtime/biome-publish.js.map +1 -0
- package/dist/runtime/biome-scaffold.d.ts +35 -0
- package/dist/runtime/biome-scaffold.d.ts.map +1 -0
- package/dist/runtime/biome-scaffold.js +153 -0
- package/dist/runtime/biome-scaffold.js.map +1 -0
- package/dist/runtime/biome-validate.d.ts +28 -0
- package/dist/runtime/biome-validate.d.ts.map +1 -0
- package/dist/runtime/biome-validate.js +450 -0
- package/dist/runtime/biome-validate.js.map +1 -0
- package/dist/runtime/boot-graph-loader.d.ts +1 -0
- package/dist/runtime/boot-graph-loader.d.ts.map +1 -1
- package/dist/runtime/boot-graph-loader.js +99 -7
- package/dist/runtime/boot-graph-loader.js.map +1 -1
- package/dist/runtime/canopy-refs.d.ts +8 -0
- package/dist/runtime/canopy-refs.d.ts.map +1 -0
- package/dist/runtime/canopy-refs.js +51 -0
- package/dist/runtime/canopy-refs.js.map +1 -0
- package/dist/runtime/canopy-replies.d.ts +14 -0
- package/dist/runtime/canopy-replies.d.ts.map +1 -0
- package/dist/runtime/canopy-replies.js +39 -0
- package/dist/runtime/canopy-replies.js.map +1 -0
- package/dist/runtime/capability-invoke.d.ts +35 -0
- package/dist/runtime/capability-invoke.d.ts.map +1 -0
- package/dist/runtime/capability-invoke.js +119 -0
- package/dist/runtime/capability-invoke.js.map +1 -0
- package/dist/runtime/config/dev-mode.d.ts +8 -0
- package/dist/runtime/config/dev-mode.d.ts.map +1 -0
- package/dist/runtime/config/dev-mode.js +84 -0
- package/dist/runtime/config/dev-mode.js.map +1 -0
- package/dist/runtime/config/init-presets.d.ts +1 -1
- package/dist/runtime/config/init-presets.d.ts.map +1 -1
- package/dist/runtime/config/init-presets.js +63 -11
- package/dist/runtime/config/init-presets.js.map +1 -1
- package/dist/runtime/config/loader.d.ts +1 -0
- package/dist/runtime/config/loader.d.ts.map +1 -1
- package/dist/runtime/config/loader.js +41 -5
- package/dist/runtime/config/loader.js.map +1 -1
- package/dist/runtime/config/schema.d.ts +27 -12
- package/dist/runtime/config/schema.d.ts.map +1 -1
- package/dist/runtime/config/schema.js +113 -8
- package/dist/runtime/config/schema.js.map +1 -1
- package/dist/runtime/config/sources-config.d.ts +14 -0
- package/dist/runtime/config/sources-config.d.ts.map +1 -0
- package/dist/runtime/config/sources-config.js +79 -0
- package/dist/runtime/config/sources-config.js.map +1 -0
- package/dist/runtime/distribution/compose.d.ts.map +1 -1
- package/dist/runtime/distribution/compose.js +3 -1
- package/dist/runtime/distribution/compose.js.map +1 -1
- package/dist/runtime/env-seeder.d.ts +5 -0
- package/dist/runtime/env-seeder.d.ts.map +1 -1
- package/dist/runtime/env-seeder.js +120 -17
- package/dist/runtime/env-seeder.js.map +1 -1
- package/dist/runtime/foreground.d.ts +4 -0
- package/dist/runtime/foreground.d.ts.map +1 -1
- package/dist/runtime/foreground.js +11 -0
- package/dist/runtime/foreground.js.map +1 -1
- package/dist/runtime/infra/infra-catalog.d.ts +1 -0
- package/dist/runtime/infra/infra-catalog.d.ts.map +1 -1
- package/dist/runtime/infra/infra-catalog.js +2 -1
- package/dist/runtime/infra/infra-catalog.js.map +1 -1
- package/dist/runtime/infra/infra-runner.d.ts +5 -0
- package/dist/runtime/infra/infra-runner.d.ts.map +1 -1
- package/dist/runtime/infra/infra-runner.js +82 -13
- package/dist/runtime/infra/infra-runner.js.map +1 -1
- package/dist/runtime/installation/compiler.d.ts +37 -0
- package/dist/runtime/installation/compiler.d.ts.map +1 -0
- package/dist/runtime/installation/compiler.js +190 -0
- package/dist/runtime/installation/compiler.js.map +1 -0
- package/dist/runtime/installation/contract.d.ts +125 -0
- package/dist/runtime/installation/contract.d.ts.map +1 -0
- package/dist/runtime/installation/contract.js +182 -0
- package/dist/runtime/installation/contract.js.map +1 -0
- package/dist/runtime/installation/diagnostics.d.ts +16 -0
- package/dist/runtime/installation/diagnostics.d.ts.map +1 -0
- package/dist/runtime/installation/diagnostics.js +21 -0
- package/dist/runtime/installation/diagnostics.js.map +1 -0
- package/dist/runtime/installation/diff.d.ts +17 -0
- package/dist/runtime/installation/diff.d.ts.map +1 -0
- package/dist/runtime/installation/diff.js +99 -0
- package/dist/runtime/installation/diff.js.map +1 -0
- package/dist/runtime/installation/format.d.ts +3 -0
- package/dist/runtime/installation/format.d.ts.map +1 -0
- package/dist/runtime/installation/format.js +22 -0
- package/dist/runtime/installation/format.js.map +1 -0
- package/dist/runtime/installation/from-current-config.d.ts +8 -0
- package/dist/runtime/installation/from-current-config.d.ts.map +1 -0
- package/dist/runtime/installation/from-current-config.js +75 -0
- package/dist/runtime/installation/from-current-config.js.map +1 -0
- package/dist/runtime/installation/index.d.ts +13 -0
- package/dist/runtime/installation/index.d.ts.map +1 -0
- package/dist/runtime/installation/index.js +29 -0
- package/dist/runtime/installation/index.js.map +1 -0
- package/dist/runtime/installation/lifecycle.d.ts +23 -0
- package/dist/runtime/installation/lifecycle.d.ts.map +1 -0
- package/dist/runtime/installation/lifecycle.js +70 -0
- package/dist/runtime/installation/lifecycle.js.map +1 -0
- package/dist/runtime/installation/serialization.d.ts +3 -0
- package/dist/runtime/installation/serialization.d.ts.map +1 -0
- package/dist/runtime/installation/serialization.js +39 -0
- package/dist/runtime/installation/serialization.js.map +1 -0
- package/dist/runtime/installation/state-store.d.ts +20 -0
- package/dist/runtime/installation/state-store.d.ts.map +1 -0
- package/dist/runtime/installation/state-store.js +257 -0
- package/dist/runtime/installation/state-store.js.map +1 -0
- package/dist/runtime/installation/status.d.ts +30 -0
- package/dist/runtime/installation/status.d.ts.map +1 -0
- package/dist/runtime/installation/status.js +138 -0
- package/dist/runtime/installation/status.js.map +1 -0
- package/dist/runtime/installation/support-bundle.d.ts +30 -0
- package/dist/runtime/installation/support-bundle.d.ts.map +1 -0
- package/dist/runtime/installation/support-bundle.js +130 -0
- package/dist/runtime/installation/support-bundle.js.map +1 -0
- package/dist/runtime/installation/validation.d.ts +8 -0
- package/dist/runtime/installation/validation.d.ts.map +1 -0
- package/dist/runtime/installation/validation.js +39 -0
- package/dist/runtime/installation/validation.js.map +1 -0
- package/dist/runtime/installation/validators/common.d.ts +4 -0
- package/dist/runtime/installation/validators/common.d.ts.map +1 -0
- package/dist/runtime/installation/validators/common.js +29 -0
- package/dist/runtime/installation/validators/common.js.map +1 -0
- package/dist/runtime/installation/validators/infrastructure.d.ts +4 -0
- package/dist/runtime/installation/validators/infrastructure.d.ts.map +1 -0
- package/dist/runtime/installation/validators/infrastructure.js +78 -0
- package/dist/runtime/installation/validators/infrastructure.js.map +1 -0
- package/dist/runtime/installation/validators/operational.d.ts +4 -0
- package/dist/runtime/installation/validators/operational.d.ts.map +1 -0
- package/dist/runtime/installation/validators/operational.js +126 -0
- package/dist/runtime/installation/validators/operational.js.map +1 -0
- package/dist/runtime/installation/validators/profile.d.ts +4 -0
- package/dist/runtime/installation/validators/profile.d.ts.map +1 -0
- package/dist/runtime/installation/validators/profile.js +78 -0
- package/dist/runtime/installation/validators/profile.js.map +1 -0
- package/dist/runtime/installation/validators/secrets.d.ts +4 -0
- package/dist/runtime/installation/validators/secrets.d.ts.map +1 -0
- package/dist/runtime/installation/validators/secrets.js +68 -0
- package/dist/runtime/installation/validators/secrets.js.map +1 -0
- package/dist/runtime/launch-plan-format.d.ts +3 -0
- package/dist/runtime/launch-plan-format.d.ts.map +1 -0
- package/dist/runtime/launch-plan-format.js +57 -0
- package/dist/runtime/launch-plan-format.js.map +1 -0
- package/dist/runtime/launch.d.ts +25 -3
- package/dist/runtime/launch.d.ts.map +1 -1
- package/dist/runtime/launch.js +264 -24
- package/dist/runtime/launch.js.map +1 -1
- package/dist/runtime/object-registry-client.d.ts +31 -0
- package/dist/runtime/object-registry-client.d.ts.map +1 -0
- package/dist/runtime/object-registry-client.js +54 -0
- package/dist/runtime/object-registry-client.js.map +1 -0
- package/dist/runtime/paths.d.ts +1 -0
- package/dist/runtime/paths.d.ts.map +1 -1
- package/dist/runtime/paths.js +2 -0
- package/dist/runtime/paths.js.map +1 -1
- package/dist/runtime/roster.d.ts +11 -4
- package/dist/runtime/roster.d.ts.map +1 -1
- package/dist/runtime/roster.js +78 -7
- package/dist/runtime/roster.js.map +1 -1
- package/dist/runtime/run-manifest.d.ts +23 -0
- package/dist/runtime/run-manifest.d.ts.map +1 -0
- package/dist/runtime/run-manifest.js +273 -0
- package/dist/runtime/run-manifest.js.map +1 -0
- package/dist/runtime/runner/container-runner.d.ts +6 -0
- package/dist/runtime/runner/container-runner.d.ts.map +1 -1
- package/dist/runtime/runner/container-runner.js +25 -6
- package/dist/runtime/runner/container-runner.js.map +1 -1
- package/dist/runtime/runner/docker-cli.d.ts +6 -1
- package/dist/runtime/runner/docker-cli.d.ts.map +1 -1
- package/dist/runtime/runner/docker-cli.js +47 -6
- package/dist/runtime/runner/docker-cli.js.map +1 -1
- package/dist/runtime/runner/native-runner.d.ts.map +1 -1
- package/dist/runtime/runner/native-runner.js +21 -14
- package/dist/runtime/runner/native-runner.js.map +1 -1
- package/dist/runtime/secrets/managed-local-store.d.ts +26 -0
- package/dist/runtime/secrets/managed-local-store.d.ts.map +1 -0
- package/dist/runtime/secrets/managed-local-store.js +202 -0
- package/dist/runtime/secrets/managed-local-store.js.map +1 -0
- package/dist/runtime/secrets/resolver.d.ts +23 -0
- package/dist/runtime/secrets/resolver.d.ts.map +1 -0
- package/dist/runtime/secrets/resolver.js +265 -0
- package/dist/runtime/secrets/resolver.js.map +1 -0
- package/dist/runtime/secrets/url-security.d.ts +3 -0
- package/dist/runtime/secrets/url-security.d.ts.map +1 -0
- package/dist/runtime/secrets/url-security.js +13 -0
- package/dist/runtime/secrets/url-security.js.map +1 -0
- package/dist/runtime/sources/credentials.d.ts.map +1 -1
- package/dist/runtime/sources/credentials.js +2 -1
- package/dist/runtime/sources/credentials.js.map +1 -1
- package/dist/runtime/sources/kinds/git.d.ts +6 -3
- package/dist/runtime/sources/kinds/git.d.ts.map +1 -1
- package/dist/runtime/sources/kinds/git.js +99 -22
- package/dist/runtime/sources/kinds/git.js.map +1 -1
- package/dist/runtime/sources/resolve-context.d.ts +7 -0
- package/dist/runtime/sources/resolve-context.d.ts.map +1 -0
- package/dist/runtime/sources/resolve-context.js +3 -0
- package/dist/runtime/sources/resolve-context.js.map +1 -0
- package/dist/runtime/sources/resolver.d.ts +2 -2
- package/dist/runtime/sources/resolver.d.ts.map +1 -1
- package/dist/runtime/sources/resolver.js +11 -5
- package/dist/runtime/sources/resolver.js.map +1 -1
- package/dist/runtime/store-client.d.ts +59 -0
- package/dist/runtime/store-client.d.ts.map +1 -0
- package/dist/runtime/store-client.js +71 -0
- package/dist/runtime/store-client.js.map +1 -0
- package/dist/runtime/supervisor.d.ts +6 -0
- package/dist/runtime/supervisor.d.ts.map +1 -1
- package/dist/runtime/supervisor.js +37 -5
- package/dist/runtime/supervisor.js.map +1 -1
- package/dist/runtime/waves.d.ts +1 -1
- package/dist/runtime/waves.d.ts.map +1 -1
- package/dist/runtime/waves.js +86 -19
- package/dist/runtime/waves.js.map +1 -1
- package/examples/01-local-native.yaml +4 -1
- package/examples/03-byo-infra.yaml +17 -7
- package/examples/05-appliance-helm.yaml +1 -1
- package/examples/06-biome-sources.yaml +4 -1
- package/package.json +6 -5
- package/xema.config.example.yaml +22 -18
package/dist/runtime/waves.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.bootGraphHardClosure = bootGraphHardClosure;
|
|
4
4
|
exports.deriveWaves = deriveWaves;
|
|
5
5
|
exports.findWaveOrderViolations = findWaveOrderViolations;
|
|
6
|
+
const distribution_1 = require("@xemahq/kernel-contracts/distribution");
|
|
7
|
+
const boot_graph_loader_1 = require("./boot-graph-loader");
|
|
6
8
|
function bootGraphHardClosure(seed, bootGraph, exists) {
|
|
7
9
|
const out = new Set(seed.filter(exists));
|
|
8
10
|
const queue = [...out];
|
|
@@ -21,25 +23,89 @@ function bootGraphHardClosure(seed, bootGraph, exists) {
|
|
|
21
23
|
}
|
|
22
24
|
return [...out];
|
|
23
25
|
}
|
|
24
|
-
const
|
|
25
|
-
kernel: 0,
|
|
26
|
-
system: 1,
|
|
27
|
-
base: 2,
|
|
28
|
-
platform: 3,
|
|
29
|
-
edge: 4,
|
|
30
|
-
};
|
|
26
|
+
const CANONICAL_TIER_RANK = distribution_1.PLATFORM_SERVICE_TIER_RANK;
|
|
31
27
|
function deriveWaves(roster, bootGraph) {
|
|
28
|
+
if (bootGraph === undefined) {
|
|
29
|
+
return deriveTierWaves(roster);
|
|
30
|
+
}
|
|
31
|
+
(0, boot_graph_loader_1.assertBootGraphIntegrity)(bootGraph);
|
|
32
|
+
const entries = new Map();
|
|
33
|
+
for (const entry of roster) {
|
|
34
|
+
if (entries.has(entry.name)) {
|
|
35
|
+
throw new Error(`Cannot compile boot waves: duplicate roster service "${entry.name}".`);
|
|
36
|
+
}
|
|
37
|
+
entries.set(entry.name, entry);
|
|
38
|
+
}
|
|
39
|
+
const prerequisites = new Map();
|
|
40
|
+
const dependents = new Map();
|
|
41
|
+
for (const name of entries.keys()) {
|
|
42
|
+
prerequisites.set(name, new Set());
|
|
43
|
+
dependents.set(name, new Set());
|
|
44
|
+
}
|
|
45
|
+
for (const [name] of entries) {
|
|
46
|
+
const node = bootGraph.services.get(name);
|
|
47
|
+
for (const dependency of node?.startupRequires ?? []) {
|
|
48
|
+
if (bootGraph.infraServices.has(dependency)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (!entries.has(dependency)) {
|
|
52
|
+
throw new Error(`Cannot compile boot waves: service "${name}" hard-requires "${dependency}", ` +
|
|
53
|
+
`but that dependency is absent from the resolved roster.`);
|
|
54
|
+
}
|
|
55
|
+
prerequisites.get(name)?.add(dependency);
|
|
56
|
+
dependents.get(dependency)?.add(name);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const effectiveTier = (name) => bootGraph.services.get(name)?.tier ?? entries.get(name)?.tier ?? '';
|
|
32
60
|
const rank = (tier) => {
|
|
33
|
-
const fromGraph = bootGraph
|
|
61
|
+
const fromGraph = bootGraph.tiers[tier];
|
|
34
62
|
if (typeof fromGraph === 'number') {
|
|
35
63
|
return fromGraph;
|
|
36
64
|
}
|
|
37
|
-
const
|
|
38
|
-
if (typeof
|
|
39
|
-
return
|
|
65
|
+
const fromCanonical = CANONICAL_TIER_RANK[tier];
|
|
66
|
+
if (typeof fromCanonical === 'number') {
|
|
67
|
+
return fromCanonical;
|
|
40
68
|
}
|
|
41
69
|
return Number.MAX_SAFE_INTEGER;
|
|
42
70
|
};
|
|
71
|
+
const remaining = new Set(entries.keys());
|
|
72
|
+
const waves = [];
|
|
73
|
+
while (remaining.size > 0) {
|
|
74
|
+
const ready = [...remaining].filter((name) => (prerequisites.get(name)?.size ?? 0) === 0);
|
|
75
|
+
if (ready.length === 0) {
|
|
76
|
+
throw new Error(`Cannot compile boot waves: no dependency-free service remains among ${[
|
|
77
|
+
...remaining,
|
|
78
|
+
]
|
|
79
|
+
.sort()
|
|
80
|
+
.join(', ')}.`);
|
|
81
|
+
}
|
|
82
|
+
const orderedTiers = [...new Set(ready.map(effectiveTier))].sort((left, right) => rank(left) - rank(right) || left.localeCompare(right));
|
|
83
|
+
const tier = orderedTiers[0];
|
|
84
|
+
if (tier === undefined) {
|
|
85
|
+
throw new Error('Cannot compile boot waves: ready service set has no tier.');
|
|
86
|
+
}
|
|
87
|
+
const members = ready
|
|
88
|
+
.filter((name) => effectiveTier(name) === tier)
|
|
89
|
+
.sort()
|
|
90
|
+
.map((name) => entries.get(name))
|
|
91
|
+
.filter((entry) => entry !== undefined);
|
|
92
|
+
waves.push({ index: waves.length, tier, members });
|
|
93
|
+
for (const member of members) {
|
|
94
|
+
remaining.delete(member.name);
|
|
95
|
+
for (const dependent of dependents.get(member.name) ?? []) {
|
|
96
|
+
prerequisites.get(dependent)?.delete(member.name);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return waves;
|
|
101
|
+
}
|
|
102
|
+
function deriveTierWaves(roster) {
|
|
103
|
+
const rank = (tier) => {
|
|
104
|
+
const fromCanonical = CANONICAL_TIER_RANK[tier];
|
|
105
|
+
return typeof fromCanonical === 'number'
|
|
106
|
+
? fromCanonical
|
|
107
|
+
: Number.MAX_SAFE_INTEGER;
|
|
108
|
+
};
|
|
43
109
|
const byTier = new Map();
|
|
44
110
|
for (const entry of roster) {
|
|
45
111
|
const bucket = byTier.get(entry.tier);
|
|
@@ -54,17 +120,18 @@ function deriveWaves(roster, bootGraph) {
|
|
|
54
120
|
return orderedTiers.map((tier, index) => ({
|
|
55
121
|
index,
|
|
56
122
|
tier,
|
|
57
|
-
members: (byTier.get(tier) ?? [])
|
|
123
|
+
members: (byTier.get(tier) ?? [])
|
|
124
|
+
.slice()
|
|
125
|
+
.sort((a, b) => a.name.localeCompare(b.name)),
|
|
58
126
|
}));
|
|
59
127
|
}
|
|
60
128
|
function findWaveOrderViolations(waves, bootGraph) {
|
|
61
|
-
const
|
|
129
|
+
const waveOfService = new Map();
|
|
62
130
|
for (const wave of waves) {
|
|
63
131
|
for (const m of wave.members) {
|
|
64
|
-
|
|
132
|
+
waveOfService.set(m.name, { index: wave.index, tier: wave.tier });
|
|
65
133
|
}
|
|
66
134
|
}
|
|
67
|
-
const rank = (tier) => typeof bootGraph.tiers[tier] === 'number' ? bootGraph.tiers[tier] : Number.MAX_SAFE_INTEGER;
|
|
68
135
|
const violations = [];
|
|
69
136
|
for (const wave of waves) {
|
|
70
137
|
for (const m of wave.members) {
|
|
@@ -76,16 +143,16 @@ function findWaveOrderViolations(waves, bootGraph) {
|
|
|
76
143
|
if (bootGraph.infraServices.has(req)) {
|
|
77
144
|
continue;
|
|
78
145
|
}
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
146
|
+
const required = waveOfService.get(req);
|
|
147
|
+
if (required === undefined) {
|
|
81
148
|
continue;
|
|
82
149
|
}
|
|
83
|
-
if (
|
|
150
|
+
if (required.index >= wave.index) {
|
|
84
151
|
violations.push({
|
|
85
152
|
service: m.name,
|
|
86
153
|
requires: req,
|
|
87
154
|
serviceTier: wave.tier,
|
|
88
|
-
requiresTier:
|
|
155
|
+
requiresTier: required.tier,
|
|
89
156
|
});
|
|
90
157
|
}
|
|
91
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waves.js","sourceRoot":"","sources":["../../src/runtime/waves.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"waves.js","sourceRoot":"","sources":["../../src/runtime/waves.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,10 @@ infra:
|
|
|
14
14
|
# etcd is REQUIRED — it backs cross-process service discovery.
|
|
15
15
|
# If you want the launcher to manage infra too, use the container substrate
|
|
16
16
|
# (see 02-local-container-full.yaml).
|
|
17
|
-
postgres:
|
|
17
|
+
postgres:
|
|
18
|
+
{ mode: external, url: postgresql://xema@127.0.0.1:5432, secretRef: postgres-password }
|
|
18
19
|
redis: { mode: external, url: redis://127.0.0.1:6379 }
|
|
19
20
|
etcd: { mode: external, url: http://127.0.0.1:2379 }
|
|
20
21
|
keycloak: { mode: external, url: http://127.0.0.1:8180, realm: xema }
|
|
22
|
+
secrets:
|
|
23
|
+
postgres-password: { from: env, env: XEMA_POSTGRES_PASSWORD }
|
|
@@ -8,10 +8,20 @@ app:
|
|
|
8
8
|
substrate: container
|
|
9
9
|
include: all
|
|
10
10
|
infra:
|
|
11
|
-
postgres:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
postgres:
|
|
12
|
+
{
|
|
13
|
+
mode: external,
|
|
14
|
+
url: postgresql://app@db.corp.internal:5432,
|
|
15
|
+
secretRef: corp-postgres-password,
|
|
16
|
+
}
|
|
17
|
+
keycloak: { mode: external, url: https://sso.corp/realms/xema, realm: xema }
|
|
18
|
+
objectStore:
|
|
19
|
+
{ mode: external, url: https://s3.corp.internal, bucketPrefix: xema- }
|
|
20
|
+
redis: { mode: managed }
|
|
21
|
+
etcd: { mode: managed }
|
|
22
|
+
search: { mode: managed }
|
|
23
|
+
temporal: { mode: disabled } # this install doesn't use durable workflows
|
|
24
|
+
secrets:
|
|
25
|
+
corp-postgres-password: { from: env, env: XEMA_POSTGRES_PASSWORD }
|
|
26
|
+
S3_ACCESS_KEY_ID: { from: env }
|
|
27
|
+
S3_SECRET_ACCESS_KEY: { from: env }
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# `helm upgrade --install` per service; Kubernetes owns lifecycle (rollout,
|
|
3
3
|
# restart, scaling). Infra (Postgres/etcd/...) is a cluster prerequisite, not
|
|
4
4
|
# managed by the launcher here. Env: XEMA_CHART_REPO, XEMA_NAMESPACE, KUBECONFIG.
|
|
5
|
-
# Equivalent CLI: xema serve --
|
|
5
|
+
# Equivalent CLI: xema serve --substrate appliance
|
|
6
6
|
edition: oss
|
|
7
7
|
app:
|
|
8
8
|
substrate: helm
|
|
@@ -46,6 +46,9 @@ sources:
|
|
|
46
46
|
authTokenEnv: NPM_TOKEN_ACME
|
|
47
47
|
|
|
48
48
|
infra:
|
|
49
|
-
postgres:
|
|
49
|
+
postgres:
|
|
50
|
+
{ mode: external, url: postgresql://xema@127.0.0.1:5432, secretRef: postgres-password }
|
|
50
51
|
redis: { mode: external, url: redis://127.0.0.1:6379 }
|
|
51
52
|
keycloak: { mode: external, url: http://127.0.0.1:8180, realm: xema }
|
|
53
|
+
secrets:
|
|
54
|
+
postgres-password: { from: env, env: XEMA_POSTGRES_PASSWORD }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/xema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.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",
|
|
@@ -21,10 +21,11 @@
|
|
|
21
21
|
"@nestjs/common": "11.1.13",
|
|
22
22
|
"@nestjs/core": "11.1.13",
|
|
23
23
|
"@nestjs/platform-express": "11.1.13",
|
|
24
|
-
"@xemahq/distribution-resolver": "^0.1.
|
|
25
|
-
"@xemahq/
|
|
26
|
-
"@xemahq/kernel-
|
|
27
|
-
"@xemahq/
|
|
24
|
+
"@xemahq/distribution-resolver": "^0.1.2",
|
|
25
|
+
"@xemahq/dsl": "^0.6.1",
|
|
26
|
+
"@xemahq/kernel-contracts": "^0.59.0",
|
|
27
|
+
"@xemahq/kernel-state-runtime": "^0.2.1",
|
|
28
|
+
"@xemahq/service-registry-nest": "^0.5.0",
|
|
28
29
|
"commander": "^12.1.0",
|
|
29
30
|
"reflect-metadata": "0.2.2",
|
|
30
31
|
"rxjs": "7.8.2",
|
package/xema.config.example.yaml
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# Every value shown is the default; delete what you don't override.
|
|
5
5
|
|
|
6
|
-
edition: oss
|
|
6
|
+
edition: oss # which distribution edition to launch
|
|
7
7
|
|
|
8
8
|
# ── backing infrastructure (BYO model) ───────────────────────────────────────
|
|
9
9
|
# mode ∈ managed | external | disabled
|
|
@@ -11,36 +11,40 @@ edition: oss # which distribution edition to launch
|
|
|
11
11
|
# external — you already run it; give the URL (launcher health-probes it)
|
|
12
12
|
# disabled — not run (only allowed for optional components)
|
|
13
13
|
infra:
|
|
14
|
-
postgres:
|
|
15
|
-
redis:
|
|
16
|
-
etcd:
|
|
17
|
-
keycloak:
|
|
18
|
-
objectStore: { mode: managed }
|
|
19
|
-
search:
|
|
20
|
-
fga:
|
|
21
|
-
git:
|
|
22
|
-
temporal:
|
|
14
|
+
postgres: { mode: managed } # mandatory
|
|
15
|
+
redis: { mode: managed } # mandatory
|
|
16
|
+
etcd: { mode: managed } # mandatory (service discovery)
|
|
17
|
+
keycloak: { mode: managed } # mandatory (identity)
|
|
18
|
+
objectStore: { mode: managed } # mandatory (blobs/artifacts)
|
|
19
|
+
search: { mode: managed } # optional (full-text / vectors)
|
|
20
|
+
fga: { mode: managed } # optional (authorization ReBAC)
|
|
21
|
+
git: { mode: disabled } # optional (SCM integration)
|
|
22
|
+
temporal: { mode: managed } # optional (durable workflows)
|
|
23
23
|
# Example BYO:
|
|
24
|
+
# postgres: { mode: external, url: postgresql://xema@db.example.com:5432, secretRef: postgres-password }
|
|
24
25
|
# keycloak: { mode: external, url: https://sso.example.com/realms/xema, realm: xema }
|
|
25
|
-
# objectStore: { mode: external, url: https://s3.example.com
|
|
26
|
+
# objectStore: { mode: external, url: https://s3.example.com }
|
|
26
27
|
|
|
27
28
|
# ── application services ─────────────────────────────────────────────────────
|
|
28
29
|
app:
|
|
29
|
-
substrate: container
|
|
30
|
-
processModel: distributed
|
|
31
|
-
include:
|
|
32
|
-
exclude: []
|
|
33
|
-
features: []
|
|
30
|
+
substrate: container # container | native | helm
|
|
31
|
+
processModel: distributed # distributed (microservices, etcd discovery) — the only supported model
|
|
32
|
+
include: default # default (skips distribution-optional biomes) | all | list of tier names (kernel/system/base/platform/edge) and/or service names
|
|
33
|
+
exclude: [] # service names to drop
|
|
34
|
+
features: [] # curated capability bundles (union with include)
|
|
34
35
|
web:
|
|
35
|
-
enabled: false
|
|
36
|
+
enabled: false # start the host-shell frontend (or use `xema up --web`)
|
|
36
37
|
|
|
37
38
|
# ── persistence ──────────────────────────────────────────────────────────────
|
|
38
39
|
state:
|
|
39
40
|
workspaces:
|
|
40
|
-
driver: docker_local
|
|
41
|
+
driver: docker_local # docker_local (container) | host_path (native)
|
|
41
42
|
|
|
42
43
|
# ── secrets the launcher must obtain (never dev-defaulted in production) ──────
|
|
43
44
|
secrets:
|
|
44
45
|
OPENCODE_SERVER_PASSWORD: { from: prompt }
|
|
46
|
+
# postgres-password: { from: env, env: XEMA_POSTGRES_PASSWORD }
|
|
47
|
+
# S3_ACCESS_KEY_ID: { from: env }
|
|
48
|
+
# S3_SECRET_ACCESS_KEY: { from: env }
|
|
45
49
|
# DELEGATED_SESSION_JWT_PRIVATE_KEY: { from: file, path: ./keys/session.pem }
|
|
46
50
|
# LLM_PROVIDER_ANTHROPIC_API_KEY: { from: env }
|