@deepseek-ai/dsh-api-terminal-controller 0.1.6-alpha.2 → 0.1.7-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_create_result$schema = (
28
28
  'cwd': z.string().readonly(),
29
29
  'cols': z.number().readonly(),
30
30
  'rows': z.number().readonly(),
31
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
31
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
32
32
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
33
33
  'error': z.string().readonly().optional(),
34
34
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -65,7 +65,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_follow_result$schema = (
65
65
  'cwd': z.string().readonly(),
66
66
  'cols': z.number().readonly(),
67
67
  'rows': z.number().readonly(),
68
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
68
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
69
69
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
70
70
  'error': z.string().readonly().optional(),
71
71
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -87,7 +87,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_follow_result$schema = (
87
87
  'cwd': z.string().readonly(),
88
88
  'cols': z.number().readonly(),
89
89
  'rows': z.number().readonly(),
90
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
90
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
91
91
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
92
92
  'error': z.string().readonly().optional(),
93
93
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -107,7 +107,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_list_result$schema = ()
107
107
  'cwd': z.string().readonly(),
108
108
  'cols': z.number().readonly(),
109
109
  'rows': z.number().readonly(),
110
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
110
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
111
111
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
112
112
  'error': z.string().readonly().optional(),
113
113
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -719,7 +719,7 @@ export const TYPERT = {
719
719
  },
720
720
  {
721
721
  "name": "AssistantMessage",
722
- "declaration": "export interface AssistantMessage extends Message {\n readonly role: 'assistant';\n readonly source: ModelMessageSource;\n}"
722
+ "declaration": "export interface AssistantMessage extends MessageBase {\n readonly role: 'assistant';\n readonly source: ModelMessageSource;\n}"
723
723
  },
724
724
  {
725
725
  "name": "AssistantProviderMetadata",
@@ -757,6 +757,10 @@ export const TYPERT = {
757
757
  "name": "CommandSourceMap",
758
758
  "declaration": "export interface CommandSourceMap {\n user: { kind: 'user'; };\n}"
759
759
  },
760
+ {
761
+ "name": "CompactionCheckpointSource",
762
+ "declaration": "export type CompactionCheckpointSource = typeof COMPACT_CHECKPOINT_MARKER & { readonly compactionId: CompactionId; readonly sourceCommandId?: CommandId; };"
763
+ },
760
764
  {
761
765
  "name": "CompactionId",
762
766
  "declaration": "export type CompactionId = Branded<'CompactionId'>;"
@@ -767,7 +771,7 @@ export const TYPERT = {
767
771
  },
768
772
  {
769
773
  "name": "ContentBlockMap",
770
- "declaration": "export interface ContentBlockMap {\n text: TextBlock;\n reasoning: ReasoningBlock;\n image: ImageBlock;\n file: FileBlock;\n 'tool-call': ToolCallBlock;\n 'tool-result': ToolResultBlock;\n}"
774
+ "declaration": "export interface ContentBlockMap {\n text: TextBlock;\n reasoning: ReasoningBlock;\n image: ImageBlock;\n file: FileBlock;\n 'tool-call': ToolCallBlock;\n 'tool-addition': ToolAdditionBlock;\n 'tool-removal': ToolRemovalBlock;\n}"
771
775
  },
772
776
  {
773
777
  "name": "ContentBlockType",
@@ -785,9 +789,13 @@ export const TYPERT = {
785
789
  "name": "ContinuableSubagentDescriptorData",
786
790
  "declaration": "export interface ContinuableSubagentDescriptorData extends SubagentDescriptorBase {\n readonly mode: 'continuable';\n readonly label: string;\n readonly agentProvider?: string;\n readonly agentModel?: string;\n readonly agentReasoningEffort?: ReasoningEffortId;\n readonly persona?: string;\n readonly toolFilter?: ToolRestriction;\n}"
787
791
  },
792
+ {
793
+ "name": "DeveloperMessage",
794
+ "declaration": "export interface DeveloperMessage extends MessageBase {\n readonly role: 'developer';\n}"
795
+ },
788
796
  {
789
797
  "name": "EpochHeader",
790
- "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n}"
798
+ "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n system?: never;\n}"
791
799
  },
792
800
  {
793
801
  "name": "FeedbackCategory",
@@ -881,6 +889,10 @@ export const TYPERT = {
881
889
  "name": "JsonValue",
882
890
  "declaration": "export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue; };"
883
891
  },
892
+ {
893
+ "name": "KnownCatalogMode",
894
+ "declaration": "export type KnownCatalogMode = { readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; };"
895
+ },
884
896
  {
885
897
  "name": "LlmCallConfig",
886
898
  "declaration": "export interface LlmCallConfig {\n provider: string;\n model: string;\n reasoningEffort?: ReasoningEffortId;\n temperature?: number;\n maxTokens?: number;\n stop?: string[];\n}"
@@ -895,7 +907,11 @@ export const TYPERT = {
895
907
  },
896
908
  {
897
909
  "name": "Message",
898
- "declaration": "export interface Message {\n readonly id: MessageId;\n readonly role: 'system' | 'user' | 'assistant';\n readonly content: ContentBlock[];\n readonly source: MessageSource;\n}"
910
+ "declaration": "export type Message = MessageRoleMap[keyof MessageRoleMap];"
911
+ },
912
+ {
913
+ "name": "MessageBase",
914
+ "declaration": "export interface MessageBase {\n readonly id: MessageId;\n readonly content: readonly ContentBlock[];\n readonly source: MessageSource;\n}"
899
915
  },
900
916
  {
901
917
  "name": "MessageFeedbackDelete",
@@ -921,13 +937,17 @@ export const TYPERT = {
921
937
  "name": "MessageId",
922
938
  "declaration": "export type MessageId = Branded<'MessageId'>;"
923
939
  },
940
+ {
941
+ "name": "MessageRoleMap",
942
+ "declaration": "export interface MessageRoleMap {\n system: SystemMessage;\n developer: DeveloperMessage;\n user: UserMessage;\n assistant: AssistantMessage;\n tool: ToolResultMessage;\n}"
943
+ },
924
944
  {
925
945
  "name": "MessageSource",
926
946
  "declaration": "export type MessageSource = MessageSourceMap[keyof MessageSourceMap];"
927
947
  },
928
948
  {
929
949
  "name": "MessageSourceMap",
930
- "declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n plugin: { kind: 'plugin'; plugin: string; } & ContextFormed;\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; };\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n 'team-message': TeamMessageSource;\n goal: GoalMessageSource;\n 'session-reference': SessionReferenceSource;\n}"
950
+ "declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'system-prompt': SystemPromptMessageSource;\n 'model-selection': { kind: 'model-selection'; } & ContextFormed;\n 'user-approval': { kind: 'user-approval'; } & ContextFormed;\n 'ptc-mode': { kind: 'ptc-mode'; };\n 'tool-registry': { kind: 'tool-registry'; };\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; };\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n 'cordis-host-runner': { kind: 'cordis-host-runner'; };\n 'team-message': TeamMessageSource;\n goal: GoalMessageSource;\n 'compact-checkpoint': CompactionCheckpointSource;\n 'session-reference': SessionReferenceSource;\n}"
931
951
  },
932
952
  {
933
953
  "name": "ModelMessageSource",
@@ -983,7 +1003,7 @@ export const TYPERT = {
983
1003
  },
984
1004
  {
985
1005
  "name": "Session",
986
- "declaration": "export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n readonly inheritedEventCount: SessionLogOffset;\n get id(): SessionId;\n readonly firstLiveSeq: SessionLogOffset;\n eventAt(seq: SessionSeq): SessionEvent | undefined;\n snapshotEvents(fromSeq: SessionLogOffset = SessionLogOffset(0), toSeqExclusive: SessionLogOffset = this.seq): readonly SessionEvent[];\n ownEvents(): readonly SessionEvent[];\n isOwnSeq(seq: SessionSeq): boolean;\n get seq(): SessionLogOffset;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [opts: SurfaceIntent<T>] : []): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}"
1006
+ "declaration": "export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n readonly inheritedEventCount: SessionLogOffset;\n get id(): SessionId;\n readonly firstLiveSeq: SessionLogOffset;\n readonly firstLifecycleSeq: SessionLogOffset;\n eventAt(seq: SessionSeq): SessionEvent | undefined;\n snapshotEvents(fromSeq: SessionLogOffset = SessionLogOffset(0), toSeqExclusive: SessionLogOffset = this.seq): readonly SessionEvent[];\n ownEvents(): readonly SessionEvent[];\n isOwnSeq(seq: SessionSeq): boolean;\n get seq(): SessionLogOffset;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [opts: SurfaceIntent<T>] : []): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}"
987
1007
  },
988
1008
  {
989
1009
  "name": "SessionEvent",
@@ -991,7 +1011,7 @@ export const TYPERT = {
991
1011
  },
992
1012
  {
993
1013
  "name": "SessionEventMap",
994
- "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; reason?: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'permission/preset': { preset: string; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'feedback/record': FeedbackRecord;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
1014
+ "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'developer/message': { turn: number; step: number; message: DeveloperMessage; headerSeq?: SessionSeq; };\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; reason?: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'permission/preset': { preset: string; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'feedback/record': FeedbackRecord;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
995
1015
  },
996
1016
  {
997
1017
  "name": "SessionEventType",
@@ -1051,7 +1071,7 @@ export const TYPERT = {
1051
1071
  },
1052
1072
  {
1053
1073
  "name": "SubagentCatalogEvent",
1054
- "declaration": "export type SubagentCatalogEvent = { readonly version: 0; readonly childId: SessionId; readonly childCreatedAt: number; } & ({ readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; });"
1074
+ "declaration": "export type SubagentCatalogEvent = { readonly childId: SessionId; readonly childCreatedAt: number; } & (({ readonly version: 0; } & KnownCatalogMode) | ({ readonly version: 1; } & (KnownCatalogMode | { readonly mode: 'unknown'; readonly label?: string; })));"
1055
1075
  },
1056
1076
  {
1057
1077
  "name": "SubagentDescriptorBase",
@@ -1067,7 +1087,7 @@ export const TYPERT = {
1067
1087
  },
1068
1088
  {
1069
1089
  "name": "SurfaceEventType",
1070
- "declaration": "export type SurfaceEventType = 'system/message' | 'user/message' | 'assistant/message' | 'tool/result';"
1090
+ "declaration": "export type SurfaceEventType = 'system/message' | 'developer/message' | 'user/message' | 'assistant/message' | 'tool/result';"
1071
1091
  },
1072
1092
  {
1073
1093
  "name": "SurfaceIntent",
@@ -1079,7 +1099,11 @@ export const TYPERT = {
1079
1099
  },
1080
1100
  {
1081
1101
  "name": "SystemMessage",
1082
- "declaration": "export interface SystemMessage extends Message {\n readonly role: 'system';\n readonly source: MessageSourceMap['plugin'];\n}"
1102
+ "declaration": "export interface SystemMessage extends MessageBase {\n readonly role: 'system';\n readonly source: MessageSourceMap['system-prompt'];\n}"
1103
+ },
1104
+ {
1105
+ "name": "SystemPromptMessageSource",
1106
+ "declaration": "export interface SystemPromptMessageSource {\n kind: 'system-prompt';\n}"
1083
1107
  },
1084
1108
  {
1085
1109
  "name": "SystemPromptUpdate",
@@ -1157,6 +1181,10 @@ export const TYPERT = {
1157
1181
  "name": "TokenUsage",
1158
1182
  "declaration": "export interface TokenUsage {\n inputTokens: number;\n outputTokens: number;\n totalTokens?: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n reasoningTokens?: number;\n}"
1159
1183
  },
1184
+ {
1185
+ "name": "ToolAdditionBlock",
1186
+ "declaration": "export interface ToolAdditionBlock {\n type: 'tool-addition';\n toolName: string;\n tool?: never;\n}"
1187
+ },
1160
1188
  {
1161
1189
  "name": "ToolCallBlock",
1162
1190
  "declaration": "export interface ToolCallBlock {\n type: 'tool-call';\n id: ToolCallId;\n name: string;\n arguments: string;\n}"
@@ -1170,20 +1198,20 @@ export const TYPERT = {
1170
1198
  "declaration": "export interface ToolMessageSource {\n kind: 'tool';\n callId: ToolCallId;\n}"
1171
1199
  },
1172
1200
  {
1173
- "name": "ToolRestriction",
1174
- "declaration": "export interface ToolRestriction {\n readonly allow?: readonly string[];\n readonly deny?: readonly string[];\n}"
1201
+ "name": "ToolRemovalBlock",
1202
+ "declaration": "export interface ToolRemovalBlock {\n type: 'tool-removal';\n toolName: string;\n}"
1175
1203
  },
1176
1204
  {
1177
- "name": "ToolResultBlock",
1178
- "declaration": "export interface ToolResultBlock {\n type: 'tool-result';\n toolCallId: ToolCallId;\n content: ContentBlock[];\n isError?: boolean;\n}"
1205
+ "name": "ToolRestriction",
1206
+ "declaration": "export interface ToolRestriction {\n readonly allow?: readonly string[];\n readonly deny?: readonly string[];\n}"
1179
1207
  },
1180
1208
  {
1181
1209
  "name": "ToolResultMessage",
1182
- "declaration": "export interface ToolResultMessage extends Message {\n readonly role: 'user';\n readonly content: [ToolResultBlock];\n readonly source: ToolMessageSource;\n}"
1210
+ "declaration": "export interface ToolResultMessage extends MessageBase {\n readonly role: 'tool';\n readonly source: ToolMessageSource;\n readonly toolCallId: ToolCallId;\n readonly isError?: boolean;\n}"
1183
1211
  },
1184
1212
  {
1185
1213
  "name": "ToolSchema",
1186
- "declaration": "export interface ToolSchema {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}"
1214
+ "declaration": "export interface ToolSchema {\n deferLoading?: true;\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}"
1187
1215
  },
1188
1216
  {
1189
1217
  "name": "TurnEndCancelCause",
@@ -1195,11 +1223,11 @@ export const TYPERT = {
1195
1223
  },
1196
1224
  {
1197
1225
  "name": "TurnEndReasonMap",
1198
- "declaration": "export interface TurnEndReasonMap {\n completed: { kind: 'completed'; };\n aborted: { kind: 'aborted'; reason: TurnEndCancelCause; };\n blocked: { kind: 'blocked'; };\n error: { kind: 'error'; error: LlmFailure; };\n 'max-tokens': { kind: 'max-tokens'; };\n interrupted: { kind: 'interrupted'; };\n}"
1226
+ "declaration": "export interface TurnEndReasonMap {\n completed: { kind: 'completed'; };\n aborted: { kind: 'aborted'; reason: TurnEndCancelCause; };\n blocked: { kind: 'blocked'; };\n error: { kind: 'error'; error: LlmFailure; };\n 'max-tokens': { kind: 'max-tokens'; };\n interrupted: { kind: 'interrupted'; };\n forked: { kind: 'forked'; };\n}"
1199
1227
  },
1200
1228
  {
1201
1229
  "name": "UserMessage",
1202
- "declaration": "export interface UserMessage extends Message {\n readonly role: 'user';\n}"
1230
+ "declaration": "export interface UserMessage extends MessageBase {\n readonly role: 'user';\n}"
1203
1231
  },
1204
1232
  {
1205
1233
  "name": "WebTerminalId",
@@ -1,6 +1,7 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import type {
3
3
  RemoteResult,
4
+ RemoteStreamHandle,
4
5
  TypertRemoteContribution,
5
6
  } from '@deepseek-ai/dsh-typert-protocol'
6
7
  import type { TerminalAttachmentId, TerminalCreateRequest, TerminalEnvironment, TerminalFrame, TerminalRetentionFrame, TerminalShell, WebTerminalId, WebTerminalInfo } from '@deepseek-ai/dsh-api-terminal-controller/types'
@@ -11,11 +12,11 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
11
12
  close: (agentId: SessionId, id: WebTerminalId) => Promise<RemoteResult<void>>
12
13
  create: (agentId: SessionId, request: TerminalCreateRequest, signal?: AbortSignal) => Promise<RemoteResult<WebTerminalInfo>>
13
14
  environment: (agentId: SessionId, signal?: AbortSignal) => Promise<RemoteResult<TerminalEnvironment>>
14
- follow: (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, signal?: AbortSignal) => AsyncIterable<TerminalFrame>
15
+ follow: (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, signal?: AbortSignal) => RemoteStreamHandle<TerminalFrame, never>
15
16
  list: (sessionId: SessionId) => Promise<RemoteResult<WebTerminalInfo[]>>
16
17
  rename: (agentId: SessionId, id: WebTerminalId, title: string) => Promise<RemoteResult<void>>
17
18
  resize: (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, cols: number, rows: number) => Promise<RemoteResult<void>>
18
- retain: (sessionId: SessionId, id: WebTerminalId, signal?: AbortSignal) => AsyncIterable<TerminalRetentionFrame>
19
+ retain: (sessionId: SessionId, id: WebTerminalId, signal?: AbortSignal) => RemoteStreamHandle<TerminalRetentionFrame, never>
19
20
  shells: (agentId: SessionId, signal?: AbortSignal) => Promise<RemoteResult<TerminalShell[]>>
20
21
  write: (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, data: string) => Promise<RemoteResult<void>>
21
22
  }
@@ -23,11 +24,11 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
23
24
  'terminal/close': (agentId: SessionId, id: WebTerminalId) => Promise<RemoteResult<void>>
24
25
  'terminal/create': (agentId: SessionId, request: TerminalCreateRequest, signal?: AbortSignal) => Promise<RemoteResult<WebTerminalInfo>>
25
26
  'terminal/environment': (agentId: SessionId, signal?: AbortSignal) => Promise<RemoteResult<TerminalEnvironment>>
26
- 'terminal/follow': (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, signal?: AbortSignal) => AsyncIterable<TerminalFrame>
27
+ 'terminal/follow': (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, signal?: AbortSignal) => RemoteStreamHandle<TerminalFrame, never>
27
28
  'terminal/list': (sessionId: SessionId) => Promise<RemoteResult<WebTerminalInfo[]>>
28
29
  'terminal/rename': (agentId: SessionId, id: WebTerminalId, title: string) => Promise<RemoteResult<void>>
29
30
  'terminal/resize': (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, cols: number, rows: number) => Promise<RemoteResult<void>>
30
- 'terminal/retain': (sessionId: SessionId, id: WebTerminalId, signal?: AbortSignal) => AsyncIterable<TerminalRetentionFrame>
31
+ 'terminal/retain': (sessionId: SessionId, id: WebTerminalId, signal?: AbortSignal) => RemoteStreamHandle<TerminalRetentionFrame, never>
31
32
  'terminal/shells': (agentId: SessionId, signal?: AbortSignal) => Promise<RemoteResult<TerminalShell[]>>
32
33
  'terminal/write': (agentId: SessionId, id: WebTerminalId, attachmentId: TerminalAttachmentId, data: string) => Promise<RemoteResult<void>>
33
34
  }
@@ -38,7 +39,7 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
38
39
  'agent:terminal/close': (id: WebTerminalId) => Promise<RemoteResult<void>>
39
40
  'agent:terminal/create': (request: TerminalCreateRequest, signal?: AbortSignal) => Promise<RemoteResult<WebTerminalInfo>>
40
41
  'agent:terminal/environment': (signal?: AbortSignal) => Promise<RemoteResult<TerminalEnvironment>>
41
- 'agent:terminal/follow': (id: WebTerminalId, attachmentId: TerminalAttachmentId, signal?: AbortSignal) => AsyncIterable<TerminalFrame>
42
+ 'agent:terminal/follow': (id: WebTerminalId, attachmentId: TerminalAttachmentId, signal?: AbortSignal) => RemoteStreamHandle<TerminalFrame, never>
42
43
  'agent:terminal/rename': (id: WebTerminalId, title: string) => Promise<RemoteResult<void>>
43
44
  'agent:terminal/resize': (id: WebTerminalId, attachmentId: TerminalAttachmentId, cols: number, rows: number) => Promise<RemoteResult<void>>
44
45
  'agent:terminal/shells': (signal?: AbortSignal) => Promise<RemoteResult<TerminalShell[]>>
@@ -28,7 +28,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_create_result$schema = (
28
28
  'cwd': z.string().readonly(),
29
29
  'cols': z.number().readonly(),
30
30
  'rows': z.number().readonly(),
31
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
31
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
32
32
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
33
33
  'error': z.string().readonly().optional(),
34
34
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -65,7 +65,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_follow_result$schema = (
65
65
  'cwd': z.string().readonly(),
66
66
  'cols': z.number().readonly(),
67
67
  'rows': z.number().readonly(),
68
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
68
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
69
69
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
70
70
  'error': z.string().readonly().optional(),
71
71
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -87,7 +87,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_follow_result$schema = (
87
87
  'cwd': z.string().readonly(),
88
88
  'cols': z.number().readonly(),
89
89
  'rows': z.number().readonly(),
90
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
90
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
91
91
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
92
92
  'error': z.string().readonly().optional(),
93
93
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -107,7 +107,7 @@ const _deepseek_ai_dsh_api_terminal_controller_terminal_list_result$schema = ()
107
107
  'cwd': z.string().readonly(),
108
108
  'cols': z.number().readonly(),
109
109
  'rows': z.number().readonly(),
110
- 'state': z.union([z.literal("running"), z.literal("failed"), z.literal("exited")]).readonly(),
110
+ 'state': z.union([z.literal("failed"), z.literal("running"), z.literal("exited")]).readonly(),
111
111
  'exitCode': z.union([z.literal(null), z.number()]).readonly(),
112
112
  'error': z.string().readonly().optional(),
113
113
  'controllerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-api-terminal-controller",
3
3
  "description": "Session-owned interactive terminals with shell discovery, screen recovery and typed Remote control",
4
- "version": "0.1.6-alpha.2",
4
+ "version": "0.1.7-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -53,29 +53,30 @@
53
53
  "@xterm/headless": "^6.0.0",
54
54
  "@xterm/addon-serialize": "^0.14.0",
55
55
  "zod": "^4.4.3",
56
- "@deepseek-ai/dsh-deque": "^0.1.6-alpha.2",
57
- "@deepseek-ai/dsh-lazy-require": "^0.1.6-alpha.2",
58
- "@deepseek-ai/dsh-typert-protocol": "^0.1.6-alpha.2",
59
- "@deepseek-ai/schemastery": "^3.18.2"
56
+ "@deepseek-ai/dsh-lazy-require": "0.1.7-alpha.2",
57
+ "@deepseek-ai/dsh-deque": "0.1.7-alpha.2",
58
+ "@deepseek-ai/dsh-typert-protocol": "0.1.7-alpha.2",
59
+ "@deepseek-ai/schemastery": "~3.18.4"
60
60
  },
61
61
  "peerDependencies": {
62
- "@deepseek-ai/dsh-subprocess": "^0.1.6-alpha.2",
63
- "@deepseek-ai/cordis": "^4.0.2"
62
+ "@deepseek-ai/dsh-subprocess": "0.1.7-alpha.2",
63
+ "@deepseek-ai/cordis": "~4.0.4"
64
64
  },
65
65
  "devDependencies": {
66
- "@deepseek-ai/cordis": "^4.0.2",
67
- "@deepseek-ai/dsh-agent": "^0.1.6-alpha.2",
68
- "@deepseek-ai/dsh-api-gateway": "^0.1.6-alpha.2",
69
- "@deepseek-ai/dsh-brand": "^0.1.6-alpha.2",
70
- "@deepseek-ai/dsh-client-store": "^0.1.6-alpha.2",
71
- "@deepseek-ai/dsh-fs": "^0.1.6-alpha.2",
72
- "@deepseek-ai/dsh-sandbox": "^0.1.6-alpha.2",
73
- "@deepseek-ai/dsh-sandbox-policy": "^0.1.6-alpha.2",
74
- "@deepseek-ai/dsh-session-projection": "^0.1.6-alpha.2",
75
- "@deepseek-ai/dsh-subprocess": "^0.1.6-alpha.2",
76
- "@deepseek-ai/dsh-subprocess-local": "^0.1.6-alpha.2",
77
- "@deepseek-ai/dsh-util-crypto": "^0.1.6-alpha.2",
78
- "@deepseek-ai/dsh-session": "^0.1.6-alpha.2"
66
+ "@deepseek-ai/cordis": "~4.0.4",
67
+ "@deepseek-ai/dsh-agent": "0.1.7-alpha.2",
68
+ "@deepseek-ai/dsh-brand": "0.1.7-alpha.2",
69
+ "@deepseek-ai/dsh-api-gateway": "0.1.7-alpha.2",
70
+ "@deepseek-ai/dsh-client-store": "0.1.7-alpha.2",
71
+ "@deepseek-ai/dsh-fs": "0.1.7-alpha.2",
72
+ "@deepseek-ai/dsh-remote-mock": "0.1.7-alpha.2",
73
+ "@deepseek-ai/dsh-sandbox": "0.1.7-alpha.2",
74
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.7-alpha.2",
75
+ "@deepseek-ai/dsh-session": "0.1.7-alpha.2",
76
+ "@deepseek-ai/dsh-session-projection": "0.1.7-alpha.2",
77
+ "@deepseek-ai/dsh-subprocess": "0.1.7-alpha.2",
78
+ "@deepseek-ai/dsh-subprocess-local": "0.1.7-alpha.2",
79
+ "@deepseek-ai/dsh-util-crypto": "0.1.7-alpha.2"
79
80
  },
80
81
  "files": [
81
82
  "lib/index.js",