@pleri/olam-cli 0.1.158 → 0.1.160
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/agent-stream/agent-sdk-to-chunks.js +3 -0
- package/dist/agent-stream/driver-runner.js +9 -4
- package/dist/agent-stream/host-driver-launch.js +48 -0
- package/dist/commands/doctor.d.ts +21 -10
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +95 -39
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/flywheel/check-persona-skeleton.d.ts +30 -2
- package/dist/commands/flywheel/check-persona-skeleton.d.ts.map +1 -1
- package/dist/commands/flywheel/check-persona-skeleton.js +143 -6
- package/dist/commands/flywheel/check-persona-skeleton.js.map +1 -1
- package/dist/commands/flywheel/diversity-check.d.ts +12 -2
- package/dist/commands/flywheel/diversity-check.d.ts.map +1 -1
- package/dist/commands/flywheel/diversity-check.js +56 -6
- package/dist/commands/flywheel/diversity-check.js.map +1 -1
- package/dist/commands/flywheel/index.d.ts.map +1 -1
- package/dist/commands/flywheel/index.js +2 -0
- package/dist/commands/flywheel/index.js.map +1 -1
- package/dist/commands/flywheel/install-shims.d.ts +36 -3
- package/dist/commands/flywheel/install-shims.d.ts.map +1 -1
- package/dist/commands/flywheel/install-shims.js +118 -7
- package/dist/commands/flywheel/install-shims.js.map +1 -1
- package/dist/commands/flywheel/k10-measure.d.ts +12 -2
- package/dist/commands/flywheel/k10-measure.d.ts.map +1 -1
- package/dist/commands/flywheel/k10-measure.js +55 -6
- package/dist/commands/flywheel/k10-measure.js.map +1 -1
- package/dist/commands/flywheel/migrate-overlays.d.ts +115 -0
- package/dist/commands/flywheel/migrate-overlays.d.ts.map +1 -0
- package/dist/commands/flywheel/migrate-overlays.js +766 -0
- package/dist/commands/flywheel/migrate-overlays.js.map +1 -0
- package/dist/commands/flywheel/sanitize-persona-output.d.ts +33 -2
- package/dist/commands/flywheel/sanitize-persona-output.d.ts.map +1 -1
- package/dist/commands/flywheel/sanitize-persona-output.js +94 -6
- package/dist/commands/flywheel/sanitize-persona-output.js.map +1 -1
- package/dist/commands/memory/index.d.ts.map +1 -1
- package/dist/commands/memory/index.js +2 -0
- package/dist/commands/memory/index.js.map +1 -1
- package/dist/commands/memory/install-hooks.d.ts +22 -0
- package/dist/commands/memory/install-hooks.d.ts.map +1 -0
- package/dist/commands/memory/install-hooks.js +156 -0
- package/dist/commands/memory/install-hooks.js.map +1 -0
- package/dist/commands/skills-doctor.js +2 -2
- package/dist/commands/skills-doctor.js.map +1 -1
- package/dist/commands/skills-source.d.ts.map +1 -1
- package/dist/commands/skills-source.js +10 -0
- package/dist/commands/skills-source.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +169 -1
- package/dist/commands/skills.js.map +1 -1
- package/dist/image-digests.json +7 -7
- package/dist/index.js +3592 -905
- package/dist/index.js.map +1 -1
- package/dist/lib/flywheel-probes.d.ts +58 -0
- package/dist/lib/flywheel-probes.d.ts.map +1 -0
- package/dist/lib/flywheel-probes.js +163 -0
- package/dist/lib/flywheel-probes.js.map +1 -0
- package/dist/lib/host-side-proxy.d.ts +67 -0
- package/dist/lib/host-side-proxy.d.ts.map +1 -0
- package/dist/lib/host-side-proxy.js +177 -0
- package/dist/lib/host-side-proxy.js.map +1 -0
- package/dist/lib/shim-generator.d.ts +51 -0
- package/dist/lib/shim-generator.d.ts.map +1 -0
- package/dist/lib/shim-generator.js +88 -0
- package/dist/lib/shim-generator.js.map +1 -0
- package/dist/lib/skills-apply-overlays.d.ts +35 -0
- package/dist/lib/skills-apply-overlays.d.ts.map +1 -0
- package/dist/lib/skills-apply-overlays.js +243 -0
- package/dist/lib/skills-apply-overlays.js.map +1 -0
- package/dist/lib/upgrade-kubernetes.d.ts +13 -12
- package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
- package/dist/lib/upgrade-kubernetes.js +87 -134
- package/dist/lib/upgrade-kubernetes.js.map +1 -1
- package/dist/mcp-server.js +1106 -453
- package/hermes-bundle/version.json +1 -1
- package/host-cp/k8s/host-side/docker-socket-proxy.compose.yaml +58 -0
- package/host-cp/k8s/manifests/50-deployment.yaml +47 -70
- package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml +37 -0
- 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/30-configmap.yaml +11 -0
- package/host-cp/k8s/manifests/memory-service/35-configmap-iii-config.yaml +76 -0
- package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +11 -1
- package/host-cp/src/crystallize-planning.mjs +261 -0
- package/host-cp/src/plan-chat-service.mjs +84 -2
- package/host-cp/src/planning-sessions.mjs +270 -0
- package/host-cp/src/server.mjs +9 -0
- package/host-cp/src/tasks-route.mjs +191 -0
- package/package.json +1 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Host-side docker-socket-proxy for the olam kubernetes substrate.
|
|
2
|
+
#
|
|
3
|
+
# Background — round-4 wave-2 R4-W2-F (kuro-bear retest 2026-05-21):
|
|
4
|
+
# on macOS + colima + virtiofs, containerd's OCI runtime spec generator
|
|
5
|
+
# calls stat() on docker.sock hostPath bind mounts; virtiofs returns
|
|
6
|
+
# ENOTSUP for stat/statx on socket files; pod creation fails. The R3-A
|
|
7
|
+
# two-volume hostPath approach is unrecoverable on virtiofs.
|
|
8
|
+
#
|
|
9
|
+
# This compose file provisions the docker-socket-proxy AS A HOST-SIDE
|
|
10
|
+
# CONTAINER (sibling to k3d on the operator's docker daemon), NOT as a
|
|
11
|
+
# pod inside the k3d cluster. The in-cluster Service in
|
|
12
|
+
# packages/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml is
|
|
13
|
+
# `type: ExternalName` aliasing `host.k3d.internal` — cluster pods reach
|
|
14
|
+
# THIS container via that DNS handle.
|
|
15
|
+
#
|
|
16
|
+
# Architecture mirrors the compose substrate's pattern (see
|
|
17
|
+
# packages/host-cp/compose.yaml:170-210). Same image, same allowlist,
|
|
18
|
+
# same restart policy. The only difference: this proxy publishes to
|
|
19
|
+
# the operator host on 127.0.0.1:2375 so k3d nodes can reach it via
|
|
20
|
+
# host.k3d.internal — the compose-substrate sibling stays internal-only.
|
|
21
|
+
#
|
|
22
|
+
# Operator UX: `olam upgrade -y` Step 0.7 auto-starts this on macOS via
|
|
23
|
+
# `docker compose -f <this-file> up -d`. Linux operators get a no-op
|
|
24
|
+
# (Step 0.7 is platform-gated). See docs/operator/kubernetes-substrate-beta.md.
|
|
25
|
+
|
|
26
|
+
services:
|
|
27
|
+
docker-socket-proxy:
|
|
28
|
+
container_name: olam-host-side-docker-socket-proxy
|
|
29
|
+
# tecnativa/docker-socket-proxy:0.3.0 — matches the compose substrate's
|
|
30
|
+
# pin verbatim. T8 supply-chain: pinning prevents drift. Update via
|
|
31
|
+
# Renovate / dependabot.
|
|
32
|
+
image: tecnativa/docker-socket-proxy:0.3.0
|
|
33
|
+
environment:
|
|
34
|
+
# Whitelist matches packages/host-cp/compose.yaml:181-202 verbatim.
|
|
35
|
+
# Anything outside this list stays at proxy default (deny).
|
|
36
|
+
CONTAINERS: "1"
|
|
37
|
+
EVENTS: "1"
|
|
38
|
+
EXEC: "1"
|
|
39
|
+
# IMAGES=1 needed for GET /images/<ref>/json (version-status.mjs
|
|
40
|
+
# fetchLatestImageSha). Socket is :ro so this is read-only inspect.
|
|
41
|
+
IMAGES: "1"
|
|
42
|
+
# POST=1 required since tecnativa 0.3.0 for exec creation
|
|
43
|
+
# (POST /containers/<id>/exec + POST /exec/<id>/start). See
|
|
44
|
+
# packages/host-cp/compose.yaml:195-199 for the F-2-D dogfood
|
|
45
|
+
# finding that surfaced this.
|
|
46
|
+
POST: "1"
|
|
47
|
+
LOG_LEVEL: "warning"
|
|
48
|
+
ports:
|
|
49
|
+
# Publish to operator host on 127.0.0.1:2375 ONLY. k3d nodes reach
|
|
50
|
+
# this via host.k3d.internal:2375. Binding to 127.0.0.1 (not
|
|
51
|
+
# 0.0.0.0) is T1 mitigation: docker API surface stays loopback-only
|
|
52
|
+
# on a single-tenant operator machine.
|
|
53
|
+
- "127.0.0.1:2375:2375"
|
|
54
|
+
volumes:
|
|
55
|
+
# Read-only mount of the host's docker socket. The proxy is the
|
|
56
|
+
# only consumer of the raw socket on the operator's mac.
|
|
57
|
+
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
58
|
+
restart: unless-stopped
|
|
@@ -18,38 +18,30 @@
|
|
|
18
18
|
# before the main container starts, granting UID-1000 write access on the
|
|
19
19
|
# freshly-provisioned PV. fsGroup alone is insufficient for hostPath volumes.
|
|
20
20
|
#
|
|
21
|
-
# docker
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
21
|
+
# docker access — NO LONGER VIA hostPath (changed in olam-k3d-on-mac-
|
|
22
|
+
# substrate-decision Phase B B2, 2026-05-21). The previous R3-A two-volume
|
|
23
|
+
# hostPath pattern is retracted: round-4 R4-W2-F showed virtiofs returns
|
|
24
|
+
# ENOTSUP on stat/statx of socket files, and that failure is unrecoverable
|
|
25
|
+
# at the containerd OCI runtime layer. host-cp now reaches docker via TCP
|
|
26
|
+
# through the docker-socket-proxy ExternalName Service in the olam
|
|
27
|
+
# namespace (packages/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml),
|
|
28
|
+
# which kube-dns resolves as a CNAME to host.k3d.internal. The actual
|
|
29
|
+
# proxy container runs on the operator's docker daemon (sibling to k3d),
|
|
30
|
+
# started by `olam upgrade` Step 0.7. See also
|
|
31
|
+
# packages/host-cp/src/lib/docker-request-options.mjs (both substrates now
|
|
32
|
+
# return identical TCP options).
|
|
25
33
|
#
|
|
26
|
-
# k3d cluster create
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
# This mounts the entire colima directory into the k3d node at /host-colima/.
|
|
32
|
-
# The docker socket appears at /host-colima/docker.sock inside the node.
|
|
33
|
-
# The Deployment then uses:
|
|
34
|
-
# - host-colima volume (type: Directory) for the init container chmod
|
|
35
|
-
# - docker-socket volume (type: Socket, source /host-colima/docker.sock)
|
|
36
|
-
# for the main container /var/run/docker.sock mount
|
|
37
|
-
#
|
|
38
|
-
# An init container (socket-perm) runs `chmod 666 /host-colima/docker.sock`
|
|
39
|
-
# as root BEFORE the main container starts. This grants the non-root main
|
|
40
|
-
# container (UID 1000) read+write access to the daemon socket.
|
|
41
|
-
# Deliberate platform-permission concession — see Decision #15.
|
|
42
|
-
# R3-A: init container mounts host-colima (directory) and runs chmod on the
|
|
43
|
-
# socket file inside it. No symlink init container needed — empirically
|
|
44
|
-
# verified in plan pass-2 on kuro-bear 2026-05-20.
|
|
34
|
+
# The operator's k3d cluster create command is therefore simpler — no
|
|
35
|
+
# `--volume $HOME/.colima/default/:/host-colima/@server:*` flag needed.
|
|
36
|
+
# See docs/operator/kubernetes-substrate-beta.md for the current install
|
|
37
|
+
# command.
|
|
45
38
|
#
|
|
46
39
|
# gh-config (/gh-config) and operator-repo (/operator-repo) remain hostPath
|
|
47
40
|
# volumes that resolve to paths inside the k3d node container.
|
|
48
|
-
# OPERATORS MUST pass these volume mounts when creating the k3d cluster
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
# guide surfaces this requirement prominently.
|
|
41
|
+
# OPERATORS MUST pass these volume mounts when creating the k3d cluster.
|
|
42
|
+
# Without these flags the gh-config and operator-repo mounts will be empty.
|
|
43
|
+
# The pod will still start — features that depend on GitHub auth or the
|
|
44
|
+
# operator repo will fail gracefully.
|
|
53
45
|
apiVersion: apps/v1
|
|
54
46
|
kind: Deployment
|
|
55
47
|
metadata:
|
|
@@ -108,28 +100,18 @@ spec:
|
|
|
108
100
|
volumeMounts:
|
|
109
101
|
- name: olam-home
|
|
110
102
|
mountPath: /data
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
image: busybox@sha256:73aaf090f3d85aa34ee199857f03fa3a95c8ede2ffd4cc2cdb5b94e566b11662
|
|
121
|
-
imagePullPolicy: IfNotPresent
|
|
122
|
-
securityContext:
|
|
123
|
-
runAsUser: 0
|
|
124
|
-
runAsNonRoot: false
|
|
125
|
-
allowPrivilegeEscalation: false
|
|
126
|
-
command: ["sh", "-c", "chmod 666 /host-colima/docker.sock"]
|
|
127
|
-
volumeMounts:
|
|
128
|
-
- name: host-colima
|
|
129
|
-
mountPath: /host-colima
|
|
103
|
+
# socket-perm init container REMOVED in olam-k3d-on-mac-substrate-decision
|
|
104
|
+
# Phase B B2 (2026-05-21). The R3-A two-volume hostPath approach for
|
|
105
|
+
# docker.sock has been retracted: round-4 R4-W2-F showed virtiofs
|
|
106
|
+
# ENOTSUP on socket-file stat blocks the mount entirely. host-cp now
|
|
107
|
+
# reaches docker via TCP through the docker-socket-proxy ExternalName
|
|
108
|
+
# Service in the olam namespace (see
|
|
109
|
+
# packages/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml).
|
|
110
|
+
# The proxy itself runs on the operator's docker daemon (sibling to
|
|
111
|
+
# k3d), started by `olam upgrade` Step 0.7 — not inside this Pod.
|
|
130
112
|
containers:
|
|
131
113
|
- name: olam-host-cp
|
|
132
|
-
image: ghcr.io/pleri/olam-host-cp@sha256:
|
|
114
|
+
image: ghcr.io/pleri/olam-host-cp@sha256:3bf4a89af3544e382bf2d708ff73baa6704cf91a0b509f8b1a153fbe603a4223
|
|
133
115
|
imagePullPolicy: IfNotPresent
|
|
134
116
|
securityContext:
|
|
135
117
|
runAsNonRoot: true
|
|
@@ -158,8 +140,13 @@ spec:
|
|
|
158
140
|
readOnly: true
|
|
159
141
|
- name: tmp
|
|
160
142
|
mountPath: /tmp
|
|
161
|
-
-
|
|
162
|
-
|
|
143
|
+
# docker-socket volumeMount REMOVED in olam-k3d-on-mac-substrate-
|
|
144
|
+
# decision Phase B B2. Docker access now goes via TCP to the
|
|
145
|
+
# docker-socket-proxy ExternalName Service in the olam namespace.
|
|
146
|
+
# host-cp's `getDockerRequestOptions('kubernetes')` returns
|
|
147
|
+
# `{ host: 'docker-socket-proxy', port: 2375 }` (collapsed to the
|
|
148
|
+
# same value as the compose substrate's branch — see
|
|
149
|
+
# packages/host-cp/src/lib/docker-request-options.mjs).
|
|
163
150
|
readinessProbe:
|
|
164
151
|
httpGet:
|
|
165
152
|
path: /health
|
|
@@ -197,23 +184,13 @@ spec:
|
|
|
197
184
|
type: DirectoryOrCreate
|
|
198
185
|
- name: tmp
|
|
199
186
|
emptyDir: {}
|
|
200
|
-
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
# R3-A — Socket file within the colima directory (Decision R3-#1).
|
|
211
|
-
# Source is /host-colima/docker.sock — the socket file inside the k3d
|
|
212
|
-
# node's /host-colima directory (set by the colima parent-dir bind).
|
|
213
|
-
# Mounted at /var/run/docker.sock in the main container so host-cp can
|
|
214
|
-
# reach the operator's docker daemon without path changes in app code.
|
|
215
|
-
# The socket-perm init container runs chmod 666 on this path before
|
|
216
|
-
# the main container starts (Decision #15 — same root-init pattern).
|
|
217
|
-
hostPath:
|
|
218
|
-
path: /host-colima/docker.sock
|
|
219
|
-
type: Socket
|
|
187
|
+
# host-colima + docker-socket volumes REMOVED in olam-k3d-on-mac-
|
|
188
|
+
# substrate-decision Phase B B2 (2026-05-21). R3-A's two-volume
|
|
189
|
+
# hostPath approach is fully retracted: round-4 R4-W2-F demonstrated
|
|
190
|
+
# virtiofs ENOTSUP on socket-file stat is unrecoverable at the
|
|
191
|
+
# containerd OCI runtime layer (kubelet bypass via R4-W2-E was
|
|
192
|
+
# necessary-but-not-sufficient). host-cp now reaches docker via TCP
|
|
193
|
+
# through the docker-socket-proxy ExternalName Service — see
|
|
194
|
+
# packages/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml.
|
|
195
|
+
# The proxy itself runs on the operator's docker daemon (sibling to
|
|
196
|
+
# k3d), started by `olam upgrade` Step 0.7 on macOS.
|
|
@@ -70,7 +70,7 @@ spec:
|
|
|
70
70
|
mountPath: /data
|
|
71
71
|
containers:
|
|
72
72
|
- name: olam-auth-service
|
|
73
|
-
image: ghcr.io/pleri/olam-auth@sha256:
|
|
73
|
+
image: ghcr.io/pleri/olam-auth@sha256:a7b1e4c0ddee4fc6bfb2689c4d23d8bc0fcc95bc7b42a28d977b990f1408505b
|
|
74
74
|
imagePullPolicy: IfNotPresent
|
|
75
75
|
securityContext:
|
|
76
76
|
runAsNonRoot: true
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# ExternalName Service for the host-side docker-socket-proxy.
|
|
2
|
+
#
|
|
3
|
+
# Provides in-cluster DNS for pods to reach the host-side proxy
|
|
4
|
+
# container (defined in packages/host-cp/k8s/host-side/docker-socket-proxy.compose.yaml).
|
|
5
|
+
# The Service has NO backing Pod — `type: ExternalName` is a kube-dns
|
|
6
|
+
# CNAME alias to `host.k3d.internal`, the gateway address that k3d
|
|
7
|
+
# auto-provisions inside every node container.
|
|
8
|
+
#
|
|
9
|
+
# Decision #7 (round-4 plan pass 2): Universal across all k8s substrates
|
|
10
|
+
# (macOS+colima+virtiofs, Linux native k3d, WSL2). One codepath; the
|
|
11
|
+
# per-Pod cost of running an in-cluster proxy elsewhere is invisible
|
|
12
|
+
# against the maintenance tax of OS-conditional Service generation.
|
|
13
|
+
#
|
|
14
|
+
# Why ExternalName and not in-cluster Pod with hostPath:
|
|
15
|
+
# the in-cluster Pod would itself need to bind /var/run/docker.sock
|
|
16
|
+
# from the lima VM, hitting the same virtiofs ENOTSUP class that
|
|
17
|
+
# R4-W2-F is. The proxy must live OUTSIDE the k3d cluster, on the
|
|
18
|
+
# operator's colima docker daemon. ExternalName makes that
|
|
19
|
+
# transparent to consumers: host-cp configures
|
|
20
|
+
# { host: 'docker-socket-proxy', port: 2375 } regardless of where
|
|
21
|
+
# the actual proxy container lives.
|
|
22
|
+
apiVersion: v1
|
|
23
|
+
kind: Service
|
|
24
|
+
metadata:
|
|
25
|
+
name: docker-socket-proxy
|
|
26
|
+
namespace: olam
|
|
27
|
+
labels:
|
|
28
|
+
app: docker-socket-proxy
|
|
29
|
+
olam.io/component: host-stack
|
|
30
|
+
spec:
|
|
31
|
+
type: ExternalName
|
|
32
|
+
externalName: host.k3d.internal
|
|
33
|
+
ports:
|
|
34
|
+
- name: tcp-2375
|
|
35
|
+
port: 2375
|
|
36
|
+
targetPort: 2375
|
|
37
|
+
protocol: TCP
|
|
@@ -61,7 +61,7 @@ spec:
|
|
|
61
61
|
mountPath: /data
|
|
62
62
|
containers:
|
|
63
63
|
- name: olam-kg-service
|
|
64
|
-
image: ghcr.io/pleri/olam-kg-service@sha256:
|
|
64
|
+
image: ghcr.io/pleri/olam-kg-service@sha256:72fdfb96981903cd83d0b6ad997985bad86a7892c0d1ec7c5dcc9b4d9f8f44db
|
|
65
65
|
imagePullPolicy: IfNotPresent
|
|
66
66
|
securityContext:
|
|
67
67
|
runAsNonRoot: true
|
|
@@ -68,7 +68,7 @@ spec:
|
|
|
68
68
|
mountPath: /data
|
|
69
69
|
containers:
|
|
70
70
|
- name: olam-mcp-auth-service
|
|
71
|
-
image: ghcr.io/pleri/olam-mcp-auth@sha256:
|
|
71
|
+
image: ghcr.io/pleri/olam-mcp-auth@sha256:d8fb62e437142bf352e0d6f637c2b912baa592f25f4abbac1acc2c8cced976c2
|
|
72
72
|
imagePullPolicy: IfNotPresent
|
|
73
73
|
securityContext:
|
|
74
74
|
runAsNonRoot: true
|
|
@@ -22,3 +22,14 @@ data:
|
|
|
22
22
|
# AGENTMEMORY_HOST=0.0.0.0 but ConfigMap override is explicit defense against
|
|
23
23
|
# a future image regression reverting to 127.0.0.1.
|
|
24
24
|
AGENTMEMORY_HOST: "0.0.0.0"
|
|
25
|
+
# III_REST_PORT is the env var the agentmemory CLI wrapper reads when it
|
|
26
|
+
# polls its iii subprocess for readiness (cli.mjs:155 — `process.env
|
|
27
|
+
# ["III_REST_PORT"] || "3111"`). The iii engine itself binds the port
|
|
28
|
+
# declared in iii-config.yaml's iii-http worker (overridden via the
|
|
29
|
+
# olam-memory-service-iii-config ConfigMap to 3110, so it does not
|
|
30
|
+
# collide with the metrics-proxy on 3111). Without this env var the
|
|
31
|
+
# wrapper polls 3111 forever, prints "iii-engine did not become ready",
|
|
32
|
+
# and exits — entrypoint propagates the exit, container restarts, and
|
|
33
|
+
# the liveness probe returns 502 from the proxy (its backend was never
|
|
34
|
+
# up). Must equal the iii-http port in 35-configmap-iii-config.yaml.
|
|
35
|
+
III_REST_PORT: "3110"
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Overrides the iii-config.yaml shipped inside the agentmemory image so the
|
|
2
|
+
# iii engine binds the INTERNAL port (3110) instead of the EXTERNAL port
|
|
3
|
+
# (3111). The shipped yaml hardcodes `port: 3111` and the agentmemory CLI
|
|
4
|
+
# reads its bind from yaml (NOT from the AGENTMEMORY_PORT env var), so
|
|
5
|
+
# entrypoint.sh's `AGENTMEMORY_PORT=3110` override has no effect.
|
|
6
|
+
#
|
|
7
|
+
# Without this override, the engine and the metrics-proxy both try to bind
|
|
8
|
+
# 0.0.0.0:3111. The proxy starts first and wins the port; the engine fails
|
|
9
|
+
# silently. Probes to /agentmemory/livez hit the proxy and get forwarded to
|
|
10
|
+
# 127.0.0.1:3110, where nothing is listening — proxy returns 502, readiness
|
|
11
|
+
# fails, container restarts.
|
|
12
|
+
#
|
|
13
|
+
# Mounted at /usr/local/lib/node_modules/@agentmemory/agentmemory/dist/iii-config.yaml
|
|
14
|
+
# via subPath in 50-deployment.yaml.
|
|
15
|
+
apiVersion: v1
|
|
16
|
+
kind: ConfigMap
|
|
17
|
+
metadata:
|
|
18
|
+
name: olam-memory-service-iii-config
|
|
19
|
+
namespace: olam
|
|
20
|
+
labels:
|
|
21
|
+
app: olam-memory-service
|
|
22
|
+
olam.io/component: peripheral
|
|
23
|
+
data:
|
|
24
|
+
iii-config.yaml: |
|
|
25
|
+
workers:
|
|
26
|
+
- name: iii-http
|
|
27
|
+
config:
|
|
28
|
+
port: 3110
|
|
29
|
+
host: 0.0.0.0
|
|
30
|
+
default_timeout: 180000
|
|
31
|
+
cors:
|
|
32
|
+
allowed_origins: ["http://localhost:3111", "http://localhost:3113", "http://127.0.0.1:3111", "http://127.0.0.1:3113"]
|
|
33
|
+
allowed_methods: [GET, POST, PUT, DELETE, OPTIONS]
|
|
34
|
+
- name: iii-state
|
|
35
|
+
config:
|
|
36
|
+
adapter:
|
|
37
|
+
name: kv
|
|
38
|
+
config:
|
|
39
|
+
store_method: file_based
|
|
40
|
+
file_path: ./data/state_store.db
|
|
41
|
+
- name: iii-queue
|
|
42
|
+
config:
|
|
43
|
+
adapter:
|
|
44
|
+
name: builtin
|
|
45
|
+
- name: iii-pubsub
|
|
46
|
+
config:
|
|
47
|
+
adapter:
|
|
48
|
+
name: local
|
|
49
|
+
- name: iii-cron
|
|
50
|
+
config:
|
|
51
|
+
adapter:
|
|
52
|
+
name: kv
|
|
53
|
+
- name: iii-stream
|
|
54
|
+
config:
|
|
55
|
+
port: 3112
|
|
56
|
+
host: 0.0.0.0
|
|
57
|
+
adapter:
|
|
58
|
+
name: kv
|
|
59
|
+
config:
|
|
60
|
+
store_method: file_based
|
|
61
|
+
file_path: ./data/stream_store
|
|
62
|
+
- name: iii-observability
|
|
63
|
+
config:
|
|
64
|
+
enabled: true
|
|
65
|
+
service_name: agentmemory
|
|
66
|
+
exporter: memory
|
|
67
|
+
sampling_ratio: 1.0
|
|
68
|
+
metrics_enabled: true
|
|
69
|
+
logs_enabled: true
|
|
70
|
+
logs_console_output: true
|
|
71
|
+
- name: iii-exec
|
|
72
|
+
config:
|
|
73
|
+
watch:
|
|
74
|
+
- src/**/*.ts
|
|
75
|
+
exec:
|
|
76
|
+
- node dist/index.mjs
|
|
@@ -70,7 +70,7 @@ spec:
|
|
|
70
70
|
# bootstrap-placeholder comment + run `npm run refresh:manifest-digests`
|
|
71
71
|
# once ghcr.io/pleri/olam-memory-service has a real published digest.
|
|
72
72
|
# bootstrap-placeholder: pre-publish; refresh after first release
|
|
73
|
-
image: ghcr.io/pleri/olam-memory-service@sha256:
|
|
73
|
+
image: ghcr.io/pleri/olam-memory-service@sha256:bc377f94911baff74f7b91c44ea471580fdfdc1947e757dd6f550675084312d6
|
|
74
74
|
imagePullPolicy: IfNotPresent
|
|
75
75
|
securityContext:
|
|
76
76
|
runAsNonRoot: true
|
|
@@ -93,6 +93,13 @@ spec:
|
|
|
93
93
|
mountPath: /data
|
|
94
94
|
- name: tmp
|
|
95
95
|
mountPath: /tmp
|
|
96
|
+
# Overrides the shipped iii-config.yaml so the engine binds the
|
|
97
|
+
# internal port (3110) instead of colliding with the metrics-proxy
|
|
98
|
+
# on 3111. See 35-configmap-iii-config.yaml for full rationale.
|
|
99
|
+
- name: iii-config-override
|
|
100
|
+
mountPath: /usr/local/lib/node_modules/@agentmemory/agentmemory/dist/iii-config.yaml
|
|
101
|
+
subPath: iii-config.yaml
|
|
102
|
+
readOnly: true
|
|
96
103
|
readinessProbe:
|
|
97
104
|
httpGet:
|
|
98
105
|
# D15 (LOAD-BEARING): memory-service health path is /agentmemory/livez.
|
|
@@ -126,3 +133,6 @@ spec:
|
|
|
126
133
|
claimName: olam-memory-data
|
|
127
134
|
- name: tmp
|
|
128
135
|
emptyDir: {}
|
|
136
|
+
- name: iii-config-override
|
|
137
|
+
configMap:
|
|
138
|
+
name: olam-memory-service-iii-config
|