patchwork-os 0.2.0-alpha.0

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 (721) hide show
  1. package/LICENSE +21 -0
  2. package/README.bridge.md +352 -0
  3. package/README.md +72 -0
  4. package/deploy/README.md +172 -0
  5. package/deploy/bootstrap-new-vps.sh +364 -0
  6. package/deploy/claude-ide-bridge.service.template +67 -0
  7. package/deploy/claude-ide-bridge@.service +31 -0
  8. package/deploy/ecosystem.config.js.example +36 -0
  9. package/deploy/install-vps-service.sh +240 -0
  10. package/deploy/nginx-claude-bridge.conf.template +129 -0
  11. package/dist/activityLog.d.ts +112 -0
  12. package/dist/activityLog.js +399 -0
  13. package/dist/activityLog.js.map +1 -0
  14. package/dist/activityTypes.d.ts +28 -0
  15. package/dist/activityTypes.js +9 -0
  16. package/dist/activityTypes.js.map +1 -0
  17. package/dist/adapters/base.d.ts +78 -0
  18. package/dist/adapters/base.js +14 -0
  19. package/dist/adapters/base.js.map +1 -0
  20. package/dist/adapters/claude.d.ts +18 -0
  21. package/dist/adapters/claude.js +276 -0
  22. package/dist/adapters/claude.js.map +1 -0
  23. package/dist/adapters/gemini.d.ts +17 -0
  24. package/dist/adapters/gemini.js +218 -0
  25. package/dist/adapters/gemini.js.map +1 -0
  26. package/dist/adapters/grok.d.ts +7 -0
  27. package/dist/adapters/grok.js +21 -0
  28. package/dist/adapters/grok.js.map +1 -0
  29. package/dist/adapters/index.d.ts +5 -0
  30. package/dist/adapters/index.js +37 -0
  31. package/dist/adapters/index.js.map +1 -0
  32. package/dist/adapters/local.d.ts +7 -0
  33. package/dist/adapters/local.js +22 -0
  34. package/dist/adapters/local.js.map +1 -0
  35. package/dist/adapters/openai.d.ts +22 -0
  36. package/dist/adapters/openai.js +284 -0
  37. package/dist/adapters/openai.js.map +1 -0
  38. package/dist/adapters/sse.d.ts +13 -0
  39. package/dist/adapters/sse.js +58 -0
  40. package/dist/adapters/sse.js.map +1 -0
  41. package/dist/analyticsAggregator.d.ts +28 -0
  42. package/dist/analyticsAggregator.js +133 -0
  43. package/dist/analyticsAggregator.js.map +1 -0
  44. package/dist/analyticsPrefs.d.ts +9 -0
  45. package/dist/analyticsPrefs.js +50 -0
  46. package/dist/analyticsPrefs.js.map +1 -0
  47. package/dist/analyticsSend.d.ts +12 -0
  48. package/dist/analyticsSend.js +34 -0
  49. package/dist/analyticsSend.js.map +1 -0
  50. package/dist/approvalHttp.d.ts +46 -0
  51. package/dist/approvalHttp.js +370 -0
  52. package/dist/approvalHttp.js.map +1 -0
  53. package/dist/approvalQueue.d.ts +49 -0
  54. package/dist/approvalQueue.js +84 -0
  55. package/dist/approvalQueue.js.map +1 -0
  56. package/dist/automation.d.ts +675 -0
  57. package/dist/automation.js +1038 -0
  58. package/dist/automation.js.map +1 -0
  59. package/dist/bridge.d.ts +85 -0
  60. package/dist/bridge.js +1535 -0
  61. package/dist/bridge.js.map +1 -0
  62. package/dist/bridgeLockDiscovery.d.ts +11 -0
  63. package/dist/bridgeLockDiscovery.js +49 -0
  64. package/dist/bridgeLockDiscovery.js.map +1 -0
  65. package/dist/bridgeToken.d.ts +22 -0
  66. package/dist/bridgeToken.js +114 -0
  67. package/dist/bridgeToken.js.map +1 -0
  68. package/dist/bridgeToolsRules.d.ts +20 -0
  69. package/dist/bridgeToolsRules.js +79 -0
  70. package/dist/bridgeToolsRules.js.map +1 -0
  71. package/dist/ccPermissions.d.ts +59 -0
  72. package/dist/ccPermissions.js +163 -0
  73. package/dist/ccPermissions.js.map +1 -0
  74. package/dist/claudeDriver.d.ts +129 -0
  75. package/dist/claudeDriver.js +459 -0
  76. package/dist/claudeDriver.js.map +1 -0
  77. package/dist/claudeMdPatch.d.ts +29 -0
  78. package/dist/claudeMdPatch.js +164 -0
  79. package/dist/claudeMdPatch.js.map +1 -0
  80. package/dist/claudeOrchestrator.d.ts +171 -0
  81. package/dist/claudeOrchestrator.js +591 -0
  82. package/dist/claudeOrchestrator.js.map +1 -0
  83. package/dist/commands/install.d.ts +1 -0
  84. package/dist/commands/install.js +158 -0
  85. package/dist/commands/install.js.map +1 -0
  86. package/dist/commands/marketplace.d.ts +11 -0
  87. package/dist/commands/marketplace.js +120 -0
  88. package/dist/commands/marketplace.js.map +1 -0
  89. package/dist/commands/patchworkInit.d.ts +14 -0
  90. package/dist/commands/patchworkInit.js +155 -0
  91. package/dist/commands/patchworkInit.js.map +1 -0
  92. package/dist/commands/task.d.ts +14 -0
  93. package/dist/commands/task.js +289 -0
  94. package/dist/commands/task.js.map +1 -0
  95. package/dist/commands/tokenEfficiency.d.ts +9 -0
  96. package/dist/commands/tokenEfficiency.js +211 -0
  97. package/dist/commands/tokenEfficiency.js.map +1 -0
  98. package/dist/commands/tools.d.ts +28 -0
  99. package/dist/commands/tools.js +326 -0
  100. package/dist/commands/tools.js.map +1 -0
  101. package/dist/commitIssueLinkLog.d.ts +77 -0
  102. package/dist/commitIssueLinkLog.js +142 -0
  103. package/dist/commitIssueLinkLog.js.map +1 -0
  104. package/dist/companions/registry.d.ts +12 -0
  105. package/dist/companions/registry.js +71 -0
  106. package/dist/companions/registry.js.map +1 -0
  107. package/dist/config.d.ts +105 -0
  108. package/dist/config.js +720 -0
  109. package/dist/config.js.map +1 -0
  110. package/dist/crypto.d.ts +16 -0
  111. package/dist/crypto.js +34 -0
  112. package/dist/crypto.js.map +1 -0
  113. package/dist/dashboard.d.ts +12 -0
  114. package/dist/dashboard.js +149 -0
  115. package/dist/dashboard.js.map +1 -0
  116. package/dist/decisionTraceLog.d.ts +77 -0
  117. package/dist/decisionTraceLog.js +147 -0
  118. package/dist/decisionTraceLog.js.map +1 -0
  119. package/dist/errors.d.ts +32 -0
  120. package/dist/errors.js +34 -0
  121. package/dist/errors.js.map +1 -0
  122. package/dist/extensionClient.d.ts +279 -0
  123. package/dist/extensionClient.js +1253 -0
  124. package/dist/extensionClient.js.map +1 -0
  125. package/dist/fileLock.d.ts +36 -0
  126. package/dist/fileLock.js +121 -0
  127. package/dist/fileLock.js.map +1 -0
  128. package/dist/fp/activityAnalytics.d.ts +39 -0
  129. package/dist/fp/activityAnalytics.js +111 -0
  130. package/dist/fp/activityAnalytics.js.map +1 -0
  131. package/dist/fp/async.d.ts +48 -0
  132. package/dist/fp/async.js +60 -0
  133. package/dist/fp/async.js.map +1 -0
  134. package/dist/fp/automationInterpreter.d.ts +37 -0
  135. package/dist/fp/automationInterpreter.js +523 -0
  136. package/dist/fp/automationInterpreter.js.map +1 -0
  137. package/dist/fp/automationProgram.d.ts +89 -0
  138. package/dist/fp/automationProgram.js +29 -0
  139. package/dist/fp/automationProgram.js.map +1 -0
  140. package/dist/fp/automationState.d.ts +135 -0
  141. package/dist/fp/automationState.js +206 -0
  142. package/dist/fp/automationState.js.map +1 -0
  143. package/dist/fp/automationUtils.d.ts +31 -0
  144. package/dist/fp/automationUtils.js +61 -0
  145. package/dist/fp/automationUtils.js.map +1 -0
  146. package/dist/fp/brandedTypes.d.ts +32 -0
  147. package/dist/fp/brandedTypes.js +41 -0
  148. package/dist/fp/brandedTypes.js.map +1 -0
  149. package/dist/fp/commandDescription.d.ts +18 -0
  150. package/dist/fp/commandDescription.js +125 -0
  151. package/dist/fp/commandDescription.js.map +1 -0
  152. package/dist/fp/extensionSnapshot.d.ts +10 -0
  153. package/dist/fp/extensionSnapshot.js +14 -0
  154. package/dist/fp/extensionSnapshot.js.map +1 -0
  155. package/dist/fp/index.d.ts +8 -0
  156. package/dist/fp/index.js +9 -0
  157. package/dist/fp/index.js.map +1 -0
  158. package/dist/fp/interpreterContext.d.ts +69 -0
  159. package/dist/fp/interpreterContext.js +56 -0
  160. package/dist/fp/interpreterContext.js.map +1 -0
  161. package/dist/fp/policyParser.d.ts +16 -0
  162. package/dist/fp/policyParser.js +334 -0
  163. package/dist/fp/policyParser.js.map +1 -0
  164. package/dist/fp/result.d.ts +38 -0
  165. package/dist/fp/result.js +57 -0
  166. package/dist/fp/result.js.map +1 -0
  167. package/dist/fp/tokenBucket.d.ts +27 -0
  168. package/dist/fp/tokenBucket.js +36 -0
  169. package/dist/fp/tokenBucket.js.map +1 -0
  170. package/dist/index.d.ts +2 -0
  171. package/dist/index.js +1465 -0
  172. package/dist/index.js.map +1 -0
  173. package/dist/instructionsUtils.d.ts +17 -0
  174. package/dist/instructionsUtils.js +38 -0
  175. package/dist/instructionsUtils.js.map +1 -0
  176. package/dist/lockfile.d.ts +16 -0
  177. package/dist/lockfile.js +172 -0
  178. package/dist/lockfile.js.map +1 -0
  179. package/dist/logger.d.ts +16 -0
  180. package/dist/logger.js +68 -0
  181. package/dist/logger.js.map +1 -0
  182. package/dist/oauth.d.ts +105 -0
  183. package/dist/oauth.js +880 -0
  184. package/dist/oauth.js.map +1 -0
  185. package/dist/orchestrator/childBridgeClient.d.ts +33 -0
  186. package/dist/orchestrator/childBridgeClient.js +321 -0
  187. package/dist/orchestrator/childBridgeClient.js.map +1 -0
  188. package/dist/orchestrator/childBridgeRegistry.d.ts +67 -0
  189. package/dist/orchestrator/childBridgeRegistry.js +297 -0
  190. package/dist/orchestrator/childBridgeRegistry.js.map +1 -0
  191. package/dist/orchestrator/index.d.ts +3 -0
  192. package/dist/orchestrator/index.js +3 -0
  193. package/dist/orchestrator/index.js.map +1 -0
  194. package/dist/orchestrator/orchestratorBridge.d.ts +32 -0
  195. package/dist/orchestrator/orchestratorBridge.js +412 -0
  196. package/dist/orchestrator/orchestratorBridge.js.map +1 -0
  197. package/dist/orchestrator/orchestratorConfig.d.ts +11 -0
  198. package/dist/orchestrator/orchestratorConfig.js +85 -0
  199. package/dist/orchestrator/orchestratorConfig.js.map +1 -0
  200. package/dist/orchestrator/orchestratorTools.d.ts +16 -0
  201. package/dist/orchestrator/orchestratorTools.js +272 -0
  202. package/dist/orchestrator/orchestratorTools.js.map +1 -0
  203. package/dist/patchworkCli.d.ts +15 -0
  204. package/dist/patchworkCli.js +41 -0
  205. package/dist/patchworkCli.js.map +1 -0
  206. package/dist/patchworkConfig.d.ts +28 -0
  207. package/dist/patchworkConfig.js +30 -0
  208. package/dist/patchworkConfig.js.map +1 -0
  209. package/dist/plugin.d.ts +106 -0
  210. package/dist/plugin.js +31 -0
  211. package/dist/plugin.js.map +1 -0
  212. package/dist/pluginLoader.d.ts +44 -0
  213. package/dist/pluginLoader.js +357 -0
  214. package/dist/pluginLoader.js.map +1 -0
  215. package/dist/pluginWatcher.d.ts +24 -0
  216. package/dist/pluginWatcher.js +139 -0
  217. package/dist/pluginWatcher.js.map +1 -0
  218. package/dist/preToolUseHook.d.ts +10 -0
  219. package/dist/preToolUseHook.js +57 -0
  220. package/dist/preToolUseHook.js.map +1 -0
  221. package/dist/probe.d.ts +35 -0
  222. package/dist/probe.js +143 -0
  223. package/dist/probe.js.map +1 -0
  224. package/dist/prompts.d.ts +27 -0
  225. package/dist/prompts.js +1680 -0
  226. package/dist/prompts.js.map +1 -0
  227. package/dist/quickTaskPresets.d.ts +64 -0
  228. package/dist/quickTaskPresets.js +156 -0
  229. package/dist/quickTaskPresets.js.map +1 -0
  230. package/dist/recipes/compiler.d.ts +44 -0
  231. package/dist/recipes/compiler.js +140 -0
  232. package/dist/recipes/compiler.js.map +1 -0
  233. package/dist/recipes/installer.d.ts +25 -0
  234. package/dist/recipes/installer.js +62 -0
  235. package/dist/recipes/installer.js.map +1 -0
  236. package/dist/recipes/parser.d.ts +18 -0
  237. package/dist/recipes/parser.js +160 -0
  238. package/dist/recipes/parser.js.map +1 -0
  239. package/dist/recipes/scheduler.d.ts +45 -0
  240. package/dist/recipes/scheduler.js +110 -0
  241. package/dist/recipes/scheduler.js.map +1 -0
  242. package/dist/recipes/schema.d.ts +71 -0
  243. package/dist/recipes/schema.js +11 -0
  244. package/dist/recipes/schema.js.map +1 -0
  245. package/dist/recipesHttp.d.ts +63 -0
  246. package/dist/recipesHttp.js +183 -0
  247. package/dist/recipesHttp.js.map +1 -0
  248. package/dist/resources.d.ts +33 -0
  249. package/dist/resources.js +266 -0
  250. package/dist/resources.js.map +1 -0
  251. package/dist/riskTier.d.ts +40 -0
  252. package/dist/riskTier.js +142 -0
  253. package/dist/riskTier.js.map +1 -0
  254. package/dist/runLog.d.ts +90 -0
  255. package/dist/runLog.js +143 -0
  256. package/dist/runLog.js.map +1 -0
  257. package/dist/server.d.ts +160 -0
  258. package/dist/server.js +1244 -0
  259. package/dist/server.js.map +1 -0
  260. package/dist/sessionCheckpoint.d.ts +37 -0
  261. package/dist/sessionCheckpoint.js +123 -0
  262. package/dist/sessionCheckpoint.js.map +1 -0
  263. package/dist/streamableHttp.d.ts +86 -0
  264. package/dist/streamableHttp.js +702 -0
  265. package/dist/streamableHttp.js.map +1 -0
  266. package/dist/telemetry.d.ts +18 -0
  267. package/dist/telemetry.js +95 -0
  268. package/dist/telemetry.js.map +1 -0
  269. package/dist/tools/activityLog.d.ts +140 -0
  270. package/dist/tools/activityLog.js +204 -0
  271. package/dist/tools/activityLog.js.map +1 -0
  272. package/dist/tools/auditDependencies.d.ts +67 -0
  273. package/dist/tools/auditDependencies.js +298 -0
  274. package/dist/tools/auditDependencies.js.map +1 -0
  275. package/dist/tools/batchLsp.d.ts +262 -0
  276. package/dist/tools/batchLsp.js +328 -0
  277. package/dist/tools/batchLsp.js.map +1 -0
  278. package/dist/tools/blame-utils.d.ts +30 -0
  279. package/dist/tools/blame-utils.js +60 -0
  280. package/dist/tools/blame-utils.js.map +1 -0
  281. package/dist/tools/bridgeDoctor.d.ts +78 -0
  282. package/dist/tools/bridgeDoctor.js +542 -0
  283. package/dist/tools/bridgeDoctor.js.map +1 -0
  284. package/dist/tools/bridgeStatus.d.ts +122 -0
  285. package/dist/tools/bridgeStatus.js +250 -0
  286. package/dist/tools/bridgeStatus.js.map +1 -0
  287. package/dist/tools/cancelClaudeTask.d.ts +48 -0
  288. package/dist/tools/cancelClaudeTask.js +56 -0
  289. package/dist/tools/cancelClaudeTask.js.map +1 -0
  290. package/dist/tools/checkDocumentDirty.d.ts +56 -0
  291. package/dist/tools/checkDocumentDirty.js +74 -0
  292. package/dist/tools/checkDocumentDirty.js.map +1 -0
  293. package/dist/tools/clipboard.d.ts +80 -0
  294. package/dist/tools/clipboard.js +211 -0
  295. package/dist/tools/clipboard.js.map +1 -0
  296. package/dist/tools/closeTabs.d.ts +84 -0
  297. package/dist/tools/closeTabs.js +97 -0
  298. package/dist/tools/closeTabs.js.map +1 -0
  299. package/dist/tools/codeLens.d.ts +50 -0
  300. package/dist/tools/codeLens.js +47 -0
  301. package/dist/tools/codeLens.js.map +1 -0
  302. package/dist/tools/contextBundle.d.ts +75 -0
  303. package/dist/tools/contextBundle.js +218 -0
  304. package/dist/tools/contextBundle.js.map +1 -0
  305. package/dist/tools/createIssueFromAIComment.d.ts +75 -0
  306. package/dist/tools/createIssueFromAIComment.js +119 -0
  307. package/dist/tools/createIssueFromAIComment.js.map +1 -0
  308. package/dist/tools/ctxGetTaskContext.d.ts +103 -0
  309. package/dist/tools/ctxGetTaskContext.js +274 -0
  310. package/dist/tools/ctxGetTaskContext.js.map +1 -0
  311. package/dist/tools/ctxQueryTraces.d.ts +142 -0
  312. package/dist/tools/ctxQueryTraces.js +194 -0
  313. package/dist/tools/ctxQueryTraces.js.map +1 -0
  314. package/dist/tools/ctxSaveTrace.d.ts +87 -0
  315. package/dist/tools/ctxSaveTrace.js +94 -0
  316. package/dist/tools/ctxSaveTrace.js.map +1 -0
  317. package/dist/tools/debug.d.ts +206 -0
  318. package/dist/tools/debug.js +234 -0
  319. package/dist/tools/debug.js.map +1 -0
  320. package/dist/tools/decorations.d.ts +130 -0
  321. package/dist/tools/decorations.js +160 -0
  322. package/dist/tools/decorations.js.map +1 -0
  323. package/dist/tools/detectUnusedCode.d.ts +78 -0
  324. package/dist/tools/detectUnusedCode.js +173 -0
  325. package/dist/tools/detectUnusedCode.js.map +1 -0
  326. package/dist/tools/documentLinks.d.ts +62 -0
  327. package/dist/tools/documentLinks.js +55 -0
  328. package/dist/tools/documentLinks.js.map +1 -0
  329. package/dist/tools/editText.d.ts +108 -0
  330. package/dist/tools/editText.js +318 -0
  331. package/dist/tools/editText.js.map +1 -0
  332. package/dist/tools/enrichCommit.d.ts +89 -0
  333. package/dist/tools/enrichCommit.js +201 -0
  334. package/dist/tools/enrichCommit.js.map +1 -0
  335. package/dist/tools/enrichStackTrace.d.ts +121 -0
  336. package/dist/tools/enrichStackTrace.js +194 -0
  337. package/dist/tools/enrichStackTrace.js.map +1 -0
  338. package/dist/tools/explainDiagnostic.d.ts +137 -0
  339. package/dist/tools/explainDiagnostic.js +230 -0
  340. package/dist/tools/explainDiagnostic.js.map +1 -0
  341. package/dist/tools/explainSymbol.d.ts +119 -0
  342. package/dist/tools/explainSymbol.js +177 -0
  343. package/dist/tools/explainSymbol.js.map +1 -0
  344. package/dist/tools/fileOperations.d.ts +186 -0
  345. package/dist/tools/fileOperations.js +330 -0
  346. package/dist/tools/fileOperations.js.map +1 -0
  347. package/dist/tools/fileWatcher.d.ts +107 -0
  348. package/dist/tools/fileWatcher.js +121 -0
  349. package/dist/tools/fileWatcher.js.map +1 -0
  350. package/dist/tools/findFiles.d.ts +65 -0
  351. package/dist/tools/findFiles.js +142 -0
  352. package/dist/tools/findFiles.js.map +1 -0
  353. package/dist/tools/findRelatedTests.d.ts +83 -0
  354. package/dist/tools/findRelatedTests.js +196 -0
  355. package/dist/tools/findRelatedTests.js.map +1 -0
  356. package/dist/tools/fixAllLintErrors.d.ts +66 -0
  357. package/dist/tools/fixAllLintErrors.js +128 -0
  358. package/dist/tools/fixAllLintErrors.js.map +1 -0
  359. package/dist/tools/foldingRanges.d.ts +50 -0
  360. package/dist/tools/foldingRanges.js +51 -0
  361. package/dist/tools/foldingRanges.js.map +1 -0
  362. package/dist/tools/formatAndSave.d.ts +57 -0
  363. package/dist/tools/formatAndSave.js +87 -0
  364. package/dist/tools/formatAndSave.js.map +1 -0
  365. package/dist/tools/formatDocument.d.ts +61 -0
  366. package/dist/tools/formatDocument.js +144 -0
  367. package/dist/tools/formatDocument.js.map +1 -0
  368. package/dist/tools/generateAPIDocumentation.d.ts +62 -0
  369. package/dist/tools/generateAPIDocumentation.js +249 -0
  370. package/dist/tools/generateAPIDocumentation.js.map +1 -0
  371. package/dist/tools/generateTests.d.ts +75 -0
  372. package/dist/tools/generateTests.js +226 -0
  373. package/dist/tools/generateTests.js.map +1 -0
  374. package/dist/tools/getAIComments.d.ts +79 -0
  375. package/dist/tools/getAIComments.js +93 -0
  376. package/dist/tools/getAIComments.js.map +1 -0
  377. package/dist/tools/getAnalyticsReport.d.ts +102 -0
  378. package/dist/tools/getAnalyticsReport.js +137 -0
  379. package/dist/tools/getAnalyticsReport.js.map +1 -0
  380. package/dist/tools/getArchitectureContext.d.ts +85 -0
  381. package/dist/tools/getArchitectureContext.js +135 -0
  382. package/dist/tools/getArchitectureContext.js.map +1 -0
  383. package/dist/tools/getBufferContent.d.ts +80 -0
  384. package/dist/tools/getBufferContent.js +207 -0
  385. package/dist/tools/getBufferContent.js.map +1 -0
  386. package/dist/tools/getChangeImpact.d.ts +76 -0
  387. package/dist/tools/getChangeImpact.js +184 -0
  388. package/dist/tools/getChangeImpact.js.map +1 -0
  389. package/dist/tools/getClaudeTaskStatus.d.ts +87 -0
  390. package/dist/tools/getClaudeTaskStatus.js +89 -0
  391. package/dist/tools/getClaudeTaskStatus.js.map +1 -0
  392. package/dist/tools/getCodeCoverage.d.ts +86 -0
  393. package/dist/tools/getCodeCoverage.js +237 -0
  394. package/dist/tools/getCodeCoverage.js.map +1 -0
  395. package/dist/tools/getCommitsForIssue.d.ts +98 -0
  396. package/dist/tools/getCommitsForIssue.js +106 -0
  397. package/dist/tools/getCommitsForIssue.js.map +1 -0
  398. package/dist/tools/getCurrentSelection.d.ts +123 -0
  399. package/dist/tools/getCurrentSelection.js +113 -0
  400. package/dist/tools/getCurrentSelection.js.map +1 -0
  401. package/dist/tools/getDebugState.d.ts +140 -0
  402. package/dist/tools/getDebugState.js +109 -0
  403. package/dist/tools/getDebugState.js.map +1 -0
  404. package/dist/tools/getDependencyTree.d.ts +59 -0
  405. package/dist/tools/getDependencyTree.js +207 -0
  406. package/dist/tools/getDependencyTree.js.map +1 -0
  407. package/dist/tools/getDiagnostics.d.ts +108 -0
  408. package/dist/tools/getDiagnostics.js +371 -0
  409. package/dist/tools/getDiagnostics.js.map +1 -0
  410. package/dist/tools/getDiffFromHandoff.d.ts +89 -0
  411. package/dist/tools/getDiffFromHandoff.js +163 -0
  412. package/dist/tools/getDiffFromHandoff.js.map +1 -0
  413. package/dist/tools/getDocumentSymbols.d.ts +74 -0
  414. package/dist/tools/getDocumentSymbols.js +177 -0
  415. package/dist/tools/getDocumentSymbols.js.map +1 -0
  416. package/dist/tools/getFileTree.d.ts +66 -0
  417. package/dist/tools/getFileTree.js +131 -0
  418. package/dist/tools/getFileTree.js.map +1 -0
  419. package/dist/tools/getGitDiff.d.ts +50 -0
  420. package/dist/tools/getGitDiff.js +73 -0
  421. package/dist/tools/getGitDiff.js.map +1 -0
  422. package/dist/tools/getGitHotspots.d.ts +88 -0
  423. package/dist/tools/getGitHotspots.js +145 -0
  424. package/dist/tools/getGitHotspots.js.map +1 -0
  425. package/dist/tools/getGitLog.d.ts +62 -0
  426. package/dist/tools/getGitLog.js +87 -0
  427. package/dist/tools/getGitLog.js.map +1 -0
  428. package/dist/tools/getGitStatus.d.ts +72 -0
  429. package/dist/tools/getGitStatus.js +126 -0
  430. package/dist/tools/getGitStatus.js.map +1 -0
  431. package/dist/tools/getImportTree.d.ts +73 -0
  432. package/dist/tools/getImportTree.js +223 -0
  433. package/dist/tools/getImportTree.js.map +1 -0
  434. package/dist/tools/getImportedSignatures.d.ts +62 -0
  435. package/dist/tools/getImportedSignatures.js +255 -0
  436. package/dist/tools/getImportedSignatures.js.map +1 -0
  437. package/dist/tools/getOpenEditors.d.ts +62 -0
  438. package/dist/tools/getOpenEditors.js +126 -0
  439. package/dist/tools/getOpenEditors.js.map +1 -0
  440. package/dist/tools/getPRTemplate.d.ts +68 -0
  441. package/dist/tools/getPRTemplate.js +187 -0
  442. package/dist/tools/getPRTemplate.js.map +1 -0
  443. package/dist/tools/getProjectContext.d.ts +114 -0
  444. package/dist/tools/getProjectContext.js +344 -0
  445. package/dist/tools/getProjectContext.js.map +1 -0
  446. package/dist/tools/getProjectInfo.d.ts +51 -0
  447. package/dist/tools/getProjectInfo.js +325 -0
  448. package/dist/tools/getProjectInfo.js.map +1 -0
  449. package/dist/tools/getSecurityAdvisories.d.ts +105 -0
  450. package/dist/tools/getSecurityAdvisories.js +472 -0
  451. package/dist/tools/getSecurityAdvisories.js.map +1 -0
  452. package/dist/tools/getSessionUsage.d.ts +58 -0
  453. package/dist/tools/getSessionUsage.js +57 -0
  454. package/dist/tools/getSessionUsage.js.map +1 -0
  455. package/dist/tools/getSymbolHistory.d.ts +157 -0
  456. package/dist/tools/getSymbolHistory.js +256 -0
  457. package/dist/tools/getSymbolHistory.js.map +1 -0
  458. package/dist/tools/getToolCapabilities.d.ts +69 -0
  459. package/dist/tools/getToolCapabilities.js +298 -0
  460. package/dist/tools/getToolCapabilities.js.map +1 -0
  461. package/dist/tools/getTypeSignature.d.ts +70 -0
  462. package/dist/tools/getTypeSignature.js +132 -0
  463. package/dist/tools/getTypeSignature.js.map +1 -0
  464. package/dist/tools/getWorkspaceFolders.d.ts +58 -0
  465. package/dist/tools/getWorkspaceFolders.js +69 -0
  466. package/dist/tools/getWorkspaceFolders.js.map +1 -0
  467. package/dist/tools/getWorkspaceSettings.d.ts +44 -0
  468. package/dist/tools/getWorkspaceSettings.js +70 -0
  469. package/dist/tools/getWorkspaceSettings.js.map +1 -0
  470. package/dist/tools/git-utils.d.ts +16 -0
  471. package/dist/tools/git-utils.js +46 -0
  472. package/dist/tools/git-utils.js.map +1 -0
  473. package/dist/tools/gitHistory.d.ts +110 -0
  474. package/dist/tools/gitHistory.js +167 -0
  475. package/dist/tools/gitHistory.js.map +1 -0
  476. package/dist/tools/gitWrite.d.ts +612 -0
  477. package/dist/tools/gitWrite.js +983 -0
  478. package/dist/tools/gitWrite.js.map +1 -0
  479. package/dist/tools/github/actions.d.ts +152 -0
  480. package/dist/tools/github/actions.js +195 -0
  481. package/dist/tools/github/actions.js.map +1 -0
  482. package/dist/tools/github/index.d.ts +3 -0
  483. package/dist/tools/github/index.js +4 -0
  484. package/dist/tools/github/index.js.map +1 -0
  485. package/dist/tools/github/issues.d.ts +281 -0
  486. package/dist/tools/github/issues.js +340 -0
  487. package/dist/tools/github/issues.js.map +1 -0
  488. package/dist/tools/github/pr.d.ts +433 -0
  489. package/dist/tools/github/pr.js +588 -0
  490. package/dist/tools/github/pr.js.map +1 -0
  491. package/dist/tools/github/shared.d.ts +4 -0
  492. package/dist/tools/github/shared.js +12 -0
  493. package/dist/tools/github/shared.js.map +1 -0
  494. package/dist/tools/handoffNote.d.ts +106 -0
  495. package/dist/tools/handoffNote.js +232 -0
  496. package/dist/tools/handoffNote.js.map +1 -0
  497. package/dist/tools/headless/lspClient.d.ts +26 -0
  498. package/dist/tools/headless/lspClient.js +221 -0
  499. package/dist/tools/headless/lspClient.js.map +1 -0
  500. package/dist/tools/headless/lspFallback.d.ts +28 -0
  501. package/dist/tools/headless/lspFallback.js +122 -0
  502. package/dist/tools/headless/lspFallback.js.map +1 -0
  503. package/dist/tools/hoverAtCursor.d.ts +54 -0
  504. package/dist/tools/hoverAtCursor.js +68 -0
  505. package/dist/tools/hoverAtCursor.js.map +1 -0
  506. package/dist/tools/httpClient.d.ts +141 -0
  507. package/dist/tools/httpClient.js +486 -0
  508. package/dist/tools/httpClient.js.map +1 -0
  509. package/dist/tools/index.d.ts +49 -0
  510. package/dist/tools/index.js +672 -0
  511. package/dist/tools/index.js.map +1 -0
  512. package/dist/tools/inlayHints.d.ts +81 -0
  513. package/dist/tools/inlayHints.js +76 -0
  514. package/dist/tools/inlayHints.js.map +1 -0
  515. package/dist/tools/issueRefs.d.ts +14 -0
  516. package/dist/tools/issueRefs.js +27 -0
  517. package/dist/tools/issueRefs.js.map +1 -0
  518. package/dist/tools/jumpToFirstError.d.ts +63 -0
  519. package/dist/tools/jumpToFirstError.js +124 -0
  520. package/dist/tools/jumpToFirstError.js.map +1 -0
  521. package/dist/tools/launchQuickTask.d.ts +76 -0
  522. package/dist/tools/launchQuickTask.js +170 -0
  523. package/dist/tools/launchQuickTask.js.map +1 -0
  524. package/dist/tools/linters/biome.d.ts +2 -0
  525. package/dist/tools/linters/biome.js +44 -0
  526. package/dist/tools/linters/biome.js.map +1 -0
  527. package/dist/tools/linters/cargo.d.ts +2 -0
  528. package/dist/tools/linters/cargo.js +45 -0
  529. package/dist/tools/linters/cargo.js.map +1 -0
  530. package/dist/tools/linters/eslint.d.ts +2 -0
  531. package/dist/tools/linters/eslint.js +59 -0
  532. package/dist/tools/linters/eslint.js.map +1 -0
  533. package/dist/tools/linters/govet.d.ts +2 -0
  534. package/dist/tools/linters/govet.js +37 -0
  535. package/dist/tools/linters/govet.js.map +1 -0
  536. package/dist/tools/linters/pyright.d.ts +2 -0
  537. package/dist/tools/linters/pyright.js +34 -0
  538. package/dist/tools/linters/pyright.js.map +1 -0
  539. package/dist/tools/linters/ruff.d.ts +2 -0
  540. package/dist/tools/linters/ruff.js +30 -0
  541. package/dist/tools/linters/ruff.js.map +1 -0
  542. package/dist/tools/linters/types.d.ts +16 -0
  543. package/dist/tools/linters/types.js +2 -0
  544. package/dist/tools/linters/types.js.map +1 -0
  545. package/dist/tools/linters/typescript.d.ts +2 -0
  546. package/dist/tools/linters/typescript.js +38 -0
  547. package/dist/tools/linters/typescript.js.map +1 -0
  548. package/dist/tools/listClaudeTasks.d.ts +84 -0
  549. package/dist/tools/listClaudeTasks.js +88 -0
  550. package/dist/tools/listClaudeTasks.js.map +1 -0
  551. package/dist/tools/listTerminals.d.ts +55 -0
  552. package/dist/tools/listTerminals.js +78 -0
  553. package/dist/tools/listTerminals.js.map +1 -0
  554. package/dist/tools/lsp.d.ts +1086 -0
  555. package/dist/tools/lsp.js +1339 -0
  556. package/dist/tools/lsp.js.map +1 -0
  557. package/dist/tools/navigateToSymbolByName.d.ts +56 -0
  558. package/dist/tools/navigateToSymbolByName.js +170 -0
  559. package/dist/tools/navigateToSymbolByName.js.map +1 -0
  560. package/dist/tools/openDiff.d.ts +66 -0
  561. package/dist/tools/openDiff.js +126 -0
  562. package/dist/tools/openDiff.js.map +1 -0
  563. package/dist/tools/openFile.d.ts +69 -0
  564. package/dist/tools/openFile.js +129 -0
  565. package/dist/tools/openFile.js.map +1 -0
  566. package/dist/tools/openInBrowser.d.ts +55 -0
  567. package/dist/tools/openInBrowser.js +129 -0
  568. package/dist/tools/openInBrowser.js.map +1 -0
  569. package/dist/tools/organizeImports.d.ts +56 -0
  570. package/dist/tools/organizeImports.js +115 -0
  571. package/dist/tools/organizeImports.js.map +1 -0
  572. package/dist/tools/performanceReport.d.ts +133 -0
  573. package/dist/tools/performanceReport.js +218 -0
  574. package/dist/tools/performanceReport.js.map +1 -0
  575. package/dist/tools/planPersistence.d.ts +306 -0
  576. package/dist/tools/planPersistence.js +485 -0
  577. package/dist/tools/planPersistence.js.map +1 -0
  578. package/dist/tools/previewEdit.d.ts +107 -0
  579. package/dist/tools/previewEdit.js +270 -0
  580. package/dist/tools/previewEdit.js.map +1 -0
  581. package/dist/tools/recentTracesDigest.d.ts +35 -0
  582. package/dist/tools/recentTracesDigest.js +98 -0
  583. package/dist/tools/recentTracesDigest.js.map +1 -0
  584. package/dist/tools/refactorAnalyze.d.ts +78 -0
  585. package/dist/tools/refactorAnalyze.js +141 -0
  586. package/dist/tools/refactorAnalyze.js.map +1 -0
  587. package/dist/tools/refactorExtractFunction.d.ts +52 -0
  588. package/dist/tools/refactorExtractFunction.js +121 -0
  589. package/dist/tools/refactorExtractFunction.js.map +1 -0
  590. package/dist/tools/refactorPreview.d.ts +75 -0
  591. package/dist/tools/refactorPreview.js +93 -0
  592. package/dist/tools/refactorPreview.js.map +1 -0
  593. package/dist/tools/replaceBlock.d.ts +62 -0
  594. package/dist/tools/replaceBlock.js +125 -0
  595. package/dist/tools/replaceBlock.js.map +1 -0
  596. package/dist/tools/resumeClaudeTask.d.ts +75 -0
  597. package/dist/tools/resumeClaudeTask.js +149 -0
  598. package/dist/tools/resumeClaudeTask.js.map +1 -0
  599. package/dist/tools/runClaudeTask.d.ts +97 -0
  600. package/dist/tools/runClaudeTask.js +224 -0
  601. package/dist/tools/runClaudeTask.js.map +1 -0
  602. package/dist/tools/runCommand.d.ts +82 -0
  603. package/dist/tools/runCommand.js +101 -0
  604. package/dist/tools/runCommand.js.map +1 -0
  605. package/dist/tools/runTests.d.ts +146 -0
  606. package/dist/tools/runTests.js +315 -0
  607. package/dist/tools/runTests.js.map +1 -0
  608. package/dist/tools/saveDocument.d.ts +50 -0
  609. package/dist/tools/saveDocument.js +73 -0
  610. package/dist/tools/saveDocument.js.map +1 -0
  611. package/dist/tools/screenshot.d.ts +23 -0
  612. package/dist/tools/screenshot.js +43 -0
  613. package/dist/tools/screenshot.js.map +1 -0
  614. package/dist/tools/screenshotAndAnnotate.d.ts +103 -0
  615. package/dist/tools/screenshotAndAnnotate.js +192 -0
  616. package/dist/tools/screenshotAndAnnotate.js.map +1 -0
  617. package/dist/tools/searchAndReplace.d.ts +108 -0
  618. package/dist/tools/searchAndReplace.js +281 -0
  619. package/dist/tools/searchAndReplace.js.map +1 -0
  620. package/dist/tools/searchTools.d.ts +61 -0
  621. package/dist/tools/searchTools.js +85 -0
  622. package/dist/tools/searchTools.js.map +1 -0
  623. package/dist/tools/searchWorkspace.d.ts +99 -0
  624. package/dist/tools/searchWorkspace.js +189 -0
  625. package/dist/tools/searchWorkspace.js.map +1 -0
  626. package/dist/tools/selectionRanges.d.ts +58 -0
  627. package/dist/tools/selectionRanges.js +61 -0
  628. package/dist/tools/selectionRanges.js.map +1 -0
  629. package/dist/tools/semanticTokens.d.ts +87 -0
  630. package/dist/tools/semanticTokens.js +86 -0
  631. package/dist/tools/semanticTokens.js.map +1 -0
  632. package/dist/tools/setActiveWorkspaceFolder.d.ts +41 -0
  633. package/dist/tools/setActiveWorkspaceFolder.js +38 -0
  634. package/dist/tools/setActiveWorkspaceFolder.js.map +1 -0
  635. package/dist/tools/signatureHelp.d.ts +86 -0
  636. package/dist/tools/signatureHelp.js +79 -0
  637. package/dist/tools/signatureHelp.js.map +1 -0
  638. package/dist/tools/spawnWorkspace.d.ts +103 -0
  639. package/dist/tools/spawnWorkspace.js +268 -0
  640. package/dist/tools/spawnWorkspace.js.map +1 -0
  641. package/dist/tools/stackTraceParser.d.ts +43 -0
  642. package/dist/tools/stackTraceParser.js +139 -0
  643. package/dist/tools/stackTraceParser.js.map +1 -0
  644. package/dist/tools/terminal.d.ts +352 -0
  645. package/dist/tools/terminal.js +670 -0
  646. package/dist/tools/terminal.js.map +1 -0
  647. package/dist/tools/testRunners/cargoTest.d.ts +2 -0
  648. package/dist/tools/testRunners/cargoTest.js +129 -0
  649. package/dist/tools/testRunners/cargoTest.js.map +1 -0
  650. package/dist/tools/testRunners/goTest.d.ts +2 -0
  651. package/dist/tools/testRunners/goTest.js +108 -0
  652. package/dist/tools/testRunners/goTest.js.map +1 -0
  653. package/dist/tools/testRunners/pytest.d.ts +2 -0
  654. package/dist/tools/testRunners/pytest.js +135 -0
  655. package/dist/tools/testRunners/pytest.js.map +1 -0
  656. package/dist/tools/testRunners/types.d.ts +18 -0
  657. package/dist/tools/testRunners/types.js +2 -0
  658. package/dist/tools/testRunners/types.js.map +1 -0
  659. package/dist/tools/testRunners/vitestJest.d.ts +3 -0
  660. package/dist/tools/testRunners/vitestJest.js +215 -0
  661. package/dist/tools/testRunners/vitestJest.js.map +1 -0
  662. package/dist/tools/testTraceToSource.d.ts +80 -0
  663. package/dist/tools/testTraceToSource.js +206 -0
  664. package/dist/tools/testTraceToSource.js.map +1 -0
  665. package/dist/tools/transaction.d.ts +243 -0
  666. package/dist/tools/transaction.js +309 -0
  667. package/dist/tools/transaction.js.map +1 -0
  668. package/dist/tools/typeHierarchy.d.ts +77 -0
  669. package/dist/tools/typeHierarchy.js +86 -0
  670. package/dist/tools/typeHierarchy.js.map +1 -0
  671. package/dist/tools/utils.d.ts +124 -0
  672. package/dist/tools/utils.js +566 -0
  673. package/dist/tools/utils.js.map +1 -0
  674. package/dist/tools/vscodeCommands.d.ts +90 -0
  675. package/dist/tools/vscodeCommands.js +112 -0
  676. package/dist/tools/vscodeCommands.js.map +1 -0
  677. package/dist/tools/vscodeTasks.d.ts +102 -0
  678. package/dist/tools/vscodeTasks.js +110 -0
  679. package/dist/tools/vscodeTasks.js.map +1 -0
  680. package/dist/tools/watchDiagnostics.d.ts +64 -0
  681. package/dist/tools/watchDiagnostics.js +270 -0
  682. package/dist/tools/watchDiagnostics.js.map +1 -0
  683. package/dist/tools/workspaceSettings.d.ts +57 -0
  684. package/dist/tools/workspaceSettings.js +80 -0
  685. package/dist/tools/workspaceSettings.js.map +1 -0
  686. package/dist/transport.d.ts +207 -0
  687. package/dist/transport.js +1272 -0
  688. package/dist/transport.js.map +1 -0
  689. package/dist/version.d.ts +13 -0
  690. package/dist/version.js +31 -0
  691. package/dist/version.js.map +1 -0
  692. package/dist/wsUtils.d.ts +8 -0
  693. package/dist/wsUtils.js +54 -0
  694. package/dist/wsUtils.js.map +1 -0
  695. package/package.json +118 -0
  696. package/scripts/gen-claude-desktop-config.sh +124 -0
  697. package/scripts/gen-mcp-config.sh +390 -0
  698. package/scripts/install-extension.sh +106 -0
  699. package/scripts/mcp-stdio-shim.cjs +482 -0
  700. package/scripts/postinstall.mjs +68 -0
  701. package/scripts/start-all.sh +502 -0
  702. package/scripts/start-orchestrator.sh +186 -0
  703. package/scripts/start-remote.sh +126 -0
  704. package/scripts/start-vps.sh +116 -0
  705. package/templates/CLAUDE.bridge.md +125 -0
  706. package/templates/automation-policies/security-first.json +46 -0
  707. package/templates/automation-policies/strict-lint.json +41 -0
  708. package/templates/automation-policies/test-driven.json +54 -0
  709. package/templates/automation-policy.example.json +105 -0
  710. package/templates/bridge-tools.md +111 -0
  711. package/templates/dispatch-context.md +33 -0
  712. package/templates/managed-agent/code-review-agent.md +50 -0
  713. package/templates/managed-agent/managed-agent-mcp.json +102 -0
  714. package/templates/recipes/ambient-journal.yaml +11 -0
  715. package/templates/recipes/daily-status.yaml +21 -0
  716. package/templates/recipes/lint-on-save.yaml +13 -0
  717. package/templates/recipes/stale-branches.yaml +18 -0
  718. package/templates/recipes/watch-failing-tests.yaml +15 -0
  719. package/templates/scheduled-tasks/dependency-audit/SKILL.md +77 -0
  720. package/templates/scheduled-tasks/health-check/SKILL.md +73 -0
  721. package/templates/scheduled-tasks/nightly-review/SKILL.md +69 -0
