@pleri/olam-cli 0.1.153 → 0.1.158

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/commands/bootstrap.d.ts +2 -1
  2. package/dist/commands/bootstrap.d.ts.map +1 -1
  3. package/dist/commands/bootstrap.js +8 -10
  4. package/dist/commands/bootstrap.js.map +1 -1
  5. package/dist/commands/doctor.d.ts +22 -0
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +110 -7
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/flywheel/check-persona-skeleton.d.ts +7 -0
  10. package/dist/commands/flywheel/check-persona-skeleton.d.ts.map +1 -0
  11. package/dist/commands/flywheel/check-persona-skeleton.js +14 -0
  12. package/dist/commands/flywheel/check-persona-skeleton.js.map +1 -0
  13. package/dist/commands/flywheel/diversity-check.d.ts +7 -0
  14. package/dist/commands/flywheel/diversity-check.d.ts.map +1 -0
  15. package/dist/commands/flywheel/diversity-check.js +14 -0
  16. package/dist/commands/flywheel/diversity-check.js.map +1 -0
  17. package/dist/commands/flywheel/emit-breadcrumb.d.ts +20 -0
  18. package/dist/commands/flywheel/emit-breadcrumb.d.ts.map +1 -0
  19. package/dist/commands/flywheel/emit-breadcrumb.js +137 -0
  20. package/dist/commands/flywheel/emit-breadcrumb.js.map +1 -0
  21. package/dist/commands/flywheel/index.d.ts +27 -0
  22. package/dist/commands/flywheel/index.d.ts.map +1 -0
  23. package/dist/commands/flywheel/index.js +48 -0
  24. package/dist/commands/flywheel/index.js.map +1 -0
  25. package/dist/commands/flywheel/install-shims.d.ts +8 -0
  26. package/dist/commands/flywheel/install-shims.d.ts.map +1 -0
  27. package/dist/commands/flywheel/install-shims.js +15 -0
  28. package/dist/commands/flywheel/install-shims.js.map +1 -0
  29. package/dist/commands/flywheel/k10-measure.d.ts +7 -0
  30. package/dist/commands/flywheel/k10-measure.d.ts.map +1 -0
  31. package/dist/commands/flywheel/k10-measure.js +14 -0
  32. package/dist/commands/flywheel/k10-measure.js.map +1 -0
  33. package/dist/commands/flywheel/k5-score.d.ts +14 -0
  34. package/dist/commands/flywheel/k5-score.d.ts.map +1 -0
  35. package/dist/commands/flywheel/k5-score.js +59 -0
  36. package/dist/commands/flywheel/k5-score.js.map +1 -0
  37. package/dist/commands/flywheel/k5-validate.d.ts +15 -0
  38. package/dist/commands/flywheel/k5-validate.d.ts.map +1 -0
  39. package/dist/commands/flywheel/k5-validate.js +185 -0
  40. package/dist/commands/flywheel/k5-validate.js.map +1 -0
  41. package/dist/commands/flywheel/ping.d.ts +21 -0
  42. package/dist/commands/flywheel/ping.d.ts.map +1 -0
  43. package/dist/commands/flywheel/ping.js +79 -0
  44. package/dist/commands/flywheel/ping.js.map +1 -0
  45. package/dist/commands/flywheel/sanitize-persona-output.d.ts +7 -0
  46. package/dist/commands/flywheel/sanitize-persona-output.d.ts.map +1 -0
  47. package/dist/commands/flywheel/sanitize-persona-output.js +14 -0
  48. package/dist/commands/flywheel/sanitize-persona-output.js.map +1 -0
  49. package/dist/commands/hermes-kg-hook.d.ts +36 -0
  50. package/dist/commands/hermes-kg-hook.d.ts.map +1 -0
  51. package/dist/commands/hermes-kg-hook.js +80 -0
  52. package/dist/commands/hermes-kg-hook.js.map +1 -0
  53. package/dist/commands/hermes.d.ts +46 -0
  54. package/dist/commands/hermes.d.ts.map +1 -0
  55. package/dist/commands/hermes.js +320 -0
  56. package/dist/commands/hermes.js.map +1 -0
  57. package/dist/commands/kg-install-hook.d.ts +7 -1
  58. package/dist/commands/kg-install-hook.d.ts.map +1 -1
  59. package/dist/commands/kg-install-hook.js +122 -6
  60. package/dist/commands/kg-install-hook.js.map +1 -1
  61. package/dist/commands/memory/_paths.d.ts +13 -3
  62. package/dist/commands/memory/_paths.d.ts.map +1 -1
  63. package/dist/commands/memory/_paths.js +25 -22
  64. package/dist/commands/memory/_paths.js.map +1 -1
  65. package/dist/commands/memory/logs.d.ts +8 -4
  66. package/dist/commands/memory/logs.d.ts.map +1 -1
  67. package/dist/commands/memory/logs.js +18 -13
  68. package/dist/commands/memory/logs.js.map +1 -1
  69. package/dist/commands/memory/mode.d.ts.map +1 -1
  70. package/dist/commands/memory/mode.js +7 -3
  71. package/dist/commands/memory/mode.js.map +1 -1
  72. package/dist/commands/memory/start.d.ts +16 -14
  73. package/dist/commands/memory/start.d.ts.map +1 -1
  74. package/dist/commands/memory/start.js +55 -189
  75. package/dist/commands/memory/start.js.map +1 -1
  76. package/dist/commands/memory/status.d.ts +10 -8
  77. package/dist/commands/memory/status.d.ts.map +1 -1
  78. package/dist/commands/memory/status.js +35 -38
  79. package/dist/commands/memory/status.js.map +1 -1
  80. package/dist/commands/memory/stop.d.ts +5 -4
  81. package/dist/commands/memory/stop.d.ts.map +1 -1
  82. package/dist/commands/memory/stop.js +26 -55
  83. package/dist/commands/memory/stop.js.map +1 -1
  84. package/dist/commands/memory-service-container.d.ts +78 -0
  85. package/dist/commands/memory-service-container.d.ts.map +1 -0
  86. package/dist/commands/memory-service-container.js +187 -0
  87. package/dist/commands/memory-service-container.js.map +1 -0
  88. package/dist/commands/services.d.ts +16 -1
  89. package/dist/commands/services.d.ts.map +1 -1
  90. package/dist/commands/services.js +88 -12
  91. package/dist/commands/services.js.map +1 -1
  92. package/dist/image-digests.json +7 -7
  93. package/dist/index.js +2570 -1384
  94. package/dist/index.js.map +1 -1
  95. package/dist/lib/k8s-secret-render.d.ts.map +1 -1
  96. package/dist/lib/k8s-secret-render.js +7 -4
  97. package/dist/lib/k8s-secret-render.js.map +1 -1
  98. package/dist/lib/memory-host-process-migration.d.ts +56 -0
  99. package/dist/lib/memory-host-process-migration.d.ts.map +1 -0
  100. package/dist/lib/memory-host-process-migration.js +156 -0
  101. package/dist/lib/memory-host-process-migration.js.map +1 -0
  102. package/dist/lib/upgrade-kubernetes.d.ts +22 -0
  103. package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
  104. package/dist/lib/upgrade-kubernetes.js +195 -2
  105. package/dist/lib/upgrade-kubernetes.js.map +1 -1
  106. package/dist/mcp-server.js +56 -22
  107. package/hermes-bundle/kg-first.sh +100 -0
  108. package/hermes-bundle/version.json +4 -0
  109. package/host-cp/k8s/manifests/50-deployment.yaml +54 -27
  110. package/host-cp/k8s/manifests/auth-service/30-configmap.yaml +5 -0
  111. package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +5 -1
  112. package/host-cp/k8s/manifests/kg-service/30-configmap.yaml +5 -0
  113. package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +5 -1
  114. package/host-cp/k8s/manifests/mcp-auth-service/30-configmap.yaml +4 -0
  115. package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +5 -1
  116. package/host-cp/k8s/manifests/memory-service/30-configmap.yaml +4 -0
  117. package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +5 -1
  118. package/host-cp/src/metrics.mjs +281 -0
  119. package/host-cp/src/server.mjs +22 -2
  120. package/package.json +3 -4
  121. package/memory-service-bundle/scripts/ensure-iii-engine.mjs +0 -179
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/memory/stop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/memory/stop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,4EAA4E;IAC5E,uDAAuD;IACvD,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,gCAAgC,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,YAAY,CAAC,4DAA4D,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,YAAY,CAAC,+CAA+C,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,YAAY,CAAC,6BAA6B,CAAC,CAAC;IAC5C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;QACjC,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * MemoryServiceContainerController — lifecycle for olam-memory-service.
3
+ *
4
+ * Mirrors KgServiceContainerController (./kg-service-container.ts). memory-service,
5
+ * like kg-service, runs as a host-side Docker peripheral managed by `olam services up`.
6
+ * The Phase A predecessor (host-process model — `olam memory start` spawning the
7
+ * npm-installed `agentmemory` bin) is retired in Phase B; both substrates coexist
8
+ * during Phase A so operators can roll back without losing data
9
+ * (`~/.olam/memory-data/` is bind-mounted and survives substrate swap).
10
+ *
11
+ * Divergence from kg-service:
12
+ * - Bearer-authenticated livez probe (kg-service `/health` is unauthenticated).
13
+ * `waitForReady` reads `~/.olam/memory-secret` and adds `Authorization: Bearer <secret>`.
14
+ * - No /host-home read-only mount (kg-service mounts $HOME for build ingestion;
15
+ * memory-service writes only to its own /data volume).
16
+ * - No prewarm probe (kg-service pre-warms bge-small inference; memory-service has
17
+ * no equivalent hot path — iii engine init happens at process start, not first request).
18
+ *
19
+ * Plan reference: docs/plans/memory-service-as-docker-peripheral/phase-a-tasks.md A1
20
+ */
21
+ export declare const MEMORY_SERVICE_PORT = 3111;
22
+ export declare const MEMORY_SERVICE_CONTAINER = "olam-memory-service";
23
+ export declare const MEMORY_SERVICE_LOCAL_TAG = "olam-memory-service:local";
24
+ export declare const MEMORY_SERVICE_PUBLISHED_TAG = "ghcr.io/pleri/olam-memory-service:latest";
25
+ export declare const MEMORY_SERVICE_DEV_TAG = "olam-memory-service:dev";
26
+ export declare const MEMORY_SERVICE_HEALTH_URL = "http://127.0.0.1:3111/agentmemory/livez";
27
+ export declare const MEMORY_SERVICE_HEALTH_TIMEOUT_MS = 60000;
28
+ type ContainerState = 'running' | 'stopped' | 'missing';
29
+ export interface MemoryServiceStatus {
30
+ readonly state: ContainerState;
31
+ readonly port: number;
32
+ readonly containerId?: string;
33
+ readonly ready?: boolean;
34
+ }
35
+ export declare class MemoryServiceContainerController {
36
+ private imageTag;
37
+ status(): MemoryServiceStatus;
38
+ private imageExists;
39
+ /**
40
+ * Resolve the first available image tag: local → dev → published.
41
+ * Throws if none exist (operator should run `olam bootstrap` to pull, or
42
+ * `node packages/cli/scripts/build-memory-service-image.mjs` to build locally).
43
+ */
44
+ private resolveImage;
45
+ /**
46
+ * Idempotent start. If already running → return. If stopped → docker start.
47
+ * If missing → ensure secret + bind-mount dir, then docker run with port-forward
48
+ * + memory-data volume mount + restart policy + bearer-secret env.
49
+ *
50
+ * The bearer secret is read from `~/.olam/memory-secret` (generated on first
51
+ * call via `ensureMemorySecret()`) and passed as `AGENTMEMORY_SECRET`. The
52
+ * container's agentmemory CLI requires this for the livez probe + all API
53
+ * calls; without it the container will start but reject every request as 401.
54
+ */
55
+ start(): void;
56
+ /**
57
+ * Returns true when no memory-service image exists locally — useful for
58
+ * callers (e.g. servicesUp) to distinguish "operator opted out of
59
+ * memory-service" from "memory-service was supposed to work but is broken".
60
+ * The opted-out case should be silent; the broken case should warn.
61
+ */
62
+ imageMissingEverywhere(): boolean;
63
+ stop(): void;
64
+ remove(): void;
65
+ /**
66
+ * Poll /agentmemory/livez until 200 OK with `{status: "ok"}` body OR
67
+ * timeoutMs elapses. The probe is bearer-authenticated; without the secret
68
+ * header agentmemory returns 401 regardless of container state.
69
+ *
70
+ * Divergence from kg-service: kg-service's `/health` is unauthenticated and
71
+ * returns `{ready: true}` once bge-small is loaded. memory-service's
72
+ * `/agentmemory/livez` returns `{status: "ok"}` once iii-engine accepts
73
+ * connections — there's no equivalent "model warmed" state to wait for.
74
+ */
75
+ waitForReady(timeoutMs?: number): Promise<boolean>;
76
+ }
77
+ export {};
78
+ //# sourceMappingURL=memory-service-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-service-container.d.ts","sourceRoot":"","sources":["../../src/commands/memory-service-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,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,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAoC;IAEpD,MAAM,IAAI,mBAAmB;IAiB7B,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;;;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"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * MemoryServiceContainerController — lifecycle for olam-memory-service.
3
+ *
4
+ * Mirrors KgServiceContainerController (./kg-service-container.ts). memory-service,
5
+ * like kg-service, runs as a host-side Docker peripheral managed by `olam services up`.
6
+ * The Phase A predecessor (host-process model — `olam memory start` spawning the
7
+ * npm-installed `agentmemory` bin) is retired in Phase B; both substrates coexist
8
+ * during Phase A so operators can roll back without losing data
9
+ * (`~/.olam/memory-data/` is bind-mounted and survives substrate swap).
10
+ *
11
+ * Divergence from kg-service:
12
+ * - Bearer-authenticated livez probe (kg-service `/health` is unauthenticated).
13
+ * `waitForReady` reads `~/.olam/memory-secret` and adds `Authorization: Bearer <secret>`.
14
+ * - No /host-home read-only mount (kg-service mounts $HOME for build ingestion;
15
+ * memory-service writes only to its own /data volume).
16
+ * - No prewarm probe (kg-service pre-warms bge-small inference; memory-service has
17
+ * no equivalent hot path — iii engine init happens at process start, not first request).
18
+ *
19
+ * Plan reference: docs/plans/memory-service-as-docker-peripheral/phase-a-tasks.md A1
20
+ */
21
+ import { execFileSync, spawnSync } from 'node:child_process';
22
+ import * as fs from 'node:fs';
23
+ import { homedir } from 'node:os';
24
+ import { join } from 'node:path';
25
+ import { ensureMemorySecret } from '../lib/memory-secret.js';
26
+ export const MEMORY_SERVICE_PORT = 3111;
27
+ export const MEMORY_SERVICE_CONTAINER = 'olam-memory-service';
28
+ export const MEMORY_SERVICE_LOCAL_TAG = 'olam-memory-service:local';
29
+ export const MEMORY_SERVICE_PUBLISHED_TAG = 'ghcr.io/pleri/olam-memory-service:latest';
30
+ export const MEMORY_SERVICE_DEV_TAG = 'olam-memory-service:dev';
31
+ export const MEMORY_SERVICE_HEALTH_URL = `http://127.0.0.1:${MEMORY_SERVICE_PORT}/agentmemory/livez`;
32
+ // Mirrors KgServiceContainerController: 60s timeout absorbs cold-start on flaky
33
+ // CI runners (image pull + iii-engine boot can exceed the operator-visible
34
+ // "took a moment" budget). Warm machines see ~3-5s.
35
+ export const MEMORY_SERVICE_HEALTH_TIMEOUT_MS = 60_000;
36
+ // memory-data is the host-mounted `~/.olam/memory-data/` so the container's
37
+ // agentmemory engine can persist iii-engine state to a path the operator can
38
+ // inspect + that survives `docker rm`.
39
+ const MEMORY_SERVICE_VOLUME_TARGET = '/data';
40
+ /**
41
+ * Resolves the operator's memory-data root for the host bind-mount.
42
+ *
43
+ * Mirrors kg-service's `kgDataHostPath()`: respects `$HOME` for testability,
44
+ * defaults to `~/.olam/memory-data` for the real operator path. Caller is
45
+ * responsible for ensuring the directory exists pre-bind-mount (Linux dockerd
46
+ * auto-creates as root:root if absent, which breaks subsequent host-side
47
+ * reads/writes from the operator's UID).
48
+ */
49
+ function memoryDataHostPath() {
50
+ return join(homedir(), '.olam', 'memory-data');
51
+ }
52
+ export class MemoryServiceContainerController {
53
+ imageTag = MEMORY_SERVICE_LOCAL_TAG;
54
+ status() {
55
+ const r = spawnSync('docker', ['inspect', '--format', '{{.State.Status}}|{{.Id}}', MEMORY_SERVICE_CONTAINER], { encoding: 'utf-8' });
56
+ if (r.status === 0) {
57
+ const [stateRaw, id] = r.stdout.trim().split('|');
58
+ return {
59
+ state: stateRaw === 'running' ? 'running' : 'stopped',
60
+ port: MEMORY_SERVICE_PORT,
61
+ containerId: id,
62
+ };
63
+ }
64
+ return { state: 'missing', port: MEMORY_SERVICE_PORT };
65
+ }
66
+ imageExists(tag = this.imageTag) {
67
+ return spawnSync('docker', ['image', 'inspect', tag], { encoding: 'utf-8' }).status === 0;
68
+ }
69
+ /**
70
+ * Resolve the first available image tag: local → dev → published.
71
+ * Throws if none exist (operator should run `olam bootstrap` to pull, or
72
+ * `node packages/cli/scripts/build-memory-service-image.mjs` to build locally).
73
+ */
74
+ resolveImage() {
75
+ for (const tag of [MEMORY_SERVICE_LOCAL_TAG, MEMORY_SERVICE_DEV_TAG, MEMORY_SERVICE_PUBLISHED_TAG]) {
76
+ if (this.imageExists(tag))
77
+ return tag;
78
+ }
79
+ throw new Error(`memory-service image not found. Tried: ${MEMORY_SERVICE_LOCAL_TAG}, ${MEMORY_SERVICE_DEV_TAG}, ${MEMORY_SERVICE_PUBLISHED_TAG}. ` +
80
+ 'Run `olam bootstrap` to pull the published image, or `node packages/cli/scripts/build-memory-service-image.mjs` to build locally.');
81
+ }
82
+ /**
83
+ * Idempotent start. If already running → return. If stopped → docker start.
84
+ * If missing → ensure secret + bind-mount dir, then docker run with port-forward
85
+ * + memory-data volume mount + restart policy + bearer-secret env.
86
+ *
87
+ * The bearer secret is read from `~/.olam/memory-secret` (generated on first
88
+ * call via `ensureMemorySecret()`) and passed as `AGENTMEMORY_SECRET`. The
89
+ * container's agentmemory CLI requires this for the livez probe + all API
90
+ * calls; without it the container will start but reject every request as 401.
91
+ */
92
+ start() {
93
+ const current = this.status();
94
+ if (current.state === 'running')
95
+ return;
96
+ if (current.state === 'stopped') {
97
+ execFileSync('docker', ['start', MEMORY_SERVICE_CONTAINER], { stdio: 'pipe' });
98
+ return;
99
+ }
100
+ this.imageTag = this.resolveImage();
101
+ const memoryData = memoryDataHostPath();
102
+ const secret = ensureMemorySecret();
103
+ // Pre-create the host path with the operator's UID. Without this,
104
+ // dockerd on Linux auto-creates the bind-mount target as root:root,
105
+ // which breaks subsequent host-side reads from the operator's UID
106
+ // (EACCES). macOS Docker Desktop's user-mapped binds don't bite
107
+ // here but the explicit mkdir is portable + cheap.
108
+ fs.mkdirSync(memoryData, { recursive: true });
109
+ execFileSync('docker', [
110
+ 'run',
111
+ '--detach',
112
+ '--name', MEMORY_SERVICE_CONTAINER,
113
+ '--restart', 'unless-stopped',
114
+ // Bind to 127.0.0.1 ONLY at the host port level — local-only by design.
115
+ '--publish', `127.0.0.1:${MEMORY_SERVICE_PORT}:${MEMORY_SERVICE_PORT}`,
116
+ // host-gateway lets this container reach the host. Worlds reach
117
+ // memory-service via the published 127.0.0.1:3111 PLUS their OWN
118
+ // --add-host flag configured in the world-create code path.
119
+ '--add-host', 'host.docker.internal:host-gateway',
120
+ // Bearer secret for all /agentmemory/* requests.
121
+ '--env', `AGENTMEMORY_SECRET=${secret}`,
122
+ // Bind to all interfaces inside the container; the host-port publish
123
+ // restricts access to 127.0.0.1 externally.
124
+ '--env', 'AGENTMEMORY_HOST=0.0.0.0',
125
+ '--env', `AGENTMEMORY_PORT=${MEMORY_SERVICE_PORT}`,
126
+ // Mount the operator's memory-data root so iii-engine state persists.
127
+ '--volume', `${memoryData}:${MEMORY_SERVICE_VOLUME_TARGET}`,
128
+ this.imageTag,
129
+ ], { stdio: 'pipe' });
130
+ }
131
+ /**
132
+ * Returns true when no memory-service image exists locally — useful for
133
+ * callers (e.g. servicesUp) to distinguish "operator opted out of
134
+ * memory-service" from "memory-service was supposed to work but is broken".
135
+ * The opted-out case should be silent; the broken case should warn.
136
+ */
137
+ imageMissingEverywhere() {
138
+ return (!this.imageExists(MEMORY_SERVICE_LOCAL_TAG) &&
139
+ !this.imageExists(MEMORY_SERVICE_DEV_TAG) &&
140
+ !this.imageExists(MEMORY_SERVICE_PUBLISHED_TAG));
141
+ }
142
+ stop() {
143
+ const current = this.status();
144
+ if (current.state !== 'running')
145
+ return;
146
+ execFileSync('docker', ['stop', MEMORY_SERVICE_CONTAINER], { stdio: 'pipe' });
147
+ }
148
+ remove() {
149
+ spawnSync('docker', ['rm', '-f', MEMORY_SERVICE_CONTAINER], { stdio: 'pipe' });
150
+ }
151
+ /**
152
+ * Poll /agentmemory/livez until 200 OK with `{status: "ok"}` body OR
153
+ * timeoutMs elapses. The probe is bearer-authenticated; without the secret
154
+ * header agentmemory returns 401 regardless of container state.
155
+ *
156
+ * Divergence from kg-service: kg-service's `/health` is unauthenticated and
157
+ * returns `{ready: true}` once bge-small is loaded. memory-service's
158
+ * `/agentmemory/livez` returns `{status: "ok"}` once iii-engine accepts
159
+ * connections — there's no equivalent "model warmed" state to wait for.
160
+ */
161
+ async waitForReady(timeoutMs = MEMORY_SERVICE_HEALTH_TIMEOUT_MS) {
162
+ const secret = ensureMemorySecret();
163
+ const deadline = Date.now() + timeoutMs;
164
+ while (Date.now() < deadline) {
165
+ try {
166
+ const res = await fetch(MEMORY_SERVICE_HEALTH_URL, {
167
+ headers: { authorization: `Bearer ${secret}` },
168
+ signal: AbortSignal.timeout(1_500),
169
+ });
170
+ if (res.ok) {
171
+ const body = (await res.json());
172
+ if (body.status === 'ok')
173
+ return true;
174
+ }
175
+ }
176
+ catch {
177
+ // not ready yet (connection refused, container booting, network race)
178
+ }
179
+ await sleep(500);
180
+ }
181
+ return false;
182
+ }
183
+ }
184
+ function sleep(ms) {
185
+ return new Promise((resolve) => setTimeout(resolve, ms));
186
+ }
187
+ //# sourceMappingURL=memory-service-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-service-container.js","sourceRoot":"","sources":["../../src/commands/memory-service-container.ts"],"names":[],"mappings":"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"}
@@ -55,9 +55,24 @@ export declare function servicesDownKubernetes(deps?: ServicesKubernetesDeps): P
55
55
  * the compose table shape: NAME | STATUS | IMAGE | AGE | RESTARTS.
