chore: prepare GoodBuddy 0.8.6
Cross-platform packages / Validate source (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, linux, ubuntu-24.04-arm) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, macos, macos-15) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, windows, windows-2025) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, linux, ubuntu-24.04) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, macos, macos-15-intel) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, windows, windows-2025) (push) Has been cancelled
Cross-platform packages / Publish GitHub Release (push) Has been cancelled
Cross-platform packages / Validate source (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, linux, ubuntu-24.04-arm) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, macos, macos-15) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, windows, windows-2025) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, linux, ubuntu-24.04) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, macos, macos-15-intel) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, windows, windows-2025) (push) Has been cancelled
Cross-platform packages / Publish GitHub Release (push) Has been cancelled
This commit is contained in:
@@ -61,6 +61,59 @@ export type ConversationAttachment = z.infer<
|
||||
typeof conversationAttachmentSchema
|
||||
>
|
||||
|
||||
export const conversationToolActivitySchema = z
|
||||
.object({
|
||||
callId: z.string().max(256).optional(),
|
||||
name: z.string().max(200),
|
||||
state: z.enum([
|
||||
'pending',
|
||||
'running',
|
||||
'completed',
|
||||
'failed',
|
||||
'recoverable',
|
||||
'cancelled',
|
||||
'interrupted'
|
||||
]),
|
||||
summary: z.string().max(2_000),
|
||||
error: z.string().max(2_000).optional()
|
||||
})
|
||||
.strict()
|
||||
|
||||
export const conversationMessageBlockSchema = z.discriminatedUnion('type', [
|
||||
z
|
||||
.object({
|
||||
id: assistantIdSchema,
|
||||
type: z.literal('text'),
|
||||
content: z.string().min(1).max(1_000_000)
|
||||
})
|
||||
.strict(),
|
||||
z
|
||||
.object({
|
||||
id: assistantIdSchema,
|
||||
type: z.literal('reasoning'),
|
||||
content: z.string().min(1).max(1_000_000)
|
||||
})
|
||||
.strict(),
|
||||
z
|
||||
.object({
|
||||
id: assistantIdSchema,
|
||||
type: z.literal('tool'),
|
||||
tool: conversationToolActivitySchema
|
||||
})
|
||||
.strict()
|
||||
])
|
||||
|
||||
export const conversationMessageBlocksSchema = z
|
||||
.array(conversationMessageBlockSchema)
|
||||
.max(500)
|
||||
|
||||
export type ConversationToolActivity = z.infer<
|
||||
typeof conversationToolActivitySchema
|
||||
>
|
||||
export type ConversationMessageBlock = z.infer<
|
||||
typeof conversationMessageBlockSchema
|
||||
>
|
||||
|
||||
export const conversationSnapshotSchema = z
|
||||
.object({
|
||||
id: assistantIdSchema,
|
||||
@@ -76,31 +129,11 @@ export const conversationSnapshotSchema = z
|
||||
role: z.enum(['user', 'assistant']),
|
||||
content: z.string().max(1_000_000),
|
||||
reasoning: z.string().optional(),
|
||||
blocks: conversationMessageBlocksSchema.optional(),
|
||||
createdAt: z.number().int().nonnegative(),
|
||||
state: z.enum(['streaming', 'complete', 'error']),
|
||||
status: z.string().max(4_000).optional(),
|
||||
tools: z
|
||||
.array(
|
||||
z
|
||||
.object({
|
||||
callId: z.string().max(256).optional(),
|
||||
name: z.string().max(200),
|
||||
state: z.enum([
|
||||
'pending',
|
||||
'running',
|
||||
'completed',
|
||||
'failed',
|
||||
'recoverable',
|
||||
'cancelled',
|
||||
'interrupted'
|
||||
]),
|
||||
summary: z.string().max(2_000),
|
||||
error: z.string().max(2_000).optional()
|
||||
})
|
||||
.strict()
|
||||
)
|
||||
.max(100)
|
||||
.optional(),
|
||||
tools: z.array(conversationToolActivitySchema).max(100).optional(),
|
||||
sources: z.array(z.string().max(8_192)).max(100).optional(),
|
||||
sourceReferences: z
|
||||
.array(
|
||||
|
||||
@@ -51,6 +51,9 @@ export const skillIdSchema = z
|
||||
.max(128)
|
||||
.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)
|
||||
|
||||
export const skillImportKindSchema = z.enum(['directory', 'zip'])
|
||||
export type SkillImportKind = z.infer<typeof skillImportKindSchema>
|
||||
|
||||
export const skillToggleInputSchema = z
|
||||
.object({
|
||||
skillId: skillIdSchema,
|
||||
|
||||
+51
-2
@@ -7,7 +7,8 @@ import type {
|
||||
CapabilitySnapshot,
|
||||
ComputerCapabilityId,
|
||||
McpServerInput,
|
||||
McpServerTestResult
|
||||
McpServerTestResult,
|
||||
SkillImportKind
|
||||
} from './capability-contracts'
|
||||
import {
|
||||
assistantIdSchema,
|
||||
@@ -93,6 +94,29 @@ export const workspaceFileRequestSchema = z
|
||||
})
|
||||
.strict()
|
||||
|
||||
export const workspaceOpenPathRequestSchema = z
|
||||
.object({
|
||||
projectId: assistantIdSchema,
|
||||
path: workspaceRelativePathSchema,
|
||||
type: z.enum(['file', 'directory'])
|
||||
})
|
||||
.strict()
|
||||
|
||||
export const agentQuestionAnswerSchema = z
|
||||
.array(z.string().trim().min(1).max(2_000))
|
||||
.max(20)
|
||||
|
||||
export const agentQuestionResponseSchema = z
|
||||
.object({
|
||||
questionId: z.string().trim().min(1).max(128),
|
||||
answers: z.array(agentQuestionAnswerSchema).max(4)
|
||||
})
|
||||
.strict()
|
||||
|
||||
export type AgentQuestionAnswer = z.infer<
|
||||
typeof agentQuestionAnswerSchema
|
||||
>
|
||||
|
||||
export const conversationIdSchema = z.string().min(1).max(128)
|
||||
|
||||
export const agentRequestSchema = z
|
||||
@@ -648,6 +672,21 @@ export type AgentEvent =
|
||||
argumentSummary?: string
|
||||
allowPermanent?: boolean
|
||||
}
|
||||
| {
|
||||
requestId: string
|
||||
type: 'question'
|
||||
questionId: string
|
||||
questions: Array<{
|
||||
header: string
|
||||
question: string
|
||||
options: Array<{
|
||||
label: string
|
||||
description: string
|
||||
}>
|
||||
multiple: boolean
|
||||
custom: boolean
|
||||
}>
|
||||
}
|
||||
| {
|
||||
requestId: string
|
||||
type: 'artifact'
|
||||
@@ -873,6 +912,10 @@ export type DesktopApi = {
|
||||
approvalId: string,
|
||||
decision: ApprovalDecision
|
||||
) => Promise<void>
|
||||
respondQuestion: (
|
||||
questionId: string,
|
||||
answers?: AgentQuestionAnswer[]
|
||||
) => Promise<void>
|
||||
onEvent: (listener: (event: AgentEvent) => void) => () => void
|
||||
}
|
||||
browser: {
|
||||
@@ -949,6 +992,7 @@ export type DesktopApi = {
|
||||
input: ProjectCreateInput
|
||||
) => Promise<AssistantProject>
|
||||
setArchived: (projectId: string, archived: boolean) => Promise<void>
|
||||
delete: (projectId: string, confirmation: string) => Promise<void>
|
||||
}
|
||||
conversations: {
|
||||
list: () => Promise<ConversationSnapshot[]>
|
||||
@@ -964,6 +1008,11 @@ export type DesktopApi = {
|
||||
projectId: string,
|
||||
path: string
|
||||
) => Promise<WorkspaceFilePreview>
|
||||
openPath: (
|
||||
projectId: string,
|
||||
path: string,
|
||||
type: 'file' | 'directory'
|
||||
) => Promise<void>
|
||||
}
|
||||
tasks: {
|
||||
list: () => Promise<AssistantTask[]>
|
||||
@@ -1026,7 +1075,7 @@ export type DesktopApi = {
|
||||
}
|
||||
capabilities: {
|
||||
getSnapshot: () => Promise<CapabilitySnapshot>
|
||||
importSkill: () => Promise<CapabilitySnapshot>
|
||||
importSkill: (kind: SkillImportKind) => Promise<CapabilitySnapshot>
|
||||
removeSkill: (skillId: string) => Promise<CapabilitySnapshot>
|
||||
setSkillEnabled: (
|
||||
skillId: string,
|
||||
|
||||
@@ -14,6 +14,7 @@ export const ipcChannels = {
|
||||
agentRun: 'agent:run',
|
||||
agentCancel: 'agent:cancel',
|
||||
agentApprovalRespond: 'agent:approval:respond',
|
||||
agentQuestionRespond: 'agent:question:respond',
|
||||
agentEvent: 'agent:event',
|
||||
browserStop: 'browser:stop',
|
||||
browserState: 'browser:state',
|
||||
@@ -52,11 +53,13 @@ export const ipcChannels = {
|
||||
projectsCreate: 'projects:create',
|
||||
projectsUpdate: 'projects:update',
|
||||
projectsSetArchived: 'projects:set-archived',
|
||||
projectsDelete: 'projects:delete',
|
||||
conversationsList: 'conversations:list',
|
||||
conversationsReplace: 'conversations:replace',
|
||||
workspaceChangesGet: 'workspace:changes:get',
|
||||
workspaceDirectoryList: 'workspace:directory:list',
|
||||
workspaceFileRead: 'workspace:file:read',
|
||||
workspacePathOpen: 'workspace:path:open',
|
||||
tasksList: 'tasks:list',
|
||||
tasksSetStatus: 'tasks:set-status',
|
||||
tokenUsageSummary: 'usage:token-summary',
|
||||
|
||||
Reference in New Issue
Block a user