From 097bc753f05a082e5a30ca515aa201380a98c032 Mon Sep 17 00:00:00 2001 From: YoVinchen Date: Fri, 3 Apr 2026 13:38:47 +0800 Subject: [PATCH] refactor: strengthen sdk control and settings types --- src/entrypoints/sdk/controlTypes.js | 7 +- src/entrypoints/sdk/controlTypes.ts | 105 ++++++++++++++++-- .../sdk/settingsTypes.generated.ts | 14 ++- 3 files changed, 113 insertions(+), 13 deletions(-) diff --git a/src/entrypoints/sdk/controlTypes.js b/src/entrypoints/sdk/controlTypes.js index 9a7e917..bdfb5a7 100644 --- a/src/entrypoints/sdk/controlTypes.js +++ b/src/entrypoints/sdk/controlTypes.js @@ -1,4 +1,3 @@ -export { - SDKControlRequest, - SDKControlResponse, -} from './controlTypes.ts' +export class SDKControlRequest {} + +export class SDKControlResponse {} diff --git a/src/entrypoints/sdk/controlTypes.ts b/src/entrypoints/sdk/controlTypes.ts index 642d9f1..24206c3 100644 --- a/src/entrypoints/sdk/controlTypes.ts +++ b/src/entrypoints/sdk/controlTypes.ts @@ -1,14 +1,103 @@ -export type SDKControlRequest = Record & { - subtype?: string +import type { SDKMessage } from './coreTypes.ts' + +export type SDKPermissionResponse = + | { + behavior: 'allow' + updatedInput?: Record + message?: string + } + | { + behavior: 'deny' | 'ask' + message?: string + updatedInput?: Record + } + +export type SDKControlInterruptRequest = { + subtype: 'interrupt' } -export type SDKControlResponse = Record & { - type?: string - subtype?: string +export type SDKControlPermissionRequest = { + subtype: 'can_use_tool' + tool_name: string + input: Record + permission_suggestions?: Array> + blocked_path?: string + decision_reason?: string + title?: string + display_name?: string + tool_use_id: string + agent_id?: string + description?: string } -export type StdoutMessage = SDKControlResponse +export type SDKControlRequestInner = + | SDKControlInterruptRequest + | SDKControlPermissionRequest + | ({ + subtype: string + } & Record) -export class SDKControlRequest {} +export type SDKControlRequest = { + type: 'control_request' + request_id: string + request: SDKControlRequestInner +} -export class SDKControlResponse {} +export type SDKControlSuccessResponse = { + subtype: 'success' + request_id: string + response?: SDKPermissionResponse | Record +} + +export type SDKControlErrorResponse = { + subtype: 'error' + request_id: string + error: string +} + +export type SDKControlResponseInner = + | SDKControlSuccessResponse + | SDKControlErrorResponse + | ({ + subtype: string + request_id: string + } & Record) + +export type SDKControlResponse = { + type: 'control_response' + response: SDKControlResponseInner +} + +export type SDKControlCancelRequest = { + type: 'control_cancel_request' + request_id: string + tool_use_id?: string +} + +export type KeepAliveMessage = { + type: 'keep_alive' + [key: string]: unknown +} + +export type SDKStreamlinedTextMessage = { + type: 'streamlined_text' + text: string + session_id?: string + uuid?: string +} + +export type SDKStreamlinedToolUseSummaryMessage = { + type: 'streamlined_tool_use_summary' + tool_summary: string + session_id?: string + uuid?: string +} + +export type StdoutMessage = + | SDKMessage + | SDKControlRequest + | SDKControlResponse + | SDKControlCancelRequest + | KeepAliveMessage + | SDKStreamlinedTextMessage + | SDKStreamlinedToolUseSummaryMessage diff --git a/src/entrypoints/sdk/settingsTypes.generated.ts b/src/entrypoints/sdk/settingsTypes.generated.ts index 7425b4b..d7284bb 100644 --- a/src/entrypoints/sdk/settingsTypes.generated.ts +++ b/src/entrypoints/sdk/settingsTypes.generated.ts @@ -1 +1,13 @@ -export type Settings = Record +export type SettingsValue = + | string + | number + | boolean + | null + | SettingsObject + | SettingsValue[] + +export type SettingsObject = { + [key: string]: SettingsValue +} + +export type Settings = SettingsObject