@pleri/olam-cli 0.1.180 → 0.1.182
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 +67 -19
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +93 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/destroy.d.ts +41 -0
- package/dist/commands/destroy.d.ts.map +1 -1
- package/dist/commands/destroy.js +81 -33
- package/dist/commands/destroy.js.map +1 -1
- package/dist/commands/dispatch-resolve.d.ts +54 -0
- package/dist/commands/dispatch-resolve.d.ts.map +1 -0
- package/dist/commands/dispatch-resolve.js +105 -0
- package/dist/commands/dispatch-resolve.js.map +1 -0
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +40 -9
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/commands/flywheel/k5-validate.d.ts +31 -0
- package/dist/commands/flywheel/k5-validate.d.ts.map +1 -1
- package/dist/commands/flywheel/k5-validate.js +80 -19
- package/dist/commands/flywheel/k5-validate.js.map +1 -1
- package/dist/commands/kg-classify.d.ts.map +1 -1
- package/dist/commands/kg-classify.js +20 -0
- package/dist/commands/kg-classify.js.map +1 -1
- package/dist/commands/kg-doctor.d.ts +67 -6
- package/dist/commands/kg-doctor.d.ts.map +1 -1
- package/dist/commands/kg-doctor.js +126 -46
- package/dist/commands/kg-doctor.js.map +1 -1
- package/dist/commands/list.d.ts +27 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +67 -19
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/memory/status.d.ts +18 -0
- package/dist/commands/memory/status.d.ts.map +1 -1
- package/dist/commands/memory/status.js +38 -2
- package/dist/commands/memory/status.js.map +1 -1
- package/dist/commands/memory-service-container.d.ts +44 -0
- package/dist/commands/memory-service-container.d.ts.map +1 -1
- package/dist/commands/memory-service-container.js +49 -0
- package/dist/commands/memory-service-container.js.map +1 -1
- package/dist/commands/ps.d.ts +32 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +34 -0
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/runbooks.d.ts +32 -0
- package/dist/commands/runbooks.d.ts.map +1 -1
- package/dist/commands/runbooks.js +79 -22
- package/dist/commands/runbooks.js.map +1 -1
- package/dist/commands/skills-source.d.ts.map +1 -1
- package/dist/commands/skills-source.js +77 -2
- package/dist/commands/skills-source.js.map +1 -1
- package/dist/commands/upgrade-history.d.ts +0 -2
- package/dist/commands/upgrade-history.d.ts.map +1 -1
- package/dist/commands/upgrade-history.js +0 -6
- package/dist/commands/upgrade-history.js.map +1 -1
- package/dist/commands/upgrade-lock.d.ts +0 -9
- package/dist/commands/upgrade-lock.d.ts.map +1 -1
- package/dist/commands/upgrade-lock.js +1 -1
- package/dist/commands/upgrade-lock.js.map +1 -1
- package/dist/commands/world-snapshot.d.ts +13 -0
- package/dist/commands/world-snapshot.d.ts.map +1 -1
- package/dist/commands/world-snapshot.js +81 -1
- package/dist/commands/world-snapshot.js.map +1 -1
- package/dist/commands/yolo.d.ts +0 -4
- package/dist/commands/yolo.d.ts.map +1 -1
- package/dist/commands/yolo.js +2 -2
- package/dist/commands/yolo.js.map +1 -1
- package/dist/image-digests.json +8 -8
- package/dist/index.js +3403 -2459
- package/dist/lib/anthropic-base-url-file.d.ts +37 -0
- package/dist/lib/anthropic-base-url-file.d.ts.map +1 -0
- package/dist/lib/anthropic-base-url-file.js +46 -0
- package/dist/lib/anthropic-base-url-file.js.map +1 -0
- package/dist/lib/auth-remote.d.ts +9 -0
- package/dist/lib/auth-remote.d.ts.map +1 -1
- package/dist/lib/auth-remote.js +19 -4
- package/dist/lib/auth-remote.js.map +1 -1
- package/dist/lib/cf-access-token.d.ts +32 -0
- package/dist/lib/cf-access-token.d.ts.map +1 -0
- package/dist/lib/cf-access-token.js +52 -0
- package/dist/lib/cf-access-token.js.map +1 -0
- package/dist/lib/config.d.ts +17 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +28 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/kubectl-context.d.ts +49 -0
- package/dist/lib/kubectl-context.d.ts.map +1 -1
- package/dist/lib/kubectl-context.js +64 -2
- package/dist/lib/kubectl-context.js.map +1 -1
- package/dist/lib/upgrade-kubernetes.d.ts +7 -0
- package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
- package/dist/lib/upgrade-kubernetes.js +35 -8
- package/dist/lib/upgrade-kubernetes.js.map +1 -1
- package/dist/mcp-server.js +1457 -1004
- package/hermes-bundle/version.json +1 -1
- package/host-cp/k8s/manifests/45-pvc.yaml +6 -2
- package/host-cp/k8s/manifests/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +1 -1
- package/host-cp/observability/trace-summary.mjs +267 -0
- package/host-cp/src/bootstrap-selective.mjs +30 -28
- package/host-cp/src/host-stream.mjs +52 -0
- package/host-cp/src/redirect.mjs +7 -0
- package/host-cp/src/router.mjs +168 -0
- package/host-cp/src/serve-only-config.mjs +85 -0
- package/host-cp/src/server.mjs +346 -217
- package/host-cp/src/world-services.mjs +136 -0
- package/package.json +1 -1
|
@@ -32,9 +32,53 @@ export interface MemoryServiceStatus {
|
|
|
32
32
|
readonly containerId?: string;
|
|
33
33
|
readonly ready?: boolean;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Container-health classification surfaced to operators.
|
|
37
|
+
*
|
|
38
|
+
* Mirrors Docker's own `State.Health.Status` enum plus a `none` sentinel for
|
|
39
|
+
* images that ship no `HEALTHCHECK` directive (the olam-memory-service image
|
|
40
|
+
* relies on the bearer-authenticated `/agentmemory/livez` probe rather than a
|
|
41
|
+
* Dockerfile HEALTHCHECK, so `none` is the expected steady-state today). `none`
|
|
42
|
+
* is NOT a failure — it just means container health is reported via livez, not
|
|
43
|
+
* via Docker's healthcheck loop.
|
|
44
|
+
*/
|
|
45
|
+
export type MemoryServiceHealth = 'starting' | 'healthy' | 'unhealthy' | 'none' | 'unknown';
|
|
46
|
+
/**
|
|
47
|
+
* Runtime metadata for a started/running container — `StartedAt`, restart
|
|
48
|
+
* count, and Docker health. Returned by {@link MemoryServiceContainerController.runtimeInspect}.
|
|
49
|
+
*
|
|
50
|
+
* Every field is best-effort: a single `docker inspect` call extracts all
|
|
51
|
+
* three, and any parse miss degrades to `null` / `'unknown'` rather than
|
|
52
|
+
* throwing. `olam memory status` consumes this purely for display — it never
|
|
53
|
+
* gates exit codes on it (the livez probe remains the source of truth for
|
|
54
|
+
* health-derived exit codes).
|
|
55
|
+
*/
|
|
56
|
+
export interface MemoryServiceRuntime {
|
|
57
|
+
/** ISO-8601 container start time, or `null` if unavailable / never started. */
|
|
58
|
+
readonly startedAt: string | null;
|
|
59
|
+
/** Docker restart count since creation, or `null` if unparseable. */
|
|
60
|
+
readonly restartCount: number | null;
|
|
61
|
+
/** Docker healthcheck status, or `'none'` when the image ships no HEALTHCHECK. */
|
|
62
|
+
readonly health: MemoryServiceHealth;
|
|
63
|
+
}
|
|
35
64
|
export declare class MemoryServiceContainerController {
|
|
36
65
|
private imageTag;
|
|
37
66
|
status(): MemoryServiceStatus;
|
|
67
|
+
/**
|
|
68
|
+
* Best-effort runtime metadata for the container — start time (for uptime),
|
|
69
|
+
* restart count, and Docker health. One `docker inspect` call; never throws.
|
|
70
|
+
*
|
|
71
|
+
* Returns `null` when the container doesn't exist (inspect exits non-zero).
|
|
72
|
+
* Field-level parse misses degrade to `null` / `'unknown'` so `olam memory
|
|
73
|
+
* status` can render partial data instead of failing the whole command.
|
|
74
|
+
*
|
|
75
|
+
* The format string emits three pipe-delimited fields:
|
|
76
|
+
* {{.State.StartedAt}}|{{.RestartCount}}|{{health-or-"none"}}
|
|
77
|
+
*
|
|
78
|
+
* `StartedAt` is the zero-value `0001-01-01T00:00:00Z` for never-started
|
|
79
|
+
* containers; the caller treats that as "no uptime" via `null` mapping.
|
|
80
|
+
*/
|
|
81
|
+
runtimeInspect(): MemoryServiceRuntime | null;
|
|
38
82
|
private imageExists;
|
|
39
83
|
/**
|
|
40
84
|
* Resolve the first available image tag: local → dev → published.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-service-container.d.ts","sourceRoot":"","sources":["../../src/commands/memory-service-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AACpE,eAAO,MAAM,4BAA4B,6CAA6C,CAAC;AACvF,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAChE,eAAO,MAAM,yBAAyB,4CAA8D,CAAC;AAKrG,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAOvD,KAAK,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"memory-service-container.d.ts","sourceRoot":"","sources":["../../src/commands/memory-service-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AACpE,eAAO,MAAM,4BAA4B,6CAA6C,CAAC;AACvF,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAChE,eAAO,MAAM,yBAAyB,4CAA8D,CAAC;AAKrG,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAOvD,KAAK,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,SAAS,CAAC;AAEd;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AA+BD,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAoC;IAEpD,MAAM,IAAI,mBAAmB;IAiB7B;;;;;;;;;;;;;OAaG;IACH,cAAc,IAAI,oBAAoB,GAAG,IAAI;IA4B7C,OAAO,CAAC,WAAW;IAInB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,YAAY;IAkBpB;;;;;;;;;OASG;IACH,KAAK,IAAI,IAAI;IA6Cb;;;;;OAKG;IACH,sBAAsB,IAAI,OAAO;IAQjC,IAAI,IAAI,IAAI;IAMZ,MAAM,IAAI,IAAI;IAId;;;;;;;;;OASG;IACG,YAAY,CAAC,SAAS,SAAmC,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBnF"}
|
|
@@ -38,6 +38,21 @@ export const MEMORY_SERVICE_HEALTH_TIMEOUT_MS = 60_000;
|
|
|
38
38
|
// agentmemory engine can persist iii-engine state to a path the operator can
|
|
39
39
|
// inspect + that survives `docker rm`.
|
|
40
40
|
const MEMORY_SERVICE_VOLUME_TARGET = '/data';
|
|
41
|
+
function parseHealth(raw) {
|
|
42
|
+
switch (raw) {
|
|
43
|
+
case 'starting':
|
|
44
|
+
case 'healthy':
|
|
45
|
+
case 'unhealthy':
|
|
46
|
+
return raw;
|
|
47
|
+
// Docker prints an empty `State.Health.Status` for images without a
|
|
48
|
+
// HEALTHCHECK. The `{{if}}` guard in the format string maps that to the
|
|
49
|
+
// literal `none` so we can distinguish "no healthcheck" from a parse miss.
|
|
50
|
+
case 'none':
|
|
51
|
+
return 'none';
|
|
52
|
+
default:
|
|
53
|
+
return 'unknown';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
41
56
|
/**
|
|
42
57
|
* Resolves the operator's memory-data root for the host bind-mount.
|
|
43
58
|
*
|
|
@@ -64,6 +79,40 @@ export class MemoryServiceContainerController {
|
|
|
64
79
|
}
|
|
65
80
|
return { state: 'missing', port: MEMORY_SERVICE_PORT };
|
|
66
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Best-effort runtime metadata for the container — start time (for uptime),
|
|
84
|
+
* restart count, and Docker health. One `docker inspect` call; never throws.
|
|
85
|
+
*
|
|
86
|
+
* Returns `null` when the container doesn't exist (inspect exits non-zero).
|
|
87
|
+
* Field-level parse misses degrade to `null` / `'unknown'` so `olam memory
|
|
88
|
+
* status` can render partial data instead of failing the whole command.
|
|
89
|
+
*
|
|
90
|
+
* The format string emits three pipe-delimited fields:
|
|
91
|
+
* {{.State.StartedAt}}|{{.RestartCount}}|{{health-or-"none"}}
|
|
92
|
+
*
|
|
93
|
+
* `StartedAt` is the zero-value `0001-01-01T00:00:00Z` for never-started
|
|
94
|
+
* containers; the caller treats that as "no uptime" via `null` mapping.
|
|
95
|
+
*/
|
|
96
|
+
runtimeInspect() {
|
|
97
|
+
const r = spawnSync('docker', [
|
|
98
|
+
'inspect',
|
|
99
|
+
'--format',
|
|
100
|
+
'{{.State.StartedAt}}|{{.RestartCount}}|{{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}}',
|
|
101
|
+
MEMORY_SERVICE_CONTAINER,
|
|
102
|
+
], { encoding: 'utf-8' });
|
|
103
|
+
if (r.status !== 0)
|
|
104
|
+
return null;
|
|
105
|
+
const [startedRaw = '', restartRaw = '', healthRaw = ''] = r.stdout.trim().split('|');
|
|
106
|
+
// Docker's zero-value timestamp means "never started" — treat as no uptime.
|
|
107
|
+
const startedAt = startedRaw && !startedRaw.startsWith('0001-01-01') ? startedRaw : null;
|
|
108
|
+
const restartNum = Number.parseInt(restartRaw, 10);
|
|
109
|
+
const restartCount = Number.isFinite(restartNum) ? restartNum : null;
|
|
110
|
+
return {
|
|
111
|
+
startedAt,
|
|
112
|
+
restartCount,
|
|
113
|
+
health: parseHealth(healthRaw),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
67
116
|
imageExists(tag = this.imageTag) {
|
|
68
117
|
return spawnSync('docker', ['image', 'inspect', tag], { encoding: 'utf-8' }).status === 0;
|
|
69
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-service-container.js","sourceRoot":"","sources":["../../src/commands/memory-service-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AACpE,MAAM,CAAC,MAAM,4BAA4B,GAAG,0CAA0C,CAAC;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAChE,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,mBAAmB,oBAAoB,CAAC;AAErG,gFAAgF;AAChF,2EAA2E;AAC3E,oDAAoD;AACpD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAEvD,4EAA4E;AAC5E,6EAA6E;AAC7E,uCAAuC;AACvC,MAAM,4BAA4B,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-service-container.js","sourceRoot":"","sources":["../../src/commands/memory-service-container.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/ps.d.ts
CHANGED
|
@@ -20,6 +20,38 @@ type SortKey = 'cpu' | 'mem' | 'pid';
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function parseDockerTop(stdout: string): ProcessRow[];
|
|
22
22
|
export declare function sortRows(rows: ProcessRow[], key: SortKey): ProcessRow[];
|
|
23
|
+
/**
|
|
24
|
+
* Machine-readable shape emitted by `olam ps --json`. Numeric fields are
|
|
25
|
+
* coerced from the string columns docker top hands us so downstream
|
|
26
|
+
* consumers (jq filters, dashboards) don't have to re-parse — `NaN`
|
|
27
|
+
* collapses to `0` to keep the contract total.
|
|
28
|
+
*/
|
|
29
|
+
export interface ProcessJson {
|
|
30
|
+
pid: number;
|
|
31
|
+
user: string;
|
|
32
|
+
cpu: number;
|
|
33
|
+
mem: number;
|
|
34
|
+
started: string;
|
|
35
|
+
state: string;
|
|
36
|
+
command: string;
|
|
37
|
+
}
|
|
38
|
+
export interface PsJson {
|
|
39
|
+
world: string;
|
|
40
|
+
container: string;
|
|
41
|
+
sort: SortKey;
|
|
42
|
+
count: number;
|
|
43
|
+
processes: ProcessJson[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Pure JSON serialiser for `olam ps --json`. Kept separate from the
|
|
47
|
+
* docker spawn so the wire contract is unit-testable without process I/O
|
|
48
|
+
* (mirrors `renderWorldList` in list.ts).
|
|
49
|
+
*/
|
|
50
|
+
export declare function renderPsJson(rows: ProcessRow[], meta: {
|
|
51
|
+
world: string;
|
|
52
|
+
container: string;
|
|
53
|
+
sort: SortKey;
|
|
54
|
+
}): string;
|
|
23
55
|
export declare function registerPs(program: Command): void;
|
|
24
56
|
export {};
|
|
25
57
|
//# sourceMappingURL=ps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAKrC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAoD3D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAKvE;AA0CD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAKrC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAoD3D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAKvE;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAOD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACxD,MAAM,CAiBR;AA0CD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyEjD"}
|
package/dist/commands/ps.js
CHANGED
|
@@ -73,6 +73,33 @@ export function sortRows(rows, key) {
|
|
|
73
73
|
return parseFloat(b[key]) - parseFloat(a[key]);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
|
+
function toNumber(value) {
|
|
77
|
+
const n = parseFloat(value);
|
|
78
|
+
return Number.isFinite(n) ? n : 0;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Pure JSON serialiser for `olam ps --json`. Kept separate from the
|
|
82
|
+
* docker spawn so the wire contract is unit-testable without process I/O
|
|
83
|
+
* (mirrors `renderWorldList` in list.ts).
|
|
84
|
+
*/
|
|
85
|
+
export function renderPsJson(rows, meta) {
|
|
86
|
+
const payload = {
|
|
87
|
+
world: meta.world,
|
|
88
|
+
container: meta.container,
|
|
89
|
+
sort: meta.sort,
|
|
90
|
+
count: rows.length,
|
|
91
|
+
processes: rows.map((r) => ({
|
|
92
|
+
pid: toNumber(r.pid),
|
|
93
|
+
user: r.user,
|
|
94
|
+
cpu: toNumber(r.cpu),
|
|
95
|
+
mem: toNumber(r.mem),
|
|
96
|
+
started: r.started,
|
|
97
|
+
state: r.state,
|
|
98
|
+
command: r.command,
|
|
99
|
+
})),
|
|
100
|
+
};
|
|
101
|
+
return JSON.stringify(payload);
|
|
102
|
+
}
|
|
76
103
|
function printTable(rows) {
|
|
77
104
|
const cols = process.stdout.columns ?? 80;
|
|
78
105
|
const fixedWidth = 5 + 1 + 8 + 1 + 6 + 1 + 6 + 1 + 10 + 1 + 6 + 1;
|
|
@@ -114,6 +141,7 @@ export function registerPs(program) {
|
|
|
114
141
|
.argument('<world>', 'World ID')
|
|
115
142
|
.option('--watch', 'Refresh every 5 seconds (Ctrl-C to exit)')
|
|
116
143
|
.option('--sort <key>', 'Sort column: cpu, mem, pid', 'cpu')
|
|
144
|
+
.option('--json', 'Emit machine-readable JSON instead of the text table', false)
|
|
117
145
|
.action(async (worldId, opts) => {
|
|
118
146
|
if (!SAFE_IDENT.test(worldId)) {
|
|
119
147
|
printError(`Invalid world ID "${worldId}". World IDs must match [a-z0-9][a-z0-9-]{0,63}.`);
|
|
@@ -144,6 +172,12 @@ export function registerPs(program) {
|
|
|
144
172
|
return;
|
|
145
173
|
}
|
|
146
174
|
const rows = sortRows(parseDockerTop(result.stdout ?? ''), sortKey);
|
|
175
|
+
if (opts.json) {
|
|
176
|
+
if (opts.watch)
|
|
177
|
+
process.stdout.write('\x1b[2J\x1b[H');
|
|
178
|
+
console.log(renderPsJson(rows, { world: worldId, container: containerName, sort: sortKey }));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
147
181
|
if (opts.watch)
|
|
148
182
|
process.stdout.write('\x1b[2J\x1b[H');
|
|
149
183
|
printTable(rows);
|
package/dist/commands/ps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps.js","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ps.js","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,37 @@
|
|
|
9
9
|
* olam runbooks check-ports <name>
|
|
10
10
|
*/
|
|
11
11
|
import type { Command } from 'commander';
|
|
12
|
+
import type { PortConflict, Runbook } from '@olam/core/src/global-config/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Pure renderer for `olam runbooks list`.
|
|
15
|
+
*
|
|
16
|
+
* Extracted so the `--json` contract is unit-testable without the global
|
|
17
|
+
* config store or a TTY (Rule 9). The JSON shape is a stable, color-free
|
|
18
|
+
* array of `{ name, repos, description, portCount, updatedAt }` so agents
|
|
19
|
+
* and scripts can enumerate runbook inventory without screen-scraping the
|
|
20
|
+
* colorized human table.
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderRunbookList(runbooks: readonly Runbook[], opts: {
|
|
23
|
+
json: boolean;
|
|
24
|
+
}): string;
|
|
25
|
+
/** One declared-port row in the `check-ports --json` payload. */
|
|
26
|
+
export interface PortStatusRow {
|
|
27
|
+
readonly repoName: string;
|
|
28
|
+
readonly serviceName: string;
|
|
29
|
+
readonly port: number;
|
|
30
|
+
readonly free: boolean;
|
|
31
|
+
/** Populated only when `free` is false. */
|
|
32
|
+
readonly occupant?: PortConflict['occupant'];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build the structured port-status rows for a runbook, pairing each declared
|
|
36
|
+
* port against the resolved conflict set. Pure + deterministic so the
|
|
37
|
+
* `check-ports --json` contract is testable without binding real TCP ports
|
|
38
|
+
* (Rule 9 — the WHY: scripts gating world creation must read conflict state
|
|
39
|
+
* machine-readably, not parse the ✓/✗ glyph table).
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildPortStatusRows(portMap: Runbook['portMap'], conflicts: readonly PortConflict[]): PortStatusRow[];
|
|
42
|
+
/** Pure JSON renderer for `olam runbooks check-ports --json`. */
|
|
43
|
+
export declare function renderCheckPortsJson(name: string, rows: readonly PortStatusRow[], conflictCount: number): string;
|
|
12
44
|
export declare function registerRunbooks(program: Command): void;
|
|
13
45
|
//# sourceMappingURL=runbooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runbooks.d.ts","sourceRoot":"","sources":["../../src/commands/runbooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"runbooks.d.ts","sourceRoot":"","sources":["../../src/commands/runbooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAOnF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACtB,MAAM,CA4BR;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,aAAa,EAAE,CAajB;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,aAAa,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAMR;AAoCD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkKvD"}
|
|
@@ -10,10 +10,65 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import pc from 'picocolors';
|
|
12
12
|
import { listRunbooks, getRunbook, addRunbook, removeRunbook, validateRunbookPorts, } from '@olam/core/src/global-config/index.js';
|
|
13
|
-
import { printError, printSuccess
|
|
13
|
+
import { printError, printSuccess } from '../output.js';
|
|
14
14
|
function asMessage(err) {
|
|
15
15
|
return err instanceof Error ? err.message : String(err);
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Pure renderer for `olam runbooks list`.
|
|
19
|
+
*
|
|
20
|
+
* Extracted so the `--json` contract is unit-testable without the global
|
|
21
|
+
* config store or a TTY (Rule 9). The JSON shape is a stable, color-free
|
|
22
|
+
* array of `{ name, repos, description, portCount, updatedAt }` so agents
|
|
23
|
+
* and scripts can enumerate runbook inventory without screen-scraping the
|
|
24
|
+
* colorized human table.
|
|
25
|
+
*/
|
|
26
|
+
export function renderRunbookList(runbooks, opts) {
|
|
27
|
+
if (opts.json) {
|
|
28
|
+
return JSON.stringify(runbooks.map((rb) => ({
|
|
29
|
+
name: rb.name,
|
|
30
|
+
repos: rb.repos,
|
|
31
|
+
description: rb.description ?? null,
|
|
32
|
+
portCount: rb.portMap
|
|
33
|
+
? Object.values(rb.portMap).reduce((n, svc) => n + Object.keys(svc).length, 0)
|
|
34
|
+
: 0,
|
|
35
|
+
updatedAt: rb.updatedAt,
|
|
36
|
+
})), null, 2);
|
|
37
|
+
}
|
|
38
|
+
if (runbooks.length === 0) {
|
|
39
|
+
return pc.dim('0 runbook(s). Add one with: olam runbooks add <name> --repos <repo>');
|
|
40
|
+
}
|
|
41
|
+
const lines = [pc.bold(`${runbooks.length} runbook(s)`)];
|
|
42
|
+
for (const rb of runbooks) {
|
|
43
|
+
const when = new Date(rb.updatedAt).toISOString().slice(0, 10);
|
|
44
|
+
const repoList = rb.repos.join(', ');
|
|
45
|
+
lines.push(` ${pc.bold(rb.name.padEnd(24))} ${repoList.padEnd(40)} ${pc.dim(when)}`);
|
|
46
|
+
}
|
|
47
|
+
return lines.join('\n');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build the structured port-status rows for a runbook, pairing each declared
|
|
51
|
+
* port against the resolved conflict set. Pure + deterministic so the
|
|
52
|
+
* `check-ports --json` contract is testable without binding real TCP ports
|
|
53
|
+
* (Rule 9 — the WHY: scripts gating world creation must read conflict state
|
|
54
|
+
* machine-readably, not parse the ✓/✗ glyph table).
|
|
55
|
+
*/
|
|
56
|
+
export function buildPortStatusRows(portMap, conflicts) {
|
|
57
|
+
const rows = [];
|
|
58
|
+
for (const [repoName, svcMap] of Object.entries(portMap ?? {})) {
|
|
59
|
+
for (const [serviceName, port] of Object.entries(svcMap)) {
|
|
60
|
+
const conflict = conflicts.find((c) => c.port === port);
|
|
61
|
+
rows.push(conflict
|
|
62
|
+
? { repoName, serviceName, port, free: false, occupant: conflict.occupant }
|
|
63
|
+
: { repoName, serviceName, port, free: true });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return rows;
|
|
67
|
+
}
|
|
68
|
+
/** Pure JSON renderer for `olam runbooks check-ports --json`. */
|
|
69
|
+
export function renderCheckPortsJson(name, rows, conflictCount) {
|
|
70
|
+
return JSON.stringify({ name, conflictCount, ports: rows }, null, 2);
|
|
71
|
+
}
|
|
17
72
|
/** Parse "--port repo.svc=N" args into a nested portMap. */
|
|
18
73
|
function parsePortFlags(ports) {
|
|
19
74
|
const portMap = {};
|
|
@@ -53,18 +108,10 @@ export function registerRunbooks(program) {
|
|
|
53
108
|
runbooks
|
|
54
109
|
.command('list')
|
|
55
110
|
.description('List all runbooks')
|
|
56
|
-
.
|
|
111
|
+
.option('--json', 'Emit machine-readable JSON instead of the text table', false)
|
|
112
|
+
.action((opts) => {
|
|
57
113
|
const all = listRunbooks();
|
|
58
|
-
|
|
59
|
-
console.log(pc.dim('0 runbook(s). Add one with: olam runbooks add <name> --repos <repo>'));
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
printHeader(`${all.length} runbook(s)`);
|
|
63
|
-
for (const rb of all) {
|
|
64
|
-
const when = new Date(rb.updatedAt).toISOString().slice(0, 10);
|
|
65
|
-
const repoList = rb.repos.join(', ');
|
|
66
|
-
console.log(` ${pc.bold(rb.name.padEnd(24))} ${repoList.padEnd(40)} ${pc.dim(when)}`);
|
|
67
|
-
}
|
|
114
|
+
console.log(renderRunbookList(all, { json: opts.json === true }));
|
|
68
115
|
});
|
|
69
116
|
runbooks
|
|
70
117
|
.command('show')
|
|
@@ -152,24 +199,34 @@ export function registerRunbooks(program) {
|
|
|
152
199
|
.command('check-ports')
|
|
153
200
|
.description('Check if runbook ports are available')
|
|
154
201
|
.argument('<name>', 'Runbook name')
|
|
155
|
-
.
|
|
202
|
+
.option('--json', 'Emit machine-readable JSON instead of the text table', false)
|
|
203
|
+
.action((name, opts) => {
|
|
156
204
|
try {
|
|
157
205
|
const rb = getRunbook(name);
|
|
158
206
|
const { conflicts } = validateRunbookPorts(rb);
|
|
159
|
-
|
|
207
|
+
const rows = buildPortStatusRows(rb.portMap, conflicts);
|
|
208
|
+
if (opts.json === true) {
|
|
209
|
+
// --json always emits the full structured payload (including the
|
|
210
|
+
// empty-ports case as `ports: []`), so consumers get one stable
|
|
211
|
+
// shape regardless of whether the runbook declares ports.
|
|
212
|
+
console.log(renderCheckPortsJson(name, rows, conflicts.length));
|
|
213
|
+
if (conflicts.length > 0)
|
|
214
|
+
process.exitCode = 1;
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (rows.length === 0) {
|
|
160
218
|
console.log(pc.dim(`runbook "${name}" declares no ports.`));
|
|
161
219
|
return;
|
|
162
220
|
}
|
|
163
221
|
// Print all declared ports
|
|
164
|
-
for (const
|
|
165
|
-
|
|
166
|
-
const conflict = conflicts.find((c) => c.port === port);
|
|
167
|
-
if (conflict)
|
|
222
|
+
for (const row of rows) {
|
|
223
|
+
if (!row.free) {
|
|
224
|
+
const conflict = conflicts.find((c) => c.port === row.port);
|
|
225
|
+
if (conflict)
|
|
168
226
|
console.log(formatConflict(conflict));
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
console.log(` ${pc.green('✓')} ${row.repoName}.${row.serviceName}:${row.port} — free`);
|
|
173
230
|
}
|
|
174
231
|
}
|
|
175
232
|
if (conflicts.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runbooks.js","sourceRoot":"","sources":["../../src/commands/runbooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"runbooks.js","sourceRoot":"","sources":["../../src/commands/runbooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-source.d.ts","sourceRoot":"","sources":["../../src/commands/skills-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAqBL,KAAK,YAAY,EAClB,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"skills-source.d.ts","sourceRoot":"","sources":["../../src/commands/skills-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAqBL,KAAK,YAAY,EAClB,MAAM,uCAAuC,CAAC;AAqH/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,YAAY,CAAC;CACzB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAsBvB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AACD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAwC1F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+vB3D"}
|
|
@@ -114,8 +114,44 @@ export function registerSkillsSource(program) {
|
|
|
114
114
|
source
|
|
115
115
|
.command('list')
|
|
116
116
|
.description('List all registered skill sources')
|
|
117
|
-
.
|
|
117
|
+
.option('--json', 'Emit a machine-readable JSON array instead of the human table')
|
|
118
|
+
.action((opts) => {
|
|
118
119
|
const all = listSkillSources();
|
|
120
|
+
// --json: stable, scriptable contract. Always an array (empty when no
|
|
121
|
+
// sources). Computes the effective-prefix view per source so consumers
|
|
122
|
+
// don't have to re-implement the operator+source merge.
|
|
123
|
+
if (opts.json === true) {
|
|
124
|
+
const payload = all.map((s, i) => {
|
|
125
|
+
const clonePath = skillSourceClonePath(s.id);
|
|
126
|
+
let srcCfg;
|
|
127
|
+
try {
|
|
128
|
+
srcCfg = readSourceConfig(clonePath);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
srcCfg = undefined;
|
|
132
|
+
}
|
|
133
|
+
const eff = resolveEffectivePrefix(s, srcCfg);
|
|
134
|
+
return {
|
|
135
|
+
ordinal: i + 1,
|
|
136
|
+
id: s.id,
|
|
137
|
+
name: s.name,
|
|
138
|
+
gitUrl: s.gitUrl,
|
|
139
|
+
branch: s.branch,
|
|
140
|
+
addedAt: s.addedAt,
|
|
141
|
+
lastPulledSha: s.lastPulledSha ?? null,
|
|
142
|
+
clonePath,
|
|
143
|
+
prefix: s.prefix ?? null,
|
|
144
|
+
prefixScope: s.prefixScope ? [...s.prefixScope] : null,
|
|
145
|
+
effective: {
|
|
146
|
+
prefix: eff.prefix ?? null,
|
|
147
|
+
prefixScope: eff.prefixScope ? [...eff.prefixScope] : null,
|
|
148
|
+
origin: eff.origin,
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
119
155
|
if (all.length === 0) {
|
|
120
156
|
console.log(pc.dim('0 skill source(s) registered. Add one with: olam skills source add --name <n> --git-url <url>'));
|
|
121
157
|
return;
|
|
@@ -593,7 +629,8 @@ export function registerSkillsSource(program) {
|
|
|
593
629
|
.command('show')
|
|
594
630
|
.description('Show details for a single skill source (lookup by id OR name)')
|
|
595
631
|
.argument('<idOrName>', 'Skill source id or display name')
|
|
596
|
-
.
|
|
632
|
+
.option('--json', 'Emit a machine-readable JSON object instead of the four human sections')
|
|
633
|
+
.action((idOrName, opts) => {
|
|
597
634
|
// A9 (ADR-021): lookup tries id first, then name. Preserves existing
|
|
598
635
|
// `show <id>` behavior while adding `show <name>` per ADR-021.
|
|
599
636
|
const entry = getSkillSource(idOrName) ?? getSkillSourceByName(idOrName);
|
|
@@ -604,6 +641,44 @@ export function registerSkillsSource(program) {
|
|
|
604
641
|
}
|
|
605
642
|
const when = new Date(entry.addedAt).toISOString();
|
|
606
643
|
const clonePath = skillSourceClonePath(entry.id);
|
|
644
|
+
// --json: same four logical sections, nested as one object. Mirrors the
|
|
645
|
+
// human render below so consumers and operators see identical data.
|
|
646
|
+
if (opts.json === true) {
|
|
647
|
+
let srcCfg;
|
|
648
|
+
try {
|
|
649
|
+
srcCfg = readSourceConfig(clonePath, entry.id);
|
|
650
|
+
}
|
|
651
|
+
catch {
|
|
652
|
+
srcCfg = undefined;
|
|
653
|
+
}
|
|
654
|
+
const effJson = resolveEffectivePrefix(entry, srcCfg);
|
|
655
|
+
const payload = {
|
|
656
|
+
registered: {
|
|
657
|
+
id: entry.id,
|
|
658
|
+
name: entry.name,
|
|
659
|
+
gitUrl: entry.gitUrl,
|
|
660
|
+
branch: entry.branch,
|
|
661
|
+
addedAt: entry.addedAt,
|
|
662
|
+
lastPulledSha: entry.lastPulledSha ?? null,
|
|
663
|
+
clonePath,
|
|
664
|
+
},
|
|
665
|
+
sourceConfig: srcCfg === undefined
|
|
666
|
+
? null
|
|
667
|
+
: { prefix: srcCfg.prefix ?? null, prefixScope: srcCfg.prefixScope ? [...srcCfg.prefixScope] : null },
|
|
668
|
+
operator: {
|
|
669
|
+
prefix: entry.prefix ?? null,
|
|
670
|
+
prefixScope: entry.prefixScope ? [...entry.prefixScope] : null,
|
|
671
|
+
lastSeenSourcePrefix: entry.lastSeenSourcePrefix ?? null,
|
|
672
|
+
},
|
|
673
|
+
effective: {
|
|
674
|
+
prefix: effJson.prefix ?? null,
|
|
675
|
+
prefixScope: effJson.prefixScope ? [...effJson.prefixScope] : null,
|
|
676
|
+
origin: effJson.origin,
|
|
677
|
+
},
|
|
678
|
+
};
|
|
679
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
607
682
|
// Section 1: registered (operator-config) fields.
|
|
608
683
|
console.log(pc.bold('▸ registered'));
|
|
609
684
|
console.log(` ${pc.bold('id:')} ${entry.id}`);
|