/** * The outward sessions-service face — what `ctx.sessions` exposes to feature * packages. Transport entry points and implementation internals stay on * the concrete class. Widening this interface is the * explicit act of widening what features may do to the sessions domain. */ import type { Context } from '@deepseek-ai/cordis'; import type { SubagentAddress } from '@deepseek-ai/dsh-subagent/client'; import type { SessionId } from '@deepseek-ai/dsh-session/types'; import type { WorkspaceId } from '@deepseek-ai/dsh-workspace/types'; import type { RemoteResult } from '@deepseek-ai/dsh-typert-protocol'; import type { AgentContext } from '../scope.ts'; import type { SessionSearchResultItem } from '../sessions/manager.ts'; import type { SessionBinding, SessionListState } from '../sessions/service.ts'; import type { SessionFace } from './session.ts'; import type { ObservableSnapshot } from '@deepseek-ai/dsh-client-store'; export type { AgentContext } from '../scope.ts'; /** The sessions-service face injected as `ctx.sessions`. */ export interface ISessions { /** The useSessions standard feed (list rows + current selection; read face — writes stay inside the domain). */ readonly list: ObservableSnapshot; /** * The `session.search` result bound the wire schema fixes, exposed to * presentation as injected data. Not per-connection state: every transport * (fixture included) reports the same number. */ readonly searchResultLimit: number; /** * Create or adopt a Session on the Host. * @param opts - target workspace, directory, and optional preallocated identity. * @returns the Session identity after its local binding is addressable. */ create(opts?: { workspaceId?: WorkspaceId; cwd?: string; sessionId?: SessionId; }): Promise; /** * Select a session as current. * @param id - session id (must exist in the list; unknown ids fail loud). */ open(id: SessionId): void; /** * Open a healthy catalog child through its exact direct-parent address. * @param address - catalog-derived parent and child ids. */ openSubagent(address: SubagentAddress): void; /** * Resolve an already discovered direct-parent address without opening it. * @param id - possible addressed child id. * @returns the retained address, when present. */ subagentAddress(id: SessionId): SubagentAddress | undefined; /** * Mark whether a catalog menu is consuming live membership updates. * @param parentSessionId - catalog owner. * @param open - current menu state. */ setSubagentCatalogOpen(parentSessionId: SessionId, open: boolean): void; /** * Refresh one direct-child catalog. * @param parentSessionId - catalog owner. * @returns completion of the current or newly started refresh. */ refreshSubagents(parentSessionId: SessionId): Promise; /** Clear the current selection into the no-session view state. */ clear(): void; /** * Refresh the Host-authoritative Session list. * @returns completion of the current or newly started Session-list refresh. */ refresh(): Promise; /** * Search the Host's visible message-content index. Results stay * request-local; the list snapshot remains the metadata authority. * @param query - non-blank literal phrase. * @param signal - cancellation for a superseded search. * @returns bounded results, or a business/transport error. */ search(query: string, signal: AbortSignal): Promise>; /** * Fork a session from a completed-turn prefix of the source; on resolution * the child is in the list store and `open()` can target it. * @param opts - source session id, the optional event seq anchoring the * cut (the boundary is the first turn/end at or after it; an in-log * anchor in an open turn is unavailable rather than clipped backward), * and whether to increment an inherited durable title before resolving. * @returns the child session id. * @throws when the fork fails, or when a requested child-title rename fails after creation. */ fork(opts: { sessionId: SessionId; atSeq?: number; increaseTitle?: boolean; }): Promise; /** * Resolve an Agent-scoped context view (use-and-discard). * @param id - session id. * @returns scoped ctx, or undefined for a session neither listed nor already scoped. */ scope(id: SessionId): AgentContext | undefined; /** * Read the Agent scope tag off a context (service-method boundary: fetch * bundles must reach scope resolution through ctx.sessions). * @param ctx - any client context. * @returns the session id, or undefined on root contexts. */ scopeOf(ctx: Context): SessionId | undefined; /** * Resolve the session face behind an Agent-scoped context. * @param ctx - an Agent-scoped context. * @returns the session face, or undefined when the ctx is untagged or its scope was pruned. */ sessionOf(ctx: Context): SessionFace | undefined; /** * Resolve the stable session binding (scope-addressed assembly feed). * @param id - session id. * @returns binding, or undefined for a session neither listed nor already scoped. */ binding(id: SessionId): SessionBinding | undefined; } //# sourceMappingURL=sessions.d.ts.map