56
56
  */
57
57
  export declare function servicesStatusKubernetes(deps?: ServicesKubernetesDeps): Promise<void>;
58
+ /**
59
+ * Normalize a user-supplied service name to the k8s Deployment name form.
60
+ *
61
+ * All olam peripheral Deployments are named `olam-<short-name>` in the k8s
62
+ * manifests (e.g. `olam-kg-service`, `olam-auth-service`). When the operator
63
+ * types `olam services restart kg-service` the CLI must prepend `olam-` before
64
+ * calling `kubectl rollout restart deployment/olam-kg-service`.
65
+ *
66
+ * Idempotent: if the user already types the full name (`olam-kg-service`), the
67
+ * prefix is NOT doubled → `olam-kg-service` (NOT `olam-olam-kg-service`).
68
+ *
69
+ * Exported for unit testing (C1 — R3-D).
70
+ */
71
+ export declare function normalizeK8sDeploymentName(name: string): string;
58
72
  /**
59
73
  * `olam services restart <name>` on kubernetes substrate.
60
- * Uses `kubectl rollout restart deployment/<name>`.
74
+ * Uses `kubectl rollout restart deployment/olam-<name>`.
75
+ * Prepends `olam-` to the user-supplied name (idempotent — no double-prefix).
61
76
  */
