本附录收录 Claude Code 源码中的核心 TypeScript 类型定义,提供快速索引和概览。
详细说明和设计原理请参考对应章节。类型定义文件位于 src/types/ 目录。
| 类型名称 | 定义文件 | 用途说明 |
Tool | src/Tool.ts | 工具接口定义,包含 name、call、inputSchema、checkPermissions 等核心方法 |
Tools | src/Tool.ts | 工具集合类型 readonly Tool[] |
ToolDef | src/Tool.ts | 工具定义输入类型,用于 buildTool() 函数 |
ToolResult<T> | src/Tool.ts | 工具执行结果包装器 |
ToolUseContext | src/Tool.ts | 工具执行上下文,包含 messages、abortController、permissionContext 等 |
ToolProgress<P> | src/Tool.ts | 工具进度消息类型 |
ToolInputJSONSchema | src/Tool.ts | JSON Schema 格式的工具输入定义 |
PermissionResult | src/types/permissions.ts | 权限检查结果类型 |
PermissionDecision | src/types/permissions.ts | 权限决策类型(allow/ask/deny) |
| 类型名称 | 定义文件 | 用途说明 |
Command | src/types/command.ts | 斜杠命令类型,合并 CommandBase 与三种命令实现 |
PromptCommand | src/types/command.ts | Prompt 类型命令,包含 getPromptForCommand 方法 |
LocalCommand | src/types/command.ts | 本地命令类型,包含 load() 懒加载 |
LocalJSXCommand | src/types/command.ts | JSX 命令类型,用于交互式 UI 命令 |
CommandBase | src/types/command.ts | 命令基础属性(name、description、isEnabled 等) |
BundledSkillDefinition | src/skills/bundledSkills.ts | 内置 Skill 定义,包含 name、description、getPromptForCommand 等 |
CommandAvailability | src/types/command.ts | 命令可用性约束类型('claude-ai' | 'console') |
| 类型名称 | 定义文件 | 用途说明 |
QueryEngineConfig | src/QueryEngine.ts | QueryEngine 配置,包含 cwd、tools、mcpClients、agents 等 |
QueryChainTracking | src/Tool.ts | 查询链追踪信息(chainId、depth) |
ValidationResult | src/Tool.ts | 输入验证结果类型 |
CompactProgressEvent | src/Tool.ts | 压缩进度事件类型 |
| 类型名称 | 定义文件 | 用途说明 |
SessionId | src/types/ids.ts | 会话 ID 品牌类型,防止与其他 ID 混淆 |
AgentId | src/types/ids.ts | Agent ID 品牌类型,用于子 Agent 标识 |
LogOption | src/types/logs.ts | 会话日志选项,包含 date、messages、sessionId 等 |
SerializedMessage | src/types/logs.ts | 序列化消息类型,用于日志存储 |
TranscriptMessage | src/types/logs.ts | 转录消息类型,包含 parentUuid、isSidechain 等 |
PersistedWorktreeSession | src/types/logs.ts | Worktree 会话持久化数据 |
| 类型名称 | 定义文件 | 用途说明 |
BridgeConfig | src/bridge/types.ts | Bridge 配置,包含 dir、machineName、spawnMode 等 |
WorkResponse | src/bridge/types.ts | 工作响应类型,包含 id、environment_id、state、secret |
WorkSecret | src/bridge/types.ts | 工作密钥类型,包含 session_ingress_token、api_base_url |
SessionHandle | src/bridge/types.ts | 会话句柄,包含 sessionId、done、kill、activities |
SessionActivity | src/bridge/types.ts | 会话活动类型(tool_start、text、result、error) |
SpawnMode | src/bridge/types.ts | 会话启动模式(single-session、worktree、same-dir) |
BridgeWorkerType | src/bridge/types.ts | Bridge 工作类型(claude_code、claude_code_assistant) |
| 类型名称 | 定义文件 | 用途说明 |
PluginManifest | src/types/plugin.ts | 插件清单定义 |
LoadedPlugin | src/types/plugin.ts | 已加载插件类型,包含 manifest、path、enabled 等 |
PluginError | src/types/plugin.ts | 插件错误联合类型,包含 20+ 种具体错误类型 |
PluginLoadResult | src/types/plugin.ts | 插件加载结果(enabled、disabled、errors) |
PluginRepository | src/types/plugin.ts | 插件仓库配置 |
BuiltinPluginDefinition | src/types/plugin.ts | 内置插件定义 |
| 类型名称 | 定义文件 | 用途说明 |
PermissionMode | src/types/permissions.ts | 权限模式(default、acceptEdits、bypassPermissions 等) |
PermissionBehavior | src/types/permissions.ts | 权限行为(allow、deny、ask) |
PermissionRule | src/types/permissions.ts | 权限规则,包含 source、ruleBehavior、ruleValue |
PermissionUpdate | src/types/permissions.ts | 权限更新操作类型 |
PermissionDecisionReason | src/types/permissions.ts | 权限决策原因类型 |
ClassifierResult | src/types/permissions.ts | 分类器结果类型 |
YoloClassifierResult | src/types/permissions.ts | Auto Mode 分类器结果 |
ToolPermissionContext | src/types/permissions.ts | 工具权限上下文 |
| 类型名称 | 定义文件 | 用途说明 |
HookCallback | src/types/hooks.ts | Hook 回调类型 |
HookResult | src/types/hooks.ts | Hook 执行结果 |
AggregatedHookResult | src/types/hooks.ts | 聚合 Hook 结果 |
HookProgress | src/types/hooks.ts | Hook 进度消息 |
PromptRequest | src/types/hooks.ts | Prompt 请求类型 |
PromptResponse | src/types/hooks.ts | Prompt 响应类型 |
PermissionRequestResult | src/types/hooks.ts | 权限请求结果 |
| 类型名称 | 定义文件 | 用途说明 |
BaseTextInputProps | src/types/textInputTypes.ts | 文本输入基础属性 |
VimTextInputProps | src/types/textInputTypes.ts | Vim 模式输入属性 |
TextInputState | src/types/textInputTypes.ts | 文本输入状态 |
VimMode | src/types/textInputTypes.ts | Vim 模式(INSERT、NORMAL) |
PromptInputMode | src/types/textInputTypes.ts | Prompt 输入模式 |
QueuePriority | src/types/textInputTypes.ts | 队列优先级(now、next、later) |
QueuedCommand | src/types/textInputTypes.ts | 队列命令类型 |
OrphanedPermission | src/types/textInputTypes.ts | 孤立权限类型 |
| 类型名称 | 定义文件 | 用途说明 |
ConnectorTextBlock | src/types/connectorText.ts | Connector 文本块类型 |
ConnectorTextDelta | src/types/connectorText.ts | Connector 文本增量类型 |
graph TB
subgraph "核心类型体系"
Tool[Tool<br/>工具接口]
Tools[Tools<br/>工具集合]
ToolDef[ToolDef<br/>工具定义]
ToolDef -->|buildTool| Tool
Tool -->|组成| Tools
end
subgraph "权限类型体系"
PermissionMode[PermissionMode<br/>权限模式]
PermissionBehavior[PermissionBehavior<br/>权限行为]
PermissionRule[PermissionRule<br/>权限规则]
PermissionDecision[PermissionDecision<br/>权限决策]
PermissionResult[PermissionResult<br/>权限结果]
PermissionMode --> PermissionDecision
PermissionBehavior --> PermissionRule
PermissionRule --> PermissionDecision
PermissionDecision --> PermissionResult
end
subgraph "命令类型体系"
CommandBase[CommandBase<br/>命令基础]
Command[Command<br/>命令联合]
PromptCommand[PromptCommand<br/>Prompt 命令]
LocalCommand[LocalCommand<br/>本地命令]
LocalJSXCommand[LocalJSXCommand<br/>JSX 命令]
CommandBase --> Command
PromptCommand --> Command
LocalCommand --> Command
LocalJSXCommand --> Command
end
subgraph "会话类型体系"
SessionId[SessionId<br/>会话 ID]
AgentId[AgentId<br/>Agent ID]
LogOption[LogOption<br/>日志选项]
SerializedMessage[SerializedMessage<br/>序列化消息]
SessionId --> LogOption
AgentId --> SerializedMessage
end
subgraph "Bridge 类型体系"
BridgeConfig[BridgeConfig<br/>Bridge 配置]
WorkResponse[WorkResponse<br/>工作响应]
SessionHandle[SessionHandle<br/>会话句柄]
SpawnMode[SpawnMode<br/>启动模式]
BridgeConfig --> SessionHandle
WorkResponse --> SessionHandle
SpawnMode --> BridgeConfig
end
subgraph "插件类型体系"
PluginManifest[PluginManifest<br/>插件清单]
LoadedPlugin[LoadedPlugin<br/>已加载插件]
PluginError[PluginError<br/>插件错误]
PluginLoadResult[PluginLoadResult<br/>加载结果]
PluginManifest --> LoadedPlugin
LoadedPlugin --> PluginLoadResult
PluginError --> PluginLoadResult
end
Tool --> PermissionResult
ToolUseContext --> Tool
ToolUseContext --> PermissionMode
Command --> ToolUseContext
QueryEngine --> ToolUseContext
QueryEngine --> Tools
QueryEngine --> Command
BridgeConfig --> SessionId
HookResult --> PermissionDecision
BundledSkillDefinition --> Command
type Tool<
Input extends AnyObject = AnyObject,
Output = unknown,
P extends ToolProgressData = ToolProgressData,
> = {
readonly name: string;
aliases?: string[];
readonly inputSchema: Input;
call(args, context, canUseTool, parentMessage, onProgress): Promise<ToolResult<Output>>;
description(input, options): Promise<string>;
checkPermissions(input, context): Promise<PermissionResult>;
isEnabled(): boolean;
isConcurrencySafe(input): boolean;
isReadOnly(input): boolean;
isDestructive?(input): boolean;
userFacingName(input): string;
prompt(options): Promise<string>;
// ... 渲染方法
};
type Command = CommandBase &
(PromptCommand | LocalCommand | LocalJSXCommand);
type CommandBase = {
name: string;
description: string;
availability?: CommandAvailability[];
isEnabled?: () => boolean;
isHidden?: boolean;
aliases?: string[];
argumentHint?: string;
whenToUse?: string;
version?: string;
disableModelInvocation?: boolean;
userInvocable?: boolean;
loadedFrom?: 'skills' | 'plugin' | 'managed' | 'bundled' | 'mcp';
// ...
};
type PermissionResult<Input = { [key: string]: unknown }> =
| PermissionDecision<Input>
| {
behavior: 'passthrough';
message: string;
decisionReason?: PermissionDecision<Input>['decisionReason'];
suggestions?: PermissionUpdate[];
blockedPath?: string;
pendingClassifierCheck?: PendingClassifierCheck;
};
type PermissionDecision<Input> =
| PermissionAllowDecision<Input>
| PermissionAskDecision<Input>
| PermissionDenyDecision;
type QueryEngineConfig = {
cwd: string;
tools: Tools;
commands: Command[];
mcpClients: MCPServerConnection[];
agents: AgentDefinition[];
canUseTool: CanUseToolFn;
getAppState: () => AppState;
setAppState: (f: (prev: AppState) => AppState) => void;
initialMessages?: Message[];
readFileCache: FileStateCache;
customSystemPrompt?: string;
appendSystemPrompt?: string;
userSpecifiedModel?: string;
thinkingConfig?: ThinkingConfig;
maxTurns?: number;
maxBudgetUsd?: number;
// ...
};
品牌类型(Branded Types)如 SessionId 和 AgentId 使用 TypeScript 的类型品牌机制,在编译时防止不同类型 ID 的混淆,提高代码安全性。