mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
71 lines
3.3 KiB
TypeScript
71 lines
3.3 KiB
TypeScript
/** Platform-neutral assembly of generated Host Remote contributions. */
|
|
|
|
import type { Context } from '@deepseek-ai/cordis'
|
|
import commandsRemote from '@deepseek-ai/dsh-commands/remote'
|
|
import goalsRemote from '@deepseek-ai/dsh-goal/remote'
|
|
import pluginInventoryRemote from '@deepseek-ai/dsh-host-plugin-inventory/remote'
|
|
import type { TypeRTClientRemote } from '@deepseek-ai/dsh-type-meta'
|
|
|
|
export type { TypeRTClientRemote as ClientRemote } from '@deepseek-ai/dsh-type-meta'
|
|
export type { PluginInventorySnapshot } from '@deepseek-ai/dsh-host-plugin-inventory/types'
|
|
export type {} from '@deepseek-ai/dsh-commands/remote'
|
|
export type {} from '@deepseek-ai/dsh-goal/remote'
|
|
export type {} from '@deepseek-ai/dsh-host-plugin-inventory/remote'
|
|
// The forwarded-event allowlist's selection seat: without it in the consumer's
|
|
// compilation face `TypeRTRemoteEvent` is `never` and every `$on` call fails.
|
|
export type { ApiRemoteForwardedEvent } from '../types.ts'
|
|
// The owner packages' client-safe `./types` exports supply the `Events`
|
|
// signatures `$on` hands to a listener, so a consumer reads the very
|
|
// declaration the Host emits rather than a flattened restatement of it.
|
|
export type {} from '@deepseek-ai/dsh-commands/types'
|
|
export type {} from '@deepseek-ai/dsh-credentials/types'
|
|
export type {} from '@deepseek-ai/dsh-llm/types'
|
|
export type {} from '@deepseek-ai/dsh-agent-presets/types'
|
|
export type {} from '@deepseek-ai/dsh-settings/types'
|
|
|
|
/**
|
|
* The carrier's Client-facing types, re-exported so a business package names one
|
|
* assembly package instead of both this facade and the Connection plugin. Type-only:
|
|
* the carrier's runtime values stay behind their own module edge.
|
|
*/
|
|
export type {
|
|
ClientResponse, ConfigurableProviderView, ConnectionHandle, ConnectionSinks, ContentBlock,
|
|
CredentialView, DirectoryListing, DiscoveredModelView, HistoryEntry, HostFrame, IApiClient,
|
|
MessageId, ModelCatalogFailure, ModelProviderGroup, ModelReasoningEffort, ModelSelection,
|
|
MuxFrame, PromptContentPart, QuestionResponsePayload, QueueAction, RpcError, RpcId, RpcReceipt,
|
|
RpcRequest, RpcResponse, RpcResult, SessionId, SessionModels, SessionSearchItem,
|
|
SessionSummary, SettingsNamespaceView, SettingsPathOpView, SkillEntry, StreamChunk,
|
|
SubagentAddress, SubagentCatalog, TaskView, ToolCallView, ToolEventView, ToolResultView,
|
|
WorkspaceId, WorkspaceView,
|
|
} from '@deepseek-ai/dsh-client-connection/client'
|
|
|
|
declare module '@deepseek-ai/cordis' {
|
|
interface Context {
|
|
/** Generated Remote namespaces selected by this Client assembly. */
|
|
remote: TypeRTClientRemote
|
|
}
|
|
}
|
|
|
|
/** Required service: the typed Client Remote contribution mount. */
|
|
export const inject = ['remote']
|
|
|
|
/**
|
|
* Mount the Host capabilities explicitly selected for this Client assembly.
|
|
* @param ctx - Client Cordis root carrying the typed API service.
|
|
* @returns disposer after every selected Remote namespace is ready.
|
|
*/
|
|
export async function apply(ctx: Context): Promise<() => Promise<void>> {
|
|
const disposers: Array<() => Promise<void>> = []
|
|
try {
|
|
for (const contribution of [commandsRemote, goalsRemote, pluginInventoryRemote]) {
|
|
disposers.push(await ctx.remote.$mount(contribution))
|
|
}
|
|
} catch (error) {
|
|
for (const dispose of disposers.reverse()) await dispose()
|
|
throw error
|
|
}
|
|
return async () => {
|
|
for (const dispose of disposers.reverse()) await dispose()
|
|
}
|
|
}
|