@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,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/autoCompactCore.ts"],
|
|
4
|
-
"sourcesContent": ["import { Message } from '../query'\nimport { countTokens } from './tokens'\nimport { getMessagesGetter, getMessagesSetter } from '../messages'\nimport { getContext } from '../context'\nimport { getCodeStyle } from '../utils/style'\nimport { clearTerminal } from '../utils/terminal'\nimport { resetFileFreshnessSession } from '../services/fileFreshness'\nimport { createUserMessage, normalizeMessagesForAPI } from '../utils/messages'\nimport { queryLLM } from '../services/claude'\nimport { selectAndReadFiles } from './fileRecoveryCore'\nimport { addLineNumbers } from './file'\nimport { getModelManager } from './model'\n\n/**\n * Threshold ratio for triggering automatic context compression\n * When context usage exceeds 92% of the model's limit, auto-compact activates\n */\nconst AUTO_COMPACT_THRESHOLD_RATIO = 0.92\n\n/**\n * Retrieves the context length for the main model that should execute compression\n * Uses ModelManager to get the current model's context length\n */\nasync function getCompressionModelContextLimit(): Promise<number> {\n try {\n // \uD83D\uDD27 Fix: Use ModelManager instead of legacy config\n const modelManager = getModelManager()\n const modelProfile = modelManager.getModel('main')\n\n if (modelProfile?.contextLength) {\n return modelProfile.contextLength\n }\n\n // Fallback to a reasonable default\n return 200_000\n } catch (error) {\n return 200_000\n }\n}\n\nconst COMPRESSION_PROMPT = `Please provide a comprehensive summary of our conversation structured as follows:\n\n## Technical Context\nDevelopment environment, tools, frameworks, and configurations in use. Programming languages, libraries, and technical constraints. File structure, directory organization, and project architecture.\n\n## Project Overview \nMain project goals, features, and scope. Key components, modules, and their relationships. Data models, APIs, and integration patterns.\n\n## Code Changes\nFiles created, modified, or analyzed during our conversation. Specific code implementations, functions, and algorithms added. Configuration changes and structural modifications.\n\n## Debugging & Issues\nProblems encountered and their root causes. Solutions implemented and their effectiveness. Error messages, logs, and diagnostic information.\n\n## Current Status\nWhat we just completed successfully. Current state of the codebase and any ongoing work. Test results, validation steps, and verification performed.\n\n## Pending Tasks\nImmediate next steps and priorities. Planned features, improvements, and refactoring. Known issues, technical debt, and areas needing attention.\n\n## User Preferences\nCoding style, formatting, and organizational preferences. Communication patterns and feedback style. Tool choices and workflow preferences.\n\n## Key Decisions\nImportant technical decisions made and their rationale. Alternative approaches considered and why they were rejected. Trade-offs accepted and their implications.\n\nFocus on information essential for continuing the conversation effectively, including specific details about code, files, errors, and plans.`\n\n/**\n * Calculates context usage thresholds based on the main model's capabilities\n * Uses the main model context length since compression tasks require a capable model\n */\nasync function calculateThresholds(tokenCount: number) {\n const contextLimit = await getCompressionModelContextLimit()\n const autoCompactThreshold = contextLimit * AUTO_COMPACT_THRESHOLD_RATIO\n\n return {\n isAboveAutoCompactThreshold: tokenCount >= autoCompactThreshold,\n percentUsed: Math.round((tokenCount / contextLimit) * 100),\n tokensRemaining: Math.max(0, autoCompactThreshold - tokenCount),\n contextLimit,\n }\n}\n\n/**\n * Determines if auto-compact should trigger based on token usage\n * Uses the main model context limit since compression requires a capable model\n */\nasync function shouldAutoCompact(messages: Message[]): Promise<boolean> {\n if (messages.length < 3) return false\n\n const tokenCount = countTokens(messages)\n const { isAboveAutoCompactThreshold } = await calculateThresholds(tokenCount)\n\n return isAboveAutoCompactThreshold\n}\n\n/**\n * Main entry point for automatic context compression\n *\n * This function is called before each query to check if the conversation\n * has grown too large and needs compression. When triggered, it:\n * - Generates a structured summary of the conversation using the main model\n * - Recovers recently accessed files to maintain development context\n * - Resets conversation state while preserving essential information\n *\n * Uses the main model for compression tasks to ensure high-quality summaries\n *\n * @param messages Current conversation messages\n * @param toolUseContext Execution context with model and tool configuration\n * @returns Updated messages (compressed if needed) and compression status\n */\nexport async function checkAutoCompact(\n messages: Message[],\n toolUseContext: any,\n): Promise<{ messages: Message[]; wasCompacted: boolean }> {\n if (!(await shouldAutoCompact(messages))) {\n return { messages, wasCompacted: false }\n }\n\n try {\n const compactedMessages = await executeAutoCompact(messages, toolUseContext)\n\n return {\n messages: compactedMessages,\n wasCompacted: true,\n }\n } catch (error) {\n // Graceful degradation: if auto-compact fails, continue with original messages\n // This ensures system remains functional even if compression encounters issues\n console.error(\n 'Auto-compact failed, continuing with original messages:',\n error,\n )\n return { messages, wasCompacted: false }\n }\n}\n\n/**\n * Executes the conversation compression process using the main model\n *\n * This function generates a comprehensive summary using the main model\n * which is better suited for complex summarization tasks. It also\n * automatically recovers important files to maintain development context.\n */\nasync function executeAutoCompact(\n messages: Message[],\n toolUseContext: any,\n): Promise<Message[]> {\n const summaryRequest = createUserMessage(COMPRESSION_PROMPT)\n\n const summaryResponse = await queryLLM(\n normalizeMessagesForAPI([...messages, summaryRequest]),\n [\n 'You are a helpful AI assistant tasked with creating comprehensive conversation summaries that preserve all essential context for continuing development work.',\n ],\n 0,\n toolUseContext.options.tools,\n toolUseContext.abortController.signal,\n {\n safeMode: false,\n model: 'main', // \u4F7F\u7528\u6A21\u578B\u6307\u9488\uFF0C\u8BA9queryLLM\u7EDF\u4E00\u89E3\u6790\n prependCLISysprompt: true,\n },\n )\n\n const content = summaryResponse.message.content\n const summary =\n typeof content === 'string'\n ? content\n : content.length > 0 && content[0]?.type === 'text'\n ? content[0].text\n : null\n\n if (!summary) {\n throw new Error(\n 'Failed to generate conversation summary - response did not contain valid text content',\n )\n }\n\n summaryResponse.message.usage = {\n input_tokens: 0,\n output_tokens: summaryResponse.message.usage.output_tokens,\n cache_creation_input_tokens: 0,\n cache_read_input_tokens: 0,\n }\n\n // Automatic file recovery: preserve recently accessed development files\n // This maintains coding context even after conversation compression\n const recoveredFiles = await selectAndReadFiles()\n\n const compactedMessages = [\n createUserMessage(\n 'Context automatically compressed due to token limit. Essential information preserved.',\n ),\n summaryResponse,\n ]\n\n // Append recovered files to maintain development workflow continuity\n // Files are prioritized by recency and importance, with strict token limits\n if (recoveredFiles.length > 0) {\n for (const file of recoveredFiles) {\n const contentWithLines = addLineNumbers({\n content: file.content,\n startLine: 1,\n })\n const recoveryMessage = createUserMessage(\n `**Recovered File: ${file.path}**\\n\\n\\`\\`\\`\\n${contentWithLines}\\n\\`\\`\\`\\n\\n` +\n `*Automatically recovered (${file.tokens} tokens)${file.truncated ? ' [truncated]' : ''}*`,\n )\n compactedMessages.push(recoveryMessage)\n }\n }\n\n // State cleanup to ensure fresh context after compression\n // Mirrors the cleanup sequence from manual /compact command\n getMessagesSetter()([])\n getContext.cache.clear?.()\n getCodeStyle.cache.clear?.()\n resetFileFreshnessSession()\n\n return compactedMessages\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
import { homedir } from "os";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import {
|
|
4
|
-
existsSync,
|
|
5
|
-
mkdirSync,
|
|
6
|
-
appendFileSync,
|
|
7
|
-
readFileSync,
|
|
8
|
-
constants,
|
|
9
|
-
writeFileSync,
|
|
10
|
-
unlinkSync,
|
|
11
|
-
statSync
|
|
12
|
-
} from "fs";
|
|
13
|
-
import { platform } from "process";
|
|
14
|
-
import { execFileNoThrow } from "./execFileNoThrow.js";
|
|
15
|
-
import { spawn } from "child_process";
|
|
16
|
-
import { logError } from "./log.js";
|
|
17
|
-
import { accessSync } from "fs";
|
|
18
|
-
import { CLAUDE_BASE_DIR } from "./env.js";
|
|
19
|
-
import { logEvent, getDynamicConfig } from "../services/statsig.js";
|
|
20
|
-
import { lt, gt } from "semver";
|
|
21
|
-
import { MACRO } from "../constants/macros.js";
|
|
22
|
-
import { PRODUCT_NAME } from "../constants/product.js";
|
|
23
|
-
import { getGlobalConfig, saveGlobalConfig, isAutoUpdaterDisabled } from "./config.js";
|
|
24
|
-
import { env } from "./env.js";
|
|
25
|
-
async function assertMinVersion() {
|
|
26
|
-
try {
|
|
27
|
-
const versionConfig = await getDynamicConfig(
|
|
28
|
-
"tengu_version_config",
|
|
29
|
-
{ minVersion: "0.0.0" }
|
|
30
|
-
);
|
|
31
|
-
if (versionConfig.minVersion && lt(MACRO.VERSION, versionConfig.minVersion)) {
|
|
32
|
-
const suggestions = await getUpdateCommandSuggestions();
|
|
33
|
-
const cmdLines = suggestions.map((c) => ` ${c}`).join("\n");
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
} catch (error) {
|
|
37
|
-
logError(`Error checking minimum version: ${error}`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const LOCK_FILE_PATH = join(CLAUDE_BASE_DIR, ".update.lock");
|
|
41
|
-
const LOCK_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
42
|
-
function acquireLock() {
|
|
43
|
-
try {
|
|
44
|
-
if (!existsSync(CLAUDE_BASE_DIR)) {
|
|
45
|
-
mkdirSync(CLAUDE_BASE_DIR, { recursive: true });
|
|
46
|
-
}
|
|
47
|
-
if (existsSync(LOCK_FILE_PATH)) {
|
|
48
|
-
const stats = statSync(LOCK_FILE_PATH);
|
|
49
|
-
const age = Date.now() - stats.mtimeMs;
|
|
50
|
-
if (age < LOCK_TIMEOUT_MS) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
unlinkSync(LOCK_FILE_PATH);
|
|
55
|
-
} catch (err) {
|
|
56
|
-
logError(`Failed to remove stale lock file: ${err}`);
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
writeFileSync(LOCK_FILE_PATH, `${process.pid}`, "utf8");
|
|
61
|
-
return true;
|
|
62
|
-
} catch (err) {
|
|
63
|
-
logError(`Failed to acquire lock: ${err}`);
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
function releaseLock() {
|
|
68
|
-
try {
|
|
69
|
-
if (existsSync(LOCK_FILE_PATH)) {
|
|
70
|
-
const lockData = readFileSync(LOCK_FILE_PATH, "utf8");
|
|
71
|
-
if (lockData === `${process.pid}`) {
|
|
72
|
-
unlinkSync(LOCK_FILE_PATH);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
} catch (err) {
|
|
76
|
-
logError(`Failed to release lock: ${err}`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async function checkNpmPermissions() {
|
|
80
|
-
try {
|
|
81
|
-
const prefixResult = await execFileNoThrow("npm", [
|
|
82
|
-
"-g",
|
|
83
|
-
"config",
|
|
84
|
-
"get",
|
|
85
|
-
"prefix"
|
|
86
|
-
]);
|
|
87
|
-
if (prefixResult.code !== 0) {
|
|
88
|
-
logError("Failed to check npm permissions");
|
|
89
|
-
return { hasPermissions: false, npmPrefix: null };
|
|
90
|
-
}
|
|
91
|
-
const prefix = prefixResult.stdout.trim();
|
|
92
|
-
let testWriteResult = false;
|
|
93
|
-
try {
|
|
94
|
-
accessSync(prefix, constants.W_OK);
|
|
95
|
-
testWriteResult = true;
|
|
96
|
-
} catch {
|
|
97
|
-
testWriteResult = false;
|
|
98
|
-
}
|
|
99
|
-
if (testWriteResult) {
|
|
100
|
-
return { hasPermissions: true, npmPrefix: prefix };
|
|
101
|
-
}
|
|
102
|
-
logError("Insufficient permissions for global npm install.");
|
|
103
|
-
return { hasPermissions: false, npmPrefix: prefix };
|
|
104
|
-
} catch (error) {
|
|
105
|
-
logError(`Failed to verify npm global install permissions: ${error}`);
|
|
106
|
-
return { hasPermissions: false, npmPrefix: null };
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
async function setupNewPrefix(prefix) {
|
|
110
|
-
if (!acquireLock()) {
|
|
111
|
-
logEvent("tengu_auto_updater_prefix_lock_contention", {
|
|
112
|
-
pid: String(process.pid),
|
|
113
|
-
currentVersion: MACRO.VERSION,
|
|
114
|
-
prefix
|
|
115
|
-
});
|
|
116
|
-
throw new Error("Another process is currently setting up npm prefix");
|
|
117
|
-
}
|
|
118
|
-
try {
|
|
119
|
-
if (!existsSync(prefix)) {
|
|
120
|
-
mkdirSync(prefix, { recursive: true });
|
|
121
|
-
}
|
|
122
|
-
const setPrefix = await execFileNoThrow("npm", [
|
|
123
|
-
"-g",
|
|
124
|
-
"config",
|
|
125
|
-
"set",
|
|
126
|
-
"prefix",
|
|
127
|
-
prefix
|
|
128
|
-
]);
|
|
129
|
-
if (setPrefix.code !== 0) {
|
|
130
|
-
throw new Error(`Failed to set npm prefix: ${setPrefix.stderr}`);
|
|
131
|
-
}
|
|
132
|
-
const pathUpdate = `
|
|
133
|
-
# npm global path
|
|
134
|
-
export PATH="${prefix}/bin:$PATH"
|
|
135
|
-
`;
|
|
136
|
-
if (platform === "win32") {
|
|
137
|
-
const setxResult = await execFileNoThrow("setx", [
|
|
138
|
-
"PATH",
|
|
139
|
-
`${process.env.PATH};${prefix}`
|
|
140
|
-
]);
|
|
141
|
-
if (setxResult.code !== 0) {
|
|
142
|
-
throw new Error(
|
|
143
|
-
`Failed to update PATH on Windows: ${setxResult.stderr}`
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
} else {
|
|
147
|
-
const shellConfigs = [
|
|
148
|
-
// Bash
|
|
149
|
-
join(homedir(), ".bashrc"),
|
|
150
|
-
join(homedir(), ".bash_profile"),
|
|
151
|
-
// Zsh
|
|
152
|
-
join(homedir(), ".zshrc"),
|
|
153
|
-
// Fish
|
|
154
|
-
join(homedir(), ".config", "fish", "config.fish")
|
|
155
|
-
];
|
|
156
|
-
for (const config of shellConfigs) {
|
|
157
|
-
if (existsSync(config)) {
|
|
158
|
-
try {
|
|
159
|
-
const content = readFileSync(config, "utf8");
|
|
160
|
-
if (!content.includes(prefix)) {
|
|
161
|
-
if (config.includes("fish")) {
|
|
162
|
-
const fishPath = `
|
|
163
|
-
# npm global path
|
|
164
|
-
set -gx PATH ${prefix}/bin $PATH
|
|
165
|
-
`;
|
|
166
|
-
appendFileSync(config, fishPath);
|
|
167
|
-
} else {
|
|
168
|
-
appendFileSync(config, pathUpdate);
|
|
169
|
-
}
|
|
170
|
-
logEvent("npm_prefix_path_updated", {
|
|
171
|
-
configPath: config
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
} catch (err) {
|
|
175
|
-
logEvent("npm_prefix_path_update_failed", {
|
|
176
|
-
configPath: config,
|
|
177
|
-
error: err instanceof Error ? err.message.slice(0, 200) : String(err).slice(0, 200)
|
|
178
|
-
});
|
|
179
|
-
logError(`Failed to update shell config ${config}: ${err}`);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
} finally {
|
|
185
|
-
releaseLock();
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
function getDefaultNpmPrefix() {
|
|
189
|
-
return join(homedir(), ".npm-global");
|
|
190
|
-
}
|
|
191
|
-
function getPermissionsCommand(npmPrefix) {
|
|
192
|
-
const windowsCommand = `icacls "${npmPrefix}" /grant "%USERNAME%:(OI)(CI)F"`;
|
|
193
|
-
const prefixPath = npmPrefix || "$(npm -g config get prefix)";
|
|
194
|
-
const unixCommand = `sudo chown -R $USER:$(id -gn) ${prefixPath} && sudo chmod -R u+w ${prefixPath}`;
|
|
195
|
-
return platform === "win32" ? windowsCommand : unixCommand;
|
|
196
|
-
}
|
|
197
|
-
async function getLatestVersion() {
|
|
198
|
-
try {
|
|
199
|
-
const abortController = new AbortController();
|
|
200
|
-
setTimeout(() => abortController.abort(), 5e3);
|
|
201
|
-
const result = await execFileNoThrow(
|
|
202
|
-
"npm",
|
|
203
|
-
["view", MACRO.PACKAGE_URL, "version"],
|
|
204
|
-
abortController.signal
|
|
205
|
-
);
|
|
206
|
-
if (result.code === 0) {
|
|
207
|
-
const v = result.stdout.trim();
|
|
208
|
-
if (v) return v;
|
|
209
|
-
}
|
|
210
|
-
} catch {
|
|
211
|
-
}
|
|
212
|
-
try {
|
|
213
|
-
const controller = new AbortController();
|
|
214
|
-
const timer = setTimeout(() => controller.abort(), 5e3);
|
|
215
|
-
const res = await fetch(
|
|
216
|
-
`https://registry.npmjs.org/${encodeURIComponent(MACRO.PACKAGE_URL)}`,
|
|
217
|
-
{
|
|
218
|
-
method: "GET",
|
|
219
|
-
headers: {
|
|
220
|
-
Accept: "application/vnd.npm.install-v1+json",
|
|
221
|
-
"User-Agent": `${PRODUCT_NAME}/${MACRO.VERSION}`
|
|
222
|
-
},
|
|
223
|
-
signal: controller.signal
|
|
224
|
-
}
|
|
225
|
-
);
|
|
226
|
-
clearTimeout(timer);
|
|
227
|
-
if (!res.ok) return null;
|
|
228
|
-
const json = await res.json().catch(() => null);
|
|
229
|
-
const latest = json && json["dist-tags"] && json["dist-tags"].latest;
|
|
230
|
-
return typeof latest === "string" ? latest : null;
|
|
231
|
-
} catch {
|
|
232
|
-
return null;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
async function installGlobalPackage() {
|
|
236
|
-
if (!acquireLock()) {
|
|
237
|
-
logError("Another process is currently installing an update");
|
|
238
|
-
logEvent("tengu_auto_updater_lock_contention", {
|
|
239
|
-
pid: String(process.pid),
|
|
240
|
-
currentVersion: MACRO.VERSION
|
|
241
|
-
});
|
|
242
|
-
return "in_progress";
|
|
243
|
-
}
|
|
244
|
-
try {
|
|
245
|
-
const manager = await detectPackageManager();
|
|
246
|
-
if (manager === "npm") {
|
|
247
|
-
const { hasPermissions: hasPermissions2 } = await checkNpmPermissions();
|
|
248
|
-
if (!hasPermissions2) {
|
|
249
|
-
return "no_permissions";
|
|
250
|
-
}
|
|
251
|
-
const code2 = await runStreaming("npm", ["install", "-g", MACRO.PACKAGE_URL]);
|
|
252
|
-
if (code2 !== 0) {
|
|
253
|
-
logError(`Failed to install new version via npm (exit ${code2})`);
|
|
254
|
-
return "install_failed";
|
|
255
|
-
}
|
|
256
|
-
return "success";
|
|
257
|
-
}
|
|
258
|
-
if (manager === "bun") {
|
|
259
|
-
const code2 = await runStreaming("bun", ["add", "-g", `${MACRO.PACKAGE_URL}@latest`]);
|
|
260
|
-
if (code2 !== 0) {
|
|
261
|
-
logError(`Failed to install new version via bun (exit ${code2})`);
|
|
262
|
-
return "install_failed";
|
|
263
|
-
}
|
|
264
|
-
return "success";
|
|
265
|
-
}
|
|
266
|
-
const { hasPermissions } = await checkNpmPermissions();
|
|
267
|
-
if (!hasPermissions) return "no_permissions";
|
|
268
|
-
const code = await runStreaming("npm", ["install", "-g", MACRO.PACKAGE_URL]);
|
|
269
|
-
if (code !== 0) return "install_failed";
|
|
270
|
-
return "success";
|
|
271
|
-
} finally {
|
|
272
|
-
releaseLock();
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
async function detectPackageManager() {
|
|
276
|
-
try {
|
|
277
|
-
const npmRoot = await execFileNoThrow("npm", ["-g", "root"]);
|
|
278
|
-
if (npmRoot.code === 0 && npmRoot.stdout.trim()) {
|
|
279
|
-
return "npm";
|
|
280
|
-
}
|
|
281
|
-
} catch {
|
|
282
|
-
}
|
|
283
|
-
try {
|
|
284
|
-
const bunVer = await execFileNoThrow("bun", ["--version"]);
|
|
285
|
-
if (bunVer.code === 0) {
|
|
286
|
-
return "bun";
|
|
287
|
-
}
|
|
288
|
-
} catch {
|
|
289
|
-
}
|
|
290
|
-
return "npm";
|
|
291
|
-
}
|
|
292
|
-
function runStreaming(cmd, args) {
|
|
293
|
-
return new Promise((resolve) => {
|
|
294
|
-
try {
|
|
295
|
-
console.log(`> ${cmd} ${args.join(" ")}`);
|
|
296
|
-
} catch {
|
|
297
|
-
}
|
|
298
|
-
const child = spawn(cmd, args, {
|
|
299
|
-
stdio: "inherit",
|
|
300
|
-
env: process.env
|
|
301
|
-
});
|
|
302
|
-
child.on("close", (code) => resolve(code ?? 0));
|
|
303
|
-
child.on("error", () => resolve(1));
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
async function getUpdateCommandSuggestions() {
|
|
307
|
-
return [
|
|
308
|
-
`bun add -g ${MACRO.PACKAGE_URL}@latest`,
|
|
309
|
-
`npm install -g ${MACRO.PACKAGE_URL}@latest`
|
|
310
|
-
];
|
|
311
|
-
}
|
|
312
|
-
async function checkAndNotifyUpdate() {
|
|
313
|
-
try {
|
|
314
|
-
if (process.env.NODE_ENV === "test") return;
|
|
315
|
-
if (await isAutoUpdaterDisabled()) return;
|
|
316
|
-
if (await env.getIsDocker()) return;
|
|
317
|
-
if (!await env.hasInternetAccess()) return;
|
|
318
|
-
const config = getGlobalConfig();
|
|
319
|
-
const now = Date.now();
|
|
320
|
-
const DAY_MS = 24 * 60 * 60 * 1e3;
|
|
321
|
-
const lastCheck = Number(config.lastUpdateCheckAt || 0);
|
|
322
|
-
if (lastCheck && now - lastCheck < DAY_MS) return;
|
|
323
|
-
const latest = await getLatestVersion();
|
|
324
|
-
if (!latest) {
|
|
325
|
-
saveGlobalConfig({ ...config, lastUpdateCheckAt: now });
|
|
326
|
-
return;
|
|
327
|
-
}
|
|
328
|
-
if (gt(latest, MACRO.VERSION)) {
|
|
329
|
-
saveGlobalConfig({
|
|
330
|
-
...config,
|
|
331
|
-
lastUpdateCheckAt: now,
|
|
332
|
-
lastSuggestedVersion: latest
|
|
333
|
-
});
|
|
334
|
-
const suggestions = await getUpdateCommandSuggestions();
|
|
335
|
-
console.log(`New version available: ${latest} (current: ${MACRO.VERSION})`);
|
|
336
|
-
console.log("Run the following command to update:");
|
|
337
|
-
for (const command of suggestions) {
|
|
338
|
-
console.log(` ${command}`);
|
|
339
|
-
}
|
|
340
|
-
} else {
|
|
341
|
-
saveGlobalConfig({ ...config, lastUpdateCheckAt: now });
|
|
342
|
-
}
|
|
343
|
-
} catch (error) {
|
|
344
|
-
logError(`update-notify: ${error}`);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
export {
|
|
348
|
-
LOCK_FILE_PATH,
|
|
349
|
-
assertMinVersion,
|
|
350
|
-
checkAndNotifyUpdate,
|
|
351
|
-
checkNpmPermissions,
|
|
352
|
-
detectPackageManager,
|
|
353
|
-
getDefaultNpmPrefix,
|
|
354
|
-
getLatestVersion,
|
|
355
|
-
getPermissionsCommand,
|
|
356
|
-
getUpdateCommandSuggestions,
|
|
357
|
-
installGlobalPackage,
|
|
358
|
-
setupNewPrefix
|
|
359
|
-
};
|
|
360
|
-
//# sourceMappingURL=autoUpdater.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/autoUpdater.ts"],
|
|
4
|
-
"sourcesContent": ["import { homedir } from 'os'\nimport { join } from 'path'\nimport {\n existsSync,\n mkdirSync,\n appendFileSync,\n readFileSync,\n constants,\n writeFileSync,\n unlinkSync,\n statSync,\n} from 'fs'\nimport { platform } from 'process'\nimport { execFileNoThrow } from './execFileNoThrow'\nimport { spawn } from 'child_process'\nimport { logError } from './log'\nimport { accessSync } from 'fs'\nimport { CLAUDE_BASE_DIR } from './env'\nimport { logEvent, getDynamicConfig } from '../services/statsig'\nimport { lt, gt } from 'semver'\nimport { MACRO } from '../constants/macros'\nimport { PRODUCT_COMMAND, PRODUCT_NAME } from '../constants/product'\nimport { getGlobalConfig, saveGlobalConfig, isAutoUpdaterDisabled } from './config'\nimport { env } from './env'\nexport type InstallStatus =\n | 'success'\n | 'no_permissions'\n | 'install_failed'\n | 'in_progress'\n\nexport type AutoUpdaterResult = {\n version: string | null\n status: InstallStatus\n}\n\nexport type VersionConfig = {\n minVersion: string\n}\n\n/**\n * Checks if the current version meets the minimum required version from Statsig config\n * Terminates the process with an error message if the version is too old\n */\nexport async function assertMinVersion(): Promise<void> {\n try {\n const versionConfig = await getDynamicConfig<VersionConfig>(\n 'tengu_version_config',\n { minVersion: '0.0.0' },\n )\n\n if (\n versionConfig.minVersion &&\n lt(MACRO.VERSION, versionConfig.minVersion)\n ) {\n const suggestions = await getUpdateCommandSuggestions()\n const cmdLines = suggestions.map(c => ` ${c}`).join('\\n')\n process.exit(1)\n }\n } catch (error) {\n logError(`Error checking minimum version: ${error}`)\n }\n}\n\n// Lock file for auto-updater to prevent concurrent updates\nexport const LOCK_FILE_PATH = join(CLAUDE_BASE_DIR, '.update.lock')\nconst LOCK_TIMEOUT_MS = 5 * 60 * 1000 // 5 minute timeout for locks\n\n/**\n * Attempts to acquire a lock for auto-updater\n * @returns {boolean} true if lock was acquired, false if another process holds the lock\n */\nfunction acquireLock(): boolean {\n try {\n // Ensure the base directory exists\n if (!existsSync(CLAUDE_BASE_DIR)) {\n mkdirSync(CLAUDE_BASE_DIR, { recursive: true })\n }\n\n // Check if lock file exists and is not stale\n if (existsSync(LOCK_FILE_PATH)) {\n const stats = statSync(LOCK_FILE_PATH)\n const age = Date.now() - stats.mtimeMs\n\n // If lock file is older than timeout, consider it stale\n if (age < LOCK_TIMEOUT_MS) {\n return false\n }\n\n // Lock is stale, we can take over\n try {\n unlinkSync(LOCK_FILE_PATH)\n } catch (err) {\n logError(`Failed to remove stale lock file: ${err}`)\n return false\n }\n }\n\n // Create lock file with current pid\n writeFileSync(LOCK_FILE_PATH, `${process.pid}`, 'utf8')\n return true\n } catch (err) {\n logError(`Failed to acquire lock: ${err}`)\n return false\n }\n}\n\n/**\n * Releases the update lock if it's held by this process\n */\nfunction releaseLock(): void {\n try {\n if (existsSync(LOCK_FILE_PATH)) {\n const lockData = readFileSync(LOCK_FILE_PATH, 'utf8')\n if (lockData === `${process.pid}`) {\n unlinkSync(LOCK_FILE_PATH)\n }\n }\n } catch (err) {\n logError(`Failed to release lock: ${err}`)\n }\n}\n\nexport async function checkNpmPermissions(): Promise<{\n hasPermissions: boolean\n npmPrefix: string | null\n}> {\n try {\n const prefixResult = await execFileNoThrow('npm', [\n '-g',\n 'config',\n 'get',\n 'prefix',\n ])\n if (prefixResult.code !== 0) {\n logError('Failed to check npm permissions')\n return { hasPermissions: false, npmPrefix: null }\n }\n\n const prefix = prefixResult.stdout.trim()\n\n let testWriteResult = false\n try {\n accessSync(prefix, constants.W_OK)\n testWriteResult = true\n } catch {\n testWriteResult = false\n }\n\n if (testWriteResult) {\n return { hasPermissions: true, npmPrefix: prefix }\n }\n\n logError('Insufficient permissions for global npm install.')\n return { hasPermissions: false, npmPrefix: prefix }\n } catch (error) {\n logError(`Failed to verify npm global install permissions: ${error}`)\n return { hasPermissions: false, npmPrefix: null }\n }\n}\n\nexport async function setupNewPrefix(prefix: string): Promise<void> {\n if (!acquireLock()) {\n // Log the lock contention to statsig\n logEvent('tengu_auto_updater_prefix_lock_contention', {\n pid: String(process.pid),\n currentVersion: MACRO.VERSION,\n prefix,\n })\n throw new Error('Another process is currently setting up npm prefix')\n }\n\n try {\n // Create directory if it doesn't exist\n if (!existsSync(prefix)) {\n mkdirSync(prefix, { recursive: true })\n }\n\n // Set npm prefix\n const setPrefix = await execFileNoThrow('npm', [\n '-g',\n 'config',\n 'set',\n 'prefix',\n prefix,\n ])\n\n if (setPrefix.code !== 0) {\n throw new Error(`Failed to set npm prefix: ${setPrefix.stderr}`)\n }\n\n // Update shell config files\n const pathUpdate = `\\n# npm global path\\nexport PATH=\"${prefix}/bin:$PATH\"\\n`\n\n if (platform === 'win32') {\n // On Windows, update user PATH environment variable\n const setxResult = await execFileNoThrow('setx', [\n 'PATH',\n `${process.env.PATH};${prefix}`,\n ])\n if (setxResult.code !== 0) {\n throw new Error(\n `Failed to update PATH on Windows: ${setxResult.stderr}`,\n )\n }\n } else {\n // Unix-like systems\n const shellConfigs = [\n // Bash\n join(homedir(), '.bashrc'),\n join(homedir(), '.bash_profile'),\n // Zsh\n join(homedir(), '.zshrc'),\n // Fish\n join(homedir(), '.config', 'fish', 'config.fish'),\n ]\n\n for (const config of shellConfigs) {\n if (existsSync(config)) {\n try {\n const content = readFileSync(config, 'utf8')\n if (!content.includes(prefix)) {\n if (config.includes('fish')) {\n // Fish shell has different syntax\n const fishPath = `\\n# npm global path\\nset -gx PATH ${prefix}/bin $PATH\\n`\n appendFileSync(config, fishPath)\n } else {\n appendFileSync(config, pathUpdate)\n }\n\n logEvent('npm_prefix_path_updated', {\n configPath: config,\n })\n }\n } catch (err) {\n // Log but don't throw - continue with other configs\n logEvent('npm_prefix_path_update_failed', {\n configPath: config,\n error:\n err instanceof Error\n ? err.message.slice(0, 200)\n : String(err).slice(0, 200),\n })\n logError(`Failed to update shell config ${config}: ${err}`)\n }\n }\n }\n }\n } finally {\n releaseLock()\n }\n}\n\nexport function getDefaultNpmPrefix(): string {\n return join(homedir(), '.npm-global')\n}\n\nexport function getPermissionsCommand(npmPrefix: string): string {\n const windowsCommand = `icacls \"${npmPrefix}\" /grant \"%USERNAME%:(OI)(CI)F\"`\n const prefixPath = npmPrefix || '$(npm -g config get prefix)'\n const unixCommand = `sudo chown -R $USER:$(id -gn) ${prefixPath} && sudo chmod -R u+w ${prefixPath}`\n\n return platform === 'win32' ? windowsCommand : unixCommand\n}\n\nexport async function getLatestVersion(): Promise<string | null> {\n // 1) Try npm CLI (fast when available)\n try {\n const abortController = new AbortController()\n setTimeout(() => abortController.abort(), 5000)\n const result = await execFileNoThrow(\n 'npm',\n ['view', MACRO.PACKAGE_URL, 'version'],\n abortController.signal,\n )\n if (result.code === 0) {\n const v = result.stdout.trim()\n if (v) return v\n }\n } catch {}\n\n // 2) Fallback: fetch npm registry (works in Bun/Node without npm)\n try {\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), 5000)\n const res = await fetch(\n `https://registry.npmjs.org/${encodeURIComponent(MACRO.PACKAGE_URL)}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/vnd.npm.install-v1+json',\n 'User-Agent': `${PRODUCT_NAME}/${MACRO.VERSION}`,\n },\n signal: controller.signal,\n },\n )\n clearTimeout(timer)\n if (!res.ok) return null\n const json: any = await res.json().catch(() => null)\n const latest = json && json['dist-tags'] && json['dist-tags'].latest\n return typeof latest === 'string' ? latest : null\n } catch {\n return null\n }\n}\n\nexport async function installGlobalPackage(): Promise<InstallStatus> {\n // Detect preferred package manager and install accordingly\n if (!acquireLock()) {\n logError('Another process is currently installing an update')\n // Log the lock contention to statsig\n logEvent('tengu_auto_updater_lock_contention', {\n pid: String(process.pid),\n currentVersion: MACRO.VERSION,\n })\n return 'in_progress'\n }\n\n try {\n const manager = await detectPackageManager()\n if (manager === 'npm') {\n const { hasPermissions } = await checkNpmPermissions()\n if (!hasPermissions) {\n return 'no_permissions'\n }\n // Stream\u5B9E\u65F6\u8F93\u51FA\uFF0C\u51CF\u5C11\u7528\u6237\u7B49\u5F85\u611F\n const code = await runStreaming('npm', ['install', '-g', MACRO.PACKAGE_URL])\n if (code !== 0) {\n logError(`Failed to install new version via npm (exit ${code})`)\n return 'install_failed'\n }\n return 'success'\n }\n\n if (manager === 'bun') {\n const code = await runStreaming('bun', ['add', '-g', `${MACRO.PACKAGE_URL}@latest`])\n if (code !== 0) {\n logError(`Failed to install new version via bun (exit ${code})`)\n return 'install_failed'\n }\n return 'success'\n }\n\n // Fallback to npm if unknown\n const { hasPermissions } = await checkNpmPermissions()\n if (!hasPermissions) return 'no_permissions'\n const code = await runStreaming('npm', ['install', '-g', MACRO.PACKAGE_URL])\n if (code !== 0) return 'install_failed'\n return 'success'\n } finally {\n // Ensure we always release the lock\n releaseLock()\n }\n}\n\nexport type PackageManager = 'npm' | 'bun'\n\nexport async function detectPackageManager(): Promise<PackageManager> {\n // Respect explicit override if provided later via config/env (future-proof)\n try {\n // Heuristic 1: npm available and global root resolvable\n const npmRoot = await execFileNoThrow('npm', ['-g', 'root'])\n if (npmRoot.code === 0 && npmRoot.stdout.trim()) {\n return 'npm'\n }\n } catch {}\n\n try {\n // Heuristic 2: running on a system with bun and installed path hints bun\n const bunVer = await execFileNoThrow('bun', ['--version'])\n if (bunVer.code === 0) {\n // BUN_INSTALL defaults to ~/.bun; if our package lives under that tree, prefer bun\n // If npm not detected but bun is available, choose bun\n return 'bun'\n }\n } catch {}\n\n // Default to npm when uncertain\n return 'npm'\n}\n\nfunction runStreaming(cmd: string, args: string[]): Promise<number> {\n return new Promise(resolve => {\n // \u6253\u5370\u6B63\u5728\u4F7F\u7528\u7684\u5305\u7BA1\u7406\u5668\u4E0E\u547D\u4EE4\uFF0C\u589E\u5F3A\u900F\u660E\u5EA6\n try {\n // eslint-disable-next-line no-console\n console.log(`> ${cmd} ${args.join(' ')}`)\n } catch {}\n\n const child = spawn(cmd, args, {\n stdio: 'inherit',\n env: process.env,\n })\n child.on('close', code => resolve(code ?? 0))\n child.on('error', () => resolve(1))\n })\n}\n\n/**\n * Generate human-friendly update commands for the detected package manager.\n * Also includes an alternative manager command as fallback for users.\n */\nexport async function getUpdateCommandSuggestions(): Promise<string[]> {\n // Prefer Bun first, then npm (consistent, simple UX). Include @latest.\n return [\n `bun add -g ${MACRO.PACKAGE_URL}@latest`,\n `npm install -g ${MACRO.PACKAGE_URL}@latest`,\n ]\n}\n\n/**\n * Non-blocking update notifier (daily)\n * - Respects CI and disabled auto-updater\n * - Uses env.hasInternetAccess() to quickly skip offline cases\n * - Stores last check timestamp + last suggested version in global config\n */\nexport async function checkAndNotifyUpdate(): Promise<void> {\n try {\n if (process.env.NODE_ENV === 'test') return\n if (await isAutoUpdaterDisabled()) return\n if (await env.getIsDocker()) return\n if (!(await env.hasInternetAccess())) return\n\n const config: any = getGlobalConfig()\n const now = Date.now()\n const DAY_MS = 24 * 60 * 60 * 1000\n const lastCheck = Number(config.lastUpdateCheckAt || 0)\n if (lastCheck && now - lastCheck < DAY_MS) return\n\n const latest = await getLatestVersion()\n if (!latest) {\n // Still record the check to avoid spamming\n saveGlobalConfig({ ...config, lastUpdateCheckAt: now })\n return\n }\n\n if (gt(latest, MACRO.VERSION)) {\n // Update stored state and print a low-noise hint\n saveGlobalConfig({\n ...config,\n lastUpdateCheckAt: now,\n lastSuggestedVersion: latest,\n })\n const suggestions = await getUpdateCommandSuggestions()\n console.log(`New version available: ${latest} (current: ${MACRO.VERSION})`)\n console.log('Run the following command to update:')\n for (const command of suggestions) {\n console.log(` ${command}`)\n }\n } else {\n saveGlobalConfig({ ...config, lastUpdateCheckAt: now })\n }\n } catch (error) {\n // Never block or throw; just log and move on\n logError(`update-notify: ${error}`)\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["hasPermissions", "code"]
|
|
7
|
-
}
|
package/dist/utils/betas.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { memoize } from "lodash-es";
|
|
2
|
-
import { checkGate } from "../services/statsig.js";
|
|
3
|
-
import {
|
|
4
|
-
GATE_TOKEN_EFFICIENT_TOOLS,
|
|
5
|
-
BETA_HEADER_TOKEN_EFFICIENT_TOOLS,
|
|
6
|
-
CLAUDE_CODE_20250219_BETA_HEADER
|
|
7
|
-
} from "../constants/betas.js";
|
|
8
|
-
const getBetas = memoize(async () => {
|
|
9
|
-
const betaHeaders = [CLAUDE_CODE_20250219_BETA_HEADER];
|
|
10
|
-
if (process.env.USER_TYPE === "ant" || process.env.SWE_BENCH) {
|
|
11
|
-
const useTokenEfficientTools = await checkGate(GATE_TOKEN_EFFICIENT_TOOLS);
|
|
12
|
-
if (useTokenEfficientTools) {
|
|
13
|
-
betaHeaders.push(BETA_HEADER_TOKEN_EFFICIENT_TOOLS);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return betaHeaders;
|
|
17
|
-
});
|
|
18
|
-
export {
|
|
19
|
-
getBetas
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=betas.js.map
|
package/dist/utils/betas.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/betas.ts"],
|
|
4
|
-
"sourcesContent": ["import { memoize } from 'lodash-es'\nimport { checkGate } from '../services/statsig'\nimport {\n GATE_TOKEN_EFFICIENT_TOOLS,\n BETA_HEADER_TOKEN_EFFICIENT_TOOLS,\n CLAUDE_CODE_20250219_BETA_HEADER,\n} from '../constants/betas.js'\n\nexport const getBetas = memoize(async (): Promise<string[]> => {\n const betaHeaders = [CLAUDE_CODE_20250219_BETA_HEADER]\n\n if (process.env.USER_TYPE === 'ant' || process.env.SWE_BENCH) {\n const useTokenEfficientTools = await checkGate(GATE_TOKEN_EFFICIENT_TOOLS)\n if (useTokenEfficientTools) {\n betaHeaders.push(BETA_HEADER_TOKEN_EFFICIENT_TOOLS)\n }\n }\n\n return betaHeaders\n})\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,WAAW,QAAQ,YAA+B;AAC7D,QAAM,cAAc,CAAC,gCAAgC;AAErD,MAAI,QAAQ,IAAI,cAAc,SAAS,QAAQ,IAAI,WAAW;AAC5D,UAAM,yBAAyB,MAAM,UAAU,0BAA0B;AACzE,QAAI,wBAAwB;AAC1B,kBAAY,KAAK,iCAAiC;AAAA,IACpD;AAAA,EACF;AAEA,SAAO;AACT,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/utils/browser.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { execFileNoThrow } from "./execFileNoThrow.js";
|
|
2
|
-
async function openBrowser(url) {
|
|
3
|
-
const platform = process.platform;
|
|
4
|
-
const command = platform === "win32" ? "start" : platform === "darwin" ? "open" : "xdg-open";
|
|
5
|
-
try {
|
|
6
|
-
const { code } = await execFileNoThrow(command, [url]);
|
|
7
|
-
return code === 0;
|
|
8
|
-
} catch (_) {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export {
|
|
13
|
-
openBrowser
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=browser.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/browser.ts"],
|
|
4
|
-
"sourcesContent": ["import { execFileNoThrow } from './execFileNoThrow'\n\nexport async function openBrowser(url: string): Promise<boolean> {\n const platform = process.platform\n const command =\n platform === 'win32' ? 'start' : platform === 'darwin' ? 'open' : 'xdg-open'\n\n try {\n const { code } = await execFileNoThrow(command, [url])\n return code === 0\n } catch (_) {\n return false\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAEhC,eAAsB,YAAY,KAA+B;AAC/D,QAAM,WAAW,QAAQ;AACzB,QAAM,UACJ,aAAa,UAAU,UAAU,aAAa,WAAW,SAAS;AAEpE,MAAI;AACF,UAAM,EAAE,KAAK,IAAI,MAAM,gBAAgB,SAAS,CAAC,GAAG,CAAC;AACrD,WAAO,SAAS;AAAA,EAClB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/utils/cleanup.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { logError } from "./log.js";
|
|
4
|
-
import { CACHE_PATHS } from "./log.js";
|
|
5
|
-
const THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
6
|
-
function convertFileNameToDate(filename) {
|
|
7
|
-
const isoStr = filename.split(".")[0].replace(/T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z/, "T$1:$2:$3.$4Z");
|
|
8
|
-
return new Date(isoStr);
|
|
9
|
-
}
|
|
10
|
-
async function cleanupOldMessageFiles() {
|
|
11
|
-
const messagePath = CACHE_PATHS.messages();
|
|
12
|
-
const errorPath = CACHE_PATHS.errors();
|
|
13
|
-
const thirtyDaysAgo = new Date(Date.now() - THIRTY_DAYS_MS);
|
|
14
|
-
const deletedCounts = { messages: 0, errors: 0 };
|
|
15
|
-
for (const path of [messagePath, errorPath]) {
|
|
16
|
-
try {
|
|
17
|
-
const files = await fs.readdir(path);
|
|
18
|
-
for (const file of files) {
|
|
19
|
-
try {
|
|
20
|
-
const timestamp = convertFileNameToDate(file);
|
|
21
|
-
if (timestamp < thirtyDaysAgo) {
|
|
22
|
-
await fs.unlink(join(path, file));
|
|
23
|
-
if (path === messagePath) {
|
|
24
|
-
deletedCounts.messages++;
|
|
25
|
-
} else {
|
|
26
|
-
deletedCounts.errors++;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
} catch (error) {
|
|
30
|
-
logError(
|
|
31
|
-
`Failed to process file ${file}: ${error instanceof Error ? error.message : String(error)}`
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
} catch (error) {
|
|
36
|
-
if (error instanceof Error && "code" in error && error.code !== "ENOENT") {
|
|
37
|
-
logError(
|
|
38
|
-
`Failed to cleanup directory ${path}: ${error instanceof Error ? error.message : String(error)}`
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return deletedCounts;
|
|
44
|
-
}
|
|
45
|
-
function cleanupOldMessageFilesInBackground() {
|
|
46
|
-
const immediate = setImmediate(cleanupOldMessageFiles);
|
|
47
|
-
immediate.unref();
|
|
48
|
-
}
|
|
49
|
-
export {
|
|
50
|
-
cleanupOldMessageFiles,
|
|
51
|
-
cleanupOldMessageFilesInBackground,
|
|
52
|
-
convertFileNameToDate
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=cleanup.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/cleanup.ts"],
|
|
4
|
-
"sourcesContent": ["import { promises as fs } from 'fs'\nimport { join } from 'path'\nimport { logError } from './log'\nimport { CACHE_PATHS } from './log'\n\nconst THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1000\n\nexport type CleanupResult = {\n messages: number\n errors: number\n}\n\nexport function convertFileNameToDate(filename: string): Date {\n const isoStr = filename\n .split('.')[0]!\n .replace(/T(\\d{2})-(\\d{2})-(\\d{2})-(\\d{3})Z/, 'T$1:$2:$3.$4Z')\n return new Date(isoStr)\n}\n\nexport async function cleanupOldMessageFiles(): Promise<CleanupResult> {\n const messagePath = CACHE_PATHS.messages()\n const errorPath = CACHE_PATHS.errors()\n const thirtyDaysAgo = new Date(Date.now() - THIRTY_DAYS_MS)\n const deletedCounts: CleanupResult = { messages: 0, errors: 0 }\n\n for (const path of [messagePath, errorPath]) {\n try {\n const files = await fs.readdir(path)\n\n for (const file of files) {\n try {\n // Convert filename format where all ':.' were replaced with '-'\n const timestamp = convertFileNameToDate(file)\n if (timestamp < thirtyDaysAgo) {\n await fs.unlink(join(path, file))\n // Increment the appropriate counter\n if (path === messagePath) {\n deletedCounts.messages++\n } else {\n deletedCounts.errors++\n }\n }\n } catch (error: unknown) {\n // Log but continue processing other files\n logError(\n `Failed to process file ${file}: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n } catch (error: unknown) {\n // Ignore if directory doesn't exist\n if (\n error instanceof Error &&\n 'code' in error &&\n error.code !== 'ENOENT'\n ) {\n logError(\n `Failed to cleanup directory ${path}: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n }\n\n return deletedCounts\n}\n\nexport function cleanupOldMessageFilesInBackground(): void {\n const immediate = setImmediate(cleanupOldMessageFiles)\n\n // Prevent the setImmediate from keeping the process alive\n immediate.unref()\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY,UAAU;AAC/B,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAE5B,MAAM,iBAAiB,KAAK,KAAK,KAAK,KAAK;AAOpC,SAAS,sBAAsB,UAAwB;AAC5D,QAAM,SAAS,SACZ,MAAM,GAAG,EAAE,CAAC,EACZ,QAAQ,qCAAqC,eAAe;AAC/D,SAAO,IAAI,KAAK,MAAM;AACxB;AAEA,eAAsB,yBAAiD;AACrE,QAAM,cAAc,YAAY,SAAS;AACzC,QAAM,YAAY,YAAY,OAAO;AACrC,QAAM,gBAAgB,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc;AAC1D,QAAM,gBAA+B,EAAE,UAAU,GAAG,QAAQ,EAAE;AAE9D,aAAW,QAAQ,CAAC,aAAa,SAAS,GAAG;AAC3C,QAAI;AACF,YAAM,QAAQ,MAAM,GAAG,QAAQ,IAAI;AAEnC,iBAAW,QAAQ,OAAO;AACxB,YAAI;AAEF,gBAAM,YAAY,sBAAsB,IAAI;AAC5C,cAAI,YAAY,eAAe;AAC7B,kBAAM,GAAG,OAAO,KAAK,MAAM,IAAI,CAAC;AAEhC,gBAAI,SAAS,aAAa;AACxB,4BAAc;AAAA,YAChB,OAAO;AACL,4BAAc;AAAA,YAChB;AAAA,UACF;AAAA,QACF,SAAS,OAAgB;AAEvB;AAAA,YACE,0BAA0B,IAAI,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,UAC3F;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAgB;AAEvB,UACE,iBAAiB,SACjB,UAAU,SACV,MAAM,SAAS,UACf;AACA;AAAA,UACE,+BAA+B,IAAI,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,QAChG;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,qCAA2C;AACzD,QAAM,YAAY,aAAa,sBAAsB;AAGrD,YAAU,MAAM;AAClB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|