@shareai-lab/kode 1.0.70 → 1.0.73

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.
Files changed (278) hide show
  1. package/README.md +342 -75
  2. package/README.zh-CN.md +292 -0
  3. package/cli.js +62 -0
  4. package/package.json +49 -25
  5. package/scripts/postinstall.js +56 -0
  6. package/src/ProjectOnboarding.tsx +198 -0
  7. package/src/Tool.ts +82 -0
  8. package/src/commands/agents.tsx +3401 -0
  9. package/src/commands/approvedTools.ts +53 -0
  10. package/src/commands/bug.tsx +20 -0
  11. package/src/commands/clear.ts +43 -0
  12. package/src/commands/compact.ts +120 -0
  13. package/src/commands/config.tsx +19 -0
  14. package/src/commands/cost.ts +18 -0
  15. package/src/commands/ctx_viz.ts +209 -0
  16. package/src/commands/doctor.ts +24 -0
  17. package/src/commands/help.tsx +19 -0
  18. package/src/commands/init.ts +37 -0
  19. package/src/commands/listen.ts +42 -0
  20. package/src/commands/login.tsx +51 -0
  21. package/src/commands/logout.tsx +40 -0
  22. package/src/commands/mcp.ts +41 -0
  23. package/src/commands/model.tsx +40 -0
  24. package/src/commands/modelstatus.tsx +20 -0
  25. package/src/commands/onboarding.tsx +34 -0
  26. package/src/commands/pr_comments.ts +59 -0
  27. package/src/commands/refreshCommands.ts +54 -0
  28. package/src/commands/release-notes.ts +34 -0
  29. package/src/commands/resume.tsx +31 -0
  30. package/src/commands/review.ts +49 -0
  31. package/src/commands/terminalSetup.ts +221 -0
  32. package/src/commands.ts +139 -0
  33. package/src/components/ApproveApiKey.tsx +93 -0
  34. package/src/components/AsciiLogo.tsx +13 -0
  35. package/src/components/AutoUpdater.tsx +148 -0
  36. package/src/components/Bug.tsx +367 -0
  37. package/src/components/Config.tsx +293 -0
  38. package/src/components/ConsoleOAuthFlow.tsx +327 -0
  39. package/src/components/Cost.tsx +23 -0
  40. package/src/components/CostThresholdDialog.tsx +46 -0
  41. package/src/components/CustomSelect/option-map.ts +42 -0
  42. package/src/components/CustomSelect/select-option.tsx +78 -0
  43. package/src/components/CustomSelect/select.tsx +152 -0
  44. package/src/components/CustomSelect/theme.ts +45 -0
  45. package/src/components/CustomSelect/use-select-state.ts +414 -0
  46. package/src/components/CustomSelect/use-select.ts +35 -0
  47. package/src/components/FallbackToolUseRejectedMessage.tsx +15 -0
  48. package/src/components/FileEditToolUpdatedMessage.tsx +66 -0
  49. package/src/components/Help.tsx +215 -0
  50. package/src/components/HighlightedCode.tsx +33 -0
  51. package/src/components/InvalidConfigDialog.tsx +113 -0
  52. package/src/components/Link.tsx +32 -0
  53. package/src/components/LogSelector.tsx +86 -0
  54. package/src/components/Logo.tsx +145 -0
  55. package/src/components/MCPServerApprovalDialog.tsx +100 -0
  56. package/src/components/MCPServerDialogCopy.tsx +25 -0
  57. package/src/components/MCPServerMultiselectDialog.tsx +109 -0
  58. package/src/components/Message.tsx +221 -0
  59. package/src/components/MessageResponse.tsx +15 -0
  60. package/src/components/MessageSelector.tsx +211 -0
  61. package/src/components/ModeIndicator.tsx +88 -0
  62. package/src/components/ModelConfig.tsx +301 -0
  63. package/src/components/ModelListManager.tsx +227 -0
  64. package/src/components/ModelSelector.tsx +3386 -0
  65. package/src/components/ModelStatusDisplay.tsx +230 -0
  66. package/src/components/Onboarding.tsx +274 -0
  67. package/src/components/PressEnterToContinue.tsx +11 -0
  68. package/src/components/PromptInput.tsx +740 -0
  69. package/src/components/SentryErrorBoundary.ts +33 -0
  70. package/src/components/Spinner.tsx +129 -0
  71. package/src/components/StickerRequestForm.tsx +16 -0
  72. package/src/components/StructuredDiff.tsx +191 -0
  73. package/src/components/TextInput.tsx +259 -0
  74. package/src/components/TodoItem.tsx +11 -0
  75. package/src/components/TokenWarning.tsx +31 -0
  76. package/src/components/ToolUseLoader.tsx +40 -0
  77. package/src/components/TrustDialog.tsx +106 -0
  78. package/src/components/binary-feedback/BinaryFeedback.tsx +63 -0
  79. package/src/components/binary-feedback/BinaryFeedbackOption.tsx +111 -0
  80. package/src/components/binary-feedback/BinaryFeedbackView.tsx +172 -0
  81. package/src/components/binary-feedback/utils.ts +220 -0
  82. package/src/components/messages/AssistantBashOutputMessage.tsx +22 -0
  83. package/src/components/messages/AssistantLocalCommandOutputMessage.tsx +49 -0
  84. package/src/components/messages/AssistantRedactedThinkingMessage.tsx +19 -0
  85. package/src/components/messages/AssistantTextMessage.tsx +144 -0
  86. package/src/components/messages/AssistantThinkingMessage.tsx +40 -0
  87. package/src/components/messages/AssistantToolUseMessage.tsx +133 -0
  88. package/src/components/messages/TaskProgressMessage.tsx +32 -0
  89. package/src/components/messages/TaskToolMessage.tsx +58 -0
  90. package/src/components/messages/UserBashInputMessage.tsx +28 -0
  91. package/src/components/messages/UserCommandMessage.tsx +30 -0
  92. package/src/components/messages/UserKodingInputMessage.tsx +28 -0
  93. package/src/components/messages/UserPromptMessage.tsx +35 -0
  94. package/src/components/messages/UserTextMessage.tsx +39 -0
  95. package/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx +12 -0
  96. package/src/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +36 -0
  97. package/src/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +31 -0
  98. package/src/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +57 -0
  99. package/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx +35 -0
  100. package/src/components/messages/UserToolResultMessage/utils.tsx +56 -0
  101. package/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +121 -0
  102. package/src/components/permissions/FallbackPermissionRequest.tsx +153 -0
  103. package/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +182 -0
  104. package/src/components/permissions/FileEditPermissionRequest/FileEditToolDiff.tsx +77 -0
  105. package/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +164 -0
  106. package/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +83 -0
  107. package/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +240 -0
  108. package/src/components/permissions/PermissionRequest.tsx +101 -0
  109. package/src/components/permissions/PermissionRequestTitle.tsx +69 -0
  110. package/src/components/permissions/hooks.ts +44 -0
  111. package/src/components/permissions/toolUseOptions.ts +59 -0
  112. package/src/components/permissions/utils.ts +23 -0
  113. package/src/constants/betas.ts +5 -0
  114. package/src/constants/claude-asterisk-ascii-art.tsx +238 -0
  115. package/src/constants/figures.ts +4 -0
  116. package/src/constants/keys.ts +3 -0
  117. package/src/constants/macros.ts +8 -0
  118. package/src/constants/modelCapabilities.ts +179 -0
  119. package/src/constants/models.ts +1025 -0
  120. package/src/constants/oauth.ts +18 -0
  121. package/src/constants/product.ts +17 -0
  122. package/src/constants/prompts.ts +177 -0
  123. package/src/constants/releaseNotes.ts +7 -0
  124. package/src/context/PermissionContext.tsx +149 -0
  125. package/src/context.ts +278 -0
  126. package/src/cost-tracker.ts +84 -0
  127. package/src/entrypoints/cli.tsx +1518 -0
  128. package/src/entrypoints/mcp.ts +176 -0
  129. package/src/history.ts +25 -0
  130. package/src/hooks/useApiKeyVerification.ts +59 -0
  131. package/src/hooks/useArrowKeyHistory.ts +55 -0
  132. package/src/hooks/useCanUseTool.ts +138 -0
  133. package/src/hooks/useCancelRequest.ts +39 -0
  134. package/src/hooks/useDoublePress.ts +42 -0
  135. package/src/hooks/useExitOnCtrlCD.ts +31 -0
  136. package/src/hooks/useInterval.ts +25 -0
  137. package/src/hooks/useLogMessages.ts +16 -0
  138. package/src/hooks/useLogStartupTime.ts +12 -0
  139. package/src/hooks/useNotifyAfterTimeout.ts +65 -0
  140. package/src/hooks/usePermissionRequestLogging.ts +44 -0
  141. package/src/hooks/useTerminalSize.ts +49 -0
  142. package/src/hooks/useTextInput.ts +318 -0
  143. package/src/hooks/useUnifiedCompletion.ts +1404 -0
  144. package/src/messages.ts +38 -0
  145. package/src/permissions.ts +268 -0
  146. package/src/query.ts +707 -0
  147. package/src/screens/ConfigureNpmPrefix.tsx +197 -0
  148. package/src/screens/Doctor.tsx +219 -0
  149. package/src/screens/LogList.tsx +68 -0
  150. package/src/screens/REPL.tsx +798 -0
  151. package/src/screens/ResumeConversation.tsx +68 -0
  152. package/src/services/adapters/base.ts +38 -0
  153. package/src/services/adapters/chatCompletions.ts +90 -0
  154. package/src/services/adapters/responsesAPI.ts +170 -0
  155. package/src/services/browserMocks.ts +66 -0
  156. package/src/services/claude.ts +2083 -0
  157. package/src/services/customCommands.ts +704 -0
  158. package/src/services/fileFreshness.ts +377 -0
  159. package/src/services/gpt5ConnectionTest.ts +340 -0
  160. package/src/services/mcpClient.ts +564 -0
  161. package/src/services/mcpServerApproval.tsx +50 -0
  162. package/src/services/mentionProcessor.ts +273 -0
  163. package/src/services/modelAdapterFactory.ts +69 -0
  164. package/src/services/notifier.ts +40 -0
  165. package/src/services/oauth.ts +357 -0
  166. package/src/services/openai.ts +1305 -0
  167. package/src/services/responseStateManager.ts +90 -0
  168. package/src/services/sentry.ts +3 -0
  169. package/src/services/statsig.ts +171 -0
  170. package/src/services/statsigStorage.ts +86 -0
  171. package/src/services/systemReminder.ts +507 -0
  172. package/src/services/vcr.ts +161 -0
  173. package/src/test/testAdapters.ts +96 -0
  174. package/src/tools/ArchitectTool/ArchitectTool.tsx +122 -0
  175. package/src/tools/ArchitectTool/prompt.ts +15 -0
  176. package/src/tools/AskExpertModelTool/AskExpertModelTool.tsx +569 -0
  177. package/src/tools/BashTool/BashTool.tsx +243 -0
  178. package/src/tools/BashTool/BashToolResultMessage.tsx +38 -0
  179. package/src/tools/BashTool/OutputLine.tsx +49 -0
  180. package/src/tools/BashTool/prompt.ts +174 -0
  181. package/src/tools/BashTool/utils.ts +56 -0
  182. package/src/tools/FileEditTool/FileEditTool.tsx +315 -0
  183. package/src/tools/FileEditTool/prompt.ts +51 -0
  184. package/src/tools/FileEditTool/utils.ts +58 -0
  185. package/src/tools/FileReadTool/FileReadTool.tsx +404 -0
  186. package/src/tools/FileReadTool/prompt.ts +7 -0
  187. package/src/tools/FileWriteTool/FileWriteTool.tsx +297 -0
  188. package/src/tools/FileWriteTool/prompt.ts +10 -0
  189. package/src/tools/GlobTool/GlobTool.tsx +119 -0
  190. package/src/tools/GlobTool/prompt.ts +8 -0
  191. package/src/tools/GrepTool/GrepTool.tsx +147 -0
  192. package/src/tools/GrepTool/prompt.ts +11 -0
  193. package/src/tools/MCPTool/MCPTool.tsx +107 -0
  194. package/src/tools/MCPTool/prompt.ts +3 -0
  195. package/src/tools/MemoryReadTool/MemoryReadTool.tsx +127 -0
  196. package/src/tools/MemoryReadTool/prompt.ts +3 -0
  197. package/src/tools/MemoryWriteTool/MemoryWriteTool.tsx +89 -0
  198. package/src/tools/MemoryWriteTool/prompt.ts +3 -0
  199. package/src/tools/MultiEditTool/MultiEditTool.tsx +366 -0
  200. package/src/tools/MultiEditTool/prompt.ts +45 -0
  201. package/src/tools/NotebookEditTool/NotebookEditTool.tsx +298 -0
  202. package/src/tools/NotebookEditTool/prompt.ts +3 -0
  203. package/src/tools/NotebookReadTool/NotebookReadTool.tsx +258 -0
  204. package/src/tools/NotebookReadTool/prompt.ts +3 -0
  205. package/src/tools/StickerRequestTool/StickerRequestTool.tsx +93 -0
  206. package/src/tools/StickerRequestTool/prompt.ts +19 -0
  207. package/src/tools/TaskTool/TaskTool.tsx +466 -0
  208. package/src/tools/TaskTool/constants.ts +1 -0
  209. package/src/tools/TaskTool/prompt.ts +92 -0
  210. package/src/tools/ThinkTool/ThinkTool.tsx +54 -0
  211. package/src/tools/ThinkTool/prompt.ts +12 -0
  212. package/src/tools/TodoWriteTool/TodoWriteTool.tsx +290 -0
  213. package/src/tools/TodoWriteTool/prompt.ts +63 -0
  214. package/src/tools/lsTool/lsTool.tsx +272 -0
  215. package/src/tools/lsTool/prompt.ts +2 -0
  216. package/src/tools.ts +63 -0
  217. package/src/types/PermissionMode.ts +120 -0
  218. package/src/types/RequestContext.ts +72 -0
  219. package/src/types/conversation.ts +51 -0
  220. package/src/types/logs.ts +58 -0
  221. package/src/types/modelCapabilities.ts +64 -0
  222. package/src/types/notebook.ts +87 -0
  223. package/src/utils/Cursor.ts +436 -0
  224. package/src/utils/PersistentShell.ts +373 -0
  225. package/src/utils/advancedFuzzyMatcher.ts +290 -0
  226. package/src/utils/agentLoader.ts +284 -0
  227. package/src/utils/agentStorage.ts +97 -0
  228. package/src/utils/array.ts +3 -0
  229. package/src/utils/ask.tsx +99 -0
  230. package/src/utils/auth.ts +13 -0
  231. package/src/utils/autoCompactCore.ts +223 -0
  232. package/src/utils/autoUpdater.ts +318 -0
  233. package/src/utils/betas.ts +20 -0
  234. package/src/utils/browser.ts +14 -0
  235. package/src/utils/cleanup.ts +72 -0
  236. package/src/utils/commands.ts +261 -0
  237. package/src/utils/commonUnixCommands.ts +161 -0
  238. package/src/utils/config.ts +942 -0
  239. package/src/utils/conversationRecovery.ts +55 -0
  240. package/src/utils/debugLogger.ts +1123 -0
  241. package/src/utils/diff.ts +42 -0
  242. package/src/utils/env.ts +57 -0
  243. package/src/utils/errors.ts +21 -0
  244. package/src/utils/exampleCommands.ts +109 -0
  245. package/src/utils/execFileNoThrow.ts +51 -0
  246. package/src/utils/expertChatStorage.ts +136 -0
  247. package/src/utils/file.ts +402 -0
  248. package/src/utils/fileRecoveryCore.ts +71 -0
  249. package/src/utils/format.tsx +44 -0
  250. package/src/utils/fuzzyMatcher.ts +328 -0
  251. package/src/utils/generators.ts +62 -0
  252. package/src/utils/git.ts +92 -0
  253. package/src/utils/globalLogger.ts +77 -0
  254. package/src/utils/http.ts +10 -0
  255. package/src/utils/imagePaste.ts +38 -0
  256. package/src/utils/json.ts +13 -0
  257. package/src/utils/log.ts +382 -0
  258. package/src/utils/markdown.ts +213 -0
  259. package/src/utils/messageContextManager.ts +289 -0
  260. package/src/utils/messages.tsx +939 -0
  261. package/src/utils/model.ts +836 -0
  262. package/src/utils/permissions/filesystem.ts +118 -0
  263. package/src/utils/responseState.ts +23 -0
  264. package/src/utils/ripgrep.ts +167 -0
  265. package/src/utils/secureFile.ts +559 -0
  266. package/src/utils/sessionState.ts +49 -0
  267. package/src/utils/state.ts +25 -0
  268. package/src/utils/style.ts +29 -0
  269. package/src/utils/terminal.ts +50 -0
  270. package/src/utils/theme.ts +133 -0
  271. package/src/utils/thinking.ts +144 -0
  272. package/src/utils/todoStorage.ts +431 -0
  273. package/src/utils/tokens.ts +43 -0
  274. package/src/utils/toolExecutionController.ts +163 -0
  275. package/src/utils/unaryLogging.ts +26 -0
  276. package/src/utils/user.ts +37 -0
  277. package/src/utils/validate.ts +165 -0
  278. package/cli.mjs +0 -1803
