Files
openclaw/src/plugins/session-catalog.ts
Peter Steinberger 3255b3218a feat: unify external sessions with native catalog pagination (#104717)
* feat(gateway): add generic sessions.catalog surface with plugin SDK registration seam

* feat(agents): support one-shot forked CLI session resume with successor rebinding

* feat(anthropic): adopt local Claude CLI sessions into native chats via catalog continue

* feat(codex): register the session catalog provider independently of supervision

* refactor(ui): delete the retired custom Claude/Codex session tab views

* feat(ui): render external session catalogs as native sidebar sessions and chat panes

* docs: describe the unified native session catalog

* fix: harden forked CLI resume and catalog transcript mapping after review

* fix: satisfy strict typecheck for catalog source guard and imported message cast

* chore(i18n): regenerate session catalog locales

* fix(codex): simplify session source guard type

* fix(ui): paginate sidebar session catalogs

* chore(i18n): refresh catalog metadata after main merge

* fix(ui): harden session catalog pagination refresh

* test(agents): use sqlite session accessor in fork tests

* fix(ci): refresh session catalog generated surfaces

* fix(ui): align session catalog locales

* fix: address session catalog review findings

* fix(sessions): roll back failed plugin catalog adoption

* test(sessions): preserve CLI binding literals

* fix(ui): restore native session pagination label

* docs: note external session catalogs

* Revert "docs: note external session catalogs"

This reverts commit cfb503f160.
2026-07-11 17:26:26 -07:00

29 lines
1.1 KiB
TypeScript

import type {
SessionCatalogHost,
SessionsCatalogArchiveParams,
SessionsCatalogContinueParams,
SessionsCatalogReadParams,
SessionsCatalogReadResult,
} from "../../packages/gateway-protocol/src/schema/sessions-catalog.js";
export type SessionCatalogListProviderParams = {
search?: string;
limitPerHost?: number;
hostIds?: string[];
cursors?: Record<string, string>;
};
export type SessionCatalogReadProviderParams = Omit<SessionsCatalogReadParams, "catalogId">;
export type SessionCatalogContinueProviderParams = Omit<SessionsCatalogContinueParams, "catalogId">;
export type SessionCatalogArchiveProviderParams = Omit<SessionsCatalogArchiveParams, "catalogId">;
export type SessionCatalogProvider = {
id: string;
label: string;
list: (params: SessionCatalogListProviderParams) => Promise<SessionCatalogHost[]>;
read: (params: SessionCatalogReadProviderParams) => Promise<SessionsCatalogReadResult>;
continueSession?: (
params: SessionCatalogContinueProviderParams,
) => Promise<{ sessionKey: string }>;
archive?: (params: SessionCatalogArchiveProviderParams) => Promise<{ ok: true }>;
};