@within-7/minto 0.3.10 → 0.4.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 (306) hide show
  1. package/dist/Tool.js.map +2 -2
  2. package/dist/commands/agents/AgentsCommand.js +2 -2
  3. package/dist/commands/agents/AgentsCommand.js.map +2 -2
  4. package/dist/commands/ctx_viz.js +1 -1
  5. package/dist/commands/effort.js +87 -0
  6. package/dist/commands/effort.js.map +7 -0
  7. package/dist/commands/export.js +19 -9
  8. package/dist/commands/export.js.map +2 -2
  9. package/dist/commands/ide.js +18 -0
  10. package/dist/commands/ide.js.map +7 -0
  11. package/dist/commands/mcp-interactive.js +14 -8
  12. package/dist/commands/mcp-interactive.js.map +2 -2
  13. package/dist/commands/memory.js +168 -0
  14. package/dist/commands/memory.js.map +7 -0
  15. package/dist/commands/model.js +45 -2
  16. package/dist/commands/model.js.map +2 -2
  17. package/dist/commands/outputStyle.js +64 -0
  18. package/dist/commands/outputStyle.js.map +7 -0
  19. package/dist/commands/plugin/utils.js +33 -1
  20. package/dist/commands/plugin/utils.js.map +2 -2
  21. package/dist/commands/plugin.js +10 -1
  22. package/dist/commands/plugin.js.map +2 -2
  23. package/dist/commands/refreshCommands.js +2 -0
  24. package/dist/commands/refreshCommands.js.map +2 -2
  25. package/dist/commands/review.js +51 -0
  26. package/dist/commands/review.js.map +7 -0
  27. package/dist/commands/terminalSetup.js +6 -0
  28. package/dist/commands/terminalSetup.js.map +2 -2
  29. package/dist/commands/undo.js +8 -0
  30. package/dist/commands/undo.js.map +2 -2
  31. package/dist/commands/vim.js +22 -0
  32. package/dist/commands/vim.js.map +7 -0
  33. package/dist/commands.js +12 -0
  34. package/dist/commands.js.map +2 -2
  35. package/dist/components/HighlightedCode.js +1 -0
  36. package/dist/components/HighlightedCode.js.map +2 -2
  37. package/dist/components/ModelSelector/ModelSelector.js +250 -143
  38. package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
  39. package/dist/components/PromptInput.js +21 -6
  40. package/dist/components/PromptInput.js.map +2 -2
  41. package/dist/components/PulseLabel.js +44 -0
  42. package/dist/components/PulseLabel.js.map +7 -0
  43. package/dist/components/RequestStatusIndicator.js +1 -1
  44. package/dist/components/RequestStatusIndicator.js.map +1 -1
  45. package/dist/components/Spinner.js +12 -42
  46. package/dist/components/Spinner.js.map +3 -3
  47. package/dist/components/StartupStatus.js +57 -0
  48. package/dist/components/StartupStatus.js.map +7 -0
  49. package/dist/components/SubagentBlock.js +43 -6
  50. package/dist/components/SubagentBlock.js.map +2 -2
  51. package/dist/components/TabbedListView/TabBar.js +13 -8
  52. package/dist/components/TabbedListView/TabBar.js.map +2 -2
  53. package/dist/components/TabbedListView/TabbedListView.js +1 -1
  54. package/dist/components/TabbedListView/TabbedListView.js.map +2 -2
  55. package/dist/components/TodoPanel.js +1 -1
  56. package/dist/components/TodoPanel.js.map +1 -1
  57. package/dist/components/ToolUseLoader.js +5 -0
  58. package/dist/components/ToolUseLoader.js.map +2 -2
  59. package/dist/components/TrustDialog.js +0 -2
  60. package/dist/components/TrustDialog.js.map +2 -2
  61. package/dist/components/messages/TaskInModuleView.js +1 -1
  62. package/dist/components/messages/TaskInModuleView.js.map +2 -2
  63. package/dist/components/messages/TaskToolMessage.js +1 -1
  64. package/dist/components/messages/TaskToolMessage.js.map +2 -2
  65. package/dist/components/messages/UserPromptMessage.js +6 -1
  66. package/dist/components/messages/UserPromptMessage.js.map +2 -2
  67. package/dist/constants/modelCapabilities.js +103 -18
  68. package/dist/constants/modelCapabilities.js.map +2 -2
  69. package/dist/constants/product.js +2 -0
  70. package/dist/constants/product.js.map +2 -2
  71. package/dist/constants/prompts/agentPrompt.js +30 -0
  72. package/dist/constants/prompts/agentPrompt.js.map +7 -0
  73. package/dist/constants/prompts/codeConventions.js +27 -0
  74. package/dist/constants/prompts/codeConventions.js.map +7 -0
  75. package/dist/constants/prompts/doingTasks.js +15 -0
  76. package/dist/constants/prompts/doingTasks.js.map +7 -0
  77. package/dist/constants/prompts/envInfo.js +17 -0
  78. package/dist/constants/prompts/envInfo.js.map +7 -0
  79. package/dist/constants/prompts/executingWithCare.js +17 -0
  80. package/dist/constants/prompts/executingWithCare.js.map +7 -0
  81. package/dist/constants/prompts/identity.js +10 -0
  82. package/dist/constants/prompts/identity.js.map +7 -0
  83. package/dist/constants/prompts/index.js +78 -0
  84. package/dist/constants/prompts/index.js.map +7 -0
  85. package/dist/constants/prompts/taskManagement.js +60 -0
  86. package/dist/constants/prompts/taskManagement.js.map +7 -0
  87. package/dist/constants/prompts/toneAndStyle.js +62 -0
  88. package/dist/constants/prompts/toneAndStyle.js.map +7 -0
  89. package/dist/constants/prompts/toolUsagePolicy.js +38 -0
  90. package/dist/constants/prompts/toolUsagePolicy.js.map +7 -0
  91. package/dist/constants/prompts.js +5 -176
  92. package/dist/constants/prompts.js.map +2 -2
  93. package/dist/constants/providerRegistry.js +235 -0
  94. package/dist/constants/providerRegistry.js.map +7 -0
  95. package/dist/constants/providers.js +35 -0
  96. package/dist/constants/providers.js.map +7 -0
  97. package/dist/context/PermissionContext.js +0 -1
  98. package/dist/context/PermissionContext.js.map +2 -2
  99. package/dist/context.js +87 -31
  100. package/dist/context.js.map +2 -2
  101. package/dist/core/backupHook.js +2 -2
  102. package/dist/core/backupHook.js.map +2 -2
  103. package/dist/core/config/defaults.js +4 -1
  104. package/dist/core/config/defaults.js.map +2 -2
  105. package/dist/core/config/schema.js +7 -1
  106. package/dist/core/config/schema.js.map +2 -2
  107. package/dist/core/costTracker.js +18 -0
  108. package/dist/core/costTracker.js.map +2 -2
  109. package/dist/core/index.js +0 -1
  110. package/dist/core/index.js.map +2 -2
  111. package/dist/core/tokenStatsManager.js +22 -4
  112. package/dist/core/tokenStatsManager.js.map +2 -2
  113. package/dist/entrypoints/cli.js +65 -84
  114. package/dist/entrypoints/cli.js.map +2 -2
  115. package/dist/hooks/useAgentTokenStats.js +1 -1
  116. package/dist/hooks/useAgentTokenStats.js.map +2 -2
  117. package/dist/hooks/useAgentTranscripts.js +2 -1
  118. package/dist/hooks/useAgentTranscripts.js.map +2 -2
  119. package/dist/hooks/useBackgroundShells.js +29 -0
  120. package/dist/hooks/useBackgroundShells.js.map +7 -0
  121. package/dist/hooks/useCanUseTool.js +1 -1
  122. package/dist/hooks/useCanUseTool.js.map +2 -2
  123. package/dist/hooks/useDeferredLoading.js +64 -0
  124. package/dist/hooks/useDeferredLoading.js.map +7 -0
  125. package/dist/hooks/useHookStatus.js +1 -1
  126. package/dist/hooks/useHookStatus.js.map +2 -2
  127. package/dist/hooks/useSessionTracking.js +55 -0
  128. package/dist/hooks/useSessionTracking.js.map +7 -0
  129. package/dist/hooks/useTerminalSize.js +21 -0
  130. package/dist/hooks/useTerminalSize.js.map +2 -2
  131. package/dist/hooks/useTextInput.js +1 -0
  132. package/dist/hooks/useTextInput.js.map +2 -2
  133. package/dist/hooks/useUnifiedCompletion.js +3 -2
  134. package/dist/hooks/useUnifiedCompletion.js.map +2 -2
  135. package/dist/i18n/locales/en.js +8 -9
  136. package/dist/i18n/locales/en.js.map +2 -2
  137. package/dist/i18n/locales/zh-CN.js +8 -9
  138. package/dist/i18n/locales/zh-CN.js.map +2 -2
  139. package/dist/i18n/types.js.map +1 -1
  140. package/dist/messages.js +41 -17
  141. package/dist/messages.js.map +2 -2
  142. package/dist/permissions.js +94 -1
  143. package/dist/permissions.js.map +2 -2
  144. package/dist/query.js +27 -19
  145. package/dist/query.js.map +2 -2
  146. package/dist/screens/REPL.js +83 -74
  147. package/dist/screens/REPL.js.map +2 -2
  148. package/dist/services/adapters/responsesAPI.js +6 -0
  149. package/dist/services/adapters/responsesAPI.js.map +2 -2
  150. package/dist/services/agentTeams/index.js +35 -0
  151. package/dist/services/agentTeams/index.js.map +7 -0
  152. package/dist/services/agentTeams/mailbox.js +114 -0
  153. package/dist/services/agentTeams/mailbox.js.map +7 -0
  154. package/dist/services/agentTeams/teamManager.js +149 -0
  155. package/dist/services/agentTeams/teamManager.js.map +7 -0
  156. package/dist/services/agentTeams/teamTaskStore.js +114 -0
  157. package/dist/services/agentTeams/teamTaskStore.js.map +7 -0
  158. package/dist/services/agentTeams/teammateSpawner.js +80 -0
  159. package/dist/services/agentTeams/teammateSpawner.js.map +7 -0
  160. package/dist/services/checkpointManager.js +16 -3
  161. package/dist/services/checkpointManager.js.map +2 -2
  162. package/dist/services/claude.js +19 -1728
  163. package/dist/services/claude.js.map +3 -3
  164. package/dist/services/gpt5ConnectionTest.js +4 -2
  165. package/dist/services/gpt5ConnectionTest.js.map +2 -2
  166. package/dist/services/hookExecutor.js +411 -127
  167. package/dist/services/hookExecutor.js.map +2 -2
  168. package/dist/services/llm/anthropicProvider.js +807 -0
  169. package/dist/services/llm/anthropicProvider.js.map +7 -0
  170. package/dist/services/llm/dispatch.js +218 -0
  171. package/dist/services/llm/dispatch.js.map +7 -0
  172. package/dist/services/llm/index.js +44 -0
  173. package/dist/services/llm/index.js.map +7 -0
  174. package/dist/services/llm/mintoContext.js +69 -0
  175. package/dist/services/llm/mintoContext.js.map +7 -0
  176. package/dist/services/llm/openaiProvider.js +622 -0
  177. package/dist/services/llm/openaiProvider.js.map +7 -0
  178. package/dist/services/llm/types.js +157 -0
  179. package/dist/services/llm/types.js.map +7 -0
  180. package/dist/services/mcpClient.js +183 -33
  181. package/dist/services/mcpClient.js.map +2 -2
  182. package/dist/services/notifier.js +14 -0
  183. package/dist/services/notifier.js.map +2 -2
  184. package/dist/services/oauth.js +4 -2
  185. package/dist/services/oauth.js.map +2 -2
  186. package/dist/services/openai.js +66 -56
  187. package/dist/services/openai.js.map +3 -3
  188. package/dist/services/outputStyles.js +102 -21
  189. package/dist/services/outputStyles.js.map +2 -2
  190. package/dist/services/plugins/skillMarketplace.js +4 -1
  191. package/dist/services/plugins/skillMarketplace.js.map +2 -2
  192. package/dist/services/sentry.js +1 -1
  193. package/dist/services/sentry.js.map +2 -2
  194. package/dist/services/sessionMemory.js +16 -3
  195. package/dist/services/sessionMemory.js.map +2 -2
  196. package/dist/services/systemReminder.js +350 -3
  197. package/dist/services/systemReminder.js.map +2 -2
  198. package/dist/services/taskStore.js +19 -0
  199. package/dist/services/taskStore.js.map +2 -2
  200. package/dist/tools/ArchitectTool/ArchitectTool.js.map +1 -1
  201. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +1 -1
  202. package/dist/tools/BashOutputTool/BashOutputTool.js.map +1 -1
  203. package/dist/tools/BashTool/BashTool.js +28 -0
  204. package/dist/tools/BashTool/BashTool.js.map +2 -2
  205. package/dist/tools/FileEditTool/FileEditTool.js +1 -1
  206. package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
  207. package/dist/tools/FileReadTool/FileReadTool.js +14 -0
  208. package/dist/tools/FileReadTool/FileReadTool.js.map +2 -2
  209. package/dist/tools/FileWriteTool/FileWriteTool.js +3 -1
  210. package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
  211. package/dist/tools/GlobTool/GlobTool.js.map +1 -1
  212. package/dist/tools/GrepTool/GrepTool.js.map +1 -1
  213. package/dist/tools/KillShellTool/KillShellTool.js.map +1 -1
  214. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +2 -2
  215. package/dist/tools/LspTool/LspTool.js +11 -2
  216. package/dist/tools/LspTool/LspTool.js.map +2 -2
  217. package/dist/tools/MCPTool/MCPTool.js.map +1 -1
  218. package/dist/tools/MemoryReadTool/MemoryReadTool.js +2 -1
  219. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +2 -2
  220. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +2 -1
  221. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +2 -2
  222. package/dist/tools/MultiEditTool/MultiEditTool.js.map +1 -1
  223. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +1 -1
  224. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +1 -1
  225. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +8 -2
  226. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +2 -2
  227. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +2 -0
  228. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +2 -2
  229. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +1 -1
  230. package/dist/tools/SlashCommandTool/SlashCommandTool.js +174 -18
  231. package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +3 -3
  232. package/dist/tools/TaskCreateTool/TaskCreateTool.js.map +1 -1
  233. package/dist/tools/TaskGetTool/TaskGetTool.js.map +1 -1
  234. package/dist/tools/TaskListTool/TaskListTool.js.map +1 -1
  235. package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +1 -1
  236. package/dist/tools/TaskStopTool/TaskStopTool.js.map +1 -1
  237. package/dist/tools/TaskTool/TaskTool.js +75 -5
  238. package/dist/tools/TaskTool/TaskTool.js.map +2 -2
  239. package/dist/tools/TaskTool/prompt.js +12 -6
  240. package/dist/tools/TaskTool/prompt.js.map +2 -2
  241. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +1 -1
  242. package/dist/tools/ThinkTool/ThinkTool.js.map +1 -1
  243. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +1 -1
  244. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +1 -1
  245. package/dist/tools/WebSearchTool/WebSearchTool.js.map +1 -1
  246. package/dist/tools/WebSearchTool/searchProviders.js +2 -1
  247. package/dist/tools/WebSearchTool/searchProviders.js.map +2 -2
  248. package/dist/tools/lsTool/lsTool.js.map +2 -2
  249. package/dist/tools/lsTool/prompt.js.map +1 -1
  250. package/dist/tools.js +14 -3
  251. package/dist/tools.js.map +2 -2
  252. package/dist/types/PermissionMode.js +21 -1
  253. package/dist/types/PermissionMode.js.map +2 -2
  254. package/dist/types/agentTeams.js +1 -0
  255. package/dist/types/agentTeams.js.map +7 -0
  256. package/dist/types/hooks.js +8 -2
  257. package/dist/types/hooks.js.map +2 -2
  258. package/dist/types/plugin.js +1 -1
  259. package/dist/types/plugin.js.map +2 -2
  260. package/dist/utils/agentLoader.js +25 -3
  261. package/dist/utils/agentLoader.js.map +2 -2
  262. package/dist/utils/animationManager.js +1 -1
  263. package/dist/utils/animationManager.js.map +2 -2
  264. package/dist/utils/ask.js +1 -1
  265. package/dist/utils/async.js +5 -1
  266. package/dist/utils/async.js.map +2 -2
  267. package/dist/utils/autoCompactCore.js +60 -0
  268. package/dist/utils/autoCompactCore.js.map +2 -2
  269. package/dist/utils/config.js +26 -128
  270. package/dist/utils/config.js.map +2 -2
  271. package/dist/utils/configSchema.js +227 -0
  272. package/dist/utils/configSchema.js.map +7 -0
  273. package/dist/utils/debugLogger.js.map +2 -2
  274. package/dist/utils/env.js +4 -3
  275. package/dist/utils/env.js.map +2 -2
  276. package/dist/utils/envConfig.js +34 -0
  277. package/dist/utils/envConfig.js.map +3 -3
  278. package/dist/utils/gpt5.js +146 -0
  279. package/dist/utils/gpt5.js.map +7 -0
  280. package/dist/utils/hookManager.js +374 -140
  281. package/dist/utils/hookManager.js.map +2 -2
  282. package/dist/utils/markdown.js +47 -0
  283. package/dist/utils/markdown.js.map +2 -2
  284. package/dist/utils/memoizeWithTTL.js +25 -0
  285. package/dist/utils/memoizeWithTTL.js.map +7 -0
  286. package/dist/utils/model.js +34 -9
  287. package/dist/utils/model.js.map +2 -2
  288. package/dist/utils/pluginInstaller.js +34 -5
  289. package/dist/utils/pluginInstaller.js.map +2 -2
  290. package/dist/utils/pluginLoader.js +201 -32
  291. package/dist/utils/pluginLoader.js.map +2 -2
  292. package/dist/utils/safeFetch.js +45 -0
  293. package/dist/utils/safeFetch.js.map +7 -0
  294. package/dist/utils/skillLoader.js +59 -6
  295. package/dist/utils/skillLoader.js.map +2 -2
  296. package/dist/utils/streamingState.js +52 -0
  297. package/dist/utils/streamingState.js.map +7 -0
  298. package/dist/utils/style.js +6 -3
  299. package/dist/utils/style.js.map +2 -2
  300. package/dist/utils/teamConfig.js +9 -3
  301. package/dist/utils/teamConfig.js.map +2 -2
  302. package/dist/utils/toolRiskClassification.js +0 -6
  303. package/dist/utils/toolRiskClassification.js.map +2 -2
  304. package/dist/version.js +2 -2
  305. package/dist/version.js.map +1 -1
  306. package/package.json +7 -6
