@xemahq/xema 0.1.1
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/LICENSE +201 -0
- package/README.md +60 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +43 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/biome.d.ts +3 -0
- package/dist/commands/biome.d.ts.map +1 -0
- package/dist/commands/biome.js +89 -0
- package/dist/commands/biome.js.map +1 -0
- package/dist/commands/dev.d.ts +3 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +32 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +16 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +128 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/objects.d.ts +3 -0
- package/dist/commands/objects.d.ts.map +1 -0
- package/dist/commands/objects.js +17 -0
- package/dist/commands/objects.js.map +1 -0
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +18 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/serve.d.ts +3 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +18 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/shell.d.ts +3 -0
- package/dist/commands/shell.d.ts.map +1 -0
- package/dist/commands/shell.js +16 -0
- package/dist/commands/shell.js.map +1 -0
- package/dist/dev/dev-orchestrator.d.ts +7 -0
- package/dist/dev/dev-orchestrator.d.ts.map +1 -0
- package/dist/dev/dev-orchestrator.js +366 -0
- package/dist/dev/dev-orchestrator.js.map +1 -0
- package/dist/dev/env-defaults.d.ts +6 -0
- package/dist/dev/env-defaults.d.ts.map +1 -0
- package/dist/dev/env-defaults.js +115 -0
- package/dist/dev/env-defaults.js.map +1 -0
- package/dist/dev/forked-worker.d.ts +14 -0
- package/dist/dev/forked-worker.d.ts.map +1 -0
- package/dist/dev/forked-worker.js +126 -0
- package/dist/dev/forked-worker.js.map +1 -0
- package/dist/dev/infra-preflight.d.ts +31 -0
- package/dist/dev/infra-preflight.d.ts.map +1 -0
- package/dist/dev/infra-preflight.js +138 -0
- package/dist/dev/infra-preflight.js.map +1 -0
- package/dist/lib/command-registry.d.ts +5 -0
- package/dist/lib/command-registry.d.ts.map +1 -0
- package/dist/lib/command-registry.js +13 -0
- package/dist/lib/command-registry.js.map +1 -0
- package/dist/lib/exit-codes.d.ts +10 -0
- package/dist/lib/exit-codes.d.ts.map +1 -0
- package/dist/lib/exit-codes.js +25 -0
- package/dist/lib/exit-codes.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ForkedWorkerSpawnOptions {
|
|
2
|
+
readonly name: string;
|
|
3
|
+
readonly port: number;
|
|
4
|
+
readonly siblingAppDir: string;
|
|
5
|
+
readonly readinessTimeoutMs: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ForkedWorkerHandle {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly url: string;
|
|
10
|
+
readonly pid: number;
|
|
11
|
+
close(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare function spawnForkedWorker(opts: ForkedWorkerSpawnOptions, baseDir: string): Promise<ForkedWorkerHandle>;
|
|
14
|
+
//# sourceMappingURL=forked-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forked-worker.d.ts","sourceRoot":"","sources":["../../src/dev/forked-worker.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,wBAAwB;IAEvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAMtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAO/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAKrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAQD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,EAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC,CAuC7B"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.spawnForkedWorker = spawnForkedWorker;
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
const READINESS_PROBE_INTERVAL_MS = 250;
|
|
8
|
+
const SHUTDOWN_GRACE_MS = 5_000;
|
|
9
|
+
async function spawnForkedWorker(opts, baseDir) {
|
|
10
|
+
const serviceRoot = (0, node_path_1.resolve)(baseDir, opts.siblingAppDir);
|
|
11
|
+
const mainModulePath = (0, node_path_1.resolve)(serviceRoot, 'dist', 'main.js');
|
|
12
|
+
if (!(0, node_fs_1.existsSync)(mainModulePath)) {
|
|
13
|
+
throw new Error(`${opts.name} dist not found at ${mainModulePath}. ` +
|
|
14
|
+
`Run \`pnpm --filter ${opts.name} build\` first, or use \`pnpm refresh\`.`);
|
|
15
|
+
}
|
|
16
|
+
const childEnv = {
|
|
17
|
+
...process.env,
|
|
18
|
+
PORT: String(opts.port),
|
|
19
|
+
};
|
|
20
|
+
const child = (0, node_child_process_1.fork)(mainModulePath, [], {
|
|
21
|
+
cwd: serviceRoot,
|
|
22
|
+
env: childEnv,
|
|
23
|
+
});
|
|
24
|
+
return waitForReady(child, opts);
|
|
25
|
+
}
|
|
26
|
+
function waitForReady(child, opts) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const pid = child.pid;
|
|
29
|
+
if (pid === undefined) {
|
|
30
|
+
reject(new Error(`${opts.name}: child_process.fork() returned a process with no PID.`));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
let settled = false;
|
|
34
|
+
const settle = (fn) => {
|
|
35
|
+
if (settled) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
settled = true;
|
|
39
|
+
fn();
|
|
40
|
+
};
|
|
41
|
+
const onExit = (code, signal) => {
|
|
42
|
+
settle(() => {
|
|
43
|
+
reject(new Error(`${opts.name}: child exited before /health/ready (code=${String(code)}, signal=${String(signal)}).`));
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const onError = (err) => {
|
|
47
|
+
settle(() => {
|
|
48
|
+
reject(new Error(`${opts.name}: child_process.fork() error: ${err.message}`));
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
child.once('exit', onExit);
|
|
52
|
+
child.once('error', onError);
|
|
53
|
+
const deadline = Date.now() + opts.readinessTimeoutMs;
|
|
54
|
+
const probe = async () => {
|
|
55
|
+
while (!settled) {
|
|
56
|
+
if (Date.now() > deadline) {
|
|
57
|
+
settle(() => {
|
|
58
|
+
void killChild(child).then(() => {
|
|
59
|
+
reject(new Error(`${opts.name}: /health/ready did not return 200 within ${String(opts.readinessTimeoutMs)}ms.`));
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (await probeReady(opts.port)) {
|
|
65
|
+
settle(() => {
|
|
66
|
+
child.off('exit', onExit);
|
|
67
|
+
child.off('error', onError);
|
|
68
|
+
resolve({
|
|
69
|
+
name: opts.name,
|
|
70
|
+
url: `http://localhost:${String(opts.port)}`,
|
|
71
|
+
pid,
|
|
72
|
+
close: () => killChild(child),
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
await sleep(READINESS_PROBE_INTERVAL_MS);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
void probe();
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function probeReady(port) {
|
|
84
|
+
return new Promise((resolve) => {
|
|
85
|
+
const http = require('node:http');
|
|
86
|
+
const req = http.request({
|
|
87
|
+
host: '127.0.0.1',
|
|
88
|
+
port,
|
|
89
|
+
path: '/health/ready',
|
|
90
|
+
method: 'GET',
|
|
91
|
+
timeout: READINESS_PROBE_INTERVAL_MS,
|
|
92
|
+
}, (res) => {
|
|
93
|
+
res.resume();
|
|
94
|
+
resolve(res.statusCode === 200);
|
|
95
|
+
});
|
|
96
|
+
req.on('error', () => { resolve(false); });
|
|
97
|
+
req.on('timeout', () => {
|
|
98
|
+
req.destroy();
|
|
99
|
+
resolve(false);
|
|
100
|
+
});
|
|
101
|
+
req.end();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function killChild(child) {
|
|
105
|
+
return new Promise((resolve) => {
|
|
106
|
+
if (child.exitCode !== null || child.signalCode !== null) {
|
|
107
|
+
resolve();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const killTimer = setTimeout(() => {
|
|
111
|
+
if (child.exitCode === null && child.signalCode === null) {
|
|
112
|
+
child.kill('SIGKILL');
|
|
113
|
+
}
|
|
114
|
+
}, SHUTDOWN_GRACE_MS);
|
|
115
|
+
const onExit = () => {
|
|
116
|
+
clearTimeout(killTimer);
|
|
117
|
+
resolve();
|
|
118
|
+
};
|
|
119
|
+
child.once('exit', onExit);
|
|
120
|
+
child.kill('SIGTERM');
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function sleep(ms) {
|
|
124
|
+
return new Promise((resolve) => { setTimeout(resolve, ms); });
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=forked-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forked-worker.js","sourceRoot":"","sources":["../../src/dev/forked-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare enum InfraDependencyKind {
|
|
2
|
+
Postgres = "postgres",
|
|
3
|
+
Redis = "redis",
|
|
4
|
+
EventHub = "event-hub-api"
|
|
5
|
+
}
|
|
6
|
+
export interface InfraDependency {
|
|
7
|
+
readonly kind: InfraDependencyKind;
|
|
8
|
+
readonly host: string;
|
|
9
|
+
readonly port: number;
|
|
10
|
+
readonly composeServiceName: string;
|
|
11
|
+
readonly dependents: ReadonlyArray<string>;
|
|
12
|
+
}
|
|
13
|
+
export declare const DEFAULT_INFRA_DEPENDENCIES: ReadonlyArray<InfraDependency>;
|
|
14
|
+
export interface InfraProbeResult {
|
|
15
|
+
readonly dependency: InfraDependency;
|
|
16
|
+
readonly reachable: boolean;
|
|
17
|
+
readonly errorCode?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface InfraPreflightReport {
|
|
20
|
+
readonly results: ReadonlyArray<InfraProbeResult>;
|
|
21
|
+
readonly missing: ReadonlyArray<InfraProbeResult>;
|
|
22
|
+
readonly allReachable: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type InfraProbeFn = (host: string, port: number, timeoutMs: number) => Promise<{
|
|
25
|
+
reachable: boolean;
|
|
26
|
+
errorCode?: string;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function runInfraPreflight(deps?: ReadonlyArray<InfraDependency>, probe?: InfraProbeFn, timeoutMs?: number): Promise<InfraPreflightReport>;
|
|
29
|
+
export declare function formatPreflightFailure(report: InfraPreflightReport): string;
|
|
30
|
+
export declare function labelFor(kind: InfraDependencyKind): string;
|
|
31
|
+
//# sourceMappingURL=infra-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infra-preflight.d.ts","sourceRoot":"","sources":["../../src/dev/infra-preflight.ts"],"names":[],"mappings":"AA2BA,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,QAAQ,kBAAkB;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAOtB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAMpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC5C;AAOD,eAAO,MAAM,0BAA0B,EAAE,aAAa,CAAC,eAAe,CAwCrE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAM5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAOD,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAIzD,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,aAAa,CAAC,eAAe,CAA8B,EACjE,KAAK,GAAE,YAAuB,EAC9B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,oBAAoB,CAAC,CAqB/B;AAyDD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,GAC3B,MAAM,CAwCR;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAS1D"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_INFRA_DEPENDENCIES = exports.InfraDependencyKind = void 0;
|
|
4
|
+
exports.runInfraPreflight = runInfraPreflight;
|
|
5
|
+
exports.formatPreflightFailure = formatPreflightFailure;
|
|
6
|
+
exports.labelFor = labelFor;
|
|
7
|
+
const node_net_1 = require("node:net");
|
|
8
|
+
var InfraDependencyKind;
|
|
9
|
+
(function (InfraDependencyKind) {
|
|
10
|
+
InfraDependencyKind["Postgres"] = "postgres";
|
|
11
|
+
InfraDependencyKind["Redis"] = "redis";
|
|
12
|
+
InfraDependencyKind["EventHub"] = "event-hub-api";
|
|
13
|
+
})(InfraDependencyKind || (exports.InfraDependencyKind = InfraDependencyKind = {}));
|
|
14
|
+
exports.DEFAULT_INFRA_DEPENDENCIES = [
|
|
15
|
+
{
|
|
16
|
+
kind: InfraDependencyKind.Postgres,
|
|
17
|
+
host: '127.0.0.1',
|
|
18
|
+
port: 5432,
|
|
19
|
+
composeServiceName: 'postgres',
|
|
20
|
+
dependents: [
|
|
21
|
+
'authorization-api',
|
|
22
|
+
'llm-registry-api',
|
|
23
|
+
'project-registry-api',
|
|
24
|
+
'skill-registry-api',
|
|
25
|
+
'object-registry-api',
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
kind: InfraDependencyKind.Redis,
|
|
30
|
+
host: '127.0.0.1',
|
|
31
|
+
port: 6379,
|
|
32
|
+
composeServiceName: 'redis',
|
|
33
|
+
dependents: [
|
|
34
|
+
'workspace-proxy',
|
|
35
|
+
'public-gateway-api',
|
|
36
|
+
'mcp-gateway-api',
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
kind: InfraDependencyKind.EventHub,
|
|
41
|
+
host: '127.0.0.1',
|
|
42
|
+
port: 3128,
|
|
43
|
+
composeServiceName: 'event-hub',
|
|
44
|
+
dependents: [
|
|
45
|
+
'authorization-api',
|
|
46
|
+
'llm-registry-api',
|
|
47
|
+
'memory-api',
|
|
48
|
+
'project-registry-api',
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
const DEFAULT_TIMEOUT_MS = 1000;
|
|
53
|
+
async function runInfraPreflight(deps = exports.DEFAULT_INFRA_DEPENDENCIES, probe = tcpProbe, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
54
|
+
const results = [];
|
|
55
|
+
for (const dep of deps) {
|
|
56
|
+
const outcome = await probe(dep.host, dep.port, timeoutMs);
|
|
57
|
+
const result = outcome.reachable
|
|
58
|
+
? { dependency: dep, reachable: true }
|
|
59
|
+
: {
|
|
60
|
+
dependency: dep,
|
|
61
|
+
reachable: false,
|
|
62
|
+
...(outcome.errorCode !== undefined
|
|
63
|
+
? { errorCode: outcome.errorCode }
|
|
64
|
+
: {}),
|
|
65
|
+
};
|
|
66
|
+
results.push(result);
|
|
67
|
+
}
|
|
68
|
+
const missing = results.filter((r) => !r.reachable);
|
|
69
|
+
return {
|
|
70
|
+
results,
|
|
71
|
+
missing,
|
|
72
|
+
allReachable: missing.length === 0,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function tcpProbe(host, port, timeoutMs) {
|
|
76
|
+
return new Promise((resolve) => {
|
|
77
|
+
const socket = (0, node_net_1.createConnection)({ host, port });
|
|
78
|
+
let settled = false;
|
|
79
|
+
const settle = (outcome) => {
|
|
80
|
+
if (settled) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
settled = true;
|
|
84
|
+
socket.destroy();
|
|
85
|
+
resolve(outcome);
|
|
86
|
+
};
|
|
87
|
+
const watchdog = setTimeout(() => {
|
|
88
|
+
settle({ reachable: false, errorCode: 'timeout' });
|
|
89
|
+
}, timeoutMs);
|
|
90
|
+
watchdog.unref();
|
|
91
|
+
socket.once('connect', () => {
|
|
92
|
+
clearTimeout(watchdog);
|
|
93
|
+
settle({ reachable: true });
|
|
94
|
+
});
|
|
95
|
+
socket.once('error', (err) => {
|
|
96
|
+
clearTimeout(watchdog);
|
|
97
|
+
settle({ reachable: false, errorCode: err.code ?? 'unknown' });
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function formatPreflightFailure(report) {
|
|
102
|
+
if (report.allReachable) {
|
|
103
|
+
return '';
|
|
104
|
+
}
|
|
105
|
+
const lines = [];
|
|
106
|
+
lines.push('`xema dev` requires the following infra services running locally:');
|
|
107
|
+
for (const r of report.missing) {
|
|
108
|
+
const dep = r.dependency;
|
|
109
|
+
const dependents = dep.dependents.join(', ');
|
|
110
|
+
const why = r.errorCode !== undefined ? ` [${r.errorCode}]` : '';
|
|
111
|
+
lines.push(` - ${labelFor(dep.kind)} (${dep.host}:${dep.port})${why} — needed by: ${dependents}`);
|
|
112
|
+
}
|
|
113
|
+
const composeNames = report.missing
|
|
114
|
+
.map((r) => r.dependency.composeServiceName)
|
|
115
|
+
.join(' ');
|
|
116
|
+
lines.push('');
|
|
117
|
+
lines.push('Quickest path:');
|
|
118
|
+
lines.push(` cd test-suite && docker compose up -d ${composeNames}`);
|
|
119
|
+
lines.push('');
|
|
120
|
+
lines.push('Or run `xema doctor --infra` to see the full status table.');
|
|
121
|
+
lines.push('');
|
|
122
|
+
lines.push('Note: `xema dev` wires 29/29 services into its candidate list (mix');
|
|
123
|
+
lines.push('of in-process + forked-worker) — see Phase J in the plan-of-record.');
|
|
124
|
+
lines.push('Individual services that fail to boot are routed through skip-mode');
|
|
125
|
+
lines.push('(see `dev-orchestrator.ts` header for the forked-worker root cause).');
|
|
126
|
+
return lines.join('\n');
|
|
127
|
+
}
|
|
128
|
+
function labelFor(kind) {
|
|
129
|
+
switch (kind) {
|
|
130
|
+
case InfraDependencyKind.Postgres:
|
|
131
|
+
return 'Postgres';
|
|
132
|
+
case InfraDependencyKind.Redis:
|
|
133
|
+
return 'Redis';
|
|
134
|
+
case InfraDependencyKind.EventHub:
|
|
135
|
+
return 'event-hub-api';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=infra-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infra-preflight.js","sourceRoot":"","sources":["../../src/dev/infra-preflight.ts"],"names":[],"mappings":";;;AAiIA,8CAyBC;AAyDD,wDA0CC;AAED,4BASC;AAxQD,uCAA4C;AA2B5C,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,sCAAe,CAAA;IACf,iDAA0B,CAAA;AAC5B,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AA0BY,QAAA,0BAA0B,GAAmC;IACxE;QACE,IAAI,EAAE,mBAAmB,CAAC,QAAQ;QAClC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI;QACV,kBAAkB,EAAE,UAAU;QAI9B,UAAU,EAAE;YACV,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,oBAAoB;YACpB,qBAAqB;SACtB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB,CAAC,KAAK;QAC/B,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI;QACV,kBAAkB,EAAE,OAAO;QAC3B,UAAU,EAAE;YACV,iBAAiB;YACjB,oBAAoB;YACpB,iBAAiB;SAClB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB,CAAC,QAAQ;QAClC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI;QACV,kBAAkB,EAAE,WAAW;QAC/B,UAAU,EAAE;YACV,mBAAmB;YACnB,kBAAkB;YAClB,YAAY;YACZ,sBAAsB;SACvB;KACF;CACF,CAAC;AA8BF,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEzB,KAAK,UAAU,iBAAiB,CACrC,OAAuC,kCAA0B,EACjE,QAAsB,QAAQ,EAC9B,YAAoB,kBAAkB;IAEtC,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAqB,OAAO,CAAC,SAAS;YAChD,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;YACtC,CAAC,CAAC;gBACE,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,KAAK;gBAChB,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;oBACjC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;oBAClC,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpD,OAAO;QACL,OAAO;QACP,OAAO;QACP,YAAY,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;KACnC,CAAC;AACJ,CAAC;AASD,SAAS,QAAQ,CACf,IAAY,EACZ,IAAY,EACZ,SAAiB;IAEjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAA,2BAAgB,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CACb,OAAmD,EAC7C,EAAE;YACR,IAAI,OAAO,EAAE,CAAC;gBAAA,OAAO;YAAA,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YAC1B,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAClD,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAiBD,SAAgB,sBAAsB,CACpC,MAA4B;IAE5B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CACR,mEAAmE,CACpE,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC;QACzB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,KAAK,CAAC,IAAI,CACR,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,iBAAiB,UAAU,EAAE,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC;SAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,2CAA2C,YAAY,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,4DAA4D,CAC7D,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,oEAAoE,CACrE,CAAC;IACF,KAAK,CAAC,IAAI,CACR,qEAAqE,CACtE,CAAC;IACF,KAAK,CAAC,IAAI,CACR,oEAAoE,CACrE,CAAC;IACF,KAAK,CAAC,IAAI,CACR,sEAAsE,CACvE,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAyB;IAChD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,mBAAmB,CAAC,QAAQ;YAC/B,OAAO,UAAU,CAAC;QACpB,KAAK,mBAAmB,CAAC,KAAK;YAC5B,OAAO,OAAO,CAAC;QACjB,KAAK,mBAAmB,CAAC,QAAQ;YAC/B,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export type RegisterCommand = (program: Command) => void;
|
|
3
|
+
export declare const XEMA_CLI_COMMAND_NAMES: readonly ["dev", "serve", "biome", "run", "shell", "objects", "doctor"];
|
|
4
|
+
export type XemaCliCommandName = (typeof XEMA_CLI_COMMAND_NAMES)[number];
|
|
5
|
+
//# sourceMappingURL=command-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAYzD,eAAO,MAAM,sBAAsB,yEAQzB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XEMA_CLI_COMMAND_NAMES = void 0;
|
|
4
|
+
exports.XEMA_CLI_COMMAND_NAMES = [
|
|
5
|
+
'dev',
|
|
6
|
+
'serve',
|
|
7
|
+
'biome',
|
|
8
|
+
'run',
|
|
9
|
+
'shell',
|
|
10
|
+
'objects',
|
|
11
|
+
'doctor',
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=command-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":";;;AAqBa,QAAA,sBAAsB,GAAG;IACpC,KAAK;IACL,OAAO;IACP,OAAO;IACP,KAAK;IACL,OAAO;IACP,SAAS;IACT,QAAQ;CACA,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare enum XemaCliExitCode {
|
|
2
|
+
Ok = 0,
|
|
3
|
+
GenericError = 1,
|
|
4
|
+
NotImplemented = 2,
|
|
5
|
+
MissingDependency = 3,
|
|
6
|
+
ConfigurationError = 4,
|
|
7
|
+
NotFound = 5
|
|
8
|
+
}
|
|
9
|
+
export declare function exitWith(code: XemaCliExitCode, message?: string): never;
|
|
10
|
+
//# sourceMappingURL=exit-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../../src/lib/exit-codes.ts"],"names":[],"mappings":"AAWA,oBAAY,eAAe;IACzB,EAAE,IAAI;IACN,YAAY,IAAI;IAChB,cAAc,IAAI;IAClB,iBAAiB,IAAI;IACrB,kBAAkB,IAAI;IACtB,QAAQ,IAAI;CACb;AAOD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CASvE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XemaCliExitCode = void 0;
|
|
4
|
+
exports.exitWith = exitWith;
|
|
5
|
+
var XemaCliExitCode;
|
|
6
|
+
(function (XemaCliExitCode) {
|
|
7
|
+
XemaCliExitCode[XemaCliExitCode["Ok"] = 0] = "Ok";
|
|
8
|
+
XemaCliExitCode[XemaCliExitCode["GenericError"] = 1] = "GenericError";
|
|
9
|
+
XemaCliExitCode[XemaCliExitCode["NotImplemented"] = 2] = "NotImplemented";
|
|
10
|
+
XemaCliExitCode[XemaCliExitCode["MissingDependency"] = 3] = "MissingDependency";
|
|
11
|
+
XemaCliExitCode[XemaCliExitCode["ConfigurationError"] = 4] = "ConfigurationError";
|
|
12
|
+
XemaCliExitCode[XemaCliExitCode["NotFound"] = 5] = "NotFound";
|
|
13
|
+
})(XemaCliExitCode || (exports.XemaCliExitCode = XemaCliExitCode = {}));
|
|
14
|
+
function exitWith(code, message) {
|
|
15
|
+
if (message !== undefined && message.length > 0) {
|
|
16
|
+
if (code === XemaCliExitCode.Ok) {
|
|
17
|
+
console.log(message);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
console.error(message);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
process.exit(code);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=exit-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../../src/lib/exit-codes.ts"],"names":[],"mappings":";;;AAyBA,4BASC;AAvBD,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,iDAAM,CAAA;IACN,qEAAgB,CAAA;IAChB,yEAAkB,CAAA;IAClB,+EAAqB,CAAA;IACrB,iFAAsB,CAAA;IACtB,6DAAY,CAAA;AACd,CAAC,EAPW,eAAe,+BAAf,eAAe,QAO1B;AAOD,SAAgB,QAAQ,CAAC,IAAqB,EAAE,OAAgB;IAC9D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,IAAI,KAAK,eAAe,CAAC,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xemahq/xema",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"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.",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"main": "dist/cli.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"xema": "./dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/**/*"
|
|
12
|
+
],
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"registry": "https://registry.npmjs.org/",
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@nestjs/common": "11.1.13",
|
|
19
|
+
"@nestjs/core": "11.1.13",
|
|
20
|
+
"@nestjs/platform-express": "11.1.13",
|
|
21
|
+
"@xemahq/kernel-state-runtime": "^0.1.0",
|
|
22
|
+
"@xemahq/service-registry-nest": "^0.1.0",
|
|
23
|
+
"commander": "^12.1.0",
|
|
24
|
+
"reflect-metadata": "0.2.2",
|
|
25
|
+
"rxjs": "7.8.2"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@eslint/js": "^9.39.4",
|
|
29
|
+
"@types/jest": "^30.0.0",
|
|
30
|
+
"@types/node": "25.2.3",
|
|
31
|
+
"@yao-pkg/pkg": "^6.6.0",
|
|
32
|
+
"eslint": "^9.39.4",
|
|
33
|
+
"eslint-config-prettier": "^10.1.8",
|
|
34
|
+
"eslint-plugin-import": "^2.32.0",
|
|
35
|
+
"eslint-plugin-unused-imports": "^4.4.1",
|
|
36
|
+
"jest": "^30.3.0",
|
|
37
|
+
"prettier": "3.6.2",
|
|
38
|
+
"ts-jest": "^29.4.9",
|
|
39
|
+
"ts-node": "^10.9.2",
|
|
40
|
+
"typescript": "5.9.3",
|
|
41
|
+
"typescript-eslint": "^8.56.1"
|
|
42
|
+
},
|
|
43
|
+
"pkg": {
|
|
44
|
+
"scripts": [
|
|
45
|
+
"dist/**/*.js"
|
|
46
|
+
],
|
|
47
|
+
"assets": [
|
|
48
|
+
"dist/**/*.json"
|
|
49
|
+
],
|
|
50
|
+
"targets": [
|
|
51
|
+
"node20-macos-arm64",
|
|
52
|
+
"node20-macos-x64",
|
|
53
|
+
"node20-linux-arm64",
|
|
54
|
+
"node20-linux-x64",
|
|
55
|
+
"node20-win-x64"
|
|
56
|
+
],
|
|
57
|
+
"outputPath": "dist/bin"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"clean": "rm -rf dist",
|
|
61
|
+
"build": "tsc -p tsconfig.json && node ./scripts/post-build.cjs",
|
|
62
|
+
"build:binary": "node ./scripts/build-binaries.cjs",
|
|
63
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
64
|
+
"start": "node ./dist/cli.js",
|
|
65
|
+
"lint": "eslint \"src/**/*.ts\"",
|
|
66
|
+
"lint:fix": "eslint \"src/**/*.ts\" --fix",
|
|
67
|
+
"test": "jest --config jest.config.cjs",
|
|
68
|
+
"typecheck": "tsc --noEmit"
|
|
69
|
+
}
|
|
70
|
+
}
|