commandId crosses three boundaries (session log, wire admission response, client flow pairing), so per the branded-id rule it becomes Branded<'CommandId'>, declared in a new pure @deepseek-ai/dsh-commands/brand outlet (the dsh-llm/brand shape: type + constructor, no Context merges, so wire and client programs can name it without loading the host plugin). The event payloads, CommandExecution, and the executor mint carry the brand; the wire schema gains commandIdSchema as the domain's single brand-cast point (the approvals precedent); CommandNode and the fixture's fabrication cast follow type-only.
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
/**
|
|
* dsh-commands' owned branded id: command lifecycle pairing across the
|
|
* session log, the wire admission response, and client-side flow pairing.
|
|
*
|
|
* The `Branded<B>` primitive lives in `@deepseek-ai/dsh-brand`; this module
|
|
* is a pure type/constructor outlet (no cordis imports, no module
|
|
* augmentation) so wire and client programs can name the brand without
|
|
* loading the host plugin's Context merges — the `dsh-llm/brand` shape.
|
|
*
|
|
* @module @deepseek-ai/dsh-commands/brand
|
|
*/
|
|
|
|
import type { Branded } from '@deepseek-ai/dsh-brand'
|
|
|
|
/**
|
|
* Pairs one command execution's `command/run`/`command/done` lifecycle
|
|
* records with each other and with the `command.execute` admission response.
|
|
* Minted by the executor, monotonic per service instance.
|
|
*/
|
|
export type CommandId = Branded<'CommandId'>
|
|
|
|
/**
|
|
* Brand a string as a {@link CommandId}.
|
|
* @param id - the executor-minted pairing id.
|
|
* @returns the same string, branded; no validation is performed.
|
|
*/
|
|
export function CommandId(id: string): CommandId {
|
|
return id as CommandId
|
|
}
|