openclaw/packages
Peter Steinberger 27bdedb8af
feat(sessions): import Claude Code and Codex transcripts into OpenClaw (#161955)
* feat(sessions): import Claude Code and Codex transcripts into OpenClaw

Add sessions.catalog.import, which preserves a native catalog transcript
(Claude Code, Codex, OpenCode, Pi, or shared OpenClaw sessions) as an
ordinary OpenClaw session so it survives the source tool's cleanup or the
loss of the source computer. It reads through the existing catalog read
path, so Gateway-local, headless node, macOS app, and Linux app sources
all work without app changes.

Re-importing the same source reuses a deterministic agent-scoped session
key and appends only items not yet imported, so repeated imports act as
an explicit sync. Imports keep up to 50,000 items or 64 MiB (newest first)
and report complete: false when older history is cut. Continuation keeps
its 200-item / 512 KiB seed; adoption, continue, and fork are unchanged.

Surfaces: the sessions.catalog.import Gateway RPC (operator.write, same
row visibility as sessions.catalog.read), `openclaw sessions import`
(single transcript or --all with paging, --dry-run, --json), and an
"Import to OpenClaw" item in the Control UI catalog row menu. The shared
catalog history reader now pages at 50 items, the Claude and Codex
transcript read cap.

* chore: merge main into transcript import branch

* fix(sessions): fence catalog import source access through commit

Retain the catalog visibility owner's matched source and require current
read authority for destination creation, transcript appends, and state events.
Compare access facts without rejecting ordinary transcript generations.

Cover forbidden readers, pre-write sharing revocation, and mid-append
revocation through real Gateway owners. Share the integration state fixture.
Use typed CLI options and local paging state to satisfy assertion and lint gates.

* fix(sessions): default catalog imports to drafts

Preserve published copies on re-import and honor the Gateway no-drafts policy. Split cheap import authorization checks from retained release-tier owner integration proof. Refresh the Workboard asset manifest required by the generation gate.

* Merge remote-tracking branch 'origin/main' into steipete/transcript-import-mode-a262c5

* test(ui): expect the import action in adopted catalog session menus

* Merge remote-tracking branch 'origin/main' into steipete/transcript-import-mode-a262c5

* Merge remote-tracking branch 'origin/main' into steipete/transcript-import-mode-a262c5

* Merge remote-tracking branch 'origin/main' into steipete/transcript-import-mode-a262c5

* Merge remote-tracking branch 'origin/main' into steipete/transcript-import-mode-a262c5

* Merge remote-tracking branch 'origin/main' into steipete/transcript-import-mode-a262c5

# Conflicts:
#	docs/nodes/session-catalogs.md

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-09-30 22:12:42 -07:00
..
acp-core refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
agent-core fix: loop detection does not stop a tool call repeated with invalid arguments (#158709) 2026-10-01 12:23:40 +08:00
ai fix(ai): preserve literal DSML tool arguments 2026-10-01 03:59:19 +00:00
gateway-client refactor(packages): deslop shared packages sixth pass (#161675) 2026-09-30 06:21:52 +00:00
gateway-protocol feat(sessions): import Claude Code and Codex transcripts into OpenClaw (#161955) 2026-09-30 22:12:42 -07:00
llm-core refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
markdown-core test(agents, memory, ui, tooling): remove low-value tests (batch d112) (#161835) 2026-09-30 11:59:03 +00:00
media-core refactor(packages): deslop shared packages sixth pass (#161675) 2026-09-30 06:21:52 +00:00
media-generation-core refactor(packages): deslop shared packages third pass (#159933) 2026-09-27 20:53:42 -07:00
media-understanding-common refactor(packages): deslop shared packages third pass (#159933) 2026-09-27 20:53:42 -07:00
memory-host-sdk fix(memory): keep corpus discovery read-only during forget (#162155) 2026-09-30 20:02:16 -07:00
mermaid-renderer fix: restore bundled Mermaid parser license notices (#157461) 2026-09-25 14:21:38 -07:00
model-catalog-core refactor(packages): deslop shared packages fifth pass (#161210) 2026-09-29 14:30:03 -07:00
net-policy refactor(packages): deslop shared packages second pass (#159279) 2026-09-28 14:37:02 -07:00
normalization-core feat(ui): select Ultrafast for supported accounts (#160352) 2026-09-30 07:45:41 +00:00
plugin-package-contract refactor(packages): deslop shared packages second pass (#159279) 2026-09-28 14:37:02 -07:00
plugin-sdk refactor(packages): deslop shared packages third pass (#159933) 2026-09-27 20:53:42 -07:00
retry fix(gateway): handle connection bursts behind shared IPs (#160814) 2026-09-29 00:48:30 +00:00
sdk refactor(sdk): remove unused test fixture members (#161830) 2026-09-30 18:21:57 +07:00
session-url-contract refactor(packages): deslop shared packages sixth pass (#161675) 2026-09-30 06:21:52 +00:00
terminal-core refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
tool-call-repair test(core,plugins): remove low-value tests (batch d117) (#162104) 2026-09-30 21:48:00 +00:00
workboard-contract feat(workboard): add a people view filter to Sessions boards (#162283) 2026-09-30 21:02:35 -07:00
tsconfig.json perf(lint): bound the package fallback type graph (#160281) 2026-09-29 00:27:31 +07:00