You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
greplica transcript bundle only accepts codex, claude, copilot, and opencode, even though Greplica already supports OpenHands and Factory Droid as install platforms and both platform installers expose transcript projection hooks.
This makes transcript backfill inconsistent across supported platforms. A user can install Greplica for OpenHands or Factory Droid, but cannot use the same transcript bundle workflow to backfill an existing session transcript.
Current behavior
The CLI usage says transcript bundling is limited to four platforms:
For OpenHands, add session metadata extraction so bundle output can include openhands-session:<id> instead of unknown when the event directory shape allows it.
Suggested test cases
transcript bundle --platform factory-droid with Claude-style JSONL produces factory-droid-session:<id> and sanitized transcript content.
transcript bundle --platform openhands with an events directory containing event-*.json produces sanitized transcript content.
OpenHands derives session_id from ~/.openhands/conversations/<id>/events or from event metadata if available.
OpenHands still handles missing/unreadable event directories with a clear error or empty transcript behavior consistent with existing platform helpers.
Notes
This is separate from adding new platform support. OpenHands and Factory Droid already exist as install platforms; the bug is that transcript backfill does not expose their existing transcript projection surface.
Problem
greplica transcript bundleonly acceptscodex,claude,copilot, andopencode, even though Greplica already supports OpenHands and Factory Droid as install platforms and both platform installers expose transcript projection hooks.This makes transcript backfill inconsistent across supported platforms. A user can install Greplica for OpenHands or Factory Droid, but cannot use the same
transcript bundleworkflow to backfill an existing session transcript.Current behavior
The CLI usage says transcript bundling is limited to four platforms:
The parser enforces the same allowlist in
apps/cli/main.ts:But the underlying bundle builder already delegates to the selected platform installer:
That means the command surface is narrower than the platform abstraction underneath it.
Reproduction
From current
main, try either supported install platform:Observed:
Factory Droid fails the same way:
Observed:
Why this looks supportable
OpenHands already has platform-specific transcript support:
libs/install/platforms/openhands.tsimplementsloadTranscript(eventsDir)for OpenHands event directories.libs/install/platforms/openhands.tsimplementstranscriptToMarkdown().transcriptPathFromHook()already maps a session id to~/.openhands/conversations/<conversation-id>/events.Factory Droid also has transcript support:
libs/install/platforms/droid.tsimplementssessionSourceRef()/sessionIdFromSourceRef().libs/install/platforms/droid.tsreuses Claude-style JSONL transcript projection viaclaudeTranscriptToMarkdown().So the core projection pieces exist. The CLI parser and docs just do not expose them.
OpenHands metadata caveat
OpenHands projection currently emits no metadata, so
buildTranscriptBundle()may produce:The content can still be bundled, but the provenance is weaker than other platforms.
A reasonable fix is to derive OpenHands
session_idfrom the event directory path when possible:Then the bundle can emit:
If OpenHands events contain an explicit
session_id,conversation_id, or similar field, that should win over the path fallback.Expected behavior
greplica transcript bundleshould accept all installed platforms that have a working transcript projection:Expected output:
event-*.jsonfiles.Suggested fix direction
openhandsandfactory-droidtoparseTranscriptBundlePlatform().scripts/check-transcript-bundle.jsor the Vitest suite if feat:Introduce Vitest testing infrastructure #106 lands first.openhands-session:<id>instead ofunknownwhen the event directory shape allows it.Suggested test cases
transcript bundle --platform factory-droidwith Claude-style JSONL producesfactory-droid-session:<id>and sanitized transcript content.transcript bundle --platform openhandswith an events directory containingevent-*.jsonproduces sanitized transcript content.session_idfrom~/.openhands/conversations/<id>/eventsor from event metadata if available.Notes
This is separate from adding new platform support. OpenHands and Factory Droid already exist as install platforms; the bug is that transcript backfill does not expose their existing transcript projection surface.