Add IPC types to roo-code.d.ts (#3568)

This commit is contained in:
Chris Estreich 2025-05-13 12:40:19 -07:00 committed by GitHub
parent 836bbf75d0
commit 8def83192d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 2104 additions and 157 deletions

View file

@ -1,9 +1,11 @@
import fs from "fs/promises"
import path from "path"
import fs from "fs"
import { zodToTs, createTypeAlias, printNode } from "zod-to-ts"
import { $ } from "execa"
import schemas from "../src/schemas"
const { typeDefinitions } = schemas
async function main() {
@ -16,12 +18,16 @@ async function main() {
types.push(`export type { ${identifier} }`)
}
await fs.writeFile("src/exports/types.ts", types.join("\n\n"))
fs.writeFileSync("src/exports/types.ts", types.join("\n\n"))
await $`npx tsup src/exports/interface.ts --dts-only -d out`
await fs.copyFile('out/interface.d.ts', 'src/exports/roo-code.d.ts')
fs.writeFileSync("out/interface.d.ts", "src/exports/roo-code.d.ts")
await $`npx prettier --write src/exports/types.ts src/exports/roo-code.d.ts`
if (fs.existsSync(path.join("..", "Roo-Code-Types"))) {
fs.copyFileSync("src/exports/roo-code.d.ts", path.join("..", "Roo-Code-Types", "index.d.ts"))
}
}
main()

View file

@ -14,7 +14,7 @@ import {
ProviderSettingsEntry,
isSecretStateKey,
} from "../schemas"
import { IpcOrigin, IpcMessageType, TaskCommandName, TaskEvent } from "../schemas/ipc"
import { IpcOrigin, IpcMessageType, TaskCommandName, TaskEvent } from "../schemas"
import { RooCodeAPI } from "./interface"
import { IpcServer } from "./ipc"

View file

@ -1,4 +1,9 @@
import { EventEmitter } from "events"
import { Socket } from "node:net"
/**
* Types
*/
import type {
GlobalSettings,
@ -7,22 +12,36 @@ import type {
ClineMessage,
TokenUsage,
RooCodeEvents,
IpcMessage,
TaskCommand,
TaskEvent,
} from "./types"
export type {
RooCodeSettings,
GlobalSettings,
ProviderSettings,
ProviderSettingsEntry,
ClineMessage,
TokenUsage,
RooCodeEvents,
IpcMessage,
TaskCommand,
TaskEvent,
}
import { RooCodeEventName } from "../schemas"
export type { RooCodeEventName }
/**
* Enums
*/
type RooCodeSettings = GlobalSettings & ProviderSettings
import { RooCodeEventName, IpcOrigin, IpcMessageType } from "../schemas"
export { RooCodeEventName, IpcOrigin, IpcMessageType }
/**
* RooCodeAPI
*/
export type RooCodeSettings = GlobalSettings & ProviderSettings
export interface RooCodeAPI extends EventEmitter<RooCodeEvents> {
/**
@ -169,3 +188,26 @@ export interface RooCodeAPI extends EventEmitter<RooCodeEvents> {
*/
setActiveProfile(name: string): Promise<string | undefined>
}
/**
* RooCodeIpcServer
*/
export type IpcServerEvents = {
[IpcMessageType.Connect]: [clientId: string]
[IpcMessageType.Disconnect]: [clientId: string]
[IpcMessageType.TaskCommand]: [clientId: string, data: TaskCommand]
[IpcMessageType.TaskEvent]: [relayClientId: string | undefined, data: TaskEvent]
}
export interface RooCodeIpcServer extends EventEmitter<IpcServerEvents> {
listen(): void
broadcast(message: IpcMessage): void
send(client: string | Socket, message: IpcMessage): void
get socketPath(): string
get isListening(): boolean
}

View file

@ -4,20 +4,14 @@ import * as crypto from "node:crypto"
import ipc from "node-ipc"
import { IpcOrigin, IpcMessageType, IpcMessage, ipcMessageSchema, TaskCommand, TaskEvent } from "../schemas/ipc"
import { IpcOrigin, IpcMessageType, type IpcMessage, ipcMessageSchema } from "../schemas"
import type { IpcServerEvents, RooCodeIpcServer } from "./interface"
/**
* IpcServer
*/
type IpcServerEvents = {
[IpcMessageType.Connect]: [clientId: string]
[IpcMessageType.Disconnect]: [clientId: string]
[IpcMessageType.TaskCommand]: [clientId: string, data: TaskCommand]
[IpcMessageType.TaskEvent]: [relayClientId: string | undefined, data: TaskEvent]
}
export class IpcServer extends EventEmitter<IpcServerEvents> {
export class IpcServer extends EventEmitter<IpcServerEvents> implements RooCodeIpcServer {
private readonly _socketPath: string
private readonly _log: (...args: unknown[]) => void
private readonly _clients: Map<string, Socket>

File diff suppressed because it is too large Load diff

View file

@ -547,3 +547,938 @@ type RooCodeEvents = {
}
export type { RooCodeEvents }
type IpcMessage =
| {
type: "Ack"
origin: "server"
data: {
clientId: string
pid: number
ppid: number
}
}
| {
type: "TaskCommand"
origin: "client"
clientId: string
data:
| {
commandName: "StartNewTask"
data: {
configuration: {
apiProvider?:
| (
| "anthropic"
| "glama"
| "openrouter"
| "bedrock"
| "vertex"
| "openai"
| "ollama"
| "vscode-lm"
| "lmstudio"
| "gemini"
| "openai-native"
| "mistral"
| "deepseek"
| "unbound"
| "requesty"
| "human-relay"
| "fake-ai"
| "xai"
| "groq"
| "chutes"
| "litellm"
)
| undefined
includeMaxTokens?: boolean | undefined
reasoningEffort?: ("low" | "medium" | "high") | undefined
diffEnabled?: boolean | undefined
fuzzyMatchThreshold?: number | undefined
modelTemperature?: (number | null) | undefined
rateLimitSeconds?: number | undefined
modelMaxTokens?: number | undefined
modelMaxThinkingTokens?: number | undefined
apiModelId?: string | undefined
apiKey?: string | undefined
anthropicBaseUrl?: string | undefined
anthropicUseAuthToken?: boolean | undefined
glamaModelId?: string | undefined
glamaApiKey?: string | undefined
openRouterApiKey?: string | undefined
openRouterModelId?: string | undefined
openRouterBaseUrl?: string | undefined
openRouterSpecificProvider?: string | undefined
openRouterUseMiddleOutTransform?: boolean | undefined
awsAccessKey?: string | undefined
awsSecretKey?: string | undefined
awsSessionToken?: string | undefined
awsRegion?: string | undefined
awsUseCrossRegionInference?: boolean | undefined
awsUsePromptCache?: boolean | undefined
awsProfile?: string | undefined
awsUseProfile?: boolean | undefined
awsCustomArn?: string | undefined
vertexKeyFile?: string | undefined
vertexJsonCredentials?: string | undefined
vertexProjectId?: string | undefined
vertexRegion?: string | undefined
openAiBaseUrl?: string | undefined
openAiApiKey?: string | undefined
openAiLegacyFormat?: boolean | undefined
openAiR1FormatEnabled?: boolean | undefined
openAiModelId?: string | undefined
openAiCustomModelInfo?:
| ({
maxTokens?: (number | null) | undefined
maxThinkingTokens?: (number | null) | undefined
contextWindow: number
supportsImages?: boolean | undefined
supportsComputerUse?: boolean | undefined
supportsPromptCache: boolean
inputPrice?: number | undefined
outputPrice?: number | undefined
cacheWritesPrice?: number | undefined
cacheReadsPrice?: number | undefined
description?: string | undefined
reasoningEffort?: ("low" | "medium" | "high") | undefined
thinking?: boolean | undefined
minTokensPerCachePoint?: number | undefined
maxCachePoints?: number | undefined
cachableFields?: string[] | undefined
tiers?:
| {
contextWindow: number
inputPrice?: number | undefined
outputPrice?: number | undefined
cacheWritesPrice?: number | undefined
cacheReadsPrice?: number | undefined
}[]
| undefined
} | null)
| undefined
openAiUseAzure?: boolean | undefined
azureApiVersion?: string | undefined
openAiStreamingEnabled?: boolean | undefined
enableReasoningEffort?: boolean | undefined
openAiHostHeader?: string | undefined
openAiHeaders?:
| {
[x: string]: string
}
| undefined
ollamaModelId?: string | undefined
ollamaBaseUrl?: string | undefined
vsCodeLmModelSelector?:
| {
vendor?: string | undefined
family?: string | undefined
version?: string | undefined
id?: string | undefined
}
| undefined
lmStudioModelId?: string | undefined
lmStudioBaseUrl?: string | undefined
lmStudioDraftModelId?: string | undefined
lmStudioSpeculativeDecodingEnabled?: boolean | undefined
geminiApiKey?: string | undefined
googleGeminiBaseUrl?: string | undefined
openAiNativeApiKey?: string | undefined
openAiNativeBaseUrl?: string | undefined
mistralApiKey?: string | undefined
mistralCodestralUrl?: string | undefined
deepSeekBaseUrl?: string | undefined
deepSeekApiKey?: string | undefined
unboundApiKey?: string | undefined
unboundModelId?: string | undefined
requestyApiKey?: string | undefined
requestyModelId?: string | undefined
fakeAi?: unknown | undefined
xaiApiKey?: string | undefined
groqApiKey?: string | undefined
chutesApiKey?: string | undefined
litellmBaseUrl?: string | undefined
litellmApiKey?: string | undefined
litellmModelId?: string | undefined
currentApiConfigName?: string | undefined
listApiConfigMeta?:
| {
id: string
name: string
apiProvider?:
| (
| "anthropic"
| "glama"
| "openrouter"
| "bedrock"
| "vertex"
| "openai"
| "ollama"
| "vscode-lm"
| "lmstudio"
| "gemini"
| "openai-native"
| "mistral"
| "deepseek"
| "unbound"
| "requesty"
| "human-relay"
| "fake-ai"
| "xai"
| "groq"
| "chutes"
| "litellm"
)
| undefined
}[]
| undefined
pinnedApiConfigs?:
| {
[x: string]: boolean
}
| undefined
lastShownAnnouncementId?: string | undefined
customInstructions?: string | undefined
taskHistory?:
| {
id: string
number: number
ts: number
task: string
tokensIn: number
tokensOut: number
cacheWrites?: number | undefined
cacheReads?: number | undefined
totalCost: number
size?: number | undefined
workspace?: string | undefined
}[]
| undefined
autoApprovalEnabled?: boolean | undefined
alwaysAllowReadOnly?: boolean | undefined
alwaysAllowReadOnlyOutsideWorkspace?: boolean | undefined
alwaysAllowWrite?: boolean | undefined
alwaysAllowWriteOutsideWorkspace?: boolean | undefined
writeDelayMs?: number | undefined
alwaysAllowBrowser?: boolean | undefined
alwaysApproveResubmit?: boolean | undefined
requestDelaySeconds?: number | undefined
alwaysAllowMcp?: boolean | undefined
alwaysAllowModeSwitch?: boolean | undefined
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
remoteBrowserEnabled?: boolean | undefined
remoteBrowserHost?: string | undefined
cachedChromeHostUrl?: string | undefined
enableCheckpoints?: boolean | undefined
ttsEnabled?: boolean | undefined
ttsSpeed?: number | undefined
soundEnabled?: boolean | undefined
soundVolume?: number | undefined
maxOpenTabsContext?: number | undefined
maxWorkspaceFiles?: number | undefined
showRooIgnoredFiles?: boolean | undefined
maxReadFileLine?: number | undefined
terminalOutputLineLimit?: number | undefined
terminalShellIntegrationTimeout?: number | undefined
terminalShellIntegrationDisabled?: boolean | undefined
terminalCommandDelay?: number | undefined
terminalPowershellCounter?: boolean | undefined
terminalZshClearEolMark?: boolean | undefined
terminalZshOhMy?: boolean | undefined
terminalZshP10k?: boolean | undefined
terminalZdotdir?: boolean | undefined
terminalCompressProgressBar?: boolean | undefined
experiments?:
| {
powerSteering: boolean
}
| undefined
language?:
| (
| "ca"
| "de"
| "en"
| "es"
| "fr"
| "hi"
| "it"
| "ja"
| "ko"
| "nl"
| "pl"
| "pt-BR"
| "ru"
| "tr"
| "vi"
| "zh-CN"
| "zh-TW"
)
| undefined
telemetrySetting?: ("unset" | "enabled" | "disabled") | undefined
mcpEnabled?: boolean | undefined
enableMcpServerCreation?: boolean | undefined
mode?: string | undefined
modeApiConfigs?:
| {
[x: string]: string
}
| undefined
customModes?:
| {
slug: string
name: string
roleDefinition: string
customInstructions?: string | undefined
groups: (
| ("read" | "edit" | "browser" | "command" | "mcp" | "modes")
| [
"read" | "edit" | "browser" | "command" | "mcp" | "modes",
{
fileRegex?: string | undefined
description?: string | undefined
},
]
)[]
source?: ("global" | "project") | undefined
}[]
| undefined
customModePrompts?:
| {
[x: string]:
| {
roleDefinition?: string | undefined
customInstructions?: string | undefined
}
| undefined
}
| undefined
customSupportPrompts?:
| {
[x: string]: string | undefined
}
| undefined
enhancementApiConfigId?: string | undefined
historyPreviewCollapsed?: boolean | undefined
}
text: string
images?: string[] | undefined
newTab?: boolean | undefined
}
}
| {
commandName: "CancelTask"
data: string
}
| {
commandName: "CloseTask"
data: string
}
}
| {
type: "TaskEvent"
origin: "server"
relayClientId?: string | undefined
data:
| {
eventName: "message"
payload: [
{
taskId: string
action: "created" | "updated"
message: {
ts: number
type: "ask" | "say"
ask?:
| (
| "followup"
| "command"
| "command_output"
| "completion_result"
| "tool"
| "api_req_failed"
| "resume_task"
| "resume_completed_task"
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
)
| undefined
say?:
| (
| "error"
| "api_req_started"
| "api_req_finished"
| "api_req_retried"
| "api_req_retry_delayed"
| "api_req_deleted"
| "text"
| "reasoning"
| "completion_result"
| "user_feedback"
| "user_feedback_diff"
| "command_output"
| "shell_integration_warning"
| "browser_action"
| "browser_action_result"
| "mcp_server_request_started"
| "mcp_server_response"
| "subtask_result"
| "checkpoint_saved"
| "rooignore_error"
| "diff_error"
)
| undefined
text?: string | undefined
images?: string[] | undefined
partial?: boolean | undefined
reasoning?: string | undefined
conversationHistoryIndex?: number | undefined
checkpoint?:
| {
[x: string]: unknown
}
| undefined
progressStatus?:
| {
icon?: string | undefined
text?: string | undefined
}
| undefined
}
},
]
}
| {
eventName: "taskCreated"
payload: [string]
}
| {
eventName: "taskStarted"
payload: [string]
}
| {
eventName: "taskModeSwitched"
payload: [string, string]
}
| {
eventName: "taskPaused"
payload: [string]
}
| {
eventName: "taskUnpaused"
payload: [string]
}
| {
eventName: "taskAskResponded"
payload: [string]
}
| {
eventName: "taskAborted"
payload: [string]
}
| {
eventName: "taskSpawned"
payload: [string, string]
}
| {
eventName: "taskCompleted"
payload: [
string,
{
totalTokensIn: number
totalTokensOut: number
totalCacheWrites?: number | undefined
totalCacheReads?: number | undefined
totalCost: number
contextTokens: number
},
{
[x: string]: {
attempts: number
failures: number
}
},
]
}
| {
eventName: "taskTokenUsageUpdated"
payload: [
string,
{
totalTokensIn: number
totalTokensOut: number
totalCacheWrites?: number | undefined
totalCacheReads?: number | undefined
totalCost: number
contextTokens: number
},
]
}
}
export type { IpcMessage }
type TaskCommand =
| {
commandName: "StartNewTask"
data: {
configuration: {
apiProvider?:
| (
| "anthropic"
| "glama"
| "openrouter"
| "bedrock"
| "vertex"
| "openai"
| "ollama"
| "vscode-lm"
| "lmstudio"
| "gemini"
| "openai-native"
| "mistral"
| "deepseek"
| "unbound"
| "requesty"
| "human-relay"
| "fake-ai"
| "xai"
| "groq"
| "chutes"
| "litellm"
)
| undefined
includeMaxTokens?: boolean | undefined
reasoningEffort?: ("low" | "medium" | "high") | undefined
diffEnabled?: boolean | undefined
fuzzyMatchThreshold?: number | undefined
modelTemperature?: (number | null) | undefined
rateLimitSeconds?: number | undefined
modelMaxTokens?: number | undefined
modelMaxThinkingTokens?: number | undefined
apiModelId?: string | undefined
apiKey?: string | undefined
anthropicBaseUrl?: string | undefined
anthropicUseAuthToken?: boolean | undefined
glamaModelId?: string | undefined
glamaApiKey?: string | undefined
openRouterApiKey?: string | undefined
openRouterModelId?: string | undefined
openRouterBaseUrl?: string | undefined
openRouterSpecificProvider?: string | undefined
openRouterUseMiddleOutTransform?: boolean | undefined
awsAccessKey?: string | undefined
awsSecretKey?: string | undefined
awsSessionToken?: string | undefined
awsRegion?: string | undefined
awsUseCrossRegionInference?: boolean | undefined
awsUsePromptCache?: boolean | undefined
awsProfile?: string | undefined
awsUseProfile?: boolean | undefined
awsCustomArn?: string | undefined
vertexKeyFile?: string | undefined
vertexJsonCredentials?: string | undefined
vertexProjectId?: string | undefined
vertexRegion?: string | undefined
openAiBaseUrl?: string | undefined
openAiApiKey?: string | undefined
openAiLegacyFormat?: boolean | undefined
openAiR1FormatEnabled?: boolean | undefined
openAiModelId?: string | undefined
openAiCustomModelInfo?:
| ({
maxTokens?: (number | null) | undefined
maxThinkingTokens?: (number | null) | undefined
contextWindow: number
supportsImages?: boolean | undefined
supportsComputerUse?: boolean | undefined
supportsPromptCache: boolean
inputPrice?: number | undefined
outputPrice?: number | undefined
cacheWritesPrice?: number | undefined
cacheReadsPrice?: number | undefined
description?: string | undefined
reasoningEffort?: ("low" | "medium" | "high") | undefined
thinking?: boolean | undefined
minTokensPerCachePoint?: number | undefined
maxCachePoints?: number | undefined
cachableFields?: string[] | undefined
tiers?:
| {
contextWindow: number
inputPrice?: number | undefined
outputPrice?: number | undefined
cacheWritesPrice?: number | undefined
cacheReadsPrice?: number | undefined
}[]
| undefined
} | null)
| undefined
openAiUseAzure?: boolean | undefined
azureApiVersion?: string | undefined
openAiStreamingEnabled?: boolean | undefined
enableReasoningEffort?: boolean | undefined
openAiHostHeader?: string | undefined
openAiHeaders?:
| {
[x: string]: string
}
| undefined
ollamaModelId?: string | undefined
ollamaBaseUrl?: string | undefined
vsCodeLmModelSelector?:
| {
vendor?: string | undefined
family?: string | undefined
version?: string | undefined
id?: string | undefined
}
| undefined
lmStudioModelId?: string | undefined
lmStudioBaseUrl?: string | undefined
lmStudioDraftModelId?: string | undefined
lmStudioSpeculativeDecodingEnabled?: boolean | undefined
geminiApiKey?: string | undefined
googleGeminiBaseUrl?: string | undefined
openAiNativeApiKey?: string | undefined
openAiNativeBaseUrl?: string | undefined
mistralApiKey?: string | undefined
mistralCodestralUrl?: string | undefined
deepSeekBaseUrl?: string | undefined
deepSeekApiKey?: string | undefined
unboundApiKey?: string | undefined
unboundModelId?: string | undefined
requestyApiKey?: string | undefined
requestyModelId?: string | undefined
fakeAi?: unknown | undefined
xaiApiKey?: string | undefined
groqApiKey?: string | undefined
chutesApiKey?: string | undefined
litellmBaseUrl?: string | undefined
litellmApiKey?: string | undefined
litellmModelId?: string | undefined
currentApiConfigName?: string | undefined
listApiConfigMeta?:
| {
id: string
name: string
apiProvider?:
| (
| "anthropic"
| "glama"
| "openrouter"
| "bedrock"
| "vertex"
| "openai"
| "ollama"
| "vscode-lm"
| "lmstudio"
| "gemini"
| "openai-native"
| "mistral"
| "deepseek"
| "unbound"
| "requesty"
| "human-relay"
| "fake-ai"
| "xai"
| "groq"
| "chutes"
| "litellm"
)
| undefined
}[]
| undefined
pinnedApiConfigs?:
| {
[x: string]: boolean
}
| undefined
lastShownAnnouncementId?: string | undefined
customInstructions?: string | undefined
taskHistory?:
| {
id: string
number: number
ts: number
task: string
tokensIn: number
tokensOut: number
cacheWrites?: number | undefined
cacheReads?: number | undefined
totalCost: number
size?: number | undefined
workspace?: string | undefined
}[]
| undefined
autoApprovalEnabled?: boolean | undefined
alwaysAllowReadOnly?: boolean | undefined
alwaysAllowReadOnlyOutsideWorkspace?: boolean | undefined
alwaysAllowWrite?: boolean | undefined
alwaysAllowWriteOutsideWorkspace?: boolean | undefined
writeDelayMs?: number | undefined
alwaysAllowBrowser?: boolean | undefined
alwaysApproveResubmit?: boolean | undefined
requestDelaySeconds?: number | undefined
alwaysAllowMcp?: boolean | undefined
alwaysAllowModeSwitch?: boolean | undefined
alwaysAllowSubtasks?: boolean | undefined
alwaysAllowExecute?: boolean | undefined
allowedCommands?: string[] | undefined
browserToolEnabled?: boolean | undefined
browserViewportSize?: string | undefined
screenshotQuality?: number | undefined
remoteBrowserEnabled?: boolean | undefined
remoteBrowserHost?: string | undefined
cachedChromeHostUrl?: string | undefined
enableCheckpoints?: boolean | undefined
ttsEnabled?: boolean | undefined
ttsSpeed?: number | undefined
soundEnabled?: boolean | undefined
soundVolume?: number | undefined
maxOpenTabsContext?: number | undefined
maxWorkspaceFiles?: number | undefined
showRooIgnoredFiles?: boolean | undefined
maxReadFileLine?: number | undefined
terminalOutputLineLimit?: number | undefined
terminalShellIntegrationTimeout?: number | undefined
terminalShellIntegrationDisabled?: boolean | undefined
terminalCommandDelay?: number | undefined
terminalPowershellCounter?: boolean | undefined
terminalZshClearEolMark?: boolean | undefined
terminalZshOhMy?: boolean | undefined
terminalZshP10k?: boolean | undefined
terminalZdotdir?: boolean | undefined
terminalCompressProgressBar?: boolean | undefined
experiments?:
| {
powerSteering: boolean
}
| undefined
language?:
| (
| "ca"
| "de"
| "en"
| "es"
| "fr"
| "hi"
| "it"
| "ja"
| "ko"
| "nl"
| "pl"
| "pt-BR"
| "ru"
| "tr"
| "vi"
| "zh-CN"
| "zh-TW"
)
| undefined
telemetrySetting?: ("unset" | "enabled" | "disabled") | undefined
mcpEnabled?: boolean | undefined
enableMcpServerCreation?: boolean | undefined
mode?: string | undefined
modeApiConfigs?:
| {
[x: string]: string
}
| undefined
customModes?:
| {
slug: string
name: string
roleDefinition: string
customInstructions?: string | undefined
groups: (
| ("read" | "edit" | "browser" | "command" | "mcp" | "modes")
| [
"read" | "edit" | "browser" | "command" | "mcp" | "modes",
{
fileRegex?: string | undefined
description?: string | undefined
},
]
)[]
source?: ("global" | "project") | undefined
}[]
| undefined
customModePrompts?:
| {
[x: string]:
| {
roleDefinition?: string | undefined
customInstructions?: string | undefined
}
| undefined
}
| undefined
customSupportPrompts?:
| {
[x: string]: string | undefined
}
| undefined
enhancementApiConfigId?: string | undefined
historyPreviewCollapsed?: boolean | undefined
}
text: string
images?: string[] | undefined
newTab?: boolean | undefined
}
}
| {
commandName: "CancelTask"
data: string
}
| {
commandName: "CloseTask"
data: string
}
export type { TaskCommand }
type TaskEvent =
| {
eventName: "message"
payload: [
{
taskId: string
action: "created" | "updated"
message: {
ts: number
type: "ask" | "say"
ask?:
| (
| "followup"
| "command"
| "command_output"
| "completion_result"
| "tool"
| "api_req_failed"
| "resume_task"
| "resume_completed_task"
| "mistake_limit_reached"
| "browser_action_launch"
| "use_mcp_server"
)
| undefined
say?:
| (
| "error"
| "api_req_started"
| "api_req_finished"
| "api_req_retried"
| "api_req_retry_delayed"
| "api_req_deleted"
| "text"
| "reasoning"
| "completion_result"
| "user_feedback"
| "user_feedback_diff"
| "command_output"
| "shell_integration_warning"
| "browser_action"
| "browser_action_result"
| "mcp_server_request_started"
| "mcp_server_response"
| "subtask_result"
| "checkpoint_saved"
| "rooignore_error"
| "diff_error"
)
| undefined
text?: string | undefined
images?: string[] | undefined
partial?: boolean | undefined
reasoning?: string | undefined
conversationHistoryIndex?: number | undefined
checkpoint?:
| {
[x: string]: unknown
}
| undefined
progressStatus?:
| {
icon?: string | undefined
text?: string | undefined
}
| undefined
}
},
]
}
| {
eventName: "taskCreated"
payload: [string]
}
| {
eventName: "taskStarted"
payload: [string]
}
| {
eventName: "taskModeSwitched"
payload: [string, string]
}
| {
eventName: "taskPaused"
payload: [string]
}
| {
eventName: "taskUnpaused"
payload: [string]
}
| {
eventName: "taskAskResponded"
payload: [string]
}
| {
eventName: "taskAborted"
payload: [string]
}
| {
eventName: "taskSpawned"
payload: [string, string]
}
| {
eventName: "taskCompleted"
payload: [
string,
{
totalTokensIn: number
totalTokensOut: number
totalCacheWrites?: number | undefined
totalCacheReads?: number | undefined
totalCost: number
contextTokens: number
},
{
[x: string]: {
attempts: number
failures: number
}
},
]
}
| {
eventName: "taskTokenUsageUpdated"
payload: [
string,
{
totalTokensIn: number
totalTokensOut: number
totalCacheWrites?: number | undefined
totalCacheReads?: number | undefined
totalCost: number
contextTokens: number
},
]
}
export type { TaskEvent }

View file

@ -1062,6 +1062,142 @@ export const rooCodeEventsSchema = z.object({
export type RooCodeEvents = z.infer<typeof rooCodeEventsSchema>
/**
* Ack
*/
export const ackSchema = z.object({
clientId: z.string(),
pid: z.number(),
ppid: z.number(),
})
export type Ack = z.infer<typeof ackSchema>
/**
* TaskCommand
*/
export enum TaskCommandName {
StartNewTask = "StartNewTask",
CancelTask = "CancelTask",
CloseTask = "CloseTask",
}
export const taskCommandSchema = z.discriminatedUnion("commandName", [
z.object({
commandName: z.literal(TaskCommandName.StartNewTask),
data: z.object({
configuration: rooCodeSettingsSchema,
text: z.string(),
images: z.array(z.string()).optional(),
newTab: z.boolean().optional(),
}),
}),
z.object({
commandName: z.literal(TaskCommandName.CancelTask),
data: z.string(),
}),
z.object({
commandName: z.literal(TaskCommandName.CloseTask),
data: z.string(),
}),
])
export type TaskCommand = z.infer<typeof taskCommandSchema>
/**
* TaskEvent
*/
export const taskEventSchema = z.discriminatedUnion("eventName", [
z.object({
eventName: z.literal(RooCodeEventName.Message),
payload: rooCodeEventsSchema.shape[RooCodeEventName.Message],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskCreated),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskCreated],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskStarted),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskStarted],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskModeSwitched),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskModeSwitched],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskPaused),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskPaused],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskUnpaused),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskUnpaused],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskAskResponded),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskAskResponded],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskAborted),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskAborted],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskSpawned),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskSpawned],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskCompleted),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskCompleted],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskTokenUsageUpdated),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskTokenUsageUpdated],
}),
])
export type TaskEvent = z.infer<typeof taskEventSchema>
/**
* IpcMessage
*/
export enum IpcMessageType {
Connect = "Connect",
Disconnect = "Disconnect",
Ack = "Ack",
TaskCommand = "TaskCommand",
TaskEvent = "TaskEvent",
}
export enum IpcOrigin {
Client = "client",
Server = "server",
}
export const ipcMessageSchema = z.discriminatedUnion("type", [
z.object({
type: z.literal(IpcMessageType.Ack),
origin: z.literal(IpcOrigin.Server),
data: ackSchema,
}),
z.object({
type: z.literal(IpcMessageType.TaskCommand),
origin: z.literal(IpcOrigin.Client),
clientId: z.string(),
data: taskCommandSchema,
}),
z.object({
type: z.literal(IpcMessageType.TaskEvent),
origin: z.literal(IpcOrigin.Server),
relayClientId: z.string().optional(),
data: taskEventSchema,
}),
])
export type IpcMessage = z.infer<typeof ipcMessageSchema>
/**
* TypeDefinition
*/
@ -1078,7 +1214,10 @@ export const typeDefinitions: TypeDefinition[] = [
{ schema: clineMessageSchema, identifier: "ClineMessage" },
{ schema: tokenUsageSchema, identifier: "TokenUsage" },
{ schema: rooCodeEventsSchema, identifier: "RooCodeEvents" },
{ schema: ipcMessageSchema, identifier: "IpcMessage" },
{ schema: taskCommandSchema, identifier: "TaskCommand" },
{ schema: taskEventSchema, identifier: "TaskEvent" },
]
// Also export as default for ESM compatibility
// Also export as default for ESM compatibility.
export default { typeDefinitions }

