@mseep/claudian 2.0.25

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 (687) hide show
  1. package/.env.local.example +2 -0
  2. package/.github/workflows/ci.yml +59 -0
  3. package/.github/workflows/claude-code-review.yml +57 -0
  4. package/.github/workflows/claude.yml +50 -0
  5. package/.github/workflows/duplicate-issues.yml +22 -0
  6. package/.github/workflows/release.yml +73 -0
  7. package/.github/workflows/stale.yml +21 -0
  8. package/.node-version +1 -0
  9. package/AGENTS.md +3 -0
  10. package/CLAUDE.md +80 -0
  11. package/LICENSE +21 -0
  12. package/README.md +190 -0
  13. package/assets/Preview.png +0 -0
  14. package/assets/sponsors/MOMA.png +0 -0
  15. package/bun.lock +1618 -0
  16. package/esbuild.config.mjs +195 -0
  17. package/eslint.config.mjs +143 -0
  18. package/jest.config.js +41 -0
  19. package/main.js +104915 -0
  20. package/manifest.json +10 -0
  21. package/package.json +65 -0
  22. package/scripts/build-css.mjs +119 -0
  23. package/scripts/build.mjs +19 -0
  24. package/scripts/postinstall.mjs +25 -0
  25. package/scripts/rendererSafeUnref.js +205 -0
  26. package/scripts/run-jest.js +19 -0
  27. package/scripts/sync-version.js +16 -0
  28. package/src/app/settings/ClaudianSettingsStorage.ts +435 -0
  29. package/src/app/settings/defaultSettings.ts +54 -0
  30. package/src/app/storage/SharedStorageService.ts +106 -0
  31. package/src/core/CLAUDE.md +84 -0
  32. package/src/core/auxiliary/AuxQueryRunner.ts +11 -0
  33. package/src/core/auxiliary/QueryBackedInlineEditService.ts +73 -0
  34. package/src/core/auxiliary/QueryBackedInstructionRefineService.ts +78 -0
  35. package/src/core/auxiliary/QueryBackedTitleGenerationService.ts +90 -0
  36. package/src/core/bootstrap/SessionStorage.ts +179 -0
  37. package/src/core/bootstrap/StoragePaths.ts +7 -0
  38. package/src/core/bootstrap/storage.ts +20 -0
  39. package/src/core/commands/builtInCommands.ts +141 -0
  40. package/src/core/mcp/McpConfigParser.ts +102 -0
  41. package/src/core/mcp/McpServerManager.ts +119 -0
  42. package/src/core/mcp/McpTester.ts +310 -0
  43. package/src/core/prompt/inlineEdit.ts +252 -0
  44. package/src/core/prompt/instructionRefine.ts +72 -0
  45. package/src/core/prompt/mainAgent.ts +213 -0
  46. package/src/core/prompt/titleGeneration.ts +44 -0
  47. package/src/core/providers/ProviderRegistry.ts +253 -0
  48. package/src/core/providers/ProviderSettingsCoordinator.ts +434 -0
  49. package/src/core/providers/ProviderWorkspaceRegistry.ts +119 -0
  50. package/src/core/providers/commands/ProviderCommandCatalog.ts +21 -0
  51. package/src/core/providers/commands/ProviderCommandEntry.ts +33 -0
  52. package/src/core/providers/commands/hiddenCommands.ts +74 -0
  53. package/src/core/providers/modelRouting.ts +17 -0
  54. package/src/core/providers/modelSelection.ts +72 -0
  55. package/src/core/providers/providerConfig.ts +34 -0
  56. package/src/core/providers/providerEnvironment.ts +364 -0
  57. package/src/core/providers/types.ts +544 -0
  58. package/src/core/runtime/ChatRuntime.ts +66 -0
  59. package/src/core/runtime/QueuedTurn.ts +97 -0
  60. package/src/core/runtime/types.ts +118 -0
  61. package/src/core/security/ApprovalManager.ts +142 -0
  62. package/src/core/storage/HomeFileAdapter.ts +75 -0
  63. package/src/core/storage/VaultFileAdapter.ts +132 -0
  64. package/src/core/tools/todo.ts +65 -0
  65. package/src/core/tools/toolIcons.ts +80 -0
  66. package/src/core/tools/toolInput.ts +119 -0
  67. package/src/core/tools/toolNames.ts +149 -0
  68. package/src/core/tools/toolResultContent.ts +26 -0
  69. package/src/core/types/agent.ts +28 -0
  70. package/src/core/types/chat.ts +177 -0
  71. package/src/core/types/diff.ts +31 -0
  72. package/src/core/types/index.ts +78 -0
  73. package/src/core/types/mcp.ts +97 -0
  74. package/src/core/types/plugins.ts +9 -0
  75. package/src/core/types/provider.ts +1 -0
  76. package/src/core/types/settings.ts +152 -0
  77. package/src/core/types/tools.ts +80 -0
  78. package/src/features/chat/CLAUDE.md +136 -0
  79. package/src/features/chat/ClaudianView.ts +762 -0
  80. package/src/features/chat/constants.ts +114 -0
  81. package/src/features/chat/controllers/BrowserSelectionController.ts +295 -0
  82. package/src/features/chat/controllers/CanvasSelectionController.ts +142 -0
  83. package/src/features/chat/controllers/ConversationController.ts +1103 -0
  84. package/src/features/chat/controllers/InputController.ts +1707 -0
  85. package/src/features/chat/controllers/NavigationController.ts +209 -0
  86. package/src/features/chat/controllers/SelectionController.ts +430 -0
  87. package/src/features/chat/controllers/StreamController.ts +1560 -0
  88. package/src/features/chat/controllers/contextRowVisibility.ts +18 -0
  89. package/src/features/chat/rendering/DiffRenderer.ts +134 -0
  90. package/src/features/chat/rendering/InlineAskUserQuestion.ts +702 -0
  91. package/src/features/chat/rendering/InlineExitPlanMode.ts +263 -0
  92. package/src/features/chat/rendering/InlinePlanApproval.ts +183 -0
  93. package/src/features/chat/rendering/MessageRenderer.ts +907 -0
  94. package/src/features/chat/rendering/SubagentRenderer.ts +678 -0
  95. package/src/features/chat/rendering/ThinkingBlockRenderer.ts +126 -0
  96. package/src/features/chat/rendering/TodoListRenderer.ts +5 -0
  97. package/src/features/chat/rendering/ToolCallRenderer.ts +1161 -0
  98. package/src/features/chat/rendering/WriteEditRenderer.ts +232 -0
  99. package/src/features/chat/rendering/collapsible.ts +101 -0
  100. package/src/features/chat/rendering/subagentLifecycleResolution.ts +25 -0
  101. package/src/features/chat/rendering/todoUtils.ts +29 -0
  102. package/src/features/chat/rewind.ts +31 -0
  103. package/src/features/chat/services/BangBashService.ts +56 -0
  104. package/src/features/chat/services/SubagentManager.ts +1107 -0
  105. package/src/features/chat/state/ChatState.ts +436 -0
  106. package/src/features/chat/state/types.ts +138 -0
  107. package/src/features/chat/tabs/Tab.ts +1886 -0
  108. package/src/features/chat/tabs/TabBar.ts +179 -0
  109. package/src/features/chat/tabs/TabManager.ts +1021 -0
  110. package/src/features/chat/tabs/providerResolution.ts +34 -0
  111. package/src/features/chat/tabs/types.ts +287 -0
  112. package/src/features/chat/ui/BangBashModeManager.ts +121 -0
  113. package/src/features/chat/ui/FileContext.ts +385 -0
  114. package/src/features/chat/ui/ImageContext.ts +366 -0
  115. package/src/features/chat/ui/InputToolbar.ts +1244 -0
  116. package/src/features/chat/ui/InstructionModeManager.ts +158 -0
  117. package/src/features/chat/ui/NavigationSidebar.ts +126 -0
  118. package/src/features/chat/ui/StatusPanel.ts +589 -0
  119. package/src/features/chat/ui/file-context/state/FileContextState.ts +83 -0
  120. package/src/features/chat/ui/file-context/view/FileChipsView.ts +70 -0
  121. package/src/features/chat/ui/textareaResize.ts +47 -0
  122. package/src/features/chat/utils/usageInfo.ts +26 -0
  123. package/src/features/inline-edit/ui/InlineEditModal.ts +895 -0
  124. package/src/features/inline-edit/ui/inlineEditMarkdownPreview.ts +55 -0
  125. package/src/features/settings/ClaudianSettings.ts +672 -0
  126. package/src/features/settings/keyboardNavigation.ts +60 -0
  127. package/src/features/settings/ui/EnvSnippetManager.ts +430 -0
  128. package/src/features/settings/ui/EnvironmentSettingsSection.ts +85 -0
  129. package/src/features/settings/ui/McpServerModal.ts +335 -0
  130. package/src/features/settings/ui/McpSettingsManager.ts +400 -0
  131. package/src/features/settings/ui/McpTestModal.ts +346 -0
  132. package/src/i18n/constants.ts +58 -0
  133. package/src/i18n/i18n.ts +140 -0
  134. package/src/i18n/locales/de.json +322 -0
  135. package/src/i18n/locales/en.json +322 -0
  136. package/src/i18n/locales/es.json +322 -0
  137. package/src/i18n/locales/fr.json +322 -0
  138. package/src/i18n/locales/ja.json +322 -0
  139. package/src/i18n/locales/ko.json +322 -0
  140. package/src/i18n/locales/pt.json +322 -0
  141. package/src/i18n/locales/ru.json +322 -0
  142. package/src/i18n/locales/zh-CN.json +322 -0
  143. package/src/i18n/locales/zh-TW.json +322 -0
  144. package/src/i18n/types.ts +248 -0
  145. package/src/main.ts +772 -0
  146. package/src/providers/acp/AcpClientConnection.ts +361 -0
  147. package/src/providers/acp/AcpJsonRpcTransport.ts +427 -0
  148. package/src/providers/acp/AcpSessionConfig.ts +139 -0
  149. package/src/providers/acp/AcpSessionUpdateNormalizer.ts +371 -0
  150. package/src/providers/acp/AcpSubprocess.ts +155 -0
  151. package/src/providers/acp/AcpToolStreamAdapter.ts +132 -0
  152. package/src/providers/acp/buildAcpUsageInfo.ts +41 -0
  153. package/src/providers/acp/index.ts +9 -0
  154. package/src/providers/acp/methodNames.ts +50 -0
  155. package/src/providers/acp/types.ts +566 -0
  156. package/src/providers/claude/CLAUDE.md +78 -0
  157. package/src/providers/claude/agents/AgentManager.ts +225 -0
  158. package/src/providers/claude/agents/AgentStorage.ts +101 -0
  159. package/src/providers/claude/app/ClaudeWorkspaceServices.ts +90 -0
  160. package/src/providers/claude/auxiliary/ClaudeInlineEditService.ts +122 -0
  161. package/src/providers/claude/auxiliary/ClaudeInstructionRefineService.ts +90 -0
  162. package/src/providers/claude/auxiliary/ClaudeTitleGenerationService.ts +129 -0
  163. package/src/providers/claude/auxiliary/extractAssistantText.ts +28 -0
  164. package/src/providers/claude/capabilities.ts +17 -0
  165. package/src/providers/claude/cli/findClaudeCLIPath.ts +261 -0
  166. package/src/providers/claude/commands/ClaudeCommandCatalog.ts +149 -0
  167. package/src/providers/claude/commands/probeRuntimeCommands.ts +86 -0
  168. package/src/providers/claude/env/ClaudeSettingsReconciler.ts +90 -0
  169. package/src/providers/claude/env/claudeModelEnv.ts +86 -0
  170. package/src/providers/claude/history/ClaudeConversationHistoryService.ts +446 -0
  171. package/src/providers/claude/history/ClaudeHistoryStore.ts +170 -0
  172. package/src/providers/claude/history/sdkAsyncSubagent.ts +92 -0
  173. package/src/providers/claude/history/sdkBranchFilter.ts +271 -0
  174. package/src/providers/claude/history/sdkHistoryTypes.ts +61 -0
  175. package/src/providers/claude/history/sdkMessageParsing.ts +413 -0
  176. package/src/providers/claude/history/sdkSessionPaths.ts +98 -0
  177. package/src/providers/claude/history/sdkSubagentSidecar.ts +261 -0
  178. package/src/providers/claude/hooks/SubagentHooks.ts +31 -0
  179. package/src/providers/claude/modelLabels.ts +77 -0
  180. package/src/providers/claude/modelOptions.ts +113 -0
  181. package/src/providers/claude/modelSelection.ts +17 -0
  182. package/src/providers/claude/plugins/PluginManager.ts +194 -0
  183. package/src/providers/claude/prompt/ClaudeTurnEncoder.ts +46 -0
  184. package/src/providers/claude/registration.ts +39 -0
  185. package/src/providers/claude/runtime/ClaudeApprovalHandler.ts +153 -0
  186. package/src/providers/claude/runtime/ClaudeChatRuntime.ts +1812 -0
  187. package/src/providers/claude/runtime/ClaudeCliResolver.ts +94 -0
  188. package/src/providers/claude/runtime/ClaudeDynamicUpdates.ts +164 -0
  189. package/src/providers/claude/runtime/ClaudeMessageChannel.ts +209 -0
  190. package/src/providers/claude/runtime/ClaudeQueryOptionsBuilder.ts +315 -0
  191. package/src/providers/claude/runtime/ClaudeRewindService.ts +220 -0
  192. package/src/providers/claude/runtime/ClaudeSessionManager.ts +92 -0
  193. package/src/providers/claude/runtime/ClaudeTaskResultInterpreter.ts +172 -0
  194. package/src/providers/claude/runtime/ClaudeUserMessageFactory.ts +83 -0
  195. package/src/providers/claude/runtime/claudeColdStartQuery.ts +152 -0
  196. package/src/providers/claude/runtime/customSpawn.ts +87 -0
  197. package/src/providers/claude/runtime/types.ts +134 -0
  198. package/src/providers/claude/sdk/messages.ts +17 -0
  199. package/src/providers/claude/sdk/toolResultContent.ts +4 -0
  200. package/src/providers/claude/sdk/typeGuards.ts +14 -0
  201. package/src/providers/claude/sdk/types.ts +15 -0
  202. package/src/providers/claude/security/ClaudePermissionUpdates.ts +44 -0
  203. package/src/providers/claude/settings.ts +138 -0
  204. package/src/providers/claude/storage/AgentVaultStorage.ts +101 -0
  205. package/src/providers/claude/storage/CCSettingsStorage.ts +153 -0
  206. package/src/providers/claude/storage/ClaudianSettingsStorage.ts +6 -0
  207. package/src/providers/claude/storage/McpStorage.ts +139 -0
  208. package/src/providers/claude/storage/SessionStorage.ts +5 -0
  209. package/src/providers/claude/storage/SkillStorage.ts +61 -0
  210. package/src/providers/claude/storage/SlashCommandStorage.ts +96 -0
  211. package/src/providers/claude/storage/StorageService.ts +185 -0
  212. package/src/providers/claude/stream/toolInputStreamState.ts +318 -0
  213. package/src/providers/claude/stream/transformClaudeMessage.ts +586 -0
  214. package/src/providers/claude/types/agent.ts +2 -0
  215. package/src/providers/claude/types/models.ts +168 -0
  216. package/src/providers/claude/types/plugins.ts +14 -0
  217. package/src/providers/claude/types/providerState.ts +16 -0
  218. package/src/providers/claude/types/settings.ts +98 -0
  219. package/src/providers/claude/ui/AgentSettings.ts +389 -0
  220. package/src/providers/claude/ui/ClaudeChatUIConfig.ts +113 -0
  221. package/src/providers/claude/ui/ClaudeSettingsTab.ts +407 -0
  222. package/src/providers/claude/ui/PluginSettingsManager.ts +149 -0
  223. package/src/providers/claude/ui/SlashCommandSettings.ts +527 -0
  224. package/src/providers/codex/CLAUDE.md +64 -0
  225. package/src/providers/codex/agents/CodexAgentMentionProvider.ts +33 -0
  226. package/src/providers/codex/app/CodexWorkspaceServices.ts +76 -0
  227. package/src/providers/codex/auxiliary/CodexInlineEditService.ts +9 -0
  228. package/src/providers/codex/auxiliary/CodexInstructionRefineService.ts +9 -0
  229. package/src/providers/codex/auxiliary/CodexTaskResultInterpreter.ts +29 -0
  230. package/src/providers/codex/auxiliary/CodexTitleGenerationService.ts +22 -0
  231. package/src/providers/codex/capabilities.ts +16 -0
  232. package/src/providers/codex/commands/CodexSkillCatalog.ts +180 -0
  233. package/src/providers/codex/env/CodexSettingsReconciler.ts +68 -0
  234. package/src/providers/codex/history/CodexConversationHistoryService.ts +212 -0
  235. package/src/providers/codex/history/CodexHistoryStore.ts +1672 -0
  236. package/src/providers/codex/modelOptions.ts +99 -0
  237. package/src/providers/codex/modelSelection.ts +17 -0
  238. package/src/providers/codex/normalization/codexSubagentNormalization.ts +227 -0
  239. package/src/providers/codex/normalization/codexToolNormalization.ts +390 -0
  240. package/src/providers/codex/prompt/encodeCodexTurn.ts +57 -0
  241. package/src/providers/codex/registration.ts +29 -0
  242. package/src/providers/codex/runtime/CodexAppServerProcess.ts +105 -0
  243. package/src/providers/codex/runtime/CodexAuxQueryRunner.ts +180 -0
  244. package/src/providers/codex/runtime/CodexBinaryLocator.ts +49 -0
  245. package/src/providers/codex/runtime/CodexChatRuntime.ts +1296 -0
  246. package/src/providers/codex/runtime/CodexCliResolver.ts +65 -0
  247. package/src/providers/codex/runtime/CodexExecutionTargetResolver.ts +104 -0
  248. package/src/providers/codex/runtime/CodexLaunchSpecBuilder.ts +85 -0
  249. package/src/providers/codex/runtime/CodexNotificationRouter.ts +1033 -0
  250. package/src/providers/codex/runtime/CodexPathMapper.ts +155 -0
  251. package/src/providers/codex/runtime/CodexRpcTransport.ts +171 -0
  252. package/src/providers/codex/runtime/CodexRuntimeContext.ts +109 -0
  253. package/src/providers/codex/runtime/CodexServerRequestRouter.ts +331 -0
  254. package/src/providers/codex/runtime/CodexSessionFileTail.ts +792 -0
  255. package/src/providers/codex/runtime/CodexSessionManager.ts +39 -0
  256. package/src/providers/codex/runtime/codexAppServerSupport.ts +58 -0
  257. package/src/providers/codex/runtime/codexAppServerTypes.ts +705 -0
  258. package/src/providers/codex/runtime/codexLaunchTypes.ts +30 -0
  259. package/src/providers/codex/settings.ts +236 -0
  260. package/src/providers/codex/skills/CodexSkillListingService.ts +173 -0
  261. package/src/providers/codex/storage/CodexSkillStorage.ts +250 -0
  262. package/src/providers/codex/storage/CodexSubagentStorage.ts +212 -0
  263. package/src/providers/codex/types/index.ts +16 -0
  264. package/src/providers/codex/types/models.ts +46 -0
  265. package/src/providers/codex/types/subagent.ts +23 -0
  266. package/src/providers/codex/ui/CodexChatUIConfig.ts +128 -0
  267. package/src/providers/codex/ui/CodexSettingsTab.ts +432 -0
  268. package/src/providers/codex/ui/CodexSkillSettings.ts +275 -0
  269. package/src/providers/codex/ui/CodexSubagentSettings.ts +400 -0
  270. package/src/providers/defaultProviderConfigs.ts +14 -0
  271. package/src/providers/index.ts +30 -0
  272. package/src/providers/opencode/agents/OpencodeAgentMentionProvider.ts +42 -0
  273. package/src/providers/opencode/app/OpencodeRuntimeCommandLoader.ts +67 -0
  274. package/src/providers/opencode/app/OpencodeWorkspaceServices.ts +55 -0
  275. package/src/providers/opencode/auxiliary/OpencodeInlineEditService.ts +13 -0
  276. package/src/providers/opencode/auxiliary/OpencodeInstructionRefineService.ts +12 -0
  277. package/src/providers/opencode/auxiliary/OpencodeTaskResultInterpreter.ts +29 -0
  278. package/src/providers/opencode/auxiliary/OpencodeTitleGenerationService.ts +27 -0
  279. package/src/providers/opencode/capabilities.ts +16 -0
  280. package/src/providers/opencode/commands/OpencodeCommandCatalog.ts +92 -0
  281. package/src/providers/opencode/discoveryState.ts +135 -0
  282. package/src/providers/opencode/env/OpencodeSettingsReconciler.ts +178 -0
  283. package/src/providers/opencode/history/OpencodeConversationHistoryService.ts +84 -0
  284. package/src/providers/opencode/history/OpencodeHistoryStore.ts +472 -0
  285. package/src/providers/opencode/history/OpencodeSqliteReader.ts +284 -0
  286. package/src/providers/opencode/internal/compareCollections.ts +72 -0
  287. package/src/providers/opencode/internal/providerProjection.ts +15 -0
  288. package/src/providers/opencode/models.ts +378 -0
  289. package/src/providers/opencode/modes.ts +150 -0
  290. package/src/providers/opencode/normalization/opencodeToolNormalization.ts +406 -0
  291. package/src/providers/opencode/registration.ts +27 -0
  292. package/src/providers/opencode/runtime/OpencodeAuxQueryRunner.ts +436 -0
  293. package/src/providers/opencode/runtime/OpencodeChatRuntime.ts +1603 -0
  294. package/src/providers/opencode/runtime/OpencodeCliResolver.ts +57 -0
  295. package/src/providers/opencode/runtime/OpencodeLaunchArtifacts.ts +231 -0
  296. package/src/providers/opencode/runtime/OpencodePaths.ts +113 -0
  297. package/src/providers/opencode/runtime/OpencodeRuntimeEnvironment.ts +18 -0
  298. package/src/providers/opencode/runtime/buildOpencodePrompt.ts +66 -0
  299. package/src/providers/opencode/settings.ts +427 -0
  300. package/src/providers/opencode/storage/OpencodeAgentStorage.ts +346 -0
  301. package/src/providers/opencode/types/agent.ts +37 -0
  302. package/src/providers/opencode/types/index.ts +9 -0
  303. package/src/providers/opencode/ui/OpencodeAgentSettings.ts +579 -0
  304. package/src/providers/opencode/ui/OpencodeChatUIConfig.ts +316 -0
  305. package/src/providers/opencode/ui/OpencodeSettingsTab.ts +674 -0
  306. package/src/providers/pi/app/PiRuntimeCommandLoader.ts +57 -0
  307. package/src/providers/pi/app/PiWorkspaceServices.ts +39 -0
  308. package/src/providers/pi/auxiliary/PiInlineEditService.ts +9 -0
  309. package/src/providers/pi/auxiliary/PiInstructionRefineService.ts +9 -0
  310. package/src/providers/pi/auxiliary/PiTaskResultInterpreter.ts +29 -0
  311. package/src/providers/pi/auxiliary/PiTitleGenerationService.ts +19 -0
  312. package/src/providers/pi/capabilities.ts +16 -0
  313. package/src/providers/pi/commands/PiCommandCatalog.ts +92 -0
  314. package/src/providers/pi/env/PiSettingsReconciler.ts +180 -0
  315. package/src/providers/pi/history/PiConversationHistoryService.ts +123 -0
  316. package/src/providers/pi/history/PiHistoryStore.ts +664 -0
  317. package/src/providers/pi/internal/compareCollections.ts +4 -0
  318. package/src/providers/pi/internal/providerProjection.ts +18 -0
  319. package/src/providers/pi/models.ts +302 -0
  320. package/src/providers/pi/normalizations/piEventNormalization.ts +211 -0
  321. package/src/providers/pi/normalizations/piToolNormalization.ts +97 -0
  322. package/src/providers/pi/registration.ts +30 -0
  323. package/src/providers/pi/runtime/PiAuxQueryRunner.ts +216 -0
  324. package/src/providers/pi/runtime/PiChatRuntime.ts +1064 -0
  325. package/src/providers/pi/runtime/PiCliResolver.ts +53 -0
  326. package/src/providers/pi/runtime/PiExtensionUiBridge.ts +161 -0
  327. package/src/providers/pi/runtime/PiJsonl.ts +71 -0
  328. package/src/providers/pi/runtime/PiLaunchSpec.ts +70 -0
  329. package/src/providers/pi/runtime/PiModelDiscoveryService.ts +92 -0
  330. package/src/providers/pi/runtime/PiRpcPayloads.ts +18 -0
  331. package/src/providers/pi/runtime/PiRpcTransport.ts +243 -0
  332. package/src/providers/pi/runtime/PiSubprocess.ts +159 -0
  333. package/src/providers/pi/runtime/buildPiPrompt.ts +62 -0
  334. package/src/providers/pi/runtime/buildPiUsageInfo.ts +69 -0
  335. package/src/providers/pi/settings.ts +468 -0
  336. package/src/providers/pi/types.ts +64 -0
  337. package/src/providers/pi/ui/ObsidianPiExtensionUiRenderer.ts +251 -0
  338. package/src/providers/pi/ui/PiChatUIConfig.ts +265 -0
  339. package/src/providers/pi/ui/PiExtensionUiRenderer.ts +12 -0
  340. package/src/providers/pi/ui/PiSettingsTab.ts +642 -0
  341. package/src/shared/components/ResumeSessionDropdown.ts +185 -0
  342. package/src/shared/components/SelectableDropdown.ts +140 -0
  343. package/src/shared/components/SelectionHighlight.ts +77 -0
  344. package/src/shared/components/SlashCommandDropdown.ts +421 -0
  345. package/src/shared/icons.ts +180 -0
  346. package/src/shared/mention/MentionDropdownController.ts +627 -0
  347. package/src/shared/mention/VaultMentionCache.ts +106 -0
  348. package/src/shared/mention/VaultMentionDataProvider.ts +51 -0
  349. package/src/shared/mention/types.ts +67 -0
  350. package/src/shared/modals/ConfirmModal.ts +60 -0
  351. package/src/shared/modals/ForkTargetModal.ts +47 -0
  352. package/src/shared/modals/InstructionConfirmModal.ts +281 -0
  353. package/src/style/CLAUDE.md +49 -0
  354. package/src/style/accessibility.css +40 -0
  355. package/src/style/base/animations.css +44 -0
  356. package/src/style/base/container.css +20 -0
  357. package/src/style/base/variables.css +46 -0
  358. package/src/style/base/visibility.css +15 -0
  359. package/src/style/components/code.css +97 -0
  360. package/src/style/components/context-footer.css +76 -0
  361. package/src/style/components/header.css +27 -0
  362. package/src/style/components/history.css +221 -0
  363. package/src/style/components/input.css +312 -0
  364. package/src/style/components/messages.css +262 -0
  365. package/src/style/components/nav-sidebar.css +58 -0
  366. package/src/style/components/status-panel.css +202 -0
  367. package/src/style/components/subagent.css +248 -0
  368. package/src/style/components/tabs.css +112 -0
  369. package/src/style/components/thinking.css +88 -0
  370. package/src/style/components/toolcalls.css +278 -0
  371. package/src/style/features/ask-user-question.css +315 -0
  372. package/src/style/features/diff.css +197 -0
  373. package/src/style/features/file-context.css +188 -0
  374. package/src/style/features/file-link.css +22 -0
  375. package/src/style/features/image-context.css +179 -0
  376. package/src/style/features/image-embed.css +40 -0
  377. package/src/style/features/image-modal.css +52 -0
  378. package/src/style/features/inline-edit.css +278 -0
  379. package/src/style/features/plan-mode.css +103 -0
  380. package/src/style/features/resume-session.css +119 -0
  381. package/src/style/features/slash-commands.css +91 -0
  382. package/src/style/index.css +63 -0
  383. package/src/style/modals/fork-target.css +21 -0
  384. package/src/style/modals/instruction.css +161 -0
  385. package/src/style/modals/mcp-modal.css +241 -0
  386. package/src/style/settings/agent-settings.css +2 -0
  387. package/src/style/settings/base.css +300 -0
  388. package/src/style/settings/env-snippets.css +366 -0
  389. package/src/style/settings/mcp-settings.css +211 -0
  390. package/src/style/settings/plugin-settings.css +164 -0
  391. package/src/style/settings/provider-model-picker.css +367 -0
  392. package/src/style/settings/slash-settings.css +16 -0
  393. package/src/style/toolbar/external-context.css +177 -0
  394. package/src/style/toolbar/mcp-selector.css +176 -0
  395. package/src/style/toolbar/mode-selector.css +19 -0
  396. package/src/style/toolbar/model-selector.css +99 -0
  397. package/src/style/toolbar/permission-toggle.css +56 -0
  398. package/src/style/toolbar/service-tier-toggle.css +39 -0
  399. package/src/style/toolbar/thinking-selector.css +83 -0
  400. package/src/types/smol-toml.d.ts +4 -0
  401. package/src/utils/agent.ts +50 -0
  402. package/src/utils/animationFrame.ts +46 -0
  403. package/src/utils/browser.ts +46 -0
  404. package/src/utils/canvas.ts +14 -0
  405. package/src/utils/cliBinaryLocator.ts +97 -0
  406. package/src/utils/context.ts +117 -0
  407. package/src/utils/contextMentionResolver.ts +154 -0
  408. package/src/utils/date.ts +31 -0
  409. package/src/utils/diff.ts +384 -0
  410. package/src/utils/editor.ts +104 -0
  411. package/src/utils/electronCompat.ts +53 -0
  412. package/src/utils/env.ts +465 -0
  413. package/src/utils/externalContext.ts +143 -0
  414. package/src/utils/externalContextScanner.ts +135 -0
  415. package/src/utils/fileLink.ts +263 -0
  416. package/src/utils/frontmatter.ts +194 -0
  417. package/src/utils/imageEmbed.ts +139 -0
  418. package/src/utils/inlineEdit.ts +22 -0
  419. package/src/utils/interrupt.ts +23 -0
  420. package/src/utils/markdown.ts +25 -0
  421. package/src/utils/markdownMath.ts +130 -0
  422. package/src/utils/mcp.ts +96 -0
  423. package/src/utils/obsidianCompat.ts +23 -0
  424. package/src/utils/path.ts +342 -0
  425. package/src/utils/session.ts +240 -0
  426. package/src/utils/slashCommand.ts +152 -0
  427. package/src/utils/subagentJsonl.ts +52 -0
  428. package/src/utils/windowsCmdShim.ts +98 -0
  429. package/tests/__mocks__/claude-agent-sdk.ts +317 -0
  430. package/tests/__mocks__/codex-sdk.ts +88 -0
  431. package/tests/__mocks__/obsidian.ts +434 -0
  432. package/tests/helpers/mockElement.ts +403 -0
  433. package/tests/helpers/sdkMessages.ts +291 -0
  434. package/tests/integration/core/agent/ClaudianService.test.ts +1845 -0
  435. package/tests/integration/core/mcp/mcp.test.ts +905 -0
  436. package/tests/integration/features/chat/imagePersistence.test.ts +38 -0
  437. package/tests/integration/main.test.ts +1701 -0
  438. package/tests/setupWindow.ts +26 -0
  439. package/tests/tsconfig.json +7 -0
  440. package/tests/unit/core/commands/builtInCommands.test.ts +239 -0
  441. package/tests/unit/core/mcp/McpServerManager.test.ts +405 -0
  442. package/tests/unit/core/mcp/McpTester.test.ts +282 -0
  443. package/tests/unit/core/mcp/createNodeFetch.test.ts +188 -0
  444. package/tests/unit/core/providers/ProviderRegistry.test.ts +275 -0
  445. package/tests/unit/core/providers/ProviderSettingsCoordinator.test.ts +490 -0
  446. package/tests/unit/core/providers/ProviderWorkspaceRegistry.test.ts +84 -0
  447. package/tests/unit/core/providers/modelRouting.test.ts +91 -0
  448. package/tests/unit/core/providers/modelSelection.test.ts +155 -0
  449. package/tests/unit/core/providers/providerEnvironment.test.ts +162 -0
  450. package/tests/unit/core/providers/tabLifecycle.test.ts +217 -0
  451. package/tests/unit/core/security/ApprovalManager.test.ts +152 -0
  452. package/tests/unit/core/storage/VaultFileAdapter.test.ts +535 -0
  453. package/tests/unit/core/tools/todo.test.ts +227 -0
  454. package/tests/unit/core/tools/toolIcons.test.ts +75 -0
  455. package/tests/unit/core/tools/toolInput.test.ts +350 -0
  456. package/tests/unit/core/tools/toolNames.test.ts +464 -0
  457. package/tests/unit/core/types/mcp.test.ts +115 -0
  458. package/tests/unit/features/chat/ClaudianView.test.ts +404 -0
  459. package/tests/unit/features/chat/controllers/BrowserSelectionController.test.ts +179 -0
  460. package/tests/unit/features/chat/controllers/CanvasSelectionController.test.ts +216 -0
  461. package/tests/unit/features/chat/controllers/ConversationController.test.ts +2764 -0
  462. package/tests/unit/features/chat/controllers/InputController.test.ts +3188 -0
  463. package/tests/unit/features/chat/controllers/NavigationController.test.ts +640 -0
  464. package/tests/unit/features/chat/controllers/SelectionController.test.ts +695 -0
  465. package/tests/unit/features/chat/controllers/StreamController.test.ts +2534 -0
  466. package/tests/unit/features/chat/controllers/contextRowVisibility.test.ts +46 -0
  467. package/tests/unit/features/chat/controllers/index.test.ts +16 -0
  468. package/tests/unit/features/chat/rendering/DiffRenderer.test.ts +355 -0
  469. package/tests/unit/features/chat/rendering/InlineAskUserQuestion.test.ts +1035 -0
  470. package/tests/unit/features/chat/rendering/InlineExitPlanMode.test.ts +191 -0
  471. package/tests/unit/features/chat/rendering/InlinePlanApproval.test.ts +126 -0
  472. package/tests/unit/features/chat/rendering/MessageRenderer.test.ts +2004 -0
  473. package/tests/unit/features/chat/rendering/SubagentRenderer.test.ts +917 -0
  474. package/tests/unit/features/chat/rendering/ThinkingBlockRenderer.test.ts +124 -0
  475. package/tests/unit/features/chat/rendering/TodoListRenderer.test.ts +173 -0
  476. package/tests/unit/features/chat/rendering/ToolCallRenderer.test.ts +909 -0
  477. package/tests/unit/features/chat/rendering/WriteEditRenderer.test.ts +474 -0
  478. package/tests/unit/features/chat/rendering/collapsible.test.ts +158 -0
  479. package/tests/unit/features/chat/rendering/todoUtils.test.ts +105 -0
  480. package/tests/unit/features/chat/rewind.test.ts +56 -0
  481. package/tests/unit/features/chat/services/BangBashService.test.ts +142 -0
  482. package/tests/unit/features/chat/services/InstructionRefineService.test.ts +371 -0
  483. package/tests/unit/features/chat/services/SubagentManager.test.ts +1759 -0
  484. package/tests/unit/features/chat/services/TitleGenerationService.test.ts +480 -0
  485. package/tests/unit/features/chat/state/ChatState.test.ts +581 -0
  486. package/tests/unit/features/chat/tabs/Tab.test.ts +4287 -0
  487. package/tests/unit/features/chat/tabs/TabBar.test.ts +357 -0
  488. package/tests/unit/features/chat/tabs/TabManager.test.ts +2962 -0
  489. package/tests/unit/features/chat/tabs/index.test.ts +11 -0
  490. package/tests/unit/features/chat/ui/BangBashModeManager.test.ts +321 -0
  491. package/tests/unit/features/chat/ui/ExternalContextSelector.test.ts +555 -0
  492. package/tests/unit/features/chat/ui/FileContextManager.test.ts +876 -0
  493. package/tests/unit/features/chat/ui/ImageContext.test.ts +777 -0
  494. package/tests/unit/features/chat/ui/InputToolbar.test.ts +1139 -0
  495. package/tests/unit/features/chat/ui/InstructionModeManager.test.ts +243 -0
  496. package/tests/unit/features/chat/ui/NavigationSidebar.test.ts +570 -0
  497. package/tests/unit/features/chat/ui/StatusPanel.test.ts +953 -0
  498. package/tests/unit/features/chat/ui/file-context/state/FileContextState.test.ts +155 -0
  499. package/tests/unit/features/chat/ui/textareaResize.test.ts +102 -0
  500. package/tests/unit/features/chat/utils/usageInfo.test.ts +56 -0
  501. package/tests/unit/features/inline-edit/InlineEditService.test.ts +1199 -0
  502. package/tests/unit/features/inline-edit/ui/InlineEditModal.openAndWait.test.ts +1482 -0
  503. package/tests/unit/features/inline-edit/ui/InlineEditModal.test.ts +495 -0
  504. package/tests/unit/features/inline-edit/ui/inlineEditMarkdownPreview.test.ts +92 -0
  505. package/tests/unit/features/settings/AgentSettings.test.ts +82 -0
  506. package/tests/unit/features/settings/keyboardNavigation.test.ts +73 -0
  507. package/tests/unit/features/settings/ui/CodexSkillSettings.test.ts +294 -0
  508. package/tests/unit/features/settings/ui/CodexSubagentSettings.test.ts +207 -0
  509. package/tests/unit/i18n/constants.test.ts +43 -0
  510. package/tests/unit/i18n/i18n.test.ts +244 -0
  511. package/tests/unit/i18n/locales.test.ts +134 -0
  512. package/tests/unit/providers/acp/AcpClientConnection.test.ts +248 -0
  513. package/tests/unit/providers/acp/AcpJsonRpcTransport.test.ts +186 -0
  514. package/tests/unit/providers/acp/AcpSessionConfig.test.ts +247 -0
  515. package/tests/unit/providers/acp/AcpSessionUpdateNormalizer.test.ts +145 -0
  516. package/tests/unit/providers/acp/AcpSubprocess.test.ts +105 -0
  517. package/tests/unit/providers/acp/buildAcpUsageInfo.test.ts +51 -0
  518. package/tests/unit/providers/claude/agents/AgentManager.test.ts +590 -0
  519. package/tests/unit/providers/claude/agents/AgentStorage.test.ts +434 -0
  520. package/tests/unit/providers/claude/agents/index.test.ts +10 -0
  521. package/tests/unit/providers/claude/commands/ClaudeCommandCatalog.test.ts +396 -0
  522. package/tests/unit/providers/claude/commands/probeRuntimeCommands.test.ts +92 -0
  523. package/tests/unit/providers/claude/env/ClaudeSettingsReconciler.test.ts +57 -0
  524. package/tests/unit/providers/claude/env/claudeModelEnv.test.ts +228 -0
  525. package/tests/unit/providers/claude/hooks/SubagentHooks.test.ts +83 -0
  526. package/tests/unit/providers/claude/plugins/PluginManager.test.ts +832 -0
  527. package/tests/unit/providers/claude/plugins/index.test.ts +7 -0
  528. package/tests/unit/providers/claude/prompt/ClaudeTurnEncoder.test.ts +145 -0
  529. package/tests/unit/providers/claude/prompt/instructionRefine.test.ts +185 -0
  530. package/tests/unit/providers/claude/prompt/systemPrompt.test.ts +163 -0
  531. package/tests/unit/providers/claude/prompt/titleGeneration.test.ts +20 -0
  532. package/tests/unit/providers/claude/runtime/ClaudeTaskResultInterpreter.test.ts +28 -0
  533. package/tests/unit/providers/claude/runtime/ClaudianService.test.ts +3796 -0
  534. package/tests/unit/providers/claude/runtime/MessageChannel.test.ts +421 -0
  535. package/tests/unit/providers/claude/runtime/QueryOptionsBuilder.test.ts +775 -0
  536. package/tests/unit/providers/claude/runtime/SessionManager.test.ts +182 -0
  537. package/tests/unit/providers/claude/runtime/claudeColdStartQuery.test.ts +331 -0
  538. package/tests/unit/providers/claude/runtime/customSpawn.test.ts +374 -0
  539. package/tests/unit/providers/claude/runtime/index.test.ts +13 -0
  540. package/tests/unit/providers/claude/runtime/types.test.ts +190 -0
  541. package/tests/unit/providers/claude/sdk/typeGuards.test.ts +50 -0
  542. package/tests/unit/providers/claude/security/ClaudePermissionUpdates.test.ts +198 -0
  543. package/tests/unit/providers/claude/storage/AgentVaultStorage.test.ts +413 -0
  544. package/tests/unit/providers/claude/storage/CCSettingsStorage.test.ts +408 -0
  545. package/tests/unit/providers/claude/storage/ClaudianSettingsStorage.test.ts +653 -0
  546. package/tests/unit/providers/claude/storage/McpStorage.test.ts +619 -0
  547. package/tests/unit/providers/claude/storage/SessionStorage.test.ts +680 -0
  548. package/tests/unit/providers/claude/storage/SkillStorage.test.ts +275 -0
  549. package/tests/unit/providers/claude/storage/SlashCommandStorage.test.ts +612 -0
  550. package/tests/unit/providers/claude/storage/storage.test.ts +360 -0
  551. package/tests/unit/providers/claude/storage/storageService.convenience.test.ts +447 -0
  552. package/tests/unit/providers/claude/stream/transformSDKMessage.test.ts +1729 -0
  553. package/tests/unit/providers/claude/types/types.test.ts +726 -0
  554. package/tests/unit/providers/claude/ui/ClaudeChatUIConfig.test.ts +173 -0
  555. package/tests/unit/providers/claude/ui/ClaudeSettingsTab.test.ts +466 -0
  556. package/tests/unit/providers/codex/agents/CodexAgentMentionProvider.test.ts +89 -0
  557. package/tests/unit/providers/codex/auxiliary/CodexInstructionRefineService.test.ts +81 -0
  558. package/tests/unit/providers/codex/capabilities.test.ts +39 -0
  559. package/tests/unit/providers/codex/commands/CodexSkillCatalog.test.ts +413 -0
  560. package/tests/unit/providers/codex/env/CodexSettingsReconciler.test.ts +106 -0
  561. package/tests/unit/providers/codex/fixtures/codex-session-abort.jsonl +9 -0
  562. package/tests/unit/providers/codex/fixtures/codex-session-agent-lifecycle.jsonl +12 -0
  563. package/tests/unit/providers/codex/fixtures/codex-session-persisted-tools.jsonl +15 -0
  564. package/tests/unit/providers/codex/fixtures/codex-session-simple.jsonl +10 -0
  565. package/tests/unit/providers/codex/fixtures/codex-session-tools.jsonl +12 -0
  566. package/tests/unit/providers/codex/fixtures/codex-session-websearch-persisted.jsonl +3 -0
  567. package/tests/unit/providers/codex/fixtures/codex-session-websearch.jsonl +7 -0
  568. package/tests/unit/providers/codex/history/CodexConversationHistoryService.test.ts +690 -0
  569. package/tests/unit/providers/codex/history/CodexHistoryStore.test.ts +2202 -0
  570. package/tests/unit/providers/codex/normalization/codexSubagentNormalization.test.ts +81 -0
  571. package/tests/unit/providers/codex/normalization/codexToolNormalization.test.ts +322 -0
  572. package/tests/unit/providers/codex/prompt/encodeCodexTurn.test.ts +168 -0
  573. package/tests/unit/providers/codex/runtime/CodexAppServerProcess.test.ts +255 -0
  574. package/tests/unit/providers/codex/runtime/CodexAuxQueryRunner.test.ts +130 -0
  575. package/tests/unit/providers/codex/runtime/CodexBinaryLocator.test.ts +90 -0
  576. package/tests/unit/providers/codex/runtime/CodexChatRuntime.test.ts +2445 -0
  577. package/tests/unit/providers/codex/runtime/CodexCliResolver.test.ts +103 -0
  578. package/tests/unit/providers/codex/runtime/CodexExecutionTargetResolver.test.ts +105 -0
  579. package/tests/unit/providers/codex/runtime/CodexLaunchSpecBuilder.test.ts +150 -0
  580. package/tests/unit/providers/codex/runtime/CodexNotificationRouter.test.ts +1248 -0
  581. package/tests/unit/providers/codex/runtime/CodexPathMapper.test.ts +51 -0
  582. package/tests/unit/providers/codex/runtime/CodexRpcTransport.test.ts +220 -0
  583. package/tests/unit/providers/codex/runtime/CodexRuntimeContext.test.ts +107 -0
  584. package/tests/unit/providers/codex/runtime/CodexServerRequestRouter.test.ts +537 -0
  585. package/tests/unit/providers/codex/runtime/CodexSessionFileTail.test.ts +1305 -0
  586. package/tests/unit/providers/codex/runtime/CodexSessionManager.test.ts +82 -0
  587. package/tests/unit/providers/codex/runtime/codexAppServerTypes.test.ts +336 -0
  588. package/tests/unit/providers/codex/settings.test.ts +189 -0
  589. package/tests/unit/providers/codex/skills/CodexSkillListingService.test.ts +178 -0
  590. package/tests/unit/providers/codex/storage/CodexSkillStorage.test.ts +342 -0
  591. package/tests/unit/providers/codex/storage/CodexSubagentStorage.test.ts +376 -0
  592. package/tests/unit/providers/codex/ui/CodexChatUIConfig.test.ts +211 -0
  593. package/tests/unit/providers/codex/ui/CodexSettingsTab.test.ts +578 -0
  594. package/tests/unit/providers/defaultProviderConfigs.test.ts +18 -0
  595. package/tests/unit/providers/opencode/OpencodeAuxQueryRunner.test.ts +355 -0
  596. package/tests/unit/providers/opencode/OpencodeChatRuntime.test.ts +808 -0
  597. package/tests/unit/providers/opencode/OpencodeCliResolver.test.ts +93 -0
  598. package/tests/unit/providers/opencode/OpencodeCommandCatalog.test.ts +75 -0
  599. package/tests/unit/providers/opencode/OpencodeConversationHistoryService.test.ts +103 -0
  600. package/tests/unit/providers/opencode/OpencodeHistoryStore.test.ts +418 -0
  601. package/tests/unit/providers/opencode/OpencodeLaunchArtifacts.test.ts +268 -0
  602. package/tests/unit/providers/opencode/OpencodePaths.test.ts +35 -0
  603. package/tests/unit/providers/opencode/OpencodeRuntimeCommandLoader.test.ts +129 -0
  604. package/tests/unit/providers/opencode/OpencodeSettingsReconciler.test.ts +96 -0
  605. package/tests/unit/providers/opencode/OpencodeSettingsTab.test.ts +649 -0
  606. package/tests/unit/providers/opencode/OpencodeSqliteReader.test.ts +185 -0
  607. package/tests/unit/providers/opencode/agents/OpencodeAgentMentionProvider.test.ts +56 -0
  608. package/tests/unit/providers/opencode/buildOpencodePrompt.test.ts +87 -0
  609. package/tests/unit/providers/opencode/capabilities.test.ts +39 -0
  610. package/tests/unit/providers/opencode/models.test.ts +273 -0
  611. package/tests/unit/providers/opencode/modes.test.ts +151 -0
  612. package/tests/unit/providers/opencode/opencodeToolNormalization.test.ts +197 -0
  613. package/tests/unit/providers/opencode/settings.test.ts +469 -0
  614. package/tests/unit/providers/opencode/storage/OpencodeAgentStorage.test.ts +377 -0
  615. package/tests/unit/providers/opencode/ui/OpencodeAgentSettings.test.ts +91 -0
  616. package/tests/unit/providers/pi/PiRuntimeCommandLoader.test.ts +149 -0
  617. package/tests/unit/providers/pi/capabilities.test.ts +20 -0
  618. package/tests/unit/providers/pi/commands/PiCommandCatalog.test.ts +69 -0
  619. package/tests/unit/providers/pi/env/PiSettingsReconciler.test.ts +61 -0
  620. package/tests/unit/providers/pi/history/PiConversationHistoryService.test.ts +147 -0
  621. package/tests/unit/providers/pi/history/PiHistoryStore.test.ts +523 -0
  622. package/tests/unit/providers/pi/models.test.ts +96 -0
  623. package/tests/unit/providers/pi/registration.test.ts +54 -0
  624. package/tests/unit/providers/pi/runtime/PiAuxQueryRunner.test.ts +172 -0
  625. package/tests/unit/providers/pi/runtime/PiChatRuntime.test.ts +830 -0
  626. package/tests/unit/providers/pi/runtime/PiCliResolver.test.ts +105 -0
  627. package/tests/unit/providers/pi/runtime/PiEventNormalization.test.ts +147 -0
  628. package/tests/unit/providers/pi/runtime/PiExtensionUiBridge.test.ts +98 -0
  629. package/tests/unit/providers/pi/runtime/PiJsonl.test.ts +42 -0
  630. package/tests/unit/providers/pi/runtime/PiLaunchSpec.test.ts +92 -0
  631. package/tests/unit/providers/pi/runtime/PiModelDiscoveryService.test.ts +135 -0
  632. package/tests/unit/providers/pi/runtime/PiRpcPayloads.test.ts +15 -0
  633. package/tests/unit/providers/pi/runtime/PiRpcTransport.test.ts +116 -0
  634. package/tests/unit/providers/pi/runtime/PiSubprocess.test.ts +151 -0
  635. package/tests/unit/providers/pi/runtime/buildPiPrompt.test.ts +84 -0
  636. package/tests/unit/providers/pi/runtime/buildPiUsageInfo.test.ts +69 -0
  637. package/tests/unit/providers/pi/settings.test.ts +253 -0
  638. package/tests/unit/providers/pi/ui/PiChatUIConfig.test.ts +161 -0
  639. package/tests/unit/providers/pi/ui/PiSettingsTab.test.ts +492 -0
  640. package/tests/unit/scripts/rendererSafeUnref.test.ts +101 -0
  641. package/tests/unit/shared/components/ResumeSessionDropdown.test.ts +356 -0
  642. package/tests/unit/shared/components/SelectableDropdown.test.ts +406 -0
  643. package/tests/unit/shared/components/SlashCommandDropdown.provider.test.ts +354 -0
  644. package/tests/unit/shared/components/SlashCommandDropdown.test.ts +508 -0
  645. package/tests/unit/shared/icons.test.ts +56 -0
  646. package/tests/unit/shared/index.test.ts +46 -0
  647. package/tests/unit/shared/mention/MentionDropdownController.test.ts +823 -0
  648. package/tests/unit/shared/mention/VaultFileCache.test.ts +195 -0
  649. package/tests/unit/shared/mention/VaultFolderCache.test.ts +143 -0
  650. package/tests/unit/shared/mention/VaultMentionDataProvider.test.ts +87 -0
  651. package/tests/unit/shared/modals/ConfirmModal.test.ts +111 -0
  652. package/tests/unit/shared/modals/ForkTargetModal.test.ts +101 -0
  653. package/tests/unit/shared/modals/InstructionConfirmModal.test.ts +305 -0
  654. package/tests/unit/utils/agent.test.ts +395 -0
  655. package/tests/unit/utils/animationFrame.test.ts +59 -0
  656. package/tests/unit/utils/browser.test.ts +73 -0
  657. package/tests/unit/utils/canvas.test.ts +54 -0
  658. package/tests/unit/utils/claudeCli.test.ts +294 -0
  659. package/tests/unit/utils/cliBinaryLocator.test.ts +33 -0
  660. package/tests/unit/utils/context.test.ts +288 -0
  661. package/tests/unit/utils/contextMentionResolver.test.ts +270 -0
  662. package/tests/unit/utils/date.test.ts +80 -0
  663. package/tests/unit/utils/diff.test.ts +291 -0
  664. package/tests/unit/utils/editor.test.ts +249 -0
  665. package/tests/unit/utils/electronCompat.test.ts +87 -0
  666. package/tests/unit/utils/env.test.ts +1240 -0
  667. package/tests/unit/utils/externalContext.test.ts +336 -0
  668. package/tests/unit/utils/externalContextScanner.test.ts +186 -0
  669. package/tests/unit/utils/fileLink.dom.test.ts +273 -0
  670. package/tests/unit/utils/fileLink.handler.test.ts +64 -0
  671. package/tests/unit/utils/fileLink.test.ts +233 -0
  672. package/tests/unit/utils/frontmatter.test.ts +434 -0
  673. package/tests/unit/utils/imageEmbed.test.ts +407 -0
  674. package/tests/unit/utils/inlineEdit.test.ts +63 -0
  675. package/tests/unit/utils/interrupt.test.ts +73 -0
  676. package/tests/unit/utils/markdown.test.ts +35 -0
  677. package/tests/unit/utils/markdownMath.test.ts +54 -0
  678. package/tests/unit/utils/mcp.test.ts +256 -0
  679. package/tests/unit/utils/obsidianCompat.test.ts +18 -0
  680. package/tests/unit/utils/path.test.ts +677 -0
  681. package/tests/unit/utils/sdkSession.test.ts +2359 -0
  682. package/tests/unit/utils/session.test.ts +971 -0
  683. package/tests/unit/utils/slashCommand.test.ts +778 -0
  684. package/tests/unit/utils/utils.test.ts +809 -0
  685. package/tsconfig.jest.json +8 -0
  686. package/tsconfig.json +26 -0
  687. package/versions.json +4 -0
