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,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLAUDE.md versioned-block patching helpers.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from src/index.ts so tests can import the pure helpers without
|
|
5
|
+
* triggering the top-level CLI side effects (parseConfig + Bridge.start)
|
|
6
|
+
* that otherwise cause ports like 55000 to be bound from a test run.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
9
|
+
import { PACKAGE_VERSION } from "./version.js";
|
|
10
|
+
/**
|
|
11
|
+
* Returns the sentinel comment that opens a versioned bridge block in CLAUDE.md.
|
|
12
|
+
* Format: <!-- claude-ide-bridge:start:VERSION -->
|
|
13
|
+
*/
|
|
14
|
+
export function bridgeBlockStartMarker(version) {
|
|
15
|
+
return `<!-- claude-ide-bridge:start:${version} -->`;
|
|
16
|
+
}
|
|
17
|
+
/** Sentinel comment that closes a versioned bridge block in CLAUDE.md. */
|
|
18
|
+
export const BRIDGE_BLOCK_END = "<!-- claude-ide-bridge:end -->";
|
|
19
|
+
/** Regex that matches ANY versioned bridge block (any version). */
|
|
20
|
+
export const BRIDGE_BLOCK_RE = /<!-- claude-ide-bridge:start:[^\s>]+ -->[\s\S]*?<!-- claude-ide-bridge:end -->/g;
|
|
21
|
+
/** Regex that matches a versioned bridge block with a specific version captured. */
|
|
22
|
+
const BRIDGE_BLOCK_VERSION_RE = /<!-- claude-ide-bridge:start:([^\s>]+) -->[\s\S]*?<!-- claude-ide-bridge:end -->/;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the version embedded in an existing versioned bridge block in
|
|
25
|
+
* CLAUDE.md content, or null if no block is present.
|
|
26
|
+
*/
|
|
27
|
+
export function extractClaudeMdBlockVersion(content) {
|
|
28
|
+
const m = BRIDGE_BLOCK_VERSION_RE.exec(content);
|
|
29
|
+
return m?.[1] ?? null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Wraps the bridge section (marker line + import line) in versioned sentinels.
|
|
33
|
+
*/
|
|
34
|
+
function buildVersionedBlock(marker, importLine, version) {
|
|
35
|
+
return `${bridgeBlockStartMarker(version)}\n${marker}\n${importLine}\n${BRIDGE_BLOCK_END}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Patches CLAUDE.md with a versioned bridge block that init can detect and
|
|
39
|
+
* update on re-run.
|
|
40
|
+
*
|
|
41
|
+
* Logic:
|
|
42
|
+
* - If a versioned block with the current version exists → "already-current"
|
|
43
|
+
* - If a versioned block with a different version exists → replace it → "updated"
|
|
44
|
+
* - If the unversioned marker exists but no versioned block → wrap it → "patched"
|
|
45
|
+
* - If the import line exists standalone (no marker block) → "already-present"
|
|
46
|
+
* - Otherwise → "no-section"
|
|
47
|
+
*
|
|
48
|
+
* All writes are atomic (write to .tmp with exclusive-create, backup original,
|
|
49
|
+
* rename into place).
|
|
50
|
+
*/
|
|
51
|
+
export function patchClaudeMdImport(targetPath, marker, importLine, version = PACKAGE_VERSION) {
|
|
52
|
+
if (!existsSync(targetPath))
|
|
53
|
+
return "no-section";
|
|
54
|
+
const existing = readFileSync(targetPath, "utf-8");
|
|
55
|
+
// Case 1: versioned block present — check if current
|
|
56
|
+
const existingVersion = extractClaudeMdBlockVersion(existing);
|
|
57
|
+
if (existingVersion !== null) {
|
|
58
|
+
if (existingVersion === version)
|
|
59
|
+
return "already-current";
|
|
60
|
+
// Stale versioned block → replace
|
|
61
|
+
const newBlock = buildVersionedBlock(marker, importLine, version);
|
|
62
|
+
const patched = existing.replace(BRIDGE_BLOCK_RE, newBlock);
|
|
63
|
+
if (patched === existing)
|
|
64
|
+
return "no-section"; // safety guard
|
|
65
|
+
const remaining = (patched.match(/<!-- claude-ide-bridge:start:/g) ?? [])
|
|
66
|
+
.length;
|
|
67
|
+
if (remaining > 1) {
|
|
68
|
+
console.warn(`[patchClaudeMdImport] ${remaining} bridge start sentinels remain after replace — manual cleanup may be needed in ${targetPath}`);
|
|
69
|
+
}
|
|
70
|
+
writePatchedClaudeMd(targetPath, patched);
|
|
71
|
+
return "updated";
|
|
72
|
+
}
|
|
73
|
+
// Case 2: unversioned marker present — wrap it
|
|
74
|
+
if (existing.includes(marker)) {
|
|
75
|
+
if (existing.includes(importLine)) {
|
|
76
|
+
// marker + import present but not versioned — wrap the whole block
|
|
77
|
+
const normalised = existing.endsWith("\n") ? existing : `${existing}\n`;
|
|
78
|
+
// Replace the old "marker\n\nimportLine\n" pattern with versioned block
|
|
79
|
+
const oldBlock1 = `${marker}\n\n${importLine}\n`;
|
|
80
|
+
const oldBlock2 = `${marker}\n${importLine}\n`;
|
|
81
|
+
const newBlock = `${buildVersionedBlock(marker, importLine, version)}\n`;
|
|
82
|
+
const patched = normalised.includes(oldBlock1)
|
|
83
|
+
? normalised.replace(oldBlock1, newBlock)
|
|
84
|
+
: normalised.includes(oldBlock2)
|
|
85
|
+
? normalised.replace(oldBlock2, newBlock)
|
|
86
|
+
: null;
|
|
87
|
+
if (patched === null || patched === normalised) {
|
|
88
|
+
// Can't safely restructure — just mark as already-present
|
|
89
|
+
return "already-present";
|
|
90
|
+
}
|
|
91
|
+
writePatchedClaudeMd(targetPath, patched);
|
|
92
|
+
return "patched";
|
|
93
|
+
}
|
|
94
|
+
// marker present, import missing — replace the marker line with the full
|
|
95
|
+
// versioned block (marker included inside sentinels) so that BRIDGE_BLOCK_RE
|
|
96
|
+
// can match it on future passes. Preserves any content that follows.
|
|
97
|
+
const normalised = existing.endsWith("\n") ? existing : `${existing}\n`;
|
|
98
|
+
const markerIdx = normalised.indexOf(marker);
|
|
99
|
+
const markerLineEnd = normalised.indexOf("\n", markerIdx);
|
|
100
|
+
if (markerLineEnd === -1)
|
|
101
|
+
return "no-section";
|
|
102
|
+
const versionedBlock = buildVersionedBlock(marker, importLine, version);
|
|
103
|
+
const patched = normalised.slice(0, markerIdx) +
|
|
104
|
+
versionedBlock +
|
|
105
|
+
"\n" +
|
|
106
|
+
normalised.slice(markerLineEnd + 1);
|
|
107
|
+
writePatchedClaudeMd(targetPath, patched);
|
|
108
|
+
return "patched";
|
|
109
|
+
}
|
|
110
|
+
// Case 3: import line present with no marker section at all
|
|
111
|
+
if (existing.includes(importLine))
|
|
112
|
+
return "already-present";
|
|
113
|
+
return "no-section";
|
|
114
|
+
}
|
|
115
|
+
/** Atomically write patched CLAUDE.md content, backing up the original. */
|
|
116
|
+
function writePatchedClaudeMd(targetPath, patched) {
|
|
117
|
+
// Use a unique tmp path to avoid EEXIST from a concurrent init run.
|
|
118
|
+
// Do NOT pre-unlink — let `wx` (exclusive create) handle collision on its own.
|
|
119
|
+
const tmpPath = `${targetPath}.${process.pid}.${Date.now()}.tmp`;
|
|
120
|
+
try {
|
|
121
|
+
writeFileSync(tmpPath, patched, { encoding: "utf-8", flag: "wx" });
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
if (err.code === "EEXIST") {
|
|
125
|
+
throw new Error(`Concurrent init detected: tmp file ${tmpPath} already exists. Retry once the other process finishes.`);
|
|
126
|
+
}
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
130
|
+
const backupPath = `${targetPath}.${ts}.bak`;
|
|
131
|
+
try {
|
|
132
|
+
renameSync(targetPath, backupPath);
|
|
133
|
+
try {
|
|
134
|
+
renameSync(tmpPath, targetPath);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
// step-2 failed — restore original from backup before re-throwing
|
|
138
|
+
try {
|
|
139
|
+
unlinkSync(tmpPath);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
/* best-effort tmp cleanup */
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
renameSync(backupPath, targetPath);
|
|
146
|
+
}
|
|
147
|
+
catch (restoreErr) {
|
|
148
|
+
console.error(`[writePatchedClaudeMd] Failed to restore backup ${backupPath} → ${targetPath}:`, restoreErr);
|
|
149
|
+
}
|
|
150
|
+
throw err;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
// step-1 failed (backup rename) — just clean up tmp
|
|
155
|
+
try {
|
|
156
|
+
unlinkSync(tmpPath);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
/* best-effort cleanup */
|
|
160
|
+
}
|
|
161
|
+
throw err;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=claudeMdPatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeMdPatch.js","sourceRoot":"","sources":["../src/claudeMdPatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { IClaudeDriver } from "./claudeDriver.js";
|
|
2
|
+
export type TaskStatus = "pending" | "running" | "done" | "error" | "cancelled" | "interrupted";
|
|
3
|
+
export type CancelReason = "timeout" | "startup_timeout" | "user" | "shutdown";
|
|
4
|
+
export interface ClaudeTask {
|
|
5
|
+
id: string;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
prompt: string;
|
|
8
|
+
contextFiles: string[];
|
|
9
|
+
status: TaskStatus;
|
|
10
|
+
createdAt: number;
|
|
11
|
+
startedAt?: number;
|
|
12
|
+
doneAt?: number;
|
|
13
|
+
/** Full output text, capped at 50KB. */
|
|
14
|
+
output?: string;
|
|
15
|
+
errorMessage?: string;
|
|
16
|
+
timeoutMs: number;
|
|
17
|
+
/** Estimated token count for the prompt (used for token-budget concurrency). */
|
|
18
|
+
tokenEstimate: number;
|
|
19
|
+
/** Optional model override passed to the driver (e.g. "claude-haiku-4-5-20251001"). */
|
|
20
|
+
model?: string;
|
|
21
|
+
/** Effort level for the task (low/medium/high/max). */
|
|
22
|
+
effort?: "low" | "medium" | "high" | "max";
|
|
23
|
+
/** Fallback model when the primary is overloaded. */
|
|
24
|
+
fallbackModel?: string;
|
|
25
|
+
/** Maximum spend cap in USD for this task. */
|
|
26
|
+
maxBudgetUsd?: number;
|
|
27
|
+
/** Abort the task if no assistant output arrives within this many ms of spawn. */
|
|
28
|
+
startupTimeoutMs?: number;
|
|
29
|
+
/** True when this task was spawned by an automation hook. */
|
|
30
|
+
isAutomationTask?: boolean;
|
|
31
|
+
/** Hook name that triggered this task (e.g. "onFileSave", "onDiagnosticsError"). */
|
|
32
|
+
triggerSource?: string;
|
|
33
|
+
/** Custom system prompt passed via --system-prompt to the subprocess. */
|
|
34
|
+
systemPrompt?: string;
|
|
35
|
+
/** If true, this task was dispatched to the ant binary instead of claude. */
|
|
36
|
+
useAnt?: boolean;
|
|
37
|
+
/** Set when status === "cancelled": what triggered the cancel. */
|
|
38
|
+
cancelReason?: CancelReason;
|
|
39
|
+
/** Last ~2KB of subprocess stderr — populated on timeout and other aborts. */
|
|
40
|
+
stderrTail?: string;
|
|
41
|
+
/** True when the subprocess was aborted (signal). */
|
|
42
|
+
wasAborted?: boolean;
|
|
43
|
+
/** Milliseconds from spawn to first assistant output. Undefined if no output arrived before timeout. */
|
|
44
|
+
startupMs?: number;
|
|
45
|
+
}
|
|
46
|
+
export type EnqueueOpts = {
|
|
47
|
+
prompt: string;
|
|
48
|
+
contextFiles?: string[];
|
|
49
|
+
timeoutMs?: number;
|
|
50
|
+
sessionId?: string;
|
|
51
|
+
onChunk?: (chunk: string) => void;
|
|
52
|
+
/** Optional model override, e.g. "claude-haiku-4-5-20251001". */
|
|
53
|
+
model?: string;
|
|
54
|
+
/** Effort level for the task (low/medium/high/max). */
|
|
55
|
+
effort?: "low" | "medium" | "high" | "max";
|
|
56
|
+
/** Fallback model when the primary is overloaded. */
|
|
57
|
+
fallbackModel?: string;
|
|
58
|
+
/** Maximum spend cap in USD for this task. */
|
|
59
|
+
maxBudgetUsd?: number;
|
|
60
|
+
/** Abort the task if no assistant output arrives within this many ms of spawn. */
|
|
61
|
+
startupTimeoutMs?: number;
|
|
62
|
+
/** Custom system prompt passed via --system-prompt to the subprocess. */
|
|
63
|
+
systemPrompt?: string;
|
|
64
|
+
/** Original creation timestamp — used when re-enqueuing persisted tasks. */
|
|
65
|
+
createdAt?: number;
|
|
66
|
+
/** True when this task was spawned by an automation hook (prevents infinite chain in onTaskSuccess). */
|
|
67
|
+
isAutomationTask?: boolean;
|
|
68
|
+
/** Hook name that created this task (e.g. "onFileSave", "onDiagnosticsError"). Logged at task start for observability. */
|
|
69
|
+
triggerSource?: string;
|
|
70
|
+
/** If true, spawn ant binary instead of claude. */
|
|
71
|
+
useAnt?: boolean;
|
|
72
|
+
};
|
|
73
|
+
export declare class ClaudeOrchestrator {
|
|
74
|
+
private readonly driver;
|
|
75
|
+
private readonly workspace;
|
|
76
|
+
private readonly log;
|
|
77
|
+
/** Called for each stdout chunk of every task (for VS Code output channel). */
|
|
78
|
+
private readonly notifyChunk?;
|
|
79
|
+
/** Called when a task reaches a terminal state. */
|
|
80
|
+
private readonly notifyDone?;
|
|
81
|
+
/** Optional checkpoint to save after each task completes or fails. */
|
|
82
|
+
private readonly checkpoint?;
|
|
83
|
+
static readonly MAX_CONCURRENT = 10;
|
|
84
|
+
static readonly MAX_QUEUE = 20;
|
|
85
|
+
static readonly MAX_HISTORY = 500;
|
|
86
|
+
static readonly DEFAULT_TIMEOUT_MS = 120000;
|
|
87
|
+
/** Maximum total estimated tokens in-flight across all running tasks. */
|
|
88
|
+
static readonly MAX_TOKEN_BUDGET = 500000;
|
|
89
|
+
private tasks;
|
|
90
|
+
/** Per-task streaming callback (set by callers of enqueue/runAndWait). */
|
|
91
|
+
private taskCallbacks;
|
|
92
|
+
/** Per-task completion callbacks (set by runAndWait). */
|
|
93
|
+
private completionCallbacks;
|
|
94
|
+
private queue;
|
|
95
|
+
private running;
|
|
96
|
+
private controllers;
|
|
97
|
+
/** Cancel-reason map populated by `cancel()` before aborting the controller. */
|
|
98
|
+
private cancelReasons;
|
|
99
|
+
/** Sum of tokenEstimate for all currently-running tasks. */
|
|
100
|
+
private _activeTokens;
|
|
101
|
+
/** Current total estimated tokens in-flight across all running tasks. */
|
|
102
|
+
get activeTokens(): number;
|
|
103
|
+
constructor(driver: IClaudeDriver, workspace: string, log: (msg: string) => void,
|
|
104
|
+
/** Called for each stdout chunk of every task (for VS Code output channel). */
|
|
105
|
+
notifyChunk?: ((taskId: string, chunk: string) => void) | undefined,
|
|
106
|
+
/** Called when a task reaches a terminal state. */
|
|
107
|
+
notifyDone?: ((taskId: string, status: TaskStatus) => void) | undefined,
|
|
108
|
+
/** Optional checkpoint to save after each task completes or fails. */
|
|
109
|
+
checkpoint?: {
|
|
110
|
+
save(): void | Promise<void>;
|
|
111
|
+
} | undefined);
|
|
112
|
+
/**
|
|
113
|
+
* Enqueue a task and return its ID immediately.
|
|
114
|
+
* The task will start running as soon as a concurrent slot is available.
|
|
115
|
+
*/
|
|
116
|
+
enqueue(opts: EnqueueOpts): string;
|
|
117
|
+
private _enqueueWithId;
|
|
118
|
+
/**
|
|
119
|
+
* Enqueue a task and wait until it reaches a terminal state (done/error/cancelled).
|
|
120
|
+
* The returned Promise always resolves (never rejects) — check task.status for the outcome.
|
|
121
|
+
* The task's own timeoutMs is the upper bound on how long this can take.
|
|
122
|
+
*/
|
|
123
|
+
runAndWait(opts: EnqueueOpts): Promise<ClaudeTask>;
|
|
124
|
+
getTask(id: string): ClaudeTask | undefined;
|
|
125
|
+
/**
|
|
126
|
+
* Resolve a task ID, with support for UUID prefixes (≥8 chars).
|
|
127
|
+
* Returns `{task}` on unique exact/prefix match, `{ambiguous: true, candidates}` when
|
|
128
|
+
* multiple prefix matches exist (caller should surface as error), or `{}` for no match.
|
|
129
|
+
*
|
|
130
|
+
* Optional `visible(task)` predicate scopes both the match AND the candidate list
|
|
131
|
+
* to tasks the caller is allowed to see — prevents cross-session prefix enumeration.
|
|
132
|
+
* When omitted, all tasks are visible (internal callers only).
|
|
133
|
+
*/
|
|
134
|
+
findTaskByPrefix(id: string, visible?: (task: ClaudeTask) => boolean): {
|
|
135
|
+
task?: ClaudeTask;
|
|
136
|
+
ambiguous?: boolean;
|
|
137
|
+
candidates?: string[];
|
|
138
|
+
};
|
|
139
|
+
list(status?: TaskStatus): ClaudeTask[];
|
|
140
|
+
/**
|
|
141
|
+
* Cancel a pending or running task.
|
|
142
|
+
* @param reason "user" (default) for explicit user cancellation, "shutdown"
|
|
143
|
+
* for bridge shutdown. Timeouts are detected internally in `_runTask` and
|
|
144
|
+
* do not flow through this method.
|
|
145
|
+
* Returns true if the task was found and cancellation was initiated.
|
|
146
|
+
*/
|
|
147
|
+
cancel(id: string, reason?: Exclude<CancelReason, "timeout">): boolean;
|
|
148
|
+
private _drain;
|
|
149
|
+
private _runTask;
|
|
150
|
+
private _fireCompletion;
|
|
151
|
+
/** Build the serialisable task list for disk persistence.
|
|
152
|
+
* running tasks are saved as "interrupted" so on reload they appear as a
|
|
153
|
+
* known-terminal state rather than a stale "running" entry. */
|
|
154
|
+
private _buildTasksPayload;
|
|
155
|
+
/** Persist all tasks to disk for cross-session resumability. Best-effort. */
|
|
156
|
+
persistTasks(port: number): Promise<void>;
|
|
157
|
+
/** Synchronous flush called during shutdown — captures tasks at their true
|
|
158
|
+
* pre-cancellation state (pending = still pending, running = interrupted).
|
|
159
|
+
* Must be called BEFORE cancel() so the status snapshot is accurate. */
|
|
160
|
+
flushTasksToDisk(port: number): void;
|
|
161
|
+
/** Load persisted tasks from disk on startup. Best-effort.
|
|
162
|
+
*
|
|
163
|
+
* File format:
|
|
164
|
+
* - v0 (array at root): terminal tasks only — loaded as history, no re-enqueue
|
|
165
|
+
* - v1 ({version:1, tasks:[]}): pending tasks are re-enqueued; interrupted/terminal
|
|
166
|
+
* tasks are restored as history; unknown future versions fall back to terminal-only
|
|
167
|
+
*/
|
|
168
|
+
loadPersistedTasks(port: number): Promise<void>;
|
|
169
|
+
private _restoreTerminalTask;
|
|
170
|
+
private _pruneHistory;
|
|
171
|
+
}
|