@shareai-lab/kode 1.1.12 → 1.1.14
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 +83 -57
- package/dist/ProjectOnboarding.js +99 -0
- package/dist/ProjectOnboarding.js.map +7 -0
- package/dist/Tool.js +1 -0
- package/dist/Tool.js.map +7 -0
- package/dist/commands/agents.js +2087 -0
- package/dist/commands/agents.js.map +7 -0
- package/dist/commands/approvedTools.js +36 -0
- package/dist/commands/approvedTools.js.map +7 -0
- package/dist/commands/bug.js +21 -0
- package/dist/commands/bug.js.map +7 -0
- package/dist/commands/clear.js +37 -0
- package/dist/commands/clear.js.map +7 -0
- package/dist/commands/compact.js +104 -0
- package/dist/commands/compact.js.map +7 -0
- package/dist/commands/config.js +20 -0
- package/dist/commands/config.js.map +7 -0
- package/dist/commands/cost.js +19 -0
- package/dist/commands/cost.js.map +7 -0
- package/dist/commands/ctx_viz.js +152 -0
- package/dist/commands/ctx_viz.js.map +7 -0
- package/dist/commands/doctor.js +25 -0
- package/dist/commands/doctor.js.map +7 -0
- package/dist/commands/help.js +20 -0
- package/dist/commands/help.js.map +7 -0
- package/dist/commands/init.js +38 -0
- package/dist/commands/init.js.map +7 -0
- package/dist/commands/listen.js +37 -0
- package/dist/commands/listen.js.map +7 -0
- package/dist/commands/login.js +37 -0
- package/dist/commands/login.js.map +7 -0
- package/dist/commands/logout.js +33 -0
- package/dist/commands/logout.js.map +7 -0
- package/dist/commands/mcp.js +34 -0
- package/dist/commands/mcp.js.map +7 -0
- package/dist/commands/model.js +41 -0
- package/dist/commands/model.js.map +7 -0
- package/dist/commands/modelstatus.js +21 -0
- package/dist/commands/modelstatus.js.map +7 -0
- package/dist/commands/onboarding.js +36 -0
- package/dist/commands/onboarding.js.map +7 -0
- package/dist/commands/pr_comments.js +61 -0
- package/dist/commands/pr_comments.js.map +7 -0
- package/dist/commands/refreshCommands.js +37 -0
- package/dist/commands/refreshCommands.js.map +7 -0
- package/dist/commands/release-notes.js +30 -0
- package/dist/commands/release-notes.js.map +7 -0
- package/dist/commands/resume.js +35 -0
- package/dist/commands/resume.js.map +7 -0
- package/dist/commands/review.js +51 -0
- package/dist/commands/review.js.map +7 -0
- package/dist/commands/terminalSetup.js +163 -0
- package/dist/commands/terminalSetup.js.map +7 -0
- package/dist/commands.js +84 -0
- package/dist/commands.js.map +7 -0
- package/dist/components/ApproveApiKey.js +74 -0
- package/dist/components/ApproveApiKey.js.map +7 -0
- package/dist/components/AsciiLogo.js +12 -0
- package/dist/components/AsciiLogo.js.map +7 -0
- package/dist/components/AutoUpdater.js +74 -0
- package/dist/components/AutoUpdater.js.map +7 -0
- package/dist/components/Bug.js +147 -0
- package/dist/components/Bug.js.map +7 -0
- package/dist/components/Config.js +166 -0
- package/dist/components/Config.js.map +7 -0
- package/dist/components/ConsoleOAuthFlow.js +188 -0
- package/dist/components/ConsoleOAuthFlow.js.map +7 -0
- package/dist/components/Cost.js +13 -0
- package/dist/components/Cost.js.map +7 -0
- package/dist/components/CostThresholdDialog.js +38 -0
- package/dist/components/CostThresholdDialog.js.map +7 -0
- package/dist/components/CustomSelect/option-map.js +32 -0
- package/dist/components/CustomSelect/option-map.js.map +7 -0
- package/dist/components/CustomSelect/select-option.js +34 -0
- package/dist/components/CustomSelect/select-option.js.map +7 -0
- package/dist/components/CustomSelect/select.js +64 -0
- package/dist/components/CustomSelect/select.js.map +7 -0
- package/dist/components/CustomSelect/theme.js +1 -0
- package/dist/components/CustomSelect/theme.js.map +7 -0
- package/dist/components/CustomSelect/use-select-state.js +220 -0
- package/dist/components/CustomSelect/use-select-state.js.map +7 -0
- package/dist/components/CustomSelect/use-select.js +21 -0
- package/dist/components/CustomSelect/use-select.js.map +7 -0
- package/dist/components/FallbackToolUseRejectedMessage.js +11 -0
- package/dist/components/FallbackToolUseRejectedMessage.js.map +7 -0
- package/dist/components/FileEditToolUpdatedMessage.js +31 -0
- package/dist/components/FileEditToolUpdatedMessage.js.map +7 -0
- package/dist/components/Help.js +41 -0
- package/dist/components/Help.js.map +7 -0
- package/dist/components/HighlightedCode.js +30 -0
- package/dist/components/HighlightedCode.js.map +7 -0
- package/dist/components/InvalidConfigDialog.js +83 -0
- package/dist/components/InvalidConfigDialog.js.map +7 -0
- package/dist/components/Link.js +18 -0
- package/dist/components/Link.js.map +7 -0
- package/dist/components/LogSelector.js +50 -0
- package/dist/components/LogSelector.js.map +7 -0
- package/dist/components/Logo.js +89 -0
- package/dist/components/Logo.js.map +7 -0
- package/dist/components/MCPServerApprovalDialog.js +79 -0
- package/dist/components/MCPServerApprovalDialog.js.map +7 -0
- package/dist/components/MCPServerDialogCopy.js +11 -0
- package/dist/components/MCPServerDialogCopy.js.map +7 -0
- package/dist/components/MCPServerMultiselectDialog.js +80 -0
- package/dist/components/MCPServerMultiselectDialog.js.map +7 -0
- package/dist/components/Message.js +146 -0
- package/dist/components/Message.js.map +7 -0
- package/dist/components/MessageResponse.js +9 -0
- package/dist/components/MessageResponse.js.map +7 -0
- package/dist/components/MessageSelector.js +133 -0
- package/dist/components/MessageSelector.js.map +7 -0
- package/dist/components/ModeIndicator.js +38 -0
- package/dist/components/ModeIndicator.js.map +7 -0
- package/dist/components/ModelConfig.js +208 -0
- package/dist/components/ModelConfig.js.map +7 -0
- package/dist/components/ModelListManager.js +140 -0
- package/dist/components/ModelListManager.js.map +7 -0
- package/dist/components/ModelSelector.js +1985 -0
- package/dist/components/ModelSelector.js.map +7 -0
- package/dist/components/ModelStatusDisplay.js +87 -0
- package/dist/components/ModelStatusDisplay.js.map +7 -0
- package/dist/components/Onboarding.js +153 -0
- package/dist/components/Onboarding.js.map +7 -0
- package/dist/components/PressEnterToContinue.js +10 -0
- package/dist/components/PressEnterToContinue.js.map +7 -0
- package/dist/components/PromptInput.js +501 -0
- package/dist/components/PromptInput.js.map +7 -0
- package/dist/components/SentryErrorBoundary.js +27 -0
- package/dist/components/SentryErrorBoundary.js.map +7 -0
- package/dist/components/Spinner.js +101 -0
- package/dist/components/Spinner.js.map +7 -0
- package/dist/components/StickerRequestForm.js +7 -0
- package/dist/components/StickerRequestForm.js.map +7 -0
- package/dist/components/StructuredDiff.js +148 -0
- package/dist/components/StructuredDiff.js.map +7 -0
- package/dist/components/TextInput.js +100 -0
- package/dist/components/TextInput.js.map +7 -0
- package/dist/components/TodoItem.js +35 -0
- package/dist/components/TodoItem.js.map +7 -0
- package/dist/components/TokenWarning.js +19 -0
- package/dist/components/TokenWarning.js.map +7 -0
- package/dist/components/ToolUseLoader.js +24 -0
- package/dist/components/ToolUseLoader.js.map +7 -0
- package/dist/components/TrustDialog.js +76 -0
- package/dist/components/TrustDialog.js.map +7 -0
- package/dist/components/binary-feedback/BinaryFeedback.js +50 -0
- package/dist/components/binary-feedback/BinaryFeedback.js.map +7 -0
- package/dist/components/binary-feedback/BinaryFeedbackOption.js +94 -0
- package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +7 -0
- package/dist/components/binary-feedback/BinaryFeedbackView.js +139 -0
- package/dist/components/binary-feedback/BinaryFeedbackView.js.map +7 -0
- package/dist/components/binary-feedback/utils.js +161 -0
- package/dist/components/binary-feedback/utils.js.map +7 -0
- package/dist/components/messages/AssistantBashOutputMessage.js +23 -0
- package/dist/components/messages/AssistantBashOutputMessage.js.map +7 -0
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js +36 -0
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +7 -0
- package/dist/components/messages/AssistantRedactedThinkingMessage.js +12 -0
- package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +7 -0
- package/dist/components/messages/AssistantTextMessage.js +78 -0
- package/dist/components/messages/AssistantTextMessage.js.map +7 -0
- package/dist/components/messages/AssistantThinkingMessage.js +27 -0
- package/dist/components/messages/AssistantThinkingMessage.js.map +7 -0
- package/dist/components/messages/AssistantToolUseMessage.js +91 -0
- package/dist/components/messages/AssistantToolUseMessage.js.map +7 -0
- package/dist/components/messages/TaskProgressMessage.js +11 -0
- package/dist/components/messages/TaskProgressMessage.js.map +7 -0
- package/dist/components/messages/TaskToolMessage.js +39 -0
- package/dist/components/messages/TaskToolMessage.js.map +7 -0
- package/dist/components/messages/UserBashInputMessage.js +18 -0
- package/dist/components/messages/UserBashInputMessage.js.map +7 -0
- package/dist/components/messages/UserCommandMessage.js +20 -0
- package/dist/components/messages/UserCommandMessage.js.map +7 -0
- package/dist/components/messages/UserKodingInputMessage.js +18 -0
- package/dist/components/messages/UserKodingInputMessage.js.map +7 -0
- package/dist/components/messages/UserPromptMessage.js +20 -0
- package/dist/components/messages/UserPromptMessage.js.map +7 -0
- package/dist/components/messages/UserTextMessage.js +25 -0
- package/dist/components/messages/UserTextMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +10 -0
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +15 -0
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +25 -0
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +47 -0
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +23 -0
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/utils.js +42 -0
- package/dist/components/messages/UserToolResultMessage/utils.js.map +7 -0
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +112 -0
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +7 -0
- package/dist/components/permissions/FallbackPermissionRequest.js +131 -0
- package/dist/components/permissions/FallbackPermissionRequest.js.map +7 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +159 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +7 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +58 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +7 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +153 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +7 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +70 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +7 -0
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +212 -0
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +7 -0
- package/dist/components/permissions/PermissionRequest.js +70 -0
- package/dist/components/permissions/PermissionRequest.js.map +7 -0
- package/dist/components/permissions/PermissionRequestTitle.js +52 -0
- package/dist/components/permissions/PermissionRequestTitle.js.map +7 -0
- package/dist/components/permissions/hooks.js +28 -0
- package/dist/components/permissions/hooks.js.map +7 -0
- package/dist/components/permissions/toolUseOptions.js +46 -0
- package/dist/components/permissions/toolUseOptions.js.map +7 -0
- package/dist/components/permissions/utils.js +21 -0
- package/dist/components/permissions/utils.js.map +7 -0
- package/dist/constants/betas.js +11 -0
- package/dist/constants/betas.js.map +7 -0
- package/dist/constants/claude-asterisk-ascii-art.js +242 -0
- package/dist/constants/claude-asterisk-ascii-art.js.map +7 -0
- package/dist/constants/figures.js +6 -0
- package/dist/constants/figures.js.map +7 -0
- package/dist/constants/keys.js +7 -0
- package/dist/constants/keys.js.map +7 -0
- package/dist/constants/macros.js +13 -0
- package/dist/constants/macros.js.map +7 -0
- package/dist/constants/modelCapabilities.js +154 -0
- package/dist/constants/modelCapabilities.js.map +7 -0
- package/dist/constants/models.js +1029 -0
- package/dist/constants/models.js.map +7 -0
- package/dist/constants/oauth.js +18 -0
- package/dist/constants/oauth.js.map +7 -0
- package/dist/constants/product.js +26 -0
- package/dist/constants/product.js.map +7 -0
- package/dist/constants/prompts.js +168 -0
- package/dist/constants/prompts.js.map +7 -0
- package/dist/constants/releaseNotes.js +9 -0
- package/dist/constants/releaseNotes.js.map +7 -0
- package/dist/context/PermissionContext.js +111 -0
- package/dist/context/PermissionContext.js.map +7 -0
- package/dist/context.js +259 -0
- package/dist/context.js.map +7 -0
- package/dist/cost-tracker.js +76 -0
- package/dist/cost-tracker.js.map +7 -0
- package/dist/entrypoints/cli.js +1101 -0
- package/dist/entrypoints/cli.js.map +7 -0
- package/dist/entrypoints/mcp.js +150 -0
- package/dist/entrypoints/mcp.js.map +7 -0
- package/dist/history.js +25 -0
- package/dist/history.js.map +7 -0
- package/dist/hooks/useApiKeyVerification.js +12 -0
- package/dist/hooks/useApiKeyVerification.js.map +7 -0
- package/dist/hooks/useArrowKeyHistory.js +50 -0
- package/dist/hooks/useArrowKeyHistory.js.map +7 -0
- package/dist/hooks/useCanUseTool.js +112 -0
- package/dist/hooks/useCanUseTool.js.map +7 -0
- package/dist/hooks/useCancelRequest.js +30 -0
- package/dist/hooks/useCancelRequest.js.map +7 -0
- package/dist/hooks/useDoublePress.js +31 -0
- package/dist/hooks/useDoublePress.js.map +7 -0
- package/dist/hooks/useExitOnCtrlCD.js +26 -0
- package/dist/hooks/useExitOnCtrlCD.js.map +7 -0
- package/dist/hooks/useInterval.js +18 -0
- package/dist/hooks/useInterval.js.map +7 -0
- package/dist/hooks/useLogMessages.js +14 -0
- package/dist/hooks/useLogMessages.js.map +7 -0
- package/dist/hooks/useLogStartupTime.js +15 -0
- package/dist/hooks/useLogStartupTime.js.map +7 -0
- package/dist/hooks/useNotifyAfterTimeout.js +42 -0
- package/dist/hooks/useNotifyAfterTimeout.js.map +7 -0
- package/dist/hooks/usePermissionRequestLogging.js +28 -0
- package/dist/hooks/usePermissionRequestLogging.js.map +7 -0
- package/dist/hooks/useTerminalSize.js +38 -0
- package/dist/hooks/useTerminalSize.js.map +7 -0
- package/dist/hooks/useTextInput.js +250 -0
- package/dist/hooks/useTextInput.js.map +7 -0
- package/dist/hooks/useUnifiedCompletion.js +929 -0
- package/dist/hooks/useUnifiedCompletion.js.map +7 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +7 -0
- package/dist/messages.js +33 -0
- package/dist/messages.js.map +7 -0
- package/dist/package.json +1 -0
- package/dist/permissions.js +194 -0
- package/dist/permissions.js.map +7 -0
- package/dist/query.js +492 -0
- package/dist/query.js.map +7 -0
- package/dist/screens/ConfigureNpmPrefix.js +128 -0
- package/dist/screens/ConfigureNpmPrefix.js.map +7 -0
- package/dist/screens/Doctor.js +143 -0
- package/dist/screens/Doctor.js.map +7 -0
- package/dist/screens/LogList.js +55 -0
- package/dist/screens/LogList.js.map +7 -0
- package/dist/screens/REPL.js +596 -0
- package/dist/screens/REPL.js.map +7 -0
- package/dist/screens/ResumeConversation.js +56 -0
- package/dist/screens/ResumeConversation.js.map +7 -0
- package/dist/services/adapters/base.js +29 -0
- package/dist/services/adapters/base.js.map +7 -0
- package/dist/services/adapters/chatCompletions.js +69 -0
- package/dist/services/adapters/chatCompletions.js.map +7 -0
- package/dist/services/adapters/responsesAPI.js +126 -0
- package/dist/services/adapters/responsesAPI.js.map +7 -0
- package/dist/services/browserMocks.js +48 -0
- package/dist/services/browserMocks.js.map +7 -0
- package/dist/services/claude.js +1605 -0
- package/dist/services/claude.js.map +7 -0
- package/dist/services/customCommands.js +359 -0
- package/dist/services/customCommands.js.map +7 -0
- package/dist/services/fileFreshness.js +280 -0
- package/dist/services/fileFreshness.js.map +7 -0
- package/dist/services/gpt5ConnectionTest.js +248 -0
- package/dist/services/gpt5ConnectionTest.js.map +7 -0
- package/dist/services/mcpClient.js +435 -0
- package/dist/services/mcpClient.js.map +7 -0
- package/dist/services/mcpServerApproval.js +55 -0
- package/dist/services/mcpServerApproval.js.map +7 -0
- package/dist/services/mentionProcessor.js +200 -0
- package/dist/services/mentionProcessor.js.map +7 -0
- package/dist/services/modelAdapterFactory.js +47 -0
- package/dist/services/modelAdapterFactory.js.map +7 -0
- package/dist/services/notifier.js +35 -0
- package/dist/services/notifier.js.map +7 -0
- package/dist/services/oauth.js +259 -0
- package/dist/services/oauth.js.map +7 -0
- package/dist/services/openai.js +998 -0
- package/dist/services/openai.js.map +7 -0
- package/dist/services/responseStateManager.js +68 -0
- package/dist/services/responseStateManager.js.map +7 -0
- package/dist/services/sentry.js +9 -0
- package/dist/services/sentry.js.map +7 -0
- package/dist/services/statsig.js +112 -0
- package/dist/services/statsig.js.map +7 -0
- package/dist/services/statsigStorage.js +75 -0
- package/dist/services/statsigStorage.js.map +7 -0
- package/dist/services/systemReminder.js +353 -0
- package/dist/services/systemReminder.js.map +7 -0
- package/dist/services/vcr.js +133 -0
- package/dist/services/vcr.js.map +7 -0
- package/dist/test/testAdapters.js +88 -0
- package/dist/test/testAdapters.js.map +1 -0
- package/dist/tools/ArchitectTool/ArchitectTool.js +119 -0
- package/dist/tools/ArchitectTool/ArchitectTool.js.map +7 -0
- package/dist/tools/ArchitectTool/prompt.js +18 -0
- package/dist/tools/ArchitectTool/prompt.js.map +7 -0
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +423 -0
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +7 -0
- package/dist/tools/BashTool/BashTool.js +188 -0
- package/dist/tools/BashTool/BashTool.js.map +7 -0
- package/dist/tools/BashTool/BashToolResultMessage.js +21 -0
- package/dist/tools/BashTool/BashToolResultMessage.js.map +7 -0
- package/dist/tools/BashTool/OutputLine.js +30 -0
- package/dist/tools/BashTool/OutputLine.js.map +7 -0
- package/dist/tools/BashTool/prompt.js +179 -0
- package/dist/tools/BashTool/prompt.js.map +7 -0
- package/dist/tools/BashTool/utils.js +51 -0
- package/dist/tools/BashTool/utils.js.map +7 -0
- package/dist/tools/FileEditTool/FileEditTool.js +228 -0
- package/dist/tools/FileEditTool/FileEditTool.js.map +7 -0
- package/dist/tools/FileEditTool/prompt.js +54 -0
- package/dist/tools/FileEditTool/prompt.js.map +7 -0
- package/dist/tools/FileEditTool/utils.js +42 -0
- package/dist/tools/FileEditTool/utils.js.map +7 -0
- package/dist/tools/FileReadTool/FileReadTool.js +272 -0
- package/dist/tools/FileReadTool/FileReadTool.js.map +7 -0
- package/dist/tools/FileReadTool/prompt.js +10 -0
- package/dist/tools/FileReadTool/prompt.js.map +7 -0
- package/dist/tools/FileWriteTool/FileWriteTool.js +204 -0
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +7 -0
- package/dist/tools/FileWriteTool/prompt.js +14 -0
- package/dist/tools/FileWriteTool/prompt.js.map +7 -0
- package/dist/tools/GlobTool/GlobTool.js +88 -0
- package/dist/tools/GlobTool/GlobTool.js.map +7 -0
- package/dist/tools/GlobTool/prompt.js +12 -0
- package/dist/tools/GlobTool/prompt.js.map +7 -0
- package/dist/tools/GrepTool/GrepTool.js +107 -0
- package/dist/tools/GrepTool/GrepTool.js.map +7 -0
- package/dist/tools/GrepTool/prompt.js +15 -0
- package/dist/tools/GrepTool/prompt.js.map +7 -0
- package/dist/tools/MCPTool/MCPTool.js +90 -0
- package/dist/tools/MCPTool/MCPTool.js.map +7 -0
- package/dist/tools/MCPTool/prompt.js +7 -0
- package/dist/tools/MCPTool/prompt.js.map +7 -0
- package/dist/tools/MemoryReadTool/MemoryReadTool.js +103 -0
- package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +7 -0
- package/dist/tools/MemoryReadTool/prompt.js +7 -0
- package/dist/tools/MemoryReadTool/prompt.js.map +7 -0
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +77 -0
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +7 -0
- package/dist/tools/MemoryWriteTool/prompt.js +7 -0
- package/dist/tools/MemoryWriteTool/prompt.js.map +7 -0
- package/dist/tools/MultiEditTool/MultiEditTool.js +293 -0
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +7 -0
- package/dist/tools/MultiEditTool/prompt.js +48 -0
- package/dist/tools/MultiEditTool/prompt.js.map +7 -0
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +238 -0
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +7 -0
- package/dist/tools/NotebookEditTool/prompt.js +7 -0
- package/dist/tools/NotebookEditTool/prompt.js.map +7 -0
- package/dist/tools/NotebookReadTool/NotebookReadTool.js +212 -0
- package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +7 -0
- package/dist/tools/NotebookReadTool/prompt.js +7 -0
- package/dist/tools/NotebookReadTool/prompt.js.map +7 -0
- package/dist/tools/StickerRequestTool/StickerRequestTool.js +86 -0
- package/dist/tools/StickerRequestTool/StickerRequestTool.js.map +7 -0
- package/dist/tools/StickerRequestTool/prompt.js +23 -0
- package/dist/tools/StickerRequestTool/prompt.js.map +7 -0
- package/dist/tools/TaskTool/TaskTool.js +308 -0
- package/dist/tools/TaskTool/TaskTool.js.map +7 -0
- package/dist/tools/TaskTool/constants.js +5 -0
- package/dist/tools/TaskTool/constants.js.map +7 -0
- package/dist/tools/TaskTool/prompt.js +82 -0
- package/dist/tools/TaskTool/prompt.js.map +7 -0
- package/dist/tools/ThinkTool/ThinkTool.js +48 -0
- package/dist/tools/ThinkTool/ThinkTool.js.map +7 -0
- package/dist/tools/ThinkTool/prompt.js +16 -0
- package/dist/tools/ThinkTool/prompt.js.map +7 -0
- package/dist/tools/TodoWriteTool/TodoWriteTool.js +216 -0
- package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +7 -0
- package/dist/tools/TodoWriteTool/prompt.js +66 -0
- package/dist/tools/TodoWriteTool/prompt.js.map +7 -0
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +137 -0
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +7 -0
- package/dist/tools/URLFetcherTool/cache.js +45 -0
- package/dist/tools/URLFetcherTool/cache.js.map +7 -0
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js +42 -0
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +7 -0
- package/dist/tools/URLFetcherTool/prompt.js +22 -0
- package/dist/tools/URLFetcherTool/prompt.js.map +7 -0
- package/dist/tools/WebSearchTool/WebSearchTool.js +86 -0
- package/dist/tools/WebSearchTool/WebSearchTool.js.map +7 -0
- package/dist/tools/WebSearchTool/prompt.js +17 -0
- package/dist/tools/WebSearchTool/prompt.js.map +7 -0
- package/dist/tools/WebSearchTool/searchProviders.js +48 -0
- package/dist/tools/WebSearchTool/searchProviders.js.map +7 -0
- package/dist/tools/lsTool/lsTool.js +201 -0
- package/dist/tools/lsTool/lsTool.js.map +7 -0
- package/dist/tools/lsTool/prompt.js +5 -0
- package/dist/tools/lsTool/prompt.js.map +7 -0
- package/dist/tools.js +64 -0
- package/dist/tools.js.map +7 -0
- package/dist/types/PermissionMode.js +82 -0
- package/dist/types/PermissionMode.js.map +7 -0
- package/dist/types/RequestContext.js +47 -0
- package/dist/types/RequestContext.js.map +7 -0
- package/dist/types/common.d.js +1 -0
- package/dist/types/common.d.js.map +7 -0
- package/dist/types/conversation.js +1 -0
- package/dist/types/conversation.js.map +7 -0
- package/dist/types/logs.js +1 -0
- package/dist/types/logs.js.map +7 -0
- package/dist/types/modelCapabilities.js +1 -0
- package/dist/types/modelCapabilities.js.map +7 -0
- package/dist/types/notebook.js +1 -0
- package/dist/types/notebook.js.map +7 -0
- package/dist/utils/Cursor.js +313 -0
- package/dist/utils/Cursor.js.map +7 -0
- package/dist/utils/PersistentShell.js +382 -0
- package/dist/utils/PersistentShell.js.map +7 -0
- package/dist/utils/advancedFuzzyMatcher.js +206 -0
- package/dist/utils/advancedFuzzyMatcher.js.map +7 -0
- package/dist/utils/agentLoader.js +199 -0
- package/dist/utils/agentLoader.js.map +7 -0
- package/dist/utils/agentStorage.js +59 -0
- package/dist/utils/agentStorage.js.map +7 -0
- package/dist/utils/array.js +7 -0
- package/dist/utils/array.js.map +7 -0
- package/dist/utils/ask.js +77 -0
- package/dist/utils/ask.js.map +7 -0
- package/dist/utils/auth.js +11 -0
- package/dist/utils/auth.js.map +7 -0
- package/dist/utils/autoCompactCore.js +149 -0
- package/dist/utils/autoCompactCore.js.map +7 -0
- package/dist/utils/autoUpdater.js +362 -0
- package/dist/utils/autoUpdater.js.map +7 -0
- package/dist/utils/betas.js +21 -0
- package/dist/utils/betas.js.map +7 -0
- package/dist/utils/browser.js +15 -0
- package/dist/utils/browser.js.map +7 -0
- package/dist/utils/cleanup.js +54 -0
- package/dist/utils/cleanup.js.map +7 -0
- package/dist/utils/commands.js +207 -0
- package/dist/utils/commands.js.map +7 -0
- package/dist/utils/commonUnixCommands.js +687 -0
- package/dist/utils/commonUnixCommands.js.map +7 -0
- package/dist/utils/config.js +655 -0
- package/dist/utils/config.js.map +7 -0
- package/dist/utils/conversationRecovery.js +35 -0
- package/dist/utils/conversationRecovery.js.map +7 -0
- package/dist/utils/debugLogger.js +891 -0
- package/dist/utils/debugLogger.js.map +7 -0
- package/dist/utils/diff.js +32 -0
- package/dist/utils/diff.js.map +7 -0
- package/dist/utils/env.js +44 -0
- package/dist/utils/env.js.map +7 -0
- package/dist/utils/errors.js +23 -0
- package/dist/utils/errors.js.map +7 -0
- package/dist/utils/exampleCommands.js +80 -0
- package/dist/utils/exampleCommands.js.map +7 -0
- package/dist/utils/execFileNoThrow.js +44 -0
- package/dist/utils/execFileNoThrow.js.map +7 -0
- package/dist/utils/expertChatStorage.js +78 -0
- package/dist/utils/expertChatStorage.js.map +7 -0
- package/dist/utils/file.js +282 -0
- package/dist/utils/file.js.map +7 -0
- package/dist/utils/fileRecoveryCore.js +41 -0
- package/dist/utils/fileRecoveryCore.js.map +7 -0
- package/dist/utils/format.js +41 -0
- package/dist/utils/format.js.map +7 -0
- package/dist/utils/fuzzyMatcher.js +252 -0
- package/dist/utils/fuzzyMatcher.js.map +7 -0
- package/dist/utils/generators.js +46 -0
- package/dist/utils/generators.js.map +7 -0
- package/dist/utils/git.js +83 -0
- package/dist/utils/git.js.map +7 -0
- package/dist/utils/globalLogger.js +54 -0
- package/dist/utils/globalLogger.js.map +7 -0
- package/dist/utils/http.js +7 -0
- package/dist/utils/http.js.map +7 -0
- package/dist/utils/imagePaste.js +29 -0
- package/dist/utils/imagePaste.js.map +7 -0
- package/dist/utils/json.js +16 -0
- package/dist/utils/json.js.map +7 -0
- package/dist/utils/log.js +298 -0
- package/dist/utils/log.js.map +7 -0
- package/dist/utils/markdown.js +187 -0
- package/dist/utils/markdown.js.map +7 -0
- package/dist/utils/messageContextManager.js +195 -0
- package/dist/utils/messageContextManager.js.map +7 -0
- package/dist/utils/messages.js +633 -0
- package/dist/utils/messages.js.map +7 -0
- package/dist/utils/model.js +687 -0
- package/dist/utils/model.js.map +7 -0
- package/dist/utils/permissions/filesystem.js +80 -0
- package/dist/utils/permissions/filesystem.js.map +7 -0
- package/dist/utils/responseState.js +20 -0
- package/dist/utils/responseState.js.map +7 -0
- package/dist/utils/ripgrep.js +131 -0
- package/dist/utils/ripgrep.js.map +7 -0
- package/dist/utils/secureFile.js +483 -0
- package/dist/utils/secureFile.js.map +7 -0
- package/dist/utils/sessionState.js +31 -0
- package/dist/utils/sessionState.js.map +7 -0
- package/dist/utils/state.js +24 -0
- package/dist/utils/state.js.map +7 -0
- package/dist/utils/style.js +31 -0
- package/dist/utils/style.js.map +7 -0
- package/dist/utils/terminal.js +43 -0
- package/dist/utils/terminal.js.map +7 -0
- package/dist/utils/theme.js +102 -0
- package/dist/utils/theme.js.map +7 -0
- package/dist/utils/thinking.js +103 -0
- package/dist/utils/thinking.js.map +7 -0
- package/dist/utils/todoStorage.js +291 -0
- package/dist/utils/todoStorage.js.map +7 -0
- package/dist/utils/tokens.js +30 -0
- package/dist/utils/tokens.js.map +7 -0
- package/dist/utils/toolExecutionController.js +109 -0
- package/dist/utils/toolExecutionController.js.map +7 -0
- package/dist/utils/unaryLogging.js +14 -0
- package/dist/utils/unaryLogging.js.map +7 -0
- package/dist/utils/user.js +40 -0
- package/dist/utils/user.js.map +7 -0
- package/dist/utils/validate.js +132 -0
- package/dist/utils/validate.js.map +7 -0
- package/dist/yoga.wasm +0 -0
- package/package.json +28 -7
- package/src/Tool.ts +4 -3
- package/src/commands/agents.tsx +10 -4
- package/src/components/messages/AssistantToolUseMessage.tsx +5 -6
- package/src/constants/macros.ts +5 -2
- package/src/entrypoints/cli.tsx +38 -19
- package/src/entrypoints/mcp.ts +1 -2
- package/src/hooks/useDoublePress.ts +0 -1
- package/src/hooks/useTextInput.ts +4 -5
- package/src/hooks/useUnifiedCompletion.ts +2 -2
- package/src/index.ts +34 -0
- package/src/query.ts +13 -8
- package/src/screens/Doctor.tsx +1 -1
- package/src/screens/REPL.tsx +13 -9
- package/src/services/openai.ts +25 -4
- package/src/tools/ArchitectTool/ArchitectTool.tsx +18 -5
- package/src/tools/AskExpertModelTool/AskExpertModelTool.tsx +21 -14
- package/src/tools/FileEditTool/FileEditTool.tsx +6 -2
- package/src/tools/FileWriteTool/FileWriteTool.tsx +7 -3
- package/src/tools/MultiEditTool/MultiEditTool.tsx +26 -4
- package/src/tools/NotebookReadTool/NotebookReadTool.tsx +1 -1
- package/src/tools/StickerRequestTool/StickerRequestTool.tsx +28 -14
- package/src/tools/TaskTool/TaskTool.tsx +8 -36
- package/src/types/common.d.ts +2 -0
- package/src/utils/generators.ts +1 -1
- package/src/utils/messageContextManager.ts +5 -0
- package/src/utils/messages.tsx +8 -2
- package/src/utils/thinking.ts +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { listMCPServers, getClients } from "../services/mcpClient.js";
|
|
2
|
+
import { PRODUCT_COMMAND } from "../constants/product.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { getTheme } from "../utils/theme.js";
|
|
5
|
+
const mcp = {
|
|
6
|
+
type: "local",
|
|
7
|
+
name: "mcp",
|
|
8
|
+
description: "Show MCP server connection status",
|
|
9
|
+
isEnabled: true,
|
|
10
|
+
isHidden: false,
|
|
11
|
+
async call() {
|
|
12
|
+
const servers = listMCPServers();
|
|
13
|
+
const clients = await getClients();
|
|
14
|
+
const theme = getTheme();
|
|
15
|
+
if (Object.keys(servers).length === 0) {
|
|
16
|
+
return `\u23BF No MCP servers configured. Run \`${PRODUCT_COMMAND} mcp\` to learn about how to configure MCP servers.`;
|
|
17
|
+
}
|
|
18
|
+
const serverStatusLines = clients.sort((a, b) => a.name.localeCompare(b.name)).map((client) => {
|
|
19
|
+
const isConnected = client.type === "connected";
|
|
20
|
+
const status = isConnected ? "connected" : "disconnected";
|
|
21
|
+
const coloredStatus = isConnected ? chalk.hex(theme.success)(status) : chalk.hex(theme.error)(status);
|
|
22
|
+
return `\u23BF \u2022 ${client.name}: ${coloredStatus}`;
|
|
23
|
+
});
|
|
24
|
+
return ["\u23BF MCP Server Status", ...serverStatusLines].join("\n");
|
|
25
|
+
},
|
|
26
|
+
userFacingName() {
|
|
27
|
+
return "mcp";
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
var mcp_default = mcp;
|
|
31
|
+
export {
|
|
32
|
+
mcp_default as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/mcp.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Command } from '../commands'\nimport { listMCPServers, getClients } from '../services/mcpClient'\nimport { PRODUCT_COMMAND } from '../constants/product'\nimport chalk from 'chalk'\nimport { getTheme } from '../utils/theme'\n\nconst mcp = {\n type: 'local',\n name: 'mcp',\n description: 'Show MCP server connection status',\n isEnabled: true,\n isHidden: false,\n async call() {\n const servers = listMCPServers()\n const clients = await getClients()\n const theme = getTheme()\n\n if (Object.keys(servers).length === 0) {\n return `\u23BF No MCP servers configured. Run \\`${PRODUCT_COMMAND} mcp\\` to learn about how to configure MCP servers.`\n }\n\n // Sort servers by name and format status with colors\n const serverStatusLines = clients\n .sort((a, b) => a.name.localeCompare(b.name))\n .map(client => {\n const isConnected = client.type === 'connected'\n const status = isConnected ? 'connected' : 'disconnected'\n const coloredStatus = isConnected\n ? chalk.hex(theme.success)(status)\n : chalk.hex(theme.error)(status)\n return `\u23BF \u2022 ${client.name}: ${coloredStatus}`\n })\n\n return ['\u23BF MCP Server Status', ...serverStatusLines].join('\\n')\n },\n userFacingName() {\n return 'mcp'\n },\n} satisfies Command\n\nexport default mcp\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,gBAAgB,kBAAkB;AAC3C,SAAS,uBAAuB;AAChC,OAAO,WAAW;AAClB,SAAS,gBAAgB;AAEzB,MAAM,MAAM;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM,OAAO;AACX,UAAM,UAAU,eAAe;AAC/B,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,QAAQ,SAAS;AAEvB,QAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,aAAO,4CAAuC,eAAe;AAAA,IAC/D;AAGA,UAAM,oBAAoB,QACvB,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,EAC3C,IAAI,YAAU;AACb,YAAM,cAAc,OAAO,SAAS;AACpC,YAAM,SAAS,cAAc,cAAc;AAC3C,YAAM,gBAAgB,cAClB,MAAM,IAAI,MAAM,OAAO,EAAE,MAAM,IAC/B,MAAM,IAAI,MAAM,KAAK,EAAE,MAAM;AACjC,aAAO,kBAAQ,OAAO,IAAI,KAAK,aAAa;AAAA,IAC9C,CAAC;AAEH,WAAO,CAAC,6BAAwB,GAAG,iBAAiB,EAAE,KAAK,IAAI;AAAA,EACjE;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AACF;AAEA,IAAO,cAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ModelConfig } from "../components/ModelConfig.js";
|
|
3
|
+
import { enableConfigs } from "../utils/config.js";
|
|
4
|
+
import { triggerModelConfigChange } from "../messages.js";
|
|
5
|
+
const help = "Change your AI provider and model settings";
|
|
6
|
+
const description = "Change your AI provider and model settings";
|
|
7
|
+
const isEnabled = true;
|
|
8
|
+
const isHidden = false;
|
|
9
|
+
const name = "model";
|
|
10
|
+
const type = "local-jsx";
|
|
11
|
+
function userFacingName() {
|
|
12
|
+
return name;
|
|
13
|
+
}
|
|
14
|
+
async function call(onDone, context) {
|
|
15
|
+
const { abortController } = context;
|
|
16
|
+
enableConfigs();
|
|
17
|
+
abortController?.abort?.();
|
|
18
|
+
return /* @__PURE__ */ React.createElement(
|
|
19
|
+
ModelConfig,
|
|
20
|
+
{
|
|
21
|
+
onClose: () => {
|
|
22
|
+
import("../utils/model.js").then(({ reloadModelManager }) => {
|
|
23
|
+
reloadModelManager();
|
|
24
|
+
triggerModelConfigChange();
|
|
25
|
+
onDone();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
call,
|
|
33
|
+
description,
|
|
34
|
+
help,
|
|
35
|
+
isEnabled,
|
|
36
|
+
isHidden,
|
|
37
|
+
name,
|
|
38
|
+
type,
|
|
39
|
+
userFacingName
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/model.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\nimport { render } from 'ink'\nimport { ModelConfig } from '../components/ModelConfig'\nimport { enableConfigs } from '../utils/config'\nimport { triggerModelConfigChange } from '../messages'\n\nexport const help = 'Change your AI provider and model settings'\nexport const description = 'Change your AI provider and model settings'\nexport const isEnabled = true\nexport const isHidden = false\nexport const name = 'model'\nexport const type = 'local-jsx'\n\nexport function userFacingName(): string {\n return name\n}\n\nexport async function call(\n onDone: (result?: string) => void,\n context: any,\n): Promise<React.ReactNode> {\n const { abortController } = context\n enableConfigs()\n abortController?.abort?.()\n return (\n <ModelConfig\n onClose={() => {\n // Force ModelManager reload to ensure UI sync - wait for completion before closing\n import('../utils/model').then(({ reloadModelManager }) => {\n reloadModelManager()\n // \uD83D\uDD27 Critical fix: Trigger global UI refresh after model config changes\n // This ensures PromptInput component detects ModelManager singleton state changes\n triggerModelConfigChange()\n // Only close after reload is complete to ensure UI synchronization\n onDone()\n })\n }}\n />\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,WAAW;AAElB,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,gCAAgC;AAElC,MAAM,OAAO;AACb,MAAM,cAAc;AACpB,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,OAAO;AAEb,SAAS,iBAAyB;AACvC,SAAO;AACT;AAEA,eAAsB,KACpB,QACA,SAC0B;AAC1B,QAAM,EAAE,gBAAgB,IAAI;AAC5B,gBAAc;AACd,mBAAiB,QAAQ;AACzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,MAAM;AAEb,eAAO,gBAAgB,EAAE,KAAK,CAAC,EAAE,mBAAmB,MAAM;AACxD,6BAAmB;AAGnB,mCAAyB;AAEzB,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ModelStatusDisplay } from "../components/ModelStatusDisplay.js";
|
|
3
|
+
const modelstatus = {
|
|
4
|
+
name: "modelstatus",
|
|
5
|
+
description: "Display current model configuration and status",
|
|
6
|
+
aliases: ["ms", "model-status"],
|
|
7
|
+
isEnabled: true,
|
|
8
|
+
isHidden: false,
|
|
9
|
+
userFacingName() {
|
|
10
|
+
return "modelstatus";
|
|
11
|
+
},
|
|
12
|
+
type: "local-jsx",
|
|
13
|
+
call(onDone) {
|
|
14
|
+
return Promise.resolve(/* @__PURE__ */ React.createElement(ModelStatusDisplay, { onClose: onDone }));
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var modelstatus_default = modelstatus;
|
|
18
|
+
export {
|
|
19
|
+
modelstatus_default as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=modelstatus.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/modelstatus.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\nimport type { Command } from '../commands'\nimport { ModelStatusDisplay } from '../components/ModelStatusDisplay'\n\nconst modelstatus: Command = {\n name: 'modelstatus',\n description: 'Display current model configuration and status',\n aliases: ['ms', 'model-status'],\n isEnabled: true,\n isHidden: false,\n userFacingName() {\n return 'modelstatus'\n },\n type: 'local-jsx',\n call(onDone) {\n return Promise.resolve(<ModelStatusDisplay onClose={onDone} />)\n },\n}\n\nexport default modelstatus\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,WAAW;AAElB,SAAS,0BAA0B;AAEnC,MAAM,cAAuB;AAAA,EAC3B,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,CAAC,MAAM,cAAc;AAAA,EAC9B,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM;AAAA,EACN,KAAK,QAAQ;AACX,WAAO,QAAQ,QAAQ,oCAAC,sBAAmB,SAAS,QAAQ,CAAE;AAAA,EAChE;AACF;AAEA,IAAO,sBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Onboarding } from "../components/Onboarding.js";
|
|
3
|
+
import { clearTerminal } from "../utils/terminal.js";
|
|
4
|
+
import { getGlobalConfig, saveGlobalConfig } from "../utils/config.js";
|
|
5
|
+
import { clearConversation } from "./clear.js";
|
|
6
|
+
var onboarding_default = {
|
|
7
|
+
type: "local-jsx",
|
|
8
|
+
name: "onboarding",
|
|
9
|
+
description: "Run through the onboarding flow",
|
|
10
|
+
isEnabled: true,
|
|
11
|
+
isHidden: false,
|
|
12
|
+
async call(onDone, context) {
|
|
13
|
+
await clearTerminal();
|
|
14
|
+
const config = getGlobalConfig();
|
|
15
|
+
saveGlobalConfig({
|
|
16
|
+
...config,
|
|
17
|
+
theme: "dark"
|
|
18
|
+
});
|
|
19
|
+
return /* @__PURE__ */ React.createElement(
|
|
20
|
+
Onboarding,
|
|
21
|
+
{
|
|
22
|
+
onDone: async () => {
|
|
23
|
+
clearConversation(context);
|
|
24
|
+
onDone();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
},
|
|
29
|
+
userFacingName() {
|
|
30
|
+
return "onboarding";
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
onboarding_default as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/onboarding.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport type { Command } from '../commands'\nimport { Onboarding } from '../components/Onboarding'\nimport { clearTerminal } from '../utils/terminal'\nimport { getGlobalConfig, saveGlobalConfig } from '../utils/config'\nimport { clearConversation } from './clear'\n\nexport default {\n type: 'local-jsx',\n name: 'onboarding',\n description: 'Run through the onboarding flow',\n isEnabled: true,\n isHidden: false,\n async call(onDone, context) {\n await clearTerminal()\n const config = getGlobalConfig()\n saveGlobalConfig({\n ...config,\n theme: 'dark',\n })\n\n return (\n <Onboarding\n onDone={async () => {\n clearConversation(context)\n onDone()\n }}\n />\n )\n },\n userFacingName() {\n return 'onboarding'\n },\n} satisfies Command\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;AAEvB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,yBAAyB;AAElC,IAAO,qBAAQ;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM,KAAK,QAAQ,SAAS;AAC1B,UAAM,cAAc;AACpB,UAAM,SAAS,gBAAgB;AAC/B,qBAAiB;AAAA,MACf,GAAG;AAAA,MACH,OAAO;AAAA,IACT,CAAC;AAED,WACE;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,YAAY;AAClB,4BAAkB,OAAO;AACzB,iBAAO;AAAA,QACT;AAAA;AAAA,IACF;AAAA,EAEJ;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var pr_comments_default = {
|
|
2
|
+
type: "prompt",
|
|
3
|
+
name: "pr-comments",
|
|
4
|
+
description: "Get comments from a GitHub pull request",
|
|
5
|
+
progressMessage: "fetching PR comments",
|
|
6
|
+
isEnabled: true,
|
|
7
|
+
isHidden: false,
|
|
8
|
+
userFacingName() {
|
|
9
|
+
return "pr-comments";
|
|
10
|
+
},
|
|
11
|
+
async getPromptForCommand(args) {
|
|
12
|
+
return [
|
|
13
|
+
{
|
|
14
|
+
role: "user",
|
|
15
|
+
content: [
|
|
16
|
+
{
|
|
17
|
+
type: "text",
|
|
18
|
+
text: `You are an AI assistant integrated into a git-based version control system. Your task is to fetch and display comments from a GitHub pull request.
|
|
19
|
+
|
|
20
|
+
Follow these steps:
|
|
21
|
+
|
|
22
|
+
1. Use \`gh pr view --json number,headRepository\` to get the PR number and repository info
|
|
23
|
+
2. Use \`gh api /repos/{owner}/{repo}/issues/{number}/comments\` to get PR-level comments
|
|
24
|
+
3. Use \`gh api /repos/{owner}/{repo}/pulls/{number}/comments\` to get review comments. Pay particular attention to the following fields: \`body\`, \`diff_hunk\`, \`path\`, \`line\`, etc. If the comment references some code, consider fetching it using eg \`gh api /repos/{owner}/{repo}/contents/{path}?ref={branch} | jq .content -r | base64 -d\`
|
|
25
|
+
4. Parse and format all comments in a readable way
|
|
26
|
+
5. Return ONLY the formatted comments, with no additional text
|
|
27
|
+
|
|
28
|
+
Format the comments as:
|
|
29
|
+
|
|
30
|
+
## Comments
|
|
31
|
+
|
|
32
|
+
[For each comment thread:]
|
|
33
|
+
- @author file.ts#line:
|
|
34
|
+
\`\`\`diff
|
|
35
|
+
[diff_hunk from the API response]
|
|
36
|
+
\`\`\`
|
|
37
|
+
> quoted comment text
|
|
38
|
+
|
|
39
|
+
[any replies indented]
|
|
40
|
+
|
|
41
|
+
If there are no comments, return "No comments found."
|
|
42
|
+
|
|
43
|
+
Remember:
|
|
44
|
+
1. Only show the actual comments, no explanatory text
|
|
45
|
+
2. Include both PR-level and code review comments
|
|
46
|
+
3. Preserve the threading/nesting of comment replies
|
|
47
|
+
4. Show the file and line number context for code review comments
|
|
48
|
+
5. Use jq to parse the JSON responses from the GitHub API
|
|
49
|
+
|
|
50
|
+
${args ? "Additional user input: " + args : ""}
|
|
51
|
+
`
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
export {
|
|
59
|
+
pr_comments_default as default
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=pr_comments.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/pr_comments.ts"],
|
|
4
|
+
"sourcesContent": ["import { Command } from '../commands'\n\nexport default {\n type: 'prompt',\n name: 'pr-comments',\n description: 'Get comments from a GitHub pull request',\n progressMessage: 'fetching PR comments',\n isEnabled: true,\n isHidden: false,\n userFacingName() {\n return 'pr-comments'\n },\n async getPromptForCommand(args: string) {\n return [\n {\n role: 'user',\n content: [\n {\n type: 'text',\n text: `You are an AI assistant integrated into a git-based version control system. Your task is to fetch and display comments from a GitHub pull request.\n\nFollow these steps:\n\n1. Use \\`gh pr view --json number,headRepository\\` to get the PR number and repository info\n2. Use \\`gh api /repos/{owner}/{repo}/issues/{number}/comments\\` to get PR-level comments\n3. Use \\`gh api /repos/{owner}/{repo}/pulls/{number}/comments\\` to get review comments. Pay particular attention to the following fields: \\`body\\`, \\`diff_hunk\\`, \\`path\\`, \\`line\\`, etc. If the comment references some code, consider fetching it using eg \\`gh api /repos/{owner}/{repo}/contents/{path}?ref={branch} | jq .content -r | base64 -d\\`\n4. Parse and format all comments in a readable way\n5. Return ONLY the formatted comments, with no additional text\n\nFormat the comments as:\n\n## Comments\n\n[For each comment thread:]\n- @author file.ts#line:\n \\`\\`\\`diff\n [diff_hunk from the API response]\n \\`\\`\\`\n > quoted comment text\n \n [any replies indented]\n\nIf there are no comments, return \"No comments found.\"\n\nRemember:\n1. Only show the actual comments, no explanatory text\n2. Include both PR-level and code review comments\n3. Preserve the threading/nesting of comment replies\n4. Show the file and line number context for code review comments\n5. Use jq to parse the JSON responses from the GitHub API\n\n${args ? 'Additional user input: ' + args : ''}\n`,\n },\n ],\n },\n ]\n },\n} satisfies Command\n"],
|
|
5
|
+
"mappings": "AAEA,IAAO,sBAAQ;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM,oBAAoB,MAAc;AACtC,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgChB,OAAO,4BAA4B,OAAO,EAAE;AAAA;AAAA,UAEpC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { reloadCustomCommands } from "../services/customCommands.js";
|
|
2
|
+
import { getCommands } from "../commands.js";
|
|
3
|
+
const refreshCommands = {
|
|
4
|
+
type: "local",
|
|
5
|
+
name: "refresh-commands",
|
|
6
|
+
description: "Reload custom commands from filesystem",
|
|
7
|
+
isEnabled: true,
|
|
8
|
+
isHidden: false,
|
|
9
|
+
async call(_, context) {
|
|
10
|
+
try {
|
|
11
|
+
reloadCustomCommands();
|
|
12
|
+
getCommands.cache.clear?.();
|
|
13
|
+
const commands = await getCommands();
|
|
14
|
+
const customCommands = commands.filter(
|
|
15
|
+
(cmd) => cmd.name.startsWith("project:") || cmd.name.startsWith("user:")
|
|
16
|
+
);
|
|
17
|
+
return `\u2705 Commands refreshed successfully!
|
|
18
|
+
|
|
19
|
+
Custom commands reloaded: ${customCommands.length}
|
|
20
|
+
- Project commands: ${customCommands.filter((cmd) => cmd.name.startsWith("project:")).length}
|
|
21
|
+
- User commands: ${customCommands.filter((cmd) => cmd.name.startsWith("user:")).length}
|
|
22
|
+
|
|
23
|
+
Use /help to see updated command list.`;
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.error("Failed to refresh commands:", error);
|
|
26
|
+
return "\u274C Failed to refresh commands. Check console for details.";
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
userFacingName() {
|
|
30
|
+
return "refresh-commands";
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var refreshCommands_default = refreshCommands;
|
|
34
|
+
export {
|
|
35
|
+
refreshCommands_default as default
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=refreshCommands.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/refreshCommands.ts"],
|
|
4
|
+
"sourcesContent": ["import { Command } from '../commands'\nimport { reloadCustomCommands } from '../services/customCommands'\nimport { getCommands } from '../commands'\n\n/**\n * Refresh Commands - Reload custom commands from filesystem\n *\n * This command provides a runtime mechanism to refresh the custom commands\n * cache without restarting the application. It's particularly useful during\n * development or when users are actively creating/modifying custom commands.\n *\n * The command follows the standard local command pattern used throughout\n * the project and provides detailed feedback about the refresh operation.\n */\nconst refreshCommands = {\n type: 'local',\n name: 'refresh-commands',\n description: 'Reload custom commands from filesystem',\n isEnabled: true,\n isHidden: false,\n async call(_, context) {\n try {\n // Clear custom commands cache to force filesystem rescan\n reloadCustomCommands()\n\n // Clear the main commands cache to ensure full reload\n // This ensures that changes to custom commands are reflected in the main command list\n getCommands.cache.clear?.()\n\n // Reload commands to get updated count and validate the refresh\n const commands = await getCommands()\n const customCommands = commands.filter(\n cmd => cmd.name.startsWith('project:') || cmd.name.startsWith('user:'),\n )\n\n // Provide detailed feedback about the refresh operation\n return `\u2705 Commands refreshed successfully!\n\nCustom commands reloaded: ${customCommands.length}\n- Project commands: ${customCommands.filter(cmd => cmd.name.startsWith('project:')).length}\n- User commands: ${customCommands.filter(cmd => cmd.name.startsWith('user:')).length}\n\nUse /help to see updated command list.`\n } catch (error) {\n console.error('Failed to refresh commands:', error)\n return '\u274C Failed to refresh commands. Check console for details.'\n }\n },\n userFacingName() {\n return 'refresh-commands'\n },\n} satisfies Command\n\nexport default refreshCommands\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAY5B,MAAM,kBAAkB;AAAA,EACtB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM,KAAK,GAAG,SAAS;AACrB,QAAI;AAEF,2BAAqB;AAIrB,kBAAY,MAAM,QAAQ;AAG1B,YAAM,WAAW,MAAM,YAAY;AACnC,YAAM,iBAAiB,SAAS;AAAA,QAC9B,SAAO,IAAI,KAAK,WAAW,UAAU,KAAK,IAAI,KAAK,WAAW,OAAO;AAAA,MACvE;AAGA,aAAO;AAAA;AAAA,4BAEe,eAAe,MAAM;AAAA,sBAC3B,eAAe,OAAO,SAAO,IAAI,KAAK,WAAW,UAAU,CAAC,EAAE,MAAM;AAAA,mBACvE,eAAe,OAAO,SAAO,IAAI,KAAK,WAAW,OAAO,CAAC,EAAE,MAAM;AAAA;AAAA;AAAA,IAGhF,SAAS,OAAO;AACd,cAAQ,MAAM,+BAA+B,KAAK;AAClD,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AACF;AAEA,IAAO,0BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { MACRO } from "../constants/macros.js";
|
|
2
|
+
import { RELEASE_NOTES } from "../constants/releaseNotes.js";
|
|
3
|
+
const releaseNotes = {
|
|
4
|
+
description: "Show release notes for the current or specified version",
|
|
5
|
+
isEnabled: false,
|
|
6
|
+
isHidden: false,
|
|
7
|
+
name: "release-notes",
|
|
8
|
+
userFacingName() {
|
|
9
|
+
return "release-notes";
|
|
10
|
+
},
|
|
11
|
+
type: "local",
|
|
12
|
+
async call(args) {
|
|
13
|
+
const currentVersion = MACRO.VERSION;
|
|
14
|
+
const requestedVersion = args ? args.trim() : currentVersion;
|
|
15
|
+
const notes = RELEASE_NOTES[requestedVersion];
|
|
16
|
+
if (!notes || notes.length === 0) {
|
|
17
|
+
return `No release notes available for version ${requestedVersion}.`;
|
|
18
|
+
}
|
|
19
|
+
const header = `Release notes for version ${requestedVersion}:`;
|
|
20
|
+
const formattedNotes = notes.map((note) => `\u2022 ${note}`).join("\n");
|
|
21
|
+
return `${header}
|
|
22
|
+
|
|
23
|
+
${formattedNotes}`;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var release_notes_default = releaseNotes;
|
|
27
|
+
export {
|
|
28
|
+
release_notes_default as default
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=release-notes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/release-notes.ts"],
|
|
4
|
+
"sourcesContent": ["import { MACRO } from '../constants/macros.js'\nimport type { Command } from '../commands'\nimport { RELEASE_NOTES } from '../constants/releaseNotes'\n\nconst releaseNotes: Command = {\n description: 'Show release notes for the current or specified version',\n isEnabled: false,\n isHidden: false,\n name: 'release-notes',\n userFacingName() {\n return 'release-notes'\n },\n type: 'local',\n async call(args) {\n const currentVersion = MACRO.VERSION\n\n // If a specific version is requested, show that version's notes\n const requestedVersion = args ? args.trim() : currentVersion\n\n // Get the requested version's notes\n const notes = RELEASE_NOTES[requestedVersion]\n\n if (!notes || notes.length === 0) {\n return `No release notes available for version ${requestedVersion}.`\n }\n\n const header = `Release notes for version ${requestedVersion}:`\n const formattedNotes = notes.map(note => `\u2022 ${note}`).join('\\n')\n\n return `${header}\\n\\n${formattedNotes}`\n },\n}\n\nexport default releaseNotes\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,aAAa;AAEtB,SAAS,qBAAqB;AAE9B,MAAM,eAAwB;AAAA,EAC5B,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM;AAAA,EACN,MAAM,KAAK,MAAM;AACf,UAAM,iBAAiB,MAAM;AAG7B,UAAM,mBAAmB,OAAO,KAAK,KAAK,IAAI;AAG9C,UAAM,QAAQ,cAAc,gBAAgB;AAE5C,QAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC,aAAO,0CAA0C,gBAAgB;AAAA,IACnE;AAEA,UAAM,SAAS,6BAA6B,gBAAgB;AAC5D,UAAM,iBAAiB,MAAM,IAAI,UAAQ,UAAK,IAAI,EAAE,EAAE,KAAK,IAAI;AAE/D,WAAO,GAAG,MAAM;AAAA;AAAA,EAAO,cAAc;AAAA,EACvC;AACF;AAEA,IAAO,wBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ResumeConversation } from "../screens/ResumeConversation.js";
|
|
3
|
+
import { render } from "ink";
|
|
4
|
+
import { CACHE_PATHS, loadLogList } from "../utils/log.js";
|
|
5
|
+
var resume_default = {
|
|
6
|
+
type: "local-jsx",
|
|
7
|
+
name: "resume",
|
|
8
|
+
description: "Resume a previous conversation",
|
|
9
|
+
isEnabled: true,
|
|
10
|
+
isHidden: false,
|
|
11
|
+
userFacingName() {
|
|
12
|
+
return "resume";
|
|
13
|
+
},
|
|
14
|
+
async call(onDone, context) {
|
|
15
|
+
const { commands = [], tools = [], verbose = false } = context.options || {};
|
|
16
|
+
const logs = await loadLogList(CACHE_PATHS.messages());
|
|
17
|
+
render(
|
|
18
|
+
/* @__PURE__ */ React.createElement(
|
|
19
|
+
ResumeConversation,
|
|
20
|
+
{
|
|
21
|
+
commands,
|
|
22
|
+
context: { unmount: onDone },
|
|
23
|
+
logs,
|
|
24
|
+
tools,
|
|
25
|
+
verbose
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
resume_default as default
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=resume.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/resume.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport type { Command } from '../commands'\nimport { ResumeConversation } from '../screens/ResumeConversation'\nimport { render } from 'ink'\nimport { CACHE_PATHS, loadLogList } from '../utils/log'\n\nexport default {\n type: 'local-jsx',\n name: 'resume',\n description: 'Resume a previous conversation',\n isEnabled: true,\n isHidden: false,\n userFacingName() {\n return 'resume'\n },\n async call(onDone, context) {\n const { commands = [], tools = [], verbose = false } = context.options || {}\n const logs = await loadLogList(CACHE_PATHS.messages())\n render(\n <ResumeConversation\n commands={commands}\n context={{ unmount: onDone }}\n logs={logs}\n tools={tools}\n verbose={verbose}\n />,\n )\n // This return is here for type only\n return null\n },\n} satisfies Command\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;AAEvB,SAAS,0BAA0B;AACnC,SAAS,cAAc;AACvB,SAAS,aAAa,mBAAmB;AAEzC,IAAO,iBAAQ;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM,KAAK,QAAQ,SAAS;AAC1B,UAAM,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,UAAU,MAAM,IAAI,QAAQ,WAAW,CAAC;AAC3E,UAAM,OAAO,MAAM,YAAY,YAAY,SAAS,CAAC;AACrD;AAAA,MACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,SAAS,EAAE,SAAS,OAAO;AAAA,UAC3B;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { BashTool } from "../tools/BashTool/BashTool.js";
|
|
2
|
+
var review_default = {
|
|
3
|
+
type: "prompt",
|
|
4
|
+
name: "review",
|
|
5
|
+
description: "Review a pull request",
|
|
6
|
+
isEnabled: true,
|
|
7
|
+
isHidden: false,
|
|
8
|
+
progressMessage: "reviewing pull request",
|
|
9
|
+
userFacingName() {
|
|
10
|
+
return "review";
|
|
11
|
+
},
|
|
12
|
+
async getPromptForCommand(args) {
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
role: "user",
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: "text",
|
|
19
|
+
text: `
|
|
20
|
+
You are an expert code reviewer. Follow these steps:
|
|
21
|
+
|
|
22
|
+
1. If no PR number is provided in the args, use ${BashTool.name}("gh pr list") to show open PRs
|
|
23
|
+
2. If a PR number is provided, use ${BashTool.name}("gh pr view <number>") to get PR details
|
|
24
|
+
3. Use ${BashTool.name}("gh pr diff <number>") to get the diff
|
|
25
|
+
4. Analyze the changes and provide a thorough code review that includes:
|
|
26
|
+
- Overview of what the PR does
|
|
27
|
+
- Analysis of code quality and style
|
|
28
|
+
- Specific suggestions for improvements
|
|
29
|
+
- Any potential issues or risks
|
|
30
|
+
|
|
31
|
+
Keep your review concise but thorough. Focus on:
|
|
32
|
+
- Code correctness
|
|
33
|
+
- Following project conventions
|
|
34
|
+
- Performance implications
|
|
35
|
+
- Test coverage
|
|
36
|
+
- Security considerations
|
|
37
|
+
|
|
38
|
+
Format your review with clear sections and bullet points.
|
|
39
|
+
|
|
40
|
+
PR number: ${args}
|
|
41
|
+
`
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export {
|
|
49
|
+
review_default as default
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=review.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/review.ts"],
|
|
4
|
+
"sourcesContent": ["import { Command } from '../commands'\nimport { BashTool } from '../tools/BashTool/BashTool'\n\nexport default {\n type: 'prompt',\n name: 'review',\n description: 'Review a pull request',\n isEnabled: true,\n isHidden: false,\n progressMessage: 'reviewing pull request',\n userFacingName() {\n return 'review'\n },\n async getPromptForCommand(args) {\n return [\n {\n role: 'user',\n content: [\n {\n type: 'text',\n text: `\n You are an expert code reviewer. Follow these steps:\n\n 1. If no PR number is provided in the args, use ${BashTool.name}(\"gh pr list\") to show open PRs\n 2. If a PR number is provided, use ${BashTool.name}(\"gh pr view <number>\") to get PR details\n 3. Use ${BashTool.name}(\"gh pr diff <number>\") to get the diff\n 4. Analyze the changes and provide a thorough code review that includes:\n - Overview of what the PR does\n - Analysis of code quality and style\n - Specific suggestions for improvements\n - Any potential issues or risks\n \n Keep your review concise but thorough. Focus on:\n - Code correctness\n - Following project conventions\n - Performance implications\n - Test coverage\n - Security considerations\n\n Format your review with clear sections and bullet points.\n\n PR number: ${args}\n `,\n },\n ],\n },\n ]\n },\n} satisfies Command\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,gBAAgB;AAEzB,IAAO,iBAAQ;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM,oBAAoB,MAAM;AAC9B,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA;AAAA;AAAA,wDAGsC,SAAS,IAAI;AAAA,2CAC1B,SAAS,IAAI;AAAA,eACzC,SAAS,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAgBT,IAAI;AAAA;AAAA,UAEb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { EOL, platform, homedir } from "os";
|
|
2
|
+
import { execFileNoThrow } from "../utils/execFileNoThrow.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { getTheme } from "../utils/theme.js";
|
|
5
|
+
import { env } from "../utils/env.js";
|
|
6
|
+
import { getGlobalConfig, saveGlobalConfig } from "../utils/config.js";
|
|
7
|
+
import { markProjectOnboardingComplete } from "../ProjectOnboarding.js";
|
|
8
|
+
import { readFileSync, writeFileSync } from "fs";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { safeParseJSON } from "../utils/json.js";
|
|
11
|
+
import { logError } from "../utils/log.js";
|
|
12
|
+
const terminalSetup = {
|
|
13
|
+
type: "local",
|
|
14
|
+
name: "terminal-setup",
|
|
15
|
+
userFacingName() {
|
|
16
|
+
return "terminal-setup";
|
|
17
|
+
},
|
|
18
|
+
description: "Install Shift+Enter key binding for newlines (iTerm2 and VSCode only)",
|
|
19
|
+
isEnabled: platform() === "darwin" && env.terminal === "iTerm.app" || env.terminal === "vscode",
|
|
20
|
+
isHidden: false,
|
|
21
|
+
async call() {
|
|
22
|
+
let result = "";
|
|
23
|
+
switch (env.terminal) {
|
|
24
|
+
case "iTerm.app":
|
|
25
|
+
result = await installBindingsForITerm2();
|
|
26
|
+
break;
|
|
27
|
+
case "vscode":
|
|
28
|
+
result = installBindingsForVSCodeTerminal();
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
const config = getGlobalConfig();
|
|
32
|
+
config.shiftEnterKeyBindingInstalled = true;
|
|
33
|
+
saveGlobalConfig(config);
|
|
34
|
+
markProjectOnboardingComplete();
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
function isShiftEnterKeyBindingInstalled() {
|
|
39
|
+
return getGlobalConfig().shiftEnterKeyBindingInstalled === true;
|
|
40
|
+
}
|
|
41
|
+
function handleHashCommand(interpreted) {
|
|
42
|
+
try {
|
|
43
|
+
const cwd = process.cwd();
|
|
44
|
+
const codeContextPath = join(cwd, "AGENTS.md");
|
|
45
|
+
const claudePath = join(cwd, "CLAUDE.md");
|
|
46
|
+
const filesToUpdate = [];
|
|
47
|
+
filesToUpdate.push({ path: codeContextPath, name: "AGENTS.md" });
|
|
48
|
+
try {
|
|
49
|
+
readFileSync(claudePath, "utf-8");
|
|
50
|
+
filesToUpdate.push({ path: claudePath, name: "CLAUDE.md" });
|
|
51
|
+
} catch {
|
|
52
|
+
}
|
|
53
|
+
const now = /* @__PURE__ */ new Date();
|
|
54
|
+
const timezoneMatch = now.toString().match(/\(([A-Z]+)\)/);
|
|
55
|
+
const timezone = timezoneMatch ? timezoneMatch[1] : now.toLocaleTimeString("en-us", { timeZoneName: "short" }).split(" ").pop();
|
|
56
|
+
const timestamp = interpreted.includes(now.getFullYear().toString()) ? "" : `
|
|
57
|
+
|
|
58
|
+
_Added on ${now.toLocaleString()} ${timezone}_`;
|
|
59
|
+
const updatedFiles = [];
|
|
60
|
+
for (const file of filesToUpdate) {
|
|
61
|
+
try {
|
|
62
|
+
let existingContent = "";
|
|
63
|
+
try {
|
|
64
|
+
existingContent = readFileSync(file.path, "utf-8").trim();
|
|
65
|
+
} catch (error) {
|
|
66
|
+
}
|
|
67
|
+
const separator = existingContent ? "\n\n" : "";
|
|
68
|
+
const newContent = `${existingContent}${separator}${interpreted}${timestamp}`;
|
|
69
|
+
writeFileSync(file.path, newContent, "utf-8");
|
|
70
|
+
updatedFiles.push(file.name);
|
|
71
|
+
} catch (error) {
|
|
72
|
+
logError(error);
|
|
73
|
+
console.error(
|
|
74
|
+
chalk.hex(getTheme().error)(
|
|
75
|
+
`Failed to update ${file.name}: ${error.message}`
|
|
76
|
+
)
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (updatedFiles.length > 0) {
|
|
81
|
+
console.log(
|
|
82
|
+
chalk.hex(getTheme().success)(
|
|
83
|
+
`Added note to ${updatedFiles.join(" and ")}`
|
|
84
|
+
)
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
} catch (e) {
|
|
88
|
+
logError(e);
|
|
89
|
+
console.error(
|
|
90
|
+
chalk.hex(getTheme().error)(`Failed to add note: ${e.message}`)
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
var terminalSetup_default = terminalSetup;
|
|
95
|
+
async function installBindingsForITerm2() {
|
|
96
|
+
const { code } = await execFileNoThrow("defaults", [
|
|
97
|
+
"write",
|
|
98
|
+
"com.googlecode.iterm2",
|
|
99
|
+
"GlobalKeyMap",
|
|
100
|
+
"-dict-add",
|
|
101
|
+
"0xd-0x20000-0x24",
|
|
102
|
+
`<dict>
|
|
103
|
+
<key>Text</key>
|
|
104
|
+
<string>\\n</string>
|
|
105
|
+
<key>Action</key>
|
|
106
|
+
<integer>12</integer>
|
|
107
|
+
<key>Version</key>
|
|
108
|
+
<integer>1</integer>
|
|
109
|
+
<key>Keycode</key>
|
|
110
|
+
<integer>13</integer>
|
|
111
|
+
<key>Modifiers</key>
|
|
112
|
+
<integer>131072</integer>
|
|
113
|
+
</dict>`
|
|
114
|
+
]);
|
|
115
|
+
if (code !== 0) {
|
|
116
|
+
throw new Error("Failed to install iTerm2 Shift+Enter key binding");
|
|
117
|
+
}
|
|
118
|
+
return `${chalk.hex(getTheme().success)(
|
|
119
|
+
"Installed iTerm2 Shift+Enter key binding"
|
|
120
|
+
)}${EOL}${chalk.dim("See iTerm2 \u2192 Preferences \u2192 Keys")}${EOL}`;
|
|
121
|
+
}
|
|
122
|
+
function installBindingsForVSCodeTerminal() {
|
|
123
|
+
const vscodeKeybindingsPath = join(
|
|
124
|
+
homedir(),
|
|
125
|
+
platform() === "win32" ? join("AppData", "Roaming", "Code", "User") : platform() === "darwin" ? join("Library", "Application Support", "Code", "User") : join(".config", "Code", "User"),
|
|
126
|
+
"keybindings.json"
|
|
127
|
+
);
|
|
128
|
+
try {
|
|
129
|
+
const content = readFileSync(vscodeKeybindingsPath, "utf-8");
|
|
130
|
+
const keybindings = safeParseJSON(content) ?? [];
|
|
131
|
+
const existingBinding = keybindings.find(
|
|
132
|
+
(binding) => binding.key === "shift+enter" && binding.command === "workbench.action.terminal.sendSequence" && binding.when === "terminalFocus"
|
|
133
|
+
);
|
|
134
|
+
if (existingBinding) {
|
|
135
|
+
return `${chalk.hex(getTheme().warning)(
|
|
136
|
+
"Found existing VSCode terminal Shift+Enter key binding. Remove it to continue."
|
|
137
|
+
)}${EOL}${chalk.dim(`See ${vscodeKeybindingsPath}`)}${EOL}`;
|
|
138
|
+
}
|
|
139
|
+
keybindings.push({
|
|
140
|
+
key: "shift+enter",
|
|
141
|
+
command: "workbench.action.terminal.sendSequence",
|
|
142
|
+
args: { text: "\\\r\n" },
|
|
143
|
+
when: "terminalFocus"
|
|
144
|
+
});
|
|
145
|
+
writeFileSync(
|
|
146
|
+
vscodeKeybindingsPath,
|
|
147
|
+
JSON.stringify(keybindings, null, 4),
|
|
148
|
+
"utf-8"
|
|
149
|
+
);
|
|
150
|
+
return `${chalk.hex(getTheme().success)(
|
|
151
|
+
"Installed VSCode terminal Shift+Enter key binding"
|
|
152
|
+
)}${EOL}${chalk.dim(`See ${vscodeKeybindingsPath}`)}${EOL}`;
|
|
153
|
+
} catch (e) {
|
|
154
|
+
logError(e);
|
|
155
|
+
throw new Error("Failed to install VSCode terminal Shift+Enter key binding");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export {
|
|
159
|
+
terminalSetup_default as default,
|
|
160
|
+
handleHashCommand,
|
|
161
|
+
isShiftEnterKeyBindingInstalled
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=terminalSetup.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/terminalSetup.ts"],
|
|
4
|
+
"sourcesContent": ["import { Command } from '../commands'\nimport { EOL, platform, homedir } from 'os'\nimport { execFileNoThrow } from '../utils/execFileNoThrow'\nimport chalk from 'chalk'\nimport { getTheme } from '../utils/theme'\nimport { env } from '../utils/env'\nimport { getGlobalConfig, saveGlobalConfig } from '../utils/config'\nimport { markProjectOnboardingComplete } from '../ProjectOnboarding'\nimport { readFileSync, writeFileSync } from 'fs'\nimport { join } from 'path'\nimport { safeParseJSON } from '../utils/json'\nimport { logError } from '../utils/log'\n\nconst terminalSetup: Command = {\n type: 'local',\n name: 'terminal-setup',\n userFacingName() {\n return 'terminal-setup'\n },\n description:\n 'Install Shift+Enter key binding for newlines (iTerm2 and VSCode only)',\n isEnabled:\n (platform() === 'darwin' && env.terminal === 'iTerm.app') ||\n env.terminal === 'vscode',\n isHidden: false,\n async call() {\n let result = ''\n\n switch (env.terminal) {\n case 'iTerm.app':\n result = await installBindingsForITerm2()\n break\n case 'vscode':\n result = installBindingsForVSCodeTerminal()\n break\n }\n\n // Update global config to indicate Shift+Enter key binding is installed\n const config = getGlobalConfig()\n config.shiftEnterKeyBindingInstalled = true\n saveGlobalConfig(config)\n\n // Mark onboarding as complete\n markProjectOnboardingComplete()\n\n return result\n },\n}\n\nexport function isShiftEnterKeyBindingInstalled(): boolean {\n return getGlobalConfig().shiftEnterKeyBindingInstalled === true\n}\n\nexport function handleHashCommand(interpreted: string): void {\n // Appends the AI-interpreted content to both AGENTS.md and CLAUDE.md (if exists)\n try {\n const cwd = process.cwd()\n const codeContextPath = join(cwd, 'AGENTS.md')\n const claudePath = join(cwd, 'CLAUDE.md')\n\n // Check which files exist and update them\n const filesToUpdate = []\n\n // Always try to update AGENTS.md (create if not exists)\n filesToUpdate.push({ path: codeContextPath, name: 'AGENTS.md' })\n\n // Update CLAUDE.md only if it exists\n try {\n readFileSync(claudePath, 'utf-8')\n filesToUpdate.push({ path: claudePath, name: 'CLAUDE.md' })\n } catch {\n // CLAUDE.md doesn't exist, skip it\n }\n\n const now = new Date()\n const timezoneMatch = now.toString().match(/\\(([A-Z]+)\\)/)\n const timezone = timezoneMatch\n ? timezoneMatch[1]\n : now\n .toLocaleTimeString('en-us', { timeZoneName: 'short' })\n .split(' ')\n .pop()\n\n const timestamp = interpreted.includes(now.getFullYear().toString())\n ? ''\n : `\\n\\n_Added on ${now.toLocaleString()} ${timezone}_`\n\n const updatedFiles = []\n\n for (const file of filesToUpdate) {\n try {\n // Check if file exists, if not create it\n let existingContent = ''\n try {\n existingContent = readFileSync(file.path, 'utf-8').trim()\n } catch (error) {\n // File doesn't exist yet, that's fine\n }\n\n // Add a separator if the file already has content\n const separator = existingContent ? '\\n\\n' : ''\n\n // Combine everything and write to file\n const newContent = `${existingContent}${separator}${interpreted}${timestamp}`\n writeFileSync(file.path, newContent, 'utf-8')\n updatedFiles.push(file.name)\n } catch (error) {\n logError(error)\n console.error(\n chalk.hex(getTheme().error)(\n `Failed to update ${file.name}: ${error.message}`,\n ),\n )\n }\n }\n\n if (updatedFiles.length > 0) {\n console.log(\n chalk.hex(getTheme().success)(\n `Added note to ${updatedFiles.join(' and ')}`,\n ),\n )\n }\n } catch (e) {\n logError(e)\n console.error(\n chalk.hex(getTheme().error)(`Failed to add note: ${e.message}`),\n )\n }\n}\n\nexport default terminalSetup\n\nasync function installBindingsForITerm2(): Promise<string> {\n const { code } = await execFileNoThrow('defaults', [\n 'write',\n 'com.googlecode.iterm2',\n 'GlobalKeyMap',\n '-dict-add',\n '0xd-0x20000-0x24',\n `<dict>\n <key>Text</key>\n <string>\\\\n</string>\n <key>Action</key>\n <integer>12</integer>\n <key>Version</key>\n <integer>1</integer>\n <key>Keycode</key>\n <integer>13</integer>\n <key>Modifiers</key>\n <integer>131072</integer>\n </dict>`,\n ])\n\n if (code !== 0) {\n throw new Error('Failed to install iTerm2 Shift+Enter key binding')\n }\n\n return `${chalk.hex(getTheme().success)(\n 'Installed iTerm2 Shift+Enter key binding',\n )}${EOL}${chalk.dim('See iTerm2 \u2192 Preferences \u2192 Keys')}${EOL}`\n}\n\ntype VSCodeKeybinding = {\n key: string\n command: string\n args: { text: string }\n when: string\n}\n\nfunction installBindingsForVSCodeTerminal(): string {\n const vscodeKeybindingsPath = join(\n homedir(),\n platform() === 'win32'\n ? join('AppData', 'Roaming', 'Code', 'User')\n : platform() === 'darwin'\n ? join('Library', 'Application Support', 'Code', 'User')\n : join('.config', 'Code', 'User'),\n 'keybindings.json',\n )\n\n try {\n const content = readFileSync(vscodeKeybindingsPath, 'utf-8')\n const keybindings: VSCodeKeybinding[] =\n (safeParseJSON(content) as VSCodeKeybinding[]) ?? []\n\n // Check if keybinding already exists\n const existingBinding = keybindings.find(\n binding =>\n binding.key === 'shift+enter' &&\n binding.command === 'workbench.action.terminal.sendSequence' &&\n binding.when === 'terminalFocus',\n )\n if (existingBinding) {\n return `${chalk.hex(getTheme().warning)(\n 'Found existing VSCode terminal Shift+Enter key binding. Remove it to continue.',\n )}${EOL}${chalk.dim(`See ${vscodeKeybindingsPath}`)}${EOL}`\n }\n\n // Add the keybinding\n keybindings.push({\n key: 'shift+enter',\n command: 'workbench.action.terminal.sendSequence',\n args: { text: '\\\\\\r\\n' },\n when: 'terminalFocus',\n })\n\n writeFileSync(\n vscodeKeybindingsPath,\n JSON.stringify(keybindings, null, 4),\n 'utf-8',\n )\n\n return `${chalk.hex(getTheme().success)(\n 'Installed VSCode terminal Shift+Enter key binding',\n )}${EOL}${chalk.dim(`See ${vscodeKeybindingsPath}`)}${EOL}`\n } catch (e) {\n logError(e)\n throw new Error('Failed to install VSCode terminal Shift+Enter key binding')\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|