@@ -0,0 +1,322 @@
1
+ {
2
+ "common": {
3
+ "save": "Salvar",
4
+ "cancel": "Cancelar",
5
+ "delete": "Excluir",
6
+ "edit": "Editar",
7
+ "add": "Adicionar",
8
+ "remove": "Remover",
9
+ "clear": "Limpar",
10
+ "clearAll": "Limpar tudo",
11
+ "loading": "Carregando",
12
+ "error": "Erro",
13
+ "success": "Sucesso",
14
+ "warning": "Aviso",
15
+ "confirm": "Confirmar",
16
+ "settings": "Configurações",
17
+ "advanced": "Avançado",
18
+ "enabled": "Ativado",
19
+ "disabled": "Desativado",
20
+ "platform": "Plataforma",
21
+ "refresh": "Atualizar",
22
+ "rewind": "Retroceder"
23
+ },
24
+ "chat": {
25
+ "rewind": {
26
+ "confirmMessage": "Retroceder até este ponto? As alterações de arquivos após esta mensagem serão revertidas. O retrocesso não afeta arquivos editados manualmente ou via bash.",
27
+ "confirmMessageConversationOnly": "Retroceder a conversa até este ponto? As alterações de arquivos serão mantidas.",
28
+ "confirmButton": "Retroceder",
29
+ "ariaLabel": "Retroceder até aqui",
30
+ "menuConversationOnly": "Retroceder somente conversa",
31
+ "menuCodeAndConversation": "Retroceder código + conversa",
32
+ "notice": "Retrocedido: {count} arquivo(s) revertido(s)",
33
+ "noticeConversationOnly": "Conversa retrocedida; alterações de arquivos mantidas",
34
+ "noticeSaveFailed": "Retrocedido: {count} arquivo(s) revertido(s), mas não foi possível salvar o estado: {error}",
35
+ "noticeConversationOnlySaveFailed": "Conversa retrocedida, mas não foi possível salvar o estado: {error}",
36
+ "failed": "Falha ao retroceder: {error}",
37
+ "cannot": "Não é possível retroceder: {error}",
38
+ "unavailableStreaming": "Não é possível retroceder durante a transmissão",
39
+ "unavailableNoUuid": "Não é possível retroceder: identificadores de mensagem ausentes"
40
+ },
41
+ "fork": {
42
+ "ariaLabel": "Bifurcar conversa",
43
+ "chooseTarget": "Bifurcar conversa",
44
+ "targetNewTab": "Nova aba",
45
+ "targetCurrentTab": "Aba atual",
46
+ "maxTabsReached": "Não é possível bifurcar: máximo de {count} abas atingido",
47
+ "notice": "Bifurcado para nova aba",
48
+ "noticeCurrentTab": "Bifurcado na aba atual",
49
+ "failed": "Falha ao bifurcar: {error}",
50
+ "unavailableStreaming": "Não é possível bifurcar durante a transmissão",
51
+ "unavailableNoUuid": "Não é possível bifurcar: identificadores de mensagem ausentes",
52
+ "unavailableNoResponse": "Não é possível bifurcar: nenhuma resposta para bifurcar",
53
+ "errorMessageNotFound": "Mensagem não encontrada",
54
+ "errorNoSession": "Nenhum ID de sessão disponível",
55
+ "errorNoActiveTab": "Nenhuma aba ativa",
56
+ "commandNoMessages": "Não é possível bifurcar: não há mensagens na conversa",
57
+ "commandNoAssistantUuid": "Não é possível bifurcar: não há resposta do assistente com identificadores"
58
+ },
59
+ "bangBash": {
60
+ "placeholder": "> Executar um comando bash...",
61
+ "commandPanel": "Painel de comandos",
62
+ "copyAriaLabel": "Copiar a saída do comando mais recente",
63
+ "clearAriaLabel": "Limpar a saída do bash",
64
+ "commandLabel": "{command}",
65
+ "statusLabel": "Estado: {status}",
66
+ "collapseOutput": "Recolher a saída do comando",
67
+ "expandOutput": "Expandir a saída do comando",
68
+ "running": "Executando...",
69
+ "copyFailed": "Falha ao copiar para a área de transferência"
70
+ }
71
+ },
72
+ "settings": {
73
+ "title": "Configurações do Claudian",
74
+ "tabs": {
75
+ "general": "Geral",
76
+ "claude": "Claude",
77
+ "codex": "Codex"
78
+ },
79
+ "display": "Exibição",
80
+ "conversations": "Conversas",
81
+ "content": "Conteúdo",
82
+ "input": "Entrada",
83
+ "setup": "Configuração",
84
+ "models": "Modelos",
85
+ "experimental": "Experimental",
86
+ "userName": {
87
+ "name": "Como o Claudian deve chamá-lo?",
88
+ "desc": "Seu nome para saudações personalizadas (deixe vazio para saudações genéricas)"
89
+ },
90
+ "excludedTags": {
91
+ "name": "Tags excluídas",
92
+ "desc": "Notas com estas tags não serão carregadas automaticamente como contexto (uma por linha, sem #)"
93
+ },
94
+ "mediaFolder": {
95
+ "name": "Pasta de mídia",
96
+ "desc": "Pasta contendo anexos/imagens. Quando notas usam ![[image.jpg]], Claude procurará aqui. Deixe vazio para a raiz do repositório."
97
+ },
98
+ "systemPrompt": {
99
+ "name": "Prompt de sistema personalizado",
100
+ "desc": "Instruções adicionais anexadas ao prompt de sistema padrão"
101
+ },
102
+ "autoTitle": {
103
+ "name": "Gerar automaticamente títulos de conversa",
104
+ "desc": "Gera automaticamente títulos de conversa após a primeira mensagem do usuário."
105
+ },
106
+ "titleModel": {
107
+ "name": "Modelo de geração de título",
108
+ "desc": "Modelo usado para gerar automaticamente títulos de conversa.",
109
+ "auto": "Automático (Haiku)"
110
+ },
111
+ "navMappings": {
112
+ "name": "Mapeamentos de navegação estilo Vim",
113
+ "desc": "Um mapeamento por linha. Formato: \"map <tecla> <ação>\" (ações: scrollUp, scrollDown, focusInput)."
114
+ },
115
+ "requireCommandOrControlEnterToSend": {
116
+ "name": "Exigir Command/Ctrl+Enter para enviar",
117
+ "desc": "Quando ativado, Enter insere uma quebra de linha. Command+Enter envia no macOS; Ctrl+Enter envia no Windows e Linux."
118
+ },
119
+ "hotkeys": "Atalhos",
120
+ "inlineEditHotkey": {
121
+ "name": "Edição em linha",
122
+ "descWithKey": "Atalho atual: {hotkey}",
123
+ "descNoKey": "Nenhum atalho definido",
124
+ "btnChange": "Alterar",
125
+ "btnSet": "Definir"
126
+ },
127
+ "openChatHotkey": {
128
+ "name": "Abrir chat",
129
+ "descWithKey": "Atalho atual: {hotkey}",
130
+ "descNoKey": "Nenhum atalho definido",
131
+ "btnChange": "Alterar",
132
+ "btnSet": "Definir"
133
+ },
134
+ "newSessionHotkey": {
135
+ "name": "Nova sessão",
136
+ "descWithKey": "Atalho atual: {hotkey}",
137
+ "descNoKey": "Nenhum atalho definido",
138
+ "btnChange": "Alterar",
139
+ "btnSet": "Definir"
140
+ },
141
+ "newTabHotkey": {
142
+ "name": "Nova aba",
143
+ "descWithKey": "Atalho atual: {hotkey}",
144
+ "descNoKey": "Nenhum atalho definido",
145
+ "btnChange": "Alterar",
146
+ "btnSet": "Definir"
147
+ },
148
+ "closeTabHotkey": {
149
+ "name": "Fechar aba",
150
+ "descWithKey": "Atalho atual: {hotkey}",
151
+ "descNoKey": "Nenhum atalho definido",
152
+ "btnChange": "Alterar",
153
+ "btnSet": "Definir"
154
+ },
155
+ "slashCommands": {
156
+ "name": "Comandos e habilidades",
157
+ "desc": "Gerencie comandos e habilidades a nível de vault armazenados em .claude/commands/ e .claude/skills/. Acionados por /nome."
158
+ },
159
+ "hiddenSlashCommands": {
160
+ "name": "Comandos e habilidades ocultos",
161
+ "desc": "Oculta comandos e habilidades específicos do menu suspenso. Útil para ocultar entradas do Claude Code que não são relevantes para o Claudian. Digite os nomes sem a barra inicial, um por linha.",
162
+ "placeholder": "commit\nbuild\ntest"
163
+ },
164
+ "mcpServers": {
165
+ "name": "Servidores MCP",
166
+ "desc": "Gerencie configurações de servidores MCP a nível de vault armazenadas em .claude/mcp.json. Servidores com modo de salvamento de contexto exigem @mention para ativar."
167
+ },
168
+ "plugins": {
169
+ "name": "Plugins do Claude Code",
170
+ "desc": "Gerencie plugins do Claude Code descobertos em ~/.claude/plugins. Plugins ativados são armazenados por vault em .claude/settings.json."
171
+ },
172
+ "subagents": {
173
+ "name": "Subagentes",
174
+ "desc": "Gerencie subagentes a nível de vault armazenados em .claude/agents/. Cada arquivo Markdown define um agente personalizado.",
175
+ "noAgents": "Nenhum subagente configurado. Clique em + para criar um.",
176
+ "deleteConfirm": "Excluir o subagente \"{name}\"?",
177
+ "saveFailed": "Falha ao salvar o subagente: {message}",
178
+ "refreshFailed": "Falha ao atualizar subagentes: {message}",
179
+ "deleteFailed": "Falha ao excluir o subagente: {message}",
180
+ "renameCleanupFailed": "Aviso: não foi possível remover o arquivo antigo de \"{name}\"",
181
+ "created": "Subagente \"{name}\" criado",
182
+ "updated": "Subagente \"{name}\" atualizado",
183
+ "deleted": "Subagente \"{name}\" excluído",
184
+ "duplicateName": "Já existe um agente chamado \"{name}\"",
185
+ "descriptionRequired": "A descrição é obrigatória",
186
+ "promptRequired": "O prompt do sistema é obrigatório",
187
+ "modal": {
188
+ "titleEdit": "Editar subagente",
189
+ "titleAdd": "Adicionar subagente",
190
+ "name": "Nome",
191
+ "nameDesc": "Use apenas letras minúsculas, números e hífens",
192
+ "namePlaceholder": "code-reviewer",
193
+ "description": "Descrição",
194
+ "descriptionDesc": "Breve descrição deste agente",
195
+ "descriptionPlaceholder": "Revisa código em busca de bugs e estilo",
196
+ "advancedOptions": "Opções avançadas",
197
+ "model": "Modelo",
198
+ "modelDesc": "Substituir o modelo deste agente",
199
+ "tools": "Ferramentas",
200
+ "toolsDesc": "Lista de ferramentas permitidas separadas por vírgula (vazio = todas)",
201
+ "disallowedTools": "Ferramentas não permitidas",
202
+ "disallowedToolsDesc": "Lista de ferramentas a desativar separadas por vírgula",
203
+ "skills": "Habilidades",
204
+ "skillsDesc": "Lista de habilidades separadas por vírgula",
205
+ "prompt": "Prompt do sistema",
206
+ "promptDesc": "Instruções para o agente",
207
+ "promptPlaceholder": "Você é um revisor de código. Analise o código fornecido para..."
208
+ }
209
+ },
210
+ "safety": "Segurança",
211
+ "loadUserSettings": {
212
+ "name": "Carregar configurações do usuário Claude",
213
+ "desc": "Carrega ~/.claude/settings.json. Quando habilitado, as regras de permissão do usuário podem ignorar o modo seguro."
214
+ },
215
+ "claudeSafeMode": {
216
+ "name": "Safe mode",
217
+ "desc": "Permission mode used when the Safe toggle is active."
218
+ },
219
+ "codexSafeMode": {
220
+ "name": "Safe mode",
221
+ "desc": "Sandbox mode used when the Safe toggle is active."
222
+ },
223
+ "environment": "Ambiente",
224
+ "customVariables": {
225
+ "name": "Variáveis personalizadas",
226
+ "desc": "Variáveis de ambiente para Claude SDK (formato KEY=VALUE, uma por linha). Prefixo export suportado."
227
+ },
228
+ "envSnippets": {
229
+ "name": "Snippets",
230
+ "addBtn": "Adicionar snippet",
231
+ "noSnippets": "Nenhum snippet de ambiente salvo. Clique em + para salvar sua configuração atual.",
232
+ "nameRequired": "Por favor, insira um nome para o snippet",
233
+ "modal": {
234
+ "titleEdit": "Editar snippet",
235
+ "titleSave": "Salvar snippet",
236
+ "name": "Nome",
237
+ "namePlaceholder": "Um nome descritivo para esta configuração",
238
+ "description": "Descrição",
239
+ "descPlaceholder": "Descrição opcional",
240
+ "envVars": "Variáveis de ambiente",
241
+ "envVarsPlaceholder": "Formato KEY=VALUE, uma por linha (prefixo export suportado)",
242
+ "save": "Salvar",
243
+ "update": "Atualizar",
244
+ "cancel": "Cancelar"
245
+ }
246
+ },
247
+ "customModelOverrides": {
248
+ "name": "Substituições de modelos personalizados",
249
+ "desc": "Defina aliases no seletor de modelos e tamanhos de janela de contexto para modelos personalizados."
250
+ },
251
+ "customModelAliases": {
252
+ "placeholder": "Alias"
253
+ },
254
+ "customContextLimits": {
255
+ "name": "Limites de contexto personalizados",
256
+ "desc": "Defina tamanhos de janela de contexto para seus modelos personalizados. Deixe vazio para usar o padrão (200k tokens).",
257
+ "invalid": "Formato inválido. Use: 256k, 1m ou número exato (1000-10000000)."
258
+ },
259
+ "enableOpus1M": {
260
+ "name": "Janela de contexto Opus 1M",
261
+ "desc": "Mostrar Opus 1M no seletor de modelos. Incluído nos planos Max, Team e Enterprise. Usuários de API e Pro precisam de uso adicional."
262
+ },
263
+ "enableSonnet1M": {
264
+ "name": "Janela de contexto Sonnet 1M",
265
+ "desc": "Mostrar Sonnet 1M no seletor de modelos. Requer uso adicional nos planos Max, Team e Enterprise. Usuários de API e Pro precisam de uso adicional."
266
+ },
267
+ "customModels": {
268
+ "name": "Custom models",
269
+ "desc": "Append additional Claude model IDs to the picker, one per line. Environment model overrides still replace the picker.",
270
+ "placeholder": "claude-opus-4-6\nclaude-opus-4-6[1m]\nclaude-opus-4-5-20251101"
271
+ },
272
+ "enableChrome": {
273
+ "name": "Habilitar extensão do Chrome",
274
+ "desc": "Permitir que o Claude interaja com o Chrome através da extensão claude-in-chrome. Requer que a extensão esteja instalada. Requer reinício de sessão."
275
+ },
276
+ "enableBangBash": {
277
+ "name": "Ativar modo bash (!)",
278
+ "desc": "Digite ! com a entrada vazia para entrar no modo bash. Executa comandos diretamente via Node.js child_process. Requer reabrir a visualização.",
279
+ "validation": {
280
+ "noNode": "Node.js não encontrado no PATH. Instale o Node.js ou verifique a configuração do PATH."
281
+ }
282
+ },
283
+ "maxTabs": {
284
+ "name": "Máximo de abas de chat",
285
+ "desc": "Número máximo de abas de chat simultâneas (3-10). Cada aba usa uma sessão Claude separada.",
286
+ "warning": "Mais de 5 abas pode afetar o desempenho e o uso de memória."
287
+ },
288
+ "enableAutoScroll": {
289
+ "name": "Rolagem automática durante streaming",
290
+ "desc": "Rolar automaticamente para baixo enquanto o Claude transmite respostas. Desativar para ficar no topo e ler desde o início."
291
+ },
292
+ "deferMathRenderingDuringStreaming": {
293
+ "name": "Adiar renderização matemática durante streaming",
294
+ "desc": "Mostrar LaTeX bruto enquanto a resposta é transmitida e renderizar a matemática uma vez quando cada bloco de texto terminar."
295
+ },
296
+ "expandFileEditsByDefault": {
297
+ "name": "Expandir edições de arquivo por padrão",
298
+ "desc": "Mostrar os diffs de Write e Edit expandidos quando aparecerem pela primeira vez."
299
+ },
300
+ "chatViewPlacement": {
301
+ "name": "Abrir Claudian em",
302
+ "desc": "Escolha onde o painel de chat abre quando é criado",
303
+ "rightSidebar": "Barra lateral direita",
304
+ "leftSidebar": "Barra lateral esquerda",
305
+ "mainTab": "Aba do editor principal"
306
+ },
307
+ "cliPath": {
308
+ "name": "Caminho CLI Claude",
309
+ "desc": "Caminho personalizado para Claude Code CLI. Deixe vazio para detecção automática.",
310
+ "descWindows": "Para o instalador nativo, use claude.exe. Para instalações com npm/pnpm/yarn ou outros gerenciadores de pacotes, use o caminho cli-wrapper.cjs (não claude.cmd).",
311
+ "descUnix": "Cole a saída de \"which claude\" — funciona tanto para instalações nativas quanto npm/pnpm/yarn.",
312
+ "validation": {
313
+ "notExist": "Caminho não existe",
314
+ "isDirectory": "Caminho é um diretório, não um arquivo"
315
+ }
316
+ },
317
+ "language": {
318
+ "name": "Idioma",
319
+ "desc": "Alterar o idioma de exibição da interface do plugin"
320
+ }
321
+ }
322
+ }
@@ -0,0 +1,322 @@
1
+ {
2
+ "common": {
3
+ "save": "Сохранить",
4
+ "cancel": "Отмена",
5
+ "delete": "Удалить",
6
+ "edit": "Редактировать",
7
+ "add": "Добавить",
8
+ "remove": "Удалить",
9
+ "clear": "Очистить",
10
+ "clearAll": "Очистить всё",
11
+ "loading": "Загрузка",
12
+ "error": "Ошибка",
13
+ "success": "Успех",
14
+ "warning": "Предупреждение",
15
+ "confirm": "Подтвердить",
16
+ "settings": "Настройки",
17
+ "advanced": "Дополнительно",
18
+ "enabled": "Включено",
19
+ "disabled": "Отключено",
20
+ "platform": "Платформа",
21
+ "refresh": "Обновить",
22
+ "rewind": "Откатить"
23
+ },
24
+ "chat": {
25
+ "rewind": {
26
+ "confirmMessage": "Откатить до этой точки? Изменения файлов после этого сообщения будут отменены. Откат не затрагивает файлы, отредактированные вручную или через bash.",
27
+ "confirmMessageConversationOnly": "Откатить разговор до этой точки? Изменения файлов будут сохранены.",
28
+ "confirmButton": "Откатить",
29
+ "ariaLabel": "Откатить сюда",
30
+ "menuConversationOnly": "Откатить только разговор",
31
+ "menuCodeAndConversation": "Откатить код + разговор",
32
+ "notice": "Откачено: восстановлено файлов — {count}",
33
+ "noticeConversationOnly": "Разговор откачен; изменения файлов сохранены",
34
+ "noticeSaveFailed": "Откат выполнен: восстановлено файлов — {count}, но не удалось сохранить состояние: {error}",
35
+ "noticeConversationOnlySaveFailed": "Разговор откачен, но не удалось сохранить состояние: {error}",
36
+ "failed": "Ошибка отката: {error}",
37
+ "cannot": "Невозможно откатить: {error}",
38
+ "unavailableStreaming": "Невозможно откатить во время потоковой передачи",
39
+ "unavailableNoUuid": "Невозможно откатить: отсутствуют идентификаторы сообщений"
40
+ },
41
+ "fork": {
42
+ "ariaLabel": "Ответвить разговор",
43
+ "chooseTarget": "Ответвить разговор",
44
+ "targetNewTab": "Новая вкладка",
45
+ "targetCurrentTab": "Текущая вкладка",
46
+ "maxTabsReached": "Невозможно ответвить: достигнут максимум {count} вкладок",
47
+ "notice": "Ответвлено в новую вкладку",
48
+ "noticeCurrentTab": "Ответвлено в текущей вкладке",
49
+ "failed": "Ошибка ответвления: {error}",
50
+ "unavailableStreaming": "Невозможно ответвить во время потоковой передачи",
51
+ "unavailableNoUuid": "Невозможно ответвить: отсутствуют идентификаторы сообщений",
52
+ "unavailableNoResponse": "Невозможно ответвить: нет ответа для ответвления",
53
+ "errorMessageNotFound": "Сообщение не найдено",
54
+ "errorNoSession": "Идентификатор сессии недоступен",
55
+ "errorNoActiveTab": "Нет активной вкладки",
56
+ "commandNoMessages": "Нельзя форкнуть: в диалоге нет сообщений",
57
+ "commandNoAssistantUuid": "Нельзя форкнуть: нет ответа ассистента с идентификаторами"
58
+ },
59
+ "bangBash": {
60
+ "placeholder": "> Выполнить команду bash...",
61
+ "commandPanel": "Панель команд",
62
+ "copyAriaLabel": "Скопировать вывод последней команды",
63
+ "clearAriaLabel": "Очистить вывод bash",
64
+ "commandLabel": "{command}",
65
+ "statusLabel": "Статус: {status}",
66
+ "collapseOutput": "Свернуть вывод команды",
67
+ "expandOutput": "Развернуть вывод команды",
68
+ "running": "Выполняется...",
69
+ "copyFailed": "Не удалось скопировать в буфер обмена"
70
+ }
71
+ },
72
+ "settings": {
73
+ "title": "Настройки Claudian",
74
+ "tabs": {
75
+ "general": "Общие",
76
+ "claude": "Claude",
77
+ "codex": "Codex"
78
+ },
79
+ "display": "Отображение",
80
+ "conversations": "Разговоры",
81
+ "content": "Содержание",
82
+ "input": "Ввод",
83
+ "setup": "Настройка",
84
+ "models": "Модели",
85
+ "experimental": "Экспериментальное",
86
+ "userName": {
87
+ "name": "Как Claudian должен обращаться к вам?",
88
+ "desc": "Ваше имя для персонализированных приветствий (оставьте пустым для общих приветствий)"
89
+ },
90
+ "excludedTags": {
91
+ "name": "Исключенные теги",
92
+ "desc": "Заметки с этими тегами не будут автоматически загружаться как контекст (по одному в строке, без #)"
93
+ },
94
+ "mediaFolder": {
95
+ "name": "Папка медиафайлов",
96
+ "desc": "Папка с вложениями/изображениями. Когда заметки используют ![[image.jpg]], Claude будет искать здесь. Оставьте пустым для корня хранилища."
97
+ },
98
+ "systemPrompt": {
99
+ "name": "Пользовательский системный промпт",
100
+ "desc": "Дополнительные инструкции, добавляемые к системному промпту по умолчанию"
101
+ },
102
+ "autoTitle": {
103
+ "name": "Автоматически генерировать заголовки бесед",
104
+ "desc": "Автоматически генерировать заголовки бесед после первого сообщения пользователя."
105
+ },
106
+ "titleModel": {
107
+ "name": "Модель генерации заголовков",
108
+ "desc": "Модель, используемая для автоматической генерации заголовков бесед.",
109
+ "auto": "Авто (Haiku)"
110
+ },
111
+ "navMappings": {
112
+ "name": "Сопоставления навигации в стиле Vim",
113
+ "desc": "По одному сопоставлению в строке. Формат: \"map <ключ> <действие>\" (действия: scrollUp, scrollDown, focusInput)."
114
+ },
115
+ "requireCommandOrControlEnterToSend": {
116
+ "name": "Требовать Command/Ctrl+Enter для отправки",
117
+ "desc": "Если включено, Enter вставляет новую строку. Command+Enter отправляет на macOS; Ctrl+Enter отправляет на Windows и Linux."
118
+ },
119
+ "hotkeys": "Горячие клавиши",
120
+ "inlineEditHotkey": {
121
+ "name": "Инлайн-редактирование",
122
+ "descWithKey": "Текущая клавиша: {hotkey}",
123
+ "descNoKey": "Клавиша не назначена",
124
+ "btnChange": "Изменить",
125
+ "btnSet": "Назначить"
126
+ },
127
+ "openChatHotkey": {
128
+ "name": "Открыть чат",
129
+ "descWithKey": "Текущая клавиша: {hotkey}",
130
+ "descNoKey": "Клавиша не назначена",
131
+ "btnChange": "Изменить",
132
+ "btnSet": "Назначить"
133
+ },
134
+ "newSessionHotkey": {
135
+ "name": "Новая сессия",
136
+ "descWithKey": "Текущая клавиша: {hotkey}",
137
+ "descNoKey": "Клавиша не назначена",
138
+ "btnChange": "Изменить",
139
+ "btnSet": "Назначить"
140
+ },
141
+ "newTabHotkey": {
142
+ "name": "Новая вкладка",
143
+ "descWithKey": "Текущая клавиша: {hotkey}",
144
+ "descNoKey": "Клавиша не назначена",
145
+ "btnChange": "Изменить",
146
+ "btnSet": "Назначить"
147
+ },
148
+ "closeTabHotkey": {
149
+ "name": "Закрыть вкладку",
150
+ "descWithKey": "Текущая клавиша: {hotkey}",
151
+ "descNoKey": "Клавиша не назначена",
152
+ "btnChange": "Изменить",
153
+ "btnSet": "Назначить"
154
+ },
155
+ "slashCommands": {
156
+ "name": "Команды и навыки",
157
+ "desc": "Управление командами и навыками на уровне хранилища, расположенными в .claude/commands/ и .claude/skills/. Запускаются через /имя."
158
+ },
159
+ "hiddenSlashCommands": {
160
+ "name": "Скрытые команды и навыки",
161
+ "desc": "Скрыть определённые команды и навыки из выпадающего списка. Полезно для скрытия записей Claude Code, которые не актуальны для Claudian. Вводите имена без начального слэша, по одному на строку.",
162
+ "placeholder": "commit\nbuild\ntest"
163
+ },
164
+ "mcpServers": {
165
+ "name": "MCP серверы",
166
+ "desc": "Управление конфигурациями MCP-серверов на уровне хранилища в .claude/mcp.json. Серверы с режимом сохранения контекста требуют @mention для активации."
167
+ },
168
+ "plugins": {
169
+ "name": "Плагины Claude Code",
170
+ "desc": "Управление плагинами Claude Code из ~/.claude/plugins. Включенные плагины сохраняются для каждого хранилища в .claude/settings.json."
171
+ },
172
+ "subagents": {
173
+ "name": "Субагенты",
174
+ "desc": "Управление субагентами на уровне хранилища в .claude/agents/. Каждый Markdown-файл определяет одного пользовательского агента.",
175
+ "noAgents": "Субагенты не настроены. Нажмите +, чтобы создать одного.",
176
+ "deleteConfirm": "Удалить субагента \"{name}\"?",
177
+ "saveFailed": "Не удалось сохранить субагента: {message}",
178
+ "refreshFailed": "Не удалось обновить субагентов: {message}",
179
+ "deleteFailed": "Не удалось удалить субагента: {message}",
180
+ "renameCleanupFailed": "Предупреждение: не удалось удалить старый файл для \"{name}\"",
181
+ "created": "Субагент \"{name}\" создан",
182
+ "updated": "Субагент \"{name}\" обновлён",
183
+ "deleted": "Субагент \"{name}\" удалён",
184
+ "duplicateName": "Агент с именем \"{name}\" уже существует",
185
+ "descriptionRequired": "Описание обязательно",
186
+ "promptRequired": "Системный промпт обязателен",
187
+ "modal": {
188
+ "titleEdit": "Редактировать субагента",
189
+ "titleAdd": "Добавить субагента",
190
+ "name": "Имя",
191
+ "nameDesc": "Только строчные буквы, цифры и дефисы",
192
+ "namePlaceholder": "code-reviewer",
193
+ "description": "Описание",
194
+ "descriptionDesc": "Краткое описание этого агента",
195
+ "descriptionPlaceholder": "Проверяет код на ошибки и стиль",
196
+ "advancedOptions": "Дополнительные параметры",
197
+ "model": "Модель",
198
+ "modelDesc": "Переопределение модели для этого агента",
199
+ "tools": "Инструменты",
200
+ "toolsDesc": "Список разрешённых инструментов через запятую (пусто = все)",
201
+ "disallowedTools": "Запрещённые инструменты",
202
+ "disallowedToolsDesc": "Список инструментов, которые нужно запретить, через запятую",
203
+ "skills": "Навыки",
204
+ "skillsDesc": "Список навыков через запятую",
205
+ "prompt": "Системный промпт",
206
+ "promptDesc": "Инструкции для агента",
207
+ "promptPlaceholder": "Вы специалист по проверке кода. Проанализируйте предоставленный код на предмет..."
208
+ }
209
+ },
210
+ "safety": "Безопасность",
211
+ "loadUserSettings": {
212
+ "name": "Загружать пользовательские настройки Claude",
213
+ "desc": "Загружает ~/.claude/settings.json. При включении пользовательские правила разрешений Claude Code могут обходить безопасный режим."
214
+ },
215
+ "claudeSafeMode": {
216
+ "name": "Safe mode",
217
+ "desc": "Permission mode used when the Safe toggle is active."
218
+ },
219
+ "codexSafeMode": {
220
+ "name": "Safe mode",
221
+ "desc": "Sandbox mode used when the Safe toggle is active."
222
+ },
223
+ "environment": "Окружение",
224
+ "customVariables": {
225
+ "name": "Пользовательские переменные",
226
+ "desc": "Переменные окружения для Claude SDK (формат KEY=VALUE, по одной в строке). Префикс export поддерживается."
227
+ },
228
+ "envSnippets": {
229
+ "name": "Сниппеты",
230
+ "addBtn": "Добавить сниппет",
231
+ "noSnippets": "Нет сохраненных сниппетов окружения. Нажмите +, чтобы сохранить текущую конфигурацию.",
232
+ "nameRequired": "Пожалуйста, введите название сниппета",
233
+ "modal": {
234
+ "titleEdit": "Редактировать сниппет",
235
+ "titleSave": "Сохранить сниппет",
236
+ "name": "Имя",
237
+ "namePlaceholder": "Описательное название для этой конфигурации",
238
+ "description": "Описание",
239
+ "descPlaceholder": "Опциональное описание",
240
+ "envVars": "Переменные окружения",
241
+ "envVarsPlaceholder": "Формат KEY=VALUE, по одной в строке (префикс export поддерживается)",
242
+ "save": "Сохранить",
243
+ "update": "Обновить",
244
+ "cancel": "Отмена"
245
+ }
246
+ },
247
+ "customModelOverrides": {
248
+ "name": "Переопределения пользовательских моделей",
249
+ "desc": "Настройте псевдонимы в селекторе моделей и размеры окна контекста для пользовательских моделей."
250
+ },
251
+ "customModelAliases": {
252
+ "placeholder": "Псевдоним"
253
+ },
254
+ "customContextLimits": {
255
+ "name": "Пользовательские лимиты контекста",
256
+ "desc": "Установите размеры окна контекста для ваших пользовательских моделей. Оставьте пустым для использования значения по умолчанию (200k токенов).",
257
+ "invalid": "Неверный формат. Используйте: 256k, 1m или точное число (1000-10000000)."
258
+ },
259
+ "enableOpus1M": {
260
+ "name": "Контекстное окно Opus 1M",
261
+ "desc": "Показать Opus 1M в селекторе моделей. Включено в планы Max, Team и Enterprise. Пользователям API и Pro требуется дополнительное использование."
262
+ },
263
+ "enableSonnet1M": {
264
+ "name": "Контекстное окно Sonnet 1M",
265
+ "desc": "Показать Sonnet 1M в селекторе моделей. Требуется дополнительное использование в планах Max, Team и Enterprise. Пользователям API и Pro требуется дополнительное использование."
266
+ },
267
+ "customModels": {
268
+ "name": "Custom models",
269
+ "desc": "Append additional Claude model IDs to the picker, one per line. Environment model overrides still replace the picker.",
270
+ "placeholder": "claude-opus-4-6\nclaude-opus-4-6[1m]\nclaude-opus-4-5-20251101"
271
+ },
272
+ "enableChrome": {
273
+ "name": "Включить расширение Chrome",
274
+ "desc": "Разрешить Claude взаимодействовать с Chrome через расширение claude-in-chrome. Требуется установка расширения. Требуется перезапуск сессии."
275
+ },
276
+ "enableBangBash": {
277
+ "name": "Включить режим bash (!)",
278
+ "desc": "Введите ! в пустом поле ввода, чтобы перейти в режим bash. Команды выполняются напрямую через Node.js child_process. Требуется повторно открыть представление.",
279
+ "validation": {
280
+ "noNode": "Node.js не найден в PATH. Установите Node.js или проверьте настройку PATH."
281
+ }
282
+ },
283
+ "maxTabs": {
284
+ "name": "Максимум вкладок чата",
285
+ "desc": "Максимальное количество одновременных вкладок чата (3-10). Каждая вкладка использует отдельную сессию Claude.",
286
+ "warning": "Более 5 вкладок может повлиять на производительность и использование памяти."
287
+ },
288
+ "enableAutoScroll": {
289
+ "name": "Автопрокрутка во время потоковой передачи",
290
+ "desc": "Автоматически прокручивать вниз, пока Claude передает ответы. Отключите, чтобы оставаться наверху и читать с начала."
291
+ },
292
+ "deferMathRenderingDuringStreaming": {
293
+ "name": "Отложить рендеринг формул во время потока",
294
+ "desc": "Показывать исходный LaTeX во время потоковой передачи и рендерить формулы один раз после завершения каждого текстового блока."
295
+ },
296
+ "expandFileEditsByDefault": {
297
+ "name": "Раскрывать правки файлов по умолчанию",
298
+ "desc": "Показывать diff для Write и Edit раскрытым при первом появлении."
299
+ },
300
+ "chatViewPlacement": {
301
+ "name": "Открывать Claudian в",
302
+ "desc": "Выберите, где открывается панель чата при создании",
303
+ "rightSidebar": "Правая боковая панель",
304
+ "leftSidebar": "Левая боковая панель",
305
+ "mainTab": "Основная вкладка редактора"
306
+ },
307
+ "cliPath": {
308
+ "name": "Путь к CLI Claude",
309
+ "desc": "Пользовательский путь к Claude Code CLI. Оставьте пустым для автоматического определения.",
310
+ "descWindows": "Для нативного установщика используйте claude.exe. Для установок через npm/pnpm/yarn или другие менеджеры пакетов используйте путь к cli-wrapper.cjs (не claude.cmd).",
311
+ "descUnix": "Вставьте вывод команды \"which claude\" — работает как для нативных установок, так и для npm/pnpm/yarn.",
312
+ "validation": {
313
+ "notExist": "Путь не существует",
314
+ "isDirectory": "Путь является директорией, а не файлом"
315
+ }
316
+ },
317
+ "language": {
318
+ "name": "Язык",
319
+ "desc": "Изменить язык интерфейса плагина"
320
+ }
321
+ }
322
+ }