`CommandService.list` and `execute` carry the wire contract directly through `@Remote`, and the Client assembly mounts the generated commands contribution. The legacy API Proxy route, its schemas, the map rows, the generated client methods and the fixture's command domain are removed, so the catalog and the admission call have one owner again. `Session.command()` keeps a result-shaped public face for parity with the prompt, cancel and attachment neighbours it sits beside, and reads the generated namespace through one `SessionRemotes` parameter. The Session cluster declares that face against the owning business package rather than the generated contribution: the Host compiler aggregate builds this package, and it runs before any contribution is emitted. Migrated calls lose the `title-invalid` class of protocol-only error codes and report `internal`; no production caller branched on them.
94 lines
3.9 KiB
TypeScript
94 lines
3.9 KiB
TypeScript
/**
|
|
* apiproxy contract-layer barrel. api/ has zero Node dependencies and is
|
|
* importable from the browser; the TS interfaces are the authoritative contract, while HTTP,
|
|
* WebSocket, and in-process SSE are merely physical channels (four-quadrant message model).
|
|
*/
|
|
|
|
import type { SessionsApi } from './sessions.ts'
|
|
import type { HostApi } from './host.ts'
|
|
import type { WorkspaceApi } from './workspace.ts'
|
|
import type { AgentPresetsApi } from './agent-presets.ts'
|
|
import type { SkillsApi } from './skills.ts'
|
|
import type { SubagentsApi } from './subagents.ts'
|
|
import type { EventsApi } from './events.ts'
|
|
import type { GoalsApi } from './goals.ts'
|
|
import type { SettingsApi } from './settings.ts'
|
|
import type { CredentialsApi } from './credentials.ts'
|
|
import type { LlmApi } from './llm.ts'
|
|
import type { DownloadsApi } from './downloads.ts'
|
|
import type { ClientResponse, RpcReceipt } from './rpc.ts'
|
|
|
|
/** Root interface of the unified API. New client-request domain = one new file pair + one field here + one map row. */
|
|
export interface ApiProxy {
|
|
sessions: SessionsApi
|
|
subagents: SubagentsApi
|
|
host: HostApi
|
|
workspace: WorkspaceApi
|
|
skills: SkillsApi
|
|
agentPresets: AgentPresetsApi
|
|
events: EventsApi
|
|
goals: GoalsApi
|
|
settings: SettingsApi
|
|
credentials: CredentialsApi
|
|
llm: LlmApi
|
|
/** Host-only download surfaces (GET, no wire envelope); absent from IApiClient. */
|
|
downloads: DownloadsApi
|
|
/** Response entry for server-requests (client-response, echoing their rpcId); not a domain method (four-quadrant model). */
|
|
respond(message: ClientResponse): Promise<RpcReceipt>
|
|
}
|
|
|
|
// ---- Domain interfaces and payload entities ----
|
|
export type {
|
|
HistoryEntry, ModelCatalogFailure, ModelCatalogModel, ModelProviderGroup, ModelReasoning,
|
|
ModelReasoningEffort, ModelSelection, PromptContentPart, QueueAction, SessionModels,
|
|
SessionProjectionsBlock, SessionSearchItem, SessionsApi, SessionSummary,
|
|
} from './sessions.ts'
|
|
export type { DirectoryEntry, DirectoryListing, HostApi } from './host.ts'
|
|
export type {
|
|
SubagentAddress, SubagentCatalog, SubagentInterruptReceipt, SubagentListEntry,
|
|
SubagentPromptReceipt, SubagentsApi,
|
|
} from './subagents.ts'
|
|
export type { TaskView } from './tasks.ts'
|
|
export type { WorkspaceApi, WorkspaceId, WorkspaceView } from './workspace.ts'
|
|
export type { SkillsApi, SkillEntry } from './skills.ts'
|
|
export type { AgentPresetsApi, AgentPresetEntry } from './agent-presets.ts'
|
|
export type { EventsApi, MuxFrame, HostFrame, QueuedInboxItem, ToolCallView, ToolEventView, ToolResultView } from './events.ts'
|
|
export type { GoalsApi, GoalId, GoalRef } from './goals.ts'
|
|
export type { SettingsApi, SettingsNamespaceView, SettingsPathOpView, SettingsSecretView } from './settings.ts'
|
|
export type { CredentialsApi, CredentialView } from './credentials.ts'
|
|
export type { ConfigurableProviderView, DiscoveredModelView, LlmApi } from './llm.ts'
|
|
export type { DownloadsApi } from './downloads.ts'
|
|
export type { ApprovalResponsePayload } from './approvals.ts'
|
|
|
|
export type { QuestionResponsePayload } from './questions.ts'
|
|
|
|
// ---- Message layer: narrow forms (domain-signature view) ----
|
|
export type { RpcRequest, RpcResponse } from './rpc.ts'
|
|
|
|
// ---- Message layer: the four wire full forms + carrier receipt ----
|
|
export type {
|
|
ClientRequest,
|
|
ClientResponse,
|
|
RpcMessage,
|
|
RpcReceipt,
|
|
ServerRequest,
|
|
ServerResponse,
|
|
} from './rpc.ts'
|
|
|
|
// ---- Errors and ids ----
|
|
export { RpcId, transportError } from './rpc.ts'
|
|
export type { RpcError, RpcErrorCode, RpcErrorDetailsMap, RpcResult } from './rpc.ts'
|
|
export {
|
|
clientRequestSchema,
|
|
serverRequestSchema,
|
|
serverResponseSchema,
|
|
} from './rpc.schema.ts'
|
|
|
|
// ---- Fixed session-search product bounds ----
|
|
export {
|
|
SESSION_SEARCH_RESULT_LIMIT,
|
|
SESSION_SEARCH_SNIPPET_MAX_CODE_POINTS,
|
|
} from './session-search.ts'
|
|
|
|
// ---- Method registry and derived generics ----
|
|
export type { RequestPayload, ResponseValue, RpcMethodMap } from './rpc-map.ts'
|