View file

@ -1,139 +0,0 @@
import { z } from "zod"
import { RooCodeEventName, rooCodeEventsSchema, rooCodeSettingsSchema } from "./index"
/**
* Ack
*/
export const ackSchema = z.object({
clientId: z.string(),
pid: z.number(),
ppid: z.number(),
})
export type Ack = z.infer<typeof ackSchema>
/**
* TaskCommand
*/
export enum TaskCommandName {
StartNewTask = "StartNewTask",
CancelTask = "CancelTask",
CloseTask = "CloseTask",
}
export const taskCommandSchema = z.discriminatedUnion("commandName", [
z.object({
commandName: z.literal(TaskCommandName.StartNewTask),
data: z.object({
configuration: rooCodeSettingsSchema,
text: z.string(),
images: z.array(z.string()).optional(),
newTab: z.boolean().optional(),
}),
}),
z.object({
commandName: z.literal(TaskCommandName.CancelTask),
data: z.string(),
}),
z.object({
commandName: z.literal(TaskCommandName.CloseTask),
data: z.string(),
}),
])
export type TaskCommand = z.infer<typeof taskCommandSchema>
/**
* TaskEvent
*/
export const taskEventSchema = z.discriminatedUnion("eventName", [
z.object({
eventName: z.literal(RooCodeEventName.Message),
payload: rooCodeEventsSchema.shape[RooCodeEventName.Message],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskCreated),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskCreated],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskStarted),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskStarted],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskModeSwitched),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskModeSwitched],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskPaused),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskPaused],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskUnpaused),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskUnpaused],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskAskResponded),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskAskResponded],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskAborted),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskAborted],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskSpawned),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskSpawned],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskCompleted),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskCompleted],
}),
z.object({
eventName: z.literal(RooCodeEventName.TaskTokenUsageUpdated),
payload: rooCodeEventsSchema.shape[RooCodeEventName.TaskTokenUsageUpdated],
}),
])
export type TaskEvent = z.infer<typeof taskEventSchema>
/**
* IpcMessage
*/
export enum IpcMessageType {
Connect = "Connect",
Disconnect = "Disconnect",
Ack = "Ack",
TaskCommand = "TaskCommand",
TaskEvent = "TaskEvent",
}
export enum IpcOrigin {
Client = "client",
Server = "server",
}
export const ipcMessageSchema = z.discriminatedUnion("type", [
z.object({
type: z.literal(IpcMessageType.Ack),
origin: z.literal(IpcOrigin.Server),
data: ackSchema,
}),
z.object({
type: z.literal(IpcMessageType.TaskCommand),
origin: z.literal(IpcOrigin.Client),
clientId: z.string(),
data: taskCommandSchema,
}),
z.object({
type: z.literal(IpcMessageType.TaskEvent),
origin: z.literal(IpcOrigin.Server),
relayClientId: z.string().optional(),
data: taskEventSchema,
}),
])
export type IpcMessage = z.infer<typeof ipcMessageSchema>