mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-08-29 04:26:38 +00:00
The goal domain has been served by GoalService's @Remote namespace since it shipped; the API Proxy copy was a second implementation of the same six mutations. Remove the goals contract, schemas, route rows, IApiClient stub, host implementation, and the fixture's compatibility face, leaving ctx.remote.goals as the only path. The fixture's goal fold keeps its coverage through the Goal Remotes: its lifecycle case moves out of the unary-dispatch test, which no longer has goal rows to cover.
55 lines
2.4 KiB
TypeScript
55 lines
2.4 KiB
TypeScript
/**
|
|
* RPC method registry and signature-derived generics. Map keys are the wire
|
|
* path segments of API Proxy unary calls.
|
|
*/
|
|
|
|
import type { HostApi } from './host.ts'
|
|
import type { AgentPresetsApi } from './agent-presets.ts'
|
|
import type { SkillsApi } from './skills.ts'
|
|
import type { SettingsApi } from './settings.ts'
|
|
import type { CredentialsApi } from './credentials.ts'
|
|
import type { LlmApi } from './llm.ts'
|
|
import type { SubagentsApi } from './subagents.ts'
|
|
import type { RpcResponse } from './rpc.ts'
|
|
|
|
/**
|
|
* Method name → method signature. Signatures are the single source of truth; payload/value
|
|
* types are always derived from here. A method may declare a trailing AbortSignal after the
|
|
* request; the carrier passes its request signal, never a wire field.
|
|
*/
|
|
export interface RpcMethodMap {
|
|
'subagent.list': SubagentsApi['list']
|
|
'subagent.prompt': SubagentsApi['prompt']
|
|
'subagent.interrupt': SubagentsApi['interrupt']
|
|
'host.describe': HostApi['describe']
|
|
'host.pickDirectory': HostApi['pickDirectory']
|
|
'host.listDirectory': HostApi['listDirectory']
|
|
'host.createDirectory': HostApi['createDirectory']
|
|
'host.openPath': HostApi['openPath']
|
|
'skill.list': SkillsApi['list']
|
|
'agentPreset.list': AgentPresetsApi['list']
|
|
'agentPreset.select': AgentPresetsApi['select']
|
|
'agentPreset.read': AgentPresetsApi['read']
|
|
'agentPreset.copy': AgentPresetsApi['copy']
|
|
'agentPreset.openDocument': AgentPresetsApi['openDocument']
|
|
'agentPreset.remove': AgentPresetsApi['remove']
|
|
'settings.describe': SettingsApi['describe']
|
|
'settings.openDocument': SettingsApi['openDocument']
|
|
'settings.update': SettingsApi['update']
|
|
'settings.replace': SettingsApi['replace']
|
|
'settings.mutate': SettingsApi['mutate']
|
|
'credentials.describe': CredentialsApi['describe']
|
|
'credentials.set': CredentialsApi['set']
|
|
'credentials.unset': CredentialsApi['unset']
|
|
'llm.providers': LlmApi['providers']
|
|
'llm.models': LlmApi['models']
|
|
'llm.discoverModels': LlmApi['discoverModels']
|
|
}
|
|
|
|
/** Business request payload of method K (reaches through the RpcRequest narrow form to payload). */
|
|
export type RequestPayload<K extends keyof RpcMethodMap> = Parameters<RpcMethodMap[K]>[0]['payload']
|
|
|
|
/** Business return value of method K (reaches through the RpcResponse narrow form to infer the ok value of result). */
|
|
export type ResponseValue<K extends keyof RpcMethodMap> =
|
|
Awaited<ReturnType<RpcMethodMap[K]>> extends RpcResponse<infer T> ? T : never
|