Conversation
omp (Oh My Pi) writes the same version:3 JSONL session format as pi under
~/.omp/agent/sessions/, but prepends a fixed-width {type:"title"} record so
the {type:"session", cwd} entry is line 2, and nests subagent transcripts
one level deeper at <escaped-cwd>/<session-id>/<Name>.jsonl.
- Add ~/.omp/agent/sessions as a default nested store root (omp honors
PI_CODING_AGENT_DIR, so an env redirect still dedupes against it).
- classify() scans the first head lines for the session entry instead of
requiring it on line 1.
- enumerate() descends one extra level inside nested roots.
- read() accepts model_change.model as a fallback for modelId.
|
|
Speaking as Kun's firstmate. Reviewed head VISION verdict (per rule):
contract-class: restore — OMP support is already product-accepted (#53 ready-for-pr); this closes the pi-adapter gaps (store root, title-record line 2, nested subagent depth, Security: clean. Local read-only discovery; no secrets, no egress, no permission changes. CI: first-time fork workflows approved. CI (ubuntu+macos) and Guard green on this SHA. Require no-mistakes is red — PR body has no no-mistakes attestation / signature (opened run 35051548667 failed). That check is blocking. Still waiting on you, not on the captain: run |
Summary
omp (Oh My Pi) writes pi-compatible
version:3JSONL session transcripts, but the pi adapter could not see them. Two gaps:~/.omp/agent/sessions/(it honorsPI_CODING_AGENT_DIR, defaulting to~/.omp/agent), which was not among the adapter's roots.{"type":"title",...,"pad":"…"}record as line 1 (rewritten in place when the title generates), so the{"type":"session","version":3,"id":…,"cwd":…}entry is line 2.classify()read line 1 only and requiredtype:"session"+cwd, so every omp file classified as null.Changes
storeSpecs(): add~/.omp/agent/sessionsas a default nested root. An env redirect viaPI_CODING_AGENT_DIRdedupes against it through the existing realpath map.classify(): scan the first head lines for thetype:"session"entry instead of requiring it on line 1.enumerate(): descend one extra level inside nested roots — omp writes subagent transcripts at<escaped-cwd>/<session-id>/<Name>.jsonl.read(): acceptmodel_change.modelas a fallback formodelId(omp writesmodel).Verification
Against a live omp store (~500
.jsonlacross ~55 project dirs, including ~250 nested subagent transcripts): all files classify with a realcwd, andread()parses message/toolCall/toolResult events and the model unchanged — the transcript body format is identical to pi's. New fixturetest/fixtures/omp-session.jsonlcovers the title-record layout andmodelfield; the enumerate test covers the omp root and the depth-3 subagent layout.pnpm run checkpasses (662 tests).