bingocode 1.0.2 → 1.0.3
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.
- package/desktop/README.md +30 -0
- package/desktop/bunfig.toml +1 -0
- package/desktop/index.html +17 -0
- package/desktop/package.json +55 -0
- package/desktop/pnpm-lock.yaml +3832 -0
- package/desktop/public/app-icon.jpg +0 -0
- package/desktop/public/fonts/inter-latin-ext.woff2 +0 -0
- package/desktop/public/fonts/inter-latin.woff2 +0 -0
- package/desktop/public/fonts/jetbrains-mono-latin-ext.woff2 +0 -0
- package/desktop/public/fonts/jetbrains-mono-latin.woff2 +0 -0
- package/desktop/public/fonts/manrope-latin-ext.woff2 +0 -0
- package/desktop/public/fonts/manrope-latin.woff2 +0 -0
- package/desktop/public/fonts/material-symbols-outlined.woff2 +0 -0
- package/desktop/public/icons/bilibili.svg +1 -0
- package/desktop/public/icons/douyin.svg +1 -0
- package/desktop/public/icons/github.svg +3 -0
- package/desktop/public/icons/xiaohongshu.svg +1 -0
- package/desktop/scripts/build-macos-arm64.sh +270 -0
- package/desktop/scripts/build-sidecars.ts +183 -0
- package/desktop/scripts/build-windows-x64.ps1 +295 -0
- package/desktop/scripts/scan-missing-imports.ts +235 -0
- package/desktop/sidecars/claude-sidecar.ts +156 -0
- package/desktop/src/App.tsx +5 -0
- package/desktop/src/__tests__/agentsSettings.test.tsx +349 -0
- package/desktop/src/__tests__/pages.test.tsx +290 -0
- package/desktop/src/__tests__/skillsSettings.test.tsx +205 -0
- package/desktop/src/api/adapters.ts +12 -0
- package/desktop/src/api/agents.ts +36 -0
- package/desktop/src/api/cliTasks.ts +28 -0
- package/desktop/src/api/client.ts +63 -0
- package/desktop/src/api/computerUse.ts +76 -0
- package/desktop/src/api/filesystem.ts +30 -0
- package/desktop/src/api/hahaOAuth.ts +38 -0
- package/desktop/src/api/models.ts +28 -0
- package/desktop/src/api/providers.ts +63 -0
- package/desktop/src/api/search.ts +29 -0
- package/desktop/src/api/sessions.ts +56 -0
- package/desktop/src/api/settings.ts +20 -0
- package/desktop/src/api/skills.ts +19 -0
- package/desktop/src/api/tasks.ts +36 -0
- package/desktop/src/api/teams.ts +44 -0
- package/desktop/src/api/websocket.ts +164 -0
- package/desktop/src/components/chat/AskUserQuestion.tsx +268 -0
- package/desktop/src/components/chat/AssistantMessage.tsx +29 -0
- package/desktop/src/components/chat/AttachmentGallery.tsx +113 -0
- package/desktop/src/components/chat/ChatInput.tsx +622 -0
- package/desktop/src/components/chat/CodeViewer.tsx +161 -0
- package/desktop/src/components/chat/ComputerUsePermissionModal.test.tsx +174 -0
- package/desktop/src/components/chat/ComputerUsePermissionModal.tsx +311 -0
- package/desktop/src/components/chat/DiffViewer.tsx +157 -0
- package/desktop/src/components/chat/FileSearchMenu.tsx +198 -0
- package/desktop/src/components/chat/ImageGalleryModal.tsx +91 -0
- package/desktop/src/components/chat/InlineImageGallery.tsx +106 -0
- package/desktop/src/components/chat/InlineTaskSummary.tsx +60 -0
- package/desktop/src/components/chat/MermaidRenderer.test.tsx +98 -0
- package/desktop/src/components/chat/MermaidRenderer.tsx +361 -0
- package/desktop/src/components/chat/MessageActionBar.tsx +27 -0
- package/desktop/src/components/chat/MessageList.test.tsx +313 -0
- package/desktop/src/components/chat/MessageList.tsx +249 -0
- package/desktop/src/components/chat/PermissionDialog.tsx +262 -0
- package/desktop/src/components/chat/SessionTaskBar.test.tsx +99 -0
- package/desktop/src/components/chat/SessionTaskBar.tsx +159 -0
- package/desktop/src/components/chat/StreamingIndicator.tsx +41 -0
- package/desktop/src/components/chat/TerminalChrome.tsx +35 -0
- package/desktop/src/components/chat/ThinkingBlock.tsx +87 -0
- package/desktop/src/components/chat/ToolCallBlock.tsx +247 -0
- package/desktop/src/components/chat/ToolCallGroup.tsx +617 -0
- package/desktop/src/components/chat/ToolResultBlock.tsx +107 -0
- package/desktop/src/components/chat/UserMessage.tsx +38 -0
- package/desktop/src/components/chat/chatBlocks.test.tsx +136 -0
- package/desktop/src/components/chat/clipboard.ts +25 -0
- package/desktop/src/components/chat/composerUtils.test.ts +55 -0
- package/desktop/src/components/chat/composerUtils.ts +149 -0
- package/desktop/src/components/controls/ModelSelector.tsx +156 -0
- package/desktop/src/components/controls/PermissionModeSelector.tsx +229 -0
- package/desktop/src/components/layout/AppShell.tsx +107 -0
- package/desktop/src/components/layout/ContentRouter.tsx +27 -0
- package/desktop/src/components/layout/ProjectFilter.tsx +126 -0
- package/desktop/src/components/layout/Sidebar.test.tsx +158 -0
- package/desktop/src/components/layout/Sidebar.tsx +384 -0
- package/desktop/src/components/layout/StatusBar.tsx +31 -0
- package/desktop/src/components/layout/TabBar.test.tsx +136 -0
- package/desktop/src/components/layout/TabBar.tsx +318 -0
- package/desktop/src/components/layout/TitleBar.tsx +96 -0
- package/desktop/src/components/layout/WindowControls.test.tsx +69 -0
- package/desktop/src/components/layout/WindowControls.tsx +89 -0
- package/desktop/src/components/markdown/MarkdownRenderer.test.tsx +100 -0
- package/desktop/src/components/markdown/MarkdownRenderer.tsx +229 -0
- package/desktop/src/components/settings/ClaudeOfficialLogin.tsx +107 -0
- package/desktop/src/components/shared/Button.tsx +63 -0
- package/desktop/src/components/shared/CopyButton.tsx +58 -0
- package/desktop/src/components/shared/DirectoryPicker.tsx +316 -0
- package/desktop/src/components/shared/Dropdown.tsx +91 -0
- package/desktop/src/components/shared/Input.tsx +38 -0
- package/desktop/src/components/shared/Modal.tsx +65 -0
- package/desktop/src/components/shared/ProjectContextChip.tsx +30 -0
- package/desktop/src/components/shared/Spinner.tsx +30 -0
- package/desktop/src/components/shared/Textarea.tsx +38 -0
- package/desktop/src/components/shared/Toast.tsx +47 -0
- package/desktop/src/components/shared/UpdateChecker.tsx +90 -0
- package/desktop/src/components/skills/SkillDetail.test.tsx +89 -0
- package/desktop/src/components/skills/SkillDetail.tsx +403 -0
- package/desktop/src/components/skills/SkillList.tsx +254 -0
- package/desktop/src/components/tasks/DayOfWeekPicker.tsx +57 -0
- package/desktop/src/components/tasks/NewTaskModal.tsx +407 -0
- package/desktop/src/components/tasks/PromptEditor.tsx +74 -0
- package/desktop/src/components/tasks/TaskEmptyState.tsx +30 -0
- package/desktop/src/components/tasks/TaskList.tsx +46 -0
- package/desktop/src/components/tasks/TaskRow.tsx +253 -0
- package/desktop/src/components/tasks/TaskRunsPanel.tsx +195 -0
- package/desktop/src/components/teams/TeamStatusBar.tsx +147 -0
- package/desktop/src/config/providerPresets.ts +78 -0
- package/desktop/src/config/spinnerVerbs.ts +193 -0
- package/desktop/src/hooks/useKeyboardShortcuts.ts +60 -0
- package/desktop/src/i18n/index.ts +54 -0
- package/desktop/src/i18n/locales/en.ts +670 -0
- package/desktop/src/i18n/locales/zh.ts +670 -0
- package/desktop/src/lib/__tests__/cronDescribe.test.ts +93 -0
- package/desktop/src/lib/cronDescribe.ts +188 -0
- package/desktop/src/lib/desktopRuntime.ts +54 -0
- package/desktop/src/lib/parseRunOutput.ts +79 -0
- package/desktop/src/main.tsx +13 -0
- package/desktop/src/mocks/data.ts +202 -0
- package/desktop/src/pages/ActiveSession.test.tsx +181 -0
- package/desktop/src/pages/ActiveSession.tsx +219 -0
- package/desktop/src/pages/AdapterSettings.tsx +375 -0
- package/desktop/src/pages/AgentTeams.tsx +200 -0
- package/desktop/src/pages/ComputerUseSettings.tsx +420 -0
- package/desktop/src/pages/EmptySession.tsx +518 -0
- package/desktop/src/pages/NewTaskModal.tsx +346 -0
- package/desktop/src/pages/ScheduledTasks.tsx +66 -0
- package/desktop/src/pages/ScheduledTasksEmpty.tsx +152 -0
- package/desktop/src/pages/ScheduledTasksList.tsx +416 -0
- package/desktop/src/pages/SessionControls.tsx +460 -0
- package/desktop/src/pages/Settings.tsx +1448 -0
- package/desktop/src/pages/ToolInspection.tsx +235 -0
- package/desktop/src/stores/adapterStore.ts +106 -0
- package/desktop/src/stores/agentStore.ts +34 -0
- package/desktop/src/stores/chatStore.test.ts +505 -0
- package/desktop/src/stores/chatStore.ts +850 -0
- package/desktop/src/stores/cliTaskStore.ts +152 -0
- package/desktop/src/stores/hahaOAuthStore.test.ts +77 -0
- package/desktop/src/stores/hahaOAuthStore.ts +97 -0
- package/desktop/src/stores/providerStore.ts +101 -0
- package/desktop/src/stores/sessionStore.test.ts +63 -0
- package/desktop/src/stores/sessionStore.ts +102 -0
- package/desktop/src/stores/settingsStore.ts +120 -0
- package/desktop/src/stores/skillStore.ts +51 -0
- package/desktop/src/stores/tabStore.ts +169 -0
- package/desktop/src/stores/taskStore.ts +68 -0
- package/desktop/src/stores/teamStore.ts +344 -0
- package/desktop/src/stores/uiStore.ts +100 -0
- package/desktop/src/stores/updateStore.test.ts +71 -0
- package/desktop/src/stores/updateStore.ts +221 -0
- package/desktop/src/theme/globals.css +465 -0
- package/desktop/src/types/adapter.ts +33 -0
- package/desktop/src/types/chat.ts +152 -0
- package/desktop/src/types/cliTask.ts +24 -0
- package/desktop/src/types/provider.ts +62 -0
- package/desktop/src/types/session.ts +27 -0
- package/desktop/src/types/settings.ts +22 -0
- package/desktop/src/types/skill.ts +38 -0
- package/desktop/src/types/task.ts +56 -0
- package/desktop/src/types/team.ts +38 -0
- package/desktop/src-tauri/Cargo.lock +5549 -0
- package/desktop/src-tauri/Cargo.toml +20 -0
- package/desktop/src-tauri/app-icon.svg +13 -0
- package/desktop/src-tauri/build.rs +3 -0
- package/desktop/src-tauri/capabilities/default.json +106 -0
- package/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/desktop/src-tauri/icons/android/values/ic_launcher_background.xml +4 -0
- package/desktop/src-tauri/icons/icon.icns +0 -0
- package/desktop/src-tauri/icons/icon.ico +0 -0
- package/desktop/src-tauri/src/lib.rs +408 -0
- package/desktop/src-tauri/src/main.rs +6 -0
- package/desktop/src-tauri/tauri.conf.json +78 -0
- package/desktop/src-tauri/tauri.macos.conf.json +18 -0
- package/desktop/src-tauri/tauri.release-ci.json +5 -0
- package/desktop/src-tauri/tauri.windows.conf.json +16 -0
- package/desktop/src-tauri/windows-installer-hooks.nsh +17 -0
- package/desktop/tsconfig.json +25 -0
- package/desktop/vite.config.ts +26 -0
- package/desktop/vitest.config.ts +18 -0
- package/package.json +1 -1
- package/src/commands/desktop/desktop.tsx +9 -0
- package/src/commands/desktop/index.ts +26 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { PermissionMode } from './settings'
|
|
2
|
+
|
|
3
|
+
// Source: src/server/ws/events.ts
|
|
4
|
+
|
|
5
|
+
// ─── Client → Server ──────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
export type ClientMessage =
|
|
8
|
+
| { type: 'user_message'; content: string; attachments?: AttachmentRef[] }
|
|
9
|
+
| { type: 'permission_response'; requestId: string; allowed: boolean; rule?: string }
|
|
10
|
+
| {
|
|
11
|
+
type: 'computer_use_permission_response'
|
|
12
|
+
requestId: string
|
|
13
|
+
response: ComputerUsePermissionResponse
|
|
14
|
+
}
|
|
15
|
+
| { type: 'set_permission_mode'; mode: PermissionMode }
|
|
16
|
+
| { type: 'stop_generation' }
|
|
17
|
+
| { type: 'ping' }
|
|
18
|
+
|
|
19
|
+
export type AttachmentRef = {
|
|
20
|
+
type: 'file' | 'image'
|
|
21
|
+
name?: string
|
|
22
|
+
path?: string
|
|
23
|
+
data?: string
|
|
24
|
+
mimeType?: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type UIAttachment = {
|
|
28
|
+
type: 'file' | 'image'
|
|
29
|
+
name: string
|
|
30
|
+
data?: string
|
|
31
|
+
mimeType?: string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ─── Server → Client ──────────────────────────────────────────────
|
|
35
|
+
|
|
36
|
+
export type ServerMessage =
|
|
37
|
+
| { type: 'connected'; sessionId: string }
|
|
38
|
+
| { type: 'content_start'; blockType: 'text' | 'tool_use'; toolName?: string; toolUseId?: string; parentToolUseId?: string }
|
|
39
|
+
| { type: 'content_delta'; text?: string; toolInput?: string }
|
|
40
|
+
| { type: 'tool_use_complete'; toolName: string; toolUseId: string; input: unknown; parentToolUseId?: string }
|
|
41
|
+
| { type: 'tool_result'; toolUseId: string; content: unknown; isError: boolean; parentToolUseId?: string }
|
|
42
|
+
| { type: 'permission_request'; requestId: string; toolName: string; input: unknown; description?: string }
|
|
43
|
+
| {
|
|
44
|
+
type: 'computer_use_permission_request'
|
|
45
|
+
requestId: string
|
|
46
|
+
request: ComputerUsePermissionRequest
|
|
47
|
+
}
|
|
48
|
+
| { type: 'message_complete'; usage: TokenUsage }
|
|
49
|
+
| { type: 'thinking'; text: string }
|
|
50
|
+
| { type: 'status'; state: ChatState; verb?: string; elapsed?: number; tokens?: number }
|
|
51
|
+
| { type: 'error'; message: string; code: string; retryable?: boolean }
|
|
52
|
+
| { type: 'system_notification'; subtype: string; message?: string; data?: unknown }
|
|
53
|
+
| { type: 'pong' }
|
|
54
|
+
| { type: 'team_update'; teamName: string; members: TeamMemberStatus[] }
|
|
55
|
+
| { type: 'team_created'; teamName: string }
|
|
56
|
+
| { type: 'team_deleted'; teamName: string }
|
|
57
|
+
| { type: 'task_update'; taskId: string; status: string; progress?: string }
|
|
58
|
+
| { type: 'session_title_updated'; sessionId: string; title: string }
|
|
59
|
+
|
|
60
|
+
export type TokenUsage = {
|
|
61
|
+
input_tokens: number
|
|
62
|
+
output_tokens: number
|
|
63
|
+
cache_read_tokens?: number
|
|
64
|
+
cache_creation_tokens?: number
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export type ChatState = 'idle' | 'thinking' | 'tool_executing' | 'streaming' | 'permission_pending'
|
|
68
|
+
|
|
69
|
+
export type TeamMemberStatus = {
|
|
70
|
+
agentId: string
|
|
71
|
+
role: string
|
|
72
|
+
status: 'running' | 'idle' | 'completed' | 'error'
|
|
73
|
+
currentTask?: string
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export type ComputerUseGrantFlags = {
|
|
77
|
+
clipboardRead: boolean
|
|
78
|
+
clipboardWrite: boolean
|
|
79
|
+
systemKeyCombos: boolean
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export type ComputerUseResolvedApp = {
|
|
83
|
+
bundleId: string
|
|
84
|
+
displayName: string
|
|
85
|
+
path?: string
|
|
86
|
+
iconDataUrl?: string
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export type ComputerUseResolvedAppRequest = {
|
|
90
|
+
requestedName: string
|
|
91
|
+
resolved?: ComputerUseResolvedApp
|
|
92
|
+
isSentinel: boolean
|
|
93
|
+
alreadyGranted: boolean
|
|
94
|
+
proposedTier: 'read' | 'click' | 'full'
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export type ComputerUsePermissionRequest = {
|
|
98
|
+
requestId: string
|
|
99
|
+
reason: string
|
|
100
|
+
apps: ComputerUseResolvedAppRequest[]
|
|
101
|
+
requestedFlags: Partial<ComputerUseGrantFlags>
|
|
102
|
+
screenshotFiltering: 'native' | 'none'
|
|
103
|
+
tccState?: {
|
|
104
|
+
accessibility: boolean
|
|
105
|
+
screenRecording: boolean
|
|
106
|
+
}
|
|
107
|
+
willHide?: Array<{ bundleId: string; displayName: string }>
|
|
108
|
+
autoUnhideEnabled?: boolean
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export type ComputerUsePermissionResponse = {
|
|
112
|
+
granted: Array<{
|
|
113
|
+
bundleId: string
|
|
114
|
+
displayName: string
|
|
115
|
+
grantedAt: number
|
|
116
|
+
tier?: 'read' | 'click' | 'full'
|
|
117
|
+
}>
|
|
118
|
+
denied: Array<{
|
|
119
|
+
bundleId: string
|
|
120
|
+
reason: 'user_denied' | 'not_installed'
|
|
121
|
+
}>
|
|
122
|
+
flags: ComputerUseGrantFlags
|
|
123
|
+
userConsented?: boolean
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export type AgentTaskNotification = {
|
|
127
|
+
taskId: string
|
|
128
|
+
toolUseId: string
|
|
129
|
+
status: 'completed' | 'failed' | 'stopped'
|
|
130
|
+
summary?: string
|
|
131
|
+
outputFile?: string
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// ─── UI Message model (rendered in MessageList) ───────────────────
|
|
135
|
+
|
|
136
|
+
export type TaskSummaryItem = {
|
|
137
|
+
id: string
|
|
138
|
+
subject: string
|
|
139
|
+
status: 'pending' | 'in_progress' | 'completed'
|
|
140
|
+
activeForm?: string
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export type UIMessage =
|
|
144
|
+
| { id: string; type: 'user_text'; content: string; timestamp: number; attachments?: UIAttachment[]; pending?: boolean }
|
|
145
|
+
| { id: string; type: 'assistant_text'; content: string; timestamp: number; model?: string }
|
|
146
|
+
| { id: string; type: 'thinking'; content: string; timestamp: number }
|
|
147
|
+
| { id: string; type: 'tool_use'; toolName: string; toolUseId: string; input: unknown; timestamp: number; parentToolUseId?: string }
|
|
148
|
+
| { id: string; type: 'tool_result'; toolUseId: string; content: unknown; isError: boolean; timestamp: number; parentToolUseId?: string }
|
|
149
|
+
| { id: string; type: 'system'; content: string; timestamp: number }
|
|
150
|
+
| { id: string; type: 'permission_request'; requestId: string; toolName: string; input: unknown; description?: string; timestamp: number }
|
|
151
|
+
| { id: string; type: 'error'; message: string; code: string; timestamp: number }
|
|
152
|
+
| { id: string; type: 'task_summary'; tasks: TaskSummaryItem[]; timestamp: number }
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Source: src/server/services/taskService.ts (CLI V2 Tasks)
|
|
2
|
+
|
|
3
|
+
export type TaskStatus = 'pending' | 'in_progress' | 'completed'
|
|
4
|
+
|
|
5
|
+
export type CLITask = {
|
|
6
|
+
id: string
|
|
7
|
+
subject: string
|
|
8
|
+
description: string
|
|
9
|
+
activeForm?: string
|
|
10
|
+
owner?: string
|
|
11
|
+
status: TaskStatus
|
|
12
|
+
blocks: string[]
|
|
13
|
+
blockedBy: string[]
|
|
14
|
+
metadata?: Record<string, unknown>
|
|
15
|
+
taskListId: string
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type TaskListSummary = {
|
|
19
|
+
id: string
|
|
20
|
+
taskCount: number
|
|
21
|
+
completedCount: number
|
|
22
|
+
inProgressCount: number
|
|
23
|
+
pendingCount: number
|
|
24
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// desktop/src/types/provider.ts
|
|
2
|
+
|
|
3
|
+
export type ApiFormat = 'anthropic' | 'openai_chat' | 'openai_responses'
|
|
4
|
+
|
|
5
|
+
export type ModelMapping = {
|
|
6
|
+
main: string
|
|
7
|
+
haiku: string
|
|
8
|
+
sonnet: string
|
|
9
|
+
opus: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type SavedProvider = {
|
|
13
|
+
id: string
|
|
14
|
+
presetId: string
|
|
15
|
+
name: string
|
|
16
|
+
apiKey: string // masked from server
|
|
17
|
+
baseUrl: string
|
|
18
|
+
apiFormat: ApiFormat
|
|
19
|
+
models: ModelMapping
|
|
20
|
+
notes?: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type CreateProviderInput = {
|
|
24
|
+
presetId: string
|
|
25
|
+
name: string
|
|
26
|
+
apiKey: string
|
|
27
|
+
baseUrl: string
|
|
28
|
+
apiFormat?: ApiFormat
|
|
29
|
+
models: ModelMapping
|
|
30
|
+
notes?: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type UpdateProviderInput = {
|
|
34
|
+
name?: string
|
|
35
|
+
apiKey?: string
|
|
36
|
+
baseUrl?: string
|
|
37
|
+
apiFormat?: ApiFormat
|
|
38
|
+
models?: ModelMapping
|
|
39
|
+
notes?: string
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export type TestProviderConfigInput = {
|
|
43
|
+
baseUrl: string
|
|
44
|
+
apiKey: string
|
|
45
|
+
modelId: string
|
|
46
|
+
apiFormat?: ApiFormat
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type ProviderTestStepResult = {
|
|
50
|
+
success: boolean
|
|
51
|
+
latencyMs: number
|
|
52
|
+
error?: string
|
|
53
|
+
modelUsed?: string
|
|
54
|
+
httpStatus?: number
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export type ProviderTestResult = {
|
|
58
|
+
/** Step 1: Basic connectivity */
|
|
59
|
+
connectivity: ProviderTestStepResult
|
|
60
|
+
/** Step 2: Proxy pipeline (only for openai_* formats) */
|
|
61
|
+
proxy?: ProviderTestStepResult
|
|
62
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Source: src/server/services/sessionService.ts
|
|
2
|
+
|
|
3
|
+
export type SessionListItem = {
|
|
4
|
+
id: string
|
|
5
|
+
title: string
|
|
6
|
+
createdAt: string
|
|
7
|
+
modifiedAt: string
|
|
8
|
+
messageCount: number
|
|
9
|
+
projectPath: string
|
|
10
|
+
workDir: string | null
|
|
11
|
+
workDirExists: boolean
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type MessageEntry = {
|
|
15
|
+
id: string
|
|
16
|
+
type: 'user' | 'assistant' | 'system' | 'tool_use' | 'tool_result'
|
|
17
|
+
content: unknown
|
|
18
|
+
timestamp: string
|
|
19
|
+
model?: string
|
|
20
|
+
parentUuid?: string
|
|
21
|
+
parentToolUseId?: string
|
|
22
|
+
isSidechain?: boolean
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type SessionDetail = SessionListItem & {
|
|
26
|
+
messages: MessageEntry[]
|
|
27
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Source: src/server/api/models.ts, src/server/api/settings.ts
|
|
2
|
+
|
|
3
|
+
export type PermissionMode = 'default' | 'acceptEdits' | 'plan' | 'bypassPermissions' | 'dontAsk'
|
|
4
|
+
|
|
5
|
+
export type EffortLevel = 'low' | 'medium' | 'high' | 'max'
|
|
6
|
+
export type ThemeMode = 'light' | 'dark'
|
|
7
|
+
|
|
8
|
+
export type ModelInfo = {
|
|
9
|
+
id: string
|
|
10
|
+
name: string
|
|
11
|
+
description: string
|
|
12
|
+
context: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type UserSettings = {
|
|
16
|
+
model?: string
|
|
17
|
+
modelContext?: string
|
|
18
|
+
effort?: EffortLevel
|
|
19
|
+
permissionMode?: PermissionMode
|
|
20
|
+
theme?: ThemeMode
|
|
21
|
+
[key: string]: unknown
|
|
22
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type SkillSource = 'user' | 'project' | 'plugin' | 'mcp' | 'bundled'
|
|
2
|
+
|
|
3
|
+
export type SkillMeta = {
|
|
4
|
+
name: string
|
|
5
|
+
displayName?: string
|
|
6
|
+
description: string
|
|
7
|
+
source: SkillSource
|
|
8
|
+
userInvocable: boolean
|
|
9
|
+
version?: string
|
|
10
|
+
contentLength: number
|
|
11
|
+
hasDirectory: boolean
|
|
12
|
+
pluginName?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type FileTreeNode = {
|
|
16
|
+
name: string
|
|
17
|
+
path: string
|
|
18
|
+
type: 'file' | 'directory'
|
|
19
|
+
children?: FileTreeNode[]
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type SkillFrontmatter = Record<string, unknown>
|
|
23
|
+
|
|
24
|
+
export type SkillFile = {
|
|
25
|
+
path: string
|
|
26
|
+
content: string
|
|
27
|
+
language: string
|
|
28
|
+
frontmatter?: SkillFrontmatter
|
|
29
|
+
body?: string
|
|
30
|
+
isEntry?: boolean
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type SkillDetail = {
|
|
34
|
+
meta: SkillMeta
|
|
35
|
+
tree: FileTreeNode[]
|
|
36
|
+
files: SkillFile[]
|
|
37
|
+
skillRoot: string
|
|
38
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Source: src/server/services/cronService.ts
|
|
2
|
+
|
|
3
|
+
export type TaskNotificationConfig = {
|
|
4
|
+
enabled: boolean
|
|
5
|
+
channels: ('telegram' | 'feishu')[]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type CronTask = {
|
|
9
|
+
id: string
|
|
10
|
+
name: string
|
|
11
|
+
description?: string
|
|
12
|
+
cron: string
|
|
13
|
+
prompt: string
|
|
14
|
+
enabled: boolean
|
|
15
|
+
recurring?: boolean
|
|
16
|
+
permanent?: boolean
|
|
17
|
+
createdAt: number
|
|
18
|
+
lastRunAt?: number
|
|
19
|
+
lastFiredAt?: string
|
|
20
|
+
nextRunAt?: number
|
|
21
|
+
permissionMode?: string
|
|
22
|
+
model?: string
|
|
23
|
+
folderPath?: string
|
|
24
|
+
useWorktree?: boolean
|
|
25
|
+
notification?: TaskNotificationConfig
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type CreateTaskInput = {
|
|
29
|
+
name: string
|
|
30
|
+
description?: string
|
|
31
|
+
cron: string
|
|
32
|
+
prompt: string
|
|
33
|
+
enabled?: boolean
|
|
34
|
+
recurring?: boolean
|
|
35
|
+
permanent?: boolean
|
|
36
|
+
permissionMode?: string
|
|
37
|
+
model?: string
|
|
38
|
+
folderPath?: string
|
|
39
|
+
useWorktree?: boolean
|
|
40
|
+
notification?: TaskNotificationConfig
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type TaskRun = {
|
|
44
|
+
id: string
|
|
45
|
+
taskId: string
|
|
46
|
+
taskName: string
|
|
47
|
+
startedAt: string
|
|
48
|
+
completedAt?: string
|
|
49
|
+
status: 'running' | 'completed' | 'failed' | 'timeout'
|
|
50
|
+
prompt: string
|
|
51
|
+
output?: string
|
|
52
|
+
error?: string
|
|
53
|
+
exitCode?: number
|
|
54
|
+
durationMs?: number
|
|
55
|
+
sessionId?: string
|
|
56
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Source: src/server/services/teamService.ts, src/server/ws/events.ts
|
|
2
|
+
|
|
3
|
+
export type TeamSummary = {
|
|
4
|
+
name: string
|
|
5
|
+
memberCount: number
|
|
6
|
+
createdAt?: string
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type TeamMember = {
|
|
10
|
+
agentId: string
|
|
11
|
+
name?: string
|
|
12
|
+
role: string
|
|
13
|
+
status: 'running' | 'idle' | 'completed' | 'error'
|
|
14
|
+
currentTask?: string
|
|
15
|
+
color?: AgentColor
|
|
16
|
+
sessionId?: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type TeamDetail = {
|
|
20
|
+
name: string
|
|
21
|
+
leadAgentId?: string
|
|
22
|
+
leadSessionId?: string
|
|
23
|
+
members: TeamMember[]
|
|
24
|
+
createdAt?: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type AgentColor = 'red' | 'blue' | 'green' | 'yellow' | 'purple' | 'orange' | 'pink' | 'cyan'
|
|
28
|
+
|
|
29
|
+
export const AGENT_COLORS: AgentColor[] = ['red', 'blue', 'green', 'yellow', 'purple', 'orange', 'pink', 'cyan']
|
|
30
|
+
|
|
31
|
+
/** Lifecycle message types that should be filtered from agent output display */
|
|
32
|
+
export const AGENT_LIFECYCLE_TYPES = new Set([
|
|
33
|
+
'shutdown_approved',
|
|
34
|
+
'shutdown_rejected',
|
|
35
|
+
'shutdown_request',
|
|
36
|
+
'teammate_terminated',
|
|
37
|
+
'idle_notification',
|
|
38
|
+
])
|