@shareai-lab/kode 1.1.14 → 1.1.16-dev.2
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/cli.js +77 -82
- package/dist/entrypoints/cli.js +59 -38
- package/dist/entrypoints/cli.js.map +3 -3
- package/dist/index.js +5 -26
- package/dist/package.json +4 -1
- package/package.json +11 -104
- package/dist/test/testAdapters.js +0 -88
- package/dist/test/testAdapters.js.map +0 -1
- package/src/ProjectOnboarding.tsx +0 -198
- package/src/Tool.ts +0 -83
- package/src/commands/agents.tsx +0 -3416
- package/src/commands/approvedTools.ts +0 -53
- package/src/commands/bug.tsx +0 -20
- package/src/commands/clear.ts +0 -43
- package/src/commands/compact.ts +0 -120
- package/src/commands/config.tsx +0 -19
- package/src/commands/cost.ts +0 -18
- package/src/commands/ctx_viz.ts +0 -209
- package/src/commands/doctor.ts +0 -24
- package/src/commands/help.tsx +0 -19
- package/src/commands/init.ts +0 -37
- package/src/commands/listen.ts +0 -42
- package/src/commands/login.tsx +0 -51
- package/src/commands/logout.tsx +0 -40
- package/src/commands/mcp.ts +0 -41
- package/src/commands/model.tsx +0 -40
- package/src/commands/modelstatus.tsx +0 -20
- package/src/commands/onboarding.tsx +0 -34
- package/src/commands/pr_comments.ts +0 -59
- package/src/commands/refreshCommands.ts +0 -54
- package/src/commands/release-notes.ts +0 -34
- package/src/commands/resume.tsx +0 -31
- package/src/commands/review.ts +0 -49
- package/src/commands/terminalSetup.ts +0 -221
- package/src/commands.ts +0 -139
- package/src/components/ApproveApiKey.tsx +0 -93
- package/src/components/AsciiLogo.tsx +0 -13
- package/src/components/AutoUpdater.tsx +0 -148
- package/src/components/Bug.tsx +0 -367
- package/src/components/Config.tsx +0 -293
- package/src/components/ConsoleOAuthFlow.tsx +0 -327
- package/src/components/Cost.tsx +0 -23
- package/src/components/CostThresholdDialog.tsx +0 -46
- package/src/components/CustomSelect/option-map.ts +0 -42
- package/src/components/CustomSelect/select-option.tsx +0 -78
- package/src/components/CustomSelect/select.tsx +0 -152
- package/src/components/CustomSelect/theme.ts +0 -45
- package/src/components/CustomSelect/use-select-state.ts +0 -414
- package/src/components/CustomSelect/use-select.ts +0 -35
- package/src/components/FallbackToolUseRejectedMessage.tsx +0 -15
- package/src/components/FileEditToolUpdatedMessage.tsx +0 -66
- package/src/components/Help.tsx +0 -215
- package/src/components/HighlightedCode.tsx +0 -33
- package/src/components/InvalidConfigDialog.tsx +0 -113
- package/src/components/Link.tsx +0 -32
- package/src/components/LogSelector.tsx +0 -86
- package/src/components/Logo.tsx +0 -170
- package/src/components/MCPServerApprovalDialog.tsx +0 -100
- package/src/components/MCPServerDialogCopy.tsx +0 -25
- package/src/components/MCPServerMultiselectDialog.tsx +0 -109
- package/src/components/Message.tsx +0 -221
- package/src/components/MessageResponse.tsx +0 -15
- package/src/components/MessageSelector.tsx +0 -211
- package/src/components/ModeIndicator.tsx +0 -88
- package/src/components/ModelConfig.tsx +0 -301
- package/src/components/ModelListManager.tsx +0 -227
- package/src/components/ModelSelector.tsx +0 -3387
- package/src/components/ModelStatusDisplay.tsx +0 -230
- package/src/components/Onboarding.tsx +0 -274
- package/src/components/PressEnterToContinue.tsx +0 -11
- package/src/components/PromptInput.tsx +0 -760
- package/src/components/SentryErrorBoundary.ts +0 -39
- package/src/components/Spinner.tsx +0 -129
- package/src/components/StickerRequestForm.tsx +0 -16
- package/src/components/StructuredDiff.tsx +0 -191
- package/src/components/TextInput.tsx +0 -259
- package/src/components/TodoItem.tsx +0 -47
- package/src/components/TokenWarning.tsx +0 -31
- package/src/components/ToolUseLoader.tsx +0 -40
- package/src/components/TrustDialog.tsx +0 -106
- package/src/components/binary-feedback/BinaryFeedback.tsx +0 -63
- package/src/components/binary-feedback/BinaryFeedbackOption.tsx +0 -111
- package/src/components/binary-feedback/BinaryFeedbackView.tsx +0 -172
- package/src/components/binary-feedback/utils.ts +0 -220
- package/src/components/messages/AssistantBashOutputMessage.tsx +0 -22
- package/src/components/messages/AssistantLocalCommandOutputMessage.tsx +0 -49
- package/src/components/messages/AssistantRedactedThinkingMessage.tsx +0 -19
- package/src/components/messages/AssistantTextMessage.tsx +0 -144
- package/src/components/messages/AssistantThinkingMessage.tsx +0 -40
- package/src/components/messages/AssistantToolUseMessage.tsx +0 -132
- package/src/components/messages/TaskProgressMessage.tsx +0 -32
- package/src/components/messages/TaskToolMessage.tsx +0 -58
- package/src/components/messages/UserBashInputMessage.tsx +0 -28
- package/src/components/messages/UserCommandMessage.tsx +0 -30
- package/src/components/messages/UserKodingInputMessage.tsx +0 -28
- package/src/components/messages/UserPromptMessage.tsx +0 -35
- package/src/components/messages/UserTextMessage.tsx +0 -39
- package/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx +0 -12
- package/src/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +0 -36
- package/src/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +0 -31
- package/src/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +0 -57
- package/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx +0 -35
- package/src/components/messages/UserToolResultMessage/utils.tsx +0 -56
- package/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +0 -121
- package/src/components/permissions/FallbackPermissionRequest.tsx +0 -153
- package/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +0 -182
- package/src/components/permissions/FileEditPermissionRequest/FileEditToolDiff.tsx +0 -77
- package/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +0 -164
- package/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +0 -83
- package/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +0 -240
- package/src/components/permissions/PermissionRequest.tsx +0 -101
- package/src/components/permissions/PermissionRequestTitle.tsx +0 -69
- package/src/components/permissions/hooks.ts +0 -44
- package/src/components/permissions/toolUseOptions.ts +0 -59
- package/src/components/permissions/utils.ts +0 -23
- package/src/constants/betas.ts +0 -5
- package/src/constants/claude-asterisk-ascii-art.tsx +0 -238
- package/src/constants/figures.ts +0 -4
- package/src/constants/keys.ts +0 -3
- package/src/constants/macros.ts +0 -11
- package/src/constants/modelCapabilities.ts +0 -179
- package/src/constants/models.ts +0 -1025
- package/src/constants/oauth.ts +0 -18
- package/src/constants/product.ts +0 -17
- package/src/constants/prompts.ts +0 -168
- package/src/constants/releaseNotes.ts +0 -7
- package/src/context/PermissionContext.tsx +0 -149
- package/src/context.ts +0 -278
- package/src/cost-tracker.ts +0 -84
- package/src/entrypoints/cli.tsx +0 -1561
- package/src/entrypoints/mcp.ts +0 -175
- package/src/history.ts +0 -25
- package/src/hooks/useApiKeyVerification.ts +0 -59
- package/src/hooks/useArrowKeyHistory.ts +0 -55
- package/src/hooks/useCanUseTool.ts +0 -138
- package/src/hooks/useCancelRequest.ts +0 -39
- package/src/hooks/useDoublePress.ts +0 -41
- package/src/hooks/useExitOnCtrlCD.ts +0 -31
- package/src/hooks/useInterval.ts +0 -25
- package/src/hooks/useLogMessages.ts +0 -16
- package/src/hooks/useLogStartupTime.ts +0 -12
- package/src/hooks/useNotifyAfterTimeout.ts +0 -65
- package/src/hooks/usePermissionRequestLogging.ts +0 -44
- package/src/hooks/useTerminalSize.ts +0 -49
- package/src/hooks/useTextInput.ts +0 -317
- package/src/hooks/useUnifiedCompletion.ts +0 -1405
- package/src/index.ts +0 -34
- package/src/messages.ts +0 -38
- package/src/permissions.ts +0 -268
- package/src/query.ts +0 -720
- package/src/screens/ConfigureNpmPrefix.tsx +0 -197
- package/src/screens/Doctor.tsx +0 -219
- package/src/screens/LogList.tsx +0 -68
- package/src/screens/REPL.tsx +0 -813
- package/src/screens/ResumeConversation.tsx +0 -68
- package/src/services/adapters/base.ts +0 -38
- package/src/services/adapters/chatCompletions.ts +0 -90
- package/src/services/adapters/responsesAPI.ts +0 -170
- package/src/services/browserMocks.ts +0 -66
- package/src/services/claude.ts +0 -2197
- package/src/services/customCommands.ts +0 -704
- package/src/services/fileFreshness.ts +0 -377
- package/src/services/gpt5ConnectionTest.ts +0 -340
- package/src/services/mcpClient.ts +0 -564
- package/src/services/mcpServerApproval.tsx +0 -50
- package/src/services/mentionProcessor.ts +0 -273
- package/src/services/modelAdapterFactory.ts +0 -69
- package/src/services/notifier.ts +0 -40
- package/src/services/oauth.ts +0 -357
- package/src/services/openai.ts +0 -1359
- package/src/services/responseStateManager.ts +0 -90
- package/src/services/sentry.ts +0 -3
- package/src/services/statsig.ts +0 -172
- package/src/services/statsigStorage.ts +0 -86
- package/src/services/systemReminder.ts +0 -507
- package/src/services/vcr.ts +0 -161
- package/src/test/testAdapters.ts +0 -96
- package/src/tools/ArchitectTool/ArchitectTool.tsx +0 -135
- package/src/tools/ArchitectTool/prompt.ts +0 -15
- package/src/tools/AskExpertModelTool/AskExpertModelTool.tsx +0 -576
- package/src/tools/BashTool/BashTool.tsx +0 -243
- package/src/tools/BashTool/BashToolResultMessage.tsx +0 -38
- package/src/tools/BashTool/OutputLine.tsx +0 -49
- package/src/tools/BashTool/prompt.ts +0 -174
- package/src/tools/BashTool/utils.ts +0 -56
- package/src/tools/FileEditTool/FileEditTool.tsx +0 -319
- package/src/tools/FileEditTool/prompt.ts +0 -51
- package/src/tools/FileEditTool/utils.ts +0 -58
- package/src/tools/FileReadTool/FileReadTool.tsx +0 -404
- package/src/tools/FileReadTool/prompt.ts +0 -7
- package/src/tools/FileWriteTool/FileWriteTool.tsx +0 -301
- package/src/tools/FileWriteTool/prompt.ts +0 -10
- package/src/tools/GlobTool/GlobTool.tsx +0 -119
- package/src/tools/GlobTool/prompt.ts +0 -8
- package/src/tools/GrepTool/GrepTool.tsx +0 -147
- package/src/tools/GrepTool/prompt.ts +0 -11
- package/src/tools/MCPTool/MCPTool.tsx +0 -107
- package/src/tools/MCPTool/prompt.ts +0 -3
- package/src/tools/MemoryReadTool/MemoryReadTool.tsx +0 -127
- package/src/tools/MemoryReadTool/prompt.ts +0 -3
- package/src/tools/MemoryWriteTool/MemoryWriteTool.tsx +0 -89
- package/src/tools/MemoryWriteTool/prompt.ts +0 -3
- package/src/tools/MultiEditTool/MultiEditTool.tsx +0 -388
- package/src/tools/MultiEditTool/prompt.ts +0 -45
- package/src/tools/NotebookEditTool/NotebookEditTool.tsx +0 -298
- package/src/tools/NotebookEditTool/prompt.ts +0 -3
- package/src/tools/NotebookReadTool/NotebookReadTool.tsx +0 -258
- package/src/tools/NotebookReadTool/prompt.ts +0 -3
- package/src/tools/StickerRequestTool/StickerRequestTool.tsx +0 -107
- package/src/tools/StickerRequestTool/prompt.ts +0 -19
- package/src/tools/TaskTool/TaskTool.tsx +0 -438
- package/src/tools/TaskTool/constants.ts +0 -1
- package/src/tools/TaskTool/prompt.ts +0 -92
- package/src/tools/ThinkTool/ThinkTool.tsx +0 -54
- package/src/tools/ThinkTool/prompt.ts +0 -12
- package/src/tools/TodoWriteTool/TodoWriteTool.tsx +0 -313
- package/src/tools/TodoWriteTool/prompt.ts +0 -63
- package/src/tools/URLFetcherTool/URLFetcherTool.tsx +0 -178
- package/src/tools/URLFetcherTool/cache.ts +0 -55
- package/src/tools/URLFetcherTool/htmlToMarkdown.ts +0 -55
- package/src/tools/URLFetcherTool/prompt.ts +0 -17
- package/src/tools/WebSearchTool/WebSearchTool.tsx +0 -103
- package/src/tools/WebSearchTool/prompt.ts +0 -13
- package/src/tools/WebSearchTool/searchProviders.ts +0 -66
- package/src/tools/lsTool/lsTool.tsx +0 -272
- package/src/tools/lsTool/prompt.ts +0 -2
- package/src/tools.ts +0 -67
- package/src/types/PermissionMode.ts +0 -120
- package/src/types/RequestContext.ts +0 -72
- package/src/types/common.d.ts +0 -2
- package/src/types/conversation.ts +0 -51
- package/src/types/logs.ts +0 -58
- package/src/types/modelCapabilities.ts +0 -64
- package/src/types/notebook.ts +0 -87
- package/src/utils/Cursor.ts +0 -436
- package/src/utils/PersistentShell.ts +0 -552
- package/src/utils/advancedFuzzyMatcher.ts +0 -290
- package/src/utils/agentLoader.ts +0 -278
- package/src/utils/agentStorage.ts +0 -97
- package/src/utils/array.ts +0 -3
- package/src/utils/ask.tsx +0 -99
- package/src/utils/auth.ts +0 -13
- package/src/utils/autoCompactCore.ts +0 -223
- package/src/utils/autoUpdater.ts +0 -458
- package/src/utils/betas.ts +0 -20
- package/src/utils/browser.ts +0 -14
- package/src/utils/cleanup.ts +0 -72
- package/src/utils/commands.ts +0 -261
- package/src/utils/commonUnixCommands.ts +0 -161
- package/src/utils/config.ts +0 -945
- package/src/utils/conversationRecovery.ts +0 -55
- package/src/utils/debugLogger.ts +0 -1235
- package/src/utils/diff.ts +0 -42
- package/src/utils/env.ts +0 -57
- package/src/utils/errors.ts +0 -21
- package/src/utils/exampleCommands.ts +0 -109
- package/src/utils/execFileNoThrow.ts +0 -51
- package/src/utils/expertChatStorage.ts +0 -136
- package/src/utils/file.ts +0 -405
- package/src/utils/fileRecoveryCore.ts +0 -71
- package/src/utils/format.tsx +0 -44
- package/src/utils/fuzzyMatcher.ts +0 -328
- package/src/utils/generators.ts +0 -62
- package/src/utils/git.ts +0 -92
- package/src/utils/globalLogger.ts +0 -77
- package/src/utils/http.ts +0 -10
- package/src/utils/imagePaste.ts +0 -38
- package/src/utils/json.ts +0 -13
- package/src/utils/log.ts +0 -382
- package/src/utils/markdown.ts +0 -213
- package/src/utils/messageContextManager.ts +0 -294
- package/src/utils/messages.tsx +0 -945
- package/src/utils/model.ts +0 -914
- package/src/utils/permissions/filesystem.ts +0 -127
- package/src/utils/responseState.ts +0 -23
- package/src/utils/ripgrep.ts +0 -167
- package/src/utils/secureFile.ts +0 -564
- package/src/utils/sessionState.ts +0 -49
- package/src/utils/state.ts +0 -25
- package/src/utils/style.ts +0 -29
- package/src/utils/terminal.ts +0 -50
- package/src/utils/theme.ts +0 -127
- package/src/utils/thinking.ts +0 -144
- package/src/utils/todoStorage.ts +0 -431
- package/src/utils/tokens.ts +0 -43
- package/src/utils/toolExecutionController.ts +0 -163
- package/src/utils/unaryLogging.ts +0 -26
- package/src/utils/user.ts +0 -37
- package/src/utils/validate.ts +0 -165
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { render } from 'ink'
|
|
3
|
-
import { REPL } from './REPL'
|
|
4
|
-
import { deserializeMessages } from '../utils/conversationRecovery'
|
|
5
|
-
import { LogSelector } from '../components/LogSelector'
|
|
6
|
-
import type { LogOption } from '../types/logs'
|
|
7
|
-
import { logError, getNextAvailableLogForkNumber } from '../utils/log'
|
|
8
|
-
import type { Tool } from '../Tool'
|
|
9
|
-
import { Command } from '../commands'
|
|
10
|
-
import { isDefaultSlowAndCapableModel } from '../utils/model'
|
|
11
|
-
|
|
12
|
-
type Props = {
|
|
13
|
-
commands: Command[]
|
|
14
|
-
context: { unmount?: () => void }
|
|
15
|
-
logs: LogOption[]
|
|
16
|
-
tools: Tool[]
|
|
17
|
-
verbose: boolean | undefined
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function ResumeConversation({
|
|
21
|
-
context,
|
|
22
|
-
commands,
|
|
23
|
-
logs,
|
|
24
|
-
tools,
|
|
25
|
-
verbose,
|
|
26
|
-
}: Props): React.ReactNode {
|
|
27
|
-
async function onSelect(index: number) {
|
|
28
|
-
const log = logs[index]
|
|
29
|
-
if (!log) {
|
|
30
|
-
return
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Load and deserialize the messages
|
|
34
|
-
try {
|
|
35
|
-
context.unmount?.()
|
|
36
|
-
// Start a new REPL with the loaded messages
|
|
37
|
-
// Increment the fork number by 1 to generate a new transcript
|
|
38
|
-
// Check if using default model before rendering
|
|
39
|
-
const isDefaultModel = await isDefaultSlowAndCapableModel()
|
|
40
|
-
|
|
41
|
-
render(
|
|
42
|
-
<REPL
|
|
43
|
-
messageLogName={log.date}
|
|
44
|
-
initialPrompt=""
|
|
45
|
-
shouldShowPromptInput={true}
|
|
46
|
-
verbose={verbose}
|
|
47
|
-
commands={commands}
|
|
48
|
-
tools={tools}
|
|
49
|
-
initialMessages={deserializeMessages(log.messages, tools)}
|
|
50
|
-
initialForkNumber={getNextAvailableLogForkNumber(
|
|
51
|
-
log.date,
|
|
52
|
-
log.forkNumber ?? 1,
|
|
53
|
-
0,
|
|
54
|
-
)}
|
|
55
|
-
isDefaultModel={isDefaultModel}
|
|
56
|
-
/>,
|
|
57
|
-
{
|
|
58
|
-
exitOnCtrlC: false,
|
|
59
|
-
},
|
|
60
|
-
)
|
|
61
|
-
} catch (e) {
|
|
62
|
-
logError(`Failed to load conversation: ${e}`)
|
|
63
|
-
throw e
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return <LogSelector logs={logs} onSelect={onSelect} />
|
|
68
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { ModelCapabilities, UnifiedRequestParams, UnifiedResponse } from '../../types/modelCapabilities'
|
|
2
|
-
import { ModelProfile } from '../../utils/config'
|
|
3
|
-
import { Tool } from '../../Tool'
|
|
4
|
-
|
|
5
|
-
export abstract class ModelAPIAdapter {
|
|
6
|
-
constructor(
|
|
7
|
-
protected capabilities: ModelCapabilities,
|
|
8
|
-
protected modelProfile: ModelProfile
|
|
9
|
-
) {}
|
|
10
|
-
|
|
11
|
-
// Subclasses must implement these methods
|
|
12
|
-
abstract createRequest(params: UnifiedRequestParams): any
|
|
13
|
-
abstract parseResponse(response: any): UnifiedResponse
|
|
14
|
-
abstract buildTools(tools: Tool[]): any
|
|
15
|
-
|
|
16
|
-
// Shared utility methods
|
|
17
|
-
protected getMaxTokensParam(): string {
|
|
18
|
-
return this.capabilities.parameters.maxTokensField
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
protected getTemperature(): number {
|
|
22
|
-
if (this.capabilities.parameters.temperatureMode === 'fixed_one') {
|
|
23
|
-
return 1
|
|
24
|
-
}
|
|
25
|
-
if (this.capabilities.parameters.temperatureMode === 'restricted') {
|
|
26
|
-
return Math.min(1, 0.7)
|
|
27
|
-
}
|
|
28
|
-
return 0.7
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
protected shouldIncludeReasoningEffort(): boolean {
|
|
32
|
-
return this.capabilities.parameters.supportsReasoningEffort
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
protected shouldIncludeVerbosity(): boolean {
|
|
36
|
-
return this.capabilities.parameters.supportsVerbosity
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { ModelAPIAdapter } from './base'
|
|
2
|
-
import { UnifiedRequestParams, UnifiedResponse } from '../../types/modelCapabilities'
|
|
3
|
-
import { Tool } from '../../Tool'
|
|
4
|
-
import { zodToJsonSchema } from 'zod-to-json-schema'
|
|
5
|
-
|
|
6
|
-
export class ChatCompletionsAdapter extends ModelAPIAdapter {
|
|
7
|
-
createRequest(params: UnifiedRequestParams): any {
|
|
8
|
-
const { messages, systemPrompt, tools, maxTokens, stream } = params
|
|
9
|
-
|
|
10
|
-
// Build complete message list (including system prompts)
|
|
11
|
-
const fullMessages = this.buildMessages(systemPrompt, messages)
|
|
12
|
-
|
|
13
|
-
// Build request
|
|
14
|
-
const request: any = {
|
|
15
|
-
model: this.modelProfile.modelName,
|
|
16
|
-
messages: fullMessages,
|
|
17
|
-
[this.getMaxTokensParam()]: maxTokens,
|
|
18
|
-
temperature: this.getTemperature()
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Add tools
|
|
22
|
-
if (tools && tools.length > 0) {
|
|
23
|
-
request.tools = this.buildTools(tools)
|
|
24
|
-
request.tool_choice = 'auto'
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Add reasoning effort for GPT-5 via Chat Completions
|
|
28
|
-
if (this.shouldIncludeReasoningEffort() && params.reasoningEffort) {
|
|
29
|
-
request.reasoning_effort = params.reasoningEffort // Chat Completions format
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Add verbosity for GPT-5 via Chat Completions
|
|
33
|
-
if (this.shouldIncludeVerbosity() && params.verbosity) {
|
|
34
|
-
request.verbosity = params.verbosity // Chat Completions format
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Add streaming options
|
|
38
|
-
if (stream) {
|
|
39
|
-
request.stream = true
|
|
40
|
-
request.stream_options = {
|
|
41
|
-
include_usage: true
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// O1 model special handling
|
|
46
|
-
if (this.modelProfile.modelName.startsWith('o1')) {
|
|
47
|
-
delete request.temperature // O1 doesn't support temperature
|
|
48
|
-
delete request.stream // O1 doesn't support streaming
|
|
49
|
-
delete request.stream_options
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return request
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
buildTools(tools: Tool[]): any[] {
|
|
56
|
-
// Chat Completions only supports traditional function calling
|
|
57
|
-
return tools.map(tool => ({
|
|
58
|
-
type: 'function',
|
|
59
|
-
function: {
|
|
60
|
-
name: tool.name,
|
|
61
|
-
description: tool.description || '',
|
|
62
|
-
parameters: tool.inputJSONSchema || zodToJsonSchema(tool.inputSchema)
|
|
63
|
-
}
|
|
64
|
-
}))
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
parseResponse(response: any): UnifiedResponse {
|
|
68
|
-
const choice = response.choices?.[0]
|
|
69
|
-
|
|
70
|
-
return {
|
|
71
|
-
id: response.id || `chatcmpl_${Date.now()}`,
|
|
72
|
-
content: choice?.message?.content || '',
|
|
73
|
-
toolCalls: choice?.message?.tool_calls || [],
|
|
74
|
-
usage: {
|
|
75
|
-
promptTokens: response.usage?.prompt_tokens || 0,
|
|
76
|
-
completionTokens: response.usage?.completion_tokens || 0
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
private buildMessages(systemPrompt: string[], messages: any[]): any[] {
|
|
82
|
-
// Merge system prompts and messages
|
|
83
|
-
const systemMessages = systemPrompt.map(prompt => ({
|
|
84
|
-
role: 'system',
|
|
85
|
-
content: prompt
|
|
86
|
-
}))
|
|
87
|
-
|
|
88
|
-
return [...systemMessages, ...messages]
|
|
89
|
-
}
|
|
90
|
-
}
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { ModelAPIAdapter } from './base'
|
|
2
|
-
import { UnifiedRequestParams, UnifiedResponse } from '../../types/modelCapabilities'
|
|
3
|
-
import { Tool } from '../../Tool'
|
|
4
|
-
import { zodToJsonSchema } from 'zod-to-json-schema'
|
|
5
|
-
|
|
6
|
-
export class ResponsesAPIAdapter extends ModelAPIAdapter {
|
|
7
|
-
createRequest(params: UnifiedRequestParams): any {
|
|
8
|
-
const { messages, systemPrompt, tools, maxTokens } = params
|
|
9
|
-
|
|
10
|
-
// Separate system messages and user messages
|
|
11
|
-
const systemMessages = messages.filter(m => m.role === 'system')
|
|
12
|
-
const nonSystemMessages = messages.filter(m => m.role !== 'system')
|
|
13
|
-
|
|
14
|
-
// Build base request
|
|
15
|
-
const request: any = {
|
|
16
|
-
model: this.modelProfile.modelName,
|
|
17
|
-
input: this.convertMessagesToInput(nonSystemMessages),
|
|
18
|
-
instructions: this.buildInstructions(systemPrompt, systemMessages)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Add token limit
|
|
22
|
-
request[this.getMaxTokensParam()] = maxTokens
|
|
23
|
-
|
|
24
|
-
// Add temperature (GPT-5 only supports 1)
|
|
25
|
-
if (this.getTemperature() === 1) {
|
|
26
|
-
request.temperature = 1
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Add reasoning control - correct format for Responses API
|
|
30
|
-
if (this.shouldIncludeReasoningEffort()) {
|
|
31
|
-
request.reasoning = {
|
|
32
|
-
effort: params.reasoningEffort || this.modelProfile.reasoningEffort || 'medium'
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Add verbosity control - correct format for Responses API
|
|
37
|
-
if (this.shouldIncludeVerbosity()) {
|
|
38
|
-
request.text = {
|
|
39
|
-
verbosity: params.verbosity || 'high' // High verbosity for coding tasks
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Add tools
|
|
44
|
-
if (tools && tools.length > 0) {
|
|
45
|
-
request.tools = this.buildTools(tools)
|
|
46
|
-
|
|
47
|
-
// Handle allowed_tools
|
|
48
|
-
if (params.allowedTools && this.capabilities.toolCalling.supportsAllowedTools) {
|
|
49
|
-
request.tool_choice = {
|
|
50
|
-
type: 'allowed_tools',
|
|
51
|
-
mode: 'auto',
|
|
52
|
-
tools: params.allowedTools
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Add state management
|
|
58
|
-
if (params.previousResponseId && this.capabilities.stateManagement.supportsPreviousResponseId) {
|
|
59
|
-
request.previous_response_id = params.previousResponseId
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return request
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
buildTools(tools: Tool[]): any[] {
|
|
66
|
-
// If freeform not supported, use traditional format
|
|
67
|
-
if (!this.capabilities.toolCalling.supportsFreeform) {
|
|
68
|
-
return tools.map(tool => ({
|
|
69
|
-
type: 'function',
|
|
70
|
-
function: {
|
|
71
|
-
name: tool.name,
|
|
72
|
-
description: tool.description || '',
|
|
73
|
-
parameters: tool.inputJSONSchema || zodToJsonSchema(tool.inputSchema)
|
|
74
|
-
}
|
|
75
|
-
}))
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Custom tools format (GPT-5 feature)
|
|
79
|
-
return tools.map(tool => {
|
|
80
|
-
const hasSchema = tool.inputJSONSchema || tool.inputSchema
|
|
81
|
-
const isCustom = !hasSchema
|
|
82
|
-
|
|
83
|
-
if (isCustom) {
|
|
84
|
-
// Custom tool format
|
|
85
|
-
return {
|
|
86
|
-
type: 'custom',
|
|
87
|
-
name: tool.name,
|
|
88
|
-
description: tool.description || ''
|
|
89
|
-
}
|
|
90
|
-
} else {
|
|
91
|
-
// Traditional function format
|
|
92
|
-
return {
|
|
93
|
-
type: 'function',
|
|
94
|
-
function: {
|
|
95
|
-
name: tool.name,
|
|
96
|
-
description: tool.description || '',
|
|
97
|
-
parameters: tool.inputJSONSchema || zodToJsonSchema(tool.inputSchema)
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
})
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
parseResponse(response: any): UnifiedResponse {
|
|
105
|
-
// Process basic text output
|
|
106
|
-
let content = response.output_text || ''
|
|
107
|
-
|
|
108
|
-
// Process structured output
|
|
109
|
-
if (response.output && Array.isArray(response.output)) {
|
|
110
|
-
const messageItems = response.output.filter(item => item.type === 'message')
|
|
111
|
-
if (messageItems.length > 0) {
|
|
112
|
-
content = messageItems
|
|
113
|
-
.map(item => {
|
|
114
|
-
if (item.content && Array.isArray(item.content)) {
|
|
115
|
-
return item.content
|
|
116
|
-
.filter(c => c.type === 'text')
|
|
117
|
-
.map(c => c.text)
|
|
118
|
-
.join('\n')
|
|
119
|
-
}
|
|
120
|
-
return item.content || ''
|
|
121
|
-
})
|
|
122
|
-
.filter(Boolean)
|
|
123
|
-
.join('\n\n')
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Parse tool calls
|
|
128
|
-
const toolCalls = this.parseToolCalls(response)
|
|
129
|
-
|
|
130
|
-
// Build unified response
|
|
131
|
-
return {
|
|
132
|
-
id: response.id || `resp_${Date.now()}`,
|
|
133
|
-
content,
|
|
134
|
-
toolCalls,
|
|
135
|
-
usage: {
|
|
136
|
-
promptTokens: response.usage?.input_tokens || 0,
|
|
137
|
-
completionTokens: response.usage?.output_tokens || 0,
|
|
138
|
-
reasoningTokens: response.usage?.output_tokens_details?.reasoning_tokens
|
|
139
|
-
},
|
|
140
|
-
responseId: response.id // Save for state management
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
private convertMessagesToInput(messages: any[]): any {
|
|
145
|
-
// Convert messages to Responses API input format
|
|
146
|
-
// May need adjustment based on actual API specification
|
|
147
|
-
return messages
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
private buildInstructions(systemPrompt: string[], systemMessages: any[]): string {
|
|
151
|
-
const systemContent = systemMessages.map(m => m.content).join('\n\n')
|
|
152
|
-
const promptContent = systemPrompt.join('\n\n')
|
|
153
|
-
return [systemContent, promptContent].filter(Boolean).join('\n\n')
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
private parseToolCalls(response: any): any[] {
|
|
157
|
-
if (!response.output || !Array.isArray(response.output)) {
|
|
158
|
-
return []
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return response.output
|
|
162
|
-
.filter(item => item.type === 'tool_call')
|
|
163
|
-
.map(item => ({
|
|
164
|
-
id: item.id || `tool_${Date.now()}`,
|
|
165
|
-
type: 'tool_call',
|
|
166
|
-
name: item.name,
|
|
167
|
-
arguments: item.arguments // Can be text or JSON
|
|
168
|
-
}))
|
|
169
|
-
}
|
|
170
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// Mock browser APIs needed by @statsig/js-client in Node.js environment
|
|
2
|
-
|
|
3
|
-
// Document mock with visibility state tracking
|
|
4
|
-
const mockDocument = {
|
|
5
|
-
visibilityState: 'visible' as const,
|
|
6
|
-
documentElement: {
|
|
7
|
-
lang: 'en',
|
|
8
|
-
},
|
|
9
|
-
addEventListener: (
|
|
10
|
-
_event: string,
|
|
11
|
-
_handler: EventListenerOrEventListenerObject,
|
|
12
|
-
) => {
|
|
13
|
-
// Visibility change events are handled through window.document reference
|
|
14
|
-
},
|
|
15
|
-
} as const
|
|
16
|
-
|
|
17
|
-
// Window mock with focus/blur and beforeunload handling
|
|
18
|
-
export const mockWindow = {
|
|
19
|
-
document: mockDocument,
|
|
20
|
-
location: {
|
|
21
|
-
href: 'node://localhost',
|
|
22
|
-
pathname: '/',
|
|
23
|
-
},
|
|
24
|
-
addEventListener: (
|
|
25
|
-
event: string,
|
|
26
|
-
handler: EventListenerOrEventListenerObject,
|
|
27
|
-
) => {
|
|
28
|
-
if (event === 'beforeunload') {
|
|
29
|
-
// Capture beforeunload handlers and run them on process exit
|
|
30
|
-
process.on('exit', () => {
|
|
31
|
-
if (typeof handler === 'function') {
|
|
32
|
-
handler({} as Event)
|
|
33
|
-
} else {
|
|
34
|
-
handler.handleEvent({} as Event)
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
}
|
|
38
|
-
// Other events (focus/blur) are not critically needed in Node.js
|
|
39
|
-
},
|
|
40
|
-
focus: () => {
|
|
41
|
-
// Focus is a no-op in Node.js
|
|
42
|
-
},
|
|
43
|
-
innerHeight: 768,
|
|
44
|
-
innerWidth: 1024,
|
|
45
|
-
} as const
|
|
46
|
-
|
|
47
|
-
// Navigator mock with minimal beacon support
|
|
48
|
-
export const mockNavigator = {
|
|
49
|
-
sendBeacon: (_url: string, _data: string | Blob): boolean => {
|
|
50
|
-
// Beacons are used for analytics - return success but don't actually send
|
|
51
|
-
return true
|
|
52
|
-
},
|
|
53
|
-
userAgent:
|
|
54
|
-
'Mozilla/5.0 (Node.js) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0',
|
|
55
|
-
language: 'en-US',
|
|
56
|
-
} as const
|
|
57
|
-
|
|
58
|
-
// Only assign mocks if running in Node.js environment
|
|
59
|
-
if (typeof window === 'undefined') {
|
|
60
|
-
// @ts-expect-error: intentionally applying partial mocks for Node.js environment
|
|
61
|
-
global.window = mockWindow
|
|
62
|
-
}
|
|
63
|
-
if (typeof navigator === 'undefined') {
|
|
64
|
-
// @ts-expect-error: intentionally applying partial mocks for Node.js environment
|
|
65
|
-
global.navigator = mockNavigator
|
|
66
|
-
}
|