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.
- package/LICENSE +21 -0
- package/README.bridge.md +352 -0
- package/README.md +72 -0
- package/deploy/README.md +172 -0
- package/deploy/bootstrap-new-vps.sh +364 -0
- package/deploy/claude-ide-bridge.service.template +67 -0
- package/deploy/claude-ide-bridge@.service +31 -0
- package/deploy/ecosystem.config.js.example +36 -0
- package/deploy/install-vps-service.sh +240 -0
- package/deploy/nginx-claude-bridge.conf.template +129 -0
- package/dist/activityLog.d.ts +112 -0
- package/dist/activityLog.js +399 -0
- package/dist/activityLog.js.map +1 -0
- package/dist/activityTypes.d.ts +28 -0
- package/dist/activityTypes.js +9 -0
- package/dist/activityTypes.js.map +1 -0
- package/dist/adapters/base.d.ts +78 -0
- package/dist/adapters/base.js +14 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +18 -0
- package/dist/adapters/claude.js +276 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/gemini.d.ts +17 -0
- package/dist/adapters/gemini.js +218 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/grok.d.ts +7 -0
- package/dist/adapters/grok.js +21 -0
- package/dist/adapters/grok.js.map +1 -0
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.js +37 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/local.d.ts +7 -0
- package/dist/adapters/local.js +22 -0
- package/dist/adapters/local.js.map +1 -0
- package/dist/adapters/openai.d.ts +22 -0
- package/dist/adapters/openai.js +284 -0
- package/dist/adapters/openai.js.map +1 -0
- package/dist/adapters/sse.d.ts +13 -0
- package/dist/adapters/sse.js +58 -0
- package/dist/adapters/sse.js.map +1 -0
- package/dist/analyticsAggregator.d.ts +28 -0
- package/dist/analyticsAggregator.js +133 -0
- package/dist/analyticsAggregator.js.map +1 -0
- package/dist/analyticsPrefs.d.ts +9 -0
- package/dist/analyticsPrefs.js +50 -0
- package/dist/analyticsPrefs.js.map +1 -0
- package/dist/analyticsSend.d.ts +12 -0
- package/dist/analyticsSend.js +34 -0
- package/dist/analyticsSend.js.map +1 -0
- package/dist/approvalHttp.d.ts +46 -0
- package/dist/approvalHttp.js +370 -0
- package/dist/approvalHttp.js.map +1 -0
- package/dist/approvalQueue.d.ts +49 -0
- package/dist/approvalQueue.js +84 -0
- package/dist/approvalQueue.js.map +1 -0
- package/dist/automation.d.ts +675 -0
- package/dist/automation.js +1038 -0
- package/dist/automation.js.map +1 -0
- package/dist/bridge.d.ts +85 -0
- package/dist/bridge.js +1535 -0
- package/dist/bridge.js.map +1 -0
- package/dist/bridgeLockDiscovery.d.ts +11 -0
- package/dist/bridgeLockDiscovery.js +49 -0
- package/dist/bridgeLockDiscovery.js.map +1 -0
- package/dist/bridgeToken.d.ts +22 -0
- package/dist/bridgeToken.js +114 -0
- package/dist/bridgeToken.js.map +1 -0
- package/dist/bridgeToolsRules.d.ts +20 -0
- package/dist/bridgeToolsRules.js +79 -0
- package/dist/bridgeToolsRules.js.map +1 -0
- package/dist/ccPermissions.d.ts +59 -0
- package/dist/ccPermissions.js +163 -0
- package/dist/ccPermissions.js.map +1 -0
- package/dist/claudeDriver.d.ts +129 -0
- package/dist/claudeDriver.js +459 -0
- package/dist/claudeDriver.js.map +1 -0
- package/dist/claudeMdPatch.d.ts +29 -0
- package/dist/claudeMdPatch.js +164 -0
- package/dist/claudeMdPatch.js.map +1 -0
- package/dist/claudeOrchestrator.d.ts +171 -0
- package/dist/claudeOrchestrator.js +591 -0
- package/dist/claudeOrchestrator.js.map +1 -0
- package/dist/commands/install.d.ts +1 -0
- package/dist/commands/install.js +158 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/marketplace.d.ts +11 -0
- package/dist/commands/marketplace.js +120 -0
- package/dist/commands/marketplace.js.map +1 -0
- package/dist/commands/patchworkInit.d.ts +14 -0
- package/dist/commands/patchworkInit.js +155 -0
- package/dist/commands/patchworkInit.js.map +1 -0
- package/dist/commands/task.d.ts +14 -0
- package/dist/commands/task.js +289 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/tokenEfficiency.d.ts +9 -0
- package/dist/commands/tokenEfficiency.js +211 -0
- package/dist/commands/tokenEfficiency.js.map +1 -0
- package/dist/commands/tools.d.ts +28 -0
- package/dist/commands/tools.js +326 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commitIssueLinkLog.d.ts +77 -0
- package/dist/commitIssueLinkLog.js +142 -0
- package/dist/commitIssueLinkLog.js.map +1 -0
- package/dist/companions/registry.d.ts +12 -0
- package/dist/companions/registry.js +71 -0
- package/dist/companions/registry.js.map +1 -0
- package/dist/config.d.ts +105 -0
- package/dist/config.js +720 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto.d.ts +16 -0
- package/dist/crypto.js +34 -0
- package/dist/crypto.js.map +1 -0
- package/dist/dashboard.d.ts +12 -0
- package/dist/dashboard.js +149 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/decisionTraceLog.d.ts +77 -0
- package/dist/decisionTraceLog.js +147 -0
- package/dist/decisionTraceLog.js.map +1 -0
- package/dist/errors.d.ts +32 -0
- package/dist/errors.js +34 -0
- package/dist/errors.js.map +1 -0
- package/dist/extensionClient.d.ts +279 -0
- package/dist/extensionClient.js +1253 -0
- package/dist/extensionClient.js.map +1 -0
- package/dist/fileLock.d.ts +36 -0
- package/dist/fileLock.js +121 -0
- package/dist/fileLock.js.map +1 -0
- package/dist/fp/activityAnalytics.d.ts +39 -0
- package/dist/fp/activityAnalytics.js +111 -0
- package/dist/fp/activityAnalytics.js.map +1 -0
- package/dist/fp/async.d.ts +48 -0
- package/dist/fp/async.js +60 -0
- package/dist/fp/async.js.map +1 -0
- package/dist/fp/automationInterpreter.d.ts +37 -0
- package/dist/fp/automationInterpreter.js +523 -0
- package/dist/fp/automationInterpreter.js.map +1 -0
- package/dist/fp/automationProgram.d.ts +89 -0
- package/dist/fp/automationProgram.js +29 -0
- package/dist/fp/automationProgram.js.map +1 -0
- package/dist/fp/automationState.d.ts +135 -0
- package/dist/fp/automationState.js +206 -0
- package/dist/fp/automationState.js.map +1 -0
- package/dist/fp/automationUtils.d.ts +31 -0
- package/dist/fp/automationUtils.js +61 -0
- package/dist/fp/automationUtils.js.map +1 -0
- package/dist/fp/brandedTypes.d.ts +32 -0
- package/dist/fp/brandedTypes.js +41 -0
- package/dist/fp/brandedTypes.js.map +1 -0
- package/dist/fp/commandDescription.d.ts +18 -0
- package/dist/fp/commandDescription.js +125 -0
- package/dist/fp/commandDescription.js.map +1 -0
- package/dist/fp/extensionSnapshot.d.ts +10 -0
- package/dist/fp/extensionSnapshot.js +14 -0
- package/dist/fp/extensionSnapshot.js.map +1 -0
- package/dist/fp/index.d.ts +8 -0
- package/dist/fp/index.js +9 -0
- package/dist/fp/index.js.map +1 -0
- package/dist/fp/interpreterContext.d.ts +69 -0
- package/dist/fp/interpreterContext.js +56 -0
- package/dist/fp/interpreterContext.js.map +1 -0
- package/dist/fp/policyParser.d.ts +16 -0
- package/dist/fp/policyParser.js +334 -0
- package/dist/fp/policyParser.js.map +1 -0
- package/dist/fp/result.d.ts +38 -0
- package/dist/fp/result.js +57 -0
- package/dist/fp/result.js.map +1 -0
- package/dist/fp/tokenBucket.d.ts +27 -0
- package/dist/fp/tokenBucket.js +36 -0
- package/dist/fp/tokenBucket.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1465 -0
- package/dist/index.js.map +1 -0
- package/dist/instructionsUtils.d.ts +17 -0
- package/dist/instructionsUtils.js +38 -0
- package/dist/instructionsUtils.js.map +1 -0
- package/dist/lockfile.d.ts +16 -0
- package/dist/lockfile.js +172 -0
- package/dist/lockfile.js.map +1 -0
- package/dist/logger.d.ts +16 -0
- package/dist/logger.js +68 -0
- package/dist/logger.js.map +1 -0
- package/dist/oauth.d.ts +105 -0
- package/dist/oauth.js +880 -0
- package/dist/oauth.js.map +1 -0
- package/dist/orchestrator/childBridgeClient.d.ts +33 -0
- package/dist/orchestrator/childBridgeClient.js +321 -0
- package/dist/orchestrator/childBridgeClient.js.map +1 -0
- package/dist/orchestrator/childBridgeRegistry.d.ts +67 -0
- package/dist/orchestrator/childBridgeRegistry.js +297 -0
- package/dist/orchestrator/childBridgeRegistry.js.map +1 -0
- package/dist/orchestrator/index.d.ts +3 -0
- package/dist/orchestrator/index.js +3 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/orchestratorBridge.d.ts +32 -0
- package/dist/orchestrator/orchestratorBridge.js +412 -0
- package/dist/orchestrator/orchestratorBridge.js.map +1 -0
- package/dist/orchestrator/orchestratorConfig.d.ts +11 -0
- package/dist/orchestrator/orchestratorConfig.js +85 -0
- package/dist/orchestrator/orchestratorConfig.js.map +1 -0
- package/dist/orchestrator/orchestratorTools.d.ts +16 -0
- package/dist/orchestrator/orchestratorTools.js +272 -0
- package/dist/orchestrator/orchestratorTools.js.map +1 -0
- package/dist/patchworkCli.d.ts +15 -0
- package/dist/patchworkCli.js +41 -0
- package/dist/patchworkCli.js.map +1 -0
- package/dist/patchworkConfig.d.ts +28 -0
- package/dist/patchworkConfig.js +30 -0
- package/dist/patchworkConfig.js.map +1 -0
- package/dist/plugin.d.ts +106 -0
- package/dist/plugin.js +31 -0
- package/dist/plugin.js.map +1 -0
- package/dist/pluginLoader.d.ts +44 -0
- package/dist/pluginLoader.js +357 -0
- package/dist/pluginLoader.js.map +1 -0
- package/dist/pluginWatcher.d.ts +24 -0
- package/dist/pluginWatcher.js +139 -0
- package/dist/pluginWatcher.js.map +1 -0
- package/dist/preToolUseHook.d.ts +10 -0
- package/dist/preToolUseHook.js +57 -0
- package/dist/preToolUseHook.js.map +1 -0
- package/dist/probe.d.ts +35 -0
- package/dist/probe.js +143 -0
- package/dist/probe.js.map +1 -0
- package/dist/prompts.d.ts +27 -0
- package/dist/prompts.js +1680 -0
- package/dist/prompts.js.map +1 -0
- package/dist/quickTaskPresets.d.ts +64 -0
- package/dist/quickTaskPresets.js +156 -0
- package/dist/quickTaskPresets.js.map +1 -0
- package/dist/recipes/compiler.d.ts +44 -0
- package/dist/recipes/compiler.js +140 -0
- package/dist/recipes/compiler.js.map +1 -0
- package/dist/recipes/installer.d.ts +25 -0
- package/dist/recipes/installer.js +62 -0
- package/dist/recipes/installer.js.map +1 -0
- package/dist/recipes/parser.d.ts +18 -0
- package/dist/recipes/parser.js +160 -0
- package/dist/recipes/parser.js.map +1 -0
- package/dist/recipes/scheduler.d.ts +45 -0
- package/dist/recipes/scheduler.js +110 -0
- package/dist/recipes/scheduler.js.map +1 -0
- package/dist/recipes/schema.d.ts +71 -0
- package/dist/recipes/schema.js +11 -0
- package/dist/recipes/schema.js.map +1 -0
- package/dist/recipesHttp.d.ts +63 -0
- package/dist/recipesHttp.js +183 -0
- package/dist/recipesHttp.js.map +1 -0
- package/dist/resources.d.ts +33 -0
- package/dist/resources.js +266 -0
- package/dist/resources.js.map +1 -0
- package/dist/riskTier.d.ts +40 -0
- package/dist/riskTier.js +142 -0
- package/dist/riskTier.js.map +1 -0
- package/dist/runLog.d.ts +90 -0
- package/dist/runLog.js +143 -0
- package/dist/runLog.js.map +1 -0
- package/dist/server.d.ts +160 -0
- package/dist/server.js +1244 -0
- package/dist/server.js.map +1 -0
- package/dist/sessionCheckpoint.d.ts +37 -0
- package/dist/sessionCheckpoint.js +123 -0
- package/dist/sessionCheckpoint.js.map +1 -0
- package/dist/streamableHttp.d.ts +86 -0
- package/dist/streamableHttp.js +702 -0
- package/dist/streamableHttp.js.map +1 -0
- package/dist/telemetry.d.ts +18 -0
- package/dist/telemetry.js +95 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tools/activityLog.d.ts +140 -0
- package/dist/tools/activityLog.js +204 -0
- package/dist/tools/activityLog.js.map +1 -0
- package/dist/tools/auditDependencies.d.ts +67 -0
- package/dist/tools/auditDependencies.js +298 -0
- package/dist/tools/auditDependencies.js.map +1 -0
- package/dist/tools/batchLsp.d.ts +262 -0
- package/dist/tools/batchLsp.js +328 -0
- package/dist/tools/batchLsp.js.map +1 -0
- package/dist/tools/blame-utils.d.ts +30 -0
- package/dist/tools/blame-utils.js +60 -0
- package/dist/tools/blame-utils.js.map +1 -0
- package/dist/tools/bridgeDoctor.d.ts +78 -0
- package/dist/tools/bridgeDoctor.js +542 -0
- package/dist/tools/bridgeDoctor.js.map +1 -0
- package/dist/tools/bridgeStatus.d.ts +122 -0
- package/dist/tools/bridgeStatus.js +250 -0
- package/dist/tools/bridgeStatus.js.map +1 -0
- package/dist/tools/cancelClaudeTask.d.ts +48 -0
- package/dist/tools/cancelClaudeTask.js +56 -0
- package/dist/tools/cancelClaudeTask.js.map +1 -0
- package/dist/tools/checkDocumentDirty.d.ts +56 -0
- package/dist/tools/checkDocumentDirty.js +74 -0
- package/dist/tools/checkDocumentDirty.js.map +1 -0
- package/dist/tools/clipboard.d.ts +80 -0
- package/dist/tools/clipboard.js +211 -0
- package/dist/tools/clipboard.js.map +1 -0
- package/dist/tools/closeTabs.d.ts +84 -0
- package/dist/tools/closeTabs.js +97 -0
- package/dist/tools/closeTabs.js.map +1 -0
- package/dist/tools/codeLens.d.ts +50 -0
- package/dist/tools/codeLens.js +47 -0
- package/dist/tools/codeLens.js.map +1 -0
- package/dist/tools/contextBundle.d.ts +75 -0
- package/dist/tools/contextBundle.js +218 -0
- package/dist/tools/contextBundle.js.map +1 -0
- package/dist/tools/createIssueFromAIComment.d.ts +75 -0
- package/dist/tools/createIssueFromAIComment.js +119 -0
- package/dist/tools/createIssueFromAIComment.js.map +1 -0
- package/dist/tools/ctxGetTaskContext.d.ts +103 -0
- package/dist/tools/ctxGetTaskContext.js +274 -0
- package/dist/tools/ctxGetTaskContext.js.map +1 -0
- package/dist/tools/ctxQueryTraces.d.ts +142 -0
- package/dist/tools/ctxQueryTraces.js +194 -0
- package/dist/tools/ctxQueryTraces.js.map +1 -0
- package/dist/tools/ctxSaveTrace.d.ts +87 -0
- package/dist/tools/ctxSaveTrace.js +94 -0
- package/dist/tools/ctxSaveTrace.js.map +1 -0
- package/dist/tools/debug.d.ts +206 -0
- package/dist/tools/debug.js +234 -0
- package/dist/tools/debug.js.map +1 -0
- package/dist/tools/decorations.d.ts +130 -0
- package/dist/tools/decorations.js +160 -0
- package/dist/tools/decorations.js.map +1 -0
- package/dist/tools/detectUnusedCode.d.ts +78 -0
- package/dist/tools/detectUnusedCode.js +173 -0
- package/dist/tools/detectUnusedCode.js.map +1 -0
- package/dist/tools/documentLinks.d.ts +62 -0
- package/dist/tools/documentLinks.js +55 -0
- package/dist/tools/documentLinks.js.map +1 -0
- package/dist/tools/editText.d.ts +108 -0
- package/dist/tools/editText.js +318 -0
- package/dist/tools/editText.js.map +1 -0
- package/dist/tools/enrichCommit.d.ts +89 -0
- package/dist/tools/enrichCommit.js +201 -0
- package/dist/tools/enrichCommit.js.map +1 -0
- package/dist/tools/enrichStackTrace.d.ts +121 -0
- package/dist/tools/enrichStackTrace.js +194 -0
- package/dist/tools/enrichStackTrace.js.map +1 -0
- package/dist/tools/explainDiagnostic.d.ts +137 -0
- package/dist/tools/explainDiagnostic.js +230 -0
- package/dist/tools/explainDiagnostic.js.map +1 -0
- package/dist/tools/explainSymbol.d.ts +119 -0
- package/dist/tools/explainSymbol.js +177 -0
- package/dist/tools/explainSymbol.js.map +1 -0
- package/dist/tools/fileOperations.d.ts +186 -0
- package/dist/tools/fileOperations.js +330 -0
- package/dist/tools/fileOperations.js.map +1 -0
- package/dist/tools/fileWatcher.d.ts +107 -0
- package/dist/tools/fileWatcher.js +121 -0
- package/dist/tools/fileWatcher.js.map +1 -0
- package/dist/tools/findFiles.d.ts +65 -0
- package/dist/tools/findFiles.js +142 -0
- package/dist/tools/findFiles.js.map +1 -0
- package/dist/tools/findRelatedTests.d.ts +83 -0
- package/dist/tools/findRelatedTests.js +196 -0
- package/dist/tools/findRelatedTests.js.map +1 -0
- package/dist/tools/fixAllLintErrors.d.ts +66 -0
- package/dist/tools/fixAllLintErrors.js +128 -0
- package/dist/tools/fixAllLintErrors.js.map +1 -0
- package/dist/tools/foldingRanges.d.ts +50 -0
- package/dist/tools/foldingRanges.js +51 -0
- package/dist/tools/foldingRanges.js.map +1 -0
- package/dist/tools/formatAndSave.d.ts +57 -0
- package/dist/tools/formatAndSave.js +87 -0
- package/dist/tools/formatAndSave.js.map +1 -0
- package/dist/tools/formatDocument.d.ts +61 -0
- package/dist/tools/formatDocument.js +144 -0
- package/dist/tools/formatDocument.js.map +1 -0
- package/dist/tools/generateAPIDocumentation.d.ts +62 -0
- package/dist/tools/generateAPIDocumentation.js +249 -0
- package/dist/tools/generateAPIDocumentation.js.map +1 -0
- package/dist/tools/generateTests.d.ts +75 -0
- package/dist/tools/generateTests.js +226 -0
- package/dist/tools/generateTests.js.map +1 -0
- package/dist/tools/getAIComments.d.ts +79 -0
- package/dist/tools/getAIComments.js +93 -0
- package/dist/tools/getAIComments.js.map +1 -0
- package/dist/tools/getAnalyticsReport.d.ts +102 -0
- package/dist/tools/getAnalyticsReport.js +137 -0
- package/dist/tools/getAnalyticsReport.js.map +1 -0
- package/dist/tools/getArchitectureContext.d.ts +85 -0
- package/dist/tools/getArchitectureContext.js +135 -0
- package/dist/tools/getArchitectureContext.js.map +1 -0
- package/dist/tools/getBufferContent.d.ts +80 -0
- package/dist/tools/getBufferContent.js +207 -0
- package/dist/tools/getBufferContent.js.map +1 -0
- package/dist/tools/getChangeImpact.d.ts +76 -0
- package/dist/tools/getChangeImpact.js +184 -0
- package/dist/tools/getChangeImpact.js.map +1 -0
- package/dist/tools/getClaudeTaskStatus.d.ts +87 -0
- package/dist/tools/getClaudeTaskStatus.js +89 -0
- package/dist/tools/getClaudeTaskStatus.js.map +1 -0
- package/dist/tools/getCodeCoverage.d.ts +86 -0
- package/dist/tools/getCodeCoverage.js +237 -0
- package/dist/tools/getCodeCoverage.js.map +1 -0
- package/dist/tools/getCommitsForIssue.d.ts +98 -0
- package/dist/tools/getCommitsForIssue.js +106 -0
- package/dist/tools/getCommitsForIssue.js.map +1 -0
- package/dist/tools/getCurrentSelection.d.ts +123 -0
- package/dist/tools/getCurrentSelection.js +113 -0
- package/dist/tools/getCurrentSelection.js.map +1 -0
- package/dist/tools/getDebugState.d.ts +140 -0
- package/dist/tools/getDebugState.js +109 -0
- package/dist/tools/getDebugState.js.map +1 -0
- package/dist/tools/getDependencyTree.d.ts +59 -0
- package/dist/tools/getDependencyTree.js +207 -0
- package/dist/tools/getDependencyTree.js.map +1 -0
- package/dist/tools/getDiagnostics.d.ts +108 -0
- package/dist/tools/getDiagnostics.js +371 -0
- package/dist/tools/getDiagnostics.js.map +1 -0
- package/dist/tools/getDiffFromHandoff.d.ts +89 -0
- package/dist/tools/getDiffFromHandoff.js +163 -0
- package/dist/tools/getDiffFromHandoff.js.map +1 -0
- package/dist/tools/getDocumentSymbols.d.ts +74 -0
- package/dist/tools/getDocumentSymbols.js +177 -0
- package/dist/tools/getDocumentSymbols.js.map +1 -0
- package/dist/tools/getFileTree.d.ts +66 -0
- package/dist/tools/getFileTree.js +131 -0
- package/dist/tools/getFileTree.js.map +1 -0
- package/dist/tools/getGitDiff.d.ts +50 -0
- package/dist/tools/getGitDiff.js +73 -0
- package/dist/tools/getGitDiff.js.map +1 -0
- package/dist/tools/getGitHotspots.d.ts +88 -0
- package/dist/tools/getGitHotspots.js +145 -0
- package/dist/tools/getGitHotspots.js.map +1 -0
- package/dist/tools/getGitLog.d.ts +62 -0
- package/dist/tools/getGitLog.js +87 -0
- package/dist/tools/getGitLog.js.map +1 -0
- package/dist/tools/getGitStatus.d.ts +72 -0
- package/dist/tools/getGitStatus.js +126 -0
- package/dist/tools/getGitStatus.js.map +1 -0
- package/dist/tools/getImportTree.d.ts +73 -0
- package/dist/tools/getImportTree.js +223 -0
- package/dist/tools/getImportTree.js.map +1 -0
- package/dist/tools/getImportedSignatures.d.ts +62 -0
- package/dist/tools/getImportedSignatures.js +255 -0
- package/dist/tools/getImportedSignatures.js.map +1 -0
- package/dist/tools/getOpenEditors.d.ts +62 -0
- package/dist/tools/getOpenEditors.js +126 -0
- package/dist/tools/getOpenEditors.js.map +1 -0
- package/dist/tools/getPRTemplate.d.ts +68 -0
- package/dist/tools/getPRTemplate.js +187 -0
- package/dist/tools/getPRTemplate.js.map +1 -0
- package/dist/tools/getProjectContext.d.ts +114 -0
- package/dist/tools/getProjectContext.js +344 -0
- package/dist/tools/getProjectContext.js.map +1 -0
- package/dist/tools/getProjectInfo.d.ts +51 -0
- package/dist/tools/getProjectInfo.js +325 -0
- package/dist/tools/getProjectInfo.js.map +1 -0
- package/dist/tools/getSecurityAdvisories.d.ts +105 -0
- package/dist/tools/getSecurityAdvisories.js +472 -0
- package/dist/tools/getSecurityAdvisories.js.map +1 -0
- package/dist/tools/getSessionUsage.d.ts +58 -0
- package/dist/tools/getSessionUsage.js +57 -0
- package/dist/tools/getSessionUsage.js.map +1 -0
- package/dist/tools/getSymbolHistory.d.ts +157 -0
- package/dist/tools/getSymbolHistory.js +256 -0
- package/dist/tools/getSymbolHistory.js.map +1 -0
- package/dist/tools/getToolCapabilities.d.ts +69 -0
- package/dist/tools/getToolCapabilities.js +298 -0
- package/dist/tools/getToolCapabilities.js.map +1 -0
- package/dist/tools/getTypeSignature.d.ts +70 -0
- package/dist/tools/getTypeSignature.js +132 -0
- package/dist/tools/getTypeSignature.js.map +1 -0
- package/dist/tools/getWorkspaceFolders.d.ts +58 -0
- package/dist/tools/getWorkspaceFolders.js +69 -0
- package/dist/tools/getWorkspaceFolders.js.map +1 -0
- package/dist/tools/getWorkspaceSettings.d.ts +44 -0
- package/dist/tools/getWorkspaceSettings.js +70 -0
- package/dist/tools/getWorkspaceSettings.js.map +1 -0
- package/dist/tools/git-utils.d.ts +16 -0
- package/dist/tools/git-utils.js +46 -0
- package/dist/tools/git-utils.js.map +1 -0
- package/dist/tools/gitHistory.d.ts +110 -0
- package/dist/tools/gitHistory.js +167 -0
- package/dist/tools/gitHistory.js.map +1 -0
- package/dist/tools/gitWrite.d.ts +612 -0
- package/dist/tools/gitWrite.js +983 -0
- package/dist/tools/gitWrite.js.map +1 -0
- package/dist/tools/github/actions.d.ts +152 -0
- package/dist/tools/github/actions.js +195 -0
- package/dist/tools/github/actions.js.map +1 -0
- package/dist/tools/github/index.d.ts +3 -0
- package/dist/tools/github/index.js +4 -0
- package/dist/tools/github/index.js.map +1 -0
- package/dist/tools/github/issues.d.ts +281 -0
- package/dist/tools/github/issues.js +340 -0
- package/dist/tools/github/issues.js.map +1 -0
- package/dist/tools/github/pr.d.ts +433 -0
- package/dist/tools/github/pr.js +588 -0
- package/dist/tools/github/pr.js.map +1 -0
- package/dist/tools/github/shared.d.ts +4 -0
- package/dist/tools/github/shared.js +12 -0
- package/dist/tools/github/shared.js.map +1 -0
- package/dist/tools/handoffNote.d.ts +106 -0
- package/dist/tools/handoffNote.js +232 -0
- package/dist/tools/handoffNote.js.map +1 -0
- package/dist/tools/headless/lspClient.d.ts +26 -0
- package/dist/tools/headless/lspClient.js +221 -0
- package/dist/tools/headless/lspClient.js.map +1 -0
- package/dist/tools/headless/lspFallback.d.ts +28 -0
- package/dist/tools/headless/lspFallback.js +122 -0
- package/dist/tools/headless/lspFallback.js.map +1 -0
- package/dist/tools/hoverAtCursor.d.ts +54 -0
- package/dist/tools/hoverAtCursor.js +68 -0
- package/dist/tools/hoverAtCursor.js.map +1 -0
- package/dist/tools/httpClient.d.ts +141 -0
- package/dist/tools/httpClient.js +486 -0
- package/dist/tools/httpClient.js.map +1 -0
- package/dist/tools/index.d.ts +49 -0
- package/dist/tools/index.js +672 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/inlayHints.d.ts +81 -0
- package/dist/tools/inlayHints.js +76 -0
- package/dist/tools/inlayHints.js.map +1 -0
- package/dist/tools/issueRefs.d.ts +14 -0
- package/dist/tools/issueRefs.js +27 -0
- package/dist/tools/issueRefs.js.map +1 -0
- package/dist/tools/jumpToFirstError.d.ts +63 -0
- package/dist/tools/jumpToFirstError.js +124 -0
- package/dist/tools/jumpToFirstError.js.map +1 -0
- package/dist/tools/launchQuickTask.d.ts +76 -0
- package/dist/tools/launchQuickTask.js +170 -0
- package/dist/tools/launchQuickTask.js.map +1 -0
- package/dist/tools/linters/biome.d.ts +2 -0
- package/dist/tools/linters/biome.js +44 -0
- package/dist/tools/linters/biome.js.map +1 -0
- package/dist/tools/linters/cargo.d.ts +2 -0
- package/dist/tools/linters/cargo.js +45 -0
- package/dist/tools/linters/cargo.js.map +1 -0
- package/dist/tools/linters/eslint.d.ts +2 -0
- package/dist/tools/linters/eslint.js +59 -0
- package/dist/tools/linters/eslint.js.map +1 -0
- package/dist/tools/linters/govet.d.ts +2 -0
- package/dist/tools/linters/govet.js +37 -0
- package/dist/tools/linters/govet.js.map +1 -0
- package/dist/tools/linters/pyright.d.ts +2 -0
- package/dist/tools/linters/pyright.js +34 -0
- package/dist/tools/linters/pyright.js.map +1 -0
- package/dist/tools/linters/ruff.d.ts +2 -0
- package/dist/tools/linters/ruff.js +30 -0
- package/dist/tools/linters/ruff.js.map +1 -0
- package/dist/tools/linters/types.d.ts +16 -0
- package/dist/tools/linters/types.js +2 -0
- package/dist/tools/linters/types.js.map +1 -0
- package/dist/tools/linters/typescript.d.ts +2 -0
- package/dist/tools/linters/typescript.js +38 -0
- package/dist/tools/linters/typescript.js.map +1 -0
- package/dist/tools/listClaudeTasks.d.ts +84 -0
- package/dist/tools/listClaudeTasks.js +88 -0
- package/dist/tools/listClaudeTasks.js.map +1 -0
- package/dist/tools/listTerminals.d.ts +55 -0
- package/dist/tools/listTerminals.js +78 -0
- package/dist/tools/listTerminals.js.map +1 -0
- package/dist/tools/lsp.d.ts +1086 -0
- package/dist/tools/lsp.js +1339 -0
- package/dist/tools/lsp.js.map +1 -0
- package/dist/tools/navigateToSymbolByName.d.ts +56 -0
- package/dist/tools/navigateToSymbolByName.js +170 -0
- package/dist/tools/navigateToSymbolByName.js.map +1 -0
- package/dist/tools/openDiff.d.ts +66 -0
- package/dist/tools/openDiff.js +126 -0
- package/dist/tools/openDiff.js.map +1 -0
- package/dist/tools/openFile.d.ts +69 -0
- package/dist/tools/openFile.js +129 -0
- package/dist/tools/openFile.js.map +1 -0
- package/dist/tools/openInBrowser.d.ts +55 -0
- package/dist/tools/openInBrowser.js +129 -0
- package/dist/tools/openInBrowser.js.map +1 -0
- package/dist/tools/organizeImports.d.ts +56 -0
- package/dist/tools/organizeImports.js +115 -0
- package/dist/tools/organizeImports.js.map +1 -0
- package/dist/tools/performanceReport.d.ts +133 -0
- package/dist/tools/performanceReport.js +218 -0
- package/dist/tools/performanceReport.js.map +1 -0
- package/dist/tools/planPersistence.d.ts +306 -0
- package/dist/tools/planPersistence.js +485 -0
- package/dist/tools/planPersistence.js.map +1 -0
- package/dist/tools/previewEdit.d.ts +107 -0
- package/dist/tools/previewEdit.js +270 -0
- package/dist/tools/previewEdit.js.map +1 -0
- package/dist/tools/recentTracesDigest.d.ts +35 -0
- package/dist/tools/recentTracesDigest.js +98 -0
- package/dist/tools/recentTracesDigest.js.map +1 -0
- package/dist/tools/refactorAnalyze.d.ts +78 -0
- package/dist/tools/refactorAnalyze.js +141 -0
- package/dist/tools/refactorAnalyze.js.map +1 -0
- package/dist/tools/refactorExtractFunction.d.ts +52 -0
- package/dist/tools/refactorExtractFunction.js +121 -0
- package/dist/tools/refactorExtractFunction.js.map +1 -0
- package/dist/tools/refactorPreview.d.ts +75 -0
- package/dist/tools/refactorPreview.js +93 -0
- package/dist/tools/refactorPreview.js.map +1 -0
- package/dist/tools/replaceBlock.d.ts +62 -0
- package/dist/tools/replaceBlock.js +125 -0
- package/dist/tools/replaceBlock.js.map +1 -0
- package/dist/tools/resumeClaudeTask.d.ts +75 -0
- package/dist/tools/resumeClaudeTask.js +149 -0
- package/dist/tools/resumeClaudeTask.js.map +1 -0
- package/dist/tools/runClaudeTask.d.ts +97 -0
- package/dist/tools/runClaudeTask.js +224 -0
- package/dist/tools/runClaudeTask.js.map +1 -0
- package/dist/tools/runCommand.d.ts +82 -0
- package/dist/tools/runCommand.js +101 -0
- package/dist/tools/runCommand.js.map +1 -0
- package/dist/tools/runTests.d.ts +146 -0
- package/dist/tools/runTests.js +315 -0
- package/dist/tools/runTests.js.map +1 -0
- package/dist/tools/saveDocument.d.ts +50 -0
- package/dist/tools/saveDocument.js +73 -0
- package/dist/tools/saveDocument.js.map +1 -0
- package/dist/tools/screenshot.d.ts +23 -0
- package/dist/tools/screenshot.js +43 -0
- package/dist/tools/screenshot.js.map +1 -0
- package/dist/tools/screenshotAndAnnotate.d.ts +103 -0
- package/dist/tools/screenshotAndAnnotate.js +192 -0
- package/dist/tools/screenshotAndAnnotate.js.map +1 -0
- package/dist/tools/searchAndReplace.d.ts +108 -0
- package/dist/tools/searchAndReplace.js +281 -0
- package/dist/tools/searchAndReplace.js.map +1 -0
- package/dist/tools/searchTools.d.ts +61 -0
- package/dist/tools/searchTools.js +85 -0
- package/dist/tools/searchTools.js.map +1 -0
- package/dist/tools/searchWorkspace.d.ts +99 -0
- package/dist/tools/searchWorkspace.js +189 -0
- package/dist/tools/searchWorkspace.js.map +1 -0
- package/dist/tools/selectionRanges.d.ts +58 -0
- package/dist/tools/selectionRanges.js +61 -0
- package/dist/tools/selectionRanges.js.map +1 -0
- package/dist/tools/semanticTokens.d.ts +87 -0
- package/dist/tools/semanticTokens.js +86 -0
- package/dist/tools/semanticTokens.js.map +1 -0
- package/dist/tools/setActiveWorkspaceFolder.d.ts +41 -0
- package/dist/tools/setActiveWorkspaceFolder.js +38 -0
- package/dist/tools/setActiveWorkspaceFolder.js.map +1 -0
- package/dist/tools/signatureHelp.d.ts +86 -0
- package/dist/tools/signatureHelp.js +79 -0
- package/dist/tools/signatureHelp.js.map +1 -0
- package/dist/tools/spawnWorkspace.d.ts +103 -0
- package/dist/tools/spawnWorkspace.js +268 -0
- package/dist/tools/spawnWorkspace.js.map +1 -0
- package/dist/tools/stackTraceParser.d.ts +43 -0
- package/dist/tools/stackTraceParser.js +139 -0
- package/dist/tools/stackTraceParser.js.map +1 -0
- package/dist/tools/terminal.d.ts +352 -0
- package/dist/tools/terminal.js +670 -0
- package/dist/tools/terminal.js.map +1 -0
- package/dist/tools/testRunners/cargoTest.d.ts +2 -0
- package/dist/tools/testRunners/cargoTest.js +129 -0
- package/dist/tools/testRunners/cargoTest.js.map +1 -0
- package/dist/tools/testRunners/goTest.d.ts +2 -0
- package/dist/tools/testRunners/goTest.js +108 -0
- package/dist/tools/testRunners/goTest.js.map +1 -0
- package/dist/tools/testRunners/pytest.d.ts +2 -0
- package/dist/tools/testRunners/pytest.js +135 -0
- package/dist/tools/testRunners/pytest.js.map +1 -0
- package/dist/tools/testRunners/types.d.ts +18 -0
- package/dist/tools/testRunners/types.js +2 -0
- package/dist/tools/testRunners/types.js.map +1 -0
- package/dist/tools/testRunners/vitestJest.d.ts +3 -0
- package/dist/tools/testRunners/vitestJest.js +215 -0
- package/dist/tools/testRunners/vitestJest.js.map +1 -0
- package/dist/tools/testTraceToSource.d.ts +80 -0
- package/dist/tools/testTraceToSource.js +206 -0
- package/dist/tools/testTraceToSource.js.map +1 -0
- package/dist/tools/transaction.d.ts +243 -0
- package/dist/tools/transaction.js +309 -0
- package/dist/tools/transaction.js.map +1 -0
- package/dist/tools/typeHierarchy.d.ts +77 -0
- package/dist/tools/typeHierarchy.js +86 -0
- package/dist/tools/typeHierarchy.js.map +1 -0
- package/dist/tools/utils.d.ts +124 -0
- package/dist/tools/utils.js +566 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools/vscodeCommands.d.ts +90 -0
- package/dist/tools/vscodeCommands.js +112 -0
- package/dist/tools/vscodeCommands.js.map +1 -0
- package/dist/tools/vscodeTasks.d.ts +102 -0
- package/dist/tools/vscodeTasks.js +110 -0
- package/dist/tools/vscodeTasks.js.map +1 -0
- package/dist/tools/watchDiagnostics.d.ts +64 -0
- package/dist/tools/watchDiagnostics.js +270 -0
- package/dist/tools/watchDiagnostics.js.map +1 -0
- package/dist/tools/workspaceSettings.d.ts +57 -0
- package/dist/tools/workspaceSettings.js +80 -0
- package/dist/tools/workspaceSettings.js.map +1 -0
- package/dist/transport.d.ts +207 -0
- package/dist/transport.js +1272 -0
- package/dist/transport.js.map +1 -0
- package/dist/version.d.ts +13 -0
- package/dist/version.js +31 -0
- package/dist/version.js.map +1 -0
- package/dist/wsUtils.d.ts +8 -0
- package/dist/wsUtils.js +54 -0
- package/dist/wsUtils.js.map +1 -0
- package/package.json +118 -0
- package/scripts/gen-claude-desktop-config.sh +124 -0
- package/scripts/gen-mcp-config.sh +390 -0
- package/scripts/install-extension.sh +106 -0
- package/scripts/mcp-stdio-shim.cjs +482 -0
- package/scripts/postinstall.mjs +68 -0
- package/scripts/start-all.sh +502 -0
- package/scripts/start-orchestrator.sh +186 -0
- package/scripts/start-remote.sh +126 -0
- package/scripts/start-vps.sh +116 -0
- package/templates/CLAUDE.bridge.md +125 -0
- package/templates/automation-policies/security-first.json +46 -0
- package/templates/automation-policies/strict-lint.json +41 -0
- package/templates/automation-policies/test-driven.json +54 -0
- package/templates/automation-policy.example.json +105 -0
- package/templates/bridge-tools.md +111 -0
- package/templates/dispatch-context.md +33 -0
- package/templates/managed-agent/code-review-agent.md +50 -0
- package/templates/managed-agent/managed-agent-mcp.json +102 -0
- package/templates/recipes/ambient-journal.yaml +11 -0
- package/templates/recipes/daily-status.yaml +21 -0
- package/templates/recipes/lint-on-save.yaml +13 -0
- package/templates/recipes/stale-branches.yaml +18 -0
- package/templates/recipes/watch-failing-tests.yaml +15 -0
- package/templates/scheduled-tasks/dependency-audit/SKILL.md +77 -0
- package/templates/scheduled-tasks/health-check/SKILL.md +73 -0
- package/templates/scheduled-tasks/nightly-review/SKILL.md +69 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# deploy/install-vps-service.sh
|
|
3
|
+
# Idempotent updater — re-installs the systemd service and nginx config
|
|
4
|
+
# on an already-bootstrapped server after a git pull.
|
|
5
|
+
#
|
|
6
|
+
# For FIRST-TIME setup on a new VPS, use bootstrap-new-vps.sh instead.
|
|
7
|
+
#
|
|
8
|
+
# Usage (run as root from repo root):
|
|
9
|
+
# bash deploy/install-vps-service.sh
|
|
10
|
+
#
|
|
11
|
+
# Optional environment overrides:
|
|
12
|
+
# DOMAIN Override domain (default: read from existing nginx config or prompt)
|
|
13
|
+
# PORT Override port (default: read from .env.vps)
|
|
14
|
+
# SERVICE_USER Override user (default: auto-detect from existing service)
|
|
15
|
+
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
|
|
18
|
+
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
19
|
+
SERVICE_NAME="claude-ide-bridge"
|
|
20
|
+
ENV_FILE="$REPO_ROOT/.env.vps"
|
|
21
|
+
|
|
22
|
+
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
|
|
23
|
+
info() { echo -e "${GREEN}✓${NC} $*"; }
|
|
24
|
+
warn() { echo -e "${YELLOW}⚠${NC} $*"; }
|
|
25
|
+
err() { echo -e "${RED}✗${NC} $*" >&2; }
|
|
26
|
+
|
|
27
|
+
echo "=== Claude IDE Bridge — Service Updater ==="
|
|
28
|
+
echo ""
|
|
29
|
+
|
|
30
|
+
# ── Pre-flight ────────────────────────────────────────────────────────────────
|
|
31
|
+
[[ "$(id -u)" -eq 0 ]] || { err "Run as root: sudo bash deploy/install-vps-service.sh"; exit 1; }
|
|
32
|
+
[[ -f "$ENV_FILE" ]] || { err "$ENV_FILE not found. Run bootstrap-new-vps.sh first."; exit 1; }
|
|
33
|
+
|
|
34
|
+
source "$ENV_FILE"
|
|
35
|
+
[[ -n "${FIXED_TOKEN:-}" ]] || { err "FIXED_TOKEN not set in $ENV_FILE"; exit 1; }
|
|
36
|
+
[[ -n "${PORT:-}" ]] || { err "PORT not set in $ENV_FILE"; exit 1; }
|
|
37
|
+
[[ -n "${WORKSPACE:-}" ]] || { err "WORKSPACE not set in $ENV_FILE"; exit 1; }
|
|
38
|
+
|
|
39
|
+
DIST="$REPO_ROOT/dist/index.js"
|
|
40
|
+
[[ -f "$DIST" ]] || { err "$DIST not found. Run: npm run build"; exit 1; }
|
|
41
|
+
|
|
42
|
+
command -v nginx >/dev/null 2>&1 || { err "nginx not found. Run bootstrap-new-vps.sh first."; exit 1; }
|
|
43
|
+
command -v systemctl >/dev/null 2>&1 || { err "systemd not available."; exit 1; }
|
|
44
|
+
|
|
45
|
+
# Detect service user from existing unit file, fall back to env or default
|
|
46
|
+
EXISTING_USER=$(grep -Po '(?<=^User=).+' /etc/systemd/system/${SERVICE_NAME}.service 2>/dev/null || echo "")
|
|
47
|
+
SERVICE_USER="${SERVICE_USER:-${EXISTING_USER:-claude-bridge}}"
|
|
48
|
+
|
|
49
|
+
# Detect domain from existing nginx config
|
|
50
|
+
EXISTING_DOMAIN=$(grep -Po '(?<=server_name )[\w.-]+' /etc/nginx/sites-available/claude-bridge 2>/dev/null | head -1 || echo "")
|
|
51
|
+
DOMAIN="${DOMAIN:-$EXISTING_DOMAIN}"
|
|
52
|
+
|
|
53
|
+
if [[ -z "$DOMAIN" ]]; then
|
|
54
|
+
err "Cannot determine DOMAIN. Set it: DOMAIN=bridge.example.com bash deploy/install-vps-service.sh"
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
info "Repo: $REPO_ROOT"
|
|
59
|
+
info "Domain: $DOMAIN"
|
|
60
|
+
info "Port: $PORT"
|
|
61
|
+
info "Service user: $SERVICE_USER"
|
|
62
|
+
echo ""
|
|
63
|
+
|
|
64
|
+
# ── Systemd service ───────────────────────────────────────────────────────────
|
|
65
|
+
echo "Updating systemd service..."
|
|
66
|
+
|
|
67
|
+
cat > "/etc/systemd/system/${SERVICE_NAME}.service" <<SERVICE
|
|
68
|
+
[Unit]
|
|
69
|
+
Description=Claude IDE Bridge MCP Server
|
|
70
|
+
Documentation=https://github.com/Oolab-labs/claude-ide-bridge
|
|
71
|
+
After=network.target
|
|
72
|
+
StartLimitIntervalSec=120
|
|
73
|
+
StartLimitBurst=5
|
|
74
|
+
|
|
75
|
+
[Service]
|
|
76
|
+
Type=simple
|
|
77
|
+
User=$SERVICE_USER
|
|
78
|
+
WorkingDirectory=$REPO_ROOT
|
|
79
|
+
|
|
80
|
+
# Load config — FIXED_TOKEN, PORT, WORKSPACE
|
|
81
|
+
EnvironmentFile=$ENV_FILE
|
|
82
|
+
|
|
83
|
+
# Bridge process
|
|
84
|
+
ExecStart=/usr/bin/node $REPO_ROOT/dist/index.js \\
|
|
85
|
+
--port \${PORT} \\
|
|
86
|
+
--workspace \${WORKSPACE} \\
|
|
87
|
+
--fixed-token \${FIXED_TOKEN} \\
|
|
88
|
+
--grace-period 120000 \\
|
|
89
|
+
--vps
|
|
90
|
+
|
|
91
|
+
KillMode=mixed
|
|
92
|
+
KillSignal=SIGTERM
|
|
93
|
+
TimeoutStopSec=15
|
|
94
|
+
Restart=always
|
|
95
|
+
RestartSec=5
|
|
96
|
+
|
|
97
|
+
StandardOutput=journal
|
|
98
|
+
StandardError=journal
|
|
99
|
+
SyslogIdentifier=claude-ide-bridge
|
|
100
|
+
|
|
101
|
+
NoNewPrivileges=true
|
|
102
|
+
PrivateTmp=true
|
|
103
|
+
|
|
104
|
+
[Install]
|
|
105
|
+
WantedBy=multi-user.target
|
|
106
|
+
SERVICE
|
|
107
|
+
|
|
108
|
+
systemctl daemon-reload
|
|
109
|
+
systemctl enable "$SERVICE_NAME"
|
|
110
|
+
info "Systemd service updated"
|
|
111
|
+
|
|
112
|
+
# ── nginx ─────────────────────────────────────────────────────────────────────
|
|
113
|
+
echo "Updating nginx config..."
|
|
114
|
+
|
|
115
|
+
# Add connection_upgrade map if missing
|
|
116
|
+
if ! grep -q "connection_upgrade" /etc/nginx/nginx.conf 2>/dev/null; then
|
|
117
|
+
perl -i -0pe 's/(http \{)/$1\n map \$http_upgrade \$connection_upgrade {\n default upgrade;\n '"''"' close;\n }/' /etc/nginx/nginx.conf
|
|
118
|
+
info "Added connection_upgrade map to nginx.conf"
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
# Write site config with domain and port injected
|
|
122
|
+
cat > "/etc/nginx/sites-available/claude-bridge" <<NGINX
|
|
123
|
+
# Claude IDE Bridge — nginx reverse proxy
|
|
124
|
+
# Domain: $DOMAIN Port: ${PORT}
|
|
125
|
+
# Updated by install-vps-service.sh on $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
126
|
+
|
|
127
|
+
server {
|
|
128
|
+
listen 80;
|
|
129
|
+
listen [::]:80;
|
|
130
|
+
server_name $DOMAIN;
|
|
131
|
+
|
|
132
|
+
location /.well-known/acme-challenge/ {
|
|
133
|
+
root /var/www/html;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
location / {
|
|
137
|
+
return 301 https://\$host\$request_uri;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
server {
|
|
142
|
+
listen 443 ssl http2;
|
|
143
|
+
listen [::]:443 ssl http2;
|
|
144
|
+
server_name $DOMAIN;
|
|
145
|
+
|
|
146
|
+
# TLS — managed by Certbot
|
|
147
|
+
# ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
|
|
148
|
+
# ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
|
|
149
|
+
# include /etc/letsencrypt/options-ssl-nginx.conf;
|
|
150
|
+
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
|
151
|
+
|
|
152
|
+
add_header X-Content-Type-Options nosniff always;
|
|
153
|
+
add_header X-Frame-Options DENY always;
|
|
154
|
+
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
155
|
+
|
|
156
|
+
location /mcp {
|
|
157
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
158
|
+
proxy_http_version 1.1;
|
|
159
|
+
proxy_buffering off;
|
|
160
|
+
proxy_cache off;
|
|
161
|
+
proxy_read_timeout 86400s;
|
|
162
|
+
proxy_send_timeout 86400s;
|
|
163
|
+
proxy_connect_timeout 10s;
|
|
164
|
+
proxy_set_header Authorization \$http_authorization;
|
|
165
|
+
proxy_pass_header Authorization;
|
|
166
|
+
proxy_set_header Mcp-Session-Id \$http_mcp_session_id;
|
|
167
|
+
proxy_pass_header Mcp-Session-Id;
|
|
168
|
+
proxy_set_header Host \$host;
|
|
169
|
+
proxy_set_header X-Real-IP \$remote_addr;
|
|
170
|
+
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
171
|
+
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
172
|
+
proxy_set_header Upgrade \$http_upgrade;
|
|
173
|
+
proxy_set_header Connection \$connection_upgrade;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
location /health {
|
|
177
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
178
|
+
proxy_http_version 1.1;
|
|
179
|
+
proxy_connect_timeout 5s;
|
|
180
|
+
proxy_read_timeout 10s;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
location /.well-known/ {
|
|
184
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
185
|
+
proxy_http_version 1.1;
|
|
186
|
+
proxy_connect_timeout 5s;
|
|
187
|
+
proxy_read_timeout 10s;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
location / {
|
|
191
|
+
return 404;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
NGINX
|
|
195
|
+
|
|
196
|
+
[[ -L "/etc/nginx/sites-enabled/claude-bridge" ]] || \
|
|
197
|
+
ln -s /etc/nginx/sites-available/claude-bridge /etc/nginx/sites-enabled/claude-bridge
|
|
198
|
+
|
|
199
|
+
[[ -L "/etc/nginx/sites-enabled/default" ]] && \
|
|
200
|
+
rm -f /etc/nginx/sites-enabled/default
|
|
201
|
+
|
|
202
|
+
nginx -t
|
|
203
|
+
systemctl reload nginx
|
|
204
|
+
info "nginx config updated"
|
|
205
|
+
|
|
206
|
+
# ── Stop tmux session if still running (superseded by systemd) ────────────────
|
|
207
|
+
if command -v tmux >/dev/null 2>&1 && tmux has-session -t "bridge" 2>/dev/null; then
|
|
208
|
+
tmux kill-session -t "bridge" 2>/dev/null || true
|
|
209
|
+
info "Stopped legacy tmux bridge session"
|
|
210
|
+
fi
|
|
211
|
+
|
|
212
|
+
# ── Restart service ───────────────────────────────────────────────────────────
|
|
213
|
+
echo "Restarting service..."
|
|
214
|
+
systemctl restart "$SERVICE_NAME"
|
|
215
|
+
|
|
216
|
+
echo -n "Waiting for bridge..."
|
|
217
|
+
for i in $(seq 1 20); do
|
|
218
|
+
if curl -sf --max-time 3 "http://127.0.0.1:${PORT}/health" >/dev/null 2>&1; then
|
|
219
|
+
echo " ready."
|
|
220
|
+
break
|
|
221
|
+
fi
|
|
222
|
+
sleep 1; echo -n "."
|
|
223
|
+
if [[ $i -eq 20 ]]; then
|
|
224
|
+
echo " timed out."
|
|
225
|
+
warn "Check: journalctl -u $SERVICE_NAME -n 50"
|
|
226
|
+
fi
|
|
227
|
+
done
|
|
228
|
+
|
|
229
|
+
# ── Summary ───────────────────────────────────────────────────────────────────
|
|
230
|
+
echo ""
|
|
231
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
232
|
+
echo " Claude IDE Bridge — service updated"
|
|
233
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
234
|
+
echo ""
|
|
235
|
+
echo " MCP endpoint: https://$DOMAIN/mcp"
|
|
236
|
+
echo " Local: http://127.0.0.1:${PORT}/mcp"
|
|
237
|
+
echo " Token: ${FIXED_TOKEN}"
|
|
238
|
+
echo ""
|
|
239
|
+
echo " journalctl -u $SERVICE_NAME -f"
|
|
240
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# deploy/nginx-claude-bridge.conf.template
|
|
2
|
+
# Reference template — domain and port are injected by the install scripts.
|
|
3
|
+
# Do NOT use this file directly. Use bootstrap-new-vps.sh or install-vps-service.sh
|
|
4
|
+
# which write the final nginx config to /etc/nginx/sites-available/claude-bridge
|
|
5
|
+
# with $DOMAIN and $PORT substituted.
|
|
6
|
+
#
|
|
7
|
+
# To manually generate from this template:
|
|
8
|
+
# DOMAIN=bridge.example.com PORT=9000 \
|
|
9
|
+
# envsubst '$DOMAIN $PORT' < deploy/nginx-claude-bridge.conf.template \
|
|
10
|
+
# > /etc/nginx/sites-available/claude-bridge
|
|
11
|
+
|
|
12
|
+
server {
|
|
13
|
+
listen 80;
|
|
14
|
+
listen [::]:80;
|
|
15
|
+
server_name ${DOMAIN};
|
|
16
|
+
|
|
17
|
+
# Let Certbot complete ACME HTTP-01 challenges
|
|
18
|
+
location /.well-known/acme-challenge/ {
|
|
19
|
+
root /var/www/html;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
# Redirect all other HTTP to HTTPS
|
|
23
|
+
location / {
|
|
24
|
+
return 301 https://$host$request_uri;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
server {
|
|
29
|
+
listen 443 ssl http2;
|
|
30
|
+
listen [::]:443 ssl http2;
|
|
31
|
+
server_name ${DOMAIN};
|
|
32
|
+
|
|
33
|
+
# TLS — Certbot populates these after: certbot --nginx -d ${DOMAIN}
|
|
34
|
+
# ssl_certificate /etc/letsencrypt/live/${DOMAIN}/fullchain.pem;
|
|
35
|
+
# ssl_certificate_key /etc/letsencrypt/live/${DOMAIN}/privkey.pem;
|
|
36
|
+
# include /etc/letsencrypt/options-ssl-nginx.conf;
|
|
37
|
+
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
|
38
|
+
|
|
39
|
+
# Security headers
|
|
40
|
+
add_header X-Content-Type-Options nosniff always;
|
|
41
|
+
add_header X-Frame-Options DENY always;
|
|
42
|
+
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
43
|
+
add_header Content-Security-Policy "default-src 'none'" always;
|
|
44
|
+
|
|
45
|
+
# /mcp — Streamable HTTP MCP endpoint (SSE-safe, never buffer)
|
|
46
|
+
location /mcp {
|
|
47
|
+
# Rate limit: 30 req/min per IP, burst of 10 (requires limit_req_zone in http{} block)
|
|
48
|
+
limit_req zone=mcp_zone burst=10 nodelay;
|
|
49
|
+
limit_req_status 429;
|
|
50
|
+
|
|
51
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
52
|
+
proxy_http_version 1.1;
|
|
53
|
+
|
|
54
|
+
# SSE requires no buffering
|
|
55
|
+
proxy_buffering off;
|
|
56
|
+
proxy_cache off;
|
|
57
|
+
proxy_read_timeout 86400s;
|
|
58
|
+
proxy_send_timeout 86400s;
|
|
59
|
+
proxy_connect_timeout 10s;
|
|
60
|
+
|
|
61
|
+
# Forward auth and MCP session headers
|
|
62
|
+
proxy_set_header Authorization $http_authorization;
|
|
63
|
+
proxy_pass_header Authorization;
|
|
64
|
+
proxy_set_header Mcp-Session-Id $http_mcp_session_id;
|
|
65
|
+
proxy_pass_header Mcp-Session-Id;
|
|
66
|
+
|
|
67
|
+
# Standard proxy headers
|
|
68
|
+
proxy_set_header Host $host;
|
|
69
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
70
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
71
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
72
|
+
|
|
73
|
+
# WebSocket upgrade passthrough
|
|
74
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
75
|
+
proxy_set_header Connection $connection_upgrade;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
# /health — unauthenticated health check
|
|
79
|
+
location /health {
|
|
80
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
81
|
+
proxy_http_version 1.1;
|
|
82
|
+
proxy_connect_timeout 5s;
|
|
83
|
+
proxy_read_timeout 10s;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
# /.well-known — MCP server card + OAuth discovery (RFC 8414, RFC 9396)
|
|
87
|
+
location /.well-known/ {
|
|
88
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
89
|
+
proxy_http_version 1.1;
|
|
90
|
+
proxy_connect_timeout 5s;
|
|
91
|
+
proxy_read_timeout 10s;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
# /oauth — OAuth 2.0 endpoints (authorize, token, register, revoke)
|
|
95
|
+
location /oauth/ {
|
|
96
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
97
|
+
proxy_http_version 1.1;
|
|
98
|
+
proxy_connect_timeout 5s;
|
|
99
|
+
proxy_read_timeout 30s;
|
|
100
|
+
proxy_set_header Host $host;
|
|
101
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
102
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
103
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# /ping — unauthenticated health probe
|
|
107
|
+
location /ping {
|
|
108
|
+
proxy_pass http://127.0.0.1:${PORT};
|
|
109
|
+
proxy_http_version 1.1;
|
|
110
|
+
proxy_connect_timeout 5s;
|
|
111
|
+
proxy_read_timeout 10s;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
# Block everything else
|
|
115
|
+
location / {
|
|
116
|
+
return 404;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
# Note: add this to the `http {}` block in /etc/nginx/nginx.conf if not present
|
|
121
|
+
# (bootstrap-new-vps.sh and install-vps-service.sh do this automatically):
|
|
122
|
+
#
|
|
123
|
+
# map $http_upgrade $connection_upgrade {
|
|
124
|
+
# default upgrade;
|
|
125
|
+
# '' close;
|
|
126
|
+
# }
|
|
127
|
+
#
|
|
128
|
+
# Rate limiting zone — add to http {} block:
|
|
129
|
+
# limit_req_zone $binary_remote_addr zone=mcp_zone:10m rate=30r/m;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
export type { ActivityEntry, ActivityListener, LifecycleEntry, TimelineEntry, } from "./activityTypes.js";
|
|
2
|
+
import type { ActivityEntry, ActivityListener, LifecycleEntry, TimelineEntry } from "./activityTypes.js";
|
|
3
|
+
/** Default sliding window for co-occurrence (5 minutes). */
|
|
4
|
+
export declare const DEFAULT_CO_OCCURRENCE_WINDOW_MS: number;
|
|
5
|
+
export declare class ActivityLog {
|
|
6
|
+
private entries;
|
|
7
|
+
private lifecycleEntries;
|
|
8
|
+
private nextId;
|
|
9
|
+
private maxEntries;
|
|
10
|
+
private persistPath;
|
|
11
|
+
private readonly listeners;
|
|
12
|
+
private rateLimitRejections;
|
|
13
|
+
/**
|
|
14
|
+
* Per-tool bounded ring of duration samples used for percentile computation.
|
|
15
|
+
* Capped at MAX_DURATION_SAMPLES per tool to bound memory.
|
|
16
|
+
*/
|
|
17
|
+
private readonly durationSamples;
|
|
18
|
+
constructor(maxEntries?: number);
|
|
19
|
+
/**
|
|
20
|
+
* Subscribe to real-time activity events.
|
|
21
|
+
* @returns An unsubscribe function — call it to stop receiving events.
|
|
22
|
+
*/
|
|
23
|
+
subscribe(listener: ActivityListener): () => void;
|
|
24
|
+
setPersistPath(p: string): void;
|
|
25
|
+
private _loadFromDisk;
|
|
26
|
+
private _appendToDisk;
|
|
27
|
+
private _rotateDisk;
|
|
28
|
+
record(tool: string, durationMs: number, status: "success" | "error", errorMessage?: string, sessionId?: string): void;
|
|
29
|
+
recordEvent(event: string, metadata?: Record<string, unknown>): void;
|
|
30
|
+
/**
|
|
31
|
+
* Return the highest ID assigned so far, or 0 if nothing has been recorded.
|
|
32
|
+
* Used by watchActivityLog to return an accurate lastId on long-poll timeout
|
|
33
|
+
* so clients don't re-poll from the same position indefinitely.
|
|
34
|
+
*/
|
|
35
|
+
getHighestId(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Look up a single approval_decision lifecycle entry by callId. Returns
|
|
38
|
+
* the decision entry plus tool entries + lifecycle events for the same
|
|
39
|
+
* session in the ±60s window around the decision (for context).
|
|
40
|
+
*
|
|
41
|
+
* The dashboard approval detail view is the only caller; keep the window
|
|
42
|
+
* tight so we don't walk unbounded history for each lookup.
|
|
43
|
+
*/
|
|
44
|
+
findApprovalByCallId(callId: string): {
|
|
45
|
+
decision: LifecycleEntry | null;
|
|
46
|
+
nearby: TimelineEntry[];
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Return all lifecycle entries whose metadata.sessionId matches. Sorted
|
|
50
|
+
* by id ascending (oldest first). Used by the dashboard session detail
|
|
51
|
+
* view to render a per-session event stream.
|
|
52
|
+
*/
|
|
53
|
+
querySessionLifecycle(sessionId: string, limit?: number): LifecycleEntry[];
|
|
54
|
+
/**
|
|
55
|
+
* Return tool entries recorded under a given sessionId, sorted by id
|
|
56
|
+
* ascending. Entries persisted before sessionId-on-tool-calls landed
|
|
57
|
+
* will have `sessionId === undefined` and are excluded — callers who
|
|
58
|
+
* need historical correlation should cross-reference by time bounds.
|
|
59
|
+
*/
|
|
60
|
+
querySessionTools(sessionId: string, limit?: number): ActivityEntry[];
|
|
61
|
+
queryTimeline(opts?: {
|
|
62
|
+
last?: number;
|
|
63
|
+
}): TimelineEntry[];
|
|
64
|
+
query(opts?: {
|
|
65
|
+
tool?: string;
|
|
66
|
+
status?: string;
|
|
67
|
+
last?: number;
|
|
68
|
+
}): ActivityEntry[];
|
|
69
|
+
toPrometheus(extras?: {
|
|
70
|
+
activeToolCalls?: number;
|
|
71
|
+
rateLimitRejected?: number;
|
|
72
|
+
extensionDisconnects?: number;
|
|
73
|
+
}): string;
|
|
74
|
+
stats(): Record<string, {
|
|
75
|
+
count: number;
|
|
76
|
+
avgDurationMs: number;
|
|
77
|
+
errors: number;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* Per-tool percentiles (p50/p95/p99) computed from the bounded duration
|
|
81
|
+
* sample buffer. Returns null for any tool with fewer than 2 samples.
|
|
82
|
+
*/
|
|
83
|
+
percentiles(): Record<string, {
|
|
84
|
+
p50: number;
|
|
85
|
+
p95: number;
|
|
86
|
+
p99: number;
|
|
87
|
+
sampleCount: number;
|
|
88
|
+
}>;
|
|
89
|
+
/** Increment the rate-limit rejection counter. */
|
|
90
|
+
recordRateLimitRejection(): void;
|
|
91
|
+
/** Return total rate-limit rejections recorded since startup. */
|
|
92
|
+
getRateLimitRejections(): number;
|
|
93
|
+
/**
|
|
94
|
+
* Per-tool stats within a sliding time window (reverse scan stops outside cutoff).
|
|
95
|
+
* Returns Record<tool, {count, errors, avgDurationMs}>.
|
|
96
|
+
*/
|
|
97
|
+
windowedStats(windowMs: number): Record<string, {
|
|
98
|
+
count: number;
|
|
99
|
+
errors: number;
|
|
100
|
+
avgDurationMs: number;
|
|
101
|
+
}>;
|
|
102
|
+
/**
|
|
103
|
+
* Tool-pair co-occurrence within a sliding time window.
|
|
104
|
+
* Counts how many times tool B was called within `windowMs` after tool A,
|
|
105
|
+
* across all entries in the in-memory buffer. Pairs are ordered (A < B
|
|
106
|
+
* alphabetically) to avoid double-counting. Returns sorted by count desc.
|
|
107
|
+
*/
|
|
108
|
+
coOccurrence(windowMs?: number): {
|
|
109
|
+
pair: string;
|
|
110
|
+
count: number;
|
|
111
|
+
}[];
|
|
112
|
+
}
|