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,459 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
/**
|
|
6
|
+
* Map a ClaudeTaskOutput flat struct to the ClaudeTaskOutcome discriminated union.
|
|
7
|
+
*
|
|
8
|
+
* @param output Flat output from ClaudeDriver.run().
|
|
9
|
+
* @param cancelReason Optional cancelReason from the ClaudeTask record (set by
|
|
10
|
+
* the orchestrator after run() returns). When provided,
|
|
11
|
+
* "timeout" and "startup_timeout" cancelKinds are reachable.
|
|
12
|
+
* Without it, aborted tasks default to cancelKind "user".
|
|
13
|
+
*/
|
|
14
|
+
export function toClaudeTaskOutcome(output, cancelReason) {
|
|
15
|
+
if (output.wasAborted) {
|
|
16
|
+
const cancelKind = output.startupTimedOut || cancelReason === "startup_timeout"
|
|
17
|
+
? "startup_timeout"
|
|
18
|
+
: cancelReason === "timeout"
|
|
19
|
+
? "timeout"
|
|
20
|
+
: "user";
|
|
21
|
+
return {
|
|
22
|
+
outcome: "aborted",
|
|
23
|
+
text: output.text,
|
|
24
|
+
cancelKind,
|
|
25
|
+
stderrTail: output.stderrTail,
|
|
26
|
+
durationMs: output.durationMs,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (output.exitCode !== 0) {
|
|
30
|
+
return {
|
|
31
|
+
outcome: "error",
|
|
32
|
+
text: output.text,
|
|
33
|
+
exitCode: output.exitCode,
|
|
34
|
+
stderrTail: output.stderrTail,
|
|
35
|
+
durationMs: output.durationMs,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
outcome: "done",
|
|
40
|
+
text: output.text,
|
|
41
|
+
durationMs: output.durationMs,
|
|
42
|
+
startupMs: output.startupMs,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const OUTPUT_CAP = 50 * 1024; // 50KB
|
|
46
|
+
export class SubprocessDriver {
|
|
47
|
+
binary;
|
|
48
|
+
antBinary;
|
|
49
|
+
log;
|
|
50
|
+
name = "subprocess";
|
|
51
|
+
settingsPath;
|
|
52
|
+
settingsContent;
|
|
53
|
+
constructor(binary, antBinary, log) {
|
|
54
|
+
this.binary = binary;
|
|
55
|
+
this.antBinary = antBinary;
|
|
56
|
+
this.log = log;
|
|
57
|
+
// Use a minimal settings file that disables hooks without using --bare.
|
|
58
|
+
// --bare sets CLAUDE_CODE_SIMPLE=1 which skips OAuth auth — incompatible with
|
|
59
|
+
// Claude Max and other OAuth-based auth. --settings with empty hooks achieves
|
|
60
|
+
// the same hook-suppression goal while preserving normal auth flows.
|
|
61
|
+
this.settingsPath = join(tmpdir(), `claude-ide-bridge-subprocess-settings-${process.pid}.json`);
|
|
62
|
+
this.settingsContent = JSON.stringify({
|
|
63
|
+
hooks: {},
|
|
64
|
+
permissions: {
|
|
65
|
+
// Deny destructive publishing/deployment commands in headless automation tasks.
|
|
66
|
+
// These should never be triggered automatically — only by explicit user intent.
|
|
67
|
+
deny: [
|
|
68
|
+
// Publishing / release
|
|
69
|
+
"Bash(npm publish*)",
|
|
70
|
+
"Bash(npm version*)",
|
|
71
|
+
"Bash(yarn publish*)",
|
|
72
|
+
"Bash(pnpm publish*)",
|
|
73
|
+
"Bash(npx semantic-release*)",
|
|
74
|
+
"Bash(npx release-it*)",
|
|
75
|
+
// Git remote / tagging
|
|
76
|
+
"Bash(git push*)",
|
|
77
|
+
"Bash(git tag*)",
|
|
78
|
+
"Bash(gh release*)",
|
|
79
|
+
// Destructive git operations
|
|
80
|
+
"Bash(git reset --hard*)",
|
|
81
|
+
"Bash(git clean -f*)",
|
|
82
|
+
// Filesystem destruction
|
|
83
|
+
"Bash(rm -rf *)",
|
|
84
|
+
"Bash(rm -rf/*)",
|
|
85
|
+
// Privilege escalation
|
|
86
|
+
"Bash(sudo *)",
|
|
87
|
+
"Bash(chmod 777*)",
|
|
88
|
+
// Arbitrary code execution
|
|
89
|
+
"Bash(eval *)",
|
|
90
|
+
"Bash(curl *|*)",
|
|
91
|
+
"Bash(wget *|*)",
|
|
92
|
+
// Process termination
|
|
93
|
+
"Bash(kill -9 *)",
|
|
94
|
+
"Bash(pkill *)",
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
this._writeSettings();
|
|
99
|
+
}
|
|
100
|
+
_writeSettings() {
|
|
101
|
+
try {
|
|
102
|
+
writeFileSync(this.settingsPath, this.settingsContent, "utf-8");
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
this.log(`[SubprocessDriver] WARN: could not write settings file at ${this.settingsPath}: ${err instanceof Error ? err.message : String(err)} — subprocess hooks may fire`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async run(input) {
|
|
109
|
+
const effectiveBinary = input.useAnt ? this.antBinary : this.binary;
|
|
110
|
+
// Re-write the settings file before each run — /tmp may be cleared by the OS
|
|
111
|
+
// on long-running servers (e.g. systemd-tmpfiles), causing --settings to point
|
|
112
|
+
// at a missing file and allowing hook loops to fire.
|
|
113
|
+
this._writeSettings();
|
|
114
|
+
const args = [
|
|
115
|
+
"-p",
|
|
116
|
+
input.prompt,
|
|
117
|
+
// Suppress .mcp.json auto-discovery — avoids MCP server init overhead and
|
|
118
|
+
// prevents the subprocess from connecting back to the bridge that spawned it.
|
|
119
|
+
"--strict-mcp-config",
|
|
120
|
+
// Disable hooks via settings file instead of --bare. --bare skips OAuth auth
|
|
121
|
+
// which breaks Claude Max accounts. Empty hooks: {} suppresses hook loops
|
|
122
|
+
// while preserving normal auth flows.
|
|
123
|
+
"--settings",
|
|
124
|
+
this.settingsPath,
|
|
125
|
+
// Stream JSONL events: each partial assistant chunk arrives immediately as
|
|
126
|
+
// it is generated, enabling real-time onChunk streaming and startup detection.
|
|
127
|
+
"--output-format",
|
|
128
|
+
"stream-json",
|
|
129
|
+
"--verbose",
|
|
130
|
+
"--include-partial-messages",
|
|
131
|
+
// Avoid writing session files to disk for headless automation tasks.
|
|
132
|
+
"--no-session-persistence",
|
|
133
|
+
];
|
|
134
|
+
if (input.model)
|
|
135
|
+
args.push("--model", input.model);
|
|
136
|
+
if (input.effort)
|
|
137
|
+
args.push("--effort", input.effort);
|
|
138
|
+
if (input.systemPrompt)
|
|
139
|
+
args.push("--system-prompt", input.systemPrompt);
|
|
140
|
+
if (input.fallbackModel)
|
|
141
|
+
args.push("--fallback-model", input.fallbackModel);
|
|
142
|
+
if (input.maxBudgetUsd !== undefined)
|
|
143
|
+
args.push("--max-budget-usd", String(input.maxBudgetUsd));
|
|
144
|
+
// Always skip permissions: all bridge-spawned subprocesses run headless (stdin: 'ignore',
|
|
145
|
+
// detached: true) so permission prompts can never be answered interactively.
|
|
146
|
+
args.push("--dangerously-skip-permissions");
|
|
147
|
+
// workspace is set as cwd in spawn() — claude -p has no --workspace flag
|
|
148
|
+
for (const f of input.contextFiles ?? []) {
|
|
149
|
+
if (typeof f === "string" && f.length > 0 && !f.startsWith("-")) {
|
|
150
|
+
args.push("--add-dir", f);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// CRITICAL: strip vars that would cause the subprocess to attach to or authenticate
|
|
154
|
+
// as the parent Claude Code session, which causes hangs when cwd contains a .claude/ dir.
|
|
155
|
+
const env = { ...process.env };
|
|
156
|
+
// Strip all Claude Code and MCP session vars — any of these can cause the subprocess to
|
|
157
|
+
// attach to, re-authenticate against, or behave as a nested agent of the parent session.
|
|
158
|
+
for (const key of Object.keys(env)) {
|
|
159
|
+
if (key === "CLAUDECODE" ||
|
|
160
|
+
key.startsWith("CLAUDE_CODE_") ||
|
|
161
|
+
key.startsWith("MCP_")) {
|
|
162
|
+
delete env[key];
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
this.log(`[SubprocessDriver] spawning: ${effectiveBinary} -p <prompt> (workspace: ${input.workspace})`);
|
|
166
|
+
const child = spawn(effectiveBinary, args, {
|
|
167
|
+
cwd: input.workspace,
|
|
168
|
+
env,
|
|
169
|
+
signal: input.signal,
|
|
170
|
+
// stdin must be 'ignore' (not 'pipe') — claude -p may block waiting for stdin to close
|
|
171
|
+
// if it detects a pipe on fd 0 in certain environments.
|
|
172
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
173
|
+
// detached: true calls setsid() on POSIX, creating a new session with no controlling
|
|
174
|
+
// terminal. Without this, the subprocess inherits the parent's terminal and can open
|
|
175
|
+
// /dev/tty directly to display interactive prompts (session-selection, permission
|
|
176
|
+
// confirmations). Those prompts appear on the physical terminal but are invisible to
|
|
177
|
+
// remote HTTP sessions (claude.ai, Codex CLI etc.), causing the sub-agent to hang
|
|
178
|
+
// waiting for input that never arrives. Detaching prevents /dev/tty access entirely.
|
|
179
|
+
detached: true,
|
|
180
|
+
});
|
|
181
|
+
// JSONL output state
|
|
182
|
+
// -------------------------------------------------------------------
|
|
183
|
+
// With --output-format stream-json, claude emits one JSON object per line.
|
|
184
|
+
// lineBuf holds the incomplete last line across data events (chunk boundaries
|
|
185
|
+
// can split a JSON object mid-line).
|
|
186
|
+
let lineBuf = "";
|
|
187
|
+
// Accumulated text from assistant events — used as fallback for final text if
|
|
188
|
+
// the result event is missing (old binary, crash before result, etc.)
|
|
189
|
+
let accumulated = "";
|
|
190
|
+
// outputBytesSent tracks how many bytes have been forwarded to onChunk so we
|
|
191
|
+
// can apply OUTPUT_CAP without truncating the accumulated text used for analysis.
|
|
192
|
+
let outputBytesSent = 0;
|
|
193
|
+
// firstAssistantAt: set on the first assistant event; used to compute startupMs.
|
|
194
|
+
let firstAssistantAt;
|
|
195
|
+
// doneFromResult: set when a result event is received so the abort path can
|
|
196
|
+
// distinguish "abort fired just after completion" from a real mid-run abort.
|
|
197
|
+
let doneFromResult = false;
|
|
198
|
+
let resultText = "";
|
|
199
|
+
let resultIsError = false;
|
|
200
|
+
child.stdout.setEncoding("utf-8");
|
|
201
|
+
child.stdout.on("data", (chunk) => {
|
|
202
|
+
lineBuf += chunk;
|
|
203
|
+
const lines = lineBuf.split("\n");
|
|
204
|
+
// The last element is either empty (chunk ended with \n) or a partial line.
|
|
205
|
+
lineBuf = lines.pop() ?? "";
|
|
206
|
+
for (const line of lines) {
|
|
207
|
+
if (line.trim() === "")
|
|
208
|
+
continue; // skip blank separator lines
|
|
209
|
+
let event;
|
|
210
|
+
try {
|
|
211
|
+
event = JSON.parse(line);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Non-JSON line — treat as plain text (backward compat for old binaries
|
|
215
|
+
// that don't support --output-format stream-json, or binary error output).
|
|
216
|
+
const text = `${line}\n`;
|
|
217
|
+
accumulated += text;
|
|
218
|
+
if (outputBytesSent < OUTPUT_CAP) {
|
|
219
|
+
const send = text.slice(0, OUTPUT_CAP - outputBytesSent);
|
|
220
|
+
if (send.length > 0) {
|
|
221
|
+
input.onChunk?.(send);
|
|
222
|
+
outputBytesSent += send.length;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (event.type === "assistant") {
|
|
228
|
+
if (firstAssistantAt === undefined)
|
|
229
|
+
firstAssistantAt = Date.now();
|
|
230
|
+
const content = event.message?.content;
|
|
231
|
+
if (Array.isArray(content)) {
|
|
232
|
+
// Concatenate all text blocks in this event before dispatching to onChunk
|
|
233
|
+
// to avoid many tiny single-character calls on tool_use-heavy responses.
|
|
234
|
+
const text = content
|
|
235
|
+
.filter((b) => b.type === "text")
|
|
236
|
+
.map((b) => b.text ?? "")
|
|
237
|
+
.join("");
|
|
238
|
+
if (text.length > 0) {
|
|
239
|
+
accumulated += text;
|
|
240
|
+
if (outputBytesSent < OUTPUT_CAP) {
|
|
241
|
+
const send = text.slice(0, OUTPUT_CAP - outputBytesSent);
|
|
242
|
+
if (send.length > 0) {
|
|
243
|
+
input.onChunk?.(send);
|
|
244
|
+
outputBytesSent += send.length;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else if (event.type === "result") {
|
|
251
|
+
doneFromResult = true;
|
|
252
|
+
resultIsError = event.is_error === true;
|
|
253
|
+
// result.result is the canonical full response — prefer it over accumulated.
|
|
254
|
+
resultText =
|
|
255
|
+
typeof event.result === "string" ? event.result : accumulated;
|
|
256
|
+
}
|
|
257
|
+
// type === "system" → log session_id, no other action
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
let stderr = "";
|
|
261
|
+
child.stderr.setEncoding("utf-8");
|
|
262
|
+
child.stderr.on("data", (chunk) => {
|
|
263
|
+
// Apply the same cap to stderr to prevent unbounded memory growth
|
|
264
|
+
if (stderr.length < OUTPUT_CAP) {
|
|
265
|
+
stderr += chunk;
|
|
266
|
+
if (stderr.length > OUTPUT_CAP)
|
|
267
|
+
stderr = stderr.slice(0, OUTPUT_CAP);
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
const start = Date.now();
|
|
271
|
+
const stderrTailOf = (s) => s.length > 0 ? scrubSecrets(s.slice(-2048)) : undefined;
|
|
272
|
+
const startupMsOf = () => firstAssistantAt !== undefined ? firstAssistantAt - start : undefined;
|
|
273
|
+
// Startup timeout: if no assistant event arrives within startupTimeoutMs,
|
|
274
|
+
// kill the child and set startupTimedOut so the orchestrator can surface
|
|
275
|
+
// cancelReason: "startup_timeout" rather than the generic "timeout".
|
|
276
|
+
let startupTimedOut = false;
|
|
277
|
+
const startupHandle = input.startupTimeoutMs
|
|
278
|
+
? setTimeout(() => {
|
|
279
|
+
if (firstAssistantAt === undefined && !doneFromResult) {
|
|
280
|
+
startupTimedOut = true;
|
|
281
|
+
child.kill();
|
|
282
|
+
}
|
|
283
|
+
}, input.startupTimeoutMs)
|
|
284
|
+
: null;
|
|
285
|
+
let exitCode;
|
|
286
|
+
try {
|
|
287
|
+
exitCode = await new Promise((resolve, reject) => {
|
|
288
|
+
child.on("close", (code) => resolve(code ?? 0));
|
|
289
|
+
child.on("error", reject);
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
if (startupHandle)
|
|
294
|
+
clearTimeout(startupHandle);
|
|
295
|
+
// If the result event was already received before the abort signal fired
|
|
296
|
+
// (task completed just as the timeout fired), treat as a normal success
|
|
297
|
+
// rather than returning wasAborted: true with partial output.
|
|
298
|
+
if (doneFromResult) {
|
|
299
|
+
return {
|
|
300
|
+
text: resultText.slice(0, OUTPUT_CAP),
|
|
301
|
+
exitCode: resultIsError ? 1 : 0,
|
|
302
|
+
durationMs: Date.now() - start,
|
|
303
|
+
stderrTail: stderrTailOf(stderr),
|
|
304
|
+
startupMs: startupMsOf(),
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
const isAbort = (err instanceof Error && err.name === "AbortError") ||
|
|
308
|
+
input.signal.aborted;
|
|
309
|
+
if (isAbort) {
|
|
310
|
+
// Return rather than throw so the orchestrator can surface partial
|
|
311
|
+
// output, stderrTail, and wasAborted to callers (e.g. /tasks).
|
|
312
|
+
return {
|
|
313
|
+
text: accumulated.slice(0, OUTPUT_CAP),
|
|
314
|
+
exitCode: -1,
|
|
315
|
+
durationMs: Date.now() - start,
|
|
316
|
+
stderrTail: stderrTailOf(stderr),
|
|
317
|
+
wasAborted: true,
|
|
318
|
+
startupMs: startupMsOf(),
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
throw err;
|
|
322
|
+
}
|
|
323
|
+
if (startupHandle)
|
|
324
|
+
clearTimeout(startupHandle);
|
|
325
|
+
// Derive exit code from the result event when available — it is semantically
|
|
326
|
+
// authoritative. Fall back to the process exit code for crashes / old binaries.
|
|
327
|
+
const effectiveExitCode = doneFromResult
|
|
328
|
+
? resultIsError
|
|
329
|
+
? 1
|
|
330
|
+
: 0
|
|
331
|
+
: exitCode;
|
|
332
|
+
const finalText = doneFromResult ? resultText : accumulated;
|
|
333
|
+
// Startup timeout fired: child was killed before any assistant output arrived.
|
|
334
|
+
// Surface as a wasAborted result with a distinct startupTimedOut flag so the
|
|
335
|
+
// orchestrator can set cancelReason: "startup_timeout".
|
|
336
|
+
if (startupTimedOut) {
|
|
337
|
+
return {
|
|
338
|
+
text: accumulated.slice(0, OUTPUT_CAP),
|
|
339
|
+
exitCode: -1,
|
|
340
|
+
durationMs: Date.now() - start,
|
|
341
|
+
stderrTail: stderrTailOf(stderr),
|
|
342
|
+
wasAborted: true,
|
|
343
|
+
startupTimedOut: true,
|
|
344
|
+
startupMs: undefined, // never set — that's what triggered the startup timeout
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
if (effectiveExitCode !== 0 && stderr) {
|
|
348
|
+
this.log(`[SubprocessDriver] stderr: ${stderr.slice(0, 500)}`);
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
text: finalText.slice(0, OUTPUT_CAP),
|
|
352
|
+
exitCode: effectiveExitCode,
|
|
353
|
+
durationMs: Date.now() - start,
|
|
354
|
+
stderrTail: stderrTailOf(stderr),
|
|
355
|
+
startupMs: startupMsOf(),
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
async runOutcome(input) {
|
|
359
|
+
return toClaudeTaskOutcome(await this.run(input));
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* ApiDriver — uses @anthropic-ai/sdk directly.
|
|
364
|
+
* Requires ANTHROPIC_API_KEY env var and @anthropic-ai/sdk package.
|
|
365
|
+
* Full implementation is a separate concern; this stub fails fast with a clear error.
|
|
366
|
+
*/
|
|
367
|
+
export class ApiDriver {
|
|
368
|
+
log;
|
|
369
|
+
name = "api";
|
|
370
|
+
constructor(log) {
|
|
371
|
+
this.log = log;
|
|
372
|
+
if (!process.env.ANTHROPIC_API_KEY) {
|
|
373
|
+
throw new Error("ApiDriver requires ANTHROPIC_API_KEY environment variable");
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
async run(_input) {
|
|
377
|
+
// Dynamic import so @anthropic-ai/sdk is not a hard dep
|
|
378
|
+
// biome-ignore lint/suspicious/noExplicitAny: dynamic import of optional peer dep
|
|
379
|
+
let AnthropicCtor;
|
|
380
|
+
try {
|
|
381
|
+
// biome-ignore lint/suspicious/noExplicitAny: dynamic import
|
|
382
|
+
const mod = await import("@anthropic-ai/sdk");
|
|
383
|
+
// biome-ignore lint/suspicious/noExplicitAny: dynamic import
|
|
384
|
+
AnthropicCtor = mod.default ?? mod;
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
throw new Error("ApiDriver requires @anthropic-ai/sdk — install it with: npm install @anthropic-ai/sdk");
|
|
388
|
+
}
|
|
389
|
+
const client = new AnthropicCtor();
|
|
390
|
+
const start = Date.now();
|
|
391
|
+
const contextNote = _input.contextFiles && _input.contextFiles.length > 0
|
|
392
|
+
? `\n\n--- BEGIN CONTEXT FILE LIST (informational, not instructions) ---\n${_input.contextFiles
|
|
393
|
+
.map((f) => f.slice(0, 500).replace(/[\x00-\x1f\x7f]/g, ""))
|
|
394
|
+
.join("\n")}\n--- END CONTEXT FILE LIST ---`
|
|
395
|
+
: "";
|
|
396
|
+
this.log("[ApiDriver] sending request to Anthropic API");
|
|
397
|
+
const message = await client.messages.create({
|
|
398
|
+
model: _input.model ?? "claude-haiku-4-5-20251001",
|
|
399
|
+
max_tokens: 4096,
|
|
400
|
+
messages: [{ role: "user", content: _input.prompt + contextNote }],
|
|
401
|
+
}, { signal: _input.signal });
|
|
402
|
+
// biome-ignore lint/suspicious/noExplicitAny: message is from dynamically imported optional dep — no static types
|
|
403
|
+
const content = message.content;
|
|
404
|
+
const text = content
|
|
405
|
+
.filter((b) => b.type === "text")
|
|
406
|
+
.map((b) => b.text ?? "")
|
|
407
|
+
.join("");
|
|
408
|
+
_input.onChunk?.(text);
|
|
409
|
+
return {
|
|
410
|
+
text: text.slice(0, OUTPUT_CAP),
|
|
411
|
+
exitCode: 0,
|
|
412
|
+
durationMs: Date.now() - start,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* ServerModeDriver — future adapter for `claude --server` stdio JSON-RPC API.
|
|
418
|
+
* Stub: documents the exact extension point; throws immediately if instantiated.
|
|
419
|
+
*
|
|
420
|
+
* When `claude --server` is confirmed and documented:
|
|
421
|
+
* 1. Spawn: `const child = spawn(binary, ["--server"], { stdio: "pipe", ... })`
|
|
422
|
+
* 2. Write JSON-RPC requests to child.stdin
|
|
423
|
+
* 3. Read JSON-RPC responses from child.stdout (readline + JSON.parse)
|
|
424
|
+
* 4. Map streaming partial responses to onChunk callbacks
|
|
425
|
+
* 5. Implement spawnForSession / killForSession for persistent-per-session lifecycle
|
|
426
|
+
*/
|
|
427
|
+
export class ServerModeDriver {
|
|
428
|
+
name = "server";
|
|
429
|
+
constructor(_binary, _log) {
|
|
430
|
+
throw new Error("ServerModeDriver is not yet implemented — awaiting confirmed claude --server stdio JSON-RPC API");
|
|
431
|
+
}
|
|
432
|
+
run(_input) {
|
|
433
|
+
throw new Error("ServerModeDriver not implemented");
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Scrub secrets from a string before storing or surfacing it.
|
|
438
|
+
* Exported for testability.
|
|
439
|
+
*/
|
|
440
|
+
export function scrubSecrets(text) {
|
|
441
|
+
return (text
|
|
442
|
+
// Anthropic API keys
|
|
443
|
+
.replace(/sk-ant-[A-Za-z0-9_-]{20,}/g, "[REDACTED_API_KEY]")
|
|
444
|
+
// Bearer tokens
|
|
445
|
+
.replace(/Bearer\s+[A-Za-z0-9._-]{16,}/gi, "Bearer [REDACTED]")
|
|
446
|
+
// Generic token patterns
|
|
447
|
+
.replace(/\btoken[=:]\s*[A-Za-z0-9._-]{16,}/gi, "token=[REDACTED]"));
|
|
448
|
+
}
|
|
449
|
+
/** Factory: creates the appropriate driver from a config mode string. */
|
|
450
|
+
export function createDriver(mode, binary, antBinary, log) {
|
|
451
|
+
if (mode === "none")
|
|
452
|
+
return null;
|
|
453
|
+
if (mode === "subprocess")
|
|
454
|
+
return new SubprocessDriver(binary, antBinary, log);
|
|
455
|
+
if (mode === "api")
|
|
456
|
+
return new ApiDriver(log);
|
|
457
|
+
throw new Error(`Unknown driver mode: ${mode}`);
|
|
458
|
+
}
|
|
459
|
+
//# sourceMappingURL=claudeDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeDriver.js","sourceRoot":"","sources":["../src/claudeDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the sentinel comment that opens a versioned bridge block in CLAUDE.md.
|
|
3
|
+
* Format: <!-- claude-ide-bridge:start:VERSION -->
|
|
4
|
+
*/
|
|
5
|
+
export declare function bridgeBlockStartMarker(version: string): string;
|
|
6
|
+
/** Sentinel comment that closes a versioned bridge block in CLAUDE.md. */
|
|
7
|
+
export declare const BRIDGE_BLOCK_END = "<!-- claude-ide-bridge:end -->";
|
|
8
|
+
/** Regex that matches ANY versioned bridge block (any version). */
|
|
9
|
+
export declare const BRIDGE_BLOCK_RE: RegExp;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the version embedded in an existing versioned bridge block in
|
|
12
|
+
* CLAUDE.md content, or null if no block is present.
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractClaudeMdBlockVersion(content: string): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Patches CLAUDE.md with a versioned bridge block that init can detect and
|
|
17
|
+
* update on re-run.
|
|
18
|
+
*
|
|
19
|
+
* Logic:
|
|
20
|
+
* - If a versioned block with the current version exists → "already-current"
|
|
21
|
+
* - If a versioned block with a different version exists → replace it → "updated"
|
|
22
|
+
* - If the unversioned marker exists but no versioned block → wrap it → "patched"
|
|
23
|
+
* - If the import line exists standalone (no marker block) → "already-present"
|
|
24
|
+
* - Otherwise → "no-section"
|
|
25
|
+
*
|
|
26
|
+
* All writes are atomic (write to .tmp with exclusive-create, backup original,
|
|
27
|
+
* rename into place).
|
|
28
|
+
*/
|
|
29
|
+
export declare function patchClaudeMdImport(targetPath: string, marker: string, importLine: string, version?: string): "patched" | "already-present" | "already-current" | "updated" | "no-section";
|