package/dist/config.js ADDED
@@ -0,0 +1,720 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { loadConfig as loadPatchworkConfig, defaultConfigPath as patchworkConfigPath, } from "./patchworkConfig.js";
6
+ const DEFAULT_ALLOWLIST = [
7
+ "git",
8
+ "npm",
9
+ "cargo",
10
+ "go",
11
+ "pytest",
12
+ "jest",
13
+ "vitest",
14
+ "tsc",
15
+ "eslint",
16
+ "biome",
17
+ ];
18
+ /**
19
+ * Extra commands enabled by --vps flag for headless server deployments.
20
+ * Not interpreter commands — safe to allowlist when no GUI IDE is attached.
21
+ */
22
+ export const VPS_ALLOWLIST_EXTRAS = [
23
+ "curl",
24
+ "systemctl",
25
+ "journalctl",
26
+ "service",
27
+ "nginx",
28
+ "pm2",
29
+ "docker",
30
+ "docker-compose",
31
+ "certbot",
32
+ "ufw",
33
+ "htop",
34
+ "top",
35
+ "ss",
36
+ "lsof",
37
+ "tar",
38
+ "gzip",
39
+ "gunzip",
40
+ "rsync",
41
+ "dig",
42
+ "openssl",
43
+ "prisma",
44
+ ];
45
+ /**
46
+ * Extra commands enabled by --db flag for database development.
47
+ * Not interpreter commands — safe to allowlist for DB workflows.
48
+ */
49
+ export const DB_ALLOWLIST_EXTRAS = [
50
+ "psql",
51
+ "pg_dump",
52
+ "pg_restore",
53
+ "createdb",
54
+ "dropdb",
55
+ "mysql",
56
+ "mysqldump",
57
+ "sqlite3",
58
+ "redis-cli",
59
+ "mongosh",
60
+ ];
61
+ /** Commands that can execute arbitrary code via flags like -e, -c, --eval.
62
+ * These are blocked from the default allowlist but can be added via --allow-command. */
63
+ export const INTERPRETER_COMMANDS = new Set([
64
+ "node",
65
+ "python",
66
+ "python3",
67
+ "make",
68
+ "bash",
69
+ "sh",
70
+ "zsh",
71
+ "dash",
72
+ "fish",
73
+ "ksh",
74
+ "csh",
75
+ "tcsh",
76
+ "ruby",
77
+ "perl",
78
+ "lua",
79
+ "php",
80
+ ]);
81
+ const EDITOR_IDE_NAMES = {
82
+ windsurf: "Windsurf",
83
+ cursor: "Cursor",
84
+ antigravity: "Antigravity",
85
+ ag: "Antigravity",
86
+ code: "VS Code",
87
+ };
88
+ export function findEditor() {
89
+ const whichCmd = process.platform === "win32" ? "where" : "which";
90
+ for (const cmd of ["windsurf", "cursor", "antigravity", "ag", "code"]) {
91
+ try {
92
+ execFileSync(whichCmd, [cmd], { stdio: "ignore", timeout: 3000 });
93
+ return cmd;
94
+ }
95
+ catch {
96
+ // not found
97
+ }
98
+ }
99
+ return null;
100
+ }
101
+ /** Exported for testing. Maps an editor CLI command to its human-readable IDE name. */
102
+ export function ideNameFromEditor(editorCommand) {
103
+ return EDITOR_IDE_NAMES[editorCommand] ?? editorCommand;
104
+ }
105
+ const KNOWN_CONFIG_FILE_KEYS = new Set([
106
+ "workspace",
107
+ "port",
108
+ "logLevel",
109
+ "linters",
110
+ "commandAllowlist",
111
+ "vscodeCommandAllowlist",
112
+ "commandTimeout",
113
+ "maxResultSize",
114
+ "gracePeriodMs",
115
+ "bindAddress",
116
+ "editorCommand",
117
+ "ideName",
118
+ "autoTmux",
119
+ "claudeDriver",
120
+ "claudeBinary",
121
+ "antBinary",
122
+ "automationEnabled",
123
+ "automationPolicyPath",
124
+ "plugins",
125
+ "pluginWatch",
126
+ "fixedToken",
127
+ "issuerUrl",
128
+ "oauthTokenTtlDays",
129
+ "corsOrigins",
130
+ "fullMode",
131
+ "maxSessions",
132
+ "githubDefaultRepo",
133
+ "lspVerbosity",
134
+ ]);
135
+ /**
136
+ * Load a config file and return its contents as a partial Config.
137
+ * Discovery order: $CLAUDE_IDE_BRIDGE_CONFIG → ./claude-ide-bridge.config.json → ~/.claude/ide/config.json
138
+ * On any error (file not found, parse failure) logs a warning and returns {}.
139
+ */
140
+ export function loadConfigFile(configPath) {
141
+ const candidates = [];
142
+ if (configPath) {
143
+ candidates.push(configPath);
144
+ }
145
+ else {
146
+ if (process.env.CLAUDE_IDE_BRIDGE_CONFIG) {
147
+ candidates.push(process.env.CLAUDE_IDE_BRIDGE_CONFIG);
148
+ }
149
+ candidates.push(path.join(process.cwd(), "claude-ide-bridge.config.json"));
150
+ const claudeDir = process.env.CLAUDE_CONFIG_DIR ?? path.join(os.homedir(), ".claude");
151
+ candidates.push(path.join(claudeDir, "ide", "config.json"));
152
+ }
153
+ for (const candidate of candidates) {
154
+ if (!fs.existsSync(candidate))
155
+ continue;
156
+ try {
157
+ const raw = fs.readFileSync(candidate, "utf-8");
158
+ const parsed = JSON.parse(raw);
159
+ if (typeof parsed !== "object" ||
160
+ parsed === null ||
161
+ Array.isArray(parsed)) {
162
+ console.warn(`Warning: Config file ${candidate} is not a JSON object — ignored`);
163
+ return {};
164
+ }
165
+ const obj = parsed;
166
+ for (const key of Object.keys(obj)) {
167
+ if (!KNOWN_CONFIG_FILE_KEYS.has(key)) {
168
+ console.warn(`Warning: Unknown config file key "${key}" in ${candidate} — check for typos or update the bridge. Key ignored.`);
169
+ }
170
+ }
171
+ // Coerce numeric fields (JSON stringifies may convert to strings)
172
+ for (const numKey of [
173
+ "port",
174
+ "commandTimeout",
175
+ "maxResultSize",
176
+ "gracePeriodMs",
177
+ "maxSessions",
178
+ "oauthTokenTtlDays",
179
+ ]) {
180
+ if (numKey in obj && typeof obj[numKey] === "string") {
181
+ const parsed = Number.parseInt(obj[numKey], 10);
182
+ if (Number.isInteger(parsed))
183
+ obj[numKey] = parsed;
184
+ }
185
+ }
186
+ return obj;
187
+ }
188
+ catch (err) {
189
+ console.warn(`Warning: Failed to parse config file ${candidate}: ${err instanceof Error ? err.message : String(err)} — ignored`);
190
+ return {};
191
+ }
192
+ }
193
+ return {};
194
+ }
195
+ function requireArg(args, i, flag) {
196
+ const value = args[i];
197
+ if (value === undefined || value.startsWith("--")) {
198
+ throw new Error(`Missing value for ${flag}`);
199
+ }
200
+ return value;
201
+ }
202
+ export function parseConfig(argv) {
203
+ const args = argv.slice(2);
204
+ // Find --config path before the main arg parse (lowest priority: loaded first)
205
+ let configFilePath;
206
+ for (let i = 0; i < args.length; i++) {
207
+ if (args[i] === "--config") {
208
+ if (i + 1 >= args.length) {
209
+ throw new Error("--config requires a path argument");
210
+ }
211
+ configFilePath = args[++i];
212
+ if (configFilePath.length > 4096) {
213
+ throw new Error("--config path is too long (max 4096 chars)");
214
+ }
215
+ break;
216
+ }
217
+ }
218
+ const fileConfig = loadConfigFile(configFilePath);
219
+ // Defaults — config file values fill in where CLI/env don't override
220
+ let workspace = fileConfig.workspace
221
+ ? path.resolve(fileConfig.workspace)
222
+ : process.cwd();
223
+ let ideName = fileConfig.ideName ?? "External";
224
+ let editorCommand = fileConfig.editorCommand ?? null;
225
+ let port = fileConfig.port ?? null;
226
+ let verbose = false;
227
+ let jsonl = false;
228
+ let linters = fileConfig.linters ?? [];
229
+ for (const cmd of fileConfig.commandAllowlist ?? []) {
230
+ if (INTERPRETER_COMMANDS.has(cmd)) {
231
+ throw new Error(`"${cmd}" is an interpreter and cannot be added via commandAllowlist in config file (arbitrary code execution risk)`);
232
+ }
233
+ }
234
+ const commandAllowlist = [
235
+ ...DEFAULT_ALLOWLIST,
236
+ ...(fileConfig.commandAllowlist ?? []),
237
+ ];
238
+ const vscodeCommandAllowlist = fileConfig.vscodeCommandAllowlist ?? [];
239
+ let bindAddress = process.env.BRIDGE_BIND_ADDRESS ?? fileConfig.bindAddress ?? "127.0.0.1";
240
+ let commandTimeout = fileConfig.commandTimeout ?? 30_000;
241
+ let maxResultSize = fileConfig.maxResultSize ?? 512;
242
+ let gracePeriodMs = fileConfig.gracePeriodMs ?? 120_000;
243
+ let autoTmux = fileConfig.autoTmux ?? false;
244
+ let watch = false;
245
+ let vps = false;
246
+ let db = false;
247
+ let allowPrivateHttp = false;
248
+ let pluginWatch = fileConfig.pluginWatch ?? false;
249
+ let fixedToken = fileConfig.fixedToken ?? null;
250
+ let issuerUrl = fileConfig.issuerUrl ?? null;
251
+ const rawTtlDays = fileConfig.oauthTokenTtlDays;
252
+ const oauthTokenTtlMs = typeof rawTtlDays === "number" && rawTtlDays > 0
253
+ ? Math.min(Math.max(rawTtlDays, 1), 90) * 24 * 60 * 60 * 1_000
254
+ : 24 * 60 * 60 * 1_000; // default 24h
255
+ let corsOrigins = fileConfig.corsOrigins ?? [];
256
+ let claudeDriver = fileConfig.claudeDriver ?? "none";
257
+ let claudeBinary = fileConfig.claudeBinary ?? "claude";
258
+ let antBinary = fileConfig.antBinary ?? "ant";
259
+ let automationEnabled = fileConfig.automationEnabled ?? false;
260
+ let automationPolicyPath = fileConfig.automationPolicyPath ?? null;
261
+ let approvalGate = fileConfig.approvalGate ??
262
+ "off";
263
+ let managedSettingsPath = null;
264
+ // Read approvalWebhookUrl and approvalGate from patchwork config (non-fatal, CLI flag takes precedence)
265
+ const approvalWebhookUrl = (() => {
266
+ try {
267
+ const pw = loadPatchworkConfig(patchworkConfigPath());
268
+ if (pw.approvalGate &&
269
+ !fileConfig.approvalGate) {
270
+ approvalGate = pw.approvalGate;
271
+ }
272
+ return pw.dashboard?.webhookUrl ?? null;
273
+ }
274
+ catch {
275
+ return null;
276
+ }
277
+ })();
278
+ let toolRateLimit = 60;
279
+ const plugins = [...(fileConfig.plugins ?? [])];
280
+ let auditLogPath = null;
281
+ let fullMode = fileConfig.fullMode ?? true;
282
+ let maxSessions = fileConfig.maxSessions ?? 5;
283
+ if (fileConfig.maxSessions !== undefined &&
284
+ (typeof fileConfig.maxSessions !== "number" ||
285
+ fileConfig.maxSessions < 1 ||
286
+ fileConfig.maxSessions > 100)) {
287
+ throw new Error(`Invalid maxSessions in config file: ${fileConfig.maxSessions}. Must be a number between 1 and 100.`);
288
+ }
289
+ let analyticsEnabled = null;
290
+ const githubDefaultRepo = fileConfig.githubDefaultRepo ?? null;
291
+ let lspVerbosity = fileConfig.lspVerbosity ?? "normal";
292
+ for (let i = 0; i < args.length; i++) {
293
+ switch (args[i]) {
294
+ case "--workspace":
295
+ workspace = path.resolve(requireArg(args, ++i, "--workspace"));
296
+ break;
297
+ case "--ide-name":
298
+ ideName = requireArg(args, ++i, "--ide-name");
299
+ if (ideName.length > 256)
300
+ throw new Error("--ide-name value too long (max 256 chars)");
301
+ break;
302
+ case "--editor":
303
+ editorCommand = requireArg(args, ++i, "--editor");
304
+ if (editorCommand.length > 4096)
305
+ throw new Error("--editor value too long (max 4096 chars)");
306
+ break;
307
+ case "--bind":
308
+ bindAddress = requireArg(args, ++i, "--bind");
309
+ if (bindAddress.length > 64)
310
+ throw new Error("--bind value too long (max 64 chars)");
311
+ break;
312
+ case "--port": {
313
+ const portStr = requireArg(args, ++i, "--port");
314
+ port = Number.parseInt(portStr, 10);
315
+ if (!Number.isInteger(port) || port < 1024 || port > 65535) {
316
+ throw new Error(`Invalid port: ${portStr}. Must be an integer between 1024 and 65535.`);
317
+ }
318
+ break;
319
+ }
320
+ case "--verbose":
321
+ verbose = true;
322
+ break;
323
+ case "--jsonl":
324
+ jsonl = true;
325
+ break;
326
+ case "--linter": {
327
+ const linter = requireArg(args, ++i, "--linter");
328
+ if (linter.length > 256)
329
+ throw new Error("--linter value too long (max 256 chars)");
330
+ linters.push(linter);
331
+ break;
332
+ }
333
+ case "--allow-command": {
334
+ const cmd = requireArg(args, ++i, "--allow-command");
335
+ if (cmd.length > 256)
336
+ throw new Error("--allow-command value too long (max 256 chars)");
337
+ if (INTERPRETER_COMMANDS.has(cmd)) {
338
+ throw new Error(`"${cmd}" is an interpreter and cannot be added via --allow-command (arbitrary code execution risk)`);
339
+ }
340
+ commandAllowlist.push(cmd);
341
+ break;
342
+ }
343
+ case "--vscode-allow-command": {
344
+ const vcmd = requireArg(args, ++i, "--vscode-allow-command");
345
+ if (vcmd.length > 256)
346
+ throw new Error("--vscode-allow-command value too long (max 256 chars)");
347
+ vscodeCommandAllowlist.push(vcmd);
348
+ break;
349
+ }
350
+ case "--timeout": {
351
+ const tStr = requireArg(args, ++i, "--timeout");
352
+ commandTimeout = Number.parseInt(tStr, 10);
353
+ if (!Number.isInteger(commandTimeout) ||
354
+ commandTimeout < 1000 ||
355
+ commandTimeout > 600_000) {
356
+ throw new Error(`Invalid timeout: ${tStr}. Must be between 1000 and 600000 ms.`);
357
+ }
358
+ break;
359
+ }
360
+ case "--config":
361
+ // Already consumed above to load config file; skip the value
362
+ i++;
363
+ break;
364
+ case "--vps":
365
+ vps = true;
366
+ commandAllowlist.push(...VPS_ALLOWLIST_EXTRAS);
367
+ break;
368
+ case "--db":
369
+ db = true;
370
+ commandAllowlist.push(...DB_ALLOWLIST_EXTRAS);
371
+ break;
372
+ case "--allow-private-http":
373
+ allowPrivateHttp = true;
374
+ break;
375
+ case "--watch":
376
+ watch = true;
377
+ break;
378
+ case "--auto-tmux":
379
+ autoTmux = true;
380
+ break;
381
+ case "--claude-driver": {
382
+ const driverVal = requireArg(args, ++i, "--claude-driver");
383
+ if (driverVal !== "subprocess" &&
384
+ driverVal !== "api" &&
385
+ driverVal !== "none") {
386
+ throw new Error(`Invalid --claude-driver value: "${driverVal}". Must be "subprocess", "api", or "none".`);
387
+ }
388
+ claudeDriver = driverVal;
389
+ break;
390
+ }
391
+ case "--claude-binary":
392
+ claudeBinary = requireArg(args, ++i, "--claude-binary");
393
+ if (claudeBinary.length > 4096)
394
+ throw new Error("--claude-binary value too long (max 4096 chars)");
395
+ break;
396
+ case "--ant-binary":
397
+ antBinary = requireArg(args, ++i, "--ant-binary");
398
+ if (antBinary.length > 4096)
399
+ throw new Error("--ant-binary value too long (max 4096 chars)");
400
+ break;
401
+ case "--approval-gate": {
402
+ const val = requireArg(args, ++i, "--approval-gate");
403
+ if (val !== "off" && val !== "high" && val !== "all") {
404
+ throw new Error(`--approval-gate must be one of: off, high, all (got "${val}")`);
405
+ }
406
+ approvalGate = val;
407
+ break;
408
+ }
409
+ case "--managed-settings": {
410
+ const mp = requireArg(args, ++i, "--managed-settings");
411
+ if (mp.length > 4096)
412
+ throw new Error("--managed-settings path too long (max 4096 chars)");
413
+ managedSettingsPath = path.resolve(mp);
414
+ break;
415
+ }
416
+ case "--automation":
417
+ automationEnabled = true;
418
+ break;
419
+ case "--automation-policy":
420
+ automationPolicyPath = path.resolve(requireArg(args, ++i, "--automation-policy"));
421
+ break;
422
+ case "--plugin": {
423
+ const pluginPath = requireArg(args, ++i, "--plugin");
424
+ if (pluginPath.length > 4096)
425
+ throw new Error("--plugin path too long (max 4096 chars)");
426
+ plugins.push(pluginPath);
427
+ break;
428
+ }
429
+ case "--fixed-token": {
430
+ const tok = requireArg(args, ++i, "--fixed-token");
431
+ if (!/^[0-9a-f-]{36}$/.test(tok))
432
+ throw new Error("--fixed-token must be a valid UUID (e.g. from uuidgen or crypto.randomUUID())");
433
+ fixedToken = tok;
434
+ break;
435
+ }
436
+ case "--issuer-url": {
437
+ issuerUrl = requireArg(args, ++i, "--issuer-url");
438
+ if (!/^https?:\/\/.+/.test(issuerUrl))
439
+ throw new Error("--issuer-url must be a valid http/https URL");
440
+ break;
441
+ }
442
+ case "--cors-origin": {
443
+ const origin = requireArg(args, ++i, "--cors-origin");
444
+ corsOrigins.push(origin);
445
+ break;
446
+ }
447
+ case "--full":
448
+ fullMode = true;
449
+ break;
450
+ case "--slim":
451
+ fullMode = false;
452
+ break;
453
+ case "--max-sessions": {
454
+ const msStr = requireArg(args, ++i, "--max-sessions");
455
+ const ms = Number.parseInt(msStr, 10);
456
+ if (Number.isNaN(ms) || ms < 1 || ms > 100) {
457
+ throw new Error(`Invalid max-sessions: ${msStr}. Must be between 1 and 100.`);
458
+ }
459
+ maxSessions = ms;
460
+ break;
461
+ }
462
+ case "--plugin-watch":
463
+ pluginWatch = true;
464
+ break;
465
+ case "--audit-log": {
466
+ const logPath = requireArg(args, ++i, "--audit-log");
467
+ if (logPath.length > 4096)
468
+ throw new Error("--audit-log path too long (max 4096 chars)");
469
+ auditLogPath = path.resolve(logPath);
470
+ break;
471
+ }
472
+ case "--lsp-verbosity": {
473
+ const lv = requireArg(args, ++i, "--lsp-verbosity");
474
+ if (lv !== "minimal" && lv !== "normal" && lv !== "verbose") {
475
+ throw new Error(`Invalid --lsp-verbosity: "${lv}". Must be "minimal", "normal", or "verbose".`);
476
+ }
477
+ lspVerbosity = lv;
478
+ break;
479
+ }
480
+ case "--analytics": {
481
+ const val = requireArg(args, ++i, "--analytics");
482
+ if (val !== "on" && val !== "off")
483
+ throw new Error('--analytics must be "on" or "off"');
484
+ analyticsEnabled = val === "on";
485
+ break;
486
+ }
487
+ case "--tool-rate-limit": {
488
+ const tlStr = requireArg(args, ++i, "--tool-rate-limit");
489
+ toolRateLimit = Number.parseInt(tlStr, 10);
490
+ if (!Number.isInteger(toolRateLimit) ||
491
+ toolRateLimit < 1 ||
492
+ toolRateLimit > 10_000) {
493
+ throw new Error(`Invalid --tool-rate-limit: ${tlStr}. Must be between 1 and 10000.`);
494
+ }
495
+ break;
496
+ }
497
+ case "--grace-period": {
498
+ const gStr = requireArg(args, ++i, "--grace-period");
499
+ gracePeriodMs = Number.parseInt(gStr, 10);
500
+ if (!Number.isInteger(gracePeriodMs) ||
501
+ gracePeriodMs < 5000 ||
502
+ gracePeriodMs > 600_000) {
503
+ throw new Error(`Invalid grace-period: ${gStr}. Must be between 5000 and 600000 ms.`);
504
+ }
505
+ break;
506
+ }
507
+ case "--max-result-size": {
508
+ const mStr = requireArg(args, ++i, "--max-result-size");
509
+ maxResultSize = Number.parseInt(mStr, 10);
510
+ if (!Number.isInteger(maxResultSize) ||
511
+ maxResultSize < 1 ||
512
+ maxResultSize > 4096) {
513
+ throw new Error(`Invalid max-result-size: ${mStr}. Must be between 1 and 4096 KB.`);
514
+ }
515
+ break;
516
+ }
517
+ case "--help": {
518
+ console.log(`claude-ide-bridge - Standalone MCP bridge for Claude Code IDE integration
519
+
520
+ Usage: claude-ide-bridge [options]
521
+
522
+ Options:
523
+ --workspace <path> Workspace folder (default: cwd)
524
+ --ide-name <name> IDE name shown to Claude (default: "External")
525
+ --editor <cmd> Editor CLI command (default: auto-detect windsurf/cursor/antigravity/code)
526
+ --port <number> Force specific port (default: random)
527
+ --bind <addr> Bind address (default: 127.0.0.1, env: BRIDGE_BIND_ADDRESS)
528
+ --fixed-token <uuid> Use a stable auth token (default: random UUID on each start)
529
+ --issuer-url <url> Public URL for OAuth 2.0 (e.g. https://abc.ngrok-free.app)
530
+ --linter <name> Enable specific linter (repeatable; default: auto-detect)
531
+ --allow-command <cmd> Add command to execution allowlist (repeatable)
532
+ --vscode-allow-command <cmd> Add VS Code command to invocation allowlist (repeatable)
533
+ --timeout <ms> Command timeout in ms (default: 30000, max: 600000)
534
+ --max-result-size <KB> Max output size in KB (default: 512, max: 4096)
535
+ --grace-period <ms> Reconnect grace period in ms (default: 30000, max: 600000)
536
+ --watch Supervisor mode: auto-restart bridge on crash (exponential backoff, max 30s)
537
+ --max-sessions <n> Max concurrent Claude sessions (default: 5, max: 100)
538
+ --lsp-verbosity <level> Hover/LSP output verbosity: "minimal" (type sig only, ~60% smaller),
539
+ "normal" (default), "verbose" (all fields)
540
+ --slim Register only the ~60 IDE-exclusive tools (LSP, debugger, editor state).
541
+ Default is full mode (~140 tools: adds git, terminal, file ops, HTTP, GitHub).
542
+ --full (default — flag retained for backward compatibility) Explicitly request full tool set.
543
+ --vps VPS/headless mode: expands allowlist with curl, systemctl, docker, tar, dig, openssl, etc.
544
+ --db Database mode: expands allowlist with psql, pg_dump, mysql, sqlite3, redis-cli, mongosh, etc.
545
+ --allow-private-http Allow sendHttpRequest to reach localhost/private IPs (for VPS where bridge runs alongside services)
546
+ --auto-tmux Auto-wrap in tmux session if not already inside one
547
+ --config <path> Load config file (default: ./claude-ide-bridge.config.json)
548
+ --verbose Enable debug logging
549
+ --jsonl Emit structured JSONL events to stderr
550
+ --version, -v Print version and exit
551
+ --analytics <on|off> Enable or disable anonymous usage analytics
552
+ --help Show this help
553
+
554
+ Patchwork:
555
+ --approval-gate <level> Gate tool calls via oversight dashboard: "off" | "high" | "all" (default: "off")
556
+ --managed-settings <path> Admin-controlled settings file (highest rule precedence, cannot be overridden by users)
557
+
558
+ Automation:
559
+ --claude-driver <mode> Enable Claude subprocess driver: "subprocess" | "api" | "none" (default: "none")
560
+ --claude-binary <path> Path to claude binary (default: "claude")
561
+ --automation Enable event-driven automation hooks (requires --claude-driver != none and --automation-policy)
562
+ --automation-policy <path> Path to JSON automation policy file
563
+
564
+ Plugins:
565
+ --plugin <path-or-package> Load a plugin (repeatable). Accepts a local path (./my-plugin) or
566
+ an npm package name (claude-ide-bridge-plugin-jira).
567
+ Plugins must contain a claude-ide-bridge-plugin.json manifest.
568
+ --plugin-watch Re-load plugins automatically on file change (requires --plugin)
569
+
570
+ Subcommands:
571
+ shim stdio relay that auto-discovers the running bridge/orchestrator
572
+ and connects Claude Code to it. Add to ~/.claude.json once and
573
+ bridge tools are available in every claude session:
574
+ { "mcpServers": { "claude-ide-bridge":
575
+ { "command": "claude-ide-bridge", "args": ["shim"] } } }
576
+ orchestrator Start the orchestrator bridge — discovers all running IDE bridge
577
+ instances and exposes them as a single MCP server. Claude can then
578
+ work across multiple IDEs / workspaces in one session.
579
+ Options: --port <port> (default 4746)
580
+ --bind <address> (default 127.0.0.1)
581
+ --lock-dir <dir> (default ~/.claude/ide)
582
+ --health-interval <ms> (default 10000)
583
+ gen-plugin-stub <dir> Scaffold a new plugin directory with manifest + entrypoint.
584
+ Options: --name <org/name> --prefix <toolPrefix>
585
+ gen-claude-md Generate a CLAUDE.md bridge workflow section.
586
+ Options: --write [--workspace <path>]
587
+ print-token Print the auth token from the active bridge lock file.
588
+ Options: --port <port>
589
+ install-extension [editor] Install the VS Code extension into the given editor.
590
+ init One-command setup: install extension + write CLAUDE.md + register
591
+ MCP shim + print next steps.
592
+ Options: --workspace <path>
593
+ start-all Launch tmux session with bridge + extension watcher panes.
594
+ status Check bridge health and extension connectivity.
595
+ Options: --port <port> --json
596
+
597
+ Environment Variables:
598
+ CLAUDE_IDE_BRIDGE_EDITOR Editor command override
599
+ CLAUDE_IDE_BRIDGE_LINTERS Comma-separated linter list
600
+ CLAUDE_IDE_BRIDGE_TIMEOUT Command timeout in ms
601
+ CLAUDE_IDE_BRIDGE_MAX_RESULT_SIZE Max output size in KB
602
+ CLAUDE_IDE_BRIDGE_GRACE_PERIOD Reconnect grace period in ms
603
+ CLAUDE_CONFIG_DIR Override ~/.claude directory
604
+ CLAUDE_IDE_BRIDGE_CONFIG Path to config file (overrides auto-discovery)`);
605
+ return process.exit(0);
606
+ }
607
+ default: {
608
+ const arg = args[i];
609
+ if (arg?.startsWith("--")) {
610
+ throw new Error(`Unknown option: ${arg}. Run with --help for usage.`);
611
+ }
612
+ }
613
+ }
614
+ }
615
+ // Auto-detect editor
616
+ editorCommand =
617
+ editorCommand || process.env.CLAUDE_IDE_BRIDGE_EDITOR || findEditor();
618
+ // Auto-derive ideName from editor if not explicitly provided
619
+ if (ideName === "External" && editorCommand) {
620
+ ideName = ideNameFromEditor(editorCommand);
621
+ }
622
+ // Env var overrides
623
+ if (process.env.CLAUDE_IDE_BRIDGE_TOKEN) {
624
+ const envTok = process.env.CLAUDE_IDE_BRIDGE_TOKEN;
625
+ if (/^[0-9a-f-]{36}$/.test(envTok)) {
626
+ fixedToken = envTok;
627
+ }
628
+ else {
629
+ console.warn("Warning: CLAUDE_IDE_BRIDGE_TOKEN is not a valid UUID — ignored.");
630
+ }
631
+ }
632
+ if (process.env.CLAUDE_IDE_BRIDGE_ISSUER_URL) {
633
+ issuerUrl = process.env.CLAUDE_IDE_BRIDGE_ISSUER_URL;
634
+ }
635
+ if (process.env.CLAUDE_IDE_BRIDGE_CORS_ORIGINS) {
636
+ corsOrigins = process.env.CLAUDE_IDE_BRIDGE_CORS_ORIGINS.split(",").map((s) => s.trim());
637
+ }
638
+ if (process.env.CLAUDE_IDE_BRIDGE_LINTERS) {
639
+ linters = process.env.CLAUDE_IDE_BRIDGE_LINTERS.split(",").map((s) => s.trim());
640
+ }
641
+ if (process.env.CLAUDE_IDE_BRIDGE_TIMEOUT) {
642
+ const envTimeout = Number.parseInt(process.env.CLAUDE_IDE_BRIDGE_TIMEOUT, 10);
643
+ if (Number.isInteger(envTimeout) &&
644
+ envTimeout >= 1000 &&
645
+ envTimeout <= 600_000) {
646
+ commandTimeout = envTimeout;
647
+ }
648
+ else {
649
+ // console.warn rather than logger — Logger is constructed after parseConfig() returns
650
+ console.warn(`Warning: CLAUDE_IDE_BRIDGE_TIMEOUT=${process.env.CLAUDE_IDE_BRIDGE_TIMEOUT} is invalid (must be 1000-600000). Using default ${commandTimeout}.`);
651
+ }
652
+ }
653
+ if (process.env.CLAUDE_IDE_BRIDGE_MAX_RESULT_SIZE) {
654
+ const envSize = Number.parseInt(process.env.CLAUDE_IDE_BRIDGE_MAX_RESULT_SIZE, 10);
655
+ if (Number.isInteger(envSize) && envSize >= 1 && envSize <= 4096) {
656
+ maxResultSize = envSize;
657
+ }
658
+ else {
659
+ // console.warn rather than logger — Logger is constructed after parseConfig() returns
660
+ console.warn(`Warning: CLAUDE_IDE_BRIDGE_MAX_RESULT_SIZE=${process.env.CLAUDE_IDE_BRIDGE_MAX_RESULT_SIZE} is invalid (must be 1-4096). Using default ${maxResultSize}.`);
661
+ }
662
+ }
663
+ if (process.env.CLAUDE_IDE_BRIDGE_GRACE_PERIOD) {
664
+ const envGrace = Number.parseInt(process.env.CLAUDE_IDE_BRIDGE_GRACE_PERIOD, 10);
665
+ if (Number.isInteger(envGrace) && envGrace >= 5000 && envGrace <= 600_000) {
666
+ gracePeriodMs = envGrace;
667
+ }
668
+ else {
669
+ console.warn(`Warning: CLAUDE_IDE_BRIDGE_GRACE_PERIOD=${process.env.CLAUDE_IDE_BRIDGE_GRACE_PERIOD} is invalid (must be 5000-600000). Using default ${gracePeriodMs}.`);
670
+ }
671
+ }
672
+ if (pluginWatch && plugins.length === 0) {
673
+ process.stderr.write("Warning: --plugin-watch has no effect without --plugin\n");
674
+ }
675
+ return {
676
+ workspace,
677
+ workspaceFolders: [workspace],
678
+ ideName,
679
+ editorCommand,
680
+ port,
681
+ bindAddress,
682
+ verbose,
683
+ jsonl,
684
+ linters,
685
+ commandAllowlist,
686
+ commandTimeout,
687
+ maxResultSize,
688
+ vscodeCommandAllowlist,
689
+ activeWorkspaceFolder: workspace,
690
+ gracePeriodMs,
691
+ autoTmux,
692
+ claudeDriver,
693
+ claudeBinary,
694
+ antBinary,
695
+ automationEnabled,
696
+ automationPolicyPath,
697
+ approvalGate,
698
+ managedSettingsPath,
699
+ approvalWebhookUrl,
700
+ toolRateLimit,
701
+ watch,
702
+ plugins,
703
+ pluginWatch,
704
+ fixedToken,
705
+ issuerUrl,
706
+ oauthTokenTtlMs,
707
+ corsOrigins,
708
+ vps,
709
+ db,
710
+ allowPrivateHttp,
711
+ auditLogPath,
712
+ fullMode,
713
+ maxSessions,
714
+ analyticsEnabled,
715
+ githubDefaultRepo,
716
+ wsPingIntervalMs: 10_000,
717
+ lspVerbosity,
718
+ };
719
+ }
720
+ //# sourceMappingURL=config.js.map