62
77
  export declare function servicesRestartKubernetes(name: string, deps?: ServicesKubernetesDeps): Promise<{
63
78
  exitCode: number;
@@ -1 +1 @@
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;AAyBrD,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;AA6BD,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"}
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;AAgBzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAyBrD,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;AA6BD,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;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB/B;AA4BD,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAwIhE;AAED,mCAAmC;AACnC,wBAAgB,YAAY,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAwCnD;AAED,6CAA6C;AAC7C,wBAAgB,cAAc,IAAI,IAAI,CA2CrC;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2DvD"}
@@ -18,6 +18,7 @@ import pc from 'picocolors';
18
18
  import { AuthContainerController } from '@olam/core/src/auth/index.js';
19
19
  import { printError, printHeader, printInfo, printSuccess, printWarning } from '../output.js';
20
20
  import { KG_SERVICE_HEALTH_TIMEOUT_MS, KG_SERVICE_PORT, KgServiceContainerController, } from './kg-service-container.js';
21
+ import { MEMORY_SERVICE_HEALTH_TIMEOUT_MS, MEMORY_SERVICE_PORT, MemoryServiceContainerController, } from './memory-service-container.js';
21
22
  import { readConfig } from '../lib/config.js';
22
23
  import { kubectlWrap } from '../lib/kubectl-wrap.js';
23
24
  import { PERIPHERALS } from '../lib/peripheral-registry.js';
@@ -143,19 +144,19 @@ export async function servicesUpKubernetes(deps = {}) {
143
144
  printHeader('Services up (kubernetes)');
144
145
  let exitCode = 0;
145
146
  for (const peripheral of PERIPHERALS) {
146
- const name = peripheral.name;
147
+ const deploymentName = normalizeK8sDeploymentName(peripheral.name);
147
148
  const result = await wrap([
148
149
  '--context', context,
149
- 'scale', `deployment/${name}`,
150
+ 'scale', `deployment/${deploymentName}`,
150
151
  '--replicas=1',
151
152
  '-n', K8S_NAMESPACE,
152
153
  ], { timeout: 30_000 });
153
154
  if (!result.ok) {
154
- printWarning(`${name}: scale failed — ${result.stderr.split('\n')[0] ?? ''} (try olam upgrade to apply manifests)`);
155
+ printWarning(`${deploymentName}: scale failed — ${result.stderr.split('\n')[0] ?? ''} (try olam upgrade to apply manifests)`);
155
156
  exitCode = 1;
156
157
  }
157
158
  else {
158
- printSuccess(`${name}: scaled to 1 replica`);
159
+ printSuccess(`${deploymentName}: scaled to 1 replica`);
159
160
  }
160
161
  }
161
162
  return { exitCode };
@@ -172,19 +173,19 @@ export async function servicesDownKubernetes(deps = {}) {
172
173
  const { context } = ctx;
173
174
  let exitCode = 0;
174
175
  for (const peripheral of PERIPHERALS) {
175
- const name = peripheral.name;
176
+ const deploymentName = normalizeK8sDeploymentName(peripheral.name);
176
177
  const result = await wrap([
177
178
  '--context', context,
178
- 'scale', `deployment/${name}`,
179
+ 'scale', `deployment/${deploymentName}`,
179
180
  '--replicas=0',
180
181
  '-n', K8S_NAMESPACE,
181
182
  ], { timeout: 30_000 });
182
183
  if (!result.ok) {
183
- printError(`${name}: scale down failed — ${result.stderr.split('\n')[0] ?? ''}`);
184
+ printError(`${deploymentName}: scale down failed — ${result.stderr.split('\n')[0] ?? ''}`);
184
185
  exitCode = 1;
185
186
  }
186
187
  else {
187
- printSuccess(`${name}: scaled to 0 replicas`);
188
+ printSuccess(`${deploymentName}: scaled to 0 replicas`);
188
189
  }
189
190
  }
190
191
  return { exitCode };
@@ -233,9 +234,28 @@ export async function servicesStatusKubernetes(deps = {}) {
233
234
  printInfo('', ` ${name.padEnd(24)} ${statusStr.padEnd(10 + (status === 'running' ? pc.green('').length : pc.yellow('').length))} ${shortImage.padEnd(44)} ${age.padEnd(8)} —`);
234
235
  }
235
236
  }
237
+ /**
238
+ * Normalize a user-supplied service name to the k8s Deployment name form.
239
+ *
240
+ * All olam peripheral Deployments are named `olam-<short-name>` in the k8s
241
+ * manifests (e.g. `olam-kg-service`, `olam-auth-service`). When the operator
242
+ * types `olam services restart kg-service` the CLI must prepend `olam-` before
243
+ * calling `kubectl rollout restart deployment/olam-kg-service`.
244
+ *
245
+ * Idempotent: if the user already types the full name (`olam-kg-service`), the
246
+ * prefix is NOT doubled → `olam-kg-service` (NOT `olam-olam-kg-service`).
247
+ *
248
+ * Exported for unit testing (C1 — R3-D).
249
+ */
250
+ export function normalizeK8sDeploymentName(name) {
251
+ if (name.startsWith('olam-'))
252
+ return name;
253
+ return `olam-${name}`;
254
+ }
236
255
  /**
237
256
  * `olam services restart <name>` on kubernetes substrate.
238
- * Uses `kubectl rollout restart deployment/<name>`.
257
+ * Uses `kubectl rollout restart deployment/olam-<name>`.
258
+ * Prepends `olam-` to the user-supplied name (idempotent — no double-prefix).
239
259
  */
240
260
  export async function servicesRestartKubernetes(name, deps = {}) {
241
261
  const ctx = assertK8sContext(deps.configPath);
@@ -243,17 +263,18 @@ export async function servicesRestartKubernetes(name, deps = {}) {
243
263
  return { exitCode: 1 };
244
264
  const wrap = deps.kubectlWrapImpl ?? kubectlWrap;
245
265
  const { context } = ctx;
266
+ const deploymentName = normalizeK8sDeploymentName(name);
246
267
  const result = await wrap([
247
268
  '--context', context,
248
269
  'rollout', 'restart',
249
- `deployment/${name}`,
270
+ `deployment/${deploymentName}`,
250
271
  '-n', K8S_NAMESPACE,
251
272
  ], { timeout: 30_000 });
252
273
  if (!result.ok) {
253
- printError(`rollout restart ${name} failed: ${result.stderr.split('\n')[0] ?? ''}`);
274
+ printError(`rollout restart ${deploymentName} failed: ${result.stderr.split('\n')[0] ?? ''}`);
254
275
  return { exitCode: 1 };
255
276
  }
256
- printSuccess(`${name}: rollout restart triggered`);
277
+ printSuccess(`${deploymentName}: rollout restart triggered`);
257
278
  return { exitCode: 0 };
258
279
  }
259
280
  // ── Services orchestration ────────────────────────────────────────
@@ -285,6 +306,7 @@ export async function servicesUp() {
285
306
  const auth = new AuthContainerController();
286
307
  const mcpAuth = new McpAuthContainerController();
287
308
  const kgService = new KgServiceContainerController();
309
+ const memoryService = new MemoryServiceContainerController();
288
310
  // Start olam-auth
289
311
  const authStatus = auth.status();
290
312
  if (authStatus.state === 'running') {
@@ -371,10 +393,47 @@ export async function servicesUp() {
371
393
  await kgService.prewarm();
372
394
  printSuccess('olam-kg-service started + pre-warmed');
373
395
  }
396
+ // Start olam-memory-service (memory-service-as-docker-peripheral Phase A4).
397
+ // Same opted-out vs broken pattern as kg-service.
398
+ const memoryStatus = memoryService.status();
399
+ if (memoryStatus.state === 'running') {
400
+ printSuccess(`olam-memory-service already running on :${memoryStatus.port}`);
401
+ }
402
+ else if (memoryService.imageMissingEverywhere()) {
403
+ printInfo('olam-memory-service', 'skipped (no image; run `olam bootstrap` to pull)');
404
+ }
405
+ else {
406
+ try {
407
+ memoryService.start();
408
+ }
409
+ catch (err) {
410
+ const errMsg = err instanceof Error ? err.message : String(err);
411
+ const stderr = err instanceof Error && 'stderr' in err
412
+ ? String(err.stderr ?? '').trim()
413
+ : '';
414
+ printWarning(`olam-memory-service not started: ${errMsg}${stderr ? `\n stderr: ${stderr}` : ''}`);
415
+ // Non-fatal — memory-service is optional during Phase A coexistence with
416
+ // the legacy host-process model. Operators on the host-process path
417
+ // continue working.
418
+ printHeader('Services up');
419
+ printInfo('olam-auth', ':9999');
420
+ printInfo('olam-mcp-auth', ':9998');
421
+ printInfo('olam-kg-service', `:${KG_SERVICE_PORT}`);
422
+ return { exitCode: 0 };
423
+ }
424
+ const ready = await memoryService.waitForReady();
425
+ if (!ready) {
426
+ printError(`olam-memory-service started but /agentmemory/livez did not respond within ${MEMORY_SERVICE_HEALTH_TIMEOUT_MS / 1000}s.`);
427
+ dumpContainerLogs('olam-memory-service');
428
+ return { exitCode: 1 };
429
+ }
430
+ printSuccess('olam-memory-service started');
431
+ }
374
432
  printHeader('Services up');
375
433
  printInfo('olam-auth', ':9999');
376
434
  printInfo('olam-mcp-auth', ':9998');
377
435
  printInfo('olam-kg-service', `:${KG_SERVICE_PORT}`);
436
+ printInfo('olam-memory-service', `:${MEMORY_SERVICE_PORT}`);
378
437
  return { exitCode: 0 };
379
438
  }
380
439
  /** Stop all service containers. */
@@ -382,6 +441,7 @@ export function servicesDown() {
382
441
  const auth = new AuthContainerController();
383
442
  const mcpAuth = new McpAuthContainerController();
384
443
  const kgService = new KgServiceContainerController();
444
+ const memoryService = new MemoryServiceContainerController();
385
445
  let exitCode = 0;
386
446
  try {
387
447
  auth.stop();
@@ -407,6 +467,14 @@ export function servicesDown() {
407
467
  printError(`olam-kg-service: ${err instanceof Error ? err.message : String(err)}`);
408
468
  exitCode = 1;
409
469
  }
470
+ try {
471
+ memoryService.stop();
472
+ printSuccess('olam-memory-service stopped.');
473
+ }
474
+ catch (err) {
475
+ printError(`olam-memory-service: ${err instanceof Error ? err.message : String(err)}`);
476
+ exitCode = 1;
477
+ }
410
478
  return { exitCode };
411
479
  }
412
480
  /** Show container state for all services. */
@@ -414,6 +482,7 @@ export function servicesStatus() {
414
482
  const auth = new AuthContainerController();
415
483
  const mcpAuth = new McpAuthContainerController();
416
484
  const kgService = new KgServiceContainerController();
485
+ const memoryService = new MemoryServiceContainerController();
417
486
  printHeader('Services status');
418
487
  const authState = auth.status();
419
488
  const authStateStr = authState.state === 'running'
@@ -436,6 +505,13 @@ export function servicesStatus() {
436
505
  ? pc.yellow('stopped')
437
506
  : pc.red('missing');
438
507
  printInfo('olam-kg-service', `${kgStateStr} :${kgState.port}`);
508
+ const memState = memoryService.status();
509
+ const memStateStr = memState.state === 'running'
510
+ ? pc.green('running')
511
+ : memState.state === 'stopped'
512
+ ? pc.yellow('stopped')
513
+ : pc.red('missing');
514
+ printInfo('olam-memory-service', `${memStateStr} :${memState.port}`);
439
515
  }
440
516
  // ── Commander registration ────────────────────────────────────────
441
517
  export function registerServices(program) {
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"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"}