@@ -0,0 +1,120 @@
1
+ // Permission mode types based on original Claude Code implementation
2
+ export type PermissionMode =
3
+ | 'default'
4
+ | 'acceptEdits'
5
+ | 'plan'
6
+ | 'bypassPermissions'
7
+
8
+ export interface PermissionContext {
9
+ mode: PermissionMode
10
+ allowedTools: string[]
11
+ allowedPaths: string[]
12
+ restrictions: {
13
+ readOnly: boolean
14
+ requireConfirmation: boolean
15
+ bypassValidation: boolean
16
+ }
17
+ metadata: {
18
+ activatedAt?: string
19
+ previousMode?: PermissionMode
20
+ transitionCount: number
21
+ }
22
+ }
23
+
24
+ export interface ModeConfig {
25
+ name: PermissionMode
26
+ label: string
27
+ icon: string
28
+ color: string
29
+ description: string
30
+ allowedTools: string[]
31
+ restrictions: {
32
+ readOnly: boolean
33
+ requireConfirmation: boolean
34
+ bypassValidation: boolean
35
+ }
36
+ }
37
+
38
+ // Mode configuration based on original Claude Code
39
+ export const MODE_CONFIGS: Record<PermissionMode, ModeConfig> = {
40
+ default: {
41
+ name: 'default',
42
+ label: 'DEFAULT',
43
+ icon: '🔒',
44
+ color: 'blue',
45
+ description: 'Standard permission checking',
46
+ allowedTools: ['*'],
47
+ restrictions: {
48
+ readOnly: false,
49
+ requireConfirmation: true,
50
+ bypassValidation: false,
51
+ },
52
+ },
53
+ acceptEdits: {
54
+ name: 'acceptEdits',
55
+ label: 'ACCEPT EDITS',
56
+ icon: '✅',
57
+ color: 'green',
58
+ description: 'Auto-approve edit operations',
59
+ allowedTools: ['*'],
60
+ restrictions: {
61
+ readOnly: false,
62
+ requireConfirmation: false,
63
+ bypassValidation: false,
64
+ },
65
+ },
66
+ plan: {
67
+ name: 'plan',
68
+ label: 'PLAN MODE',
69
+ icon: '📝',
70
+ color: 'yellow',
71
+ description: 'Research and planning - read-only tools only',
72
+ allowedTools: [
73
+ 'Read',
74
+ 'Grep',
75
+ 'Glob',
76
+ 'LS',
77
+ 'WebSearch',
78
+ 'WebFetch',
79
+ 'NotebookRead',
80
+ 'exit_plan_mode',
81
+ ],
82
+ restrictions: {
83
+ readOnly: true,
84
+ requireConfirmation: true,
85
+ bypassValidation: false,
86
+ },
87
+ },
88
+ bypassPermissions: {
89
+ name: 'bypassPermissions',
90
+ label: 'BYPASS PERMISSIONS',
91
+ icon: '🔓',
92
+ color: 'red',
93
+ description: 'All permissions bypassed',
94
+ allowedTools: ['*'],
95
+ restrictions: {
96
+ readOnly: false,
97
+ requireConfirmation: false,
98
+ bypassValidation: true,
99
+ },
100
+ },
101
+ }
102
+
103
+ // Mode cycling function (based on original yg2 function)
104
+ export function getNextPermissionMode(
105
+ currentMode: PermissionMode,
106
+ isBypassAvailable: boolean = true,
107
+ ): PermissionMode {
108
+ switch (currentMode) {
109
+ case 'default':
110
+ return 'acceptEdits'
111
+ case 'acceptEdits':
112
+ return 'plan'
113
+ case 'plan':
114
+ return isBypassAvailable ? 'bypassPermissions' : 'default'
115
+ case 'bypassPermissions':
116
+ return 'default'
117
+ default:
118
+ return 'default'
119
+ }
120
+ }
@@ -0,0 +1,72 @@
1
+ // Request Context for perfect state isolation
2
+ // Based on official Kode patterns
3
+
4
+ export interface RequestContext {
5
+ id: string
6
+ abortController: AbortController
7
+ startTime: number
8
+ isActive: boolean
9
+ type: 'query' | 'tool' | 'koding'
10
+ }
11
+
12
+ export interface AbortBarrier {
13
+ requestId: string
14
+ checkAbort(): boolean
15
+ onAbort(callback: () => void): void
16
+ cleanup(): void
17
+ }
18
+
19
+ export function createRequestContext(
20
+ type: RequestContext['type'] = 'query',
21
+ ): RequestContext {
22
+ return {
23
+ id: crypto.randomUUID(),
24
+ abortController: new AbortController(),
25
+ startTime: Date.now(),
26
+ isActive: true,
27
+ type,
28
+ }
29
+ }
30
+
31
+ export function createAbortBarrier(
32
+ requestContext: RequestContext,
33
+ ): AbortBarrier {
34
+ let cleanupCallbacks: (() => void)[] = []
35
+
36
+ return {
37
+ requestId: requestContext.id,
38
+
39
+ checkAbort(): boolean {
40
+ // Only respond to aborts for THIS specific request
41
+ return (
42
+ requestContext.isActive && requestContext.abortController.signal.aborted
43
+ )
44
+ },
45
+
46
+ onAbort(callback: () => void): void {
47
+ if (requestContext.isActive) {
48
+ const abortHandler = () => {
49
+ if (requestContext.isActive) {
50
+ callback()
51
+ }
52
+ }
53
+ requestContext.abortController.signal.addEventListener(
54
+ 'abort',
55
+ abortHandler,
56
+ )
57
+ cleanupCallbacks.push(() => {
58
+ requestContext.abortController.signal.removeEventListener(
59
+ 'abort',
60
+ abortHandler,
61
+ )
62
+ })
63
+ }
64
+ },
65
+
66
+ cleanup(): void {
67
+ cleanupCallbacks.forEach(cleanup => cleanup())
68
+ cleanupCallbacks = []
69
+ requestContext.isActive = false
70
+ },
71
+ }
72
+ }
@@ -0,0 +1,51 @@
1
+ // Type definitions for conversation and message functionality
2
+ // Used by debugLogger and other conversation-related utilities
3
+
4
+ import { UUID } from 'crypto'
5
+ import type { MessageParam } from '@anthropic-ai/sdk/resources/index.mjs'
6
+ import type { Message as APIAssistantMessage } from '@anthropic-ai/sdk/resources/index.mjs'
7
+
8
+ /**
9
+ * Base message interface used throughout the conversation system
10
+ * This is a union type that matches the Message type from query.ts
11
+ */
12
+ export type Message = UserMessage | AssistantMessage | ProgressMessage
13
+
14
+ /**
15
+ * User message structure
16
+ */
17
+ export interface UserMessage {
18
+ message: MessageParam
19
+ type: 'user'
20
+ uuid: UUID
21
+ toolUseResult?: any // FullToolUseResult type
22
+ options?: {
23
+ isKodingRequest?: boolean
24
+ kodingContext?: string
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Assistant message structure
30
+ */
31
+ export interface AssistantMessage {
32
+ costUSD: number
33
+ durationMs: number
34
+ message: APIAssistantMessage
35
+ type: 'assistant'
36
+ uuid: UUID
37
+ isApiErrorMessage?: boolean
38
+ }
39
+
40
+ /**
41
+ * Progress message structure for tool execution
42
+ */
43
+ export interface ProgressMessage {
44
+ content: AssistantMessage
45
+ normalizedMessages: any[] // NormalizedMessage type
46
+ siblingToolUseIDs: Set<string>
47
+ tools: any[] // Tool type
48
+ toolUseID: string
49
+ type: 'progress'
50
+ uuid: UUID
51
+ }
@@ -0,0 +1,58 @@
1
+ // Type definitions for log-related functionality
2
+ // Used by log selector, log list, and log utilities
3
+
4
+ import { UUID } from 'crypto'
5
+
6
+ /**
7
+ * Serialized message structure stored in log files
8
+ * Based on how messages are serialized and deserialized in log.ts
9
+ */
10
+ export interface SerializedMessage {
11
+ type: 'user' | 'assistant' | 'progress'
12
+ uuid: UUID
13
+ message?: {
14
+ content: string | Array<{ type: string; text?: string }>
15
+ role: 'user' | 'assistant' | 'system'
16
+ }
17
+ costUSD?: number
18
+ durationMs?: number
19
+ timestamp: string
20
+ cwd?: string
21
+ userType?: string
22
+ sessionId?: string
23
+ version?: string
24
+ }
25
+
26
+ /**
27
+ * Log option representing a single conversation log
28
+ * Used by LogSelector and LogList components
29
+ */
30
+ export interface LogOption {
31
+ // File metadata
32
+ date: string
33
+ fullPath: string
34
+ value: number // Index in the logs array
35
+
36
+ // Timestamps for sorting
37
+ created: Date
38
+ modified: Date
39
+
40
+ // Content metadata
41
+ firstPrompt: string
42
+ messageCount: number
43
+ messages: SerializedMessage[]
44
+
45
+ // Fork and branch info
46
+ forkNumber?: number
47
+ sidechainNumber?: number
48
+ }
49
+
50
+ /**
51
+ * Props for LogList component
52
+ * Used by LogList.tsx
53
+ */
54
+ export interface LogListProps {
55
+ context: {
56
+ unmount?: () => void
57
+ }
58
+ }
@@ -0,0 +1,64 @@
1
+ // Model capability type definitions for unified API support
2
+ export interface ModelCapabilities {
3
+ // API architecture type
4
+ apiArchitecture: {
5
+ primary: 'chat_completions' | 'responses_api'
6
+ fallback?: 'chat_completions' // Responses API models can fallback
7
+ }
8
+
9
+ // Parameter mapping
10
+ parameters: {
11
+ maxTokensField: 'max_tokens' | 'max_completion_tokens'
12
+ supportsReasoningEffort: boolean
13
+ supportsVerbosity: boolean
14
+ temperatureMode: 'flexible' | 'fixed_one' | 'restricted'
15
+ }
16
+
17
+ // Tool calling capabilities
18
+ toolCalling: {
19
+ mode: 'none' | 'function_calling' | 'custom_tools'
20
+ supportsFreeform: boolean
21
+ supportsAllowedTools: boolean
22
+ supportsParallelCalls: boolean
23
+ }
24
+
25
+ // State management
26
+ stateManagement: {
27
+ supportsResponseId: boolean
28
+ supportsConversationChaining: boolean
29
+ supportsPreviousResponseId: boolean
30
+ }
31
+
32
+ // Streaming support
33
+ streaming: {
34
+ supported: boolean
35
+ includesUsage: boolean
36
+ }
37
+ }
38
+
39
+ // Unified request parameters
40
+ export interface UnifiedRequestParams {
41
+ messages: any[]
42
+ systemPrompt: string[]
43
+ tools?: any[]
44
+ maxTokens: number
45
+ stream?: boolean
46
+ previousResponseId?: string
47
+ reasoningEffort?: 'minimal' | 'low' | 'medium' | 'high'
48
+ verbosity?: 'low' | 'medium' | 'high'
49
+ temperature?: number
50
+ allowedTools?: string[]
51
+ }
52
+
53
+ // Unified response format
54
+ export interface UnifiedResponse {
55
+ id: string
56
+ content: string
57
+ toolCalls?: any[]
58
+ usage: {
59
+ promptTokens: number
60
+ completionTokens: number
61
+ reasoningTokens?: number
62
+ }
63
+ responseId?: string // For Responses API state management
64
+ }
@@ -0,0 +1,87 @@
1
+ // Type definitions for Jupyter notebook functionality
2
+ // Used by NotebookReadTool and NotebookEditTool
3
+
4
+ /**
5
+ * Valid notebook cell types
6
+ */
7
+ export type NotebookCellType = 'code' | 'markdown'
8
+
9
+ /**
10
+ * Notebook output image structure
11
+ */
12
+ export interface NotebookOutputImage {
13
+ image_data: string
14
+ media_type: 'image/png' | 'image/jpeg'
15
+ }
16
+
17
+ /**
18
+ * Processed notebook cell output for display
19
+ */
20
+ export interface NotebookCellSourceOutput {
21
+ output_type: 'stream' | 'execute_result' | 'display_data' | 'error'
22
+ text?: string
23
+ image?: NotebookOutputImage
24
+ }
25
+
26
+ /**
27
+ * Processed notebook cell structure used by tools
28
+ */
29
+ export interface NotebookCellSource {
30
+ cell: number // Cell index
31
+ cellType: NotebookCellType
32
+ source: string
33
+ language: string
34
+ execution_count?: number | null
35
+ outputs?: NotebookCellSourceOutput[]
36
+ }
37
+
38
+ /**
39
+ * Raw notebook cell output from .ipynb file
40
+ */
41
+ export interface NotebookCellOutput {
42
+ output_type: 'stream' | 'execute_result' | 'display_data' | 'error'
43
+ name?: string
44
+ text?: string | string[]
45
+ data?: Record<string, unknown>
46
+ execution_count?: number | null
47
+ metadata?: Record<string, unknown>
48
+ // For error outputs
49
+ ename?: string
50
+ evalue?: string
51
+ traceback?: string[]
52
+ }
53
+
54
+ /**
55
+ * Raw notebook cell structure from .ipynb file
56
+ */
57
+ export interface NotebookCell {
58
+ cell_type: NotebookCellType
59
+ source: string | string[]
60
+ metadata: Record<string, unknown>
61
+ execution_count?: number | null
62
+ outputs?: NotebookCellOutput[]
63
+ id?: string
64
+ }
65
+
66
+ /**
67
+ * Complete notebook structure from .ipynb file
68
+ */
69
+ export interface NotebookContent {
70
+ cells: NotebookCell[]
71
+ metadata: {
72
+ kernelspec?: {
73
+ display_name?: string
74
+ language?: string
75
+ name?: string
76
+ }
77
+ language_info?: {
78
+ name?: string
79
+ version?: string
80
+ mimetype?: string
81
+ file_extension?: string
82
+ }
83
+ [key: string]: unknown
84
+ }
85
+ nbformat: number
86
+ nbformat_minor: number
87
+ }