@shareai-lab/kode 1.1.23 → 2.0.1
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/README.md +25 -404
- package/cli-acp.js +82 -0
- package/cli.js +89 -79
- package/dist/REPL-CW7AYLVL.js +42 -0
- package/dist/acp-VEPJ74LT.js +1357 -0
- package/dist/acp-VEPJ74LT.js.map +7 -0
- package/dist/agentsValidate-7LH4HTNR.js +373 -0
- package/dist/agentsValidate-7LH4HTNR.js.map +7 -0
- package/dist/ask-3NHFFUQG.js +125 -0
- package/dist/ask-3NHFFUQG.js.map +7 -0
- package/dist/autoUpdater-ITPIHCOI.js +17 -0
- package/dist/chunk-3IN27HA5.js +128 -0
- package/dist/chunk-3IN27HA5.js.map +7 -0
- package/dist/chunk-3RUXVV4S.js +23 -0
- package/dist/chunk-3RUXVV4S.js.map +7 -0
- package/dist/chunk-4FX3IVPT.js +164 -0
- package/dist/chunk-4FX3IVPT.js.map +7 -0
- package/dist/chunk-4RTX4AG4.js +249 -0
- package/dist/chunk-4RTX4AG4.js.map +7 -0
- package/dist/chunk-5PDP7R6N.js +515 -0
- package/dist/chunk-5PDP7R6N.js.map +7 -0
- package/dist/chunk-73WGVYLQ.js +735 -0
- package/dist/chunk-73WGVYLQ.js.map +7 -0
- package/dist/{services/systemReminder.js → chunk-7M2YN6TU.js} +221 -59
- package/dist/chunk-7M2YN6TU.js.map +7 -0
- package/dist/{utils/theme.js → chunk-7U7L4NMD.js} +28 -6
- package/dist/chunk-7U7L4NMD.js.map +7 -0
- package/dist/chunk-ABLVTESJ.js +19 -0
- package/dist/chunk-ABLVTESJ.js.map +7 -0
- package/dist/chunk-AFFSCMYS.js +191 -0
- package/dist/chunk-AFFSCMYS.js.map +7 -0
- package/dist/chunk-ARZSBOAO.js +1256 -0
- package/dist/chunk-ARZSBOAO.js.map +7 -0
- package/dist/chunk-CIG63V4E.js +72 -0
- package/dist/chunk-CIG63V4E.js.map +7 -0
- package/dist/chunk-CM3EGTG6.js +1609 -0
- package/dist/chunk-CM3EGTG6.js.map +7 -0
- package/dist/{services/openai.js → chunk-DZE5YA7L.js} +168 -234
- package/dist/chunk-DZE5YA7L.js.map +7 -0
- package/dist/chunk-E6YNABER.js +24 -0
- package/dist/chunk-E6YNABER.js.map +7 -0
- package/dist/{cost-tracker.js → chunk-EZXMVTDU.js} +51 -32
- package/dist/chunk-EZXMVTDU.js.map +7 -0
- package/dist/chunk-F2SJXUDI.js +148 -0
- package/dist/chunk-F2SJXUDI.js.map +7 -0
- package/dist/chunk-FC5ZCKBI.js +30167 -0
- package/dist/chunk-FC5ZCKBI.js.map +7 -0
- package/dist/chunk-HCBELH4J.js +145 -0
- package/dist/chunk-HCBELH4J.js.map +7 -0
- package/dist/chunk-HN4E4UUQ.js +96 -0
- package/dist/chunk-HN4E4UUQ.js.map +7 -0
- package/dist/{utils/model.js → chunk-IZVMU4S2.js} +194 -227
- package/dist/chunk-IZVMU4S2.js.map +7 -0
- package/dist/chunk-JC6NCUG5.js +11 -0
- package/dist/chunk-K2CWOTI2.js +196 -0
- package/dist/chunk-K2CWOTI2.js.map +7 -0
- package/dist/chunk-KAA5BGMQ.js +12 -0
- package/dist/chunk-KAA5BGMQ.js.map +7 -0
- package/dist/{utils/config.js → chunk-LC4TVOCZ.js} +351 -171
- package/dist/chunk-LC4TVOCZ.js.map +7 -0
- package/dist/chunk-MIW7N2MY.js +2613 -0
- package/dist/chunk-MIW7N2MY.js.map +7 -0
- package/dist/chunk-MWRSY4X6.js +240 -0
- package/dist/chunk-MWRSY4X6.js.map +7 -0
- package/dist/chunk-ND3XWFO6.js +34 -0
- package/dist/chunk-ND3XWFO6.js.map +7 -0
- package/dist/chunk-NPFOMITO.js +21 -0
- package/dist/chunk-NPFOMITO.js.map +7 -0
- package/dist/chunk-QVLYOPO5.js +1097 -0
- package/dist/chunk-QVLYOPO5.js.map +7 -0
- package/dist/chunk-RZWOUA25.js +490 -0
- package/dist/chunk-RZWOUA25.js.map +7 -0
- package/dist/chunk-S3J2TLV6.js +16 -0
- package/dist/chunk-S3J2TLV6.js.map +7 -0
- package/dist/chunk-S6HRABTA.js +95 -0
- package/dist/chunk-S6HRABTA.js.map +7 -0
- package/dist/{utils/debugLogger.js → chunk-STSX7GIX.js} +107 -204
- package/dist/chunk-STSX7GIX.js.map +7 -0
- package/dist/chunk-UHYRLID6.js +472 -0
- package/dist/chunk-UHYRLID6.js.map +7 -0
- package/dist/chunk-UKHTVRJM.js +47 -0
- package/dist/chunk-UKHTVRJM.js.map +7 -0
- package/dist/chunk-UYXEDKOZ.js +24 -0
- package/dist/chunk-UYXEDKOZ.js.map +7 -0
- package/dist/chunk-W7GRKO7Q.js +766 -0
- package/dist/chunk-W7GRKO7Q.js.map +7 -0
- package/dist/chunk-WVHORZQ5.js +17 -0
- package/dist/chunk-WVHORZQ5.js.map +7 -0
- package/dist/chunk-WWUWDNWW.js +49 -0
- package/dist/chunk-WWUWDNWW.js.map +7 -0
- package/dist/chunk-YC6LJCDE.js +511 -0
- package/dist/chunk-YC6LJCDE.js.map +7 -0
- package/dist/chunk-YXYYDIMI.js +2931 -0
- package/dist/chunk-YXYYDIMI.js.map +7 -0
- package/dist/chunk-ZVDRDPII.js +138 -0
- package/dist/chunk-ZVDRDPII.js.map +7 -0
- package/dist/cli-DOPVY2CW.js +3917 -0
- package/dist/cli-DOPVY2CW.js.map +7 -0
- package/dist/commands-2BF2CJ3A.js +46 -0
- package/dist/config-RUSD6G5Y.js +81 -0
- package/dist/context-6FXPETYH.js +30 -0
- package/dist/costTracker-6SL26FDB.js +19 -0
- package/dist/customCommands-TOIJFZAL.js +25 -0
- package/dist/customCommands-TOIJFZAL.js.map +7 -0
- package/dist/env-XGKBLU3D.js +22 -0
- package/dist/env-XGKBLU3D.js.map +7 -0
- package/dist/index.js +34 -5
- package/dist/index.js.map +4 -4
- package/dist/kodeAgentSessionId-X6XWQW7B.js +13 -0
- package/dist/kodeAgentSessionId-X6XWQW7B.js.map +7 -0
- package/dist/kodeAgentSessionLoad-MITZADPB.js +18 -0
- package/dist/kodeAgentSessionLoad-MITZADPB.js.map +7 -0
- package/dist/kodeAgentSessionResume-GVRWB4WO.js +16 -0
- package/dist/kodeAgentSessionResume-GVRWB4WO.js.map +7 -0
- package/dist/kodeAgentStreamJson-NXFN7TXH.js +13 -0
- package/dist/kodeAgentStreamJson-NXFN7TXH.js.map +7 -0
- package/dist/kodeAgentStreamJsonSession-UGEZJJEB.js +131 -0
- package/dist/kodeAgentStreamJsonSession-UGEZJJEB.js.map +7 -0
- package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +10 -0
- package/dist/kodeAgentStructuredStdio-HGWJT7CU.js.map +7 -0
- package/dist/kodeHooks-QWM36A3D.js +36 -0
- package/dist/kodeHooks-QWM36A3D.js.map +7 -0
- package/dist/llm-ZUQC4WYM.js +3118 -0
- package/dist/llm-ZUQC4WYM.js.map +7 -0
- package/dist/llmLazy-54QQHA54.js +15 -0
- package/dist/llmLazy-54QQHA54.js.map +7 -0
- package/dist/loader-FYHJQES5.js +28 -0
- package/dist/loader-FYHJQES5.js.map +7 -0
- package/dist/mcp-J332IKT3.js +49 -0
- package/dist/mcp-J332IKT3.js.map +7 -0
- package/dist/{services/mentionProcessor.js → mentionProcessor-EE3XFHCJ.js} +61 -50
- package/dist/mentionProcessor-EE3XFHCJ.js.map +7 -0
- package/dist/messages-EOYQKPGM.js +63 -0
- package/dist/messages-EOYQKPGM.js.map +7 -0
- package/dist/model-FV3JDJKH.js +30 -0
- package/dist/model-FV3JDJKH.js.map +7 -0
- package/dist/openai-RRCWW33N.js +29 -0
- package/dist/openai-RRCWW33N.js.map +7 -0
- package/dist/outputStyles-62Q3VH2J.js +28 -0
- package/dist/outputStyles-62Q3VH2J.js.map +7 -0
- package/dist/package.json +1 -1
- package/dist/pluginRuntime-6ETCZ2LL.js +218 -0
- package/dist/pluginRuntime-6ETCZ2LL.js.map +7 -0
- package/dist/pluginValidation-I4YKUWGS.js +17 -0
- package/dist/pluginValidation-I4YKUWGS.js.map +7 -0
- package/dist/prompts-ZLEKDD77.js +48 -0
- package/dist/prompts-ZLEKDD77.js.map +7 -0
- package/dist/query-VFRJPBGD.js +50 -0
- package/dist/query-VFRJPBGD.js.map +7 -0
- package/dist/responsesStreaming-AW344PQO.js +10 -0
- package/dist/responsesStreaming-AW344PQO.js.map +7 -0
- package/dist/ripgrep-3NTIKQYW.js +17 -0
- package/dist/ripgrep-3NTIKQYW.js.map +7 -0
- package/dist/skillMarketplace-3RXQBVOL.js +37 -0
- package/dist/skillMarketplace-3RXQBVOL.js.map +7 -0
- package/dist/state-P5G6CO5V.js +16 -0
- package/dist/state-P5G6CO5V.js.map +7 -0
- package/dist/theme-3LWP3BG7.js +14 -0
- package/dist/theme-3LWP3BG7.js.map +7 -0
- package/dist/toolPermissionContext-65L65VEZ.js +17 -0
- package/dist/toolPermissionContext-65L65VEZ.js.map +7 -0
- package/dist/toolPermissionSettings-3ROBVTUK.js +18 -0
- package/dist/toolPermissionSettings-3ROBVTUK.js.map +7 -0
- package/dist/tools-RO7HSSE5.js +47 -0
- package/dist/tools-RO7HSSE5.js.map +7 -0
- package/dist/userInput-JSBJRFSK.js +311 -0
- package/dist/userInput-JSBJRFSK.js.map +7 -0
- package/dist/uuid-QN2CNKKN.js +9 -0
- package/dist/uuid-QN2CNKKN.js.map +7 -0
- package/package.json +43 -15
- package/scripts/binary-utils.cjs +62 -0
- package/scripts/cli-acp-wrapper.cjs +82 -0
- package/scripts/cli-wrapper.cjs +105 -0
- package/scripts/postinstall.js +135 -9
- package/LICENSE +0 -201
- package/README.zh-CN.md +0 -326
- package/dist/ProjectOnboarding.js +0 -99
- package/dist/ProjectOnboarding.js.map +0 -7
- package/dist/Tool.js +0 -1
- package/dist/commands/agents.js +0 -2087
- package/dist/commands/agents.js.map +0 -7
- package/dist/commands/approvedTools.js +0 -36
- package/dist/commands/approvedTools.js.map +0 -7
- package/dist/commands/bug.js +0 -21
- package/dist/commands/bug.js.map +0 -7
- package/dist/commands/clear.js +0 -37
- package/dist/commands/clear.js.map +0 -7
- package/dist/commands/compact.js +0 -104
- package/dist/commands/compact.js.map +0 -7
- package/dist/commands/config.js +0 -20
- package/dist/commands/config.js.map +0 -7
- package/dist/commands/cost.js +0 -19
- package/dist/commands/cost.js.map +0 -7
- package/dist/commands/ctx_viz.js +0 -152
- package/dist/commands/ctx_viz.js.map +0 -7
- package/dist/commands/doctor.js +0 -25
- package/dist/commands/doctor.js.map +0 -7
- package/dist/commands/help.js +0 -20
- package/dist/commands/help.js.map +0 -7
- package/dist/commands/init.js +0 -38
- package/dist/commands/init.js.map +0 -7
- package/dist/commands/listen.js +0 -37
- package/dist/commands/listen.js.map +0 -7
- package/dist/commands/login.js +0 -37
- package/dist/commands/login.js.map +0 -7
- package/dist/commands/logout.js +0 -33
- package/dist/commands/logout.js.map +0 -7
- package/dist/commands/mcp.js +0 -34
- package/dist/commands/mcp.js.map +0 -7
- package/dist/commands/model.js +0 -41
- package/dist/commands/model.js.map +0 -7
- package/dist/commands/modelstatus.js +0 -21
- package/dist/commands/modelstatus.js.map +0 -7
- package/dist/commands/onboarding.js +0 -36
- package/dist/commands/onboarding.js.map +0 -7
- package/dist/commands/pr_comments.js +0 -61
- package/dist/commands/pr_comments.js.map +0 -7
- package/dist/commands/refreshCommands.js +0 -37
- package/dist/commands/refreshCommands.js.map +0 -7
- package/dist/commands/release-notes.js +0 -30
- package/dist/commands/release-notes.js.map +0 -7
- package/dist/commands/resume.js +0 -35
- package/dist/commands/resume.js.map +0 -7
- package/dist/commands/review.js +0 -51
- package/dist/commands/review.js.map +0 -7
- package/dist/commands/terminalSetup.js +0 -163
- package/dist/commands/terminalSetup.js.map +0 -7
- package/dist/commands.js +0 -84
- package/dist/commands.js.map +0 -7
- package/dist/components/ApproveApiKey.js +0 -74
- package/dist/components/ApproveApiKey.js.map +0 -7
- package/dist/components/AsciiLogo.js +0 -12
- package/dist/components/AsciiLogo.js.map +0 -7
- package/dist/components/AutoUpdater.js +0 -74
- package/dist/components/AutoUpdater.js.map +0 -7
- package/dist/components/Bug.js +0 -147
- package/dist/components/Bug.js.map +0 -7
- package/dist/components/Config.js +0 -166
- package/dist/components/Config.js.map +0 -7
- package/dist/components/ConsoleOAuthFlow.js +0 -188
- package/dist/components/ConsoleOAuthFlow.js.map +0 -7
- package/dist/components/Cost.js +0 -13
- package/dist/components/Cost.js.map +0 -7
- package/dist/components/CostThresholdDialog.js +0 -38
- package/dist/components/CostThresholdDialog.js.map +0 -7
- package/dist/components/CustomSelect/option-map.js +0 -32
- package/dist/components/CustomSelect/option-map.js.map +0 -7
- package/dist/components/CustomSelect/select-option.js +0 -34
- package/dist/components/CustomSelect/select-option.js.map +0 -7
- package/dist/components/CustomSelect/select.js +0 -64
- package/dist/components/CustomSelect/select.js.map +0 -7
- package/dist/components/CustomSelect/theme.js +0 -1
- package/dist/components/CustomSelect/use-select-state.js +0 -220
- package/dist/components/CustomSelect/use-select-state.js.map +0 -7
- package/dist/components/CustomSelect/use-select.js +0 -21
- package/dist/components/CustomSelect/use-select.js.map +0 -7
- package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
- package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
- package/dist/components/FileEditToolUpdatedMessage.js +0 -31
- package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
- package/dist/components/Help.js +0 -41
- package/dist/components/Help.js.map +0 -7
- package/dist/components/HighlightedCode.js +0 -30
- package/dist/components/HighlightedCode.js.map +0 -7
- package/dist/components/InvalidConfigDialog.js +0 -83
- package/dist/components/InvalidConfigDialog.js.map +0 -7
- package/dist/components/Link.js +0 -18
- package/dist/components/Link.js.map +0 -7
- package/dist/components/LogSelector.js +0 -50
- package/dist/components/LogSelector.js.map +0 -7
- package/dist/components/Logo.js +0 -94
- package/dist/components/Logo.js.map +0 -7
- package/dist/components/MCPServerApprovalDialog.js +0 -79
- package/dist/components/MCPServerApprovalDialog.js.map +0 -7
- package/dist/components/MCPServerDialogCopy.js +0 -11
- package/dist/components/MCPServerDialogCopy.js.map +0 -7
- package/dist/components/MCPServerMultiselectDialog.js +0 -80
- package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
- package/dist/components/Message.js +0 -146
- package/dist/components/Message.js.map +0 -7
- package/dist/components/MessageResponse.js +0 -9
- package/dist/components/MessageResponse.js.map +0 -7
- package/dist/components/MessageSelector.js +0 -133
- package/dist/components/MessageSelector.js.map +0 -7
- package/dist/components/ModeIndicator.js +0 -38
- package/dist/components/ModeIndicator.js.map +0 -7
- package/dist/components/ModelConfig.js +0 -208
- package/dist/components/ModelConfig.js.map +0 -7
- package/dist/components/ModelListManager.js +0 -140
- package/dist/components/ModelListManager.js.map +0 -7
- package/dist/components/ModelSelector.js +0 -1985
- package/dist/components/ModelSelector.js.map +0 -7
- package/dist/components/ModelStatusDisplay.js +0 -87
- package/dist/components/ModelStatusDisplay.js.map +0 -7
- package/dist/components/Onboarding.js +0 -153
- package/dist/components/Onboarding.js.map +0 -7
- package/dist/components/PressEnterToContinue.js +0 -10
- package/dist/components/PressEnterToContinue.js.map +0 -7
- package/dist/components/PromptInput.js +0 -501
- package/dist/components/PromptInput.js.map +0 -7
- package/dist/components/SentryErrorBoundary.js +0 -27
- package/dist/components/SentryErrorBoundary.js.map +0 -7
- package/dist/components/Spinner.js +0 -101
- package/dist/components/Spinner.js.map +0 -7
- package/dist/components/StickerRequestForm.js +0 -7
- package/dist/components/StickerRequestForm.js.map +0 -7
- package/dist/components/StructuredDiff.js +0 -148
- package/dist/components/StructuredDiff.js.map +0 -7
- package/dist/components/TextInput.js +0 -100
- package/dist/components/TextInput.js.map +0 -7
- package/dist/components/TodoItem.js +0 -35
- package/dist/components/TodoItem.js.map +0 -7
- package/dist/components/TokenWarning.js +0 -19
- package/dist/components/TokenWarning.js.map +0 -7
- package/dist/components/ToolUseLoader.js +0 -24
- package/dist/components/ToolUseLoader.js.map +0 -7
- package/dist/components/TrustDialog.js +0 -76
- package/dist/components/TrustDialog.js.map +0 -7
- package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
- package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
- package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -94
- package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
- package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -139
- package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
- package/dist/components/binary-feedback/utils.js +0 -161
- package/dist/components/binary-feedback/utils.js.map +0 -7
- package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
- package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
- package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
- package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
- package/dist/components/messages/AssistantTextMessage.js +0 -78
- package/dist/components/messages/AssistantTextMessage.js.map +0 -7
- package/dist/components/messages/AssistantThinkingMessage.js +0 -27
- package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
- package/dist/components/messages/AssistantToolUseMessage.js +0 -91
- package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
- package/dist/components/messages/TaskProgressMessage.js +0 -11
- package/dist/components/messages/TaskProgressMessage.js.map +0 -7
- package/dist/components/messages/TaskToolMessage.js +0 -39
- package/dist/components/messages/TaskToolMessage.js.map +0 -7
- package/dist/components/messages/UserBashInputMessage.js +0 -18
- package/dist/components/messages/UserBashInputMessage.js.map +0 -7
- package/dist/components/messages/UserCommandMessage.js +0 -20
- package/dist/components/messages/UserCommandMessage.js.map +0 -7
- package/dist/components/messages/UserKodingInputMessage.js +0 -18
- package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
- package/dist/components/messages/UserPromptMessage.js +0 -20
- package/dist/components/messages/UserPromptMessage.js.map +0 -7
- package/dist/components/messages/UserTextMessage.js +0 -25
- package/dist/components/messages/UserTextMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -10
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -25
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -47
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -23
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
- package/dist/components/messages/UserToolResultMessage/utils.js +0 -42
- package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
- package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
- package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
- package/dist/components/permissions/PermissionRequest.js +0 -70
- package/dist/components/permissions/PermissionRequest.js.map +0 -7
- package/dist/components/permissions/PermissionRequestTitle.js +0 -52
- package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
- package/dist/components/permissions/hooks.js +0 -28
- package/dist/components/permissions/hooks.js.map +0 -7
- package/dist/components/permissions/toolUseOptions.js +0 -46
- package/dist/components/permissions/toolUseOptions.js.map +0 -7
- package/dist/components/permissions/utils.js +0 -21
- package/dist/components/permissions/utils.js.map +0 -7
- package/dist/constants/betas.js +0 -11
- package/dist/constants/betas.js.map +0 -7
- package/dist/constants/claude-asterisk-ascii-art.js +0 -242
- package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
- package/dist/constants/figures.js +0 -6
- package/dist/constants/figures.js.map +0 -7
- package/dist/constants/keys.js +0 -7
- package/dist/constants/keys.js.map +0 -7
- package/dist/constants/macros.js +0 -13
- package/dist/constants/macros.js.map +0 -7
- package/dist/constants/modelCapabilities.js +0 -154
- package/dist/constants/modelCapabilities.js.map +0 -7
- package/dist/constants/models.js +0 -1029
- package/dist/constants/models.js.map +0 -7
- package/dist/constants/oauth.js +0 -18
- package/dist/constants/oauth.js.map +0 -7
- package/dist/constants/product.js +0 -26
- package/dist/constants/product.js.map +0 -7
- package/dist/constants/prompts.js +0 -168
- package/dist/constants/prompts.js.map +0 -7
- package/dist/constants/releaseNotes.js +0 -9
- package/dist/constants/releaseNotes.js.map +0 -7
- package/dist/context/PermissionContext.js +0 -111
- package/dist/context/PermissionContext.js.map +0 -7
- package/dist/context.js +0 -259
- package/dist/context.js.map +0 -7
- package/dist/cost-tracker.js.map +0 -7
- package/dist/entrypoints/cli.js +0 -1122
- package/dist/entrypoints/cli.js.map +0 -7
- package/dist/entrypoints/mcp.js +0 -150
- package/dist/entrypoints/mcp.js.map +0 -7
- package/dist/history.js +0 -25
- package/dist/history.js.map +0 -7
- package/dist/hooks/useApiKeyVerification.js +0 -12
- package/dist/hooks/useApiKeyVerification.js.map +0 -7
- package/dist/hooks/useArrowKeyHistory.js +0 -50
- package/dist/hooks/useArrowKeyHistory.js.map +0 -7
- package/dist/hooks/useCanUseTool.js +0 -112
- package/dist/hooks/useCanUseTool.js.map +0 -7
- package/dist/hooks/useCancelRequest.js +0 -30
- package/dist/hooks/useCancelRequest.js.map +0 -7
- package/dist/hooks/useDoublePress.js +0 -31
- package/dist/hooks/useDoublePress.js.map +0 -7
- package/dist/hooks/useExitOnCtrlCD.js +0 -26
- package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
- package/dist/hooks/useInterval.js +0 -18
- package/dist/hooks/useInterval.js.map +0 -7
- package/dist/hooks/useLogMessages.js +0 -14
- package/dist/hooks/useLogMessages.js.map +0 -7
- package/dist/hooks/useLogStartupTime.js +0 -15
- package/dist/hooks/useLogStartupTime.js.map +0 -7
- package/dist/hooks/useNotifyAfterTimeout.js +0 -42
- package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
- package/dist/hooks/usePermissionRequestLogging.js +0 -28
- package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
- package/dist/hooks/useTerminalSize.js +0 -38
- package/dist/hooks/useTerminalSize.js.map +0 -7
- package/dist/hooks/useTextInput.js +0 -250
- package/dist/hooks/useTextInput.js.map +0 -7
- package/dist/hooks/useUnifiedCompletion.js +0 -929
- package/dist/hooks/useUnifiedCompletion.js.map +0 -7
- package/dist/messages.js +0 -33
- package/dist/messages.js.map +0 -7
- package/dist/permissions.js +0 -194
- package/dist/permissions.js.map +0 -7
- package/dist/query.js +0 -492
- package/dist/query.js.map +0 -7
- package/dist/screens/ConfigureNpmPrefix.js +0 -128
- package/dist/screens/ConfigureNpmPrefix.js.map +0 -7
- package/dist/screens/Doctor.js +0 -143
- package/dist/screens/Doctor.js.map +0 -7
- package/dist/screens/LogList.js +0 -55
- package/dist/screens/LogList.js.map +0 -7
- package/dist/screens/REPL.js +0 -596
- package/dist/screens/REPL.js.map +0 -7
- package/dist/screens/ResumeConversation.js +0 -56
- package/dist/screens/ResumeConversation.js.map +0 -7
- package/dist/services/adapters/base.js +0 -29
- package/dist/services/adapters/base.js.map +0 -7
- package/dist/services/adapters/chatCompletions.js +0 -69
- package/dist/services/adapters/chatCompletions.js.map +0 -7
- package/dist/services/adapters/responsesAPI.js +0 -126
- package/dist/services/adapters/responsesAPI.js.map +0 -7
- package/dist/services/browserMocks.js +0 -48
- package/dist/services/browserMocks.js.map +0 -7
- package/dist/services/claude.js +0 -1605
- package/dist/services/claude.js.map +0 -7
- package/dist/services/customCommands.js +0 -359
- package/dist/services/customCommands.js.map +0 -7
- package/dist/services/fileFreshness.js +0 -280
- package/dist/services/fileFreshness.js.map +0 -7
- package/dist/services/gpt5ConnectionTest.js +0 -248
- package/dist/services/gpt5ConnectionTest.js.map +0 -7
- package/dist/services/mcpClient.js +0 -435
- package/dist/services/mcpClient.js.map +0 -7
- package/dist/services/mcpServerApproval.js +0 -55
- package/dist/services/mcpServerApproval.js.map +0 -7
- package/dist/services/mentionProcessor.js.map +0 -7
- package/dist/services/modelAdapterFactory.js +0 -47
- package/dist/services/modelAdapterFactory.js.map +0 -7
- package/dist/services/notifier.js +0 -35
- package/dist/services/notifier.js.map +0 -7
- package/dist/services/oauth.js +0 -259
- package/dist/services/oauth.js.map +0 -7
- package/dist/services/openai.js.map +0 -7
- package/dist/services/responseStateManager.js +0 -68
- package/dist/services/responseStateManager.js.map +0 -7
- package/dist/services/sentry.js +0 -9
- package/dist/services/sentry.js.map +0 -7
- package/dist/services/statsig.js +0 -112
- package/dist/services/statsig.js.map +0 -7
- package/dist/services/statsigStorage.js +0 -75
- package/dist/services/statsigStorage.js.map +0 -7
- package/dist/services/systemReminder.js.map +0 -7
- package/dist/services/vcr.js +0 -133
- package/dist/services/vcr.js.map +0 -7
- package/dist/tools/ArchitectTool/ArchitectTool.js +0 -119
- package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
- package/dist/tools/ArchitectTool/prompt.js +0 -18
- package/dist/tools/ArchitectTool/prompt.js.map +0 -7
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -423
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
- package/dist/tools/BashTool/BashTool.js +0 -188
- package/dist/tools/BashTool/BashTool.js.map +0 -7
- package/dist/tools/BashTool/BashToolResultMessage.js +0 -21
- package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
- package/dist/tools/BashTool/OutputLine.js +0 -30
- package/dist/tools/BashTool/OutputLine.js.map +0 -7
- package/dist/tools/BashTool/prompt.js +0 -179
- package/dist/tools/BashTool/prompt.js.map +0 -7
- package/dist/tools/BashTool/utils.js +0 -51
- package/dist/tools/BashTool/utils.js.map +0 -7
- package/dist/tools/FileEditTool/FileEditTool.js +0 -228
- package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
- package/dist/tools/FileEditTool/prompt.js +0 -54
- package/dist/tools/FileEditTool/prompt.js.map +0 -7
- package/dist/tools/FileEditTool/utils.js +0 -42
- package/dist/tools/FileEditTool/utils.js.map +0 -7
- package/dist/tools/FileReadTool/FileReadTool.js +0 -272
- package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
- package/dist/tools/FileReadTool/prompt.js +0 -10
- package/dist/tools/FileReadTool/prompt.js.map +0 -7
- package/dist/tools/FileWriteTool/FileWriteTool.js +0 -204
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
- package/dist/tools/FileWriteTool/prompt.js +0 -14
- package/dist/tools/FileWriteTool/prompt.js.map +0 -7
- package/dist/tools/GlobTool/GlobTool.js +0 -88
- package/dist/tools/GlobTool/GlobTool.js.map +0 -7
- package/dist/tools/GlobTool/prompt.js +0 -12
- package/dist/tools/GlobTool/prompt.js.map +0 -7
- package/dist/tools/GrepTool/GrepTool.js +0 -107
- package/dist/tools/GrepTool/GrepTool.js.map +0 -7
- package/dist/tools/GrepTool/prompt.js +0 -15
- package/dist/tools/GrepTool/prompt.js.map +0 -7
- package/dist/tools/MCPTool/MCPTool.js +0 -90
- package/dist/tools/MCPTool/MCPTool.js.map +0 -7
- package/dist/tools/MCPTool/prompt.js +0 -7
- package/dist/tools/MCPTool/prompt.js.map +0 -7
- package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -103
- package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
- package/dist/tools/MemoryReadTool/prompt.js +0 -7
- package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -77
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
- package/dist/tools/MemoryWriteTool/prompt.js +0 -7
- package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
- package/dist/tools/MultiEditTool/MultiEditTool.js +0 -293
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
- package/dist/tools/MultiEditTool/prompt.js +0 -48
- package/dist/tools/MultiEditTool/prompt.js.map +0 -7
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -238
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
- package/dist/tools/NotebookEditTool/prompt.js +0 -7
- package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
- package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -212
- package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
- package/dist/tools/NotebookReadTool/prompt.js +0 -7
- package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
- package/dist/tools/StickerRequestTool/StickerRequestTool.js +0 -86
- package/dist/tools/StickerRequestTool/StickerRequestTool.js.map +0 -7
- package/dist/tools/StickerRequestTool/prompt.js +0 -23
- package/dist/tools/StickerRequestTool/prompt.js.map +0 -7
- package/dist/tools/TaskTool/TaskTool.js +0 -351
- package/dist/tools/TaskTool/TaskTool.js.map +0 -7
- package/dist/tools/TaskTool/constants.js +0 -5
- package/dist/tools/TaskTool/constants.js.map +0 -7
- package/dist/tools/TaskTool/prompt.js +0 -82
- package/dist/tools/TaskTool/prompt.js.map +0 -7
- package/dist/tools/ThinkTool/ThinkTool.js +0 -48
- package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
- package/dist/tools/ThinkTool/prompt.js +0 -16
- package/dist/tools/ThinkTool/prompt.js.map +0 -7
- package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -216
- package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
- package/dist/tools/TodoWriteTool/prompt.js +0 -66
- package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -137
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
- package/dist/tools/URLFetcherTool/cache.js +0 -45
- package/dist/tools/URLFetcherTool/cache.js.map +0 -7
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -42
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
- package/dist/tools/URLFetcherTool/prompt.js +0 -22
- package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
- package/dist/tools/WebSearchTool/WebSearchTool.js +0 -86
- package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
- package/dist/tools/WebSearchTool/prompt.js +0 -17
- package/dist/tools/WebSearchTool/prompt.js.map +0 -7
- package/dist/tools/WebSearchTool/searchProviders.js +0 -48
- package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
- package/dist/tools/lsTool/lsTool.js +0 -201
- package/dist/tools/lsTool/lsTool.js.map +0 -7
- package/dist/tools/lsTool/prompt.js +0 -5
- package/dist/tools/lsTool/prompt.js.map +0 -7
- package/dist/tools.js +0 -64
- package/dist/tools.js.map +0 -7
- package/dist/types/PermissionMode.js +0 -82
- package/dist/types/PermissionMode.js.map +0 -7
- package/dist/types/RequestContext.js +0 -47
- package/dist/types/RequestContext.js.map +0 -7
- package/dist/types/common.d.js +0 -1
- package/dist/types/conversation.js +0 -1
- package/dist/types/logs.js +0 -1
- package/dist/types/modelCapabilities.js +0 -1
- package/dist/types/notebook.js +0 -1
- package/dist/utils/Cursor.js +0 -313
- package/dist/utils/Cursor.js.map +0 -7
- package/dist/utils/PersistentShell.js +0 -382
- package/dist/utils/PersistentShell.js.map +0 -7
- package/dist/utils/advancedFuzzyMatcher.js +0 -206
- package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
- package/dist/utils/agentLoader.js +0 -199
- package/dist/utils/agentLoader.js.map +0 -7
- package/dist/utils/agentStorage.js +0 -59
- package/dist/utils/agentStorage.js.map +0 -7
- package/dist/utils/array.js +0 -7
- package/dist/utils/array.js.map +0 -7
- package/dist/utils/ask.js +0 -77
- package/dist/utils/ask.js.map +0 -7
- package/dist/utils/auth.js +0 -11
- package/dist/utils/auth.js.map +0 -7
- package/dist/utils/autoCompactCore.js +0 -149
- package/dist/utils/autoCompactCore.js.map +0 -7
- package/dist/utils/autoUpdater.js +0 -360
- package/dist/utils/autoUpdater.js.map +0 -7
- package/dist/utils/betas.js +0 -21
- package/dist/utils/betas.js.map +0 -7
- package/dist/utils/browser.js +0 -15
- package/dist/utils/browser.js.map +0 -7
- package/dist/utils/cleanup.js +0 -54
- package/dist/utils/cleanup.js.map +0 -7
- package/dist/utils/commands.js +0 -207
- package/dist/utils/commands.js.map +0 -7
- package/dist/utils/commonUnixCommands.js +0 -687
- package/dist/utils/commonUnixCommands.js.map +0 -7
- package/dist/utils/config.js.map +0 -7
- package/dist/utils/conversationRecovery.js +0 -35
- package/dist/utils/conversationRecovery.js.map +0 -7
- package/dist/utils/debugLogger.js.map +0 -7
- package/dist/utils/diff.js +0 -32
- package/dist/utils/diff.js.map +0 -7
- package/dist/utils/env.js +0 -44
- package/dist/utils/env.js.map +0 -7
- package/dist/utils/errors.js +0 -23
- package/dist/utils/errors.js.map +0 -7
- package/dist/utils/exampleCommands.js +0 -80
- package/dist/utils/exampleCommands.js.map +0 -7
- package/dist/utils/execFileNoThrow.js +0 -44
- package/dist/utils/execFileNoThrow.js.map +0 -7
- package/dist/utils/expertChatStorage.js +0 -78
- package/dist/utils/expertChatStorage.js.map +0 -7
- package/dist/utils/file.js +0 -282
- package/dist/utils/file.js.map +0 -7
- package/dist/utils/fileRecoveryCore.js +0 -41
- package/dist/utils/fileRecoveryCore.js.map +0 -7
- package/dist/utils/format.js +0 -41
- package/dist/utils/format.js.map +0 -7
- package/dist/utils/fuzzyMatcher.js +0 -252
- package/dist/utils/fuzzyMatcher.js.map +0 -7
- package/dist/utils/generators.js +0 -46
- package/dist/utils/generators.js.map +0 -7
- package/dist/utils/git.js +0 -83
- package/dist/utils/git.js.map +0 -7
- package/dist/utils/globalLogger.js +0 -54
- package/dist/utils/globalLogger.js.map +0 -7
- package/dist/utils/http.js +0 -7
- package/dist/utils/http.js.map +0 -7
- package/dist/utils/imagePaste.js +0 -29
- package/dist/utils/imagePaste.js.map +0 -7
- package/dist/utils/json.js +0 -16
- package/dist/utils/json.js.map +0 -7
- package/dist/utils/log.js +0 -298
- package/dist/utils/log.js.map +0 -7
- package/dist/utils/markdown.js +0 -187
- package/dist/utils/markdown.js.map +0 -7
- package/dist/utils/messageContextManager.js +0 -195
- package/dist/utils/messageContextManager.js.map +0 -7
- package/dist/utils/messages.js +0 -633
- package/dist/utils/messages.js.map +0 -7
- package/dist/utils/model.js.map +0 -7
- package/dist/utils/permissions/filesystem.js +0 -80
- package/dist/utils/permissions/filesystem.js.map +0 -7
- package/dist/utils/responseState.js +0 -20
- package/dist/utils/responseState.js.map +0 -7
- package/dist/utils/ripgrep.js +0 -131
- package/dist/utils/ripgrep.js.map +0 -7
- package/dist/utils/secureFile.js +0 -483
- package/dist/utils/secureFile.js.map +0 -7
- package/dist/utils/sessionState.js +0 -31
- package/dist/utils/sessionState.js.map +0 -7
- package/dist/utils/state.js +0 -24
- package/dist/utils/state.js.map +0 -7
- package/dist/utils/style.js +0 -31
- package/dist/utils/style.js.map +0 -7
- package/dist/utils/terminal.js +0 -43
- package/dist/utils/terminal.js.map +0 -7
- package/dist/utils/theme.js.map +0 -7
- package/dist/utils/thinking.js +0 -103
- package/dist/utils/thinking.js.map +0 -7
- package/dist/utils/todoStorage.js +0 -291
- package/dist/utils/todoStorage.js.map +0 -7
- package/dist/utils/tokens.js +0 -30
- package/dist/utils/tokens.js.map +0 -7
- package/dist/utils/toolExecutionController.js +0 -109
- package/dist/utils/toolExecutionController.js.map +0 -7
- package/dist/utils/unaryLogging.js +0 -14
- package/dist/utils/unaryLogging.js.map +0 -7
- package/dist/utils/user.js +0 -40
- package/dist/utils/user.js.map +0 -7
- package/dist/utils/validate.js +0 -132
- package/dist/utils/validate.js.map +0 -7
- /package/dist/{Tool.js.map → REPL-CW7AYLVL.js.map} +0 -0
- /package/dist/{components/CustomSelect/theme.js.map → autoUpdater-ITPIHCOI.js.map} +0 -0
- /package/dist/{types/common.d.js.map → chunk-JC6NCUG5.js.map} +0 -0
- /package/dist/{types/conversation.js.map → commands-2BF2CJ3A.js.map} +0 -0
- /package/dist/{types/logs.js.map → config-RUSD6G5Y.js.map} +0 -0
- /package/dist/{types/modelCapabilities.js.map → context-6FXPETYH.js.map} +0 -0
- /package/dist/{types/notebook.js.map → costTracker-6SL26FDB.js.map} +0 -0
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { Box, Text } from "ink";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
|
|
5
|
-
import { getTheme } from "../../utils/theme.js";
|
|
6
|
-
import { DESCRIPTION, PROMPT } from "./prompt.js";
|
|
7
|
-
import { OutputLine } from "../BashTool/OutputLine.js";
|
|
8
|
-
const inputSchema = z.object({}).passthrough();
|
|
9
|
-
const MCPTool = {
|
|
10
|
-
async isEnabled() {
|
|
11
|
-
return true;
|
|
12
|
-
},
|
|
13
|
-
isReadOnly() {
|
|
14
|
-
return false;
|
|
15
|
-
},
|
|
16
|
-
isConcurrencySafe() {
|
|
17
|
-
return false;
|
|
18
|
-
},
|
|
19
|
-
// Overridden in mcpClient.ts
|
|
20
|
-
name: "mcp",
|
|
21
|
-
// Overridden in mcpClient.ts
|
|
22
|
-
async description() {
|
|
23
|
-
return DESCRIPTION;
|
|
24
|
-
},
|
|
25
|
-
// Overridden in mcpClient.ts
|
|
26
|
-
async prompt() {
|
|
27
|
-
return PROMPT;
|
|
28
|
-
},
|
|
29
|
-
inputSchema,
|
|
30
|
-
// Overridden in mcpClient.ts
|
|
31
|
-
async *call() {
|
|
32
|
-
yield {
|
|
33
|
-
type: "result",
|
|
34
|
-
data: "",
|
|
35
|
-
resultForAssistant: ""
|
|
36
|
-
};
|
|
37
|
-
},
|
|
38
|
-
needsPermissions() {
|
|
39
|
-
return true;
|
|
40
|
-
},
|
|
41
|
-
renderToolUseMessage(input) {
|
|
42
|
-
return Object.entries(input).map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(", ");
|
|
43
|
-
},
|
|
44
|
-
// Overridden in mcpClient.ts
|
|
45
|
-
userFacingName: () => "mcp",
|
|
46
|
-
renderToolUseRejectedMessage() {
|
|
47
|
-
return /* @__PURE__ */ React.createElement(FallbackToolUseRejectedMessage, null);
|
|
48
|
-
},
|
|
49
|
-
renderToolResultMessage(output) {
|
|
50
|
-
const verbose = false;
|
|
51
|
-
if (Array.isArray(output)) {
|
|
52
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, output.map((item, i) => {
|
|
53
|
-
if (item.type === "image") {
|
|
54
|
-
return /* @__PURE__ */ React.createElement(
|
|
55
|
-
Box,
|
|
56
|
-
{
|
|
57
|
-
key: i,
|
|
58
|
-
justifyContent: "space-between",
|
|
59
|
-
overflowX: "hidden",
|
|
60
|
-
width: "100%"
|
|
61
|
-
},
|
|
62
|
-
/* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\u23BF \xA0"), /* @__PURE__ */ React.createElement(Text, null, "[Image]"))
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
const lines2 = item.text.split("\n").length;
|
|
66
|
-
return /* @__PURE__ */ React.createElement(
|
|
67
|
-
OutputLine,
|
|
68
|
-
{
|
|
69
|
-
key: i,
|
|
70
|
-
content: item.text,
|
|
71
|
-
lines: lines2,
|
|
72
|
-
verbose
|
|
73
|
-
}
|
|
74
|
-
);
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
|
-
if (!output) {
|
|
78
|
-
return /* @__PURE__ */ React.createElement(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%" }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\u23BF \xA0"), /* @__PURE__ */ React.createElement(Text, { color: getTheme().secondaryText }, "(No content)")));
|
|
79
|
-
}
|
|
80
|
-
const lines = output.split("\n").length;
|
|
81
|
-
return /* @__PURE__ */ React.createElement(OutputLine, { content: output, lines, verbose });
|
|
82
|
-
},
|
|
83
|
-
renderResultForAssistant(content) {
|
|
84
|
-
return content;
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
export {
|
|
88
|
-
MCPTool
|
|
89
|
-
};
|
|
90
|
-
//# sourceMappingURL=MCPTool.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/MCPTool/MCPTool.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Box, Text } from 'ink'\nimport * as React from 'react'\nimport { z } from 'zod'\nimport { FallbackToolUseRejectedMessage } from '../../components/FallbackToolUseRejectedMessage'\nimport { type Tool } from '../../Tool'\nimport { getTheme } from '../../utils/theme'\nimport { DESCRIPTION, PROMPT } from './prompt'\nimport { OutputLine } from '../BashTool/OutputLine'\n\n// Allow any input object since MCP tools define their own schemas\nconst inputSchema = z.object({}).passthrough()\n\nexport const MCPTool = {\n async isEnabled() {\n return true\n },\n isReadOnly() {\n return false\n },\n isConcurrencySafe() {\n return false // MCPTool can modify state through MCP calls, not safe for concurrent execution\n },\n // Overridden in mcpClient.ts\n name: 'mcp',\n // Overridden in mcpClient.ts\n async description() {\n return DESCRIPTION\n },\n // Overridden in mcpClient.ts\n async prompt() {\n return PROMPT\n },\n inputSchema,\n // Overridden in mcpClient.ts\n async *call() {\n yield {\n type: 'result',\n data: '',\n resultForAssistant: '',\n }\n },\n needsPermissions() {\n return true\n },\n renderToolUseMessage(input) {\n return Object.entries(input)\n .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)\n .join(', ')\n },\n // Overridden in mcpClient.ts\n userFacingName: () => 'mcp',\n renderToolUseRejectedMessage() {\n return <FallbackToolUseRejectedMessage />\n },\n renderToolResultMessage(output) {\n const verbose = false // Set default value for verbose\n if (Array.isArray(output)) {\n return (\n <Box flexDirection=\"column\">\n {output.map((item, i) => {\n if (item.type === 'image') {\n return (\n <Box\n key={i}\n justifyContent=\"space-between\"\n overflowX=\"hidden\"\n width=\"100%\"\n >\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text>[Image]</Text>\n </Box>\n </Box>\n )\n }\n const lines = item.text.split('\\n').length\n return (\n <OutputLine\n key={i}\n content={item.text}\n lines={lines}\n verbose={verbose}\n />\n )\n })}\n </Box>\n )\n }\n\n if (!output) {\n return (\n <Box justifyContent=\"space-between\" overflowX=\"hidden\" width=\"100%\">\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text color={getTheme().secondaryText}>(No content)</Text>\n </Box>\n </Box>\n )\n }\n\n const lines = output.split('\\n').length\n return <OutputLine content={output} lines={lines} verbose={verbose} />\n },\n renderResultForAssistant(content) {\n return content\n },\n} satisfies Tool<typeof inputSchema, string>\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,KAAK,YAAY;AAC1B,YAAY,WAAW;AACvB,SAAS,SAAS;AAClB,SAAS,sCAAsC;AAE/C,SAAS,gBAAgB;AACzB,SAAS,aAAa,cAAc;AACpC,SAAS,kBAAkB;AAG3B,MAAM,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAEtC,MAAM,UAAU;AAAA,EACrB,MAAM,YAAY;AAChB,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB;AAClB,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,MAAM;AAAA;AAAA,EAEN,MAAM,cAAc;AAClB,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,MAAM,SAAS;AACb,WAAO;AAAA,EACT;AAAA,EACA;AAAA;AAAA,EAEA,OAAO,OAAO;AACZ,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,oBAAoB;AAAA,IACtB;AAAA,EACF;AAAA,EACA,mBAAmB;AACjB,WAAO;AAAA,EACT;AAAA,EACA,qBAAqB,OAAO;AAC1B,WAAO,OAAO,QAAQ,KAAK,EACxB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,UAAU,KAAK,CAAC,EAAE,EACxD,KAAK,IAAI;AAAA,EACd;AAAA;AAAA,EAEA,gBAAgB,MAAM;AAAA,EACtB,+BAA+B;AAC7B,WAAO,oCAAC,oCAA+B;AAAA,EACzC;AAAA,EACA,wBAAwB,QAAQ;AAC9B,UAAM,UAAU;AAChB,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aACE,oCAAC,OAAI,eAAc,YAChB,OAAO,IAAI,CAAC,MAAM,MAAM;AACvB,YAAI,KAAK,SAAS,SAAS;AACzB,iBACE;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,gBAAe;AAAA,cACf,WAAU;AAAA,cACV,OAAM;AAAA;AAAA,YAEN,oCAAC,OAAI,eAAc,SACjB,oCAAC,YAAK,qBAAoB,GAC1B,oCAAC,YAAK,SAAO,CACf;AAAA,UACF;AAAA,QAEJ;AACA,cAAMA,SAAQ,KAAK,KAAK,MAAM,IAAI,EAAE;AACpC,eACE;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,SAAS,KAAK;AAAA,YACd,OAAOA;AAAA,YACP;AAAA;AAAA,QACF;AAAA,MAEJ,CAAC,CACH;AAAA,IAEJ;AAEA,QAAI,CAAC,QAAQ;AACX,aACE,oCAAC,OAAI,gBAAe,iBAAgB,WAAU,UAAS,OAAM,UAC3D,oCAAC,OAAI,eAAc,SACjB,oCAAC,YAAK,qBAAoB,GAC1B,oCAAC,QAAK,OAAO,SAAS,EAAE,iBAAe,cAAY,CACrD,CACF;AAAA,IAEJ;AAEA,UAAM,QAAQ,OAAO,MAAM,IAAI,EAAE;AACjC,WAAO,oCAAC,cAAW,SAAS,QAAQ,OAAc,SAAkB;AAAA,EACtE;AAAA,EACA,yBAAyB,SAAS;AAChC,WAAO;AAAA,EACT;AACF;",
|
|
6
|
-
"names": ["lines"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/MCPTool/prompt.ts"],
|
|
4
|
-
"sourcesContent": ["// Actual prompt and description are overridden in mcpClient.ts\nexport const PROMPT = ''\nexport const DESCRIPTION = ''\n"],
|
|
5
|
-
"mappings": "AACO,MAAM,SAAS;AACf,MAAM,cAAc;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync } from "fs";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { join } from "path";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
|
|
7
|
-
import { MEMORY_DIR } from "../../utils/env.js";
|
|
8
|
-
import { resolveAgentId } from "../../utils/agentStorage.js";
|
|
9
|
-
import { DESCRIPTION, PROMPT } from "./prompt.js";
|
|
10
|
-
const inputSchema = z.strictObject({
|
|
11
|
-
file_path: z.string().optional().describe("Optional path to a specific memory file to read")
|
|
12
|
-
});
|
|
13
|
-
const MemoryReadTool = {
|
|
14
|
-
name: "MemoryRead",
|
|
15
|
-
async description() {
|
|
16
|
-
return DESCRIPTION;
|
|
17
|
-
},
|
|
18
|
-
async prompt() {
|
|
19
|
-
return PROMPT;
|
|
20
|
-
},
|
|
21
|
-
inputSchema,
|
|
22
|
-
userFacingName() {
|
|
23
|
-
return "Read Memory";
|
|
24
|
-
},
|
|
25
|
-
async isEnabled() {
|
|
26
|
-
return false;
|
|
27
|
-
},
|
|
28
|
-
isReadOnly() {
|
|
29
|
-
return true;
|
|
30
|
-
},
|
|
31
|
-
isConcurrencySafe() {
|
|
32
|
-
return true;
|
|
33
|
-
},
|
|
34
|
-
needsPermissions() {
|
|
35
|
-
return false;
|
|
36
|
-
},
|
|
37
|
-
renderResultForAssistant({ content }) {
|
|
38
|
-
return content;
|
|
39
|
-
},
|
|
40
|
-
renderToolUseMessage(input) {
|
|
41
|
-
return Object.entries(input).map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(", ");
|
|
42
|
-
},
|
|
43
|
-
renderToolUseRejectedMessage() {
|
|
44
|
-
return /* @__PURE__ */ React.createElement(FallbackToolUseRejectedMessage, null);
|
|
45
|
-
},
|
|
46
|
-
renderToolResultMessage(output) {
|
|
47
|
-
return /* @__PURE__ */ React.createElement(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%" }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\u23BF \xA0"), /* @__PURE__ */ React.createElement(Text, null, output.content)));
|
|
48
|
-
},
|
|
49
|
-
async validateInput({ file_path }, context) {
|
|
50
|
-
const agentId = resolveAgentId(context?.agentId);
|
|
51
|
-
const agentMemoryDir = join(MEMORY_DIR, "agents", agentId);
|
|
52
|
-
if (file_path) {
|
|
53
|
-
const fullPath = join(agentMemoryDir, file_path);
|
|
54
|
-
if (!fullPath.startsWith(agentMemoryDir)) {
|
|
55
|
-
return { result: false, message: "Invalid memory file path" };
|
|
56
|
-
}
|
|
57
|
-
if (!existsSync(fullPath)) {
|
|
58
|
-
return { result: false, message: "Memory file does not exist" };
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return { result: true };
|
|
62
|
-
},
|
|
63
|
-
async *call({ file_path }, context) {
|
|
64
|
-
const agentId = resolveAgentId(context?.agentId);
|
|
65
|
-
const agentMemoryDir = join(MEMORY_DIR, "agents", agentId);
|
|
66
|
-
mkdirSync(agentMemoryDir, { recursive: true });
|
|
67
|
-
if (file_path) {
|
|
68
|
-
const fullPath = join(agentMemoryDir, file_path);
|
|
69
|
-
if (!existsSync(fullPath)) {
|
|
70
|
-
throw new Error("Memory file does not exist");
|
|
71
|
-
}
|
|
72
|
-
const content2 = readFileSync(fullPath, "utf-8");
|
|
73
|
-
yield {
|
|
74
|
-
type: "result",
|
|
75
|
-
data: {
|
|
76
|
-
content: content2
|
|
77
|
-
},
|
|
78
|
-
resultForAssistant: this.renderResultForAssistant({ content: content2 })
|
|
79
|
-
};
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const files = readdirSync(agentMemoryDir, { recursive: true }).map((f) => join(agentMemoryDir, f.toString())).filter((f) => !lstatSync(f).isDirectory()).map((f) => `- ${f}`).join("\n");
|
|
83
|
-
const indexPath = join(agentMemoryDir, "index.md");
|
|
84
|
-
const index = existsSync(indexPath) ? readFileSync(indexPath, "utf-8") : "";
|
|
85
|
-
const quotes = "'''";
|
|
86
|
-
const content = `Here are the contents of the agent memory file, \`${indexPath}\`:
|
|
87
|
-
${quotes}
|
|
88
|
-
${index}
|
|
89
|
-
${quotes}
|
|
90
|
-
|
|
91
|
-
Files in the agent memory directory:
|
|
92
|
-
${files}`;
|
|
93
|
-
yield {
|
|
94
|
-
type: "result",
|
|
95
|
-
data: { content },
|
|
96
|
-
resultForAssistant: this.renderResultForAssistant({ content })
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
export {
|
|
101
|
-
MemoryReadTool
|
|
102
|
-
};
|
|
103
|
-
//# sourceMappingURL=MemoryReadTool.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/MemoryReadTool/MemoryReadTool.tsx"],
|
|
4
|
-
"sourcesContent": ["import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync } from 'fs'\nimport { Box, Text } from 'ink'\nimport { join } from 'path'\nimport * as React from 'react'\nimport { z } from 'zod'\nimport { FallbackToolUseRejectedMessage } from '../../components/FallbackToolUseRejectedMessage'\nimport { Tool } from '../../Tool'\nimport { MEMORY_DIR } from '../../utils/env'\nimport { resolveAgentId } from '../../utils/agentStorage'\nimport { DESCRIPTION, PROMPT } from './prompt'\n\nconst inputSchema = z.strictObject({\n file_path: z\n .string()\n .optional()\n .describe('Optional path to a specific memory file to read'),\n})\n\nexport const MemoryReadTool = {\n name: 'MemoryRead',\n async description() {\n return DESCRIPTION\n },\n async prompt() {\n return PROMPT\n },\n inputSchema,\n userFacingName() {\n return 'Read Memory'\n },\n async isEnabled() {\n // TODO: Use a statsig gate\n // TODO: Figure out how to do that without regressing app startup perf\n return false\n },\n isReadOnly() {\n return true\n },\n isConcurrencySafe() {\n return true // MemoryRead is read-only, safe for concurrent execution\n },\n needsPermissions() {\n return false\n },\n renderResultForAssistant({ content }) {\n return content\n },\n renderToolUseMessage(input) {\n return Object.entries(input)\n .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)\n .join(', ')\n },\n renderToolUseRejectedMessage() {\n return <FallbackToolUseRejectedMessage />\n },\n renderToolResultMessage(output) {\n return (\n <Box justifyContent=\"space-between\" overflowX=\"hidden\" width=\"100%\">\n <Box flexDirection=\"row\">\n <Text> \u23BF </Text>\n <Text>{output.content}</Text>\n </Box>\n </Box>\n )\n },\n async validateInput({ file_path }, context) {\n const agentId = resolveAgentId(context?.agentId)\n const agentMemoryDir = join(MEMORY_DIR, 'agents', agentId)\n\n if (file_path) {\n const fullPath = join(agentMemoryDir, file_path)\n if (!fullPath.startsWith(agentMemoryDir)) {\n return { result: false, message: 'Invalid memory file path' }\n }\n if (!existsSync(fullPath)) {\n return { result: false, message: 'Memory file does not exist' }\n }\n }\n return { result: true }\n },\n async *call({ file_path }, context) {\n const agentId = resolveAgentId(context?.agentId)\n const agentMemoryDir = join(MEMORY_DIR, 'agents', agentId)\n mkdirSync(agentMemoryDir, { recursive: true })\n\n // If a specific file is requested, return its contents\n if (file_path) {\n const fullPath = join(agentMemoryDir, file_path)\n if (!existsSync(fullPath)) {\n throw new Error('Memory file does not exist')\n }\n const content = readFileSync(fullPath, 'utf-8')\n yield {\n type: 'result',\n data: {\n content,\n },\n resultForAssistant: this.renderResultForAssistant({ content }),\n }\n return\n }\n\n // Otherwise return the index and file list for this agent\n const files = readdirSync(agentMemoryDir, { recursive: true })\n .map(f => join(agentMemoryDir, f.toString()))\n .filter(f => !lstatSync(f).isDirectory())\n .map(f => `- ${f}`)\n .join('\\n')\n\n const indexPath = join(agentMemoryDir, 'index.md')\n const index = existsSync(indexPath) ? readFileSync(indexPath, 'utf-8') : ''\n\n const quotes = \"'''\"\n const content = `Here are the contents of the agent memory file, \\`${indexPath}\\`:\n${quotes}\n${index}\n${quotes}\n\nFiles in the agent memory directory:\n${files}`\n yield {\n type: 'result',\n data: { content },\n resultForAssistant: this.renderResultForAssistant({ content }),\n }\n },\n} satisfies Tool<typeof inputSchema, { content: string }>\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY,WAAW,WAAW,aAAa,oBAAoB;AAC5E,SAAS,KAAK,YAAY;AAC1B,SAAS,YAAY;AACrB,YAAY,WAAW;AACvB,SAAS,SAAS;AAClB,SAAS,sCAAsC;AAE/C,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,aAAa,cAAc;AAEpC,MAAM,cAAc,EAAE,aAAa;AAAA,EACjC,WAAW,EACR,OAAO,EACP,SAAS,EACT,SAAS,iDAAiD;AAC/D,CAAC;AAEM,MAAM,iBAAiB;AAAA,EAC5B,MAAM;AAAA,EACN,MAAM,cAAc;AAClB,WAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS;AACb,WAAO;AAAA,EACT;AAAA,EACA;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY;AAGhB,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB;AAClB,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,WAAO;AAAA,EACT;AAAA,EACA,yBAAyB,EAAE,QAAQ,GAAG;AACpC,WAAO;AAAA,EACT;AAAA,EACA,qBAAqB,OAAO;AAC1B,WAAO,OAAO,QAAQ,KAAK,EACxB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,UAAU,KAAK,CAAC,EAAE,EACxD,KAAK,IAAI;AAAA,EACd;AAAA,EACA,+BAA+B;AAC7B,WAAO,oCAAC,oCAA+B;AAAA,EACzC;AAAA,EACA,wBAAwB,QAAQ;AAC9B,WACE,oCAAC,OAAI,gBAAe,iBAAgB,WAAU,UAAS,OAAM,UAC3D,oCAAC,OAAI,eAAc,SACjB,oCAAC,YAAK,qBAAoB,GAC1B,oCAAC,YAAM,OAAO,OAAQ,CACxB,CACF;AAAA,EAEJ;AAAA,EACA,MAAM,cAAc,EAAE,UAAU,GAAG,SAAS;AAC1C,UAAM,UAAU,eAAe,SAAS,OAAO;AAC/C,UAAM,iBAAiB,KAAK,YAAY,UAAU,OAAO;AAEzD,QAAI,WAAW;AACb,YAAM,WAAW,KAAK,gBAAgB,SAAS;AAC/C,UAAI,CAAC,SAAS,WAAW,cAAc,GAAG;AACxC,eAAO,EAAE,QAAQ,OAAO,SAAS,2BAA2B;AAAA,MAC9D;AACA,UAAI,CAAC,WAAW,QAAQ,GAAG;AACzB,eAAO,EAAE,QAAQ,OAAO,SAAS,6BAA6B;AAAA,MAChE;AAAA,IACF;AACA,WAAO,EAAE,QAAQ,KAAK;AAAA,EACxB;AAAA,EACA,OAAO,KAAK,EAAE,UAAU,GAAG,SAAS;AAClC,UAAM,UAAU,eAAe,SAAS,OAAO;AAC/C,UAAM,iBAAiB,KAAK,YAAY,UAAU,OAAO;AACzD,cAAU,gBAAgB,EAAE,WAAW,KAAK,CAAC;AAG7C,QAAI,WAAW;AACb,YAAM,WAAW,KAAK,gBAAgB,SAAS;AAC/C,UAAI,CAAC,WAAW,QAAQ,GAAG;AACzB,cAAM,IAAI,MAAM,4BAA4B;AAAA,MAC9C;AACA,YAAMA,WAAU,aAAa,UAAU,OAAO;AAC9C,YAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,SAAAA;AAAA,QACF;AAAA,QACA,oBAAoB,KAAK,yBAAyB,EAAE,SAAAA,SAAQ,CAAC;AAAA,MAC/D;AACA;AAAA,IACF;AAGA,UAAM,QAAQ,YAAY,gBAAgB,EAAE,WAAW,KAAK,CAAC,EAC1D,IAAI,OAAK,KAAK,gBAAgB,EAAE,SAAS,CAAC,CAAC,EAC3C,OAAO,OAAK,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,EACvC,IAAI,OAAK,KAAK,CAAC,EAAE,EACjB,KAAK,IAAI;AAEZ,UAAM,YAAY,KAAK,gBAAgB,UAAU;AACjD,UAAM,QAAQ,WAAW,SAAS,IAAI,aAAa,WAAW,OAAO,IAAI;AAEzE,UAAM,SAAS;AACf,UAAM,UAAU,qDAAqD,SAAS;AAAA,EAChF,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA;AAAA;AAAA,EAGN,KAAK;AACH,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,MAAM,EAAE,QAAQ;AAAA,MAChB,oBAAoB,KAAK,yBAAyB,EAAE,QAAQ,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;",
|
|
6
|
-
"names": ["content"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/MemoryReadTool/prompt.ts"],
|
|
4
|
-
"sourcesContent": ["// Actual prompt and description are overridden in mcpClient.ts\nexport const PROMPT = ''\nexport const DESCRIPTION = ''\n"],
|
|
5
|
-
"mappings": "AACO,MAAM,SAAS;AACf,MAAM,cAAc;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { mkdirSync, writeFileSync } from "fs";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { dirname, join } from "path";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
|
|
7
|
-
import { MEMORY_DIR } from "../../utils/env.js";
|
|
8
|
-
import { resolveAgentId } from "../../utils/agentStorage.js";
|
|
9
|
-
import { recordFileEdit } from "../../services/fileFreshness.js";
|
|
10
|
-
import { DESCRIPTION, PROMPT } from "./prompt.js";
|
|
11
|
-
const inputSchema = z.strictObject({
|
|
12
|
-
file_path: z.string().describe("Path to the memory file to write"),
|
|
13
|
-
content: z.string().describe("Content to write to the file")
|
|
14
|
-
});
|
|
15
|
-
const MemoryWriteTool = {
|
|
16
|
-
name: "MemoryWrite",
|
|
17
|
-
async description() {
|
|
18
|
-
return DESCRIPTION;
|
|
19
|
-
},
|
|
20
|
-
async prompt() {
|
|
21
|
-
return PROMPT;
|
|
22
|
-
},
|
|
23
|
-
inputSchema,
|
|
24
|
-
userFacingName() {
|
|
25
|
-
return "Write Memory";
|
|
26
|
-
},
|
|
27
|
-
async isEnabled() {
|
|
28
|
-
return false;
|
|
29
|
-
},
|
|
30
|
-
isReadOnly() {
|
|
31
|
-
return false;
|
|
32
|
-
},
|
|
33
|
-
isConcurrencySafe() {
|
|
34
|
-
return false;
|
|
35
|
-
},
|
|
36
|
-
needsPermissions() {
|
|
37
|
-
return false;
|
|
38
|
-
},
|
|
39
|
-
renderResultForAssistant(content) {
|
|
40
|
-
return content;
|
|
41
|
-
},
|
|
42
|
-
renderToolUseMessage(input) {
|
|
43
|
-
return Object.entries(input).map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(", ");
|
|
44
|
-
},
|
|
45
|
-
renderToolUseRejectedMessage() {
|
|
46
|
-
return /* @__PURE__ */ React.createElement(FallbackToolUseRejectedMessage, null);
|
|
47
|
-
},
|
|
48
|
-
renderToolResultMessage() {
|
|
49
|
-
return /* @__PURE__ */ React.createElement(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%" }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, " ", "\u23BF Updated memory")));
|
|
50
|
-
},
|
|
51
|
-
async validateInput({ file_path }, context) {
|
|
52
|
-
const agentId = resolveAgentId(context?.agentId);
|
|
53
|
-
const agentMemoryDir = join(MEMORY_DIR, "agents", agentId);
|
|
54
|
-
const fullPath = join(agentMemoryDir, file_path);
|
|
55
|
-
if (!fullPath.startsWith(agentMemoryDir)) {
|
|
56
|
-
return { result: false, message: "Invalid memory file path" };
|
|
57
|
-
}
|
|
58
|
-
return { result: true };
|
|
59
|
-
},
|
|
60
|
-
async *call({ file_path, content }, context) {
|
|
61
|
-
const agentId = resolveAgentId(context?.agentId);
|
|
62
|
-
const agentMemoryDir = join(MEMORY_DIR, "agents", agentId);
|
|
63
|
-
const fullPath = join(agentMemoryDir, file_path);
|
|
64
|
-
mkdirSync(dirname(fullPath), { recursive: true });
|
|
65
|
-
writeFileSync(fullPath, content, "utf-8");
|
|
66
|
-
recordFileEdit(fullPath, content);
|
|
67
|
-
yield {
|
|
68
|
-
type: "result",
|
|
69
|
-
data: "Saved",
|
|
70
|
-
resultForAssistant: "Saved"
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
export {
|
|
75
|
-
MemoryWriteTool
|
|
76
|
-
};
|
|
77
|
-
//# sourceMappingURL=MemoryWriteTool.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/MemoryWriteTool/MemoryWriteTool.tsx"],
|
|
4
|
-
"sourcesContent": ["import { mkdirSync, writeFileSync } from 'fs'\nimport { Box, Text } from 'ink'\nimport { dirname, join } from 'path'\nimport * as React from 'react'\nimport { z } from 'zod'\nimport { FallbackToolUseRejectedMessage } from '../../components/FallbackToolUseRejectedMessage'\nimport { Tool } from '../../Tool'\nimport { MEMORY_DIR } from '../../utils/env'\nimport { resolveAgentId } from '../../utils/agentStorage'\nimport { recordFileEdit } from '../../services/fileFreshness'\nimport { DESCRIPTION, PROMPT } from './prompt'\n\nconst inputSchema = z.strictObject({\n file_path: z.string().describe('Path to the memory file to write'),\n content: z.string().describe('Content to write to the file'),\n})\n\nexport const MemoryWriteTool = {\n name: 'MemoryWrite',\n async description() {\n return DESCRIPTION\n },\n async prompt() {\n return PROMPT\n },\n inputSchema,\n userFacingName() {\n return 'Write Memory'\n },\n async isEnabled() {\n // TODO: Use a statsig gate\n // TODO: Figure out how to do that without regressing app startup perf\n return false\n },\n isReadOnly() {\n return false\n },\n isConcurrencySafe() {\n return false // MemoryWrite modifies state, not safe for concurrent execution\n },\n needsPermissions() {\n return false\n },\n renderResultForAssistant(content) {\n return content\n },\n renderToolUseMessage(input) {\n return Object.entries(input)\n .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)\n .join(', ')\n },\n renderToolUseRejectedMessage() {\n return <FallbackToolUseRejectedMessage />\n },\n renderToolResultMessage() {\n return (\n <Box justifyContent=\"space-between\" overflowX=\"hidden\" width=\"100%\">\n <Box flexDirection=\"row\">\n <Text>{' '}\u23BF Updated memory</Text>\n </Box>\n </Box>\n )\n },\n async validateInput({ file_path }, context) {\n const agentId = resolveAgentId(context?.agentId)\n const agentMemoryDir = join(MEMORY_DIR, 'agents', agentId)\n const fullPath = join(agentMemoryDir, file_path)\n if (!fullPath.startsWith(agentMemoryDir)) {\n return { result: false, message: 'Invalid memory file path' }\n }\n return { result: true }\n },\n async *call({ file_path, content }, context) {\n const agentId = resolveAgentId(context?.agentId)\n const agentMemoryDir = join(MEMORY_DIR, 'agents', agentId)\n const fullPath = join(agentMemoryDir, file_path)\n mkdirSync(dirname(fullPath), { recursive: true })\n writeFileSync(fullPath, content, 'utf-8')\n\n // Record Agent edit operation for file freshness tracking\n recordFileEdit(fullPath, content)\n\n yield {\n type: 'result',\n data: 'Saved',\n resultForAssistant: 'Saved',\n }\n },\n} satisfies Tool<typeof inputSchema, string>\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,WAAW,qBAAqB;AACzC,SAAS,KAAK,YAAY;AAC1B,SAAS,SAAS,YAAY;AAC9B,YAAY,WAAW;AACvB,SAAS,SAAS;AAClB,SAAS,sCAAsC;AAE/C,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAC/B,SAAS,aAAa,cAAc;AAEpC,MAAM,cAAc,EAAE,aAAa;AAAA,EACjC,WAAW,EAAE,OAAO,EAAE,SAAS,kCAAkC;AAAA,EACjE,SAAS,EAAE,OAAO,EAAE,SAAS,8BAA8B;AAC7D,CAAC;AAEM,MAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,MAAM,cAAc;AAClB,WAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS;AACb,WAAO;AAAA,EACT;AAAA,EACA;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY;AAGhB,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB;AAClB,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,WAAO;AAAA,EACT;AAAA,EACA,yBAAyB,SAAS;AAChC,WAAO;AAAA,EACT;AAAA,EACA,qBAAqB,OAAO;AAC1B,WAAO,OAAO,QAAQ,KAAK,EACxB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,UAAU,KAAK,CAAC,EAAE,EACxD,KAAK,IAAI;AAAA,EACd;AAAA,EACA,+BAA+B;AAC7B,WAAO,oCAAC,oCAA+B;AAAA,EACzC;AAAA,EACA,0BAA0B;AACxB,WACE,oCAAC,OAAI,gBAAe,iBAAgB,WAAU,UAAS,OAAM,UAC3D,oCAAC,OAAI,eAAc,SACjB,oCAAC,YAAM,MAAK,uBAAgB,CAC9B,CACF;AAAA,EAEJ;AAAA,EACA,MAAM,cAAc,EAAE,UAAU,GAAG,SAAS;AAC1C,UAAM,UAAU,eAAe,SAAS,OAAO;AAC/C,UAAM,iBAAiB,KAAK,YAAY,UAAU,OAAO;AACzD,UAAM,WAAW,KAAK,gBAAgB,SAAS;AAC/C,QAAI,CAAC,SAAS,WAAW,cAAc,GAAG;AACxC,aAAO,EAAE,QAAQ,OAAO,SAAS,2BAA2B;AAAA,IAC9D;AACA,WAAO,EAAE,QAAQ,KAAK;AAAA,EACxB;AAAA,EACA,OAAO,KAAK,EAAE,WAAW,QAAQ,GAAG,SAAS;AAC3C,UAAM,UAAU,eAAe,SAAS,OAAO;AAC/C,UAAM,iBAAiB,KAAK,YAAY,UAAU,OAAO;AACzD,UAAM,WAAW,KAAK,gBAAgB,SAAS;AAC/C,cAAU,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAChD,kBAAc,UAAU,SAAS,OAAO;AAGxC,mBAAe,UAAU,OAAO;AAEhC,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,oBAAoB;AAAA,IACtB;AAAA,EACF;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/tools/MemoryWriteTool/prompt.ts"],
|
|
4
|
-
"sourcesContent": ["// Actual prompt and description are overridden in mcpClient.ts\nexport const PROMPT = ''\nexport const DESCRIPTION = ''\n"],
|
|
5
|
-
"mappings": "AACO,MAAM,SAAS;AACf,MAAM,cAAc;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, statSync } from "fs";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { dirname, isAbsolute, relative, resolve } from "path";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { FileEditToolUpdatedMessage } from "../../components/FileEditToolUpdatedMessage.js";
|
|
7
|
-
import { logEvent } from "../../services/statsig.js";
|
|
8
|
-
import {
|
|
9
|
-
detectFileEncoding,
|
|
10
|
-
detectLineEndings,
|
|
11
|
-
writeTextContent
|
|
12
|
-
} from "../../utils/file.js";
|
|
13
|
-
import { logError } from "../../utils/log.js";
|
|
14
|
-
import { getCwd } from "../../utils/state.js";
|
|
15
|
-
import { getTheme } from "../../utils/theme.js";
|
|
16
|
-
import { NotebookEditTool } from "../NotebookEditTool/NotebookEditTool.js";
|
|
17
|
-
function applyContentEdit(content, oldString, newString, replaceAll = false) {
|
|
18
|
-
if (replaceAll) {
|
|
19
|
-
const regex = new RegExp(oldString.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g");
|
|
20
|
-
const matches = content.match(regex);
|
|
21
|
-
const occurrences = matches ? matches.length : 0;
|
|
22
|
-
const newContent = content.replace(regex, newString);
|
|
23
|
-
return { newContent, occurrences };
|
|
24
|
-
} else {
|
|
25
|
-
if (content.includes(oldString)) {
|
|
26
|
-
const newContent = content.replace(oldString, newString);
|
|
27
|
-
return { newContent, occurrences: 1 };
|
|
28
|
-
} else {
|
|
29
|
-
throw new Error(`String not found: ${oldString.substring(0, 50)}...`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
import { hasWritePermission } from "../../utils/permissions/filesystem.js";
|
|
34
|
-
import { PROMPT } from "./prompt.js";
|
|
35
|
-
import { emitReminderEvent } from "../../services/systemReminder.js";
|
|
36
|
-
import { recordFileEdit } from "../../services/fileFreshness.js";
|
|
37
|
-
const EditSchema = z.object({
|
|
38
|
-
old_string: z.string().describe("The text to replace"),
|
|
39
|
-
new_string: z.string().describe("The text to replace it with"),
|
|
40
|
-
replace_all: z.boolean().optional().default(false).describe("Replace all occurences of old_string (default false)")
|
|
41
|
-
});
|
|
42
|
-
const inputSchema = z.strictObject({
|
|
43
|
-
file_path: z.string().describe("The absolute path to the file to modify"),
|
|
44
|
-
edits: z.array(EditSchema).min(1).describe("Array of edit operations to perform sequentially on the file")
|
|
45
|
-
});
|
|
46
|
-
const N_LINES_SNIPPET = 4;
|
|
47
|
-
const MultiEditTool = {
|
|
48
|
-
name: "MultiEdit",
|
|
49
|
-
async description() {
|
|
50
|
-
return "A tool for making multiple edits to a single file atomically";
|
|
51
|
-
},
|
|
52
|
-
async prompt() {
|
|
53
|
-
return PROMPT;
|
|
54
|
-
},
|
|
55
|
-
inputSchema,
|
|
56
|
-
userFacingName() {
|
|
57
|
-
return "Multi-Edit";
|
|
58
|
-
},
|
|
59
|
-
async isEnabled() {
|
|
60
|
-
return true;
|
|
61
|
-
},
|
|
62
|
-
isReadOnly() {
|
|
63
|
-
return false;
|
|
64
|
-
},
|
|
65
|
-
isConcurrencySafe() {
|
|
66
|
-
return false;
|
|
67
|
-
},
|
|
68
|
-
needsPermissions(input) {
|
|
69
|
-
if (!input) return true;
|
|
70
|
-
return !hasWritePermission(input.file_path);
|
|
71
|
-
},
|
|
72
|
-
renderResultForAssistant(content) {
|
|
73
|
-
return content;
|
|
74
|
-
},
|
|
75
|
-
renderToolUseMessage(input, { verbose }) {
|
|
76
|
-
const { file_path, edits } = input;
|
|
77
|
-
const workingDir = getCwd();
|
|
78
|
-
const relativePath = isAbsolute(file_path) ? relative(workingDir, file_path) : file_path;
|
|
79
|
-
if (verbose) {
|
|
80
|
-
const editSummary = edits.map(
|
|
81
|
-
(edit, index) => `${index + 1}. Replace "${edit.old_string.substring(0, 50)}${edit.old_string.length > 50 ? "..." : ""}" with "${edit.new_string.substring(0, 50)}${edit.new_string.length > 50 ? "..." : ""}"`
|
|
82
|
-
).join("\n");
|
|
83
|
-
return `Multiple edits to ${relativePath}:
|
|
84
|
-
${editSummary}`;
|
|
85
|
-
}
|
|
86
|
-
return `Making ${edits.length} edits to ${relativePath}`;
|
|
87
|
-
},
|
|
88
|
-
renderToolUseRejectedMessage() {
|
|
89
|
-
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: getTheme().error }, "\u26A0 Edit request rejected"));
|
|
90
|
-
},
|
|
91
|
-
renderToolResultMessage(output) {
|
|
92
|
-
if (typeof output === "string") {
|
|
93
|
-
const isError = output.includes("Error:");
|
|
94
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { color: isError ? getTheme().error : getTheme().success }, output));
|
|
95
|
-
}
|
|
96
|
-
return /* @__PURE__ */ React.createElement(FileEditToolUpdatedMessage, { ...output });
|
|
97
|
-
},
|
|
98
|
-
async validateInput({ file_path, edits }, context) {
|
|
99
|
-
const workingDir = getCwd();
|
|
100
|
-
const normalizedPath = isAbsolute(file_path) ? resolve(file_path) : resolve(workingDir, file_path);
|
|
101
|
-
if (normalizedPath.endsWith(".ipynb")) {
|
|
102
|
-
return {
|
|
103
|
-
result: false,
|
|
104
|
-
errorCode: 1,
|
|
105
|
-
message: `For Jupyter notebooks (.ipynb files), use the ${NotebookEditTool.name} tool instead.`
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
if (!existsSync(normalizedPath)) {
|
|
109
|
-
const parentDir = dirname(normalizedPath);
|
|
110
|
-
if (!existsSync(parentDir)) {
|
|
111
|
-
return {
|
|
112
|
-
result: false,
|
|
113
|
-
errorCode: 2,
|
|
114
|
-
message: `Parent directory does not exist: ${parentDir}`
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
if (edits.length === 0 || edits[0].old_string !== "") {
|
|
118
|
-
return {
|
|
119
|
-
result: false,
|
|
120
|
-
errorCode: 6,
|
|
121
|
-
message: "For new files, the first edit must have an empty old_string to create the file content."
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
} else {
|
|
125
|
-
const readFileTimestamps = context?.readFileTimestamps || {};
|
|
126
|
-
const readTimestamp = readFileTimestamps[normalizedPath];
|
|
127
|
-
if (!readTimestamp) {
|
|
128
|
-
return {
|
|
129
|
-
result: false,
|
|
130
|
-
errorCode: 7,
|
|
131
|
-
message: "File has not been read yet. Read it first before editing it.",
|
|
132
|
-
meta: {
|
|
133
|
-
filePath: normalizedPath,
|
|
134
|
-
isFilePathAbsolute: String(isAbsolute(file_path))
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
const stats = statSync(normalizedPath);
|
|
139
|
-
const lastWriteTime = stats.mtimeMs;
|
|
140
|
-
if (lastWriteTime > readTimestamp) {
|
|
141
|
-
return {
|
|
142
|
-
result: false,
|
|
143
|
-
errorCode: 8,
|
|
144
|
-
message: "File has been modified since read, either by the user or by a linter. Read it again before attempting to edit it.",
|
|
145
|
-
meta: {
|
|
146
|
-
filePath: normalizedPath,
|
|
147
|
-
lastWriteTime,
|
|
148
|
-
readTimestamp
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
const encoding = detectFileEncoding(normalizedPath);
|
|
153
|
-
if (encoding === "binary") {
|
|
154
|
-
return {
|
|
155
|
-
result: false,
|
|
156
|
-
errorCode: 9,
|
|
157
|
-
message: "Cannot edit binary files."
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
const currentContent = readFileSync(normalizedPath, "utf-8");
|
|
161
|
-
for (let i = 0; i < edits.length; i++) {
|
|
162
|
-
const edit = edits[i];
|
|
163
|
-
if (edit.old_string !== "" && !currentContent.includes(edit.old_string)) {
|
|
164
|
-
return {
|
|
165
|
-
result: false,
|
|
166
|
-
errorCode: 10,
|
|
167
|
-
message: `Edit ${i + 1}: String to replace not found in file: "${edit.old_string.substring(0, 100)}${edit.old_string.length > 100 ? "..." : ""}"`,
|
|
168
|
-
meta: {
|
|
169
|
-
editIndex: i + 1,
|
|
170
|
-
oldString: edit.old_string.substring(0, 200)
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
for (let i = 0; i < edits.length; i++) {
|
|
177
|
-
const edit = edits[i];
|
|
178
|
-
if (edit.old_string === edit.new_string) {
|
|
179
|
-
return {
|
|
180
|
-
result: false,
|
|
181
|
-
errorCode: 3,
|
|
182
|
-
message: `Edit ${i + 1}: old_string and new_string cannot be the same`
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return { result: true };
|
|
187
|
-
},
|
|
188
|
-
async *call({ file_path, edits }, { readFileTimestamps }) {
|
|
189
|
-
const startTime = Date.now();
|
|
190
|
-
const workingDir = getCwd();
|
|
191
|
-
const filePath = isAbsolute(file_path) ? resolve(file_path) : resolve(workingDir, file_path);
|
|
192
|
-
try {
|
|
193
|
-
let currentContent = "";
|
|
194
|
-
let fileExists = existsSync(filePath);
|
|
195
|
-
if (fileExists) {
|
|
196
|
-
const encoding2 = detectFileEncoding(filePath);
|
|
197
|
-
if (encoding2 === "binary") {
|
|
198
|
-
yield {
|
|
199
|
-
type: "result",
|
|
200
|
-
data: "Error: Cannot edit binary files",
|
|
201
|
-
resultForAssistant: "Error: Cannot edit binary files"
|
|
202
|
-
};
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
currentContent = readFileSync(filePath, "utf-8");
|
|
206
|
-
} else {
|
|
207
|
-
const parentDir = dirname(filePath);
|
|
208
|
-
if (!existsSync(parentDir)) {
|
|
209
|
-
mkdirSync(parentDir, { recursive: true });
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
let modifiedContent = currentContent;
|
|
213
|
-
const appliedEdits = [];
|
|
214
|
-
for (let i = 0; i < edits.length; i++) {
|
|
215
|
-
const edit = edits[i];
|
|
216
|
-
const { old_string, new_string, replace_all } = edit;
|
|
217
|
-
try {
|
|
218
|
-
const result = applyContentEdit(
|
|
219
|
-
modifiedContent,
|
|
220
|
-
old_string,
|
|
221
|
-
new_string,
|
|
222
|
-
replace_all
|
|
223
|
-
);
|
|
224
|
-
modifiedContent = result.newContent;
|
|
225
|
-
appliedEdits.push({
|
|
226
|
-
editIndex: i + 1,
|
|
227
|
-
success: true,
|
|
228
|
-
old_string: old_string.substring(0, 100),
|
|
229
|
-
new_string: new_string.substring(0, 100),
|
|
230
|
-
occurrences: result.occurrences
|
|
231
|
-
});
|
|
232
|
-
} catch (error) {
|
|
233
|
-
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
234
|
-
yield {
|
|
235
|
-
type: "result",
|
|
236
|
-
data: `Error in edit ${i + 1}: ${errorMessage}`,
|
|
237
|
-
resultForAssistant: `Error in edit ${i + 1}: ${errorMessage}`
|
|
238
|
-
};
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
const lineEndings = fileExists ? detectLineEndings(currentContent) : "LF";
|
|
243
|
-
const encoding = fileExists ? detectFileEncoding(filePath) : "utf8";
|
|
244
|
-
writeTextContent(filePath, modifiedContent, encoding, lineEndings);
|
|
245
|
-
recordFileEdit(filePath, modifiedContent);
|
|
246
|
-
readFileTimestamps[filePath] = Date.now();
|
|
247
|
-
emitReminderEvent("file:edited", {
|
|
248
|
-
filePath,
|
|
249
|
-
edits: edits.map((e) => ({
|
|
250
|
-
oldString: e.old_string,
|
|
251
|
-
newString: e.new_string
|
|
252
|
-
})),
|
|
253
|
-
originalContent: currentContent,
|
|
254
|
-
newContent: modifiedContent,
|
|
255
|
-
timestamp: Date.now(),
|
|
256
|
-
operation: fileExists ? "update" : "create"
|
|
257
|
-
});
|
|
258
|
-
const relativePath = relative(workingDir, filePath);
|
|
259
|
-
const summary = `Successfully applied ${edits.length} edits to ${relativePath}`;
|
|
260
|
-
const resultData = {
|
|
261
|
-
filePath: relativePath,
|
|
262
|
-
wasNewFile: !fileExists,
|
|
263
|
-
editsApplied: appliedEdits,
|
|
264
|
-
totalEdits: edits.length,
|
|
265
|
-
summary
|
|
266
|
-
};
|
|
267
|
-
logEvent("multi_edit_tool_used", {
|
|
268
|
-
file_path: relativePath,
|
|
269
|
-
edits_count: String(edits.length),
|
|
270
|
-
was_new_file: String(!fileExists),
|
|
271
|
-
duration_ms: String(Date.now() - startTime)
|
|
272
|
-
});
|
|
273
|
-
yield {
|
|
274
|
-
type: "result",
|
|
275
|
-
data: resultData,
|
|
276
|
-
resultForAssistant: summary
|
|
277
|
-
};
|
|
278
|
-
} catch (error) {
|
|
279
|
-
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
|
|
280
|
-
const errorResult = `Error applying multi-edit: ${errorMessage}`;
|
|
281
|
-
logError(error);
|
|
282
|
-
yield {
|
|
283
|
-
type: "result",
|
|
284
|
-
data: errorResult,
|
|
285
|
-
resultForAssistant: errorResult
|
|
286
|
-
};
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
};
|
|
290
|
-
export {
|
|
291
|
-
MultiEditTool
|
|
292
|
-
};
|
|
293
|
-
//# sourceMappingURL=MultiEditTool.js.map
|