@shareai-lab/kode 1.2.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -388
- package/cli-acp.js +82 -0
- package/cli.js +89 -79
- package/dist/REPL-GIU4ZIXM.js +42 -0
- package/dist/acp-H3VJ77YG.js +1357 -0
- package/dist/acp-H3VJ77YG.js.map +7 -0
- package/dist/agentsValidate-XP3CFN6F.js +373 -0
- package/dist/agentsValidate-XP3CFN6F.js.map +7 -0
- package/dist/ask-3G5H5KD5.js +125 -0
- package/dist/ask-3G5H5KD5.js.map +7 -0
- package/dist/autoUpdater-DNRMJWFQ.js +17 -0
- package/dist/chunk-2KWKUXLT.js +490 -0
- package/dist/chunk-2KWKUXLT.js.map +7 -0
- package/dist/chunk-2PMO2FS2.js +1097 -0
- package/dist/chunk-2PMO2FS2.js.map +7 -0
- package/dist/chunk-3RUXVV4S.js +23 -0
- package/dist/chunk-3RUXVV4S.js.map +7 -0
- package/dist/chunk-3TXNP6HH.js +240 -0
- package/dist/chunk-3TXNP6HH.js.map +7 -0
- package/dist/chunk-4GAIJGRH.js +472 -0
- package/dist/chunk-4GAIJGRH.js.map +7 -0
- package/dist/chunk-4RTX4AG4.js +249 -0
- package/dist/chunk-4RTX4AG4.js.map +7 -0
- package/dist/chunk-54DNHKOD.js +511 -0
- package/dist/chunk-54DNHKOD.js.map +7 -0
- package/dist/chunk-67PY5IX6.js +34 -0
- package/dist/chunk-67PY5IX6.js.map +7 -0
- package/dist/chunk-6DRDLOLP.js +2613 -0
- package/dist/chunk-6DRDLOLP.js.map +7 -0
- package/dist/chunk-7CQVZNQV.js +1609 -0
- package/dist/chunk-7CQVZNQV.js.map +7 -0
- package/dist/chunk-ABLVTESJ.js +19 -0
- package/dist/chunk-ABLVTESJ.js.map +7 -0
- package/dist/{utils/config.js → chunk-AIMIPK4B.js} +351 -171
- package/dist/chunk-AIMIPK4B.js.map +7 -0
- package/dist/{utils/autoUpdater.js → chunk-BHGTA6JQ.js} +38 -21
- package/dist/chunk-BHGTA6JQ.js.map +7 -0
- package/dist/chunk-CIG63V4E.js +72 -0
- package/dist/chunk-CIG63V4E.js.map +7 -0
- package/dist/chunk-E6YNABER.js +24 -0
- package/dist/chunk-E6YNABER.js.map +7 -0
- package/dist/chunk-EH34V7CY.js +191 -0
- package/dist/chunk-EH34V7CY.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-FH5CHM6L.js +148 -0
- package/dist/chunk-FH5CHM6L.js.map +7 -0
- package/dist/chunk-G6I7XROM.js +138 -0
- package/dist/chunk-G6I7XROM.js.map +7 -0
- package/dist/chunk-HN4E4UUQ.js +96 -0
- package/dist/chunk-HN4E4UUQ.js.map +7 -0
- package/dist/chunk-HSPVVDIW.js +30198 -0
- package/dist/chunk-HSPVVDIW.js.map +7 -0
- package/dist/{services/systemReminder.js → chunk-IE2CG2TV.js} +221 -59
- package/dist/chunk-IE2CG2TV.js.map +7 -0
- package/dist/chunk-JC6NCUG5.js +11 -0
- package/dist/chunk-K2MI4TPB.js +1256 -0
- package/dist/chunk-K2MI4TPB.js.map +7 -0
- package/dist/chunk-KAA5BGMQ.js +12 -0
- package/dist/chunk-KAA5BGMQ.js.map +7 -0
- package/dist/chunk-MN77D2F7.js +2931 -0
- package/dist/chunk-MN77D2F7.js.map +7 -0
- package/dist/chunk-NPFOMITO.js +21 -0
- package/dist/chunk-NPFOMITO.js.map +7 -0
- package/dist/chunk-NQLEUHMS.js +196 -0
- package/dist/chunk-NQLEUHMS.js.map +7 -0
- package/dist/chunk-OIFQB3S4.js +515 -0
- package/dist/chunk-OIFQB3S4.js.map +7 -0
- package/dist/chunk-OWTG2W3A.js +164 -0
- package/dist/chunk-OWTG2W3A.js.map +7 -0
- package/dist/chunk-OZNRLY3E.js +735 -0
- package/dist/chunk-OZNRLY3E.js.map +7 -0
- package/dist/{utils/debugLogger.js → chunk-QYFKRZQC.js} +107 -204
- package/dist/chunk-QYFKRZQC.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/theme.js → chunk-SDGKPKDK.js} +28 -6
- package/dist/chunk-SDGKPKDK.js.map +7 -0
- package/dist/chunk-SRZZFAS7.js +766 -0
- package/dist/chunk-SRZZFAS7.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-VBXVYQYY.js +145 -0
- package/dist/chunk-VBXVYQYY.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/{utils/model.js → chunk-Z33T5YN5.js} +194 -227
- package/dist/chunk-Z33T5YN5.js.map +7 -0
- package/dist/{services/openai.js → chunk-ZQU3TXLC.js} +168 -234
- package/dist/chunk-ZQU3TXLC.js.map +7 -0
- package/dist/cli-SRV2INSL.js +3917 -0
- package/dist/cli-SRV2INSL.js.map +7 -0
- package/dist/commands-TWH6PGVG.js +46 -0
- package/dist/config-6ZMBCL23.js +81 -0
- package/dist/context-JQIOOI4W.js +30 -0
- package/dist/costTracker-6SL26FDB.js +19 -0
- package/dist/customCommands-DNEJS3ZU.js +25 -0
- package/dist/customCommands-DNEJS3ZU.js.map +7 -0
- package/dist/env-OFAXZ3XG.js +22 -0
- package/dist/env-OFAXZ3XG.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-6N27AC5K.js +18 -0
- package/dist/kodeAgentSessionLoad-6N27AC5K.js.map +7 -0
- package/dist/kodeAgentSessionResume-HUSAEO24.js +16 -0
- package/dist/kodeAgentSessionResume-HUSAEO24.js.map +7 -0
- package/dist/kodeAgentStreamJson-NXFN7TXH.js +13 -0
- package/dist/kodeAgentStreamJson-NXFN7TXH.js.map +7 -0
- package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js +131 -0
- package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js.map +7 -0
- package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +10 -0
- package/dist/kodeAgentStructuredStdio-HGWJT7CU.js.map +7 -0
- package/dist/kodeHooks-TDMXFWSO.js +36 -0
- package/dist/kodeHooks-TDMXFWSO.js.map +7 -0
- package/dist/llm-XVXWYOHK.js +3118 -0
- package/dist/llm-XVXWYOHK.js.map +7 -0
- package/dist/llmLazy-7TD5N7XP.js +15 -0
- package/dist/llmLazy-7TD5N7XP.js.map +7 -0
- package/dist/loader-AUXIJTY6.js +28 -0
- package/dist/loader-AUXIJTY6.js.map +7 -0
- package/dist/mcp-BXJ3K7NZ.js +49 -0
- package/dist/mcp-BXJ3K7NZ.js.map +7 -0
- package/dist/{services/mentionProcessor.js → mentionProcessor-YD7YXYGF.js} +61 -50
- package/dist/mentionProcessor-YD7YXYGF.js.map +7 -0
- package/dist/messages-OFUJSPRV.js +63 -0
- package/dist/messages-OFUJSPRV.js.map +7 -0
- package/dist/model-KPYCXWBK.js +30 -0
- package/dist/model-KPYCXWBK.js.map +7 -0
- package/dist/openai-5G5D5Q4B.js +29 -0
- package/dist/openai-5G5D5Q4B.js.map +7 -0
- package/dist/outputStyles-HLDXFQK3.js +28 -0
- package/dist/outputStyles-HLDXFQK3.js.map +7 -0
- package/dist/package.json +1 -1
- package/dist/pluginRuntime-FPTKK6NY.js +218 -0
- package/dist/pluginRuntime-FPTKK6NY.js.map +7 -0
- package/dist/pluginValidation-DSFXZ4GF.js +17 -0
- package/dist/pluginValidation-DSFXZ4GF.js.map +7 -0
- package/dist/prompts-LWLAJRS2.js +48 -0
- package/dist/prompts-LWLAJRS2.js.map +7 -0
- package/dist/query-HVPWL27C.js +50 -0
- package/dist/query-HVPWL27C.js.map +7 -0
- package/dist/responsesStreaming-AW344PQO.js +10 -0
- package/dist/responsesStreaming-AW344PQO.js.map +7 -0
- package/dist/ripgrep-YOPCY2GO.js +17 -0
- package/dist/ripgrep-YOPCY2GO.js.map +7 -0
- package/dist/skillMarketplace-PSNKDINM.js +37 -0
- package/dist/skillMarketplace-PSNKDINM.js.map +7 -0
- package/dist/state-KNRWP3FO.js +16 -0
- package/dist/state-KNRWP3FO.js.map +7 -0
- package/dist/theme-7S2QN2FO.js +14 -0
- package/dist/theme-7S2QN2FO.js.map +7 -0
- package/dist/toolPermissionContext-65L65VEZ.js +17 -0
- package/dist/toolPermissionContext-65L65VEZ.js.map +7 -0
- package/dist/toolPermissionSettings-GPOBH4IV.js +18 -0
- package/dist/toolPermissionSettings-GPOBH4IV.js.map +7 -0
- package/dist/tools-FZU2FZBD.js +47 -0
- package/dist/tools-FZU2FZBD.js.map +7 -0
- package/dist/userInput-VHNBN2MW.js +311 -0
- package/dist/userInput-VHNBN2MW.js.map +7 -0
- package/dist/uuid-QN2CNKKN.js +9 -0
- package/dist/uuid-QN2CNKKN.js.map +7 -0
- package/package.json +43 -14
- 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 -312
- 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 -32
- 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 -488
- 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 -1034
- 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 -1107
- 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 -22
- 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 -593
- 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 -308
- 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.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-GIU4ZIXM.js.map} +0 -0
- /package/dist/{components/CustomSelect/theme.js.map → autoUpdater-DNRMJWFQ.js.map} +0 -0
- /package/dist/{types/common.d.js.map → chunk-JC6NCUG5.js.map} +0 -0
- /package/dist/{types/conversation.js.map → commands-TWH6PGVG.js.map} +0 -0
- /package/dist/{types/logs.js.map → config-6ZMBCL23.js.map} +0 -0
- /package/dist/{types/modelCapabilities.js.map → context-JQIOOI4W.js.map} +0 -0
- /package/dist/{types/notebook.js.map → costTracker-6SL26FDB.js.map} +0 -0
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { execFile } from "child_process";
|
|
2
|
-
import { getCwd } from "./state.js";
|
|
3
|
-
import { logError } from "./log.js";
|
|
4
|
-
const MS_IN_SECOND = 1e3;
|
|
5
|
-
const SECONDS_IN_MINUTE = 60;
|
|
6
|
-
function execFileNoThrow(file, args, abortSignal, timeout = 10 * SECONDS_IN_MINUTE * MS_IN_SECOND, preserveOutputOnError = true) {
|
|
7
|
-
return new Promise((resolve) => {
|
|
8
|
-
try {
|
|
9
|
-
execFile(
|
|
10
|
-
file,
|
|
11
|
-
args,
|
|
12
|
-
{
|
|
13
|
-
maxBuffer: 1e6,
|
|
14
|
-
signal: abortSignal,
|
|
15
|
-
timeout,
|
|
16
|
-
cwd: getCwd()
|
|
17
|
-
},
|
|
18
|
-
(error, stdout, stderr) => {
|
|
19
|
-
if (error) {
|
|
20
|
-
if (preserveOutputOnError) {
|
|
21
|
-
const errorCode = typeof error.code === "number" ? error.code : 1;
|
|
22
|
-
resolve({
|
|
23
|
-
stdout: stdout || "",
|
|
24
|
-
stderr: stderr || "",
|
|
25
|
-
code: errorCode
|
|
26
|
-
});
|
|
27
|
-
} else {
|
|
28
|
-
resolve({ stdout: "", stderr: "", code: 1 });
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
resolve({ stdout, stderr, code: 0 });
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
logError(error);
|
|
37
|
-
resolve({ stdout: "", stderr: "", code: 1 });
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
export {
|
|
42
|
-
execFileNoThrow
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=execFileNoThrow.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/execFileNoThrow.ts"],
|
|
4
|
-
"sourcesContent": ["import { execFile } from 'child_process'\nimport { getCwd } from './state'\nimport { logError } from './log'\n\nconst MS_IN_SECOND = 1000\nconst SECONDS_IN_MINUTE = 60\n\n/**\n * execFile, but always resolves (never throws)\n */\nexport function execFileNoThrow(\n file: string,\n args: string[],\n abortSignal?: AbortSignal,\n timeout = 10 * SECONDS_IN_MINUTE * MS_IN_SECOND,\n preserveOutputOnError = true,\n): Promise<{ stdout: string; stderr: string; code: number }> {\n return new Promise(resolve => {\n try {\n execFile(\n file,\n args,\n {\n maxBuffer: 1_000_000,\n signal: abortSignal,\n timeout,\n cwd: getCwd(),\n },\n (error, stdout, stderr) => {\n if (error) {\n if (preserveOutputOnError) {\n const errorCode = typeof error.code === 'number' ? error.code : 1\n resolve({\n stdout: stdout || '',\n stderr: stderr || '',\n code: errorCode,\n })\n } else {\n resolve({ stdout: '', stderr: '', code: 1 })\n }\n } else {\n resolve({ stdout, stderr, code: 0 })\n }\n },\n )\n } catch (error) {\n logError(error)\n resolve({ stdout: '', stderr: '', code: 1 })\n }\n })\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,gBAAgB;AAEzB,MAAM,eAAe;AACrB,MAAM,oBAAoB;AAKnB,SAAS,gBACd,MACA,MACA,aACA,UAAU,KAAK,oBAAoB,cACnC,wBAAwB,MACmC;AAC3D,SAAO,IAAI,QAAQ,aAAW;AAC5B,QAAI;AACF;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,UACE,WAAW;AAAA,UACX,QAAQ;AAAA,UACR;AAAA,UACA,KAAK,OAAO;AAAA,QACd;AAAA,QACA,CAAC,OAAO,QAAQ,WAAW;AACzB,cAAI,OAAO;AACT,gBAAI,uBAAuB;AACzB,oBAAM,YAAY,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAChE,sBAAQ;AAAA,gBACN,QAAQ,UAAU;AAAA,gBAClB,QAAQ,UAAU;AAAA,gBAClB,MAAM;AAAA,cACR,CAAC;AAAA,YACH,OAAO;AACL,sBAAQ,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;AAAA,YAC7C;AAAA,UACF,OAAO;AACL,oBAAQ,EAAE,QAAQ,QAAQ,MAAM,EAAE,CAAC;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,eAAS,KAAK;AACd,cAAQ,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;AAAA,IAC7C;AAAA,EACF,CAAC;AACH;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
4
|
-
import { randomUUID } from "crypto";
|
|
5
|
-
function getExpertChatDirectory() {
|
|
6
|
-
const configDir = process.env.KODE_CONFIG_DIR ?? process.env.ANYKODE_CONFIG_DIR ?? join(homedir(), ".kode");
|
|
7
|
-
const expertChatDir = join(configDir, "expert-chats");
|
|
8
|
-
if (!existsSync(expertChatDir)) {
|
|
9
|
-
mkdirSync(expertChatDir, { recursive: true });
|
|
10
|
-
}
|
|
11
|
-
return expertChatDir;
|
|
12
|
-
}
|
|
13
|
-
function getSessionFilePath(sessionId) {
|
|
14
|
-
return join(getExpertChatDirectory(), `${sessionId}.json`);
|
|
15
|
-
}
|
|
16
|
-
function createExpertChatSession(expertModel) {
|
|
17
|
-
const sessionId = randomUUID().slice(0, 5);
|
|
18
|
-
const session = {
|
|
19
|
-
sessionId,
|
|
20
|
-
expertModel,
|
|
21
|
-
messages: [],
|
|
22
|
-
createdAt: Date.now(),
|
|
23
|
-
lastUpdated: Date.now()
|
|
24
|
-
};
|
|
25
|
-
saveExpertChatSession(session);
|
|
26
|
-
return session;
|
|
27
|
-
}
|
|
28
|
-
function loadExpertChatSession(sessionId) {
|
|
29
|
-
const filePath = getSessionFilePath(sessionId);
|
|
30
|
-
if (!existsSync(filePath)) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
const content = readFileSync(filePath, "utf-8");
|
|
35
|
-
return JSON.parse(content);
|
|
36
|
-
} catch (error) {
|
|
37
|
-
console.error(`Failed to load expert chat session ${sessionId}:`, error);
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function saveExpertChatSession(session) {
|
|
42
|
-
const filePath = getSessionFilePath(session.sessionId);
|
|
43
|
-
try {
|
|
44
|
-
session.lastUpdated = Date.now();
|
|
45
|
-
writeFileSync(filePath, JSON.stringify(session, null, 2), "utf-8");
|
|
46
|
-
} catch (error) {
|
|
47
|
-
console.error(
|
|
48
|
-
`Failed to save expert chat session ${session.sessionId}:`,
|
|
49
|
-
error
|
|
50
|
-
);
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function addMessageToSession(sessionId, role, content) {
|
|
55
|
-
const session = loadExpertChatSession(sessionId);
|
|
56
|
-
if (!session) {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
session.messages.push({ role, content });
|
|
60
|
-
saveExpertChatSession(session);
|
|
61
|
-
return session;
|
|
62
|
-
}
|
|
63
|
-
function getSessionMessages(sessionId) {
|
|
64
|
-
const session = loadExpertChatSession(sessionId);
|
|
65
|
-
return session?.messages || [];
|
|
66
|
-
}
|
|
67
|
-
function generateSessionId() {
|
|
68
|
-
return randomUUID().slice(0, 5);
|
|
69
|
-
}
|
|
70
|
-
export {
|
|
71
|
-
addMessageToSession,
|
|
72
|
-
createExpertChatSession,
|
|
73
|
-
generateSessionId,
|
|
74
|
-
getSessionMessages,
|
|
75
|
-
loadExpertChatSession,
|
|
76
|
-
saveExpertChatSession
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=expertChatStorage.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/expertChatStorage.ts"],
|
|
4
|
-
"sourcesContent": ["import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs'\nimport { join } from 'path'\nimport { homedir } from 'os'\nimport { randomUUID } from 'crypto'\n\n/**\n * Expert Chat Session Storage - \u6781\u7B80\u7248\n * \u5B58\u50A8\u7B26\u5408OpenAI\u683C\u5F0F\u7684messages\u5386\u53F2\n */\n\nexport interface ChatMessage {\n role: 'user' | 'assistant'\n content: string\n}\n\nexport interface ExpertChatSession {\n sessionId: string\n expertModel: string\n messages: ChatMessage[]\n createdAt: number\n lastUpdated: number\n}\n\n/**\n * \u83B7\u53D6\u4E13\u5BB6\u804A\u5929\u5B58\u50A8\u76EE\u5F55\n */\nfunction getExpertChatDirectory(): string {\n const configDir =\n process.env.KODE_CONFIG_DIR ?? process.env.ANYKODE_CONFIG_DIR ?? join(homedir(), '.kode')\n const expertChatDir = join(configDir, 'expert-chats')\n\n if (!existsSync(expertChatDir)) {\n mkdirSync(expertChatDir, { recursive: true })\n }\n\n return expertChatDir\n}\n\n/**\n * \u83B7\u53D6\u4F1A\u8BDD\u6587\u4EF6\u8DEF\u5F84 - \u4F7F\u7528 sessionId.json \u683C\u5F0F\n */\nfunction getSessionFilePath(sessionId: string): string {\n return join(getExpertChatDirectory(), `${sessionId}.json`)\n}\n\n/**\n * \u521B\u5EFA\u65B0\u7684\u4E13\u5BB6\u804A\u5929\u4F1A\u8BDD\n */\nexport function createExpertChatSession(\n expertModel: string,\n): ExpertChatSession {\n const sessionId = randomUUID().slice(0, 5)\n const session: ExpertChatSession = {\n sessionId,\n expertModel,\n messages: [],\n createdAt: Date.now(),\n lastUpdated: Date.now(),\n }\n\n saveExpertChatSession(session)\n return session\n}\n\n/**\n * \u52A0\u8F7D\u73B0\u6709\u4E13\u5BB6\u804A\u5929\u4F1A\u8BDD\n */\nexport function loadExpertChatSession(\n sessionId: string,\n): ExpertChatSession | null {\n const filePath = getSessionFilePath(sessionId)\n\n if (!existsSync(filePath)) {\n return null\n }\n\n try {\n const content = readFileSync(filePath, 'utf-8')\n return JSON.parse(content) as ExpertChatSession\n } catch (error) {\n console.error(`Failed to load expert chat session ${sessionId}:`, error)\n return null\n }\n}\n\n/**\n * \u4FDD\u5B58\u4E13\u5BB6\u804A\u5929\u4F1A\u8BDD\n */\nexport function saveExpertChatSession(session: ExpertChatSession): void {\n const filePath = getSessionFilePath(session.sessionId)\n\n try {\n session.lastUpdated = Date.now()\n writeFileSync(filePath, JSON.stringify(session, null, 2), 'utf-8')\n } catch (error) {\n console.error(\n `Failed to save expert chat session ${session.sessionId}:`,\n error,\n )\n throw error\n }\n}\n\n/**\n * \u6DFB\u52A0\u6D88\u606F\u5230\u4F1A\u8BDD\n */\nexport function addMessageToSession(\n sessionId: string,\n role: 'user' | 'assistant',\n content: string,\n): ExpertChatSession | null {\n const session = loadExpertChatSession(sessionId)\n if (!session) {\n return null\n }\n\n session.messages.push({ role, content })\n saveExpertChatSession(session)\n\n return session\n}\n\n/**\n * \u83B7\u53D6\u4F1A\u8BDD\u7684\u6D88\u606F\u5386\u53F2 - \u8FD4\u56DEOpenAI\u683C\u5F0F\n */\nexport function getSessionMessages(sessionId: string): ChatMessage[] {\n const session = loadExpertChatSession(sessionId)\n return session?.messages || []\n}\n\n/**\n * \u751F\u6210\u65B0\u7684\u4F1A\u8BDDID\n */\nexport function generateSessionId(): string {\n return randomUUID().slice(0, 5)\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY,cAAc,eAAe,iBAAiB;AACnE,SAAS,YAAY;AACrB,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAuB3B,SAAS,yBAAiC;AACxC,QAAM,YACJ,QAAQ,IAAI,mBAAmB,QAAQ,IAAI,sBAAsB,KAAK,QAAQ,GAAG,OAAO;AAC1F,QAAM,gBAAgB,KAAK,WAAW,cAAc;AAEpD,MAAI,CAAC,WAAW,aAAa,GAAG;AAC9B,cAAU,eAAe,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C;AAEA,SAAO;AACT;AAKA,SAAS,mBAAmB,WAA2B;AACrD,SAAO,KAAK,uBAAuB,GAAG,GAAG,SAAS,OAAO;AAC3D;AAKO,SAAS,wBACd,aACmB;AACnB,QAAM,YAAY,WAAW,EAAE,MAAM,GAAG,CAAC;AACzC,QAAM,UAA6B;AAAA,IACjC;AAAA,IACA;AAAA,IACA,UAAU,CAAC;AAAA,IACX,WAAW,KAAK,IAAI;AAAA,IACpB,aAAa,KAAK,IAAI;AAAA,EACxB;AAEA,wBAAsB,OAAO;AAC7B,SAAO;AACT;AAKO,SAAS,sBACd,WAC0B;AAC1B,QAAM,WAAW,mBAAmB,SAAS;AAE7C,MAAI,CAAC,WAAW,QAAQ,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,UAAU,aAAa,UAAU,OAAO;AAC9C,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B,SAAS,OAAO;AACd,YAAQ,MAAM,sCAAsC,SAAS,KAAK,KAAK;AACvE,WAAO;AAAA,EACT;AACF;AAKO,SAAS,sBAAsB,SAAkC;AACtE,QAAM,WAAW,mBAAmB,QAAQ,SAAS;AAErD,MAAI;AACF,YAAQ,cAAc,KAAK,IAAI;AAC/B,kBAAc,UAAU,KAAK,UAAU,SAAS,MAAM,CAAC,GAAG,OAAO;AAAA,EACnE,SAAS,OAAO;AACd,YAAQ;AAAA,MACN,sCAAsC,QAAQ,SAAS;AAAA,MACvD;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;AAKO,SAAS,oBACd,WACA,MACA,SAC0B;AAC1B,QAAM,UAAU,sBAAsB,SAAS;AAC/C,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,UAAQ,SAAS,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,wBAAsB,OAAO;AAE7B,SAAO;AACT;AAKO,SAAS,mBAAmB,WAAkC;AACnE,QAAM,UAAU,sBAAsB,SAAS;AAC/C,SAAO,SAAS,YAAY,CAAC;AAC/B;AAKO,SAAS,oBAA4B;AAC1C,SAAO,WAAW,EAAE,MAAM,GAAG,CAAC;AAChC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/utils/file.js
DELETED
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
readFileSync,
|
|
3
|
-
writeFileSync,
|
|
4
|
-
openSync,
|
|
5
|
-
readSync,
|
|
6
|
-
closeSync,
|
|
7
|
-
existsSync,
|
|
8
|
-
readdirSync
|
|
9
|
-
} from "fs";
|
|
10
|
-
import { logError } from "./log.js";
|
|
11
|
-
import {
|
|
12
|
-
isAbsolute,
|
|
13
|
-
normalize,
|
|
14
|
-
resolve,
|
|
15
|
-
resolve as resolvePath,
|
|
16
|
-
relative,
|
|
17
|
-
sep,
|
|
18
|
-
basename,
|
|
19
|
-
dirname,
|
|
20
|
-
extname,
|
|
21
|
-
join
|
|
22
|
-
} from "path";
|
|
23
|
-
import { glob as globLib } from "glob";
|
|
24
|
-
import { cwd } from "process";
|
|
25
|
-
import { listAllContentFiles } from "./ripgrep.js";
|
|
26
|
-
import { LRUCache } from "lru-cache";
|
|
27
|
-
import { getCwd } from "./state.js";
|
|
28
|
-
async function glob(filePattern, cwd2, { limit, offset }, abortSignal) {
|
|
29
|
-
const paths = await globLib([filePattern], {
|
|
30
|
-
cwd: cwd2,
|
|
31
|
-
nocase: true,
|
|
32
|
-
nodir: true,
|
|
33
|
-
signal: abortSignal,
|
|
34
|
-
stat: true,
|
|
35
|
-
withFileTypes: true
|
|
36
|
-
});
|
|
37
|
-
const sortedPaths = paths.sort((a, b) => (a.mtimeMs ?? 0) - (b.mtimeMs ?? 0));
|
|
38
|
-
const truncated = sortedPaths.length > offset + limit;
|
|
39
|
-
return {
|
|
40
|
-
files: sortedPaths.slice(offset, offset + limit).map((path) => path.fullpath()),
|
|
41
|
-
truncated
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
function readFileSafe(filepath) {
|
|
45
|
-
try {
|
|
46
|
-
return readFileSync(filepath, "utf-8");
|
|
47
|
-
} catch (error) {
|
|
48
|
-
logError(error);
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function isInDirectory(relativePath, relativeCwd) {
|
|
53
|
-
if (relativePath === ".") {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
if (relativePath.startsWith("~")) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
if (relativePath.includes("\0") || relativeCwd.includes("\0")) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
let normalizedPath = normalize(relativePath);
|
|
63
|
-
let normalizedCwd = normalize(relativeCwd);
|
|
64
|
-
normalizedPath = normalizedPath.endsWith(sep) ? normalizedPath : normalizedPath + sep;
|
|
65
|
-
normalizedCwd = normalizedCwd.endsWith(sep) ? normalizedCwd : normalizedCwd + sep;
|
|
66
|
-
const fullPath = resolvePath(cwd(), normalizedCwd, normalizedPath);
|
|
67
|
-
const fullCwd = resolvePath(cwd(), normalizedCwd);
|
|
68
|
-
const rel = relative(fullCwd, fullPath);
|
|
69
|
-
if (!rel || rel === "") return true;
|
|
70
|
-
if (rel.startsWith("..")) return false;
|
|
71
|
-
if (isAbsolute(rel)) return false;
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
function readTextContent(filePath, offset = 0, maxLines) {
|
|
75
|
-
const enc = detectFileEncoding(filePath);
|
|
76
|
-
const content = readFileSync(filePath, enc);
|
|
77
|
-
const lines = content.split(/\r?\n/);
|
|
78
|
-
const toReturn = maxLines !== void 0 && lines.length - offset > maxLines ? lines.slice(offset, offset + maxLines) : lines.slice(offset);
|
|
79
|
-
return {
|
|
80
|
-
content: toReturn.join("\n"),
|
|
81
|
-
// TODO: This probably won't work for Windows
|
|
82
|
-
lineCount: toReturn.length,
|
|
83
|
-
totalLines: lines.length
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
function writeTextContent(filePath, content, encoding, endings) {
|
|
87
|
-
let toWrite = content;
|
|
88
|
-
if (endings === "CRLF") {
|
|
89
|
-
toWrite = content.split("\n").join("\r\n");
|
|
90
|
-
}
|
|
91
|
-
writeFileSync(filePath, toWrite, { encoding, flush: true });
|
|
92
|
-
}
|
|
93
|
-
const repoEndingCache = new LRUCache({
|
|
94
|
-
fetchMethod: (path) => detectRepoLineEndingsDirect(path),
|
|
95
|
-
ttl: 5 * 60 * 1e3,
|
|
96
|
-
ttlAutopurge: false,
|
|
97
|
-
max: 1e3
|
|
98
|
-
});
|
|
99
|
-
async function detectRepoLineEndings(filePath) {
|
|
100
|
-
return repoEndingCache.fetch(resolve(filePath));
|
|
101
|
-
}
|
|
102
|
-
async function detectRepoLineEndingsDirect(cwd2) {
|
|
103
|
-
const abortController = new AbortController();
|
|
104
|
-
setTimeout(() => {
|
|
105
|
-
abortController.abort();
|
|
106
|
-
}, 1e3);
|
|
107
|
-
const allFiles = await listAllContentFiles(cwd2, abortController.signal, 15);
|
|
108
|
-
let crlfCount = 0;
|
|
109
|
-
for (const file of allFiles) {
|
|
110
|
-
const lineEnding = detectLineEndings(file);
|
|
111
|
-
if (lineEnding === "CRLF") {
|
|
112
|
-
crlfCount++;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return crlfCount > 3 ? "CRLF" : "LF";
|
|
116
|
-
}
|
|
117
|
-
function fetch(cache, key, value) {
|
|
118
|
-
if (cache.has(key)) {
|
|
119
|
-
return cache.get(key);
|
|
120
|
-
}
|
|
121
|
-
const v = value();
|
|
122
|
-
cache.set(key, v);
|
|
123
|
-
return v;
|
|
124
|
-
}
|
|
125
|
-
const fileEncodingCache = new LRUCache({
|
|
126
|
-
fetchMethod: (path) => detectFileEncodingDirect(path),
|
|
127
|
-
ttl: 5 * 60 * 1e3,
|
|
128
|
-
ttlAutopurge: false,
|
|
129
|
-
max: 1e3
|
|
130
|
-
});
|
|
131
|
-
function detectFileEncoding(filePath) {
|
|
132
|
-
const k = resolve(filePath);
|
|
133
|
-
return fetch(fileEncodingCache, k, () => detectFileEncodingDirect(k));
|
|
134
|
-
}
|
|
135
|
-
function detectFileEncodingDirect(filePath) {
|
|
136
|
-
const BUFFER_SIZE = 4096;
|
|
137
|
-
const buffer = Buffer.alloc(BUFFER_SIZE);
|
|
138
|
-
let fd = void 0;
|
|
139
|
-
try {
|
|
140
|
-
fd = openSync(filePath, "r");
|
|
141
|
-
const bytesRead = readSync(fd, buffer, 0, BUFFER_SIZE, 0);
|
|
142
|
-
if (bytesRead >= 2) {
|
|
143
|
-
if (buffer[0] === 255 && buffer[1] === 254) return "utf16le";
|
|
144
|
-
}
|
|
145
|
-
if (bytesRead >= 3 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) {
|
|
146
|
-
return "utf8";
|
|
147
|
-
}
|
|
148
|
-
const isUtf8 = buffer.slice(0, bytesRead).toString("utf8").length > 0;
|
|
149
|
-
return isUtf8 ? "utf8" : "ascii";
|
|
150
|
-
} catch (error) {
|
|
151
|
-
logError(`Error detecting encoding for file ${filePath}: ${error}`);
|
|
152
|
-
return "utf8";
|
|
153
|
-
} finally {
|
|
154
|
-
if (fd) closeSync(fd);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
const lineEndingCache = new LRUCache({
|
|
158
|
-
fetchMethod: (path) => detectLineEndingsDirect(path),
|
|
159
|
-
ttl: 5 * 60 * 1e3,
|
|
160
|
-
ttlAutopurge: false,
|
|
161
|
-
max: 1e3
|
|
162
|
-
});
|
|
163
|
-
function detectLineEndings(filePath) {
|
|
164
|
-
const k = resolve(filePath);
|
|
165
|
-
return fetch(lineEndingCache, k, () => detectLineEndingsDirect(k));
|
|
166
|
-
}
|
|
167
|
-
function detectLineEndingsDirect(filePath, encoding = "utf8") {
|
|
168
|
-
try {
|
|
169
|
-
const buffer = Buffer.alloc(4096);
|
|
170
|
-
const fd = openSync(filePath, "r");
|
|
171
|
-
const bytesRead = readSync(fd, buffer, 0, 4096, 0);
|
|
172
|
-
closeSync(fd);
|
|
173
|
-
const content = buffer.toString(encoding, 0, bytesRead);
|
|
174
|
-
let crlfCount = 0;
|
|
175
|
-
let lfCount = 0;
|
|
176
|
-
for (let i = 0; i < content.length; i++) {
|
|
177
|
-
if (content[i] === "\n") {
|
|
178
|
-
if (i > 0 && content[i - 1] === "\r") {
|
|
179
|
-
crlfCount++;
|
|
180
|
-
} else {
|
|
181
|
-
lfCount++;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return crlfCount > lfCount ? "CRLF" : "LF";
|
|
186
|
-
} catch (error) {
|
|
187
|
-
logError(`Error detecting line endings for file ${filePath}: ${error}`);
|
|
188
|
-
return "LF";
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
function normalizeFilePath(filePath) {
|
|
192
|
-
const absoluteFilePath = isAbsolute(filePath) ? filePath : resolve(getCwd(), filePath);
|
|
193
|
-
if (absoluteFilePath.endsWith(" AM.png")) {
|
|
194
|
-
return absoluteFilePath.replace(
|
|
195
|
-
" AM.png",
|
|
196
|
-
`${String.fromCharCode(8239)}AM.png`
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
if (absoluteFilePath.endsWith(" PM.png")) {
|
|
200
|
-
return absoluteFilePath.replace(
|
|
201
|
-
" PM.png",
|
|
202
|
-
`${String.fromCharCode(8239)}PM.png`
|
|
203
|
-
);
|
|
204
|
-
}
|
|
205
|
-
return absoluteFilePath;
|
|
206
|
-
}
|
|
207
|
-
function getAbsolutePath(path) {
|
|
208
|
-
return path ? isAbsolute(path) ? path : resolve(getCwd(), path) : void 0;
|
|
209
|
-
}
|
|
210
|
-
function getAbsoluteAndRelativePaths(path) {
|
|
211
|
-
const absolutePath = getAbsolutePath(path);
|
|
212
|
-
const relativePath = absolutePath ? relative(getCwd(), absolutePath) : void 0;
|
|
213
|
-
return { absolutePath, relativePath };
|
|
214
|
-
}
|
|
215
|
-
function findSimilarFile(filePath) {
|
|
216
|
-
try {
|
|
217
|
-
const dir = dirname(filePath);
|
|
218
|
-
const fileBaseName = basename(filePath, extname(filePath));
|
|
219
|
-
if (!existsSync(dir)) {
|
|
220
|
-
return void 0;
|
|
221
|
-
}
|
|
222
|
-
const files = readdirSync(dir);
|
|
223
|
-
const similarFiles = files.filter(
|
|
224
|
-
(file) => basename(file, extname(file)) === fileBaseName && join(dir, file) !== filePath
|
|
225
|
-
);
|
|
226
|
-
const firstMatch = similarFiles[0];
|
|
227
|
-
if (firstMatch) {
|
|
228
|
-
return firstMatch;
|
|
229
|
-
}
|
|
230
|
-
return void 0;
|
|
231
|
-
} catch (error) {
|
|
232
|
-
logError(`Error finding similar file for ${filePath}: ${error}`);
|
|
233
|
-
return void 0;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
function addLineNumbers({
|
|
237
|
-
content,
|
|
238
|
-
// 1-indexed
|
|
239
|
-
startLine
|
|
240
|
-
}) {
|
|
241
|
-
if (!content) {
|
|
242
|
-
return "";
|
|
243
|
-
}
|
|
244
|
-
return content.split(/\r?\n/).map((line, index) => {
|
|
245
|
-
const lineNum = index + startLine;
|
|
246
|
-
const numStr = String(lineNum);
|
|
247
|
-
if (numStr.length >= 6) {
|
|
248
|
-
return `${numStr} ${line}`;
|
|
249
|
-
}
|
|
250
|
-
const n = numStr.padStart(6, " ");
|
|
251
|
-
return `${n} ${line}`;
|
|
252
|
-
}).join("\n");
|
|
253
|
-
}
|
|
254
|
-
function isDirEmpty(dirPath) {
|
|
255
|
-
try {
|
|
256
|
-
const entries = readdirSync(dirPath);
|
|
257
|
-
return entries.length === 0;
|
|
258
|
-
} catch (error) {
|
|
259
|
-
logError(`Error checking directory: ${error}`);
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
export {
|
|
264
|
-
addLineNumbers,
|
|
265
|
-
detectFileEncoding,
|
|
266
|
-
detectFileEncodingDirect,
|
|
267
|
-
detectLineEndings,
|
|
268
|
-
detectLineEndingsDirect,
|
|
269
|
-
detectRepoLineEndings,
|
|
270
|
-
detectRepoLineEndingsDirect,
|
|
271
|
-
findSimilarFile,
|
|
272
|
-
getAbsoluteAndRelativePaths,
|
|
273
|
-
getAbsolutePath,
|
|
274
|
-
glob,
|
|
275
|
-
isDirEmpty,
|
|
276
|
-
isInDirectory,
|
|
277
|
-
normalizeFilePath,
|
|
278
|
-
readFileSafe,
|
|
279
|
-
readTextContent,
|
|
280
|
-
writeTextContent
|
|
281
|
-
};
|
|
282
|
-
//# sourceMappingURL=file.js.map
|
package/dist/utils/file.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/file.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n readFileSync,\n writeFileSync,\n openSync,\n readSync,\n closeSync,\n existsSync,\n readdirSync,\n} from 'fs'\nimport { logError } from './log'\nimport {\n isAbsolute,\n normalize,\n resolve,\n resolve as resolvePath,\n relative,\n sep,\n basename,\n dirname,\n extname,\n join,\n} from 'path'\nimport { glob as globLib } from 'glob'\nimport { cwd } from 'process'\nimport { listAllContentFiles } from './ripgrep'\nimport { LRUCache } from 'lru-cache'\nimport { getCwd } from './state'\n\nexport type File = {\n filename: string\n content: string\n}\n\nexport type LineEndingType = 'CRLF' | 'LF'\n\nexport async function glob(\n filePattern: string,\n cwd: string,\n { limit, offset }: { limit: number; offset: number },\n abortSignal: AbortSignal,\n): Promise<{ files: string[]; truncated: boolean }> {\n // TODO: Use worker threads\n const paths = await globLib([filePattern], {\n cwd,\n nocase: true,\n nodir: true,\n signal: abortSignal,\n stat: true,\n withFileTypes: true,\n })\n const sortedPaths = paths.sort((a, b) => (a.mtimeMs ?? 0) - (b.mtimeMs ?? 0))\n const truncated = sortedPaths.length > offset + limit\n return {\n files: sortedPaths\n .slice(offset, offset + limit)\n .map(path => path.fullpath()),\n truncated,\n }\n}\n\nexport function readFileSafe(filepath: string): string | null {\n try {\n return readFileSync(filepath, 'utf-8')\n } catch (error) {\n logError(error)\n return null\n }\n}\n\nexport function isInDirectory(\n relativePath: string,\n relativeCwd: string,\n): boolean {\n if (relativePath === '.') {\n return true\n }\n\n // Reject paths starting with ~ (home directory)\n if (relativePath.startsWith('~')) {\n return false\n }\n\n // Reject paths containing null bytes or other sneaky characters\n if (relativePath.includes('\\0') || relativeCwd.includes('\\0')) {\n return false\n }\n\n // Normalize paths to resolve any '..' or '.' segments\n // and add trailing slashes\n let normalizedPath = normalize(relativePath)\n let normalizedCwd = normalize(relativeCwd)\n\n normalizedPath = normalizedPath.endsWith(sep)\n ? normalizedPath\n : normalizedPath + sep\n normalizedCwd = normalizedCwd.endsWith(sep)\n ? normalizedCwd\n : normalizedCwd + sep\n\n // Join with a base directory to make them absolute-like for comparison\n const fullPath = resolvePath(cwd(), normalizedCwd, normalizedPath)\n const fullCwd = resolvePath(cwd(), normalizedCwd)\n\n // Robust subpath check using path.relative (case-insensitive on Windows)\n const rel = relative(fullCwd, fullPath)\n if (!rel || rel === '') return true\n if (rel.startsWith('..')) return false\n if (isAbsolute(rel)) return false\n return true\n}\n\nexport function readTextContent(\n filePath: string,\n offset = 0,\n maxLines?: number,\n): { content: string; lineCount: number; totalLines: number } {\n const enc = detectFileEncoding(filePath)\n const content = readFileSync(filePath, enc)\n const lines = content.split(/\\r?\\n/)\n\n // Truncate number of lines if needed\n const toReturn =\n maxLines !== undefined && lines.length - offset > maxLines\n ? lines.slice(offset, offset + maxLines)\n : lines.slice(offset)\n\n return {\n content: toReturn.join('\\n'), // TODO: This probably won't work for Windows\n lineCount: toReturn.length,\n totalLines: lines.length,\n }\n}\n\nexport function writeTextContent(\n filePath: string,\n content: string,\n encoding: BufferEncoding,\n endings: LineEndingType,\n): void {\n let toWrite = content\n if (endings === 'CRLF') {\n toWrite = content.split('\\n').join('\\r\\n')\n }\n\n writeFileSync(filePath, toWrite, { encoding, flush: true })\n}\n\nconst repoEndingCache = new LRUCache<string, LineEndingType>({\n fetchMethod: path => detectRepoLineEndingsDirect(path),\n ttl: 5 * 60 * 1000,\n ttlAutopurge: false,\n max: 1000,\n})\n\nexport async function detectRepoLineEndings(\n filePath: string,\n): Promise<LineEndingType | undefined> {\n return repoEndingCache.fetch(resolve(filePath))\n}\n\nexport async function detectRepoLineEndingsDirect(\n cwd: string,\n): Promise<LineEndingType> {\n const abortController = new AbortController()\n setTimeout(() => {\n abortController.abort()\n }, 1_000)\n const allFiles = await listAllContentFiles(cwd, abortController.signal, 15)\n\n let crlfCount = 0\n for (const file of allFiles) {\n const lineEnding = detectLineEndings(file)\n if (lineEnding === 'CRLF') {\n crlfCount++\n }\n }\n\n return crlfCount > 3 ? 'CRLF' : 'LF'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nfunction fetch<K extends {}, V extends {}>(\n cache: LRUCache<K, V>,\n key: K,\n value: () => V,\n): V {\n if (cache.has(key)) {\n return cache.get(key)!\n }\n\n const v = value()\n cache.set(key, v)\n return v\n}\n\nconst fileEncodingCache = new LRUCache<string, BufferEncoding>({\n fetchMethod: path => detectFileEncodingDirect(path),\n ttl: 5 * 60 * 1000,\n ttlAutopurge: false,\n max: 1000,\n})\n\nexport function detectFileEncoding(filePath: string): BufferEncoding {\n const k = resolve(filePath)\n return fetch(fileEncodingCache, k, () => detectFileEncodingDirect(k))\n}\n\nexport function detectFileEncodingDirect(filePath: string): BufferEncoding {\n const BUFFER_SIZE = 4096\n const buffer = Buffer.alloc(BUFFER_SIZE)\n\n let fd: number | undefined = undefined\n try {\n fd = openSync(filePath, 'r')\n const bytesRead = readSync(fd, buffer, 0, BUFFER_SIZE, 0)\n\n if (bytesRead >= 2) {\n if (buffer[0] === 0xff && buffer[1] === 0xfe) return 'utf16le'\n }\n\n if (\n bytesRead >= 3 &&\n buffer[0] === 0xef &&\n buffer[1] === 0xbb &&\n buffer[2] === 0xbf\n ) {\n return 'utf8'\n }\n\n const isUtf8 = buffer.slice(0, bytesRead).toString('utf8').length > 0\n return isUtf8 ? 'utf8' : 'ascii'\n } catch (error) {\n logError(`Error detecting encoding for file ${filePath}: ${error}`)\n return 'utf8'\n } finally {\n if (fd) closeSync(fd)\n }\n}\n\nconst lineEndingCache = new LRUCache<string, LineEndingType>({\n fetchMethod: path => detectLineEndingsDirect(path),\n ttl: 5 * 60 * 1000,\n ttlAutopurge: false,\n max: 1000,\n})\n\nexport function detectLineEndings(filePath: string): LineEndingType {\n const k = resolve(filePath)\n return fetch(lineEndingCache, k, () => detectLineEndingsDirect(k))\n}\n\nexport function detectLineEndingsDirect(\n filePath: string,\n encoding: BufferEncoding = 'utf8',\n): LineEndingType {\n try {\n const buffer = Buffer.alloc(4096)\n const fd = openSync(filePath, 'r')\n const bytesRead = readSync(fd, buffer, 0, 4096, 0)\n closeSync(fd)\n\n const content = buffer.toString(encoding, 0, bytesRead)\n let crlfCount = 0\n let lfCount = 0\n\n for (let i = 0; i < content.length; i++) {\n if (content[i] === '\\n') {\n if (i > 0 && content[i - 1] === '\\r') {\n crlfCount++\n } else {\n lfCount++\n }\n }\n }\n\n return crlfCount > lfCount ? 'CRLF' : 'LF'\n } catch (error) {\n logError(`Error detecting line endings for file ${filePath}: ${error}`)\n return 'LF'\n }\n}\n\nexport function normalizeFilePath(filePath: string): string {\n const absoluteFilePath = isAbsolute(filePath)\n ? filePath\n : resolve(getCwd(), filePath)\n\n // One weird trick for half-width space characters in MacOS screenshot filenames\n if (absoluteFilePath.endsWith(' AM.png')) {\n return absoluteFilePath.replace(\n ' AM.png',\n `${String.fromCharCode(8239)}AM.png`,\n )\n }\n\n // One weird trick for half-width space characters in MacOS screenshot filenames\n if (absoluteFilePath.endsWith(' PM.png')) {\n return absoluteFilePath.replace(\n ' PM.png',\n `${String.fromCharCode(8239)}PM.png`,\n )\n }\n\n return absoluteFilePath\n}\n\nexport function getAbsolutePath(path: string | undefined): string | undefined {\n return path ? (isAbsolute(path) ? path : resolve(getCwd(), path)) : undefined\n}\n\nexport function getAbsoluteAndRelativePaths(path: string | undefined): {\n absolutePath: string | undefined\n relativePath: string | undefined\n} {\n const absolutePath = getAbsolutePath(path)\n const relativePath = absolutePath\n ? relative(getCwd(), absolutePath)\n : undefined\n return { absolutePath, relativePath }\n}\n\n/**\n * Find files with the same name but different extensions in the same directory\n * @param filePath The path to the file that doesn't exist\n * @returns The found file with a different extension, or undefined if none found\n */\n\nexport function findSimilarFile(filePath: string): string | undefined {\n try {\n const dir = dirname(filePath)\n const fileBaseName = basename(filePath, extname(filePath))\n\n // Check if directory exists\n if (!existsSync(dir)) {\n return undefined\n }\n\n // Get all files in the directory\n const files = readdirSync(dir)\n\n // Find files with the same base name but different extension\n const similarFiles = files.filter(\n file =>\n basename(file, extname(file)) === fileBaseName &&\n join(dir, file) !== filePath,\n )\n\n // Return just the filename of the first match if found\n const firstMatch = similarFiles[0]\n if (firstMatch) {\n return firstMatch\n }\n return undefined\n } catch (error) {\n // In case of any errors, return undefined\n logError(`Error finding similar file for ${filePath}: ${error}`)\n return undefined\n }\n}\n\n/**\n * Adds cat -n style line numbers to the content\n */\nexport function addLineNumbers({\n content,\n // 1-indexed\n startLine,\n}: {\n content: string\n startLine: number\n}): string {\n if (!content) {\n return ''\n }\n\n return content\n .split(/\\r?\\n/)\n .map((line, index) => {\n const lineNum = index + startLine\n const numStr = String(lineNum)\n // Handle large numbers differently\n if (numStr.length >= 6) {\n return `${numStr}\\t${line}`\n }\n // Regular numbers get padding to 6 characters\n const n = numStr.padStart(6, ' ')\n return `${n}\\t${line}`\n })\n .join('\\n') // TODO: This probably won't work for Windows\n}\n\n/**\n * Checks if a directory is empty by efficiently reading just the first entry\n * @param dirPath The path to the directory to check\n * @returns true if the directory is empty, false otherwise\n */\nexport function isDirEmpty(dirPath: string): boolean {\n try {\n const entries = readdirSync(dirPath)\n return entries.length === 0\n } catch (error) {\n logError(`Error checking directory: ${error}`)\n return false\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["cwd"]
|
|
7
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { readTextContent } from "./file.js";
|
|
2
|
-
import { fileFreshnessService } from "../services/fileFreshness.js";
|
|
3
|
-
const MAX_FILES_TO_RECOVER = 5;
|
|
4
|
-
const MAX_TOKENS_PER_FILE = 1e4;
|
|
5
|
-
const MAX_TOTAL_FILE_TOKENS = 5e4;
|
|
6
|
-
async function selectAndReadFiles() {
|
|
7
|
-
const importantFiles = fileFreshnessService.getImportantFiles(MAX_FILES_TO_RECOVER);
|
|
8
|
-
const results = [];
|
|
9
|
-
let totalTokens = 0;
|
|
10
|
-
for (const fileInfo of importantFiles) {
|
|
11
|
-
try {
|
|
12
|
-
const { content } = readTextContent(fileInfo.path);
|
|
13
|
-
const estimatedTokens = Math.ceil(content.length * 0.25);
|
|
14
|
-
let finalContent = content;
|
|
15
|
-
let truncated = false;
|
|
16
|
-
if (estimatedTokens > MAX_TOKENS_PER_FILE) {
|
|
17
|
-
const maxChars = Math.floor(MAX_TOKENS_PER_FILE / 0.25);
|
|
18
|
-
finalContent = content.substring(0, maxChars);
|
|
19
|
-
truncated = true;
|
|
20
|
-
}
|
|
21
|
-
const finalTokens = Math.min(estimatedTokens, MAX_TOKENS_PER_FILE);
|
|
22
|
-
if (totalTokens + finalTokens > MAX_TOTAL_FILE_TOKENS) {
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
totalTokens += finalTokens;
|
|
26
|
-
results.push({
|
|
27
|
-
path: fileInfo.path,
|
|
28
|
-
content: finalContent,
|
|
29
|
-
tokens: finalTokens,
|
|
30
|
-
truncated
|
|
31
|
-
});
|
|
32
|
-
} catch (error) {
|
|
33
|
-
console.error(`Failed to read file for recovery: ${fileInfo.path}`, error);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return results;
|
|
37
|
-
}
|
|
38
|
-
export {
|
|
39
|
-
selectAndReadFiles
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=fileRecoveryCore.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/fileRecoveryCore.ts"],
|
|
4
|
-
"sourcesContent": ["import { readTextContent } from './file'\nimport { fileFreshnessService } from '../services/fileFreshness'\n\n/**\n * File recovery configuration for auto-compact feature\n * These limits ensure recovered files don't overwhelm the compressed context\n */\nconst MAX_FILES_TO_RECOVER = 5\nconst MAX_TOKENS_PER_FILE = 10_000\nconst MAX_TOTAL_FILE_TOKENS = 50_000\n\n/**\n * Selects and reads recently accessed files for context recovery\n *\n * During auto-compact, this function preserves development context by:\n * - Selecting files based on recent access patterns\n * - Enforcing token budgets to prevent context bloat\n * - Truncating large files while preserving essential content\n *\n * @returns Array of file data with content, token counts, and truncation flags\n */\nexport async function selectAndReadFiles(): Promise<\n Array<{\n path: string\n content: string\n tokens: number\n truncated: boolean\n }>\n> {\n const importantFiles =\n fileFreshnessService.getImportantFiles(MAX_FILES_TO_RECOVER)\n const results = []\n let totalTokens = 0\n\n for (const fileInfo of importantFiles) {\n try {\n const { content } = readTextContent(fileInfo.path)\n const estimatedTokens = Math.ceil(content.length * 0.25)\n\n // Apply per-file token limit to prevent any single file from dominating context\n let finalContent = content\n let truncated = false\n\n if (estimatedTokens > MAX_TOKENS_PER_FILE) {\n const maxChars = Math.floor(MAX_TOKENS_PER_FILE / 0.25)\n finalContent = content.substring(0, maxChars)\n truncated = true\n }\n\n const finalTokens = Math.min(estimatedTokens, MAX_TOKENS_PER_FILE)\n\n // Enforce total token budget to maintain auto-compact effectiveness\n if (totalTokens + finalTokens > MAX_TOTAL_FILE_TOKENS) {\n break\n }\n\n totalTokens += finalTokens\n results.push({\n path: fileInfo.path,\n content: finalContent,\n tokens: finalTokens,\n truncated,\n })\n } catch (error) {\n // Skip files that cannot be read, don't let one failure stop the process\n console.error(`Failed to read file for recovery: ${fileInfo.path}`, error)\n }\n }\n\n return results\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,4BAA4B;AAMrC,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAY9B,eAAsB,qBAOpB;AACA,QAAM,iBACJ,qBAAqB,kBAAkB,oBAAoB;AAC7D,QAAM,UAAU,CAAC;AACjB,MAAI,cAAc;AAElB,aAAW,YAAY,gBAAgB;AACrC,QAAI;AACF,YAAM,EAAE,QAAQ,IAAI,gBAAgB,SAAS,IAAI;AACjD,YAAM,kBAAkB,KAAK,KAAK,QAAQ,SAAS,IAAI;AAGvD,UAAI,eAAe;AACnB,UAAI,YAAY;AAEhB,UAAI,kBAAkB,qBAAqB;AACzC,cAAM,WAAW,KAAK,MAAM,sBAAsB,IAAI;AACtD,uBAAe,QAAQ,UAAU,GAAG,QAAQ;AAC5C,oBAAY;AAAA,MACd;AAEA,YAAM,cAAc,KAAK,IAAI,iBAAiB,mBAAmB;AAGjE,UAAI,cAAc,cAAc,uBAAuB;AACrD;AAAA,MACF;AAEA,qBAAe;AACf,cAAQ,KAAK;AAAA,QACX,MAAM,SAAS;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAO;AAEd,cAAQ,MAAM,qCAAqC,SAAS,IAAI,IAAI,KAAK;AAAA,IAC3E;AAAA,EACF;AAEA,SAAO;AACT;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/utils/format.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
function wrapText(text, width) {
|
|
2
|
-
const lines = [];
|
|
3
|
-
let currentLine = "";
|
|
4
|
-
for (const char of text) {
|
|
5
|
-
if ([...currentLine].length < width) {
|
|
6
|
-
currentLine += char;
|
|
7
|
-
} else {
|
|
8
|
-
lines.push(currentLine);
|
|
9
|
-
currentLine = char;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
if (currentLine) lines.push(currentLine);
|
|
13
|
-
return lines;
|
|
14
|
-
}
|
|
15
|
-
function formatDuration(ms) {
|
|
16
|
-
if (ms < 6e4) {
|
|
17
|
-
return `${(ms / 1e3).toFixed(1)}s`;
|
|
18
|
-
}
|
|
19
|
-
const hours = Math.floor(ms / 36e5);
|
|
20
|
-
const minutes = Math.floor(ms % 36e5 / 6e4);
|
|
21
|
-
const seconds = (ms % 6e4 / 1e3).toFixed(1);
|
|
22
|
-
if (hours > 0) {
|
|
23
|
-
return `${hours}h ${minutes}m ${seconds}s`;
|
|
24
|
-
}
|
|
25
|
-
if (minutes > 0) {
|
|
26
|
-
return `${minutes}m ${seconds}s`;
|
|
27
|
-
}
|
|
28
|
-
return `${seconds}s`;
|
|
29
|
-
}
|
|
30
|
-
function formatNumber(number) {
|
|
31
|
-
return new Intl.NumberFormat("en", {
|
|
32
|
-
notation: "compact",
|
|
33
|
-
maximumFractionDigits: 1
|
|
34
|
-
}).format(number).toLowerCase();
|
|
35
|
-
}
|
|
36
|
-
export {
|
|
37
|
-
formatDuration,
|
|
38
|
-
formatNumber,
|
|
39
|
-
wrapText
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=format.js.map
|
package/dist/utils/format.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/format.tsx"],
|
|
4
|
-
"sourcesContent": ["export function wrapText(text: string, width: number): string[] {\n const lines: string[] = []\n let currentLine = ''\n\n for (const char of text) {\n // Important: we need the spread to properly count multi-plane UTF-8 characters (eg. \uD805\uDE96)\n if ([...currentLine].length < width) {\n currentLine += char\n } else {\n lines.push(currentLine)\n currentLine = char\n }\n }\n\n if (currentLine) lines.push(currentLine)\n return lines\n}\n\nexport function formatDuration(ms: number): string {\n if (ms < 60000) {\n return `${(ms / 1000).toFixed(1)}s`\n }\n\n const hours = Math.floor(ms / 3600000)\n const minutes = Math.floor((ms % 3600000) / 60000)\n const seconds = ((ms % 60000) / 1000).toFixed(1)\n\n if (hours > 0) {\n return `${hours}h ${minutes}m ${seconds}s`\n }\n if (minutes > 0) {\n return `${minutes}m ${seconds}s`\n }\n return `${seconds}s`\n}\n\nexport function formatNumber(number: number): string {\n return new Intl.NumberFormat('en', {\n notation: 'compact',\n maximumFractionDigits: 1,\n })\n .format(number) // eg. \"1321\" => \"1.3K\"\n .toLowerCase() // eg. \"1.3K\" => \"1.3k\"\n}\n"],
|
|
5
|
-
"mappings": "AAAO,SAAS,SAAS,MAAc,OAAyB;AAC9D,QAAM,QAAkB,CAAC;AACzB,MAAI,cAAc;AAElB,aAAW,QAAQ,MAAM;AAEvB,QAAI,CAAC,GAAG,WAAW,EAAE,SAAS,OAAO;AACnC,qBAAe;AAAA,IACjB,OAAO;AACL,YAAM,KAAK,WAAW;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,YAAa,OAAM,KAAK,WAAW;AACvC,SAAO;AACT;AAEO,SAAS,eAAe,IAAoB;AACjD,MAAI,KAAK,KAAO;AACd,WAAO,IAAI,KAAK,KAAM,QAAQ,CAAC,CAAC;AAAA,EAClC;AAEA,QAAM,QAAQ,KAAK,MAAM,KAAK,IAAO;AACrC,QAAM,UAAU,KAAK,MAAO,KAAK,OAAW,GAAK;AACjD,QAAM,WAAY,KAAK,MAAS,KAAM,QAAQ,CAAC;AAE/C,MAAI,QAAQ,GAAG;AACb,WAAO,GAAG,KAAK,KAAK,OAAO,KAAK,OAAO;AAAA,EACzC;AACA,MAAI,UAAU,GAAG;AACf,WAAO,GAAG,OAAO,KAAK,OAAO;AAAA,EAC/B;AACA,SAAO,GAAG,OAAO;AACnB;AAEO,SAAS,aAAa,QAAwB;AACnD,SAAO,IAAI,KAAK,aAAa,MAAM;AAAA,IACjC,UAAU;AAAA,IACV,uBAAuB;AAAA,EACzB,CAAC,EACE,OAAO,MAAM,EACb,YAAY;AACjB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|