@within-7/minto 0.0.5-dev.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.
Files changed (701) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1097 -0
  3. package/README.zh-CN.md +1097 -0
  4. package/cli.js +59 -0
  5. package/dist/Tool.js +1 -0
  6. package/dist/Tool.js.map +7 -0
  7. package/dist/commands/agents.js +2086 -0
  8. package/dist/commands/agents.js.map +7 -0
  9. package/dist/commands/approvedTools.js +36 -0
  10. package/dist/commands/approvedTools.js.map +7 -0
  11. package/dist/commands/bug.js +21 -0
  12. package/dist/commands/bug.js.map +7 -0
  13. package/dist/commands/build.js +74 -0
  14. package/dist/commands/build.js.map +7 -0
  15. package/dist/commands/clear.js +37 -0
  16. package/dist/commands/clear.js.map +7 -0
  17. package/dist/commands/compact.js +82 -0
  18. package/dist/commands/compact.js.map +7 -0
  19. package/dist/commands/compression.js +57 -0
  20. package/dist/commands/compression.js.map +7 -0
  21. package/dist/commands/config.js +20 -0
  22. package/dist/commands/config.js.map +7 -0
  23. package/dist/commands/cost.js +19 -0
  24. package/dist/commands/cost.js.map +7 -0
  25. package/dist/commands/ctx_viz.js +152 -0
  26. package/dist/commands/ctx_viz.js.map +7 -0
  27. package/dist/commands/doctor.js +25 -0
  28. package/dist/commands/doctor.js.map +7 -0
  29. package/dist/commands/help.js +20 -0
  30. package/dist/commands/help.js.map +7 -0
  31. package/dist/commands/init.js +38 -0
  32. package/dist/commands/init.js.map +7 -0
  33. package/dist/commands/listen.js +37 -0
  34. package/dist/commands/listen.js.map +7 -0
  35. package/dist/commands/login.js +37 -0
  36. package/dist/commands/login.js.map +7 -0
  37. package/dist/commands/logout.js +33 -0
  38. package/dist/commands/logout.js.map +7 -0
  39. package/dist/commands/mcp-interactive.js +267 -0
  40. package/dist/commands/mcp-interactive.js.map +7 -0
  41. package/dist/commands/mcp.js +40 -0
  42. package/dist/commands/mcp.js.map +7 -0
  43. package/dist/commands/mcp_refresh.js +40 -0
  44. package/dist/commands/mcp_refresh.js.map +7 -0
  45. package/dist/commands/model.js +41 -0
  46. package/dist/commands/model.js.map +7 -0
  47. package/dist/commands/modelstatus.js +21 -0
  48. package/dist/commands/modelstatus.js.map +7 -0
  49. package/dist/commands/onboarding.js +36 -0
  50. package/dist/commands/onboarding.js.map +7 -0
  51. package/dist/commands/plugin/AddMarketplaceForm.js +62 -0
  52. package/dist/commands/plugin/AddMarketplaceForm.js.map +7 -0
  53. package/dist/commands/plugin/ConfirmDialog.js +71 -0
  54. package/dist/commands/plugin/ConfirmDialog.js.map +7 -0
  55. package/dist/commands/plugin/ErrorView.js +33 -0
  56. package/dist/commands/plugin/ErrorView.js.map +7 -0
  57. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +135 -0
  58. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +7 -0
  59. package/dist/commands/plugin/InstalledPluginsManager.js +99 -0
  60. package/dist/commands/plugin/InstalledPluginsManager.js.map +7 -0
  61. package/dist/commands/plugin/LoadingView.js +14 -0
  62. package/dist/commands/plugin/LoadingView.js.map +7 -0
  63. package/dist/commands/plugin/MainMenu.js +57 -0
  64. package/dist/commands/plugin/MainMenu.js.map +7 -0
  65. package/dist/commands/plugin/MarketplaceManager.js +155 -0
  66. package/dist/commands/plugin/MarketplaceManager.js.map +7 -0
  67. package/dist/commands/plugin/MarketplaceSelector.js +119 -0
  68. package/dist/commands/plugin/MarketplaceSelector.js.map +7 -0
  69. package/dist/commands/plugin/PlaceholderScreen.js +16 -0
  70. package/dist/commands/plugin/PlaceholderScreen.js.map +7 -0
  71. package/dist/commands/plugin/PluginBrowser.js +180 -0
  72. package/dist/commands/plugin/PluginBrowser.js.map +7 -0
  73. package/dist/commands/plugin/PluginDetailsInstall.js +152 -0
  74. package/dist/commands/plugin/PluginDetailsInstall.js.map +7 -0
  75. package/dist/commands/plugin/PluginDetailsManage.js +200 -0
  76. package/dist/commands/plugin/PluginDetailsManage.js.map +7 -0
  77. package/dist/commands/plugin/components.js +16 -0
  78. package/dist/commands/plugin/components.js.map +7 -0
  79. package/dist/commands/plugin/example-usage.js +63 -0
  80. package/dist/commands/plugin/example-usage.js.map +7 -0
  81. package/dist/commands/plugin/types.js +1 -0
  82. package/dist/commands/plugin/types.js.map +7 -0
  83. package/dist/commands/plugin/utils.js +77 -0
  84. package/dist/commands/plugin/utils.js.map +7 -0
  85. package/dist/commands/plugin-interactive.js +446 -0
  86. package/dist/commands/plugin-interactive.js.map +7 -0
  87. package/dist/commands/plugin.js +523 -0
  88. package/dist/commands/plugin.js.map +7 -0
  89. package/dist/commands/pr_comments.js +61 -0
  90. package/dist/commands/pr_comments.js.map +7 -0
  91. package/dist/commands/quit.js +16 -0
  92. package/dist/commands/quit.js.map +7 -0
  93. package/dist/commands/refreshCommands.js +43 -0
  94. package/dist/commands/refreshCommands.js.map +7 -0
  95. package/dist/commands/release-notes.js +30 -0
  96. package/dist/commands/release-notes.js.map +7 -0
  97. package/dist/commands/resume.js +35 -0
  98. package/dist/commands/resume.js.map +7 -0
  99. package/dist/commands/review.js +51 -0
  100. package/dist/commands/review.js.map +7 -0
  101. package/dist/commands/terminalSetup.js +164 -0
  102. package/dist/commands/terminalSetup.js.map +7 -0
  103. package/dist/commands.js +104 -0
  104. package/dist/commands.js.map +7 -0
  105. package/dist/components/AgentResponseBlock.js +41 -0
  106. package/dist/components/AgentResponseBlock.js.map +7 -0
  107. package/dist/components/AgentThinkingBlock.js +40 -0
  108. package/dist/components/AgentThinkingBlock.js.map +7 -0
  109. package/dist/components/AsciiLogo.js +19 -0
  110. package/dist/components/AsciiLogo.js.map +7 -0
  111. package/dist/components/BackgroundTasksPanel.js +124 -0
  112. package/dist/components/BackgroundTasksPanel.js.map +7 -0
  113. package/dist/components/Bug.js +147 -0
  114. package/dist/components/Bug.js.map +7 -0
  115. package/dist/components/Config.js +166 -0
  116. package/dist/components/Config.js.map +7 -0
  117. package/dist/components/ConsoleOAuthFlow.js +178 -0
  118. package/dist/components/ConsoleOAuthFlow.js.map +7 -0
  119. package/dist/components/Cost.js +13 -0
  120. package/dist/components/Cost.js.map +7 -0
  121. package/dist/components/CostThresholdDialog.js +38 -0
  122. package/dist/components/CostThresholdDialog.js.map +7 -0
  123. package/dist/components/CustomSelect/option-map.js +32 -0
  124. package/dist/components/CustomSelect/option-map.js.map +7 -0
  125. package/dist/components/CustomSelect/select-option.js +34 -0
  126. package/dist/components/CustomSelect/select-option.js.map +7 -0
  127. package/dist/components/CustomSelect/select.js +64 -0
  128. package/dist/components/CustomSelect/select.js.map +7 -0
  129. package/dist/components/CustomSelect/theme.js +1 -0
  130. package/dist/components/CustomSelect/theme.js.map +7 -0
  131. package/dist/components/CustomSelect/use-select-state.js +220 -0
  132. package/dist/components/CustomSelect/use-select-state.js.map +7 -0
  133. package/dist/components/CustomSelect/use-select.js +21 -0
  134. package/dist/components/CustomSelect/use-select.js.map +7 -0
  135. package/dist/components/FallbackToolUseRejectedMessage.js +11 -0
  136. package/dist/components/FallbackToolUseRejectedMessage.js.map +7 -0
  137. package/dist/components/FileEditToolUpdatedMessage.js +32 -0
  138. package/dist/components/FileEditToolUpdatedMessage.js.map +7 -0
  139. package/dist/components/HeaderBar.js +57 -0
  140. package/dist/components/HeaderBar.js.map +7 -0
  141. package/dist/components/Help.js +46 -0
  142. package/dist/components/Help.js.map +7 -0
  143. package/dist/components/HighlightedCode.js +30 -0
  144. package/dist/components/HighlightedCode.js.map +7 -0
  145. package/dist/components/HistorySearchOverlay.js +48 -0
  146. package/dist/components/HistorySearchOverlay.js.map +7 -0
  147. package/dist/components/InteractionRoundBlock.js +56 -0
  148. package/dist/components/InteractionRoundBlock.js.map +7 -0
  149. package/dist/components/InvalidConfigDialog.js +83 -0
  150. package/dist/components/InvalidConfigDialog.js.map +7 -0
  151. package/dist/components/Link.js +18 -0
  152. package/dist/components/Link.js.map +7 -0
  153. package/dist/components/LogSelector.js +50 -0
  154. package/dist/components/LogSelector.js.map +7 -0
  155. package/dist/components/Logo.js +96 -0
  156. package/dist/components/Logo.js.map +7 -0
  157. package/dist/components/MCPServerApprovalDialog.js +79 -0
  158. package/dist/components/MCPServerApprovalDialog.js.map +7 -0
  159. package/dist/components/MCPServerDialogCopy.js +11 -0
  160. package/dist/components/MCPServerDialogCopy.js.map +7 -0
  161. package/dist/components/MCPServerMultiselectDialog.js +80 -0
  162. package/dist/components/MCPServerMultiselectDialog.js.map +7 -0
  163. package/dist/components/Message.js +146 -0
  164. package/dist/components/Message.js.map +7 -0
  165. package/dist/components/MessageResponse.js +9 -0
  166. package/dist/components/MessageResponse.js.map +7 -0
  167. package/dist/components/MessageSelector.js +125 -0
  168. package/dist/components/MessageSelector.js.map +7 -0
  169. package/dist/components/ModeIndicator.js +38 -0
  170. package/dist/components/ModeIndicator.js.map +7 -0
  171. package/dist/components/ModelConfig.js +208 -0
  172. package/dist/components/ModelConfig.js.map +7 -0
  173. package/dist/components/ModelListManager.js +140 -0
  174. package/dist/components/ModelListManager.js.map +7 -0
  175. package/dist/components/ModelSelector.js +2062 -0
  176. package/dist/components/ModelSelector.js.map +7 -0
  177. package/dist/components/ModelStatusDisplay.js +87 -0
  178. package/dist/components/ModelStatusDisplay.js.map +7 -0
  179. package/dist/components/Onboarding.js +153 -0
  180. package/dist/components/Onboarding.js.map +7 -0
  181. package/dist/components/PressEnterToContinue.js +10 -0
  182. package/dist/components/PressEnterToContinue.js.map +7 -0
  183. package/dist/components/ProjectOnboarding.js +99 -0
  184. package/dist/components/ProjectOnboarding.js.map +7 -0
  185. package/dist/components/PromptInput.js +755 -0
  186. package/dist/components/PromptInput.js.map +7 -0
  187. package/dist/components/QuitSummary.js +81 -0
  188. package/dist/components/QuitSummary.js.map +7 -0
  189. package/dist/components/SentryErrorBoundary.js +27 -0
  190. package/dist/components/SentryErrorBoundary.js.map +7 -0
  191. package/dist/components/Spinner.js +101 -0
  192. package/dist/components/Spinner.js.map +7 -0
  193. package/dist/components/SpinnerSymbol.js +78 -0
  194. package/dist/components/SpinnerSymbol.js.map +7 -0
  195. package/dist/components/StreamingBashOutput.js +70 -0
  196. package/dist/components/StreamingBashOutput.js.map +7 -0
  197. package/dist/components/StructuredDiff.js +148 -0
  198. package/dist/components/StructuredDiff.js.map +7 -0
  199. package/dist/components/SubagentBlock.js +157 -0
  200. package/dist/components/SubagentBlock.js.map +7 -0
  201. package/dist/components/SubagentManager.js +65 -0
  202. package/dist/components/SubagentManager.js.map +7 -0
  203. package/dist/components/SubagentProgress.js +109 -0
  204. package/dist/components/SubagentProgress.js.map +7 -0
  205. package/dist/components/SubagentStatusMarker.js +37 -0
  206. package/dist/components/SubagentStatusMarker.js.map +7 -0
  207. package/dist/components/TaskCard.js +170 -0
  208. package/dist/components/TaskCard.js.map +7 -0
  209. package/dist/components/TextInput.js +100 -0
  210. package/dist/components/TextInput.js.map +7 -0
  211. package/dist/components/TimelineRenderer.js +31 -0
  212. package/dist/components/TimelineRenderer.js.map +7 -0
  213. package/dist/components/TodoChangeBlock.js +29 -0
  214. package/dist/components/TodoChangeBlock.js.map +7 -0
  215. package/dist/components/TodoChangeLine.js +22 -0
  216. package/dist/components/TodoChangeLine.js.map +7 -0
  217. package/dist/components/TodoItem.js +35 -0
  218. package/dist/components/TodoItem.js.map +7 -0
  219. package/dist/components/TodoPanel.js +55 -0
  220. package/dist/components/TodoPanel.js.map +7 -0
  221. package/dist/components/TokenWarning.js +19 -0
  222. package/dist/components/TokenWarning.js.map +7 -0
  223. package/dist/components/ToolExecutionBlock.js +18 -0
  224. package/dist/components/ToolExecutionBlock.js.map +7 -0
  225. package/dist/components/ToolUseLoader.js +24 -0
  226. package/dist/components/ToolUseLoader.js.map +7 -0
  227. package/dist/components/TrustDialog.js +71 -0
  228. package/dist/components/TrustDialog.js.map +7 -0
  229. package/dist/components/UserQueryBlock.js +12 -0
  230. package/dist/components/UserQueryBlock.js.map +7 -0
  231. package/dist/components/binary-feedback/BinaryFeedback.js +50 -0
  232. package/dist/components/binary-feedback/BinaryFeedback.js.map +7 -0
  233. package/dist/components/binary-feedback/BinaryFeedbackOption.js +94 -0
  234. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +7 -0
  235. package/dist/components/binary-feedback/BinaryFeedbackView.js +139 -0
  236. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +7 -0
  237. package/dist/components/binary-feedback/utils.js +108 -0
  238. package/dist/components/binary-feedback/utils.js.map +7 -0
  239. package/dist/components/messages/AssistantBashOutputMessage.js +23 -0
  240. package/dist/components/messages/AssistantBashOutputMessage.js.map +7 -0
  241. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +36 -0
  242. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +7 -0
  243. package/dist/components/messages/AssistantRedactedThinkingMessage.js +12 -0
  244. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +7 -0
  245. package/dist/components/messages/AssistantTextMessage.js +78 -0
  246. package/dist/components/messages/AssistantTextMessage.js.map +7 -0
  247. package/dist/components/messages/AssistantThinkingMessage.js +27 -0
  248. package/dist/components/messages/AssistantThinkingMessage.js.map +7 -0
  249. package/dist/components/messages/AssistantToolUseMessage.js +91 -0
  250. package/dist/components/messages/AssistantToolUseMessage.js.map +7 -0
  251. package/dist/components/messages/TaskProgressMessage.js +11 -0
  252. package/dist/components/messages/TaskProgressMessage.js.map +7 -0
  253. package/dist/components/messages/TaskToolMessage.js +39 -0
  254. package/dist/components/messages/TaskToolMessage.js.map +7 -0
  255. package/dist/components/messages/UserBashInputMessage.js +18 -0
  256. package/dist/components/messages/UserBashInputMessage.js.map +7 -0
  257. package/dist/components/messages/UserCommandMessage.js +20 -0
  258. package/dist/components/messages/UserCommandMessage.js.map +7 -0
  259. package/dist/components/messages/UserKodingInputMessage.js +18 -0
  260. package/dist/components/messages/UserKodingInputMessage.js.map +7 -0
  261. package/dist/components/messages/UserPromptMessage.js +20 -0
  262. package/dist/components/messages/UserPromptMessage.js.map +7 -0
  263. package/dist/components/messages/UserTextMessage.js +25 -0
  264. package/dist/components/messages/UserTextMessage.js.map +7 -0
  265. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +10 -0
  266. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +7 -0
  267. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +15 -0
  268. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +7 -0
  269. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +25 -0
  270. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +7 -0
  271. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +47 -0
  272. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +7 -0
  273. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +23 -0
  274. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +7 -0
  275. package/dist/components/messages/UserToolResultMessage/utils.js +50 -0
  276. package/dist/components/messages/UserToolResultMessage/utils.js.map +7 -0
  277. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +112 -0
  278. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +7 -0
  279. package/dist/components/permissions/FallbackPermissionRequest.js +131 -0
  280. package/dist/components/permissions/FallbackPermissionRequest.js.map +7 -0
  281. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +159 -0
  282. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +7 -0
  283. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +58 -0
  284. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +7 -0
  285. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +153 -0
  286. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +7 -0
  287. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +70 -0
  288. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +7 -0
  289. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +212 -0
  290. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +7 -0
  291. package/dist/components/permissions/PermissionRequest.js +70 -0
  292. package/dist/components/permissions/PermissionRequest.js.map +7 -0
  293. package/dist/components/permissions/PermissionRequestTitle.js +52 -0
  294. package/dist/components/permissions/PermissionRequestTitle.js.map +7 -0
  295. package/dist/components/permissions/hooks.js +23 -0
  296. package/dist/components/permissions/hooks.js.map +7 -0
  297. package/dist/components/permissions/toolUseOptions.js +46 -0
  298. package/dist/components/permissions/toolUseOptions.js.map +7 -0
  299. package/dist/components/permissions/utils.js +21 -0
  300. package/dist/components/permissions/utils.js.map +7 -0
  301. package/dist/constants/claude-asterisk-ascii-art.js +242 -0
  302. package/dist/constants/claude-asterisk-ascii-art.js.map +7 -0
  303. package/dist/constants/colors.js +126 -0
  304. package/dist/constants/colors.js.map +7 -0
  305. package/dist/constants/compressionPrompts.js +73 -0
  306. package/dist/constants/compressionPrompts.js.map +7 -0
  307. package/dist/constants/figures.js +6 -0
  308. package/dist/constants/figures.js.map +7 -0
  309. package/dist/constants/macros.js +11 -0
  310. package/dist/constants/macros.js.map +7 -0
  311. package/dist/constants/modelCapabilities.js +154 -0
  312. package/dist/constants/modelCapabilities.js.map +7 -0
  313. package/dist/constants/models.js +1034 -0
  314. package/dist/constants/models.js.map +7 -0
  315. package/dist/constants/oauth.js +18 -0
  316. package/dist/constants/oauth.js.map +7 -0
  317. package/dist/constants/product.js +26 -0
  318. package/dist/constants/product.js.map +7 -0
  319. package/dist/constants/prompts.js +168 -0
  320. package/dist/constants/prompts.js.map +7 -0
  321. package/dist/constants/releaseNotes.js +9 -0
  322. package/dist/constants/releaseNotes.js.map +7 -0
  323. package/dist/constants/symbols.js +50 -0
  324. package/dist/constants/symbols.js.map +7 -0
  325. package/dist/context/PermissionContext.js +111 -0
  326. package/dist/context/PermissionContext.js.map +7 -0
  327. package/dist/context.js +278 -0
  328. package/dist/context.js.map +7 -0
  329. package/dist/cost-tracker.js +76 -0
  330. package/dist/cost-tracker.js.map +7 -0
  331. package/dist/entrypoints/cli-wrapper.js +61 -0
  332. package/dist/entrypoints/cli-wrapper.js.map +7 -0
  333. package/dist/entrypoints/cli.js +1115 -0
  334. package/dist/entrypoints/cli.js.map +7 -0
  335. package/dist/entrypoints/mcp.js +150 -0
  336. package/dist/entrypoints/mcp.js.map +7 -0
  337. package/dist/history.js +25 -0
  338. package/dist/history.js.map +7 -0
  339. package/dist/hooks/useApiKeyVerification.js +12 -0
  340. package/dist/hooks/useApiKeyVerification.js.map +7 -0
  341. package/dist/hooks/useArrowKeyHistory.js +50 -0
  342. package/dist/hooks/useArrowKeyHistory.js.map +7 -0
  343. package/dist/hooks/useCanUseTool.js +87 -0
  344. package/dist/hooks/useCanUseTool.js.map +7 -0
  345. package/dist/hooks/useCancelRequest.js +28 -0
  346. package/dist/hooks/useCancelRequest.js.map +7 -0
  347. package/dist/hooks/useDoublePress.js +31 -0
  348. package/dist/hooks/useDoublePress.js.map +7 -0
  349. package/dist/hooks/useExitOnCtrlCD.js +26 -0
  350. package/dist/hooks/useExitOnCtrlCD.js.map +7 -0
  351. package/dist/hooks/useHistorySearch.js +62 -0
  352. package/dist/hooks/useHistorySearch.js.map +7 -0
  353. package/dist/hooks/useInterval.js +18 -0
  354. package/dist/hooks/useInterval.js.map +7 -0
  355. package/dist/hooks/useLogMessages.js +14 -0
  356. package/dist/hooks/useLogMessages.js.map +7 -0
  357. package/dist/hooks/useLogStartupTime.js +10 -0
  358. package/dist/hooks/useLogStartupTime.js.map +7 -0
  359. package/dist/hooks/useNotifyAfterTimeout.js +42 -0
  360. package/dist/hooks/useNotifyAfterTimeout.js.map +7 -0
  361. package/dist/hooks/usePermissionRequestLogging.js +23 -0
  362. package/dist/hooks/usePermissionRequestLogging.js.map +7 -0
  363. package/dist/hooks/useTerminalSize.js +38 -0
  364. package/dist/hooks/useTerminalSize.js.map +7 -0
  365. package/dist/hooks/useTextInput.js +252 -0
  366. package/dist/hooks/useTextInput.js.map +7 -0
  367. package/dist/hooks/useUnifiedCompletion.js +929 -0
  368. package/dist/hooks/useUnifiedCompletion.js.map +7 -0
  369. package/dist/index.js +5 -0
  370. package/dist/index.js.map +7 -0
  371. package/dist/messages.js +33 -0
  372. package/dist/messages.js.map +7 -0
  373. package/dist/package.json +4 -0
  374. package/dist/permissions.js +194 -0
  375. package/dist/permissions.js.map +7 -0
  376. package/dist/query.js +499 -0
  377. package/dist/query.js.map +7 -0
  378. package/dist/screens/Doctor.js +22 -0
  379. package/dist/screens/Doctor.js.map +7 -0
  380. package/dist/screens/LogList.js +55 -0
  381. package/dist/screens/LogList.js.map +7 -0
  382. package/dist/screens/REPL.js +671 -0
  383. package/dist/screens/REPL.js.map +7 -0
  384. package/dist/screens/ResumeConversation.js +56 -0
  385. package/dist/screens/ResumeConversation.js.map +7 -0
  386. package/dist/services/adapters/base.js +29 -0
  387. package/dist/services/adapters/base.js.map +7 -0
  388. package/dist/services/adapters/chatCompletions.js +69 -0
  389. package/dist/services/adapters/chatCompletions.js.map +7 -0
  390. package/dist/services/adapters/responsesAPI.js +126 -0
  391. package/dist/services/adapters/responsesAPI.js.map +7 -0
  392. package/dist/services/claude.js +1573 -0
  393. package/dist/services/claude.js.map +7 -0
  394. package/dist/services/compressionService.js +210 -0
  395. package/dist/services/compressionService.js.map +7 -0
  396. package/dist/services/customCommands.js +437 -0
  397. package/dist/services/customCommands.js.map +7 -0
  398. package/dist/services/fileFreshness.js +275 -0
  399. package/dist/services/fileFreshness.js.map +7 -0
  400. package/dist/services/gpt5ConnectionTest.js +248 -0
  401. package/dist/services/gpt5ConnectionTest.js.map +7 -0
  402. package/dist/services/hookExecutor.js +276 -0
  403. package/dist/services/hookExecutor.js.map +7 -0
  404. package/dist/services/mainAgentCompressor.js +84 -0
  405. package/dist/services/mainAgentCompressor.js.map +7 -0
  406. package/dist/services/mcpClient.js +449 -0
  407. package/dist/services/mcpClient.js.map +7 -0
  408. package/dist/services/mcpServerApproval.js +55 -0
  409. package/dist/services/mcpServerApproval.js.map +7 -0
  410. package/dist/services/mentionProcessor.js +201 -0
  411. package/dist/services/mentionProcessor.js.map +7 -0
  412. package/dist/services/modelAdapterFactory.js +47 -0
  413. package/dist/services/modelAdapterFactory.js.map +7 -0
  414. package/dist/services/notifier.js +35 -0
  415. package/dist/services/notifier.js.map +7 -0
  416. package/dist/services/oauth.js +247 -0
  417. package/dist/services/oauth.js.map +7 -0
  418. package/dist/services/openai.js +995 -0
  419. package/dist/services/openai.js.map +7 -0
  420. package/dist/services/responseStateManager.js +68 -0
  421. package/dist/services/responseStateManager.js.map +7 -0
  422. package/dist/services/sentry.js +9 -0
  423. package/dist/services/sentry.js.map +7 -0
  424. package/dist/services/subagentAbortManager.js +95 -0
  425. package/dist/services/subagentAbortManager.js.map +7 -0
  426. package/dist/services/subagentCompressor.js +146 -0
  427. package/dist/services/subagentCompressor.js.map +7 -0
  428. package/dist/services/systemReminder.js +335 -0
  429. package/dist/services/systemReminder.js.map +7 -0
  430. package/dist/services/vcr.js +133 -0
  431. package/dist/services/vcr.js.map +7 -0
  432. package/dist/tools/ArchitectTool/ArchitectTool.js +119 -0
  433. package/dist/tools/ArchitectTool/ArchitectTool.js.map +7 -0
  434. package/dist/tools/ArchitectTool/prompt.js +18 -0
  435. package/dist/tools/ArchitectTool/prompt.js.map +7 -0
  436. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +423 -0
  437. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +7 -0
  438. package/dist/tools/BashOutputTool/BashOutputTool.js +120 -0
  439. package/dist/tools/BashOutputTool/BashOutputTool.js.map +7 -0
  440. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +11 -0
  441. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +7 -0
  442. package/dist/tools/BashOutputTool/prompt.js +13 -0
  443. package/dist/tools/BashOutputTool/prompt.js.map +7 -0
  444. package/dist/tools/BashTool/BashTool.js +209 -0
  445. package/dist/tools/BashTool/BashTool.js.map +7 -0
  446. package/dist/tools/BashTool/BashToolResultMessage.js +21 -0
  447. package/dist/tools/BashTool/BashToolResultMessage.js.map +7 -0
  448. package/dist/tools/BashTool/OutputLine.js +30 -0
  449. package/dist/tools/BashTool/OutputLine.js.map +7 -0
  450. package/dist/tools/BashTool/prompt.js +180 -0
  451. package/dist/tools/BashTool/prompt.js.map +7 -0
  452. package/dist/tools/BashTool/utils.js +51 -0
  453. package/dist/tools/BashTool/utils.js.map +7 -0
  454. package/dist/tools/FileEditTool/FileEditTool.js +226 -0
  455. package/dist/tools/FileEditTool/FileEditTool.js.map +7 -0
  456. package/dist/tools/FileEditTool/prompt.js +54 -0
  457. package/dist/tools/FileEditTool/prompt.js.map +7 -0
  458. package/dist/tools/FileEditTool/utils.js +42 -0
  459. package/dist/tools/FileEditTool/utils.js.map +7 -0
  460. package/dist/tools/FileReadTool/FileReadTool.js +272 -0
  461. package/dist/tools/FileReadTool/FileReadTool.js.map +7 -0
  462. package/dist/tools/FileReadTool/prompt.js +10 -0
  463. package/dist/tools/FileReadTool/prompt.js.map +7 -0
  464. package/dist/tools/FileWriteTool/FileWriteTool.js +202 -0
  465. package/dist/tools/FileWriteTool/FileWriteTool.js.map +7 -0
  466. package/dist/tools/FileWriteTool/prompt.js +14 -0
  467. package/dist/tools/FileWriteTool/prompt.js.map +7 -0
  468. package/dist/tools/GlobTool/GlobTool.js +88 -0
  469. package/dist/tools/GlobTool/GlobTool.js.map +7 -0
  470. package/dist/tools/GlobTool/prompt.js +12 -0
  471. package/dist/tools/GlobTool/prompt.js.map +7 -0
  472. package/dist/tools/GrepTool/GrepTool.js +107 -0
  473. package/dist/tools/GrepTool/GrepTool.js.map +7 -0
  474. package/dist/tools/GrepTool/prompt.js +15 -0
  475. package/dist/tools/GrepTool/prompt.js.map +7 -0
  476. package/dist/tools/KillShellTool/KillShellTool.js +92 -0
  477. package/dist/tools/KillShellTool/KillShellTool.js.map +7 -0
  478. package/dist/tools/KillShellTool/KillShellToolResultMessage.js +11 -0
  479. package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +7 -0
  480. package/dist/tools/KillShellTool/prompt.js +12 -0
  481. package/dist/tools/KillShellTool/prompt.js.map +7 -0
  482. package/dist/tools/MCPTool/MCPTool.js +90 -0
  483. package/dist/tools/MCPTool/MCPTool.js.map +7 -0
  484. package/dist/tools/MCPTool/prompt.js +7 -0
  485. package/dist/tools/MCPTool/prompt.js.map +7 -0
  486. package/dist/tools/MemoryReadTool/MemoryReadTool.js +103 -0
  487. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +7 -0
  488. package/dist/tools/MemoryReadTool/prompt.js +7 -0
  489. package/dist/tools/MemoryReadTool/prompt.js.map +7 -0
  490. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +77 -0
  491. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +7 -0
  492. package/dist/tools/MemoryWriteTool/prompt.js +7 -0
  493. package/dist/tools/MemoryWriteTool/prompt.js.map +7 -0
  494. package/dist/tools/MultiEditTool/MultiEditTool.js +301 -0
  495. package/dist/tools/MultiEditTool/MultiEditTool.js.map +7 -0
  496. package/dist/tools/MultiEditTool/prompt.js +48 -0
  497. package/dist/tools/MultiEditTool/prompt.js.map +7 -0
  498. package/dist/tools/NotebookEditTool/NotebookEditTool.js +238 -0
  499. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +7 -0
  500. package/dist/tools/NotebookEditTool/prompt.js +7 -0
  501. package/dist/tools/NotebookEditTool/prompt.js.map +7 -0
  502. package/dist/tools/NotebookReadTool/NotebookReadTool.js +212 -0
  503. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +7 -0
  504. package/dist/tools/NotebookReadTool/prompt.js +7 -0
  505. package/dist/tools/NotebookReadTool/prompt.js.map +7 -0
  506. package/dist/tools/SkillTool/SkillTool.js +209 -0
  507. package/dist/tools/SkillTool/SkillTool.js.map +7 -0
  508. package/dist/tools/SkillTool/prompt.js +81 -0
  509. package/dist/tools/SkillTool/prompt.js.map +7 -0
  510. package/dist/tools/TaskTool/TaskTool.js +381 -0
  511. package/dist/tools/TaskTool/TaskTool.js.map +7 -0
  512. package/dist/tools/TaskTool/constants.js +5 -0
  513. package/dist/tools/TaskTool/constants.js.map +7 -0
  514. package/dist/tools/TaskTool/prompt.js +111 -0
  515. package/dist/tools/TaskTool/prompt.js.map +7 -0
  516. package/dist/tools/ThinkTool/ThinkTool.js +40 -0
  517. package/dist/tools/ThinkTool/ThinkTool.js.map +7 -0
  518. package/dist/tools/ThinkTool/prompt.js +16 -0
  519. package/dist/tools/ThinkTool/prompt.js.map +7 -0
  520. package/dist/tools/TodoWriteTool/TodoWriteTool.js +243 -0
  521. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +7 -0
  522. package/dist/tools/TodoWriteTool/prompt.js +66 -0
  523. package/dist/tools/TodoWriteTool/prompt.js.map +7 -0
  524. package/dist/tools/URLFetcherTool/URLFetcherTool.js +137 -0
  525. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +7 -0
  526. package/dist/tools/URLFetcherTool/cache.js +45 -0
  527. package/dist/tools/URLFetcherTool/cache.js.map +7 -0
  528. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +42 -0
  529. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +7 -0
  530. package/dist/tools/URLFetcherTool/prompt.js +22 -0
  531. package/dist/tools/URLFetcherTool/prompt.js.map +7 -0
  532. package/dist/tools/WebSearchTool/WebSearchTool.js +86 -0
  533. package/dist/tools/WebSearchTool/WebSearchTool.js.map +7 -0
  534. package/dist/tools/WebSearchTool/prompt.js +17 -0
  535. package/dist/tools/WebSearchTool/prompt.js.map +7 -0
  536. package/dist/tools/WebSearchTool/searchProviders.js +48 -0
  537. package/dist/tools/WebSearchTool/searchProviders.js.map +7 -0
  538. package/dist/tools/lsTool/lsTool.js +201 -0
  539. package/dist/tools/lsTool/lsTool.js.map +7 -0
  540. package/dist/tools/lsTool/prompt.js +5 -0
  541. package/dist/tools/lsTool/prompt.js.map +7 -0
  542. package/dist/tools.js +70 -0
  543. package/dist/tools.js.map +7 -0
  544. package/dist/types/PermissionMode.js +82 -0
  545. package/dist/types/PermissionMode.js.map +7 -0
  546. package/dist/types/RequestContext.js +47 -0
  547. package/dist/types/RequestContext.js.map +7 -0
  548. package/dist/types/common.d.js +1 -0
  549. package/dist/types/common.d.js.map +7 -0
  550. package/dist/types/conversation.js +1 -0
  551. package/dist/types/conversation.js.map +7 -0
  552. package/dist/types/hooks.js +38 -0
  553. package/dist/types/hooks.js.map +7 -0
  554. package/dist/types/interactionRound.js +1 -0
  555. package/dist/types/interactionRound.js.map +7 -0
  556. package/dist/types/logs.js +1 -0
  557. package/dist/types/logs.js.map +7 -0
  558. package/dist/types/marketplace.js +101 -0
  559. package/dist/types/marketplace.js.map +7 -0
  560. package/dist/types/modelCapabilities.js +1 -0
  561. package/dist/types/modelCapabilities.js.map +7 -0
  562. package/dist/types/notebook.js +1 -0
  563. package/dist/types/notebook.js.map +7 -0
  564. package/dist/types/plugin.js +83 -0
  565. package/dist/types/plugin.js.map +7 -0
  566. package/dist/types/subagent.js +1 -0
  567. package/dist/types/subagent.js.map +7 -0
  568. package/dist/utils/BackgroundShellManager.js +215 -0
  569. package/dist/utils/BackgroundShellManager.js.map +7 -0
  570. package/dist/utils/Cursor.js +315 -0
  571. package/dist/utils/Cursor.js.map +7 -0
  572. package/dist/utils/PersistentShell.js +371 -0
  573. package/dist/utils/PersistentShell.js.map +7 -0
  574. package/dist/utils/advancedFuzzyMatcher.js +206 -0
  575. package/dist/utils/advancedFuzzyMatcher.js.map +7 -0
  576. package/dist/utils/agentLoader.js +244 -0
  577. package/dist/utils/agentLoader.js.map +7 -0
  578. package/dist/utils/agentStorage.js +59 -0
  579. package/dist/utils/agentStorage.js.map +7 -0
  580. package/dist/utils/array.js +7 -0
  581. package/dist/utils/array.js.map +7 -0
  582. package/dist/utils/ask.js +77 -0
  583. package/dist/utils/ask.js.map +7 -0
  584. package/dist/utils/auth.js +11 -0
  585. package/dist/utils/auth.js.map +7 -0
  586. package/dist/utils/autoCompactCore.js +126 -0
  587. package/dist/utils/autoCompactCore.js.map +7 -0
  588. package/dist/utils/autoUpdater.js +107 -0
  589. package/dist/utils/autoUpdater.js.map +7 -0
  590. package/dist/utils/browser.js +15 -0
  591. package/dist/utils/browser.js.map +7 -0
  592. package/dist/utils/cleanup.js +54 -0
  593. package/dist/utils/cleanup.js.map +7 -0
  594. package/dist/utils/commands.js +207 -0
  595. package/dist/utils/commands.js.map +7 -0
  596. package/dist/utils/commonUnixCommands.js +687 -0
  597. package/dist/utils/commonUnixCommands.js.map +7 -0
  598. package/dist/utils/compressionMode.js +47 -0
  599. package/dist/utils/compressionMode.js.map +7 -0
  600. package/dist/utils/config.js +651 -0
  601. package/dist/utils/config.js.map +7 -0
  602. package/dist/utils/conversationRecovery.js +35 -0
  603. package/dist/utils/conversationRecovery.js.map +7 -0
  604. package/dist/utils/debugLogger.js +889 -0
  605. package/dist/utils/debugLogger.js.map +7 -0
  606. package/dist/utils/diff.js +32 -0
  607. package/dist/utils/diff.js.map +7 -0
  608. package/dist/utils/env.js +44 -0
  609. package/dist/utils/env.js.map +7 -0
  610. package/dist/utils/errors.js +23 -0
  611. package/dist/utils/errors.js.map +7 -0
  612. package/dist/utils/execFileNoThrow.js +44 -0
  613. package/dist/utils/execFileNoThrow.js.map +7 -0
  614. package/dist/utils/expertChatStorage.js +78 -0
  615. package/dist/utils/expertChatStorage.js.map +7 -0
  616. package/dist/utils/file.js +282 -0
  617. package/dist/utils/file.js.map +7 -0
  618. package/dist/utils/fileRecoveryCore.js +41 -0
  619. package/dist/utils/fileRecoveryCore.js.map +7 -0
  620. package/dist/utils/format.js +41 -0
  621. package/dist/utils/format.js.map +7 -0
  622. package/dist/utils/fuzzyMatcher.js +252 -0
  623. package/dist/utils/fuzzyMatcher.js.map +7 -0
  624. package/dist/utils/generators.js +46 -0
  625. package/dist/utils/generators.js.map +7 -0
  626. package/dist/utils/git.js +83 -0
  627. package/dist/utils/git.js.map +7 -0
  628. package/dist/utils/hookManager.js +238 -0
  629. package/dist/utils/hookManager.js.map +7 -0
  630. package/dist/utils/http.js +7 -0
  631. package/dist/utils/http.js.map +7 -0
  632. package/dist/utils/imagePaste.js +29 -0
  633. package/dist/utils/imagePaste.js.map +7 -0
  634. package/dist/utils/json.js +16 -0
  635. package/dist/utils/json.js.map +7 -0
  636. package/dist/utils/log.js +329 -0
  637. package/dist/utils/log.js.map +7 -0
  638. package/dist/utils/markdown.js +187 -0
  639. package/dist/utils/markdown.js.map +7 -0
  640. package/dist/utils/marketplaceManager.js +474 -0
  641. package/dist/utils/marketplaceManager.js.map +7 -0
  642. package/dist/utils/messageContextManager.js +195 -0
  643. package/dist/utils/messageContextManager.js.map +7 -0
  644. package/dist/utils/messages.js +650 -0
  645. package/dist/utils/messages.js.map +7 -0
  646. package/dist/utils/model.js +677 -0
  647. package/dist/utils/model.js.map +7 -0
  648. package/dist/utils/permissions/filesystem.js +80 -0
  649. package/dist/utils/permissions/filesystem.js.map +7 -0
  650. package/dist/utils/pluginInstaller.js +491 -0
  651. package/dist/utils/pluginInstaller.js.map +7 -0
  652. package/dist/utils/pluginLoader.js +582 -0
  653. package/dist/utils/pluginLoader.js.map +7 -0
  654. package/dist/utils/pluginRegistry.js +111 -0
  655. package/dist/utils/pluginRegistry.js.map +7 -0
  656. package/dist/utils/pluginValidator.js +774 -0
  657. package/dist/utils/pluginValidator.js.map +7 -0
  658. package/dist/utils/ptyCompat.js +125 -0
  659. package/dist/utils/ptyCompat.js.map +7 -0
  660. package/dist/utils/replStateMachine.js +145 -0
  661. package/dist/utils/replStateMachine.js.map +7 -0
  662. package/dist/utils/ripgrep.js +131 -0
  663. package/dist/utils/ripgrep.js.map +7 -0
  664. package/dist/utils/roundConverter.js +262 -0
  665. package/dist/utils/roundConverter.js.map +7 -0
  666. package/dist/utils/secureFile.js +483 -0
  667. package/dist/utils/secureFile.js.map +7 -0
  668. package/dist/utils/sessionState.js +22 -0
  669. package/dist/utils/sessionState.js.map +7 -0
  670. package/dist/utils/skillLoader.js +79 -0
  671. package/dist/utils/skillLoader.js.map +7 -0
  672. package/dist/utils/state.js +24 -0
  673. package/dist/utils/state.js.map +7 -0
  674. package/dist/utils/style.js +31 -0
  675. package/dist/utils/style.js.map +7 -0
  676. package/dist/utils/terminal.js +47 -0
  677. package/dist/utils/terminal.js.map +7 -0
  678. package/dist/utils/theme.js +102 -0
  679. package/dist/utils/theme.js.map +7 -0
  680. package/dist/utils/thinking.js +59 -0
  681. package/dist/utils/thinking.js.map +7 -0
  682. package/dist/utils/todoChangeCalculator.js +64 -0
  683. package/dist/utils/todoChangeCalculator.js.map +7 -0
  684. package/dist/utils/todoStorage.js +291 -0
  685. package/dist/utils/todoStorage.js.map +7 -0
  686. package/dist/utils/tokens.js +30 -0
  687. package/dist/utils/tokens.js.map +7 -0
  688. package/dist/utils/toolExecutionController.js +109 -0
  689. package/dist/utils/toolExecutionController.js.map +7 -0
  690. package/dist/utils/unaryLogging.js +6 -0
  691. package/dist/utils/unaryLogging.js.map +7 -0
  692. package/dist/utils/user.js +40 -0
  693. package/dist/utils/user.js.map +7 -0
  694. package/dist/utils/validate.js +132 -0
  695. package/dist/utils/validate.js.map +7 -0
  696. package/dist/version.js +7 -0
  697. package/dist/version.js.map +7 -0
  698. package/dist/yoga.wasm +0 -0
  699. package/package.json +113 -0
  700. package/scripts/postinstall.js +18 -0
  701. package/yoga.wasm +0 -0