package/dist/Tool.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Tool.ts"],
4
- "sourcesContent": ["import { z } from 'zod'\nimport * as React from 'react'\nimport type { UserQuestion, UserAnswer } from './types/askUserQuestion'\nimport type {\n ToolUseOptions,\n ResponseState,\n ValidationResult as CoreValidationResult,\n} from './types/core'\n\n/**\n * Core Tool interface for Minto's extensible tool system\n * Provides standardized contract for all tool implementations\n *\n * IMPORTANT: Tool descriptions can be either:\n * - A string (synchronous, preferred for adapters)\n * - An async function (for dynamic descriptions)\n * - An async function that accepts input (for context-aware descriptions)\n *\n * Use getToolDescription() helper for safe synchronous access.\n */\n\nexport type SetToolJSXFn = (\n jsx: {\n jsx: React.ReactNode | null\n shouldHidePromptInput: boolean\n } | null,\n) => void\n\n/**\n * Function type for asking the user questions\n */\nexport type AskUserFn = (questions: UserQuestion[]) => Promise<UserAnswer[]>\n\nexport interface ToolUseContext {\n messageId: string | undefined\n agentId?: string\n /** The tool_use ID from the API (for tracking concurrent executions) */\n toolUseId?: string\n safeMode?: boolean\n abortController: AbortController\n readFileTimestamps: { [filePath: string]: number }\n options?: ToolUseOptions\n responseState?: ResponseState\n}\n\nexport interface ExtendedToolUseContext extends ToolUseContext {\n setToolJSX: SetToolJSXFn\n askUser?: AskUserFn\n}\n\n// Re-export for backward compatibility\nexport type ValidationResult = CoreValidationResult\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Tool<\n TInput extends z.ZodObject<any> = z.ZodObject<any>,\n TOutput = any,\n> {\n name: string\n /**\n * Tool description - can be:\n * - A string (synchronous, best for adapters)\n * - An async function returning string (for dynamic descriptions)\n * - An async function accepting input (for context-aware descriptions)\n *\n * Use getToolDescription() for safe synchronous access in adapters.\n */\n description?: string | ((input?: z.infer<TInput>) => Promise<string>)\n /**\n * Cached description for synchronous access.\n * Populated by cacheToolDescriptions() at startup.\n */\n cachedDescription?: string\n inputSchema: TInput\n inputJSONSchema?: Record<string, unknown>\n prompt: (options?: { safeMode?: boolean }) => Promise<string>\n /**\n * User-facing name for display. Can optionally accept input for context.\n */\n userFacingName?: (input?: z.infer<TInput>) => string\n isEnabled: () => Promise<boolean>\n /**\n * Whether this tool only reads data (no side effects).\n * Can optionally accept input to determine based on parameters.\n */\n isReadOnly: (input?: z.infer<TInput>) => boolean\n /**\n * Whether this tool is safe to run concurrently with other tools.\n * Can optionally accept input to determine based on parameters.\n */\n isConcurrencySafe: (input?: z.infer<TInput>) => boolean\n needsPermissions: (input?: z.infer<TInput>) => boolean\n /**\n * Whether this tool requires user interaction (e.g., confirmation dialogs).\n */\n requiresUserInteraction?: (input?: z.infer<TInput>) => boolean\n validateInput?: (\n input: z.infer<TInput>,\n context?: ToolUseContext,\n ) => Promise<ValidationResult>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderResultForAssistant: (output: TOutput) => string | any[]\n renderToolUseMessage: (\n input: z.infer<TInput>,\n options: { verbose: boolean },\n ) => string | React.ReactElement | null\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderToolUseRejectedMessage?: (...args: any[]) => React.ReactElement | null\n /**\n * Render the tool result for display.\n * @param output - The tool output\n * @param options - Rendering options including verbose mode\n */\n renderToolResultMessage?: (\n output: TOutput,\n options?: { verbose: boolean },\n ) => React.ReactNode\n call: (\n input: z.infer<TInput>,\n context: ToolUseContext,\n ) => AsyncGenerator<\n | {\n type: 'result'\n data: TOutput\n resultForAssistant?: string | any[]\n /**\n * New messages to add to the conversation\n */\n newMessages?: unknown[]\n /**\n * Context modifier for modifying context during execution\n */\n contextModifier?: {\n modifyContext: (ctx: ToolUseContext) => ToolUseContext\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | {\n type: 'progress'\n content: any\n normalizedMessages?: any[]\n tools?: any[]\n },\n void,\n unknown\n >\n}\n\n/**\n * Get tool description synchronously.\n * Returns cached description if available, or falls back to string description,\n * or a default value if description is async and not cached.\n *\n * @param tool - The tool to get description from\n * @returns The tool description string\n */\nexport function getToolDescription(tool: Tool): string {\n // First check cached description\n if (tool.cachedDescription) {\n return tool.cachedDescription\n }\n\n // If description is a string, return it directly\n if (typeof tool.description === 'string') {\n return tool.description\n }\n\n // Fallback for async descriptions that haven't been cached\n return `Tool: ${tool.name}`\n}\n\n/**\n * Get tool description asynchronously.\n * Always returns the actual description, resolving async functions if needed.\n *\n * @param tool - The tool to get description from\n * @param input - Optional input for context-aware descriptions\n * @returns Promise resolving to the tool description string\n */\nexport async function getToolDescriptionAsync(\n tool: Tool,\n input?: unknown,\n): Promise<string> {\n if (typeof tool.description === 'string') {\n return tool.description\n }\n\n if (typeof tool.description === 'function') {\n return await tool.description(input)\n }\n\n return `Tool: ${tool.name}`\n}\n\n/**\n * Cache descriptions for all tools.\n * Should be called at startup to ensure synchronous access works.\n *\n * @param tools - Array of tools to cache descriptions for\n */\nexport async function cacheToolDescriptions(tools: Tool[]): Promise<void> {\n await Promise.all(\n tools.map(async tool => {\n if (typeof tool.description === 'function' && !tool.cachedDescription) {\n try {\n tool.cachedDescription = await tool.description()\n } catch (error) {\n // Fallback on error\n tool.cachedDescription = `Tool: ${tool.name}`\n }\n } else if (\n typeof tool.description === 'string' &&\n !tool.cachedDescription\n ) {\n tool.cachedDescription = tool.description\n }\n }),\n )\n}\n"],
5
- "mappings": "AA4JO,SAAS,mBAAmB,MAAoB;AAErD,MAAI,KAAK,mBAAmB;AAC1B,WAAO,KAAK;AAAA,EACd;AAGA,MAAI,OAAO,KAAK,gBAAgB,UAAU;AACxC,WAAO,KAAK;AAAA,EACd;AAGA,SAAO,SAAS,KAAK,IAAI;AAC3B;AAUA,eAAsB,wBACpB,MACA,OACiB;AACjB,MAAI,OAAO,KAAK,gBAAgB,UAAU;AACxC,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,OAAO,KAAK,gBAAgB,YAAY;AAC1C,WAAO,MAAM,KAAK,YAAY,KAAK;AAAA,EACrC;AAEA,SAAO,SAAS,KAAK,IAAI;AAC3B;AAQA,eAAsB,sBAAsB,OAA8B;AACxE,QAAM,QAAQ;AAAA,IACZ,MAAM,IAAI,OAAM,SAAQ;AACtB,UAAI,OAAO,KAAK,gBAAgB,cAAc,CAAC,KAAK,mBAAmB;AACrE,YAAI;AACF,eAAK,oBAAoB,MAAM,KAAK,YAAY;AAAA,QAClD,SAAS,OAAO;AAEd,eAAK,oBAAoB,SAAS,KAAK,IAAI;AAAA,QAC7C;AAAA,MACF,WACE,OAAO,KAAK,gBAAgB,YAC5B,CAAC,KAAK,mBACN;AACA,aAAK,oBAAoB,KAAK;AAAA,MAChC;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
4
+ "sourcesContent": ["import { z } from 'zod'\nimport * as React from 'react'\nimport type { UserQuestion, UserAnswer } from './types/askUserQuestion'\nimport type {\n ToolUseOptions,\n ResponseState,\n ValidationResult as CoreValidationResult,\n} from './types/core'\n\n/**\n * Core Tool interface for Minto's extensible tool system\n * Provides standardized contract for all tool implementations\n *\n * IMPORTANT: Tool descriptions can be either:\n * - A string (synchronous, preferred for adapters)\n * - An async function (for dynamic descriptions)\n * - An async function that accepts input (for context-aware descriptions)\n *\n * Use getToolDescription() helper for safe synchronous access.\n */\n\nexport type SetToolJSXFn = (\n jsx: {\n jsx: React.ReactNode | null\n shouldHidePromptInput: boolean\n } | null,\n) => void\n\n/**\n * Function type for asking the user questions\n */\nexport type AskUserFn = (questions: UserQuestion[]) => Promise<UserAnswer[]>\n\nexport interface ToolUseContext {\n messageId: string | undefined\n agentId?: string\n /** The tool_use ID from the API (for tracking concurrent executions) */\n toolUseId?: string\n safeMode?: boolean\n abortController: AbortController\n readFileTimestamps: { [filePath: string]: number }\n options?: ToolUseOptions\n responseState?: ResponseState\n}\n\nexport interface ExtendedToolUseContext extends ToolUseContext {\n setToolJSX: SetToolJSXFn\n askUser?: AskUserFn\n}\n\n// Re-export for backward compatibility\nexport type ValidationResult = CoreValidationResult\n\n/**\n * Tool interface \u2014 non-generic to avoid variance issues with tool collections.\n *\n * Individual tool implementations use `satisfies Tool` for type checking\n * at the definition site, with their own schema-inferred types internally.\n * The non-generic interface allows tools to be collected in Tool[] arrays\n * without requiring `as unknown as Tool` casts.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any -- Intentional: non-generic interface uses `any`\n for tool-specific input/output types. Individual tools use concrete types via `satisfies Tool`. */\nexport interface Tool {\n name: string\n /**\n * Tool description - can be:\n * - A string (synchronous, best for adapters)\n * - An async function returning string (for dynamic descriptions)\n * - An async function accepting input (for context-aware descriptions)\n *\n * Use getToolDescription() for safe synchronous access in adapters.\n */\n description?: string | ((input?: any) => Promise<string>)\n /**\n * Cached description for synchronous access.\n * Populated by cacheToolDescriptions() at startup.\n */\n cachedDescription?: string\n inputSchema: z.ZodObject<any>\n inputJSONSchema?: Record<string, unknown>\n prompt: (options?: { safeMode?: boolean }) => Promise<string>\n /** User-facing name for display. Can optionally accept input for context. */\n userFacingName?: (input?: any) => string\n isEnabled: () => Promise<boolean>\n /** Whether this tool only reads data (no side effects). */\n isReadOnly: (input?: any) => boolean\n /** Whether this tool is safe to run concurrently with other tools. */\n isConcurrencySafe: (input?: any) => boolean\n needsPermissions: (input?: any) => boolean\n /** Whether this tool requires user interaction (e.g., confirmation dialogs). */\n requiresUserInteraction?: (input?: any) => boolean\n validateInput?: (\n input: any,\n context?: ToolUseContext,\n ) => Promise<ValidationResult>\n renderResultForAssistant: (output: any) => string | any[]\n renderToolUseMessage: (\n input: any,\n options: { verbose: boolean },\n ) => string | React.ReactElement | null\n renderToolUseRejectedMessage?: (...args: any[]) => React.ReactElement | null\n /** Render the tool result for display. */\n renderToolResultMessage?: (\n output: any,\n options?: { verbose: boolean },\n ) => React.ReactNode\n call: (\n input: any,\n context: ToolUseContext,\n ) => AsyncGenerator<\n | {\n type: 'result'\n data: any\n resultForAssistant?: string | any[]\n newMessages?: unknown[]\n contextModifier?: {\n modifyContext: (ctx: ToolUseContext) => ToolUseContext\n }\n }\n | {\n type: 'progress'\n content: any\n normalizedMessages?: any[]\n tools?: any[]\n },\n void,\n unknown\n >\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Get tool description synchronously.\n * Returns cached description if available, or falls back to string description,\n * or a default value if description is async and not cached.\n *\n * @param tool - The tool to get description from\n * @returns The tool description string\n */\nexport function getToolDescription(tool: Tool): string {\n // First check cached description\n if (tool.cachedDescription) {\n return tool.cachedDescription\n }\n\n // If description is a string, return it directly\n if (typeof tool.description === 'string') {\n return tool.description\n }\n\n // Fallback for async descriptions that haven't been cached\n return `Tool: ${tool.name}`\n}\n\n/**\n * Get tool description asynchronously.\n * Always returns the actual description, resolving async functions if needed.\n *\n * @param tool - The tool to get description from\n * @param input - Optional input for context-aware descriptions\n * @returns Promise resolving to the tool description string\n */\nexport async function getToolDescriptionAsync(\n tool: Tool,\n input?: unknown,\n): Promise<string> {\n if (typeof tool.description === 'string') {\n return tool.description\n }\n\n if (typeof tool.description === 'function') {\n return await tool.description(input)\n }\n\n return `Tool: ${tool.name}`\n}\n\n/**\n * Cache descriptions for all tools.\n * Should be called at startup to ensure synchronous access works.\n *\n * @param tools - Array of tools to cache descriptions for\n */\nexport async function cacheToolDescriptions(tools: Tool[]): Promise<void> {\n await Promise.all(\n tools.map(async tool => {\n if (typeof tool.description === 'function' && !tool.cachedDescription) {\n try {\n tool.cachedDescription = await tool.description()\n } catch (error) {\n // Fallback on error\n tool.cachedDescription = `Tool: ${tool.name}`\n }\n } else if (\n typeof tool.description === 'string' &&\n !tool.cachedDescription\n ) {\n tool.cachedDescription = tool.description\n }\n }),\n )\n}\n"],
5
+ "mappings": "AA4IO,SAAS,mBAAmB,MAAoB;AAErD,MAAI,KAAK,mBAAmB;AAC1B,WAAO,KAAK;AAAA,EACd;AAGA,MAAI,OAAO,KAAK,gBAAgB,UAAU;AACxC,WAAO,KAAK;AAAA,EACd;AAGA,SAAO,SAAS,KAAK,IAAI;AAC3B;AAUA,eAAsB,wBACpB,MACA,OACiB;AACjB,MAAI,OAAO,KAAK,gBAAgB,UAAU;AACxC,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,OAAO,KAAK,gBAAgB,YAAY;AAC1C,WAAO,MAAM,KAAK,YAAY,KAAK;AAAA,EACrC;AAEA,SAAO,SAAS,KAAK,IAAI;AAC3B;AAQA,eAAsB,sBAAsB,OAA8B;AACxE,QAAM,QAAQ;AAAA,IACZ,MAAM,IAAI,OAAM,SAAQ;AACtB,UAAI,OAAO,KAAK,gBAAgB,cAAc,CAAC,KAAK,mBAAmB;AACrE,YAAI;AACF,eAAK,oBAAoB,MAAM,KAAK,YAAY;AAAA,QAClD,SAAS,OAAO;AAEd,eAAK,oBAAoB,SAAS,KAAK,IAAI;AAAA,QAC7C;AAAA,MACF,WACE,OAAO,KAAK,gBAAgB,YAC5B,CAAC,KAAK,mBACN;AACA,aAAK,oBAAoB,KAAK;AAAA,MAChC;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
6
6
  "names": []
7
7
  }
@@ -254,7 +254,7 @@ function MultilineTextInput({
254
254
  setInternalValue(value);
255
255
  }, [value]);
256
256
  useEffect(() => {
257
- if (!focus) return;
257
+ if (!focus) return void 0;
258
258
  const timer = setInterval(() => {
259
259
  setCursorBlink((prev) => !prev);
260
260
  }, 500);
@@ -429,7 +429,7 @@ function AgentsUI({ onExit }) {
429
429
  try {
430
430
  const result = await getActiveAgents();
431
431
  if (abortController.signal.aborted) {
432
- return;
432
+ return void 0;
433
433
  }
434
434
  setAgents(result);
435
435
  const availableTools = [];