Invocation is an ordinary session.prompt again: the pre-step gesture boundary makes it deterministic host-side for every front end, so the dedicated RPC (handler, wire schema, error codes, client face, fixtures) and ui-skill's claim machinery are net deletions. The menu keeps decision 21 exactly — a pick lands literal /name text — plus the user-only marker from skill.list's modelInvocable flag.
34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
/**
|
|
* skills domain contract: read-only skill catalog lookup addressed by session.
|
|
* The session's header cwd resolves to the canonical project root host-side —
|
|
* the client never submits a raw path, and skill lookup never creates or
|
|
* resumes an Agent.
|
|
*/
|
|
|
|
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
|
import type { RpcRequest, RpcResponse } from './rpc.ts'
|
|
|
|
/** Skill catalog row (wire projection of the host SkillSummary; provider/source vocabulary stays host-side). */
|
|
export interface SkillEntry {
|
|
/** Kebab-case identifier the user references as `/name` in the composer. */
|
|
readonly name: string
|
|
/** Short routing description. */
|
|
readonly description: string
|
|
/** Optional extra routing guidance. */
|
|
readonly whenToUse?: string
|
|
/** False marks a user-only skill (`disable-model-invocation`): invocable here, absent from the model catalog. */
|
|
readonly modelInvocable: boolean
|
|
}
|
|
|
|
/**
|
|
* Skill-domain unary methods (the map key skill.* of RpcMethodMap). Listing
|
|
* is the domain's only RPC: invocation itself is a plain `session.prompt`
|
|
* whose leading `/name` token the host recognizes at the pre-step boundary
|
|
* (`dsh-tool-skill` injects the rendered body there), so every client shares
|
|
* one deterministic path with no dedicated invocation wire.
|
|
*/
|
|
export interface SkillsApi {
|
|
/** Lists the user-invocable skill catalog for the session's project. */
|
|
list(request: RpcRequest<{ sessionId: SessionId }>): Promise<RpcResponse<{ skills: readonly SkillEntry[] }>>
|
|
}
|