@pleri/olam-cli 0.1.146 → 0.1.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +26 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/doctor.d.ts +31 -3
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +274 -6
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/services.d.ts +41 -3
- package/dist/commands/services.d.ts.map +1 -1
- package/dist/commands/services.js +221 -13
- package/dist/commands/services.js.map +1 -1
- package/dist/commands/skills-migrate-hooks-back.d.ts +19 -0
- package/dist/commands/skills-migrate-hooks-back.d.ts.map +1 -0
- package/dist/commands/skills-migrate-hooks-back.js +83 -0
- package/dist/commands/skills-migrate-hooks-back.js.map +1 -0
- package/dist/commands/skills-migrate-hooks.d.ts +40 -0
- package/dist/commands/skills-migrate-hooks.d.ts.map +1 -0
- package/dist/commands/skills-migrate-hooks.js +178 -0
- package/dist/commands/skills-migrate-hooks.js.map +1 -0
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +49 -1
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/substrate-audit-log.d.ts +2 -0
- package/dist/commands/substrate-audit-log.d.ts.map +1 -1
- package/dist/commands/substrate-audit-log.js +13 -0
- package/dist/commands/substrate-audit-log.js.map +1 -1
- package/dist/image-digests.json +7 -7
- package/dist/index.js +4390 -2615
- package/dist/index.js.map +1 -1
- package/dist/lib/auth-refresh-kubernetes.d.ts +62 -0
- package/dist/lib/auth-refresh-kubernetes.d.ts.map +1 -0
- package/dist/lib/auth-refresh-kubernetes.js +127 -0
- package/dist/lib/auth-refresh-kubernetes.js.map +1 -0
- package/dist/lib/kubectl-wrap.d.ts +6 -0
- package/dist/lib/kubectl-wrap.d.ts.map +1 -1
- package/dist/lib/kubectl-wrap.js +6 -1
- package/dist/lib/kubectl-wrap.js.map +1 -1
- package/dist/lib/manifest-refresh.d.ts +8 -1
- package/dist/lib/manifest-refresh.d.ts.map +1 -1
- package/dist/lib/manifest-refresh.js +17 -7
- package/dist/lib/manifest-refresh.js.map +1 -1
- package/dist/lib/peripheral-registry.d.ts +36 -0
- package/dist/lib/peripheral-registry.d.ts.map +1 -0
- package/dist/lib/peripheral-registry.js +55 -0
- package/dist/lib/peripheral-registry.js.map +1 -0
- package/dist/lib/port-forward.d.ts +67 -0
- package/dist/lib/port-forward.d.ts.map +1 -1
- package/dist/lib/port-forward.js +153 -0
- package/dist/lib/port-forward.js.map +1 -1
- package/dist/lib/upgrade-kubernetes.d.ts +35 -11
- package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
- package/dist/lib/upgrade-kubernetes.js +265 -21
- package/dist/lib/upgrade-kubernetes.js.map +1 -1
- package/dist/mcp-server.js +1196 -412
- package/host-cp/k8s/manifests/auth-service/10-serviceaccount.yaml +8 -0
- package/host-cp/k8s/manifests/auth-service/20-rbac.yaml +34 -0
- package/host-cp/k8s/manifests/auth-service/30-configmap.yaml +24 -0
- package/host-cp/k8s/manifests/auth-service/45-pvc.yaml +25 -0
- package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +114 -0
- package/host-cp/k8s/manifests/auth-service/60-service.yaml +21 -0
- package/host-cp/k8s/manifests/kg-service/10-serviceaccount.yaml +8 -0
- package/host-cp/k8s/manifests/kg-service/20-rbac.yaml +34 -0
- package/host-cp/k8s/manifests/kg-service/30-configmap.yaml +18 -0
- package/host-cp/k8s/manifests/kg-service/45-pvc.yaml +25 -0
- package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +108 -0
- package/host-cp/k8s/manifests/kg-service/60-service.yaml +21 -0
- package/host-cp/k8s/manifests/mcp-auth-service/10-serviceaccount.yaml +8 -0
- package/host-cp/k8s/manifests/mcp-auth-service/20-rbac.yaml +34 -0
- package/host-cp/k8s/manifests/mcp-auth-service/30-configmap.yaml +18 -0
- package/host-cp/k8s/manifests/mcp-auth-service/45-pvc.yaml +25 -0
- package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +114 -0
- package/host-cp/k8s/manifests/mcp-auth-service/60-service.yaml +21 -0
- package/host-cp/k8s/manifests/memory-service/10-serviceaccount.yaml +8 -0
- package/host-cp/k8s/manifests/memory-service/20-rbac.yaml +34 -0
- package/host-cp/k8s/manifests/memory-service/30-configmap.yaml +20 -0
- package/host-cp/k8s/manifests/memory-service/45-pvc.yaml +25 -0
- package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +116 -0
- package/host-cp/k8s/manifests/memory-service/60-service.yaml +21 -0
- package/host-cp/k8s/templates/auth-service-secret-template.yaml +28 -0
- package/host-cp/k8s/templates/kg-service-secret-template.yaml +28 -0
- package/host-cp/k8s/templates/mcp-auth-service-secret-template.yaml +28 -0
- package/host-cp/k8s/templates/memory-service-secret-template.yaml +29 -0
- package/host-cp/src/plan-chat-service.mjs +22 -3
- package/host-cp/src/server.mjs +4 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiPnD"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -19,6 +19,8 @@ import { spawn } from 'node:child_process';
|
|
|
19
19
|
import { runAuthStatus } from './auth-status.js';
|
|
20
20
|
import { registerAuthUpgrade } from './auth-upgrade.js';
|
|
21
21
|
import { servicesUp, servicesDown, servicesStatus } from './services.js';
|
|
22
|
+
import { readConfig } from '../lib/config.js';
|
|
23
|
+
import { applyK8sAuthRefresh, resolveKubectlContext, } from '../lib/auth-refresh-kubernetes.js';
|
|
22
24
|
/**
|
|
23
25
|
* Best-effort browser opener. Uses the host's native "open URL" command:
|
|
24
26
|
* `open` on macOS, `xdg-open` on Linux, `start` on Windows. Silently
|
|
@@ -242,9 +244,23 @@ export function registerAuth(program) {
|
|
|
242
244
|
});
|
|
243
245
|
auth
|
|
244
246
|
.command('refresh')
|
|
245
|
-
.description('Force-refresh an account token')
|
|
247
|
+
.description('Force-refresh an account token (substrate-aware: updates kubernetes Secret on k8s substrate)')
|
|
246
248
|
.argument('<account>', 'Account id')
|
|
247
249
|
.action(async (accountId) => {
|
|
250
|
+
const cfg = readConfig();
|
|
251
|
+
const isK8s = cfg.host.substrate === 'kubernetes';
|
|
252
|
+
// Kubernetes substrate: validate context before touching auth-service (SEC-NEW-003).
|
|
253
|
+
if (isK8s) {
|
|
254
|
+
const ctxResult = resolveKubectlContext();
|
|
255
|
+
if (ctxResult.error) {
|
|
256
|
+
printError(ctxResult.error);
|
|
257
|
+
process.exitCode = 1;
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
if (ctxResult.deprecationWarning) {
|
|
261
|
+
printWarning(ctxResult.deprecationWarning);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
248
264
|
const client = new AuthClient();
|
|
249
265
|
try {
|
|
250
266
|
const result = await client.refreshAccount(accountId);
|
|
@@ -253,6 +269,15 @@ export function registerAuth(program) {
|
|
|
253
269
|
catch (err) {
|
|
254
270
|
printError(err instanceof Error ? err.message : 'refresh failed');
|
|
255
271
|
process.exitCode = 1;
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
if (isK8s) {
|
|
275
|
+
const ctxResult = resolveKubectlContext();
|
|
276
|
+
if (ctxResult.context) {
|
|
277
|
+
const code = await applyK8sAuthRefresh(ctxResult.context);
|
|
278
|
+
if (code !== 0)
|
|
279
|
+
process.exitCode = code;
|
|
280
|
+
}
|
|
256
281
|
}
|
|
257
282
|
});
|
|
258
283
|
registerAuthUpgrade(auth);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* olam doctor — pass/fail host-health command.
|
|
3
3
|
*
|
|
4
4
|
* Phase A3 of olam-operator-onboarding-parity (original 5 probes) +
|
|
5
|
-
* Phase C / C2 of olam-host-cp-k3s-prereqs (engine + colima probes)
|
|
5
|
+
* Phase C / C2 of olam-host-cp-k3s-prereqs (engine + colima probes) +
|
|
6
|
+
* Phase 2 Phase A A5 (probeNodeMemory — kubernetes-only, D29).
|
|
6
7
|
*
|
|
7
8
|
* Probe layout — Decision 16 positional contract for `--json` consumers:
|
|
8
9
|
*
|
|
@@ -21,8 +22,12 @@
|
|
|
21
22
|
* 3. host-cp /health — probeHostCpHealth (unchanged)
|
|
22
23
|
* 4. auth vault — probeAuthVault (unchanged)
|
|
23
24
|
* 5. KG storage — probeKgStorage (unchanged)
|
|
24
|
-
* 6. engine — probeEngine (
|
|
25
|
-
* 7. colima version — probeColimaVersion (
|
|
25
|
+
* 6. engine — probeEngine (unchanged)
|
|
26
|
+
* 7. colima version — probeColimaVersion (unchanged)
|
|
27
|
+
* 8. node memory — probeNodeMemory (NEW Phase 2 A5, D29)
|
|
28
|
+
* Position 8 is kubernetes-only (D11 per-MODE positional contract).
|
|
29
|
+
* Non-gating: WARN when free RAM <4 GiB; PASS otherwise.
|
|
30
|
+
* Silent in docker/compose substrate mode.
|
|
26
31
|
*
|
|
27
32
|
* The `--json` payload's `probes[]` indexes are stable across engine swap:
|
|
28
33
|
* consumers parsing `probes[0]` for "daemon-reachability" still see a
|
|
@@ -41,12 +46,16 @@
|
|
|
41
46
|
*/
|
|
42
47
|
import type { Command } from 'commander';
|
|
43
48
|
import { type ProbeResult, type DockerExec, type FetchLike } from '../lib/health-probes.js';
|
|
49
|
+
import { kubectlWrap } from '../lib/kubectl-wrap.js';
|
|
50
|
+
import * as fs from 'node:fs';
|
|
44
51
|
interface DoctorOptions {
|
|
45
52
|
readonly json?: boolean;
|
|
46
53
|
}
|
|
47
54
|
interface ProbeRow {
|
|
48
55
|
readonly name: string;
|
|
49
56
|
readonly result: ProbeResult;
|
|
57
|
+
/** D11 positional contract. 1-indexed stable position for --json consumers. */
|
|
58
|
+
readonly position: number;
|
|
50
59
|
}
|
|
51
60
|
interface DoctorReport {
|
|
52
61
|
readonly rows: ReadonlyArray<ProbeRow>;
|
|
@@ -67,6 +76,25 @@ export interface RunDoctorDeps {
|
|
|
67
76
|
* spinning up a real K8s cluster.
|
|
68
77
|
*/
|
|
69
78
|
readonly engine?: 'docker' | 'kubernetes';
|
|
79
|
+
/**
|
|
80
|
+
* Phase 2 A5: kubectl context name passed to probeNodeMemory.
|
|
81
|
+
* When omitted, kubectl uses the current context from kubeconfig.
|
|
82
|
+
*/
|
|
83
|
+
readonly kubectlContext?: string;
|
|
84
|
+
/**
|
|
85
|
+
* D2: injectable kubectlWrap for peripheral probes. Defaults to real kubectlWrap.
|
|
86
|
+
* Tests inject a mock to avoid real kubectl invocations.
|
|
87
|
+
*/
|
|
88
|
+
readonly kubectlWrapImpl?: typeof kubectlWrap;
|
|
89
|
+
/**
|
|
90
|
+
* D2: injectable readFileSync for probeStorageClassMatch (reads PVC manifest).
|
|
91
|
+
* Defaults to fs.readFileSync.
|
|
92
|
+
*/
|
|
93
|
+
readonly readFileSyncImpl?: typeof fs.readFileSync;
|
|
94
|
+
/**
|
|
95
|
+
* D2: override for the k8s manifests dir (default: ~/.olam/k8s/manifests).
|
|
96
|
+
*/
|
|
97
|
+
readonly manifestsDir?: string;
|
|
70
98
|
}
|
|
71
99
|
interface RunResult {
|
|
72
100
|
readonly exitCode: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAUL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAuC9B,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,QAAQ,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,WAAW,CAAC;IAC9C;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC;IACnD;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,SAAS,CAAC,CA2FpB;AAiWD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAYrD"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* olam doctor — pass/fail host-health command.
|
|
3
3
|
*
|
|
4
4
|
* Phase A3 of olam-operator-onboarding-parity (original 5 probes) +
|
|
5
|
-
* Phase C / C2 of olam-host-cp-k3s-prereqs (engine + colima probes)
|
|
5
|
+
* Phase C / C2 of olam-host-cp-k3s-prereqs (engine + colima probes) +
|
|
6
|
+
* Phase 2 Phase A A5 (probeNodeMemory — kubernetes-only, D29).
|
|
6
7
|
*
|
|
7
8
|
* Probe layout — Decision 16 positional contract for `--json` consumers:
|
|
8
9
|
*
|
|
@@ -21,8 +22,12 @@
|
|
|
21
22
|
* 3. host-cp /health — probeHostCpHealth (unchanged)
|
|
22
23
|
* 4. auth vault — probeAuthVault (unchanged)
|
|
23
24
|
* 5. KG storage — probeKgStorage (unchanged)
|
|
24
|
-
* 6. engine — probeEngine (
|
|
25
|
-
* 7. colima version — probeColimaVersion (
|
|
25
|
+
* 6. engine — probeEngine (unchanged)
|
|
26
|
+
* 7. colima version — probeColimaVersion (unchanged)
|
|
27
|
+
* 8. node memory — probeNodeMemory (NEW Phase 2 A5, D29)
|
|
28
|
+
* Position 8 is kubernetes-only (D11 per-MODE positional contract).
|
|
29
|
+
* Non-gating: WARN when free RAM <4 GiB; PASS otherwise.
|
|
30
|
+
* Silent in docker/compose substrate mode.
|
|
26
31
|
*
|
|
27
32
|
* The `--json` payload's `probes[]` indexes are stable across engine swap:
|
|
28
33
|
* consumers parsing `probes[0]` for "daemon-reachability" still see a
|
|
@@ -41,6 +46,12 @@
|
|
|
41
46
|
*/
|
|
42
47
|
import { probeDockerDaemon, probeImagePresence, probeHostCpHealth, probeAuthVault, probeKgStorage, probeEngine, probeColimaVersion, probeK8sApiReachable, probeK8sImagePresence, } from '../lib/health-probes.js';
|
|
43
48
|
import { printError, printSuccess, printWarning, printHeader } from '../output.js';
|
|
49
|
+
import { kubectlWrap } from '../lib/kubectl-wrap.js';
|
|
50
|
+
import { PERIPHERALS } from '../lib/peripheral-registry.js';
|
|
51
|
+
import * as fs from 'node:fs';
|
|
52
|
+
import * as net from 'node:net';
|
|
53
|
+
import * as path from 'node:path';
|
|
54
|
+
import { OLAM_HOME } from '../lib/config.js';
|
|
44
55
|
/** Default registry prefix for registry-tagged images. Mirrors bootstrap.ts's default. */
|
|
45
56
|
const DEFAULT_REGISTRY = 'ghcr.io/pleri';
|
|
46
57
|
/**
|
|
@@ -97,7 +108,7 @@ export async function runDoctor(opts, deps = {}) {
|
|
|
97
108
|
? await probeK8sApiReachable(dockerExec)
|
|
98
109
|
: await probeDockerDaemon(dockerExec);
|
|
99
110
|
const slot1Name = isK8s ? 'api server' : 'docker daemon';
|
|
100
|
-
const rows = [{ name: slot1Name, result: slot1Result }];
|
|
111
|
+
const rows = [{ name: slot1Name, result: slot1Result, position: 1 }];
|
|
101
112
|
if (!slot1Result.ok) {
|
|
102
113
|
// Fast-fail: skip per-image / host-cp / auth / kg probes when the
|
|
103
114
|
// engine's daemon-equivalent is down. Engine + colima probes still
|
|
@@ -107,7 +118,7 @@ export async function runDoctor(opts, deps = {}) {
|
|
|
107
118
|
probeEngine(fetchImpl),
|
|
108
119
|
probeColimaVersion(dockerExec),
|
|
109
120
|
]);
|
|
110
|
-
rows.push({ name: 'engine', result: engineRes }, { name: 'colima version', result: colimaRes });
|
|
121
|
+
rows.push({ name: 'engine', result: engineRes, position: 6 }, { name: 'colima version', result: colimaRes, position: 7 });
|
|
111
122
|
return emit(makeReport(rows), opts);
|
|
112
123
|
}
|
|
113
124
|
// Slots 2-7: parallel (independent; no shared state).
|
|
@@ -123,9 +134,265 @@ export async function runDoctor(opts, deps = {}) {
|
|
|
123
134
|
probeEngine(fetchImpl),
|
|
124
135
|
probeColimaVersion(dockerExec),
|
|
125
136
|
]);
|
|
126
|
-
rows.push({ name: 'images', result: imageResult }, { name: 'host-cp /health', result: hostCpResult }, { name: 'auth vault', result: authResult }, { name: 'KG storage', result: kgResult }, { name: 'engine', result: engineResult }, { name: 'colima version', result: colimaResult });
|
|
137
|
+
rows.push({ name: 'images', result: imageResult, position: 2 }, { name: 'host-cp /health', result: hostCpResult, position: 3 }, { name: 'auth vault', result: authResult, position: 4 }, { name: 'KG storage', result: kgResult, position: 5 }, { name: 'engine', result: engineResult, position: 6 }, { name: 'colima version', result: colimaResult, position: 7 });
|
|
138
|
+
// D2 — kubernetes-only probes (positions 8-27 per D11 per-MODE positional contract).
|
|
139
|
+
// Positions 8-13 are reserved for future Phase 1b probes; D2 wires positions 14-27.
|
|
140
|
+
// Non-gating informational probes; silent in docker/compose substrate mode.
|
|
141
|
+
if (isK8s) {
|
|
142
|
+
const wrapImpl = deps.kubectlWrapImpl ?? kubectlWrap;
|
|
143
|
+
const k8sCtx = deps.kubectlContext;
|
|
144
|
+
const manifestsDir = deps.manifestsDir ?? path.join(OLAM_HOME, 'k8s', 'manifests');
|
|
145
|
+
const readFileSyncImpl = deps.readFileSyncImpl ?? fs.readFileSync;
|
|
146
|
+
// Positions 14-25: 4 peripherals × 3 probes in alphabetical order.
|
|
147
|
+
// Alphabetical: auth-service, kg-service, mcp-auth-service, memory-service.
|
|
148
|
+
const sortedPeripherals = [...PERIPHERALS].sort((a, b) => a.name.localeCompare(b.name));
|
|
149
|
+
let peripheralPosition = 14;
|
|
150
|
+
const peripheralProbeRows = await Promise.all(sortedPeripherals.map(async (peripheral) => {
|
|
151
|
+
const startPos = peripheralPosition;
|
|
152
|
+
peripheralPosition += 3;
|
|
153
|
+
return runPeripheralProbes(peripheral, startPos, k8sCtx, wrapImpl);
|
|
154
|
+
}));
|
|
155
|
+
for (const probeRows of peripheralProbeRows) {
|
|
156
|
+
rows.push(...probeRows);
|
|
157
|
+
}
|
|
158
|
+
// Position 26: probeStorageClassMatch (D24 — non-gating, WARN on mismatch).
|
|
159
|
+
const storageClassResult = await probeStorageClassMatch(sortedPeripherals, k8sCtx, manifestsDir, wrapImpl, readFileSyncImpl);
|
|
160
|
+
rows.push({ name: 'storage class match', result: storageClassResult, position: 26 });
|
|
161
|
+
// Position 27: probeNodeMemory (D29 — already seeded in Phase A A5).
|
|
162
|
+
const nodeMemResult = probeNodeMemory(dockerExec, k8sCtx);
|
|
163
|
+
rows.push({ name: 'node memory', result: nodeMemResult, position: 27 });
|
|
164
|
+
}
|
|
127
165
|
return emit(makeReport(rows), opts);
|
|
128
166
|
}
|
|
167
|
+
// ── D2 Kubernetes peripheral probes (positions 14-25) ─────────────────────
|
|
168
|
+
const K8S_NAMESPACE = 'olam';
|
|
169
|
+
/**
|
|
170
|
+
* Run 3 probes for one peripheral: Reachable (kubectl exec), PortForwardLiveness (TCP),
|
|
171
|
+
* ImagePresent (kubectl get pod jsonpath). Returns 3 ProbeRows at consecutive positions.
|
|
172
|
+
*/
|
|
173
|
+
async function runPeripheralProbes(peripheral, startPosition, kubectlContext, wrapImpl) {
|
|
174
|
+
const ctxArgs = kubectlContext ? ['--context', kubectlContext] : [];
|
|
175
|
+
const rows = [];
|
|
176
|
+
// Probe N: Reachable — kubectl exec into the pod and wget the health path.
|
|
177
|
+
const reachableResult = await (async () => {
|
|
178
|
+
const result = await wrapImpl([
|
|
179
|
+
...ctxArgs,
|
|
180
|
+
'exec',
|
|
181
|
+
`deploy/${peripheral.name}`,
|
|
182
|
+
'-n', K8S_NAMESPACE,
|
|
183
|
+
'--',
|
|
184
|
+
'wget', '-qO-', `http://localhost:${peripheral.port}${peripheral.healthPath}`,
|
|
185
|
+
], { timeout: 10_000 });
|
|
186
|
+
if (result.ok) {
|
|
187
|
+
return { ok: true, message: `${peripheral.name} pod reachable (${peripheral.healthPath})` };
|
|
188
|
+
}
|
|
189
|
+
const errLine = result.stderr.split('\n')[0] ?? '';
|
|
190
|
+
return {
|
|
191
|
+
ok: false,
|
|
192
|
+
message: `${peripheral.name} pod not reachable`,
|
|
193
|
+
remedy: `Check pod logs: kubectl logs deploy/${peripheral.name} -n ${K8S_NAMESPACE}. stderr: ${errLine}`,
|
|
194
|
+
};
|
|
195
|
+
})();
|
|
196
|
+
rows.push({ name: `${peripheral.name} reachable`, result: reachableResult, position: startPosition });
|
|
197
|
+
// Probe N+1: PortForwardLiveness — TCP connect to 127.0.0.1:<port>.
|
|
198
|
+
const pfLivenessResult = await (async () => {
|
|
199
|
+
return new Promise((resolve) => {
|
|
200
|
+
const socket = new net.Socket();
|
|
201
|
+
let done = false;
|
|
202
|
+
const finish = (alive) => {
|
|
203
|
+
if (done)
|
|
204
|
+
return;
|
|
205
|
+
done = true;
|
|
206
|
+
socket.destroy();
|
|
207
|
+
if (alive) {
|
|
208
|
+
resolve({ ok: true, message: `${peripheral.name} port-forward live on :${peripheral.port}` });
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
resolve({
|
|
212
|
+
ok: true,
|
|
213
|
+
warn: true,
|
|
214
|
+
message: `${peripheral.name} port-forward not live on :${peripheral.port}`,
|
|
215
|
+
remedy: `Run \`olam upgrade\` to establish port-forwards for peripheral services.`,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
const timer = setTimeout(() => finish(false), 2_000);
|
|
220
|
+
socket.once('connect', () => { clearTimeout(timer); finish(true); });
|
|
221
|
+
socket.once('error', () => { clearTimeout(timer); finish(false); });
|
|
222
|
+
socket.connect(peripheral.port, '127.0.0.1');
|
|
223
|
+
});
|
|
224
|
+
})();
|
|
225
|
+
rows.push({ name: `${peripheral.name} port-forward`, result: pfLivenessResult, position: startPosition + 1 });
|
|
226
|
+
// Probe N+2: ImagePresent — kubectl get pod jsonpath for container image.
|
|
227
|
+
const imagePresentResult = await (async () => {
|
|
228
|
+
const result = await wrapImpl([
|
|
229
|
+
...ctxArgs,
|
|
230
|
+
'get', 'pod',
|
|
231
|
+
'-n', K8S_NAMESPACE,
|
|
232
|
+
'-l', `app=${peripheral.name}`,
|
|
233
|
+
'-o', `jsonpath={.items[0].status.containerStatuses[0].image}`,
|
|
234
|
+
], { timeout: 10_000 });
|
|
235
|
+
const image = result.stdout.trim();
|
|
236
|
+
if (result.ok && image.length > 0) {
|
|
237
|
+
return { ok: true, message: `${peripheral.name} image present: ${image}` };
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
ok: true,
|
|
241
|
+
warn: true,
|
|
242
|
+
message: `${peripheral.name} image not detected`,
|
|
243
|
+
remedy: `Verify pod is running: kubectl get pods -n ${K8S_NAMESPACE} -l app=${peripheral.name}`,
|
|
244
|
+
};
|
|
245
|
+
})();
|
|
246
|
+
rows.push({ name: `${peripheral.name} image`, result: imagePresentResult, position: startPosition + 2 });
|
|
247
|
+
return rows;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Position 26 — probeStorageClassMatch (D24).
|
|
251
|
+
*
|
|
252
|
+
* For each peripheral, reads the bound PVC's storageClassName from the cluster
|
|
253
|
+
* and compares against the manifest declaration (45-pvc.yaml). WARN on mismatch.
|
|
254
|
+
* Non-gating per D24 spec.
|
|
255
|
+
*/
|
|
256
|
+
async function probeStorageClassMatch(peripherals, kubectlContext, manifestsDir, wrapImpl, readFileSyncImpl) {
|
|
257
|
+
const ctxArgs = kubectlContext ? ['--context', kubectlContext] : [];
|
|
258
|
+
const mismatches = [];
|
|
259
|
+
for (const peripheral of peripherals) {
|
|
260
|
+
// Read declared storageClassName from the manifest PVC file.
|
|
261
|
+
const pvcManifestPath = path.join(manifestsDir, peripheral.name, '45-pvc.yaml');
|
|
262
|
+
let declaredClass;
|
|
263
|
+
try {
|
|
264
|
+
const raw = readFileSyncImpl(pvcManifestPath, 'utf8');
|
|
265
|
+
// Simple regex parse — avoid bringing in yaml parse dep here.
|
|
266
|
+
const match = /storageClassName:\s*(\S+)/.exec(raw);
|
|
267
|
+
declaredClass = match?.[1];
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
// Manifest not found — skip this peripheral (not deployed yet).
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
// Read actual storageClassName from the cluster.
|
|
274
|
+
const pvcName = `olam-${peripheral.name}-data`;
|
|
275
|
+
const result = await wrapImpl([
|
|
276
|
+
...ctxArgs,
|
|
277
|
+
'get', 'pvc', pvcName,
|
|
278
|
+
'-n', K8S_NAMESPACE,
|
|
279
|
+
'-o', `jsonpath={.spec.storageClassName}`,
|
|
280
|
+
], { timeout: 10_000 });
|
|
281
|
+
if (!result.ok || !result.stdout.trim()) {
|
|
282
|
+
// PVC not found — skip (peripheral not deployed yet).
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
const actualClass = result.stdout.trim();
|
|
286
|
+
if (declaredClass && actualClass !== declaredClass) {
|
|
287
|
+
mismatches.push(`${peripheral.name}: declared=${declaredClass} actual=${actualClass}`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (mismatches.length > 0) {
|
|
291
|
+
return {
|
|
292
|
+
ok: true,
|
|
293
|
+
warn: true,
|
|
294
|
+
message: `storage class mismatch on ${mismatches.length} PVC(s)`,
|
|
295
|
+
remedy: `Mismatches: ${mismatches.join('; ')}. Re-provision PVCs or update manifest storageClassName.`,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
return { ok: true, message: 'storage class match: all PVCs match manifest declarations' };
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* probeNodeMemory — Phase 2 A5, Decision D29.
|
|
302
|
+
*
|
|
303
|
+
* Reads free RAM on the k3d node via `kubectl top node --no-headers`.
|
|
304
|
+
* The fifth column is "FREE" in Ki. Warns when free RAM is below 4 GiB
|
|
305
|
+
* (T4 risk: peripheral service pods OOM before the operator notices).
|
|
306
|
+
*
|
|
307
|
+
* Non-gating (WARN, not FAIL). Only runs in engine=kubernetes mode.
|
|
308
|
+
*
|
|
309
|
+
* kubectl top requires metrics-server. If metrics-server is absent (fresh
|
|
310
|
+
* k3d cluster), `kubectl top` exits non-zero. In that case we emit WARN
|
|
311
|
+
* with a "metrics-server not installed" note rather than FAIL.
|
|
312
|
+
*/
|
|
313
|
+
function probeNodeMemory(dockerExec, kubectlContext) {
|
|
314
|
+
if (!dockerExec) {
|
|
315
|
+
// No exec injected — can't run kubectl. Skip gracefully.
|
|
316
|
+
return { ok: true, message: 'node memory probe skipped (no exec)' };
|
|
317
|
+
}
|
|
318
|
+
const contextArgs = kubectlContext ? ['--context', kubectlContext] : [];
|
|
319
|
+
const result = dockerExec('kubectl', [...contextArgs, 'top', 'node', '--no-headers']);
|
|
320
|
+
if (result.status !== 0) {
|
|
321
|
+
// metrics-server absent or cluster unreachable.
|
|
322
|
+
const hint = (result.stderr ?? '').includes('not available') || (result.stderr ?? '').includes('Metrics')
|
|
323
|
+
? 'metrics-server not installed on cluster — install via: kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml'
|
|
324
|
+
: `kubectl top node failed: ${(result.stderr ?? '').trim()}`;
|
|
325
|
+
return {
|
|
326
|
+
ok: true,
|
|
327
|
+
warn: true,
|
|
328
|
+
message: 'node memory unknown (kubectl top unavailable)',
|
|
329
|
+
remedy: hint,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
// Parse the first node's output. Format:
|
|
333
|
+
// NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
|
|
334
|
+
// We want total node capacity which isn't in `top` output directly;
|
|
335
|
+
// use `kubectl get node -o json` to fetch allocatable memory and compare.
|
|
336
|
+
const topLine = (result.stdout ?? '').trim().split('\n')[0];
|
|
337
|
+
if (!topLine) {
|
|
338
|
+
return {
|
|
339
|
+
ok: true,
|
|
340
|
+
warn: true,
|
|
341
|
+
message: 'node memory unknown (empty kubectl top output)',
|
|
342
|
+
remedy: 'Verify metrics-server is running: kubectl get pods -n kube-system | grep metrics-server',
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
// Get allocatable memory from `kubectl get nodes -o jsonpath`.
|
|
346
|
+
const allocResult = dockerExec('kubectl', [
|
|
347
|
+
...contextArgs,
|
|
348
|
+
'get', 'nodes', '-o', 'jsonpath={.items[0].status.allocatable.memory}',
|
|
349
|
+
]);
|
|
350
|
+
if (allocResult.status !== 0 || !(allocResult.stdout ?? '').trim()) {
|
|
351
|
+
return {
|
|
352
|
+
ok: true,
|
|
353
|
+
warn: true,
|
|
354
|
+
message: 'node memory unknown (could not read allocatable memory)',
|
|
355
|
+
remedy: 'kubectl get nodes unreachable',
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
// Parse allocatable memory (e.g. "8059228Ki" or "8Gi").
|
|
359
|
+
const raw = (allocResult.stdout ?? '').trim();
|
|
360
|
+
let allocKi;
|
|
361
|
+
if (raw.endsWith('Ki')) {
|
|
362
|
+
allocKi = parseInt(raw.slice(0, -2), 10);
|
|
363
|
+
}
|
|
364
|
+
else if (raw.endsWith('Mi')) {
|
|
365
|
+
allocKi = parseInt(raw.slice(0, -2), 10) * 1024;
|
|
366
|
+
}
|
|
367
|
+
else if (raw.endsWith('Gi')) {
|
|
368
|
+
allocKi = parseInt(raw.slice(0, -2), 10) * 1024 * 1024;
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
// Bytes (no suffix).
|
|
372
|
+
allocKi = Math.floor(parseInt(raw, 10) / 1024);
|
|
373
|
+
}
|
|
374
|
+
// Parse used memory from kubectl top output (4th column: MEMORY(bytes) in Mi).
|
|
375
|
+
const topCols = topLine.trim().split(/\s+/);
|
|
376
|
+
const usedMiStr = topCols[3] ?? '0Mi';
|
|
377
|
+
const usedKi = usedMiStr.endsWith('Mi')
|
|
378
|
+
? parseInt(usedMiStr.slice(0, -2), 10) * 1024
|
|
379
|
+
: parseInt(usedMiStr, 10);
|
|
380
|
+
const freeKi = allocKi - usedKi;
|
|
381
|
+
const freeGiB = freeKi / (1024 * 1024);
|
|
382
|
+
const WARN_THRESHOLD_GIB = 4;
|
|
383
|
+
if (freeGiB < WARN_THRESHOLD_GIB) {
|
|
384
|
+
return {
|
|
385
|
+
ok: true,
|
|
386
|
+
warn: true,
|
|
387
|
+
message: `node free RAM ${freeGiB.toFixed(1)} GiB (below ${WARN_THRESHOLD_GIB} GiB threshold)`,
|
|
388
|
+
remedy: `Free at least ${WARN_THRESHOLD_GIB} GiB of node RAM before deploying peripheral services to avoid OOM (T4 risk).`,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
return {
|
|
392
|
+
ok: true,
|
|
393
|
+
message: `node free RAM ${freeGiB.toFixed(1)} GiB (≥${WARN_THRESHOLD_GIB} GiB threshold)`,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
129
396
|
function makeReport(rows) {
|
|
130
397
|
const failureCount = rows.filter((r) => !r.result.ok).length;
|
|
131
398
|
const warnCount = rows.filter((r) => isWarn(r.result)).length;
|
|
@@ -154,6 +421,7 @@ function emit(report, opts) {
|
|
|
154
421
|
const isFail = !r.result.ok;
|
|
155
422
|
const warn = isWarn(r.result);
|
|
156
423
|
const base = {
|
|
424
|
+
position: r.position,
|
|
157
425
|
name: r.name,
|
|
158
426
|
ok: r.result.ok,
|
|
159
427
|
message: r.result.message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
* `olam services` — umbrella verb for managing Olam service containers.
|
|
3
3
|
*
|
|
4
4
|
* Subcommands:
|
|
5
|
-
* olam services up
|
|
6
|
-
* olam services down
|
|
7
|
-
* olam services status
|
|
5
|
+
* olam services up — start all service containers (idempotent)
|
|
6
|
+
* olam services down — stop all service containers
|
|
7
|
+
* olam services status — show state of all service containers
|
|
8
|
+
* olam services restart <name> — restart a named service
|
|
9
|
+
*
|
|
10
|
+
* Substrate-aware (D1 — Phase 2 Phase D):
|
|
11
|
+
* compose → docker-based lifecycle (AuthContainerController / McpAuth / KgService)
|
|
12
|
+
* kubernetes → kubectl scale / rollout restart / get deployment
|
|
8
13
|
*
|
|
9
14
|
* `olam auth up/down/status` delegates here with a deprecation warning.
|
|
10
15
|
*/
|
|
11
16
|
import type { Command } from 'commander';
|
|
17
|
+
import { kubectlWrap } from '../lib/kubectl-wrap.js';
|
|
12
18
|
type ContainerState = 'running' | 'stopped' | 'missing';
|
|
13
19
|
interface ContainerStatus {
|
|
14
20
|
readonly state: ContainerState;
|
|
@@ -24,6 +30,38 @@ export declare class McpAuthContainerController {
|
|
|
24
30
|
remove(): void;
|
|
25
31
|
waitForReady(timeoutMs?: number): Promise<boolean>;
|
|
26
32
|
}
|
|
33
|
+
export interface ServicesKubernetesDeps {
|
|
34
|
+
readonly kubectlWrapImpl?: typeof kubectlWrap;
|
|
35
|
+
readonly configPath?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* `olam services up` on kubernetes substrate.
|
|
39
|
+
* Scales each peripheral deployment to replicas=1.
|
|
40
|
+
* Applies the manifest if the Deployment is missing (not found).
|
|
41
|
+
*/
|
|
42
|
+
export declare function servicesUpKubernetes(deps?: ServicesKubernetesDeps): Promise<{
|
|
43
|
+
exitCode: number;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* `olam services down` on kubernetes substrate.
|
|
47
|
+
* Scales each peripheral deployment to replicas=0.
|
|
48
|
+
*/
|
|
49
|
+
export declare function servicesDownKubernetes(deps?: ServicesKubernetesDeps): Promise<{
|
|
50
|
+
exitCode: number;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* `olam services status` on kubernetes substrate.
|
|
54
|
+
* Fetches `kubectl get deployment -n olam -o wide` and formats it to match
|
|
55
|
+
* the compose table shape: NAME | STATUS | IMAGE | AGE | RESTARTS.
|
|
56
|
+
*/
|
|
57
|
+
export declare function servicesStatusKubernetes(deps?: ServicesKubernetesDeps): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* `olam services restart <name>` on kubernetes substrate.
|
|
60
|
+
* Uses `kubectl rollout restart deployment/<name>`.
|
|
61
|
+
*/
|
|
62
|
+
export declare function servicesRestartKubernetes(name: string, deps?: ServicesKubernetesDeps): Promise<{
|
|
63
|
+
exitCode: number;
|
|
64
|
+
}>;
|
|
27
65
|
export declare function servicesUp(): Promise<{
|
|
28
66
|
exitCode: number;
|
|
29
67
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAwBrD,KAAK,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExD,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAA8B;IAE9C,MAAM,IAAI,eAAe;IAiBzB,OAAO,CAAC,WAAW;IAInB,KAAK,IAAI,IAAI;IAgCb,IAAI,IAAI,IAAI;IAMZ,MAAM,IAAI,IAAI;IAIR,YAAY,CAAC,SAAS,SAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;CAa7E;AAkDD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,WAAW,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B/B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B/B;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB/B;AA4BD,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgGhE;AAED,mCAAmC;AACnC,wBAAgB,YAAY,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CA+BnD;AAED,6CAA6C;AAC7C,wBAAgB,cAAc,IAAI,IAAI,CAiCrC;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2DvD"}
|