@@ -0,0 +1,889 @@
1
+ import { existsSync, mkdirSync, appendFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { homedir } from "os";
4
+ import { randomUUID } from "crypto";
5
+ import chalk from "chalk";
6
+ import { SESSION_ID } from "./log.js";
7
+ var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
8
+ LogLevel2["TRACE"] = "TRACE";
9
+ LogLevel2["DEBUG"] = "DEBUG";
10
+ LogLevel2["INFO"] = "INFO";
11
+ LogLevel2["WARN"] = "WARN";
12
+ LogLevel2["ERROR"] = "ERROR";
13
+ LogLevel2["FLOW"] = "FLOW";
14
+ LogLevel2["API"] = "API";
15
+ LogLevel2["STATE"] = "STATE";
16
+ LogLevel2["REMINDER"] = "REMINDER";
17
+ return LogLevel2;
18
+ })(LogLevel || {});
19
+ const isDebugMode = () => process.argv.includes("--debug") || process.argv.includes("--debug-verbose");
20
+ const isVerboseMode = () => process.argv.includes("--verbose");
21
+ const isDebugVerboseMode = () => process.argv.includes("--debug-verbose");
22
+ const TERMINAL_LOG_LEVELS = /* @__PURE__ */ new Set([
23
+ "ERROR" /* ERROR */,
24
+ "WARN" /* WARN */,
25
+ "INFO" /* INFO */,
26
+ // 添加 INFO 级别,显示关键系统状态
27
+ "REMINDER" /* REMINDER */
28
+ // 系统提醒事件,用户应该看到
29
+ ]);
30
+ const DEBUG_VERBOSE_TERMINAL_LOG_LEVELS = /* @__PURE__ */ new Set([
31
+ "ERROR" /* ERROR */,
32
+ "WARN" /* WARN */,
33
+ "FLOW" /* FLOW */,
34
+ "API" /* API */,
35
+ "STATE" /* STATE */,
36
+ "INFO" /* INFO */,
37
+ "REMINDER" /* REMINDER */
38
+ // 系统提醒在详细模式下也显示
39
+ ]);
40
+ const USER_FRIENDLY_LEVELS = /* @__PURE__ */ new Set([
41
+ "SESSION_START",
42
+ "QUERY_START",
43
+ "QUERY_PROGRESS",
44
+ "QUERY_COMPLETE",
45
+ "TOOL_EXECUTION",
46
+ "ERROR_OCCURRED",
47
+ "PERFORMANCE_SUMMARY"
48
+ ]);
49
+ const STARTUP_TIMESTAMP = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
50
+ const REQUEST_START_TIME = Date.now();
51
+ const MINTO_DIR = join(homedir(), ".minto");
52
+ function getProjectDir(cwd) {
53
+ return cwd.replace(/[^a-zA-Z0-9]/g, "-");
54
+ }
55
+ const DEBUG_PATHS = {
56
+ base: () => join(MINTO_DIR, getProjectDir(process.cwd()), "debug"),
57
+ detailed: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-detailed.log`),
58
+ flow: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-flow.log`),
59
+ api: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-api.log`),
60
+ state: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-state.log`)
61
+ };
62
+ function ensureDebugDir() {
63
+ const debugDir = DEBUG_PATHS.base();
64
+ if (!existsSync(debugDir)) {
65
+ mkdirSync(debugDir, { recursive: true });
66
+ }
67
+ }
68
+ class RequestContext {
69
+ id;
70
+ startTime;
71
+ phases = /* @__PURE__ */ new Map();
72
+ constructor() {
73
+ this.id = randomUUID().slice(0, 8);
74
+ this.startTime = Date.now();
75
+ }
76
+ markPhase(phase) {
77
+ this.phases.set(phase, Date.now() - this.startTime);
78
+ }
79
+ getPhaseTime(phase) {
80
+ return this.phases.get(phase) || 0;
81
+ }
82
+ getAllPhases() {
83
+ return Object.fromEntries(this.phases);
84
+ }
85
+ }
86
+ const activeRequests = /* @__PURE__ */ new Map();
87
+ let currentRequest = null;
88
+ function writeToFile(filePath, entry) {
89
+ if (!isDebugMode()) return;
90
+ try {
91
+ ensureDebugDir();
92
+ const logLine = JSON.stringify(
93
+ {
94
+ ...entry,
95
+ sessionId: SESSION_ID,
96
+ pid: process.pid,
97
+ uptime: Date.now() - REQUEST_START_TIME
98
+ },
99
+ null,
100
+ 2
101
+ ) + ",\n";
102
+ appendFileSync(filePath, logLine);
103
+ } catch (error) {
104
+ }
105
+ }
106
+ const recentLogs = /* @__PURE__ */ new Map();
107
+ const LOG_DEDUPE_WINDOW_MS = 5e3;
108
+ function getDedupeKey(level, phase, data) {
109
+ if (phase.startsWith("CONFIG_")) {
110
+ const file = data?.file || "";
111
+ return `${level}:${phase}:${file}`;
112
+ }
113
+ return `${level}:${phase}`;
114
+ }
115
+ function shouldLogWithDedupe(level, phase, data) {
116
+ const key = getDedupeKey(level, phase, data);
117
+ const now = Date.now();
118
+ const lastLogTime = recentLogs.get(key);
119
+ if (!lastLogTime || now - lastLogTime > LOG_DEDUPE_WINDOW_MS) {
120
+ recentLogs.set(key, now);
121
+ for (const [oldKey, oldTime] of recentLogs.entries()) {
122
+ if (now - oldTime > LOG_DEDUPE_WINDOW_MS) {
123
+ recentLogs.delete(oldKey);
124
+ }
125
+ }
126
+ return true;
127
+ }
128
+ return false;
129
+ }
130
+ function formatMessages(messages) {
131
+ if (Array.isArray(messages)) {
132
+ const recentMessages = messages.slice(-5);
133
+ return recentMessages.map((msg, index) => {
134
+ const role = msg.role || "unknown";
135
+ let content = "";
136
+ if (typeof msg.content === "string") {
137
+ content = msg.content.length > 300 ? msg.content.substring(0, 300) + "..." : msg.content;
138
+ } else if (typeof msg.content === "object") {
139
+ content = "[complex_content]";
140
+ } else {
141
+ content = String(msg.content || "");
142
+ }
143
+ const totalIndex = messages.length - recentMessages.length + index;
144
+ return `[${totalIndex}] ${chalk.dim(role)}: ${content}`;
145
+ }).join("\n ");
146
+ }
147
+ if (typeof messages === "string") {
148
+ try {
149
+ const parsed = JSON.parse(messages);
150
+ if (Array.isArray(parsed)) {
151
+ return formatMessages(parsed);
152
+ }
153
+ } catch {
154
+ }
155
+ }
156
+ if (typeof messages === "string" && messages.length > 200) {
157
+ return messages.substring(0, 200) + "...";
158
+ }
159
+ return typeof messages === "string" ? messages : JSON.stringify(messages);
160
+ }
161
+ function shouldShowInTerminal(level) {
162
+ if (!isDebugMode()) return false;
163
+ if (isDebugVerboseMode()) {
164
+ return DEBUG_VERBOSE_TERMINAL_LOG_LEVELS.has(level);
165
+ }
166
+ return TERMINAL_LOG_LEVELS.has(level);
167
+ }
168
+ function logToTerminal(entry) {
169
+ if (!shouldShowInTerminal(entry.level)) return;
170
+ const { level, phase, data, requestId, elapsed } = entry;
171
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString().slice(11, 23);
172
+ let prefix = "";
173
+ let color = chalk.gray;
174
+ switch (level) {
175
+ case "FLOW" /* FLOW */:
176
+ prefix = "\u{1F504}";
177
+ color = chalk.cyan;
178
+ break;
179
+ case "API" /* API */:
180
+ prefix = "\u{1F310}";
181
+ color = chalk.yellow;
182
+ break;
183
+ case "STATE" /* STATE */:
184
+ prefix = "\u{1F4CA}";
185
+ color = chalk.blue;
186
+ break;
187
+ case "ERROR" /* ERROR */:
188
+ prefix = "\u274C";
189
+ color = chalk.red;
190
+ break;
191
+ case "WARN" /* WARN */:
192
+ prefix = "\u26A0\uFE0F";
193
+ color = chalk.yellow;
194
+ break;
195
+ case "INFO" /* INFO */:
196
+ prefix = "\u2139\uFE0F";
197
+ color = chalk.green;
198
+ break;
199
+ case "TRACE" /* TRACE */:
200
+ prefix = "\u{1F4C8}";
201
+ color = chalk.magenta;
202
+ break;
203
+ default:
204
+ prefix = "\u{1F50D}";
205
+ color = chalk.gray;
206
+ }
207
+ const reqId = requestId ? chalk.dim(`[${requestId}]`) : "";
208
+ const elapsedStr = elapsed !== void 0 ? chalk.dim(`+${elapsed}ms`) : "";
209
+ let dataStr = "";
210
+ if (typeof data === "object" && data !== null) {
211
+ if (data.messages) {
212
+ const formattedMessages = formatMessages(data.messages);
213
+ dataStr = JSON.stringify(
214
+ {
215
+ ...data,
216
+ messages: `
217
+ ${formattedMessages}`
218
+ },
219
+ null,
220
+ 2
221
+ );
222
+ } else {
223
+ dataStr = JSON.stringify(data, null, 2);
224
+ }
225
+ } else {
226
+ dataStr = typeof data === "string" ? data : JSON.stringify(data);
227
+ }
228
+ console.log(
229
+ `${color(`[${timestamp}]`)} ${prefix} ${color(phase)} ${reqId} ${dataStr} ${elapsedStr}`
230
+ );
231
+ }
232
+ function debugLog(level, phase, data, requestId) {
233
+ if (!isDebugMode()) return;
234
+ if (!shouldLogWithDedupe(level, phase, data)) {
235
+ return;
236
+ }
237
+ const entry = {
238
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
239
+ level,
240
+ phase,
241
+ data,
242
+ requestId: requestId || currentRequest?.id,
243
+ elapsed: currentRequest ? Date.now() - currentRequest.startTime : void 0
244
+ };
245
+ writeToFile(DEBUG_PATHS.detailed(), entry);
246
+ switch (level) {
247
+ case "FLOW" /* FLOW */:
248
+ writeToFile(DEBUG_PATHS.flow(), entry);
249
+ break;
250
+ case "API" /* API */:
251
+ writeToFile(DEBUG_PATHS.api(), entry);
252
+ break;
253
+ case "STATE" /* STATE */:
254
+ writeToFile(DEBUG_PATHS.state(), entry);
255
+ break;
256
+ }
257
+ logToTerminal(entry);
258
+ }
259
+ const debug = {
260
+ flow: (phase, data, requestId) => debugLog("FLOW" /* FLOW */, phase, data, requestId),
261
+ api: (phase, data, requestId) => debugLog("API" /* API */, phase, data, requestId),
262
+ state: (phase, data, requestId) => debugLog("STATE" /* STATE */, phase, data, requestId),
263
+ info: (phase, data, requestId) => debugLog("INFO" /* INFO */, phase, data, requestId),
264
+ warn: (phase, data, requestId) => debugLog("WARN" /* WARN */, phase, data, requestId),
265
+ error: (phase, data, requestId) => debugLog("ERROR" /* ERROR */, phase, data, requestId),
266
+ trace: (phase, data, requestId) => debugLog("TRACE" /* TRACE */, phase, data, requestId),
267
+ // 新增UI相关的调试函数 (只记录到文件,不显示在终端)
268
+ ui: (phase, data, requestId) => debugLog("STATE" /* STATE */, `UI_${phase}`, data, requestId)
269
+ };
270
+ function startRequest() {
271
+ const ctx = new RequestContext();
272
+ currentRequest = ctx;
273
+ activeRequests.set(ctx.id, ctx);
274
+ debug.flow("REQUEST_START", {
275
+ requestId: ctx.id,
276
+ activeRequests: activeRequests.size
277
+ });
278
+ return ctx;
279
+ }
280
+ function endRequest(ctx) {
281
+ const request = ctx || currentRequest;
282
+ if (!request) return;
283
+ debug.flow("REQUEST_END", {
284
+ requestId: request.id,
285
+ totalTime: Date.now() - request.startTime,
286
+ phases: request.getAllPhases()
287
+ });
288
+ activeRequests.delete(request.id);
289
+ if (currentRequest === request) {
290
+ currentRequest = null;
291
+ }
292
+ }
293
+ function getCurrentRequest() {
294
+ return currentRequest;
295
+ }
296
+ function markPhase(phase, data) {
297
+ if (!currentRequest) return;
298
+ currentRequest.markPhase(phase);
299
+ debug.flow(`PHASE_${phase.toUpperCase()}`, {
300
+ requestId: currentRequest.id,
301
+ elapsed: currentRequest.getPhaseTime(phase),
302
+ data
303
+ });
304
+ }
305
+ function logReminderEvent(eventType, reminderData, agentId) {
306
+ if (!isDebugMode()) return;
307
+ debug.info("REMINDER_EVENT_TRIGGERED", {
308
+ eventType,
309
+ agentId: agentId || "default",
310
+ reminderType: reminderData.type || "unknown",
311
+ reminderCategory: reminderData.category || "general",
312
+ reminderPriority: reminderData.priority || "medium",
313
+ contentLength: reminderData.content ? reminderData.content.length : 0,
314
+ timestamp: Date.now()
315
+ });
316
+ }
317
+ function logAPIError(context) {
318
+ const errorDir = join(MINTO_DIR, "logs", "error", "api");
319
+ if (!existsSync(errorDir)) {
320
+ try {
321
+ mkdirSync(errorDir, { recursive: true });
322
+ } catch (err) {
323
+ console.error("Failed to create error log directory:", err);
324
+ return;
325
+ }
326
+ }
327
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
328
+ const sanitizedModel = context.model.replace(/[^a-zA-Z0-9-_]/g, "_");
329
+ const filename = `${sanitizedModel}_${timestamp}.log`;
330
+ const filepath = join(errorDir, filename);
331
+ const fullLogContent = {
332
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
333
+ sessionId: SESSION_ID,
334
+ requestId: getCurrentRequest()?.id,
335
+ model: context.model,
336
+ provider: context.provider,
337
+ endpoint: context.endpoint,
338
+ status: context.status,
339
+ error: context.error,
340
+ request: context.request,
341
+ // 保存完整请求
342
+ response: context.response,
343
+ // 保存完整响应
344
+ environment: {
345
+ nodeVersion: process.version,
346
+ platform: process.platform,
347
+ cwd: process.cwd()
348
+ }
349
+ };
350
+ try {
351
+ appendFileSync(filepath, JSON.stringify(fullLogContent, null, 2) + "\n");
352
+ appendFileSync(filepath, "=".repeat(80) + "\n\n");
353
+ } catch (err) {
354
+ console.error("Failed to write API error log:", err);
355
+ }
356
+ if (isDebugMode()) {
357
+ debug.error("API_ERROR", {
358
+ model: context.model,
359
+ status: context.status,
360
+ error: typeof context.error === "string" ? context.error : context.error?.message || "Unknown error",
361
+ endpoint: context.endpoint,
362
+ logFile: filename
363
+ });
364
+ }
365
+ if (isVerboseMode() || isDebugVerboseMode()) {
366
+ console.log();
367
+ console.log(chalk.red("\u2501".repeat(60)));
368
+ console.log(chalk.red.bold("\u26A0\uFE0F API Error"));
369
+ console.log(chalk.red("\u2501".repeat(60)));
370
+ console.log(chalk.white(" Model: ") + chalk.yellow(context.model));
371
+ console.log(chalk.white(" Status: ") + chalk.red(context.status));
372
+ let errorMessage = "Unknown error";
373
+ if (typeof context.error === "string") {
374
+ errorMessage = context.error;
375
+ } else if (context.error?.message) {
376
+ errorMessage = context.error.message;
377
+ } else if (context.error?.error?.message) {
378
+ errorMessage = context.error.error.message;
379
+ }
380
+ console.log(chalk.white(" Error: ") + chalk.red(errorMessage));
381
+ if (context.response) {
382
+ console.log();
383
+ console.log(chalk.gray(" Response:"));
384
+ const responseStr = typeof context.response === "string" ? context.response : JSON.stringify(context.response, null, 2);
385
+ responseStr.split("\n").forEach((line) => {
386
+ console.log(chalk.gray(" " + line));
387
+ });
388
+ }
389
+ console.log();
390
+ console.log(chalk.dim(` \u{1F4C1} Full log: ${filepath}`));
391
+ console.log(chalk.red("\u2501".repeat(60)));
392
+ console.log();
393
+ }
394
+ }
395
+ function logLLMInteraction(context) {
396
+ if (!isDebugMode()) return;
397
+ const duration = context.timing.end - context.timing.start;
398
+ console.log("\n" + chalk.blue("\u{1F9E0} LLM CALL DEBUG"));
399
+ console.log(chalk.gray("\u2501".repeat(60)));
400
+ console.log(chalk.yellow("\u{1F4CA} Context Overview:"));
401
+ console.log(` Messages Count: ${context.messages.length}`);
402
+ console.log(` System Prompt Length: ${context.systemPrompt.length} chars`);
403
+ console.log(` Duration: ${duration.toFixed(0)}ms`);
404
+ if (context.usage) {
405
+ console.log(
406
+ ` Token Usage: ${context.usage.inputTokens} \u2192 ${context.usage.outputTokens}`
407
+ );
408
+ }
409
+ const apiLabel = context.apiFormat ? ` (${context.apiFormat.toUpperCase()})` : "";
410
+ console.log(chalk.cyan(`
411
+ \u{1F4AC} Real API Messages${apiLabel} (last 10):`));
412
+ const recentMessages = context.messages.slice(-10);
413
+ recentMessages.forEach((msg, index) => {
414
+ const globalIndex = context.messages.length - recentMessages.length + index;
415
+ const roleColor = msg.role === "user" ? "green" : msg.role === "assistant" ? "blue" : msg.role === "system" ? "yellow" : "gray";
416
+ let content = "";
417
+ let isReminder = false;
418
+ if (typeof msg.content === "string") {
419
+ if (msg.content.includes("<system-reminder>")) {
420
+ isReminder = true;
421
+ const reminderContent = msg.content.replace(/<\/?system-reminder>/g, "").trim();
422
+ content = `\u{1F514} ${reminderContent.length > 800 ? reminderContent.substring(0, 800) + "..." : reminderContent}`;
423
+ } else {
424
+ const maxLength = msg.role === "user" ? 1e3 : msg.role === "system" ? 1200 : 800;
425
+ content = msg.content.length > maxLength ? msg.content.substring(0, maxLength) + "..." : msg.content;
426
+ }
427
+ } else if (Array.isArray(msg.content)) {
428
+ const textBlocks = msg.content.filter(
429
+ (block) => block.type === "text"
430
+ );
431
+ const toolBlocks = msg.content.filter(
432
+ (block) => block.type === "tool_use"
433
+ );
434
+ if (textBlocks.length > 0) {
435
+ const text = textBlocks[0].text || "";
436
+ const maxLength = msg.role === "assistant" ? 1e3 : 800;
437
+ content = text.length > maxLength ? text.substring(0, maxLength) + "..." : text;
438
+ }
439
+ if (toolBlocks.length > 0) {
440
+ content += ` [+ ${toolBlocks.length} tool calls]`;
441
+ }
442
+ if (textBlocks.length === 0 && toolBlocks.length === 0) {
443
+ content = `[${msg.content.length} blocks: ${msg.content.map((b) => b.type || "unknown").join(", ")}]`;
444
+ }
445
+ } else {
446
+ content = "[complex_content]";
447
+ }
448
+ if (isReminder) {
449
+ console.log(
450
+ ` [${globalIndex}] ${chalk.magenta("\u{1F514} REMINDER")}: ${chalk.dim(content)}`
451
+ );
452
+ } else {
453
+ const roleIcon = msg.role === "user" ? "\u{1F464}" : msg.role === "assistant" ? "\u{1F916}" : msg.role === "system" ? "\u2699\uFE0F" : "\u{1F4C4}";
454
+ console.log(
455
+ ` [${globalIndex}] ${chalk[roleColor](roleIcon + " " + msg.role.toUpperCase())}: ${content}`
456
+ );
457
+ }
458
+ if (msg.role === "assistant" && Array.isArray(msg.content)) {
459
+ const toolCalls2 = msg.content.filter(
460
+ (block) => block.type === "tool_use"
461
+ );
462
+ if (toolCalls2.length > 0) {
463
+ console.log(
464
+ chalk.cyan(
465
+ ` \u{1F527} \u2192 Tool calls (${toolCalls2.length}): ${toolCalls2.map((t) => t.name).join(", ")}`
466
+ )
467
+ );
468
+ toolCalls2.forEach((tool, idx) => {
469
+ const inputStr = JSON.stringify(tool.input || {});
470
+ const maxLength = 200;
471
+ const displayInput = inputStr.length > maxLength ? inputStr.substring(0, maxLength) + "..." : inputStr;
472
+ console.log(
473
+ chalk.dim(` [${idx}] ${tool.name}: ${displayInput}`)
474
+ );
475
+ });
476
+ }
477
+ }
478
+ if (msg.tool_calls && msg.tool_calls.length > 0) {
479
+ console.log(
480
+ chalk.cyan(
481
+ ` \u{1F527} \u2192 Tool calls (${msg.tool_calls.length}): ${msg.tool_calls.map((t) => t.function.name).join(", ")}`
482
+ )
483
+ );
484
+ msg.tool_calls.forEach((tool, idx) => {
485
+ const inputStr = tool.function.arguments || "{}";
486
+ const maxLength = 200;
487
+ const displayInput = inputStr.length > maxLength ? inputStr.substring(0, maxLength) + "..." : inputStr;
488
+ console.log(
489
+ chalk.dim(` [${idx}] ${tool.function.name}: ${displayInput}`)
490
+ );
491
+ });
492
+ }
493
+ });
494
+ console.log(chalk.magenta("\n\u{1F916} LLM Response:"));
495
+ let responseContent = "";
496
+ let toolCalls = [];
497
+ if (Array.isArray(context.response.content)) {
498
+ const textBlocks = context.response.content.filter(
499
+ (block) => block.type === "text"
500
+ );
501
+ responseContent = textBlocks.length > 0 ? textBlocks[0].text || "" : "";
502
+ toolCalls = context.response.content.filter(
503
+ (block) => block.type === "tool_use"
504
+ );
505
+ } else if (typeof context.response.content === "string") {
506
+ responseContent = context.response.content;
507
+ toolCalls = context.response.tool_calls || [];
508
+ } else {
509
+ responseContent = JSON.stringify(context.response.content || "");
510
+ }
511
+ const maxResponseLength = 1e3;
512
+ const displayContent = responseContent.length > maxResponseLength ? responseContent.substring(0, maxResponseLength) + "..." : responseContent;
513
+ console.log(` Content: ${displayContent}`);
514
+ if (toolCalls.length > 0) {
515
+ const toolNames = toolCalls.map(
516
+ (t) => t.name || t.function?.name || "unknown"
517
+ );
518
+ console.log(
519
+ chalk.cyan(
520
+ ` \u{1F527} Tool Calls (${toolCalls.length}): ${toolNames.join(", ")}`
521
+ )
522
+ );
523
+ toolCalls.forEach((tool, index) => {
524
+ const toolName = tool.name || tool.function?.name || "unknown";
525
+ const toolInput = tool.input || tool.function?.arguments || "{}";
526
+ const inputStr = typeof toolInput === "string" ? toolInput : JSON.stringify(toolInput);
527
+ const maxToolInputLength = 300;
528
+ const displayInput = inputStr.length > maxToolInputLength ? inputStr.substring(0, maxToolInputLength) + "..." : inputStr;
529
+ console.log(chalk.dim(` [${index}] ${toolName}: ${displayInput}`));
530
+ });
531
+ }
532
+ console.log(
533
+ ` Stop Reason: ${context.response.stop_reason || context.response.finish_reason || "unknown"}`
534
+ );
535
+ console.log(chalk.gray("\u2501".repeat(60)));
536
+ }
537
+ function logSystemPromptConstruction(construction) {
538
+ if (!isDebugMode()) return;
539
+ console.log("\n" + chalk.yellow("\u{1F4DD} SYSTEM PROMPT CONSTRUCTION"));
540
+ console.log(` Base Prompt: ${construction.basePrompt.length} chars`);
541
+ if (construction.mintoContext) {
542
+ console.log(` + Minto Context: ${construction.mintoContext.length} chars`);
543
+ }
544
+ if (construction.reminders.length > 0) {
545
+ console.log(
546
+ ` + Dynamic Reminders: ${construction.reminders.length} items`
547
+ );
548
+ construction.reminders.forEach((reminder, index) => {
549
+ console.log(chalk.dim(` [${index}] ${reminder.substring(0, 80)}...`));
550
+ });
551
+ }
552
+ console.log(` = Final Length: ${construction.finalPrompt.length} chars`);
553
+ }
554
+ function logContextCompression(compression) {
555
+ if (!isDebugMode()) return;
556
+ console.log("\n" + chalk.red("\u{1F5DC}\uFE0F CONTEXT COMPRESSION"));
557
+ console.log(` Trigger: ${compression.trigger}`);
558
+ console.log(
559
+ ` Messages: ${compression.beforeMessages} \u2192 ${compression.afterMessages}`
560
+ );
561
+ console.log(
562
+ ` Compression Ratio: ${(compression.compressionRatio * 100).toFixed(1)}%`
563
+ );
564
+ if (compression.preservedFiles.length > 0) {
565
+ console.log(` Preserved Files: ${compression.preservedFiles.join(", ")}`);
566
+ }
567
+ }
568
+ function logUserFriendly(type, data, requestId) {
569
+ if (!isDebugMode()) return;
570
+ const timestamp = (/* @__PURE__ */ new Date()).toLocaleTimeString();
571
+ let message = "";
572
+ let color = chalk.gray;
573
+ let icon = "\u2022";
574
+ switch (type) {
575
+ case "SESSION_START":
576
+ icon = "\u{1F680}";
577
+ color = chalk.green;
578
+ message = `Session started with ${data.model || "default model"}`;
579
+ break;
580
+ case "QUERY_START":
581
+ icon = "\u{1F4AD}";
582
+ color = chalk.blue;
583
+ message = `Processing query: "${data.query?.substring(0, 50)}${data.query?.length > 50 ? "..." : ""}"`;
584
+ break;
585
+ case "QUERY_PROGRESS":
586
+ icon = "\u23F3";
587
+ color = chalk.yellow;
588
+ message = `${data.phase} (${data.elapsed}ms)`;
589
+ break;
590
+ case "QUERY_COMPLETE":
591
+ icon = "\u2705";
592
+ color = chalk.green;
593
+ message = `Query completed in ${data.duration}ms - Cost: $${data.cost} - ${data.tokens} tokens`;
594
+ break;
595
+ case "TOOL_EXECUTION":
596
+ icon = "\u{1F527}";
597
+ color = chalk.cyan;
598
+ message = `${data.toolName}: ${data.action} ${data.target ? "\u2192 " + data.target : ""}`;
599
+ break;
600
+ case "ERROR_OCCURRED":
601
+ icon = "\u274C";
602
+ color = chalk.red;
603
+ message = `${data.error} ${data.context ? "(" + data.context + ")" : ""}`;
604
+ break;
605
+ case "PERFORMANCE_SUMMARY":
606
+ icon = "\u{1F4CA}";
607
+ color = chalk.magenta;
608
+ message = `Session: ${data.queries} queries, $${data.totalCost}, ${data.avgResponseTime}ms avg`;
609
+ break;
610
+ default:
611
+ message = JSON.stringify(data);
612
+ }
613
+ const reqId = requestId ? chalk.dim(`[${requestId.slice(0, 8)}]`) : "";
614
+ console.log(`${color(`[${timestamp}]`)} ${icon} ${color(message)} ${reqId}`);
615
+ }
616
+ function initDebugLogger() {
617
+ if (!isDebugMode()) return;
618
+ debug.info("DEBUG_LOGGER_INIT", {
619
+ startupTimestamp: STARTUP_TIMESTAMP,
620
+ sessionId: SESSION_ID,
621
+ debugPaths: {
622
+ detailed: DEBUG_PATHS.detailed(),
623
+ flow: DEBUG_PATHS.flow(),
624
+ api: DEBUG_PATHS.api(),
625
+ state: DEBUG_PATHS.state()
626
+ }
627
+ });
628
+ const terminalLevels = isDebugVerboseMode() ? Array.from(DEBUG_VERBOSE_TERMINAL_LOG_LEVELS).join(", ") : Array.from(TERMINAL_LOG_LEVELS).join(", ");
629
+ console.log(
630
+ chalk.dim(`[DEBUG] Terminal output filtered to: ${terminalLevels}`)
631
+ );
632
+ console.log(
633
+ chalk.dim(`[DEBUG] Complete logs saved to: ${DEBUG_PATHS.base()}`)
634
+ );
635
+ if (!isDebugVerboseMode()) {
636
+ console.log(
637
+ chalk.dim(
638
+ `[DEBUG] Use --debug-verbose for detailed system logs (FLOW, API, STATE)`
639
+ )
640
+ );
641
+ }
642
+ }
643
+ function diagnoseError(error, context) {
644
+ const errorMessage = error instanceof Error ? error.message : String(error);
645
+ const errorStack = error instanceof Error ? error.stack : void 0;
646
+ if (errorMessage.includes("aborted") || errorMessage.includes("AbortController")) {
647
+ return {
648
+ errorType: "REQUEST_ABORTED",
649
+ category: "SYSTEM",
650
+ severity: "MEDIUM",
651
+ description: "Request was aborted, often due to user cancellation or timeout",
652
+ suggestions: [
653
+ "\u68C0\u67E5\u662F\u5426\u6309\u4E0B\u4E86 ESC \u952E\u53D6\u6D88\u8BF7\u6C42",
654
+ "\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u7A33\u5B9A",
655
+ "\u9A8C\u8BC1 AbortController \u72B6\u6001: isActive \u548C signal.aborted \u5E94\u8BE5\u4E00\u81F4",
656
+ "\u67E5\u770B\u662F\u5426\u6709\u91CD\u590D\u7684\u8BF7\u6C42\u5BFC\u81F4\u51B2\u7A81"
657
+ ],
658
+ debugSteps: [
659
+ "\u4F7F\u7528 --debug-verbose \u6A21\u5F0F\u67E5\u770B\u8BE6\u7EC6\u7684\u8BF7\u6C42\u6D41\u7A0B",
660
+ "\u68C0\u67E5 debug \u65E5\u5FD7\u4E2D\u7684 BINARY_FEEDBACK_* \u4E8B\u4EF6",
661
+ "\u9A8C\u8BC1 REQUEST_START \u548C REQUEST_END \u65E5\u5FD7\u914D\u5BF9",
662
+ "\u67E5\u770B QUERY_ABORTED \u4E8B\u4EF6\u7684\u89E6\u53D1\u539F\u56E0"
663
+ ]
664
+ };
665
+ }
666
+ if (errorMessage.includes("api-key") || errorMessage.includes("authentication") || errorMessage.includes("401")) {
667
+ return {
668
+ errorType: "API_AUTHENTICATION",
669
+ category: "API",
670
+ severity: "HIGH",
671
+ description: "API authentication failed - invalid or missing API key",
672
+ suggestions: [
673
+ "\u8FD0\u884C /login \u91CD\u65B0\u8BBE\u7F6E API \u5BC6\u94A5",
674
+ "\u68C0\u67E5 ~/.minto/ \u914D\u7F6E\u6587\u4EF6\u4E2D\u7684 API \u5BC6\u94A5",
675
+ "\u9A8C\u8BC1 API \u5BC6\u94A5\u662F\u5426\u5DF2\u8FC7\u671F\u6216\u88AB\u64A4\u9500",
676
+ "\u786E\u8BA4\u4F7F\u7528\u7684 provider \u8BBE\u7F6E\u6B63\u786E (anthropic/opendev/bigdream)"
677
+ ],
678
+ debugSteps: [
679
+ "\u68C0\u67E5 CONFIG_LOAD \u65E5\u5FD7\u4E2D\u7684 provider \u548C API \u5BC6\u94A5\u72B6\u6001",
680
+ "\u8FD0\u884C minto doctor \u68C0\u67E5\u7CFB\u7EDF\u5065\u5EB7\u72B6\u6001",
681
+ "\u67E5\u770B API_ERROR \u65E5\u5FD7\u4E86\u89E3\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F",
682
+ "\u4F7F\u7528 minto config \u547D\u4EE4\u67E5\u770B\u5F53\u524D\u914D\u7F6E"
683
+ ]
684
+ };
685
+ }
686
+ if (errorMessage.includes("ECONNREFUSED") || errorMessage.includes("ENOTFOUND") || errorMessage.includes("timeout")) {
687
+ return {
688
+ errorType: "NETWORK_CONNECTION",
689
+ category: "NETWORK",
690
+ severity: "HIGH",
691
+ description: "Network connection failed - unable to reach API endpoint",
692
+ suggestions: [
693
+ "\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u6B63\u5E38",
694
+ "\u786E\u8BA4\u9632\u706B\u5899\u6CA1\u6709\u963B\u6B62\u76F8\u5173\u7AEF\u53E3",
695
+ "\u68C0\u67E5 proxy \u8BBE\u7F6E\u662F\u5426\u6B63\u786E",
696
+ "\u5C1D\u8BD5\u5207\u6362\u5230\u4E0D\u540C\u7684\u7F51\u7EDC\u73AF\u5883",
697
+ "\u9A8C\u8BC1 baseURL \u914D\u7F6E\u662F\u5426\u6B63\u786E"
698
+ ],
699
+ debugSteps: [
700
+ "\u68C0\u67E5 API_REQUEST_START \u548C\u76F8\u5173\u7F51\u7EDC\u65E5\u5FD7",
701
+ "\u67E5\u770B LLM_REQUEST_ERROR \u4E2D\u7684\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F",
702
+ "\u4F7F\u7528 ping \u6216 curl \u6D4B\u8BD5 API \u7AEF\u70B9\u8FDE\u901A\u6027",
703
+ "\u68C0\u67E5\u4F01\u4E1A\u7F51\u7EDC\u662F\u5426\u9700\u8981\u4EE3\u7406\u8BBE\u7F6E"
704
+ ]
705
+ };
706
+ }
707
+ if (errorMessage.includes("permission") || errorMessage.includes("EACCES") || errorMessage.includes("denied")) {
708
+ return {
709
+ errorType: "PERMISSION_DENIED",
710
+ category: "PERMISSION",
711
+ severity: "MEDIUM",
712
+ description: "Permission denied - insufficient access rights",
713
+ suggestions: [
714
+ "\u68C0\u67E5\u6587\u4EF6\u548C\u76EE\u5F55\u7684\u8BFB\u5199\u6743\u9650",
715
+ "\u786E\u8BA4\u5F53\u524D\u7528\u6237\u6709\u8DB3\u591F\u7684\u7CFB\u7EDF\u6743\u9650",
716
+ "\u67E5\u770B\u662F\u5426\u9700\u8981\u7BA1\u7406\u5458\u6743\u9650\u8FD0\u884C",
717
+ "\u68C0\u67E5\u5DE5\u5177\u6743\u9650\u8BBE\u7F6E\u662F\u5426\u6B63\u786E\u914D\u7F6E"
718
+ ],
719
+ debugSteps: [
720
+ "\u67E5\u770B PERMISSION_* \u65E5\u5FD7\u4E86\u89E3\u6743\u9650\u68C0\u67E5\u8FC7\u7A0B",
721
+ "\u68C0\u67E5\u6587\u4EF6\u7CFB\u7EDF\u6743\u9650: ls -la",
722
+ "\u9A8C\u8BC1\u5DE5\u5177\u5BA1\u6279\u72B6\u6001",
723
+ "\u67E5\u770B TOOL_* \u76F8\u5173\u7684\u8C03\u8BD5\u65E5\u5FD7"
724
+ ]
725
+ };
726
+ }
727
+ if (errorMessage.includes("substring is not a function") || errorMessage.includes("content")) {
728
+ return {
729
+ errorType: "RESPONSE_FORMAT",
730
+ category: "API",
731
+ severity: "MEDIUM",
732
+ description: "LLM response format mismatch between different providers",
733
+ suggestions: [
734
+ "\u68C0\u67E5\u5F53\u524D\u4F7F\u7528\u7684 provider \u662F\u5426\u4E0E\u671F\u671B\u4E00\u81F4",
735
+ "\u9A8C\u8BC1\u54CD\u5E94\u683C\u5F0F\u5904\u7406\u903B\u8F91",
736
+ "\u786E\u8BA4\u4E0D\u540C provider \u7684\u54CD\u5E94\u683C\u5F0F\u5DEE\u5F02",
737
+ "\u68C0\u67E5\u662F\u5426\u9700\u8981\u66F4\u65B0\u54CD\u5E94\u89E3\u6790\u4EE3\u7801"
738
+ ],
739
+ debugSteps: [
740
+ "\u67E5\u770B LLM_CALL_DEBUG \u4E2D\u7684\u54CD\u5E94\u683C\u5F0F",
741
+ "\u68C0\u67E5 provider \u914D\u7F6E\u548C\u5B9E\u9645\u4F7F\u7528\u7684 API",
742
+ "\u5BF9\u6BD4 Anthropic \u548C OpenAI \u54CD\u5E94\u683C\u5F0F\u5DEE\u5F02",
743
+ "\u9A8C\u8BC1 logLLMInteraction \u51FD\u6570\u7684\u683C\u5F0F\u5904\u7406"
744
+ ]
745
+ };
746
+ }
747
+ if (errorMessage.includes("too long") || errorMessage.includes("context") || errorMessage.includes("token")) {
748
+ return {
749
+ errorType: "CONTEXT_OVERFLOW",
750
+ category: "SYSTEM",
751
+ severity: "MEDIUM",
752
+ description: "Context window exceeded - conversation too long",
753
+ suggestions: [
754
+ "\u8FD0\u884C /compact \u624B\u52A8\u538B\u7F29\u5BF9\u8BDD\u5386\u53F2",
755
+ "\u68C0\u67E5\u81EA\u52A8\u538B\u7F29\u8BBE\u7F6E\u662F\u5426\u6B63\u786E\u914D\u7F6E",
756
+ "\u51CF\u5C11\u5355\u6B21\u8F93\u5165\u7684\u5185\u5BB9\u957F\u5EA6",
757
+ "\u6E05\u7406\u4E0D\u5FC5\u8981\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F"
758
+ ],
759
+ debugSteps: [
760
+ "\u67E5\u770B AUTO_COMPACT_* \u65E5\u5FD7\u68C0\u67E5\u538B\u7F29\u89E6\u53D1",
761
+ "\u68C0\u67E5 token \u4F7F\u7528\u91CF\u548C\u9608\u503C",
762
+ "\u67E5\u770B CONTEXT_COMPRESSION \u76F8\u5173\u65E5\u5FD7",
763
+ "\u9A8C\u8BC1\u6A21\u578B\u7684\u6700\u5927 token \u9650\u5236"
764
+ ]
765
+ };
766
+ }
767
+ if (errorMessage.includes("config") || errorMessage.includes("undefined") && context?.configRelated) {
768
+ return {
769
+ errorType: "CONFIGURATION",
770
+ category: "CONFIG",
771
+ severity: "MEDIUM",
772
+ description: "Configuration error - missing or invalid settings",
773
+ suggestions: [
774
+ "\u8FD0\u884C minto config \u68C0\u67E5\u914D\u7F6E\u8BBE\u7F6E",
775
+ "\u5220\u9664\u635F\u574F\u7684\u914D\u7F6E\u6587\u4EF6\u91CD\u65B0\u521D\u59CB\u5316",
776
+ "\u68C0\u67E5 JSON \u914D\u7F6E\u6587\u4EF6\u8BED\u6CD5\u662F\u5426\u6B63\u786E",
777
+ "\u9A8C\u8BC1\u73AF\u5883\u53D8\u91CF\u8BBE\u7F6E"
778
+ ],
779
+ debugSteps: [
780
+ "\u67E5\u770B CONFIG_LOAD \u548C CONFIG_SAVE \u65E5\u5FD7",
781
+ "\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\u548C\u6743\u9650",
782
+ "\u9A8C\u8BC1 JSON \u683C\u5F0F: cat ~/.minto/config.json | jq",
783
+ "\u67E5\u770B\u914D\u7F6E\u7F13\u5B58\u76F8\u5173\u7684\u8C03\u8BD5\u4FE1\u606F"
784
+ ]
785
+ };
786
+ }
787
+ return {
788
+ errorType: "UNKNOWN",
789
+ category: "SYSTEM",
790
+ severity: "MEDIUM",
791
+ description: `Unexpected error: ${errorMessage}`,
792
+ suggestions: [
793
+ "\u91CD\u65B0\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F",
794
+ "\u68C0\u67E5\u7CFB\u7EDF\u8D44\u6E90\u662F\u5426\u5145\u8DB3",
795
+ "\u67E5\u770B\u5B8C\u6574\u7684\u9519\u8BEF\u65E5\u5FD7\u83B7\u53D6\u66F4\u591A\u4FE1\u606F",
796
+ "\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u62A5\u544A\u6B64\u9519\u8BEF"
797
+ ],
798
+ debugSteps: [
799
+ "\u4F7F\u7528 --debug-verbose \u83B7\u53D6\u8BE6\u7EC6\u65E5\u5FD7",
800
+ "\u68C0\u67E5 error.log \u4E2D\u7684\u5B8C\u6574\u9519\u8BEF\u4FE1\u606F",
801
+ "\u67E5\u770B\u7CFB\u7EDF\u8D44\u6E90\u4F7F\u7528\u60C5\u51B5",
802
+ "\u6536\u96C6\u91CD\u73B0\u6B65\u9AA4\u548C\u73AF\u5883\u4FE1\u606F"
803
+ ],
804
+ relatedLogs: errorStack ? [errorStack] : void 0
805
+ };
806
+ }
807
+ function logErrorWithDiagnosis(error, context, requestId) {
808
+ if (!isDebugMode()) return;
809
+ const diagnosis = diagnoseError(error, context);
810
+ const errorMessage = error instanceof Error ? error.message : String(error);
811
+ debug.error(
812
+ "ERROR_OCCURRED",
813
+ {
814
+ error: errorMessage,
815
+ errorType: diagnosis.errorType,
816
+ category: diagnosis.category,
817
+ severity: diagnosis.severity,
818
+ context
819
+ },
820
+ requestId
821
+ );
822
+ console.log("\n" + chalk.red("\u{1F6A8} ERROR DIAGNOSIS"));
823
+ console.log(chalk.gray("\u2501".repeat(60)));
824
+ console.log(chalk.red(`\u274C ${diagnosis.errorType}`));
825
+ console.log(
826
+ chalk.dim(
827
+ `Category: ${diagnosis.category} | Severity: ${diagnosis.severity}`
828
+ )
829
+ );
830
+ console.log(`
831
+ ${diagnosis.description}`);
832
+ console.log(chalk.yellow("\n\u{1F4A1} Recovery Suggestions:"));
833
+ diagnosis.suggestions.forEach((suggestion, index) => {
834
+ console.log(` ${index + 1}. ${suggestion}`);
835
+ });
836
+ console.log(chalk.cyan("\n\u{1F50D} Debug Steps:"));
837
+ diagnosis.debugSteps.forEach((step, index) => {
838
+ console.log(` ${index + 1}. ${step}`);
839
+ });
840
+ if (diagnosis.relatedLogs && diagnosis.relatedLogs.length > 0) {
841
+ console.log(chalk.magenta("\n\u{1F4CB} Related Information:"));
842
+ diagnosis.relatedLogs.forEach((log, index) => {
843
+ const truncatedLog = log.length > 200 ? log.substring(0, 200) + "..." : log;
844
+ console.log(chalk.dim(` ${truncatedLog}`));
845
+ });
846
+ }
847
+ const debugPath = DEBUG_PATHS.base();
848
+ console.log(chalk.gray(`
849
+ \u{1F4C1} Complete logs: ${debugPath}`));
850
+ console.log(chalk.gray("\u2501".repeat(60)));
851
+ }
852
+ function getDebugInfo() {
853
+ return {
854
+ isDebugMode: isDebugMode(),
855
+ isVerboseMode: isVerboseMode(),
856
+ isDebugVerboseMode: isDebugVerboseMode(),
857
+ startupTimestamp: STARTUP_TIMESTAMP,
858
+ sessionId: SESSION_ID,
859
+ currentRequest: currentRequest?.id,
860
+ activeRequests: Array.from(activeRequests.keys()),
861
+ terminalLogLevels: isDebugVerboseMode() ? Array.from(DEBUG_VERBOSE_TERMINAL_LOG_LEVELS) : Array.from(TERMINAL_LOG_LEVELS),
862
+ debugPaths: {
863
+ detailed: DEBUG_PATHS.detailed(),
864
+ flow: DEBUG_PATHS.flow(),
865
+ api: DEBUG_PATHS.api(),
866
+ state: DEBUG_PATHS.state()
867
+ }
868
+ };
869
+ }
870
+ export {
871
+ LogLevel,
872
+ debug,
873
+ debugLog,
874
+ diagnoseError,
875
+ endRequest,
876
+ getCurrentRequest,
877
+ getDebugInfo,
878
+ initDebugLogger,
879
+ logAPIError,
880
+ logContextCompression,
881
+ logErrorWithDiagnosis,
882
+ logLLMInteraction,
883
+ logReminderEvent,
884
+ logSystemPromptConstruction,
885
+ logUserFriendly,
886
+ markPhase,
887
+ startRequest
888
+ };
889
+ //# sourceMappingURL=debugLogger.js.map