@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": "Guardar",
4
+ "cancel": "Cancelar",
5
+ "delete": "Eliminar",
6
+ "edit": "Editar",
7
+ "add": "Agregar",
8
+ "remove": "Eliminar",
9
+ "clear": "Limpiar",
10
+ "clearAll": "Limpiar todo",
11
+ "loading": "Cargando",
12
+ "error": "Error",
13
+ "success": "Éxito",
14
+ "warning": "Advertencia",
15
+ "confirm": "Confirmar",
16
+ "settings": "Configuración",
17
+ "advanced": "Avanzado",
18
+ "enabled": "Habilitado",
19
+ "disabled": "Deshabilitado",
20
+ "platform": "Plataforma",
21
+ "refresh": "Actualizar",
22
+ "rewind": "Rebobinar"
23
+ },
24
+ "chat": {
25
+ "rewind": {
26
+ "confirmMessage": "¿Rebobinar a este punto? Los cambios de archivos después de este mensaje serán revertidos. El rebobinado no afecta archivos editados manualmente o mediante bash.",
27
+ "confirmMessageConversationOnly": "¿Rebobinar la conversación hasta este punto? Se conservarán los cambios de archivos.",
28
+ "confirmButton": "Rebobinar",
29
+ "ariaLabel": "Rebobinar hasta aquí",
30
+ "menuConversationOnly": "Rebobinar solo conversación",
31
+ "menuCodeAndConversation": "Rebobinar código + conversación",
32
+ "notice": "Rebobinado: {count} archivo(s) revertido(s)",
33
+ "noticeConversationOnly": "Conversación rebobinada; cambios de archivos conservados",
34
+ "noticeSaveFailed": "Rebobinado: {count} archivo(s) revertido(s), pero no se pudo guardar el estado: {error}",
35
+ "noticeConversationOnlySaveFailed": "Conversación rebobinada, pero no se pudo guardar el estado: {error}",
36
+ "failed": "Error al rebobinar: {error}",
37
+ "cannot": "No se puede rebobinar: {error}",
38
+ "unavailableStreaming": "No se puede rebobinar durante la transmisión",
39
+ "unavailableNoUuid": "No se puede rebobinar: faltan identificadores de mensaje"
40
+ },
41
+ "fork": {
42
+ "ariaLabel": "Bifurcar conversación",
43
+ "chooseTarget": "Bifurcar conversación",
44
+ "targetNewTab": "Nueva pestaña",
45
+ "targetCurrentTab": "Pestaña actual",
46
+ "maxTabsReached": "No se puede bifurcar: máximo de {count} pestañas alcanzado",
47
+ "notice": "Bifurcado a nueva pestaña",
48
+ "noticeCurrentTab": "Bifurcado en pestaña actual",
49
+ "failed": "Error al bifurcar: {error}",
50
+ "unavailableStreaming": "No se puede bifurcar durante la transmisión",
51
+ "unavailableNoUuid": "No se puede bifurcar: faltan identificadores de mensaje",
52
+ "unavailableNoResponse": "No se puede bifurcar: no hay respuesta para bifurcar",
53
+ "errorMessageNotFound": "Mensaje no encontrado",
54
+ "errorNoSession": "No hay ningún ID de sesión disponible",
55
+ "errorNoActiveTab": "No hay ninguna pestaña activa",
56
+ "commandNoMessages": "No se puede bifurcar: no hay mensajes en la conversación",
57
+ "commandNoAssistantUuid": "No se puede bifurcar: no hay respuesta del asistente con identificadores"
58
+ },
59
+ "bangBash": {
60
+ "placeholder": "> Ejecuta un comando bash...",
61
+ "commandPanel": "Panel de comandos",
62
+ "copyAriaLabel": "Copiar la salida del comando más reciente",
63
+ "clearAriaLabel": "Limpiar la salida de bash",
64
+ "commandLabel": "{command}",
65
+ "statusLabel": "Estado: {status}",
66
+ "collapseOutput": "Contraer la salida del comando",
67
+ "expandOutput": "Expandir la salida del comando",
68
+ "running": "Ejecutando...",
69
+ "copyFailed": "No se pudo copiar al portapapeles"
70
+ }
71
+ },
72
+ "settings": {
73
+ "title": "Configuración de Claudian",
74
+ "tabs": {
75
+ "general": "General",
76
+ "claude": "Claude",
77
+ "codex": "Codex"
78
+ },
79
+ "display": "Pantalla",
80
+ "conversations": "Conversaciones",
81
+ "content": "Contenido",
82
+ "input": "Entrada",
83
+ "setup": "Configuración",
84
+ "models": "Modelos",
85
+ "experimental": "Experimental",
86
+ "userName": {
87
+ "name": "¿Cómo debería Claudian llamarte?",
88
+ "desc": "Tu nombre para saludos personalizados (dejar vacío para saludos genéricos)"
89
+ },
90
+ "excludedTags": {
91
+ "name": "Etiquetas excluidas",
92
+ "desc": "Las notas con estas etiquetas no se cargarán automáticamente como contexto (una por línea, sin #)"
93
+ },
94
+ "mediaFolder": {
95
+ "name": "Carpeta de medios",
96
+ "desc": "Carpeta que contiene archivos adjuntos/imagenes. Cuando las notas usan ![[image.jpg]], Claude buscará aquí. Dejar vacío para la raíz del depósito."
97
+ },
98
+ "systemPrompt": {
99
+ "name": "Prompt de sistema personalizado",
100
+ "desc": "Instrucciones adicionales añadidas al prompt de sistema por defecto"
101
+ },
102
+ "autoTitle": {
103
+ "name": "Generar automáticamente títulos de conversación",
104
+ "desc": "Genera automáticamente títulos de conversación después del primer mensaje del usuario."
105
+ },
106
+ "titleModel": {
107
+ "name": "Modelo de generación de títulos",
108
+ "desc": "Modelo utilizado para generar automáticamente títulos de conversación.",
109
+ "auto": "Automático (Haiku)"
110
+ },
111
+ "navMappings": {
112
+ "name": "Mapeos de navegación estilo Vim",
113
+ "desc": "Un mapeo por línea. Formato: \"map <tecla> <acción>\" (acciones: scrollUp, scrollDown, focusInput)."
114
+ },
115
+ "requireCommandOrControlEnterToSend": {
116
+ "name": "Requerir Command/Ctrl+Enter para enviar",
117
+ "desc": "Cuando está activado, Enter inserta un salto de línea. Command+Enter envía en macOS; Ctrl+Enter envía en Windows y Linux."
118
+ },
119
+ "hotkeys": "Atajos de teclado",
120
+ "inlineEditHotkey": {
121
+ "name": "Edición en línea",
122
+ "descWithKey": "Atajo actual: {hotkey}",
123
+ "descNoKey": "Sin atajo configurado",
124
+ "btnChange": "Cambiar",
125
+ "btnSet": "Configurar"
126
+ },
127
+ "openChatHotkey": {
128
+ "name": "Abrir chat",
129
+ "descWithKey": "Atajo actual: {hotkey}",
130
+ "descNoKey": "Sin atajo configurado",
131
+ "btnChange": "Cambiar",
132
+ "btnSet": "Configurar"
133
+ },
134
+ "newSessionHotkey": {
135
+ "name": "Nueva sesión",
136
+ "descWithKey": "Atajo actual: {hotkey}",
137
+ "descNoKey": "Sin atajo configurado",
138
+ "btnChange": "Cambiar",
139
+ "btnSet": "Configurar"
140
+ },
141
+ "newTabHotkey": {
142
+ "name": "Nueva pestaña",
143
+ "descWithKey": "Atajo actual: {hotkey}",
144
+ "descNoKey": "Sin atajo configurado",
145
+ "btnChange": "Cambiar",
146
+ "btnSet": "Configurar"
147
+ },
148
+ "closeTabHotkey": {
149
+ "name": "Cerrar pestaña",
150
+ "descWithKey": "Atajo actual: {hotkey}",
151
+ "descNoKey": "Sin atajo configurado",
152
+ "btnChange": "Cambiar",
153
+ "btnSet": "Configurar"
154
+ },
155
+ "slashCommands": {
156
+ "name": "Comandos y habilidades",
157
+ "desc": "Administra comandos y habilidades a nivel de vault almacenados en .claude/commands/ y .claude/skills/. Activados por /nombre."
158
+ },
159
+ "hiddenSlashCommands": {
160
+ "name": "Comandos y habilidades ocultos",
161
+ "desc": "Oculta comandos y habilidades específicos del menú desplegable. Útil para ocultar entradas de Claude Code que no son relevantes para Claudian. Ingresa los nombres sin la barra inicial, uno por línea.",
162
+ "placeholder": "commit\nbuild\ntest"
163
+ },
164
+ "mcpServers": {
165
+ "name": "Servidores MCP",
166
+ "desc": "Administra configuraciones de servidores MCP a nivel de vault almacenadas en .claude/mcp.json. Los servidores con modo de guardado de contexto requieren @mention para activarse."
167
+ },
168
+ "plugins": {
169
+ "name": "Plugins de Claude Code",
170
+ "desc": "Administra plugins de Claude Code descubiertos desde ~/.claude/plugins. Los plugins habilitados se almacenan por vault en .claude/settings.json."
171
+ },
172
+ "subagents": {
173
+ "name": "Subagentes",
174
+ "desc": "Administra subagentes a nivel de vault almacenados en .claude/agents/. Cada archivo Markdown define un agente personalizado.",
175
+ "noAgents": "No hay subagentes configurados. Haz clic en + para crear uno.",
176
+ "deleteConfirm": "¿Eliminar el subagente \"{name}\"?",
177
+ "saveFailed": "No se pudo guardar el subagente: {message}",
178
+ "refreshFailed": "No se pudieron actualizar los subagentes: {message}",
179
+ "deleteFailed": "No se pudo eliminar el subagente: {message}",
180
+ "renameCleanupFailed": "Advertencia: no se pudo eliminar el archivo anterior de \"{name}\"",
181
+ "created": "Se creó el subagente \"{name}\"",
182
+ "updated": "Se actualizó el subagente \"{name}\"",
183
+ "deleted": "Se eliminó el subagente \"{name}\"",
184
+ "duplicateName": "Ya existe un agente con el nombre \"{name}\"",
185
+ "descriptionRequired": "La descripción es obligatoria",
186
+ "promptRequired": "El prompt del sistema es obligatorio",
187
+ "modal": {
188
+ "titleEdit": "Editar subagente",
189
+ "titleAdd": "Agregar subagente",
190
+ "name": "Nombre",
191
+ "nameDesc": "Solo letras minúsculas, números y guiones",
192
+ "namePlaceholder": "code-reviewer",
193
+ "description": "Descripción",
194
+ "descriptionDesc": "Descripción breve de este agente",
195
+ "descriptionPlaceholder": "Revisa código en busca de errores y estilo",
196
+ "advancedOptions": "Opciones avanzadas",
197
+ "model": "Modelo",
198
+ "modelDesc": "Modelo alternativo para este agente",
199
+ "tools": "Herramientas",
200
+ "toolsDesc": "Lista separada por comas de las herramientas permitidas (vacío = todas)",
201
+ "disallowedTools": "Herramientas no permitidas",
202
+ "disallowedToolsDesc": "Lista separada por comas de herramientas no permitidas",
203
+ "skills": "Habilidades",
204
+ "skillsDesc": "Lista separada por comas de habilidades",
205
+ "prompt": "Prompt del sistema",
206
+ "promptDesc": "Instrucciones para el agente",
207
+ "promptPlaceholder": "Eres un revisor de código. Analiza el código proporcionado para..."
208
+ }
209
+ },
210
+ "safety": "Seguridad",
211
+ "loadUserSettings": {
212
+ "name": "Cargar configuración de usuario Claude",
213
+ "desc": "Carga ~/.claude/settings.json. Cuando está habilitado, las reglas de permisos del usuario pueden eludir el 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": "Entorno",
224
+ "customVariables": {
225
+ "name": "Variables personalizadas",
226
+ "desc": "Variables de entorno para Claude SDK (formato KEY=VALUE, una por línea). Prefijo export soportado."
227
+ },
228
+ "envSnippets": {
229
+ "name": "Fragmentos",
230
+ "addBtn": "Añadir fragmento",
231
+ "noSnippets": "No hay fragmentos de entorno guardados. Haga clic en + para guardar su configuración actual.",
232
+ "nameRequired": "Por favor ingrese un nombre para el fragmento",
233
+ "modal": {
234
+ "titleEdit": "Editar fragmento",
235
+ "titleSave": "Guardar fragmento",
236
+ "name": "Nombre",
237
+ "namePlaceholder": "Un nombre descriptivo para esta configuración",
238
+ "description": "Descripción",
239
+ "descPlaceholder": "Descripción opcional",
240
+ "envVars": "Variables de entorno",
241
+ "envVarsPlaceholder": "Formato KEY=VALUE, una por línea (prefijo export soportado)",
242
+ "save": "Guardar",
243
+ "update": "Actualizar",
244
+ "cancel": "Cancelar"
245
+ }
246
+ },
247
+ "customModelOverrides": {
248
+ "name": "Anulaciones de modelos personalizados",
249
+ "desc": "Configure alias en el selector de modelos y tamaños de ventana de contexto para modelos personalizados."
250
+ },
251
+ "customModelAliases": {
252
+ "placeholder": "Alias"
253
+ },
254
+ "customContextLimits": {
255
+ "name": "Límites de contexto personalizados",
256
+ "desc": "Establezca tamaños de ventana de contexto para sus modelos personalizados. Deje vacío para usar el valor predeterminado (200k tokens).",
257
+ "invalid": "Formato inválido. Use: 256k, 1m o número exacto (1000-10000000)."
258
+ },
259
+ "enableOpus1M": {
260
+ "name": "Ventana de contexto Opus 1M",
261
+ "desc": "Mostrar Opus 1M en el selector de modelos. Incluido en planes Max, Team y Enterprise. Usuarios de API y Pro necesitan uso adicional."
262
+ },
263
+ "enableSonnet1M": {
264
+ "name": "Ventana de contexto Sonnet 1M",
265
+ "desc": "Mostrar Sonnet 1M en el selector de modelos. Requiere uso adicional en planes Max, Team y Enterprise. Usuarios de API y Pro necesitan 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 extensión de Chrome",
274
+ "desc": "Permitir que Claude interactúe con Chrome a través de la extensión claude-in-chrome. Requiere que la extensión esté instalada. Requiere reinicio de sesión."
275
+ },
276
+ "enableBangBash": {
277
+ "name": "Habilitar modo bash (!)",
278
+ "desc": "Escribe ! en una entrada vacía para entrar en modo bash. Ejecuta comandos directamente mediante Node.js child_process. Requiere volver a abrir la vista.",
279
+ "validation": {
280
+ "noNode": "Node.js no se encontró en PATH. Instala Node.js o revisa tu configuración de PATH."
281
+ }
282
+ },
283
+ "maxTabs": {
284
+ "name": "Máximo de pestañas de chat",
285
+ "desc": "Número máximo de pestañas de chat simultáneas (3-10). Cada pestaña usa una sesión de Claude separada.",
286
+ "warning": "Más de 5 pestañas puede afectar el rendimiento y el uso de memoria."
287
+ },
288
+ "enableAutoScroll": {
289
+ "name": "Desplazamiento automático durante streaming",
290
+ "desc": "Desplazarse automáticamente hacia abajo mientras Claude transmite respuestas. Desactivar para quedarse arriba y leer desde el principio."
291
+ },
292
+ "deferMathRenderingDuringStreaming": {
293
+ "name": "Diferir renderizado matemático durante streaming",
294
+ "desc": "Mostrar LaTeX sin procesar mientras se transmite la respuesta y renderizar las fórmulas una vez al completar cada bloque de texto."
295
+ },
296
+ "expandFileEditsByDefault": {
297
+ "name": "Expandir ediciones de archivo por defecto",
298
+ "desc": "Mostrar los diffs de Write y Edit expandidos cuando aparecen por primera vez."
299
+ },
300
+ "chatViewPlacement": {
301
+ "name": "Abrir Claudian en",
302
+ "desc": "Elige dónde se abre el panel de chat cuando se crea",
303
+ "rightSidebar": "Barra lateral derecha",
304
+ "leftSidebar": "Barra lateral izquierda",
305
+ "mainTab": "Pestaña del editor principal"
306
+ },
307
+ "cliPath": {
308
+ "name": "Ruta CLI Claude",
309
+ "desc": "Ruta personalizada a Claude Code CLI. Dejar vacío para detección automática.",
310
+ "descWindows": "Para el instalador nativo, use claude.exe. Para instalaciones con npm/pnpm/yarn u otros gestores de paquetes, use la ruta cli-wrapper.cjs (no claude.cmd).",
311
+ "descUnix": "Pegue la salida de \"which claude\" — funciona tanto para instalaciones nativas como npm/pnpm/yarn.",
312
+ "validation": {
313
+ "notExist": "La ruta no existe",
314
+ "isDirectory": "La ruta es un directorio, no un archivo"
315
+ }
316
+ },
317
+ "language": {
318
+ "name": "Idioma",
319
+ "desc": "Cambiar el idioma de visualización de la interfaz del plugin"
320
+ }
321
+ }
322
+ }
@@ -0,0 +1,322 @@
1
+ {
2
+ "common": {
3
+ "save": "Enregistrer",
4
+ "cancel": "Annuler",
5
+ "delete": "Supprimer",
6
+ "edit": "Modifier",
7
+ "add": "Ajouter",
8
+ "remove": "Supprimer",
9
+ "clear": "Effacer",
10
+ "clearAll": "Tout effacer",
11
+ "loading": "Chargement",
12
+ "error": "Erreur",
13
+ "success": "Succès",
14
+ "warning": "Avertissement",
15
+ "confirm": "Confirmer",
16
+ "settings": "Paramètres",
17
+ "advanced": "Avancé",
18
+ "enabled": "Activé",
19
+ "disabled": "Désactivé",
20
+ "platform": "Plateforme",
21
+ "refresh": "Actualiser",
22
+ "rewind": "Rembobiner"
23
+ },
24
+ "chat": {
25
+ "rewind": {
26
+ "confirmMessage": "Rembobiner jusqu'à ce point ? Les modifications de fichiers après ce message seront annulées. Le rembobinage n'affecte pas les fichiers modifiés manuellement ou via bash.",
27
+ "confirmMessageConversationOnly": "Rembobiner la conversation jusqu'à ce point ? Les modifications de fichiers seront conservées.",
28
+ "confirmButton": "Rembobiner",
29
+ "ariaLabel": "Rembobiner jusqu'ici",
30
+ "menuConversationOnly": "Rembobiner la conversation seule",
31
+ "menuCodeAndConversation": "Rembobiner code + conversation",
32
+ "notice": "Rembobiné : {count} fichier(s) restauré(s)",
33
+ "noticeConversationOnly": "Conversation rembobinée ; modifications de fichiers conservées",
34
+ "noticeSaveFailed": "Rembobiné : {count} fichier(s) restauré(s), mais impossible d'enregistrer l'état : {error}",
35
+ "noticeConversationOnlySaveFailed": "Conversation rembobinée, mais impossible d'enregistrer l'état : {error}",
36
+ "failed": "Échec du rembobinage : {error}",
37
+ "cannot": "Impossible de rembobiner : {error}",
38
+ "unavailableStreaming": "Impossible de rembobiner pendant le streaming",
39
+ "unavailableNoUuid": "Impossible de rembobiner : identifiants de message manquants"
40
+ },
41
+ "fork": {
42
+ "ariaLabel": "Bifurquer la conversation",
43
+ "chooseTarget": "Bifurquer la conversation",
44
+ "targetNewTab": "Nouvel onglet",
45
+ "targetCurrentTab": "Onglet actuel",
46
+ "maxTabsReached": "Impossible de bifurquer : maximum de {count} onglets atteint",
47
+ "notice": "Bifurqué dans un nouvel onglet",
48
+ "noticeCurrentTab": "Bifurqué dans l'onglet actuel",
49
+ "failed": "Échec de la bifurcation : {error}",
50
+ "unavailableStreaming": "Impossible de bifurquer pendant le streaming",
51
+ "unavailableNoUuid": "Impossible de bifurquer : identifiants de message manquants",
52
+ "unavailableNoResponse": "Impossible de bifurquer : aucune réponse pour bifurquer",
53
+ "errorMessageNotFound": "Message introuvable",
54
+ "errorNoSession": "Aucun ID de session disponible",
55
+ "errorNoActiveTab": "Aucun onglet actif",
56
+ "commandNoMessages": "Impossible de bifurquer : aucun message dans la conversation",
57
+ "commandNoAssistantUuid": "Impossible de bifurquer : aucune réponse de l’assistant avec des identifiants"
58
+ },
59
+ "bangBash": {
60
+ "placeholder": "> Exécuter une commande bash...",
61
+ "commandPanel": "Panneau de commandes",
62
+ "copyAriaLabel": "Copier la sortie de la dernière commande",
63
+ "clearAriaLabel": "Effacer la sortie bash",
64
+ "commandLabel": "{command}",
65
+ "statusLabel": "Statut : {status}",
66
+ "collapseOutput": "Réduire la sortie de la commande",
67
+ "expandOutput": "Développer la sortie de la commande",
68
+ "running": "Exécution...",
69
+ "copyFailed": "Échec de la copie dans le presse-papiers"
70
+ }
71
+ },
72
+ "settings": {
73
+ "title": "Paramètres Claudian",
74
+ "tabs": {
75
+ "general": "Général",
76
+ "claude": "Claude",
77
+ "codex": "Codex"
78
+ },
79
+ "display": "Affichage",
80
+ "conversations": "Conversations",
81
+ "content": "Contenu",
82
+ "input": "Saisie",
83
+ "setup": "Configuration",
84
+ "models": "Modèles",
85
+ "experimental": "Expérimental",
86
+ "userName": {
87
+ "name": "Comment Claudian doit-il vous appeler ?",
88
+ "desc": "Votre nom pour les salutations personnalisées (laisser vide pour les salutations génériques)"
89
+ },
90
+ "excludedTags": {
91
+ "name": "Tags exclus",
92
+ "desc": "Les notes avec ces tags ne seront pas chargées automatiquement comme contexte (un par ligne, sans #)"
93
+ },
94
+ "mediaFolder": {
95
+ "name": "Dossier des médias",
96
+ "desc": "Dossier contenant les pièces jointes/images. Lorsque les notes utilisent ![[image.jpg]], Claude cherchera ici. Laisser vide pour la racine du coffre."
97
+ },
98
+ "systemPrompt": {
99
+ "name": "Prompt système personnalisé",
100
+ "desc": "Instructions supplémentaires ajoutées au prompt système par défaut"
101
+ },
102
+ "autoTitle": {
103
+ "name": "Générer automatiquement les titres de conversation",
104
+ "desc": "Génère automatiquement les titres de conversation après le premier message de l'utilisateur."
105
+ },
106
+ "titleModel": {
107
+ "name": "Modèle de génération de titre",
108
+ "desc": "Modèle utilisé pour générer automatiquement les titres de conversation.",
109
+ "auto": "Automatique (Haiku)"
110
+ },
111
+ "navMappings": {
112
+ "name": "Mappages de navigation style Vim",
113
+ "desc": "Un mappage par ligne. Format : \"map <touche> <action>\" (actions : scrollUp, scrollDown, focusInput)."
114
+ },
115
+ "requireCommandOrControlEnterToSend": {
116
+ "name": "Exiger Command/Ctrl+Entrée pour envoyer",
117
+ "desc": "Lorsque cette option est activée, Entrée insère une nouvelle ligne. Command+Entrée envoie sur macOS ; Ctrl+Entrée envoie sur Windows et Linux."
118
+ },
119
+ "hotkeys": "Raccourcis clavier",
120
+ "inlineEditHotkey": {
121
+ "name": "Édition en ligne",
122
+ "descWithKey": "Raccourci actuel : {hotkey}",
123
+ "descNoKey": "Aucun raccourci défini",
124
+ "btnChange": "Modifier",
125
+ "btnSet": "Définir"
126
+ },
127
+ "openChatHotkey": {
128
+ "name": "Ouvrir le chat",
129
+ "descWithKey": "Raccourci actuel : {hotkey}",
130
+ "descNoKey": "Aucun raccourci défini",
131
+ "btnChange": "Modifier",
132
+ "btnSet": "Définir"
133
+ },
134
+ "newSessionHotkey": {
135
+ "name": "Nouvelle session",
136
+ "descWithKey": "Raccourci actuel : {hotkey}",
137
+ "descNoKey": "Aucun raccourci défini",
138
+ "btnChange": "Modifier",
139
+ "btnSet": "Définir"
140
+ },
141
+ "newTabHotkey": {
142
+ "name": "Nouvel onglet",
143
+ "descWithKey": "Raccourci actuel : {hotkey}",
144
+ "descNoKey": "Aucun raccourci défini",
145
+ "btnChange": "Modifier",
146
+ "btnSet": "Définir"
147
+ },
148
+ "closeTabHotkey": {
149
+ "name": "Fermer l'onglet",
150
+ "descWithKey": "Raccourci actuel : {hotkey}",
151
+ "descNoKey": "Aucun raccourci défini",
152
+ "btnChange": "Modifier",
153
+ "btnSet": "Définir"
154
+ },
155
+ "slashCommands": {
156
+ "name": "Commandes et compétences",
157
+ "desc": "Gérez les commandes et compétences au niveau du vault stockées dans .claude/commands/ et .claude/skills/. Déclenchées par /nom."
158
+ },
159
+ "hiddenSlashCommands": {
160
+ "name": "Commandes et compétences masquées",
161
+ "desc": "Masquez des commandes et compétences spécifiques du menu déroulant. Utile pour masquer les entrées Claude Code qui ne sont pas pertinentes pour Claudian. Saisissez les noms sans le slash initial, un par ligne.",
162
+ "placeholder": "commit\nbuild\ntest"
163
+ },
164
+ "mcpServers": {
165
+ "name": "Serveurs MCP",
166
+ "desc": "Gérez les configurations de serveurs MCP au niveau du vault stockées dans .claude/mcp.json. Les serveurs avec mode de sauvegarde de contexte nécessitent une @mention pour s'activer."
167
+ },
168
+ "plugins": {
169
+ "name": "Plugins Claude Code",
170
+ "desc": "Gérez les plugins Claude Code découverts dans ~/.claude/plugins. Les plugins activés sont stockés par vault dans .claude/settings.json."
171
+ },
172
+ "subagents": {
173
+ "name": "Sous-agents",
174
+ "desc": "Gérez les sous-agents au niveau du vault stockés dans .claude/agents/. Chaque fichier Markdown définit un agent personnalisé.",
175
+ "noAgents": "Aucun sous-agent configuré. Cliquez sur + pour en créer un.",
176
+ "deleteConfirm": "Supprimer le sous-agent \"{name}\" ?",
177
+ "saveFailed": "Échec de l’enregistrement du sous-agent : {message}",
178
+ "refreshFailed": "Échec de l’actualisation des subagents : {message}",
179
+ "deleteFailed": "Échec de la suppression du sous-agent : {message}",
180
+ "renameCleanupFailed": "Avertissement : impossible de supprimer l’ancien fichier pour \"{name}\"",
181
+ "created": "Sous-agent \"{name}\" créé",
182
+ "updated": "Sous-agent \"{name}\" mis à jour",
183
+ "deleted": "Sous-agent \"{name}\" supprimé",
184
+ "duplicateName": "Un agent nommé \"{name}\" existe déjà",
185
+ "descriptionRequired": "La description est obligatoire",
186
+ "promptRequired": "Le prompt système est obligatoire",
187
+ "modal": {
188
+ "titleEdit": "Modifier le sous-agent",
189
+ "titleAdd": "Ajouter un sous-agent",
190
+ "name": "Nom",
191
+ "nameDesc": "Lettres minuscules, chiffres et tirets uniquement",
192
+ "namePlaceholder": "code-reviewer",
193
+ "description": "Description",
194
+ "descriptionDesc": "Brève description de cet agent",
195
+ "descriptionPlaceholder": "Examine le code pour détecter les bugs et les problèmes de style",
196
+ "advancedOptions": "Options avancées",
197
+ "model": "Modèle",
198
+ "modelDesc": "Modèle à utiliser pour cet agent",
199
+ "tools": "Outils",
200
+ "toolsDesc": "Liste des outils autorisés, séparés par des virgules (vide = tous)",
201
+ "disallowedTools": "Outils non autorisés",
202
+ "disallowedToolsDesc": "Liste des outils à interdire, séparés par des virgules",
203
+ "skills": "Compétences",
204
+ "skillsDesc": "Liste des compétences, séparées par des virgules",
205
+ "prompt": "Prompt système",
206
+ "promptDesc": "Instructions pour l’agent",
207
+ "promptPlaceholder": "Vous êtes un relecteur de code. Analysez le code fourni pour..."
208
+ }
209
+ },
210
+ "safety": "Sécurité",
211
+ "loadUserSettings": {
212
+ "name": "Charger les paramètres utilisateur Claude",
213
+ "desc": "Charge ~/.claude/settings.json. Lorsqu'activé, les règles de permission de l'utilisateur peuvent contourner le mode sécurisé."
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": "Environnement",
224
+ "customVariables": {
225
+ "name": "Variables personnalisées",
226
+ "desc": "Variables d'environnement pour Claude SDK (format KEY=VALUE, une par ligne). Préfixe export supporté."
227
+ },
228
+ "envSnippets": {
229
+ "name": "Extraits",
230
+ "addBtn": "Ajouter un extrait",
231
+ "noSnippets": "Aucun extrait d'environnement enregistré. Cliquez sur + pour sauvegarder votre configuration actuelle.",
232
+ "nameRequired": "Veuillez entrer un nom pour l'extrait",
233
+ "modal": {
234
+ "titleEdit": "Modifier l'extrait",
235
+ "titleSave": "Sauvegarder l'extrait",
236
+ "name": "Nom",
237
+ "namePlaceholder": "Un nom descriptif pour cette configuration",
238
+ "description": "Description",
239
+ "descPlaceholder": "Description optionnelle",
240
+ "envVars": "Variables d'environnement",
241
+ "envVarsPlaceholder": "Format KEY=VALUE, une par ligne (préfixe export supporté)",
242
+ "save": "Enregistrer",
243
+ "update": "Mettre à jour",
244
+ "cancel": "Annuler"
245
+ }
246
+ },
247
+ "customModelOverrides": {
248
+ "name": "Remplacements de modèles personnalisés",
249
+ "desc": "Définissez les alias dans le sélecteur de modèle et les tailles de fenêtre de contexte pour les modèles personnalisés."
250
+ },
251
+ "customModelAliases": {
252
+ "placeholder": "Alias"
253
+ },
254
+ "customContextLimits": {
255
+ "name": "Limites de contexte personnalisées",
256
+ "desc": "Définissez les tailles de fenêtre de contexte pour vos modèles personnalisés. Laissez vide pour utiliser la valeur par défaut (200k tokens).",
257
+ "invalid": "Format invalide. Utilisez : 256k, 1m ou nombre exact (1000-10000000)."
258
+ },
259
+ "enableOpus1M": {
260
+ "name": "Fenêtre de contexte Opus 1M",
261
+ "desc": "Afficher Opus 1M dans le sélecteur de modèle. Inclus avec les plans Max, Team et Enterprise. Les utilisateurs API et Pro nécessitent une utilisation supplémentaire."
262
+ },
263
+ "enableSonnet1M": {
264
+ "name": "Fenêtre de contexte Sonnet 1M",
265
+ "desc": "Afficher Sonnet 1M dans le sélecteur de modèle. Nécessite une utilisation supplémentaire sur les plans Max, Team et Enterprise. Les utilisateurs API et Pro nécessitent une utilisation supplémentaire."
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": "Activer l'extension Chrome",
274
+ "desc": "Permettre à Claude d'interagir avec Chrome via l'extension claude-in-chrome. L'extension doit être installée. Nécessite un redémarrage de session."
275
+ },
276
+ "enableBangBash": {
277
+ "name": "Activer le mode bash (!)",
278
+ "desc": "Saisissez ! dans un champ vide pour passer en mode bash. Exécute les commandes directement via le child_process de Node.js. Nécessite de rouvrir la vue.",
279
+ "validation": {
280
+ "noNode": "Node.js introuvable dans PATH. Installez Node.js ou vérifiez votre configuration PATH."
281
+ }
282
+ },
283
+ "maxTabs": {
284
+ "name": "Maximum d'onglets de chat",
285
+ "desc": "Nombre maximum d'onglets de chat simultanés (3-10). Chaque onglet utilise une session Claude séparée.",
286
+ "warning": "Plus de 5 onglets peut affecter les performances et l'utilisation de la mémoire."
287
+ },
288
+ "enableAutoScroll": {
289
+ "name": "Défilement automatique pendant le streaming",
290
+ "desc": "Défiler automatiquement vers le bas pendant que Claude diffuse les réponses. Désactiver pour rester en haut et lire depuis le début."
291
+ },
292
+ "deferMathRenderingDuringStreaming": {
293
+ "name": "Différer le rendu mathématique pendant le streaming",
294
+ "desc": "Afficher le LaTeX brut pendant la diffusion, puis rendre les formules une fois chaque bloc de texte terminé."
295
+ },
296
+ "expandFileEditsByDefault": {
297
+ "name": "Développer les modifications de fichiers par défaut",
298
+ "desc": "Afficher les diffs Write et Edit développés lors de leur première apparition."
299
+ },
300
+ "chatViewPlacement": {
301
+ "name": "Ouvrir Claudian dans",
302
+ "desc": "Choisissez où le panneau de chat s'ouvre lors de sa création",
303
+ "rightSidebar": "Barre latérale droite",
304
+ "leftSidebar": "Barre latérale gauche",
305
+ "mainTab": "Onglet principal de l'éditeur"
306
+ },
307
+ "cliPath": {
308
+ "name": "Chemin CLI Claude",
309
+ "desc": "Chemin personnalisé vers Claude Code CLI. Laisser vide pour la détection automatique.",
310
+ "descWindows": "Pour l'installateur natif, utilisez claude.exe. Pour les installations npm/pnpm/yarn ou autres gestionnaires de paquets, utilisez le chemin cli-wrapper.cjs (pas claude.cmd).",
311
+ "descUnix": "Collez la sortie de \"which claude\" — fonctionne pour les installations natives et npm/pnpm/yarn.",
312
+ "validation": {
313
+ "notExist": "Le chemin n'existe pas",
314
+ "isDirectory": "Le chemin est un répertoire, pas un fichier"
315
+ }
316
+ },
317
+ "language": {
318
+ "name": "Langue",
319
+ "desc": "Changer la langue d'affichage de l'interface du plugin"
320
+ }
321
+ }
322
+ }